Kaynağa Gözat

登录页面 ,登录API 调试。

openlockPPP 1 yıl önce
ebeveyn
işleme
358255c76f
83 değiştirilmiş dosya ile 957 ekleme ve 77 silme
  1. 28 0
      JiaPeiManage.xcodeproj/project.pbxproj
  2. 6 0
      JiaPeiManage/Assets.xcassets/Modules/Contents.json
  3. 6 0
      JiaPeiManage/Assets.xcassets/Modules/Home/Contents.json
  4. 23 0
      JiaPeiManage/Assets.xcassets/Modules/Home/banner.imageset/Contents.json
  5. BIN
      JiaPeiManage/Assets.xcassets/Modules/Home/banner.imageset/banner.png
  6. BIN
      JiaPeiManage/Assets.xcassets/Modules/Home/banner.imageset/banner@2x.png
  7. BIN
      JiaPeiManage/Assets.xcassets/Modules/Home/banner.imageset/banner@3x.png
  8. 23 0
      JiaPeiManage/Assets.xcassets/Modules/Home/home_01.imageset/Contents.json
  9. BIN
      JiaPeiManage/Assets.xcassets/Modules/Home/home_01.imageset/home_01.png
  10. BIN
      JiaPeiManage/Assets.xcassets/Modules/Home/home_01.imageset/home_01@2x.png
  11. BIN
      JiaPeiManage/Assets.xcassets/Modules/Home/home_01.imageset/home_01@3x.png
  12. 23 0
      JiaPeiManage/Assets.xcassets/Modules/Home/home_02.imageset/Contents.json
  13. BIN
      JiaPeiManage/Assets.xcassets/Modules/Home/home_02.imageset/home_02.png
  14. BIN
      JiaPeiManage/Assets.xcassets/Modules/Home/home_02.imageset/home_02@2x.png
  15. BIN
      JiaPeiManage/Assets.xcassets/Modules/Home/home_02.imageset/home_02@3x.png
  16. 23 0
      JiaPeiManage/Assets.xcassets/Modules/Home/home_03.imageset/Contents.json
  17. BIN
      JiaPeiManage/Assets.xcassets/Modules/Home/home_03.imageset/home_03.png
  18. BIN
      JiaPeiManage/Assets.xcassets/Modules/Home/home_03.imageset/home_03@2x.png
  19. BIN
      JiaPeiManage/Assets.xcassets/Modules/Home/home_03.imageset/home_03@3x.png
  20. 23 0
      JiaPeiManage/Assets.xcassets/Modules/Home/home_04.imageset/Contents.json
  21. BIN
      JiaPeiManage/Assets.xcassets/Modules/Home/home_04.imageset/home_04.png
  22. BIN
      JiaPeiManage/Assets.xcassets/Modules/Home/home_04.imageset/home_04@2x.png
  23. BIN
      JiaPeiManage/Assets.xcassets/Modules/Home/home_04.imageset/home_04@3x.png
  24. 23 0
      JiaPeiManage/Assets.xcassets/Modules/Home/home_05.imageset/Contents.json
  25. BIN
      JiaPeiManage/Assets.xcassets/Modules/Home/home_05.imageset/home_05.png
  26. BIN
      JiaPeiManage/Assets.xcassets/Modules/Home/home_05.imageset/home_05@2x.png
  27. BIN
      JiaPeiManage/Assets.xcassets/Modules/Home/home_05.imageset/home_05@3x.png
  28. 23 0
      JiaPeiManage/Assets.xcassets/Modules/Home/home_right.imageset/Contents.json
  29. BIN
      JiaPeiManage/Assets.xcassets/Modules/Home/home_right.imageset/home_right.png
  30. BIN
      JiaPeiManage/Assets.xcassets/Modules/Home/home_right.imageset/home_right@2x.png
  31. BIN
      JiaPeiManage/Assets.xcassets/Modules/Home/home_right.imageset/home_right@3x.png
  32. 23 0
      JiaPeiManage/Assets.xcassets/Modules/Home/home_right_o.imageset/Contents.json
  33. BIN
      JiaPeiManage/Assets.xcassets/Modules/Home/home_right_o.imageset/home_right_o.png
  34. BIN
      JiaPeiManage/Assets.xcassets/Modules/Home/home_right_o.imageset/home_right_o@2x.png
  35. BIN
      JiaPeiManage/Assets.xcassets/Modules/Home/home_right_o.imageset/home_right_o@3x.png
  36. 6 0
      JiaPeiManage/Assets.xcassets/Modules/Login/Contents.json
  37. 23 0
      JiaPeiManage/Assets.xcassets/Modules/Login/login_ID.imageset/Contents.json
  38. BIN
      JiaPeiManage/Assets.xcassets/Modules/Login/login_ID.imageset/login_ID.png
  39. BIN
      JiaPeiManage/Assets.xcassets/Modules/Login/login_ID.imageset/login_ID@2x.png
  40. BIN
      JiaPeiManage/Assets.xcassets/Modules/Login/login_ID.imageset/login_ID@3x.png
  41. 23 0
      JiaPeiManage/Assets.xcassets/Modules/Login/login_arrow.imageset/Contents.json
  42. BIN
      JiaPeiManage/Assets.xcassets/Modules/Login/login_arrow.imageset/login_arrow.png
  43. BIN
      JiaPeiManage/Assets.xcassets/Modules/Login/login_arrow.imageset/login_arrow@2x.png
  44. BIN
      JiaPeiManage/Assets.xcassets/Modules/Login/login_arrow.imageset/login_arrow@3x.png
  45. 23 0
      JiaPeiManage/Assets.xcassets/Modules/Login/login_hello.imageset/Contents.json
  46. BIN
      JiaPeiManage/Assets.xcassets/Modules/Login/login_hello.imageset/login_hello.png
  47. BIN
      JiaPeiManage/Assets.xcassets/Modules/Login/login_hello.imageset/login_hello@2x.png
  48. BIN
      JiaPeiManage/Assets.xcassets/Modules/Login/login_hello.imageset/login_hello@3x.png
  49. 23 0
      JiaPeiManage/Assets.xcassets/Modules/Login/login_hide.imageset/Contents.json
  50. BIN
      JiaPeiManage/Assets.xcassets/Modules/Login/login_hide.imageset/login_hide.png
  51. BIN
      JiaPeiManage/Assets.xcassets/Modules/Login/login_hide.imageset/login_hide@2x.png
  52. BIN
      JiaPeiManage/Assets.xcassets/Modules/Login/login_hide.imageset/login_hide@3x.png
  53. 23 0
      JiaPeiManage/Assets.xcassets/Modules/Login/login_location.imageset/Contents.json
  54. BIN
      JiaPeiManage/Assets.xcassets/Modules/Login/login_location.imageset/login_location.png
  55. BIN
      JiaPeiManage/Assets.xcassets/Modules/Login/login_location.imageset/login_location@2x.png
  56. BIN
      JiaPeiManage/Assets.xcassets/Modules/Login/login_location.imageset/login_location@3x.png
  57. 23 0
      JiaPeiManage/Assets.xcassets/Modules/Login/login_no.imageset/Contents.json
  58. BIN
      JiaPeiManage/Assets.xcassets/Modules/Login/login_no.imageset/login_no.png
  59. BIN
      JiaPeiManage/Assets.xcassets/Modules/Login/login_no.imageset/login_no@2x.png
  60. BIN
      JiaPeiManage/Assets.xcassets/Modules/Login/login_no.imageset/login_no@3x.png
  61. 23 0
      JiaPeiManage/Assets.xcassets/Modules/Login/login_pwd.imageset/Contents.json
  62. BIN
      JiaPeiManage/Assets.xcassets/Modules/Login/login_pwd.imageset/login_pwd.png
  63. BIN
      JiaPeiManage/Assets.xcassets/Modules/Login/login_pwd.imageset/login_pwd@2x.png
  64. BIN
      JiaPeiManage/Assets.xcassets/Modules/Login/login_pwd.imageset/login_pwd@3x.png
  65. 23 0
      JiaPeiManage/Assets.xcassets/Modules/Login/login_show.imageset/Contents.json
  66. BIN
      JiaPeiManage/Assets.xcassets/Modules/Login/login_show.imageset/login_show.png
  67. BIN
      JiaPeiManage/Assets.xcassets/Modules/Login/login_show.imageset/login_show@2x.png
  68. BIN
      JiaPeiManage/Assets.xcassets/Modules/Login/login_show.imageset/login_show@3x.png
  69. 23 0
      JiaPeiManage/Assets.xcassets/Modules/Login/login_yes.imageset/Contents.json
  70. BIN
      JiaPeiManage/Assets.xcassets/Modules/Login/login_yes.imageset/login_yes.png
  71. BIN
      JiaPeiManage/Assets.xcassets/Modules/Login/login_yes.imageset/login_yes@2x.png
  72. BIN
      JiaPeiManage/Assets.xcassets/Modules/Login/login_yes.imageset/login_yes@3x.png
  73. 5 0
      JiaPeiManage/Info.plist
  74. 5 11
      JiaPeiManage/Sources/CompositionRoot.swift
  75. 5 1
      JiaPeiManage/Sources/Main/Base/BaseViewController.swift
  76. 34 0
      JiaPeiManage/Sources/Modulars/Home/Controllers/HomeViewController.swift
  77. 31 0
      JiaPeiManage/Sources/Modulars/Home/Controllers/HomeViewController.xib
  78. 133 0
      JiaPeiManage/Sources/Modulars/Login/Controllers/LoginViewController.swift
  79. 267 9
      JiaPeiManage/Sources/Modulars/Login/Controllers/LoginViewController.xib
  80. 4 8
      JiaPeiManage/Sources/Networking/NetEnvironment.swift
  81. 3 2
      JiaPeiManage/Sources/Networking/Networking.swift
  82. 23 42
      JiaPeiManage/Sources/Services/LoginAPI.swift
  83. 10 4
      JiaPeiManage/Sources/Services/LoginService.swift

+ 28 - 0
JiaPeiManage.xcodeproj/project.pbxproj

@@ -98,6 +98,8 @@
 		90CE52F52A36EDCF0033BD06 /* NYArticleNavBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = 90CE52F32A36EDCF0033BD06 /* NYArticleNavBar.xib */; };
 		90CE52F82A36F0BD0033BD06 /* LoginAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90CE52F72A36F0BD0033BD06 /* LoginAPI.swift */; };
 		90CE52FA2A36F2570033BD06 /* LoginService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90CE52F92A36F2570033BD06 /* LoginService.swift */; };
+		90CE52FE2A36F6DB0033BD06 /* HomeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90CE52FD2A36F6DB0033BD06 /* HomeViewController.swift */; };
+		90CE53002A36F7110033BD06 /* HomeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 90CE52FF2A36F7110033BD06 /* HomeViewController.xib */; };
 		FD091E28E4C2EF8E654AE2C6 /* Pods_JiaPeiManage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FC2879EF62A9D4DF6777C62 /* Pods_JiaPeiManage.framework */; };
 /* End PBXBuildFile section */
 
@@ -197,6 +199,8 @@
 		90CE52F62A36EF540033BD06 /* JSJP-Brigding-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "JSJP-Brigding-Header.h"; sourceTree = "<group>"; };
 		90CE52F72A36F0BD0033BD06 /* LoginAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginAPI.swift; sourceTree = "<group>"; };
 		90CE52F92A36F2570033BD06 /* LoginService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginService.swift; sourceTree = "<group>"; };
+		90CE52FD2A36F6DB0033BD06 /* HomeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewController.swift; sourceTree = "<group>"; };
+		90CE52FF2A36F7110033BD06 /* HomeViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeViewController.xib; sourceTree = "<group>"; };
 		A8171123E8F401C7CF842A4C /* Pods-JiaPeiManage.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JiaPeiManage.debug.xcconfig"; path = "Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage.debug.xcconfig"; sourceTree = "<group>"; };
 		D9F65764266FE5C95D1940F5 /* Pods-JiaPeiManage.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JiaPeiManage.release.xcconfig"; path = "Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage.release.xcconfig"; sourceTree = "<group>"; };
 /* End PBXFileReference section */
@@ -585,6 +589,8 @@
 		90CE52E42A36E7BD0033BD06 /* Home */ = {
 			isa = PBXGroup;
 			children = (
+				90CE52FC2A36F6A60033BD06 /* Views */,
+				90CE52FB2A36F6A00033BD06 /* Controllers */,
 			);
 			path = Home;
 			sourceTree = "<group>";
@@ -612,6 +618,22 @@
 			path = Views;
 			sourceTree = "<group>";
 		};
+		90CE52FB2A36F6A00033BD06 /* Controllers */ = {
+			isa = PBXGroup;
+			children = (
+				90CE52FD2A36F6DB0033BD06 /* HomeViewController.swift */,
+				90CE52FF2A36F7110033BD06 /* HomeViewController.xib */,
+			);
+			path = Controllers;
+			sourceTree = "<group>";
+		};
+		90CE52FC2A36F6A60033BD06 /* Views */ = {
+			isa = PBXGroup;
+			children = (
+			);
+			path = Views;
+			sourceTree = "<group>";
+		};
 		A24D99DBE7A92F9485B15E3A /* Frameworks */ = {
 			isa = PBXGroup;
 			children = (
@@ -688,6 +710,7 @@
 				90CE52202A36C0710033BD06 /* Main.storyboard in Resources */,
 				90CE52EB2A36E8680033BD06 /* LoginViewController.xib in Resources */,
 				90CE52852A36E5460033BD06 /* EmptyView.xib in Resources */,
+				90CE53002A36F7110033BD06 /* HomeViewController.xib in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -787,6 +810,7 @@
 				90CE52B02A36E59A0033BD06 /* NSAttributedString+BoundingRect.swift in Sources */,
 				90CE52C92A36E5EC0033BD06 /* Moya+Rx.swift in Sources */,
 				90CE52772A36E5460033BD06 /* AVPlayer+LWPlayer.swift in Sources */,
+				90CE52FE2A36F6DB0033BD06 /* HomeViewController.swift in Sources */,
 				90CE52732A36E5460033BD06 /* LWPlayerView.swift in Sources */,
 				90CE52442A36E5170033BD06 /* NYMacros.swift in Sources */,
 				90CE52192A36C0710033BD06 /* AppDelegate.swift in Sources */,
@@ -977,6 +1001,8 @@
 				INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
 				INFOPLIST_KEY_UILaunchStoryboardName = Main.storyboard;
 				INFOPLIST_KEY_UIMainStoryboardFile = Main;
+				INFOPLIST_KEY_UIRequiresFullScreen = YES;
+				INFOPLIST_KEY_UIStatusBarStyle = UIStatusBarStyleLightContent;
 				INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait";
 				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
 				LD_RUNPATH_SEARCH_PATHS = (
@@ -1008,6 +1034,8 @@
 				INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
 				INFOPLIST_KEY_UILaunchStoryboardName = Main.storyboard;
 				INFOPLIST_KEY_UIMainStoryboardFile = Main;
+				INFOPLIST_KEY_UIRequiresFullScreen = YES;
+				INFOPLIST_KEY_UIStatusBarStyle = UIStatusBarStyleLightContent;
 				INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait";
 				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
 				LD_RUNPATH_SEARCH_PATHS = (

+ 6 - 0
JiaPeiManage/Assets.xcassets/Modules/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 6 - 0
JiaPeiManage/Assets.xcassets/Modules/Home/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 23 - 0
JiaPeiManage/Assets.xcassets/Modules/Home/banner.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "filename" : "banner.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "banner@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "banner@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
JiaPeiManage/Assets.xcassets/Modules/Home/banner.imageset/banner.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Home/banner.imageset/banner@2x.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Home/banner.imageset/banner@3x.png


+ 23 - 0
JiaPeiManage/Assets.xcassets/Modules/Home/home_01.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "filename" : "home_01.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "home_01@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "home_01@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
JiaPeiManage/Assets.xcassets/Modules/Home/home_01.imageset/home_01.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Home/home_01.imageset/home_01@2x.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Home/home_01.imageset/home_01@3x.png


+ 23 - 0
JiaPeiManage/Assets.xcassets/Modules/Home/home_02.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "filename" : "home_02.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "home_02@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "home_02@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
JiaPeiManage/Assets.xcassets/Modules/Home/home_02.imageset/home_02.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Home/home_02.imageset/home_02@2x.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Home/home_02.imageset/home_02@3x.png


+ 23 - 0
JiaPeiManage/Assets.xcassets/Modules/Home/home_03.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "filename" : "home_03.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "home_03@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "home_03@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
JiaPeiManage/Assets.xcassets/Modules/Home/home_03.imageset/home_03.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Home/home_03.imageset/home_03@2x.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Home/home_03.imageset/home_03@3x.png


+ 23 - 0
JiaPeiManage/Assets.xcassets/Modules/Home/home_04.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "filename" : "home_04.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "home_04@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "home_04@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
JiaPeiManage/Assets.xcassets/Modules/Home/home_04.imageset/home_04.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Home/home_04.imageset/home_04@2x.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Home/home_04.imageset/home_04@3x.png


+ 23 - 0
JiaPeiManage/Assets.xcassets/Modules/Home/home_05.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "filename" : "home_05.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "home_05@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "home_05@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
JiaPeiManage/Assets.xcassets/Modules/Home/home_05.imageset/home_05.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Home/home_05.imageset/home_05@2x.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Home/home_05.imageset/home_05@3x.png


+ 23 - 0
JiaPeiManage/Assets.xcassets/Modules/Home/home_right.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "filename" : "home_right.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "home_right@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "home_right@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
JiaPeiManage/Assets.xcassets/Modules/Home/home_right.imageset/home_right.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Home/home_right.imageset/home_right@2x.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Home/home_right.imageset/home_right@3x.png


+ 23 - 0
JiaPeiManage/Assets.xcassets/Modules/Home/home_right_o.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "filename" : "home_right_o.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "home_right_o@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "home_right_o@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
JiaPeiManage/Assets.xcassets/Modules/Home/home_right_o.imageset/home_right_o.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Home/home_right_o.imageset/home_right_o@2x.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Home/home_right_o.imageset/home_right_o@3x.png


+ 6 - 0
JiaPeiManage/Assets.xcassets/Modules/Login/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 23 - 0
JiaPeiManage/Assets.xcassets/Modules/Login/login_ID.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "filename" : "login_ID.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "login_ID@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "login_ID@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
JiaPeiManage/Assets.xcassets/Modules/Login/login_ID.imageset/login_ID.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Login/login_ID.imageset/login_ID@2x.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Login/login_ID.imageset/login_ID@3x.png


+ 23 - 0
JiaPeiManage/Assets.xcassets/Modules/Login/login_arrow.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "filename" : "login_arrow.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "login_arrow@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "login_arrow@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
JiaPeiManage/Assets.xcassets/Modules/Login/login_arrow.imageset/login_arrow.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Login/login_arrow.imageset/login_arrow@2x.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Login/login_arrow.imageset/login_arrow@3x.png


+ 23 - 0
JiaPeiManage/Assets.xcassets/Modules/Login/login_hello.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "filename" : "login_hello.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "login_hello@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "login_hello@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
JiaPeiManage/Assets.xcassets/Modules/Login/login_hello.imageset/login_hello.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Login/login_hello.imageset/login_hello@2x.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Login/login_hello.imageset/login_hello@3x.png


+ 23 - 0
JiaPeiManage/Assets.xcassets/Modules/Login/login_hide.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "filename" : "login_hide.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "login_hide@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "login_hide@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
JiaPeiManage/Assets.xcassets/Modules/Login/login_hide.imageset/login_hide.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Login/login_hide.imageset/login_hide@2x.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Login/login_hide.imageset/login_hide@3x.png


+ 23 - 0
JiaPeiManage/Assets.xcassets/Modules/Login/login_location.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "filename" : "login_location.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "login_location@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "login_location@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
JiaPeiManage/Assets.xcassets/Modules/Login/login_location.imageset/login_location.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Login/login_location.imageset/login_location@2x.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Login/login_location.imageset/login_location@3x.png


+ 23 - 0
JiaPeiManage/Assets.xcassets/Modules/Login/login_no.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "filename" : "login_no.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "login_no@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "login_no@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
JiaPeiManage/Assets.xcassets/Modules/Login/login_no.imageset/login_no.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Login/login_no.imageset/login_no@2x.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Login/login_no.imageset/login_no@3x.png


+ 23 - 0
JiaPeiManage/Assets.xcassets/Modules/Login/login_pwd.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "filename" : "login_pwd.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "login_pwd@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "login_pwd@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
JiaPeiManage/Assets.xcassets/Modules/Login/login_pwd.imageset/login_pwd.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Login/login_pwd.imageset/login_pwd@2x.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Login/login_pwd.imageset/login_pwd@3x.png


+ 23 - 0
JiaPeiManage/Assets.xcassets/Modules/Login/login_show.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "filename" : "login_show.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "login_show@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "login_show@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
JiaPeiManage/Assets.xcassets/Modules/Login/login_show.imageset/login_show.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Login/login_show.imageset/login_show@2x.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Login/login_show.imageset/login_show@3x.png


+ 23 - 0
JiaPeiManage/Assets.xcassets/Modules/Login/login_yes.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "filename" : "login_yes.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "login_yes@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "login_yes@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
JiaPeiManage/Assets.xcassets/Modules/Login/login_yes.imageset/login_yes.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Login/login_yes.imageset/login_yes@2x.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Login/login_yes.imageset/login_yes@3x.png


+ 5 - 0
JiaPeiManage/Info.plist

@@ -2,6 +2,11 @@
 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
 <dict>
+	<key>NSAppTransportSecurity</key>
+	<dict>
+		<key>NSAllowsArbitraryLoads</key>
+		<true/>
+	</dict>
 	<key>UIApplicationSceneManifest</key>
 	<dict>
 		<key>UIApplicationSupportsMultipleScenes</key>

+ 5 - 11
JiaPeiManage/Sources/CompositionRoot.swift

@@ -54,17 +54,11 @@ final class CompositionRoot {
         var presentMainScreen: (() -> Void)!
 
         presentMainScreen = {
-
-//            let mainTabBarController = MainTabBarController(reactor: MainTabBarViewReactor(),
-//                                                            homeParentViewController: HomeParentViewController(service: homeService),
-//                                                            timekeepViewController: TimeKeepParentViewController(),
-//                                                            mineListViewController: MineParentViewController())
-
-//            window.rootViewController = mainTabBarController
-            
-            //判断用户登录
-            let loginController = LoginViewController(nibName: "LoginViewController")
-            window.rootViewController = loginController
+            //首页
+            let homeViewController =  HomeViewController(nibName: "HomeViewController")
+            let navigationController = MainNavigationController(rootViewController: homeViewController)
+            navigationController.tabBarItem.titlePositionAdjustment = UIOffset(horizontal: 0, vertical: -3)
+            window.rootViewController = navigationController
         }
 
         let splashViewController = SplashViewController(presentMainScreen: presentMainScreen)

+ 5 - 1
JiaPeiManage/Sources/Main/Base/BaseViewController.swift

@@ -60,7 +60,11 @@ class BaseViewController: UIViewController, NetAnimationLoadable {
             }
         }
     }
-    
+    //状态栏颜色
+    override var preferredStatusBarStyle: UIStatusBarStyle{
+        return .lightContent
+    }
+        
     override func viewDidAppear(_ animated: Bool) {
         super.viewDidAppear(animated)
         

+ 34 - 0
JiaPeiManage/Sources/Modulars/Home/Controllers/HomeViewController.swift

@@ -0,0 +1,34 @@
+//
+//  HomeViewController.swift
+//  JiaPeiManage
+//
+//  Created by Ning.ge on 2023/6/12.
+//
+import UIKit
+import RxSwift
+import RxCocoa
+import SwiftyUserDefaults
+
+final class HomeViewController: BaseViewController {
+    // MARK: UI属性
+    
+    
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        
+        self.view.backgroundColor = UIColor("#06203A")
+        //biand绑定
+        biandView()
+        
+        //判断用户登录
+        let loginController = LoginViewController(nibName: "LoginViewController")
+        self.present(loginController, animated: true)
+    }
+    
+    // MARK: 私有方法
+    func biandView(){
+        
+        
+    }
+    
+}

+ 31 - 0
JiaPeiManage/Sources/Modulars/Home/Controllers/HomeViewController.xib

@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21701" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+    <device id="retina6_12" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21678"/>
+        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+        <capability name="System colors in document resources" minToolsVersion="11.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="HomeViewController" customModule="JiaPeiManage" customModuleProvider="target">
+            <connections>
+                <outlet property="view" destination="iN0-l3-epB" id="9Zg-Y9-fOO"/>
+            </connections>
+        </placeholder>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view contentMode="scaleToFill" id="iN0-l3-epB">
+            <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/>
+            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+            <point key="canvasLocation" x="34" y="-12"/>
+        </view>
+    </objects>
+    <resources>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>

+ 133 - 0
JiaPeiManage/Sources/Modulars/Login/Controllers/LoginViewController.swift

@@ -12,6 +12,139 @@ import SwiftyUserDefaults
 
 final class LoginViewController: BaseViewController {
     
+    // MARK: 服务属性
+    private let loginService: LoginServiceType = LoginService(networking: LoginNetworking())
+    // MARK: UI属性
+    
+    // 账号
+    @IBOutlet weak var username_textField: QMUITextField!
+    //密码
+    @IBOutlet weak var userpassword_textField: QMUITextField!
+    //显示密码
+    @IBOutlet weak var pwdshow_button: QMUIButton!
+    //定位arrow
+    @IBOutlet weak var location_button: QMUIButton!
+    //区域
+    @IBOutlet weak var userlocation_textField: QMUITextField!
+        
+    @IBOutlet weak var login_button: UIButton!
+    
+    //已同意
+    @IBOutlet weak var agree_button: QMUIButton!
+    //用户协议
+    @IBOutlet weak var userprotocol_button: UIButton!
+    //隐私政策
+    @IBOutlet weak var userprivacy_button: UIButton!
+    
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        
+        self.view.backgroundColor = UIColor("#06203A")
+        NSLog("LoginViewController")
+        //biand绑定
+        biandView()
+    }
+    // MARK: 私有方法
+    func biandView(){
+        //判断账号的输入是否可用
+        let accountValid = username_textField.rx.text.orEmpty.map{ value in
+            return value.count >= 18
+        }
+        //判断密码的输入是否可用
+        let passwordValid = userpassword_textField.rx.text.orEmpty.map{ value in
+            return value.count >= 6
+        }
+        
+        //判断同意
+        let agreeValid = agree_button.rx.tap.map { [unowned self] in
+            NSLog("agreeValid")
+                return self.agree_button.isSelected
+        }
+        //同意
+        agree_button.rx.tap.subscribe ({ [unowned self] (_)  in
+            NSLog("tap.subscribe")
+            self.agree_button.isSelected = !self.agree_button.isSelected
+        }).disposed(by: disposeBag)
+        //登录按钮的可用与否
+        let loginObserver = Observable.combineLatest(accountValid,passwordValid,agreeValid){(account,password,agree) in
+            account && password && agree
+        }
+
+        //绑定按钮
+        loginObserver.bind(to: login_button.rx.isEnabled).disposed(by: disposeBag)
+        loginObserver.subscribe(onNext: { [unowned self] valid in
+            NSLog("loginObserver")
+            self.login_button.alpha = valid ? 1 : 0.5
+        }).disposed(by: disposeBag)
+        
+        //用户协议
+        userprotocol_button.rx.tap.subscribe ({ [unowned self] (_)  in
+            //跳web
+            navigator.push("https://ys.zzxcx.net/xy_jsjp.html")
+        }).disposed(by: disposeBag)
+        //隐私
+        userprivacy_button.rx.tap.subscribe ({ [unowned self] (_)  in
+            //跳web
+            navigator.push("https://ys.zzxcx.net/xy_jsjp.html")
+        }).disposed(by: disposeBag)
+        //显示密码
+        pwdshow_button.rx.tap.subscribe ({ [unowned self] (_)  in
+            self.pwdshow_button.isSelected = !self.pwdshow_button.isSelected;
+            self.userpassword_textField.isSecureTextEntry = !self.pwdshow_button.isSelected
+        }).disposed(by: disposeBag)
+        //选择区域
+        location_button.rx.tap.subscribe ({ [unowned self] (_)  in
+            NSLog("点击了:选择区域")
+            //登录api RX 订阅 观察 销毁 三部曲
+            self.loginService.loginRequest(user_name: "350102199001182416", user_password: "123456",city: "3501")
+                .subscribe(onSuccess: { userinfo in
+                    print("登录成功:%@", userinfo)
+                    self.navigationController?.popViewController(animated: true)
+                }, onError: { error in
+                    print("%@",error)
+                })
+                .disposed(by: disposeBag)
+        }).disposed(by: disposeBag)
+        //登录
+        login_button.rx.tap
+                    .asObservable()
+                    .withLatestFrom(loginObserver)
+                    .do(onNext: {
+                        [unowned self]_ in
+                        self.login_button.isEnabled = false
+                        self.view.endEditing(true)
+                    })
+                    .subscribe(onNext: {[unowned self]isLogin in
+                        NSLog("登录 - 登录: login %@","123")
+                        //保存用户信息
+                        var account:String = self.username_textField.text!
+                        var password:String = self.userpassword_textField.text!
+                        LocalManager.userInfo.userAccount = account
+                        LocalManager.userInfo.password = password
+                        self.login_button.isEnabled = true
+                        //登录api RX 订阅 观察 销毁 三部曲
+                        self.loginService.loginRequest(user_name: account, user_password: password,city: "3501")
+                            .subscribe(onSuccess: { userinfo in
+                                print("登录成功:%@", userinfo)
+                                self.navigationController?.popViewController(animated: true)
+                            }, onError: { error in
+                                print("%@",error)
+                            })
+                            .disposed(by: disposeBag)
+                        
+                    })
+                    .disposed(by: disposeBag)
+        //添加手势
+        let tapBackground = UITapGestureRecognizer()
+        tapBackground.rx.event
+        .subscribe(onNext: { [weak self] _ in
+            self?.view.endEditing(true)
+        })
+        .disposed(by: disposeBag)
+        view.addGestureRecognizer(tapBackground)
+    }
+    
+    
     
     
 }

+ 267 - 9
JiaPeiManage/Sources/Modulars/Login/Controllers/LoginViewController.xib

@@ -1,31 +1,289 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21701" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
-    <device id="retina6_12" orientation="portrait" appearance="light"/>
+    <device id="retina5_9" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
         <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21678"/>
         <capability name="Safe area layout guides" minToolsVersion="9.0"/>
-        <capability name="System colors in document resources" minToolsVersion="11.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="LoginViewController" customModule="JiaPeiManage" customModuleProvider="target">
             <connections>
-                <outlet property="view" destination="iN0-l3-epB" id="vZz-m1-1GF"/>
+                <outlet property="agree_button" destination="e49-95-2qF" id="5SE-bN-Bmh"/>
+                <outlet property="location_button" destination="rMA-Qb-CEp" id="WXC-en-KxG"/>
+                <outlet property="login_button" destination="QFo-KM-CGQ" id="LO1-nE-eDa"/>
+                <outlet property="pwdshow_button" destination="q0m-zw-jQ3" id="wsc-au-CR1"/>
+                <outlet property="userlocation_textField" destination="Srz-3V-PhW" id="OuB-AQ-K2t"/>
+                <outlet property="username_textField" destination="5Fe-Zm-EX0" id="i3D-Rv-y3i"/>
+                <outlet property="userpassword_textField" destination="FhP-eV-VnP" id="NML-eN-HW2"/>
+                <outlet property="userprivacy_button" destination="2vk-wc-3HQ" id="p90-TA-5Kk"/>
+                <outlet property="userprotocol_button" destination="Qxc-Vk-Mrq" id="rwA-OP-u8e"/>
+                <outlet property="view" destination="iN0-l3-epB" id="ubR-kx-ERh"/>
             </connections>
         </placeholder>
         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
         <view contentMode="scaleToFill" id="iN0-l3-epB">
-            <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
+            <rect key="frame" x="0.0" y="0.0" width="375" height="812"/>
             <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="login_hello" translatesAutoresizingMaskIntoConstraints="NO" id="ME7-ie-msV">
+                    <rect key="frame" x="26" y="128" width="334" height="113"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="113" id="AKq-wQ-dKb"/>
+                    </constraints>
+                </imageView>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="SDO-oc-nvt">
+                    <rect key="frame" x="15" y="296" width="345" height="380"/>
+                    <subviews>
+                        <button opaque="NO" clipsSubviews="YES" alpha="0.5" contentMode="scaleToFill" enabled="NO" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="QFo-KM-CGQ">
+                            <rect key="frame" x="28" y="296" width="289" height="45"/>
+                            <color key="backgroundColor" red="0.20784313725490194" green="0.74901960784313726" blue="0.36862745098039218" alpha="1" colorSpace="calibratedRGB"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="45" id="KrL-UQ-pBh"/>
+                            </constraints>
+                            <state key="normal" title="登 录"/>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                    <real key="value" value="5"/>
+                                </userDefinedRuntimeAttribute>
+                                <userDefinedRuntimeAttribute type="number" keyPath="borderWidth">
+                                    <real key="value" value="0.0"/>
+                                </userDefinedRuntimeAttribute>
+                            </userDefinedRuntimeAttributes>
+                        </button>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="wQT-0A-9II" userLabel="View-input">
+                            <rect key="frame" x="25" y="40" width="295" height="45"/>
+                            <subviews>
+                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="login_ID" translatesAutoresizingMaskIntoConstraints="NO" id="dFa-eq-XxP">
+                                    <rect key="frame" x="20" y="9.6666666666666856" width="32" height="26"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="32" id="2kM-dP-nVX"/>
+                                        <constraint firstAttribute="height" constant="26" id="Ll5-uS-mrf"/>
+                                    </constraints>
+                                </imageView>
+                                <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入身份证号" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="5Fe-Zm-EX0" customClass="QMUITextField">
+                                    <rect key="frame" x="62" y="0.0" width="218" height="45"/>
+                                    <color key="textColor" red="0.83137254901960778" green="0.8666666666666667" blue="0.90196078431372551" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                    <textInputTraits key="textInputTraits" keyboardType="numberPad"/>
+                                </textField>
+                            </subviews>
+                            <color key="backgroundColor" red="0.14901960784313725" green="0.28235294117647058" blue="0.41960784313725491" alpha="1" colorSpace="calibratedRGB"/>
+                            <constraints>
+                                <constraint firstItem="dFa-eq-XxP" firstAttribute="leading" secondItem="wQT-0A-9II" secondAttribute="leading" constant="20" id="28L-Eb-N2q"/>
+                                <constraint firstItem="5Fe-Zm-EX0" firstAttribute="top" secondItem="wQT-0A-9II" secondAttribute="top" id="6du-dr-OnU"/>
+                                <constraint firstItem="dFa-eq-XxP" firstAttribute="centerY" secondItem="wQT-0A-9II" secondAttribute="centerY" id="D6i-TA-y6I"/>
+                                <constraint firstAttribute="bottom" secondItem="5Fe-Zm-EX0" secondAttribute="bottom" id="O3r-uq-WZX"/>
+                                <constraint firstItem="5Fe-Zm-EX0" firstAttribute="leading" secondItem="dFa-eq-XxP" secondAttribute="trailing" constant="10" id="S8Y-tT-NKN"/>
+                                <constraint firstAttribute="height" constant="45" id="dcn-Wi-cy0"/>
+                                <constraint firstAttribute="trailing" secondItem="5Fe-Zm-EX0" secondAttribute="trailing" constant="15" id="yJF-0Y-16N"/>
+                            </constraints>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                    <real key="value" value="5"/>
+                                </userDefinedRuntimeAttribute>
+                            </userDefinedRuntimeAttributes>
+                        </view>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="U4y-em-jeM" userLabel="View-input">
+                            <rect key="frame" x="25" y="105" width="295" height="45"/>
+                            <subviews>
+                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="login_pwd" translatesAutoresizingMaskIntoConstraints="NO" id="mTC-xX-7eg">
+                                    <rect key="frame" x="25" y="9.6666666666666856" width="22" height="26"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="26" id="0JU-08-wSP"/>
+                                        <constraint firstAttribute="width" constant="22" id="h9O-U0-HBA"/>
+                                    </constraints>
+                                </imageView>
+                                <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入密码" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="FhP-eV-VnP" customClass="QMUITextField">
+                                    <rect key="frame" x="57" y="0.0" width="180" height="45"/>
+                                    <color key="textColor" red="0.83137254900000002" green="0.86666666670000003" blue="0.90196078430000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                    <textInputTraits key="textInputTraits" secureTextEntry="YES"/>
+                                </textField>
+                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="q0m-zw-jQ3" customClass="QMUIButton">
+                                    <rect key="frame" x="247" y="0.0" width="22" height="45"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="22" id="TcP-3a-Yfm"/>
+                                        <constraint firstAttribute="height" constant="45" id="Yj2-aG-AfZ"/>
+                                    </constraints>
+                                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                    <state key="normal" image="login_hide"/>
+                                    <state key="selected" image="login_show"/>
+                                </button>
+                            </subviews>
+                            <color key="backgroundColor" red="0.14901960780000001" green="0.28235294119999998" blue="0.41960784309999999" alpha="1" colorSpace="calibratedRGB"/>
+                            <constraints>
+                                <constraint firstAttribute="trailing" secondItem="q0m-zw-jQ3" secondAttribute="trailing" constant="26" id="2KO-3O-OM0"/>
+                                <constraint firstItem="q0m-zw-jQ3" firstAttribute="leading" secondItem="FhP-eV-VnP" secondAttribute="trailing" constant="10" id="7UK-hA-4sm"/>
+                                <constraint firstItem="mTC-xX-7eg" firstAttribute="centerY" secondItem="U4y-em-jeM" secondAttribute="centerY" id="9Nh-Z0-GIz"/>
+                                <constraint firstAttribute="bottom" secondItem="FhP-eV-VnP" secondAttribute="bottom" id="FSn-0J-PLh"/>
+                                <constraint firstItem="q0m-zw-jQ3" firstAttribute="centerY" secondItem="U4y-em-jeM" secondAttribute="centerY" id="Hu6-wp-RUx"/>
+                                <constraint firstItem="FhP-eV-VnP" firstAttribute="top" secondItem="U4y-em-jeM" secondAttribute="top" id="I6H-II-ORh"/>
+                                <constraint firstItem="mTC-xX-7eg" firstAttribute="leading" secondItem="U4y-em-jeM" secondAttribute="leading" constant="25" id="Lti-1O-KgQ"/>
+                                <constraint firstAttribute="height" constant="45" id="N6j-Ni-44c"/>
+                                <constraint firstItem="FhP-eV-VnP" firstAttribute="leading" secondItem="mTC-xX-7eg" secondAttribute="trailing" constant="10" id="zHY-lt-3dd"/>
+                            </constraints>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                    <real key="value" value="5"/>
+                                </userDefinedRuntimeAttribute>
+                            </userDefinedRuntimeAttributes>
+                        </view>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="V1H-73-kgk" userLabel="View-input">
+                            <rect key="frame" x="25" y="170" width="295" height="45"/>
+                            <subviews>
+                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="login_location" translatesAutoresizingMaskIntoConstraints="NO" id="AVr-H3-2zM">
+                                    <rect key="frame" x="25" y="9.6666666666666856" width="21" height="26"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="21" id="P6B-ds-pi5"/>
+                                        <constraint firstAttribute="height" constant="26" id="wa4-zS-Ziu"/>
+                                    </constraints>
+                                </imageView>
+                                <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请选择地区" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Srz-3V-PhW" customClass="QMUITextField">
+                                    <rect key="frame" x="64" y="5" width="137" height="34"/>
+                                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                    <color key="textColor" red="0.83137254900000002" green="0.86666666670000003" blue="0.90196078430000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                    <textInputTraits key="textInputTraits" keyboardType="numberPad"/>
+                                </textField>
+                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="rMA-Qb-CEp" customClass="QMUIButton">
+                                    <rect key="frame" x="250" y="0.0" width="16" height="45"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="16" id="EaW-MI-UzX"/>
+                                        <constraint firstAttribute="height" constant="45" id="eMq-R6-uVW"/>
+                                    </constraints>
+                                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                    <state key="normal" image="login_arrow"/>
+                                    <state key="selected" image="login_arrow"/>
+                                </button>
+                            </subviews>
+                            <color key="backgroundColor" red="0.14901960780000001" green="0.28235294119999998" blue="0.41960784309999999" alpha="1" colorSpace="calibratedRGB"/>
+                            <constraints>
+                                <constraint firstAttribute="trailing" secondItem="rMA-Qb-CEp" secondAttribute="trailing" constant="29" id="CMD-VI-Qbt"/>
+                                <constraint firstAttribute="height" constant="45" id="Jqv-Vx-K4D"/>
+                                <constraint firstItem="rMA-Qb-CEp" firstAttribute="centerY" secondItem="V1H-73-kgk" secondAttribute="centerY" id="QCi-Nw-Vxi"/>
+                                <constraint firstItem="AVr-H3-2zM" firstAttribute="leading" secondItem="V1H-73-kgk" secondAttribute="leading" constant="25" id="UXc-mw-nRd"/>
+                                <constraint firstItem="AVr-H3-2zM" firstAttribute="centerY" secondItem="V1H-73-kgk" secondAttribute="centerY" id="sed-vG-4R8"/>
+                            </constraints>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                    <real key="value" value="5"/>
+                                </userDefinedRuntimeAttribute>
+                            </userDefinedRuntimeAttributes>
+                        </view>
+                    </subviews>
+                    <color key="backgroundColor" red="0.043137254901960784" green="0.16862745098039217" blue="0.30196078431372547" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    <constraints>
+                        <constraint firstItem="V1H-73-kgk" firstAttribute="top" secondItem="U4y-em-jeM" secondAttribute="bottom" constant="20" id="6M4-D2-UMH"/>
+                        <constraint firstItem="U4y-em-jeM" firstAttribute="top" secondItem="wQT-0A-9II" secondAttribute="bottom" constant="20" id="6tm-wu-M0D"/>
+                        <constraint firstAttribute="trailing" secondItem="QFo-KM-CGQ" secondAttribute="trailing" constant="28" id="78S-HW-eIZ"/>
+                        <constraint firstItem="QFo-KM-CGQ" firstAttribute="leading" secondItem="SDO-oc-nvt" secondAttribute="leading" constant="28" id="7JJ-hu-aCk"/>
+                        <constraint firstAttribute="bottom" secondItem="QFo-KM-CGQ" secondAttribute="bottom" constant="39" id="8ek-3v-7Ow"/>
+                        <constraint firstAttribute="trailing" secondItem="wQT-0A-9II" secondAttribute="trailing" constant="25" id="CKe-nz-ZmD"/>
+                        <constraint firstItem="U4y-em-jeM" firstAttribute="leading" secondItem="SDO-oc-nvt" secondAttribute="leading" constant="25" id="MmG-0l-zbn"/>
+                        <constraint firstItem="wQT-0A-9II" firstAttribute="top" secondItem="SDO-oc-nvt" secondAttribute="top" constant="40" id="MoJ-2j-zXc"/>
+                        <constraint firstItem="wQT-0A-9II" firstAttribute="leading" secondItem="SDO-oc-nvt" secondAttribute="leading" constant="25" id="XIO-Oy-qP5"/>
+                        <constraint firstAttribute="height" constant="380" id="k9h-TM-jyG"/>
+                        <constraint firstAttribute="trailing" secondItem="U4y-em-jeM" secondAttribute="trailing" constant="25" id="qCr-iG-kYR"/>
+                        <constraint firstAttribute="trailing" secondItem="V1H-73-kgk" secondAttribute="trailing" constant="25" id="vmz-vt-e8y"/>
+                        <constraint firstItem="V1H-73-kgk" firstAttribute="leading" secondItem="SDO-oc-nvt" secondAttribute="leading" constant="25" id="z8p-nz-MgD"/>
+                    </constraints>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                            <real key="value" value="5"/>
+                        </userDefinedRuntimeAttribute>
+                    </userDefinedRuntimeAttributes>
+                </view>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="VtF-yH-Ucb">
+                    <rect key="frame" x="67.666666666666686" y="720" width="240" height="18"/>
+                    <subviews>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="e49-95-2qF" customClass="QMUIButton">
+                            <rect key="frame" x="0.0" y="1" width="60" height="16"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="60" id="diK-6K-3bA"/>
+                                <constraint firstAttribute="height" constant="16" id="paq-Fv-lIO"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                            <inset key="titleEdgeInsets" minX="6" minY="0.0" maxX="0.0" maxY="0.0"/>
+                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                            <state key="normal" title="已同意" image="login_no"/>
+                            <state key="selected" image="login_yes"/>
+                        </button>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="2vk-wc-3HQ" customClass="QMUIButton">
+                            <rect key="frame" x="155" y="0.0" width="80" height="18"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="18" id="gOe-bc-7QY"/>
+                                <constraint firstAttribute="width" constant="80" id="kfn-ea-anG"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                            <state key="normal" title="《隐私政策》">
+                                <color key="titleColor" red="0.20784313730000001" green="0.74901960779999999" blue="0.36862745099999999" alpha="1" colorSpace="calibratedRGB"/>
+                            </state>
+                        </button>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="和" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Mbd-0l-TGy">
+                            <rect key="frame" x="140" y="0.0" width="15" height="18"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="15" id="CJ8-9y-Mad"/>
+                                <constraint firstAttribute="height" constant="18" id="al5-Lv-mWQ"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                            <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Qxc-Vk-Mrq" customClass="QMUIButton">
+                            <rect key="frame" x="60" y="0.0" width="80" height="18"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="18" id="6NK-hT-7NL"/>
+                                <constraint firstAttribute="width" constant="80" id="w2p-e8-WtV"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                            <state key="normal" title="《用户协议》">
+                                <color key="titleColor" red="0.20784313725490194" green="0.74901960784313726" blue="0.36862745098039218" alpha="1" colorSpace="calibratedRGB"/>
+                            </state>
+                        </button>
+                    </subviews>
+                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    <constraints>
+                        <constraint firstItem="2vk-wc-3HQ" firstAttribute="leading" secondItem="Mbd-0l-TGy" secondAttribute="trailing" id="3Pi-P1-cjs"/>
+                        <constraint firstItem="Mbd-0l-TGy" firstAttribute="leading" secondItem="Qxc-Vk-Mrq" secondAttribute="trailing" id="IFC-3K-Wd5"/>
+                        <constraint firstItem="e49-95-2qF" firstAttribute="centerY" secondItem="VtF-yH-Ucb" secondAttribute="centerY" id="JXG-yi-lH8"/>
+                        <constraint firstItem="Mbd-0l-TGy" firstAttribute="centerY" secondItem="VtF-yH-Ucb" secondAttribute="centerY" id="QSf-eL-v0w"/>
+                        <constraint firstAttribute="height" constant="18" id="Qf7-Nx-saY"/>
+                        <constraint firstItem="e49-95-2qF" firstAttribute="leading" secondItem="VtF-yH-Ucb" secondAttribute="leading" id="RoU-vq-Nlc"/>
+                        <constraint firstAttribute="width" constant="240" id="UQg-77-C5z"/>
+                        <constraint firstItem="2vk-wc-3HQ" firstAttribute="centerY" secondItem="VtF-yH-Ucb" secondAttribute="centerY" id="kl0-lk-rse"/>
+                        <constraint firstItem="Qxc-Vk-Mrq" firstAttribute="leading" secondItem="e49-95-2qF" secondAttribute="trailing" id="mWd-VJ-Bag"/>
+                        <constraint firstItem="Qxc-Vk-Mrq" firstAttribute="centerY" secondItem="VtF-yH-Ucb" secondAttribute="centerY" id="ydP-3W-xvq"/>
+                    </constraints>
+                </view>
+            </subviews>
             <viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/>
-            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
-            <point key="canvasLocation" x="33" y="-12"/>
+            <color key="backgroundColor" red="0.023529411764705882" green="0.12549019607843137" blue="0.22745098039215686" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+            <constraints>
+                <constraint firstItem="SDO-oc-nvt" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" constant="15" id="0cZ-OR-sHF"/>
+                <constraint firstItem="vUN-kp-3ea" firstAttribute="bottom" secondItem="VtF-yH-Ucb" secondAttribute="bottom" constant="40" id="2U8-lY-9U9"/>
+                <constraint firstItem="ME7-ie-msV" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" constant="26" id="BRs-Il-hmV"/>
+                <constraint firstItem="VtF-yH-Ucb" firstAttribute="centerX" secondItem="iN0-l3-epB" secondAttribute="centerX" id="LtY-ty-bNg"/>
+                <constraint firstItem="ME7-ie-msV" firstAttribute="top" secondItem="vUN-kp-3ea" secondAttribute="top" constant="78" id="Lx7-Nf-fK6"/>
+                <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="ME7-ie-msV" secondAttribute="trailing" constant="15" id="NDK-9e-S14"/>
+                <constraint firstItem="SDO-oc-nvt" firstAttribute="top" secondItem="ME7-ie-msV" secondAttribute="bottom" constant="55" id="VPw-6z-lg7"/>
+                <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="SDO-oc-nvt" secondAttribute="trailing" constant="15" id="vG0-c5-jT2"/>
+            </constraints>
+            <point key="canvasLocation" x="32.799999999999997" y="-12.561576354679804"/>
         </view>
     </objects>
     <resources>
-        <systemColor name="systemBackgroundColor">
-            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-        </systemColor>
+        <image name="login_ID" width="32" height="26"/>
+        <image name="login_arrow" width="16" height="12"/>
+        <image name="login_hello" width="334" height="113"/>
+        <image name="login_hide" width="22" height="11.333333015441895"/>
+        <image name="login_location" width="21" height="26"/>
+        <image name="login_no" width="14" height="14"/>
+        <image name="login_pwd" width="21.666666030883789" height="26"/>
+        <image name="login_show" width="22.333333969116211" height="13.666666984558105"/>
+        <image name="login_yes" width="14" height="14"/>
     </resources>
 </document>

+ 4 - 8
JiaPeiManage/Sources/Networking/NetEnvironment.swift

@@ -21,9 +21,8 @@ enum NetEnvironment: String, DefaultsSerializable {
 enum HttpRequest {
     case app
     case api
-    case bangumi
-    case live
     case http
+    case host
     case another
 }
 
@@ -32,20 +31,17 @@ extension HttpRequest {
     var path: String {
         
         let environment = Defaults.currentEnvironment
-
         switch self {
         case .app:
             return environment == .res ? "http://app.bilibili.com" : "app"
         case .api:
-            return environment == .res ? "http://api.bilibili.com" : "api"
-        case .bangumi:
-            return environment == .res ? "http://bangumi.bilibili.com" : "bangumi"
-        case .live:
-            return environment == .res ? "http://api.live.bilibili.com" : "live"
+            return environment == .res ? "https://jsjp-admin1.zzxcx.net" : "https://jsjp-admin1.zzxcx.net"
         case .http:
             return environment == .res ? "http://fj.jppt.com.cn/" : "http://192.168.8.87:8080/xm"
         case .another:
             return environment == .res ? "https://zzjs.zzxcx.net" : "http://192.168.8.87:8080"
+        case .host:
+            return environment == .res ? "https://jsjp-admin1.zzxcx.net" : "https://jsjp-admin1.zzxcx.net"
         }
     }
 }

+ 3 - 2
JiaPeiManage/Sources/Networking/Networking.swift

@@ -15,12 +15,13 @@ typealias LoginNetworking = Networking<LoginAPI>
 final class Networking<Target: TargetType>: MoyaProvider<Target> {
     
     init(plugins: [PluginType] = [LoadingPlugin()]) {
-        
+        //安全证书配置DisabledEvaluator 和 host 不能动
+        let serverTrustManager = ServerTrustManager(evaluators: ["jsjp-admin1.zzxcx.net": DisabledEvaluator()])
         let sessionManager: Session = {
             let configuration = URLSessionConfiguration.default
             configuration.httpAdditionalHeaders = HTTPHeaders.default.dictionary
             configuration.timeoutIntervalForRequest = kTimeoutIntervalForRequest
-            return Session(configuration: configuration, startRequestsImmediately: false)
+            return Session(configuration: configuration, startRequestsImmediately: false,serverTrustManager: serverTrustManager)
         }()
         
         super.init(endpointClosure:Networking.endpointMapping, session:sessionManager, plugins:plugins)

+ 23 - 42
JiaPeiManage/Sources/Services/LoginAPI.swift

@@ -10,9 +10,9 @@ import SwiftyUserDefaults
 enum LoginAPI {
     
     //登录
-    case loginUser(user_name:String, user_password:String)
+    case loginUser(user_name:String, user_password:String ,city:String)
     //修改密码
-    case updateUser(user_name:String, user_password:String,code:String)
+    case updateUser(user_name:String, user_password:String, new_password:String,city:String)
     
 }
 
@@ -21,24 +21,26 @@ extension LoginAPI: TargetType {
     var baseURL: URL {
         switch self {
         case .loginUser,.updateUser:
-            return URL(string: HttpRequest.http.path)!
+            return URL(string: HttpRequest.api.path)!
         }
     }
     
     var path: String {
         switch self {
-        case .loginUser(_,_):
-            return "appservice/student/stuLogin" //basePath(path: "appservice/student/stuLogin")
-        case .updateUser(_,_,_):
-            return "appservice/student/update"
+        case .loginUser(_,_,_):
+            return "/jsjp-admin/open-api/tms/coachInfo/coachInfoLogin"
+        case .updateUser(_,_,_,_):
+            return "/jsjp-admin/open-api/tms/coachInfo/updateCoachInfo"
        
         }
     }
     
     var method: Moya.Method {
         switch self {
-        case .loginUser,.updateUser:
-            return .post
+        case .loginUser:
+            return .get
+        case .updateUser:
+            return .put
         default:
             return .get
         }
@@ -50,13 +52,12 @@ extension LoginAPI: TargetType {
     
     var task: Moya.Task {
         switch self {
-        case .loginUser(_,_):
+        case .loginUser(_,_,_):
             if let parameters = parameters {
-//                return .requestCompositeParameters(bodyParameters: parameters, bodyEncoding: URLEncoding.httpBody, urlParameters: sign(with: urlParameters!)!)
                 return .requestParameters(parameters: parameters, encoding: URLEncoding.default)
             }
             return .requestPlain
-        case .updateUser(_,_,_):
+        case .updateUser(_,_,_,_):
             if let parameters = parameters {
                 return .requestParameters(parameters: parameters, encoding: URLEncoding.default)
             }
@@ -65,41 +66,21 @@ extension LoginAPI: TargetType {
     }
     
     var headers: [String: String]? {
-        switch self {
-        case .loginUser:
-            var urlParameters = urlParameters!
-            let sgin = "" // signStr(with: urlParameters)
-            urlParameters["sign"] = sgin
-            // 遍历字典的键值对及索引
-            var hs:[String: String] = [:]
-            for (index, (key, value)) in urlParameters.enumerated() {
-                // 如果 value 为空则跳过
-                let vv = value as? String
-                if vv!.count == 0 { continue }
-                hs[key] = vv
-            }
-            return hs
-        default:
-            return ["Content-Type":"application/json"]
-        }
+        return ["Content-Type":"application/json"]
     }
     
     var parameters: [String : Any]? {
         switch self {
-        case let .loginUser(user_name, user_password):
+        case let .loginUser(user_name, user_password,city):
             
-            return ["loginCode": user_name,
-                    "password": "",
-                    "version": NYMacros.appVersion ?? "1.1.0",
-                    "appType": "2",
-                    "systemVersion": String(format: "iOS %.1f", NYMacros.iOSVersion),//手机操作系统版本
-                    "photo": "",
-                    "sex": "",
-                    "nickName": "",
-                    "openId": "",
-                    "loginType": "1",]
-        case let .updateUser(user_name, user_password, code):
-            return ["username": user_name, "password": user_password,"code":code];
+            return ["city": city,
+                    "idcard": user_name,
+                    "password":user_password,]
+        case let .updateUser(user_name, user_password,new_password, city):
+            return ["city": city,
+                    "idcard": user_name,
+                    "password":user_password,
+                    "newPassword":new_password,]
         default:
             return nil
         }

+ 10 - 4
JiaPeiManage/Sources/Services/LoginService.swift

@@ -11,8 +11,9 @@ import SwiftyJSON
 
 protocol LoginServiceType {
 
-    func loginRequest(user_name: String, user_password: String) -> Single<UserInfo>
+    func loginRequest(user_name: String, user_password: String, city:String) -> Single<UserInfo>
     
+    func updateRequest(user_name: String, user_password: String,new_password: String, city:String) -> Single<UserInfo>
 }
 
 final class LoginService: LoginServiceType {
@@ -23,12 +24,17 @@ final class LoginService: LoginServiceType {
         self.networking = networking
     }
     
-    func loginRequest(user_name: String, user_password: String) -> RxSwift.Single<UserInfo> {
+    //登录
+    func loginRequest(user_name: String, user_password: String,city:String) -> RxSwift.Single<UserInfo> {
         
-        let api = LoginAPI.loginUser(user_name: user_name, user_password: user_password)
+        let api = LoginAPI.loginUser(user_name: user_name, user_password: user_password,city: city)
         return networking.request(api).map(UserInfo.self)
     }
     
- 
+    //修改密码
+    func updateRequest(user_name: String, user_password: String, new_password: String, city: String) -> RxSwift.Single<UserInfo> {
+        let api = LoginAPI.updateUser(user_name: user_name, user_password: user_password, new_password: new_password, city: city)
+        return networking.request(api).map(UserInfo.self)
+    }
     
 }