Selaa lähdekoodia

全部报名统计-UI完成。api调试成功

openlockPPP 1 vuosi sitten
vanhempi
commit
7fc243bd61
42 muutettua tiedostoa jossa 1120 lisäystä ja 113 poistoa
  1. 65 25
      JiaPeiManage.xcodeproj/project.pbxproj
  2. 23 0
      JiaPeiManage/Assets.xcassets/Modules/Common/btn_arrow_gray.imageset/Contents.json
  3. BIN
      JiaPeiManage/Assets.xcassets/Modules/Common/btn_arrow_gray.imageset/btn_arrow_gray.png
  4. BIN
      JiaPeiManage/Assets.xcassets/Modules/Common/btn_arrow_gray.imageset/btn_arrow_gray@2x.png
  5. BIN
      JiaPeiManage/Assets.xcassets/Modules/Common/btn_arrow_gray.imageset/btn_arrow_gray@3x.png
  6. 0 14
      JiaPeiManage/Info.plist
  7. 1 0
      JiaPeiManage/JSJP-Brigding-Header.h
  8. 11 0
      JiaPeiManage/Sources/Extensions/UIColor+NY.swift
  9. 2 0
      JiaPeiManage/Sources/Main/App/AppDelegate.swift
  10. 16 15
      JiaPeiManage/Sources/Main/App/CompositionRoot.swift
  11. 0 0
      JiaPeiManage/Sources/Main/App/Main.storyboard
  12. 0 0
      JiaPeiManage/Sources/Main/App/ViewController.swift
  13. 7 0
      JiaPeiManage/Sources/Main/Base/BaseViewController.swift
  14. 1 1
      JiaPeiManage/Sources/Main/MainNavigationController.swift
  15. 23 0
      JiaPeiManage/Sources/Models/StuCountDataModel.swift
  16. 2 0
      JiaPeiManage/Sources/Modulars/Home/Controllers/HomeViewController.swift
  17. 13 0
      JiaPeiManage/Sources/Modulars/Home/Controllers/HomeViewController.xib
  18. 13 2
      JiaPeiManage/Sources/Modulars/Login/Controllers/LoginViewController.xib
  19. 2 0
      JiaPeiManage/Sources/Modulars/Mine/Controllers/MineViewController.swift
  20. 1 0
      JiaPeiManage/Sources/Modulars/Mine/Controllers/MineViewController.xib
  21. 2 0
      JiaPeiManage/Sources/Modulars/Mine/Controllers/UpdatePasswordViewController.swift
  22. 1 0
      JiaPeiManage/Sources/Modulars/Mine/Controllers/UpdatePasswordViewController.xib
  23. 113 2
      JiaPeiManage/Sources/Modulars/Statistics/Controllers/StatisticsPageController.swift
  24. 0 25
      JiaPeiManage/Sources/Modulars/Statistics/Controllers/StatisticsPageController.xib
  25. 19 0
      JiaPeiManage/Sources/Modulars/Statistics/Views/StatisticsPageCell.swift
  26. 53 0
      JiaPeiManage/Sources/Modulars/Statistics/Views/StatisticsPageCell.xib
  27. 65 0
      JiaPeiManage/Sources/Modulars/Statistics/Views/StatisticsPageHeaderView.swift
  28. 316 0
      JiaPeiManage/Sources/Modulars/Statistics/Views/StatisticsPageHeaderView.xib
  29. 0 4
      JiaPeiManage/Sources/Modulars/学员/Controllers/MeTraineeListViewController.swift
  30. 3 14
      JiaPeiManage/Sources/Modulars/学员/Controllers/MeTraineeSearchPageViewController.swift
  31. 1 0
      JiaPeiManage/Sources/Modulars/学员/Controllers/MeTraineeSearchPageViewController.xib
  32. 1 1
      JiaPeiManage/Sources/Modulars/学员/Views/MeTraineeSubjectCell.swift
  33. 4 5
      JiaPeiManage/Sources/Services/StatisticsAPI.swift
  34. 4 4
      JiaPeiManage/Sources/Services/StatisticsService.swift
  35. 28 0
      JiaPeiManage/Sources/Thirdparty/GJRatioAutoLayout/GJRatioAutoLayout.h
  36. 38 0
      JiaPeiManage/Sources/Thirdparty/GJRatioAutoLayout/GJRatioAutoLayout.m
  37. 14 0
      JiaPeiManage/Sources/Thirdparty/GJRatioAutoLayout/GJRatioAutoLayoutDefine.h
  38. 13 0
      JiaPeiManage/Sources/Thirdparty/GJRatioAutoLayout/UILabel+GJRatioAutoLayout.h
  39. 79 0
      JiaPeiManage/Sources/Thirdparty/GJRatioAutoLayout/UILabel+GJRatioAutoLayout.m
  40. 20 0
      JiaPeiManage/Sources/Thirdparty/GJRatioAutoLayout/UIView+GJRatioAutoLayout.h
  41. 164 0
      JiaPeiManage/Sources/Thirdparty/GJRatioAutoLayout/UIView+GJRatioAutoLayout.m
  42. 2 1
      JiaPeiManage/Sources/Utils/URLNavigationMap.swift

+ 65 - 25
JiaPeiManage.xcodeproj/project.pbxproj

@@ -40,8 +40,16 @@
 		90971E6D2A4979D000267B7F /* StatisticsAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90971E6C2A4979D000267B7F /* StatisticsAPI.swift */; };
 		90971E6F2A4979F300267B7F /* StatisticsService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90971E6E2A4979F300267B7F /* StatisticsService.swift */; };
 		90971E742A498C4C00267B7F /* StatisticsPageController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90971E732A498C4C00267B7F /* StatisticsPageController.swift */; };
-		90971E762A498C9C00267B7F /* StatisticsPageController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 90971E752A498C9C00267B7F /* StatisticsPageController.xib */; };
 		90971E782A499BF200267B7F /* StuCountDataModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90971E772A499BF200267B7F /* StuCountDataModel.swift */; };
+		90971E7F2A4A7F4900267B7F /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 90971E7D2A4A7F4800267B7F /* Main.storyboard */; };
+		90971E802A4A7F4900267B7F /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90971E7E2A4A7F4900267B7F /* ViewController.swift */; };
+		90971E8D2A4A87EF00267B7F /* UILabel+GJRatioAutoLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 90971E832A4A87EF00267B7F /* UILabel+GJRatioAutoLayout.m */; };
+		90971E8E2A4A87EF00267B7F /* GJRatioAutoLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 90971E882A4A87EF00267B7F /* GJRatioAutoLayout.m */; };
+		90971E8F2A4A87EF00267B7F /* UIView+GJRatioAutoLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 90971E892A4A87EF00267B7F /* UIView+GJRatioAutoLayout.m */; };
+		90971E922A4AB07B00267B7F /* StatisticsPageHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90971E912A4AB07B00267B7F /* StatisticsPageHeaderView.swift */; };
+		90971E942A4AB18D00267B7F /* StatisticsPageHeaderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 90971E932A4AB18D00267B7F /* StatisticsPageHeaderView.xib */; };
+		90971E962A4AB1F400267B7F /* StatisticsPageCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90971E952A4AB1F400267B7F /* StatisticsPageCell.swift */; };
+		90971E982A4AB20600267B7F /* StatisticsPageCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 90971E972A4AB20600267B7F /* StatisticsPageCell.xib */; };
 		909DA5C12A3999B30034501F /* NYTips.swift in Sources */ = {isa = PBXBuildFile; fileRef = 909DA5C02A3999B30034501F /* NYTips.swift */; };
 		909DA5C32A3A01220034501F /* CoachcityModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 909DA5C22A3A01220034501F /* CoachcityModel.swift */; };
 		909DA5C52A3AA1E60034501F /* MeTraineeNavBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 909DA5C42A3AA1E60034501F /* MeTraineeNavBar.swift */; };
@@ -60,8 +68,6 @@
 		90BC4BE52A3DDF33006FD683 /* MeTraineeSubjectHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90BC4BE42A3DDF33006FD683 /* MeTraineeSubjectHeaderView.swift */; };
 		90BC4BE72A3DDF44006FD683 /* MeTraineeSubjectHeaderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 90BC4BE62A3DDF44006FD683 /* MeTraineeSubjectHeaderView.xib */; };
 		90CE52192A36C0710033BD06 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90CE52182A36C0710033BD06 /* AppDelegate.swift */; };
-		90CE521D2A36C0710033BD06 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90CE521C2A36C0710033BD06 /* ViewController.swift */; };
-		90CE52202A36C0710033BD06 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 90CE521E2A36C0710033BD06 /* Main.storyboard */; };
 		90CE52222A36C0720033BD06 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 90CE52212A36C0720033BD06 /* Assets.xcassets */; };
 		90CE52252A36C0720033BD06 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 90CE52232A36C0720033BD06 /* LaunchScreen.storyboard */; };
 		90CE52322A36E4600033BD06 /* BaseCollectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90CE522F2A36E4600033BD06 /* BaseCollectionViewController.swift */; };
@@ -192,8 +198,20 @@
 		90971E6C2A4979D000267B7F /* StatisticsAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatisticsAPI.swift; sourceTree = "<group>"; };
 		90971E6E2A4979F300267B7F /* StatisticsService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatisticsService.swift; sourceTree = "<group>"; };
 		90971E732A498C4C00267B7F /* StatisticsPageController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatisticsPageController.swift; sourceTree = "<group>"; };
-		90971E752A498C9C00267B7F /* StatisticsPageController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = StatisticsPageController.xib; sourceTree = "<group>"; };
 		90971E772A499BF200267B7F /* StuCountDataModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StuCountDataModel.swift; sourceTree = "<group>"; };
+		90971E7D2A4A7F4800267B7F /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = "<group>"; };
+		90971E7E2A4A7F4900267B7F /* ViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
+		90971E832A4A87EF00267B7F /* UILabel+GJRatioAutoLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UILabel+GJRatioAutoLayout.m"; sourceTree = "<group>"; };
+		90971E842A4A87EF00267B7F /* GJRatioAutoLayoutDefine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GJRatioAutoLayoutDefine.h; sourceTree = "<group>"; };
+		90971E852A4A87EF00267B7F /* GJRatioAutoLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GJRatioAutoLayout.h; sourceTree = "<group>"; };
+		90971E862A4A87EF00267B7F /* UIView+GJRatioAutoLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+GJRatioAutoLayout.h"; sourceTree = "<group>"; };
+		90971E872A4A87EF00267B7F /* UILabel+GJRatioAutoLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UILabel+GJRatioAutoLayout.h"; sourceTree = "<group>"; };
+		90971E882A4A87EF00267B7F /* GJRatioAutoLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GJRatioAutoLayout.m; sourceTree = "<group>"; };
+		90971E892A4A87EF00267B7F /* UIView+GJRatioAutoLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+GJRatioAutoLayout.m"; sourceTree = "<group>"; };
+		90971E912A4AB07B00267B7F /* StatisticsPageHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatisticsPageHeaderView.swift; sourceTree = "<group>"; };
+		90971E932A4AB18D00267B7F /* StatisticsPageHeaderView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = StatisticsPageHeaderView.xib; sourceTree = "<group>"; };
+		90971E952A4AB1F400267B7F /* StatisticsPageCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatisticsPageCell.swift; sourceTree = "<group>"; };
+		90971E972A4AB20600267B7F /* StatisticsPageCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = StatisticsPageCell.xib; sourceTree = "<group>"; };
 		909DA5C02A3999B30034501F /* NYTips.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTips.swift; sourceTree = "<group>"; };
 		909DA5C22A3A01220034501F /* CoachcityModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoachcityModel.swift; sourceTree = "<group>"; };
 		909DA5C42A3AA1E60034501F /* MeTraineeNavBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MeTraineeNavBar.swift; sourceTree = "<group>"; };
@@ -213,8 +231,6 @@
 		90BC4BE62A3DDF44006FD683 /* MeTraineeSubjectHeaderView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MeTraineeSubjectHeaderView.xib; sourceTree = "<group>"; };
 		90CE52152A36C0700033BD06 /* JiaPeiManage.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = JiaPeiManage.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		90CE52182A36C0710033BD06 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
-		90CE521C2A36C0710033BD06 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
-		90CE521F2A36C0710033BD06 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
 		90CE52212A36C0720033BD06 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
 		90CE52242A36C0720033BD06 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
 		90CE52262A36C0720033BD06 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
@@ -414,6 +430,8 @@
 		9076C5DD2A38745500E5E33F /* App */ = {
 			isa = PBXGroup;
 			children = (
+				90971E7D2A4A7F4800267B7F /* Main.storyboard */,
+				90971E7E2A4A7F4900267B7F /* ViewController.swift */,
 				90CE52182A36C0710033BD06 /* AppDelegate.swift */,
 				90CE52DB2A36E6250033BD06 /* CompositionRoot.swift */,
 				90CE52DA2A36E6250033BD06 /* NYAppCongfigure.swift */,
@@ -424,8 +442,8 @@
 		90971E702A498A2000267B7F /* Statistics */ = {
 			isa = PBXGroup;
 			children = (
-				90971E722A498A3E00267B7F /* Controllers */,
 				90971E712A498A3700267B7F /* Views */,
+				90971E722A498A3E00267B7F /* Controllers */,
 			);
 			path = Statistics;
 			sourceTree = "<group>";
@@ -433,6 +451,10 @@
 		90971E712A498A3700267B7F /* Views */ = {
 			isa = PBXGroup;
 			children = (
+				90971E912A4AB07B00267B7F /* StatisticsPageHeaderView.swift */,
+				90971E932A4AB18D00267B7F /* StatisticsPageHeaderView.xib */,
+				90971E952A4AB1F400267B7F /* StatisticsPageCell.swift */,
+				90971E972A4AB20600267B7F /* StatisticsPageCell.xib */,
 			);
 			path = Views;
 			sourceTree = "<group>";
@@ -441,11 +463,32 @@
 			isa = PBXGroup;
 			children = (
 				90971E732A498C4C00267B7F /* StatisticsPageController.swift */,
-				90971E752A498C9C00267B7F /* StatisticsPageController.xib */,
 			);
 			path = Controllers;
 			sourceTree = "<group>";
 		};
+		90971E812A4A87EF00267B7F /* Thirdparty */ = {
+			isa = PBXGroup;
+			children = (
+				90971E822A4A87EF00267B7F /* GJRatioAutoLayout */,
+			);
+			path = Thirdparty;
+			sourceTree = "<group>";
+		};
+		90971E822A4A87EF00267B7F /* GJRatioAutoLayout */ = {
+			isa = PBXGroup;
+			children = (
+				90971E832A4A87EF00267B7F /* UILabel+GJRatioAutoLayout.m */,
+				90971E842A4A87EF00267B7F /* GJRatioAutoLayoutDefine.h */,
+				90971E852A4A87EF00267B7F /* GJRatioAutoLayout.h */,
+				90971E862A4A87EF00267B7F /* UIView+GJRatioAutoLayout.h */,
+				90971E872A4A87EF00267B7F /* UILabel+GJRatioAutoLayout.h */,
+				90971E882A4A87EF00267B7F /* GJRatioAutoLayout.m */,
+				90971E892A4A87EF00267B7F /* UIView+GJRatioAutoLayout.m */,
+			);
+			path = GJRatioAutoLayout;
+			sourceTree = "<group>";
+		};
 		90BC4BDA2A3C2541006FD683 /* RefreshHeaderAnimation */ = {
 			isa = PBXGroup;
 			children = (
@@ -476,8 +519,6 @@
 			isa = PBXGroup;
 			children = (
 				90CE522C2A36E3C20033BD06 /* Sources */,
-				90CE521C2A36C0710033BD06 /* ViewController.swift */,
-				90CE521E2A36C0710033BD06 /* Main.storyboard */,
 				90CE52212A36C0720033BD06 /* Assets.xcassets */,
 				90CE52232A36C0720033BD06 /* LaunchScreen.storyboard */,
 				90CE52262A36C0720033BD06 /* Info.plist */,
@@ -489,6 +530,7 @@
 		90CE522C2A36E3C20033BD06 /* Sources */ = {
 			isa = PBXGroup;
 			children = (
+				90971E812A4A87EF00267B7F /* Thirdparty */,
 				90CE52C02A36E5EC0033BD06 /* Rx */,
 				90CE52BF2A36E5D80033BD06 /* Services */,
 				90CE523C2A36E4FD0033BD06 /* Models */,
@@ -948,6 +990,7 @@
 			buildActionMask = 2147483647;
 			files = (
 				903628D02A41AF3100F0AA6C /* MeTraineeDetails02HeaderView.xib in Resources */,
+				90971E7F2A4A7F4900267B7F /* Main.storyboard in Resources */,
 				90CE52842A36E5460033BD06 /* SearchBarView.xib in Resources */,
 				90CE52F52A36EDCF0033BD06 /* NYArticleNavBar.xib in Resources */,
 				908FEEA12A42CC1E00BEB81C /* MeTraineeDetails04Cell.xib in Resources */,
@@ -957,9 +1000,9 @@
 				90CE528A2A36E5460033BD06 /* PopOverViewCell.xib in Resources */,
 				909DA5D12A3AC2460034501F /* UpdatePasswordViewController.xib in Resources */,
 				90CE52222A36C0720033BD06 /* Assets.xcassets in Resources */,
+				90971E942A4AB18D00267B7F /* StatisticsPageHeaderView.xib in Resources */,
 				9076C5DC2A386B2F00E5E33F /* MineViewController.xib in Resources */,
 				903628C82A417B2D00F0AA6C /* MeTraineeDetails01Cell.xib in Resources */,
-				90CE52202A36C0710033BD06 /* Main.storyboard in Resources */,
 				90CE52EB2A36E8680033BD06 /* LoginViewController.xib in Resources */,
 				909DA5D52A3AE0160034501F /* MeTraineeSubjectCell.xib in Resources */,
 				908FEE9D2A42CA3F00BEB81C /* MeTraineeDetails04HeaderView.xib in Resources */,
@@ -971,7 +1014,7 @@
 				903628D42A41AFD700F0AA6C /* MeTraineeDetails02Cell.xib in Resources */,
 				903628CC2A417BE700F0AA6C /* MeTraineeDetails01HeaderView.xib in Resources */,
 				909DA5C72A3AA1FF0034501F /* MeTraineeNavBar.xib in Resources */,
-				90971E762A498C9C00267B7F /* StatisticsPageController.xib in Resources */,
+				90971E982A4AB20600267B7F /* StatisticsPageCell.xib in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -1058,6 +1101,7 @@
 				90CE52DD2A36E6250033BD06 /* CompositionRoot.swift in Sources */,
 				90CE52BE2A36E5B70033BD06 /* RequestError.swift in Sources */,
 				90CE52342A36E4600033BD06 /* BaseTableViewController.swift in Sources */,
+				90971E962A4AB1F400267B7F /* StatisticsPageCell.swift in Sources */,
 				90CE52892A36E5460033BD06 /* PopOverViewCell.swift in Sources */,
 				90CE52332A36E4600033BD06 /* BaseViewController.swift in Sources */,
 				90CE52A32A36E59A0033BD06 /* UIImageView+Kingfisher.swift in Sources */,
@@ -1089,7 +1133,6 @@
 				90CE52B12A36E59A0033BD06 /* VTContentView+Gesture.swift in Sources */,
 				90CE52722A36E5460033BD06 /* LWPlayer.swift in Sources */,
 				909DA5C52A3AA1E60034501F /* MeTraineeNavBar.swift in Sources */,
-				90CE521D2A36C0710033BD06 /* ViewController.swift in Sources */,
 				909DA5C92A3ABEFF0034501F /* MeTraineeSubjectPageViewController.swift in Sources */,
 				90CE53042A3834360033BD06 /* CoachService.swift in Sources */,
 				908FEEA52A42D62A00BEB81C /* StuTmsSignDataModel.swift in Sources */,
@@ -1098,6 +1141,7 @@
 				90CE52E12A36E73A0033BD06 /* SplashModel.swift in Sources */,
 				908FEEAF2A42FA4F00BEB81C /* StuLogFacDataModel.swift in Sources */,
 				90CE52862A36E5460033BD06 /* EmptyView.swift in Sources */,
+				90971E802A4A7F4900267B7F /* ViewController.swift in Sources */,
 				90CE52452A36E5170033BD06 /* NYFitReal.swift in Sources */,
 				90CE52A52A36E59A0033BD06 /* UIButton+Kingfisher.swift in Sources */,
 				90CE52B02A36E59A0033BD06 /* NSAttributedString+BoundingRect.swift in Sources */,
@@ -1106,10 +1150,12 @@
 				90CE52FE2A36F6DB0033BD06 /* HomeViewController.swift in Sources */,
 				90CE52732A36E5460033BD06 /* LWPlayerView.swift in Sources */,
 				903628C62A417B1D00F0AA6C /* MeTraineeDetails01Cell.swift in Sources */,
+				90971E8E2A4A87EF00267B7F /* GJRatioAutoLayout.m in Sources */,
 				90CE52442A36E5170033BD06 /* NYMacros.swift in Sources */,
 				90CE52192A36C0710033BD06 /* AppDelegate.swift in Sources */,
 				909DA5C32A3A01220034501F /* CoachcityModel.swift in Sources */,
 				909DA5C12A3999B30034501F /* NYTips.swift in Sources */,
+				90971E8D2A4A87EF00267B7F /* UILabel+GJRatioAutoLayout.m in Sources */,
 				90CE52432A36E5170033BD06 /* NYFont.swift in Sources */,
 				90CE52ED2A36EBE80033BD06 /* UserInfoModel.swift in Sources */,
 				908FEEAB2A42E21900BEB81C /* MeTraineeDetails03Cell.swift in Sources */,
@@ -1134,6 +1180,7 @@
 				90CE52822A36E5460033BD06 /* GesConflictCollectionView.swift in Sources */,
 				90971E742A498C4C00267B7F /* StatisticsPageController.swift in Sources */,
 				90CE523A2A36E4720033BD06 /* MainTabBarViewReactor.swift in Sources */,
+				90971E922A4AB07B00267B7F /* StatisticsPageHeaderView.swift in Sources */,
 				909DA5D32A3ADFD80034501F /* MeTraineeSubjectCell.swift in Sources */,
 				90CE52BD2A36E5B70033BD06 /* NetEnvironment.swift in Sources */,
 				90971E692A493BCB00267B7F /* MeTabBarController.swift in Sources */,
@@ -1159,6 +1206,7 @@
 				90CE52DC2A36E6250033BD06 /* NYAppCongfigure.swift in Sources */,
 				90CE52322A36E4600033BD06 /* BaseCollectionViewController.swift in Sources */,
 				903628CE2A41AF1500F0AA6C /* MeTraineeDetails02HeaderView.swift in Sources */,
+				90971E8F2A4A87EF00267B7F /* UIView+GJRatioAutoLayout.m in Sources */,
 				90CE52872A36E5460033BD06 /* NetAnimationView.swift in Sources */,
 				903628BE2A41766B00F0AA6C /* MeTraineeDetails01Controller.swift in Sources */,
 				90971E6F2A4979F300267B7F /* StatisticsService.swift in Sources */,
@@ -1169,14 +1217,6 @@
 /* End PBXSourcesBuildPhase section */
 
 /* Begin PBXVariantGroup section */
-		90CE521E2A36C0710033BD06 /* Main.storyboard */ = {
-			isa = PBXVariantGroup;
-			children = (
-				90CE521F2A36C0710033BD06 /* Base */,
-			);
-			name = Main.storyboard;
-			sourceTree = "<group>";
-		};
 		90CE52232A36C0720033BD06 /* LaunchScreen.storyboard */ = {
 			isa = PBXVariantGroup;
 			children = (
@@ -1315,9 +1355,9 @@
 				INFOPLIST_FILE = JiaPeiManage/Info.plist;
 				INFOPLIST_KEY_CFBundleDisplayName = "教练管家";
 				INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
-				INFOPLIST_KEY_UILaunchStoryboardName = Main.storyboard;
+				INFOPLIST_KEY_UILaunchStoryboardName = "";
 				INFOPLIST_KEY_UIMainStoryboardFile = Main;
-				INFOPLIST_KEY_UIRequiresFullScreen = YES;
+				INFOPLIST_KEY_UIRequiresFullScreen = NO;
 				INFOPLIST_KEY_UIStatusBarStyle = UIStatusBarStyleLightContent;
 				INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
 				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
@@ -1352,9 +1392,9 @@
 				INFOPLIST_FILE = JiaPeiManage/Info.plist;
 				INFOPLIST_KEY_CFBundleDisplayName = "教练管家";
 				INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
-				INFOPLIST_KEY_UILaunchStoryboardName = Main.storyboard;
+				INFOPLIST_KEY_UILaunchStoryboardName = "";
 				INFOPLIST_KEY_UIMainStoryboardFile = Main;
-				INFOPLIST_KEY_UIRequiresFullScreen = YES;
+				INFOPLIST_KEY_UIRequiresFullScreen = NO;
 				INFOPLIST_KEY_UIStatusBarStyle = UIStatusBarStyleLightContent;
 				INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
 				IPHONEOS_DEPLOYMENT_TARGET = 12.0;

+ 23 - 0
JiaPeiManage/Assets.xcassets/Modules/Common/btn_arrow_gray.imageset/Contents.json

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

BIN
JiaPeiManage/Assets.xcassets/Modules/Common/btn_arrow_gray.imageset/btn_arrow_gray.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Common/btn_arrow_gray.imageset/btn_arrow_gray@2x.png


BIN
JiaPeiManage/Assets.xcassets/Modules/Common/btn_arrow_gray.imageset/btn_arrow_gray@3x.png


+ 0 - 14
JiaPeiManage/Info.plist

@@ -11,20 +11,6 @@
 	<dict>
 		<key>UIApplicationSupportsMultipleScenes</key>
 		<false/>
-		<key>UISceneConfigurations</key>
-		<dict>
-			<key>UIWindowSceneSessionRoleApplication</key>
-			<array>
-				<dict>
-					<key>UISceneConfigurationName</key>
-					<string>Default Configuration</string>
-					<key>UISceneDelegateClassName</key>
-					<string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
-					<key>UISceneStoryboardFile</key>
-					<string>Main</string>
-				</dict>
-			</array>
-		</dict>
 	</dict>
 	<key>UIViewControllerBasedStatusBarAppearance</key>
 	<false/>

+ 1 - 0
JiaPeiManage/JSJP-Brigding-Header.h

@@ -9,6 +9,7 @@
 #define JSJP_Brigding_Header_h
 
 //第三方
+#import "GJRatioAutoLayout.h"
 #import "VTMagic.h"
 #import <QMUIKit/QMUIKit.h>
 #import <SDWebImage/SDWebImage.h>

+ 11 - 0
JiaPeiManage/Sources/Extensions/UIColor+NY.swift

@@ -32,4 +32,15 @@ extension UIColor {
     class var db_fontDefRegular: UIColor { return UIColor("#B6C1CC")! }
     class var db_fontDef: UIColor { return UIColor("#B6C1CC")! }
     
+    // 辅助函数,用于生成指定颜色的图片
+    static func imageWithColor(_ color: UIColor) -> UIImage {
+        let rect = CGRect(x: 0, y: 0, width: 1, height: 1)
+        UIGraphicsBeginImageContext(rect.size)
+        let context = UIGraphicsGetCurrentContext()
+        context?.setFillColor(color.cgColor)
+        context?.fill(rect)
+        let image = UIGraphicsGetImageFromCurrentImageContext()!
+        UIGraphicsEndImageContext()
+        return image
+    }
 }

+ 2 - 0
JiaPeiManage/Sources/Main/App/AppDelegate.swift

@@ -14,6 +14,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
     
     var dependency: NYAppDependency!
     
+    // MARK: UI
+    
     var window: UIWindow?
 
     // MARK: UIApplicationDelegate

+ 16 - 15
JiaPeiManage/Sources/Main/App/CompositionRoot.swift

@@ -91,26 +91,27 @@ final class CompositionRoot {
 
         //ToastView
         ToastView.appearance().font = NYFont.SysFont.sys_15
-//        ToastView.appearance().textColor = UIColor.db_white
         
+        //配置全局GJRatioAutoLayout
+        GJRatioAutoLayout.start(with: GJScreenSizeType.typeiPhone6)
     }
     
     static func configureUserAgent() {
         
-//        let webView = WKWebView(frame: .zero)
-//        webView.evaluateJavaScript("navigator.userAgent") { (oldAgent, error) in
-//
-//            guard let oldAgent = oldAgent as? String else { return }
-//
-//            let newAgent = "\(oldAgent) BiliApp/StudioApp/6560"
-//            let newAgentDic = ["UserAgent":newAgent]
-//            UserDefaults.standard.register(defaults: newAgentDic)
-//            if #available(iOS 9.0, *) {
-//                //局部更新,即可以在其他用到的webView页面重新修改userAgent
-//                webView.customUserAgent = newAgent
-//            }
-//        }
-//        webView.load(URLRequest(url: URL(string:"http//www.baidu.com")!))
+        let webView = WKWebView(frame: .zero)
+        webView.evaluateJavaScript("navigator.userAgent") { (oldAgent, error) in
+
+            guard let oldAgent = oldAgent as? String else { return }
+
+            let newAgent = "\(oldAgent) BiliApp/StudioApp/6560"
+            let newAgentDic = ["UserAgent":newAgent]
+            UserDefaults.standard.register(defaults: newAgentDic)
+            if #available(iOS 9.0, *) {
+                //局部更新,即可以在其他用到的webView页面重新修改userAgent
+                webView.customUserAgent = newAgent
+            }
+        }
+        webView.load(URLRequest(url: URL(string:"http//www.baidu.com")!))
     }
     
     static func congigurePerformance() {

+ 0 - 0
JiaPeiManage/Base.lproj/Main.storyboard → JiaPeiManage/Sources/Main/App/Main.storyboard


+ 0 - 0
JiaPeiManage/ViewController.swift → JiaPeiManage/Sources/Main/App/ViewController.swift


+ 7 - 0
JiaPeiManage/Sources/Main/Base/BaseViewController.swift

@@ -14,6 +14,13 @@ import RxDataSources
 
 class BaseViewController: UIViewController, NetAnimationLoadable {
 
+    public struct Metric {
+        static let statusBarHeight = isIphoneX ? 44.f : 20.f
+        static let navBarHeight = 44.f
+    }
+    
+    @IBOutlet weak var nav_top_layout: NSLayoutConstraint!
+    
     // MARK: Properties
     lazy private(set) var className: String = {
         return type(of: self).description().components(separatedBy: ".").last ?? ""

+ 1 - 1
JiaPeiManage/Sources/Main/MainNavigationController.swift

@@ -13,7 +13,7 @@ final class MainNavigationController: UINavigationController {
 
     override func viewDidLoad() {
         super.viewDidLoad()
-        
+        self.modalPresentationStyle = .fullScreen
         self.interactivePopGestureRecognizer?.delegate = self
         
         self.navigationBar.setBackgroundImage(UIImage.size(CGSize(width: 1, height: 1)).color(UIColor.white).image, for: .default)

+ 23 - 0
JiaPeiManage/Sources/Models/StuCountDataModel.swift

@@ -45,3 +45,26 @@ struct StuCountDataModel : ImmutableMappable{
     }
     
 }
+
+
+struct StuTotalCountDataModel : ImmutableMappable{
+    
+    var day : Int!
+    var lastMonth : Int!
+    var lastYear : Int!
+    var month : Int!
+    var yday : Int!
+    var year : Int!
+    var yesterday : Int!
+    
+    init(map: Map) throws {
+        day = try map.value("day") ?? 0
+        lastMonth = try map.value("lastMonth") ?? 0
+        lastYear = try map.value("lastYear") ?? 0
+        month = try map.value("month") ?? 0
+        yday = try map.value("yday") ?? 0
+        year = try map.value("year") ?? 0
+        yesterday = try map.value("yesterday") ?? 0
+    }
+    
+}

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

@@ -12,6 +12,7 @@ import SwiftyUserDefaults
 final class HomeViewController: BaseViewController {
     
     // MARK: UI属性
+//    @IBOutlet weak var nav_top_layout: NSLayoutConstraint!
     //去查看-我的学员
     @IBOutlet weak var meStu_button: QMUIButton!
     //我的学员-action-btn
@@ -41,6 +42,7 @@ final class HomeViewController: BaseViewController {
     
     // MARK: 私有方法
     func setupUI(){
+        if isIphoneX {self.nav_top_layout.constant = 24.f}
         self.view.backgroundColor = .db_theme
         self.meStu_button.imagePosition = .right
         self.meStu_button.spacingBetweenImageAndTitle = 5

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

@@ -16,6 +16,7 @@
                 <outlet property="meStuAction_button" destination="8jf-BA-Yzd" id="k8a-Kx-85C"/>
                 <outlet property="meStu_button" destination="cfT-vy-eYx" id="ccD-4b-eRr"/>
                 <outlet property="mineAction_button" destination="TyX-PE-eAC" id="tdO-ZH-BaX"/>
+                <outlet property="nav_top_layout" destination="6oc-Km-9y0" id="SXv-7D-0iF"/>
                 <outlet property="onSchoolAction_button" destination="Ehd-Fh-nTl" id="c0W-so-udo"/>
                 <outlet property="statisticsAction_button" destination="eXQ-8z-Gss" id="JYq-jv-0C5"/>
                 <outlet property="view" destination="iN0-l3-epB" id="9Zg-Y9-fOO"/>
@@ -46,6 +47,9 @@
                         <constraint firstAttribute="height" constant="64" id="RU9-lt-T1g"/>
                         <constraint firstItem="Mvu-fZ-0Ph" firstAttribute="centerX" secondItem="6ni-iZ-qH4" secondAttribute="centerX" id="bNz-9c-ctQ"/>
                     </constraints>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="boolean" keyPath="aLRatio" value="YES"/>
+                    </userDefinedRuntimeAttributes>
                 </view>
                 <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="0wI-Nl-SU4">
                     <rect key="frame" x="0.0" y="64" width="375" height="748"/>
@@ -400,6 +404,9 @@
                                 <constraint firstItem="BOF-BH-jPr" firstAttribute="leading" secondItem="ire-nL-N9x" secondAttribute="leading" constant="15" id="uwz-ze-hjL"/>
                                 <constraint firstItem="obS-bj-agt" firstAttribute="leading" secondItem="ire-nL-N9x" secondAttribute="leading" id="xez-sG-l5Q"/>
                             </constraints>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="boolean" keyPath="aLRatio" value="YES"/>
+                            </userDefinedRuntimeAttributes>
                         </view>
                     </subviews>
                     <constraints>
@@ -409,6 +416,9 @@
                         <constraint firstItem="ire-nL-N9x" firstAttribute="top" secondItem="0wI-Nl-SU4" secondAttribute="top" id="Pde-mh-NXM"/>
                         <constraint firstItem="ire-nL-N9x" firstAttribute="centerX" secondItem="0wI-Nl-SU4" secondAttribute="centerX" id="j6a-Jx-o1s"/>
                     </constraints>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="boolean" keyPath="aLRatio" value="YES"/>
+                    </userDefinedRuntimeAttributes>
                 </scrollView>
             </subviews>
             <viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/>
@@ -422,6 +432,9 @@
                 <constraint firstItem="0wI-Nl-SU4" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" id="tG0-Gi-GAs"/>
                 <constraint firstAttribute="bottom" secondItem="0wI-Nl-SU4" secondAttribute="bottom" id="vOl-2d-Bdf"/>
             </constraints>
+            <userDefinedRuntimeAttributes>
+                <userDefinedRuntimeAttribute type="boolean" keyPath="aLRatio" value="YES"/>
+            </userDefinedRuntimeAttributes>
             <point key="canvasLocation" x="32.799999999999997" y="-12.561576354679804"/>
         </view>
     </objects>

+ 13 - 2
JiaPeiManage/Sources/Modulars/Login/Controllers/LoginViewController.xib

@@ -33,12 +33,15 @@
                     <constraints>
                         <constraint firstAttribute="height" constant="113" id="AKq-wQ-dKb"/>
                     </constraints>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="boolean" keyPath="aLRatio" value="YES"/>
+                    </userDefinedRuntimeAttributes>
                 </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"/>
+                            <rect key="frame" x="28" y="290" 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"/>
@@ -51,6 +54,7 @@
                                 <userDefinedRuntimeAttribute type="number" keyPath="borderWidth">
                                     <real key="value" value="0.0"/>
                                 </userDefinedRuntimeAttribute>
+                                <userDefinedRuntimeAttribute type="boolean" keyPath="aLRatio" value="YES"/>
                             </userDefinedRuntimeAttributes>
                         </button>
                         <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="wQT-0A-9II" userLabel="View-input">
@@ -193,7 +197,7 @@
                         <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="bottom" secondItem="QFo-KM-CGQ" secondAttribute="bottom" constant="45" 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"/>
@@ -207,6 +211,7 @@
                         <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
                             <real key="value" value="5"/>
                         </userDefinedRuntimeAttribute>
+                        <userDefinedRuntimeAttribute type="boolean" keyPath="aLRatio" value="YES"/>
                     </userDefinedRuntimeAttributes>
                 </view>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="VtF-yH-Ucb">
@@ -272,6 +277,9 @@
                         <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>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="boolean" keyPath="aLRatio" value="YES"/>
+                    </userDefinedRuntimeAttributes>
                 </view>
             </subviews>
             <viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/>
@@ -286,6 +294,9 @@
                 <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>
+            <userDefinedRuntimeAttributes>
+                <userDefinedRuntimeAttribute type="boolean" keyPath="aLRatio" value="YES"/>
+            </userDefinedRuntimeAttributes>
             <point key="canvasLocation" x="32.799999999999997" y="-12.561576354679804"/>
         </view>
     </objects>

+ 2 - 0
JiaPeiManage/Sources/Modulars/Mine/Controllers/MineViewController.swift

@@ -16,6 +16,7 @@ final class MineViewController: BaseViewController {
     private let cocahService: CoachServiceType = CoachService(networking: CoachNetworking())
     
     // MARK: UI属性
+//    @IBOutlet weak var nav_top_layout: NSLayoutConstraint!
     //修改密码
     @IBOutlet weak var update_password_button: QMUIButton!
     //用户头像
@@ -52,6 +53,7 @@ final class MineViewController: BaseViewController {
     
     // MARK: 私有方法
     func setupUI(){
+        if isIphoneX {self.nav_top_layout.constant = 24.f}
         self.view.backgroundColor = .db_theme
         //跳修改密码
         update_password_button.rx.tap.subscribe ({  [unowned self] (_) in

+ 1 - 0
JiaPeiManage/Sources/Modulars/Mine/Controllers/MineViewController.xib

@@ -12,6 +12,7 @@
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="MineViewController" customModule="JiaPeiManage" customModuleProvider="target">
             <connections>
                 <outlet property="idcarid_label" destination="3jH-Zi-tbR" id="xIQ-BW-unT"/>
+                <outlet property="nav_top_layout" destination="P4U-4w-cMK" id="6EV-bT-hDK"/>
                 <outlet property="phone_label" destination="Rgf-bc-AwE" id="l0s-Ze-PAc"/>
                 <outlet property="quit_button" destination="1Zd-UI-9fQ" id="F6H-2Z-BKz"/>
                 <outlet property="school_address_label" destination="fJC-Qf-3Nv" id="C7z-R9-ERM"/>

+ 2 - 0
JiaPeiManage/Sources/Modulars/Mine/Controllers/UpdatePasswordViewController.swift

@@ -16,6 +16,7 @@ final class UpdatePasswordViewController: BaseViewController {
     private let loginService: LoginServiceType = LoginService(networking: LoginNetworking())
     
     // MARK: UI属性
+    
     @IBOutlet weak var old_password_textfield: QMUITextField!
     @IBOutlet weak var one_password_textfield: QMUITextField!
     @IBOutlet weak var two_password_textfield: QMUITextField!
@@ -35,6 +36,7 @@ final class UpdatePasswordViewController: BaseViewController {
     // MARK: 私有方法
     func setupUI(){
         self.view.backgroundColor = .db_theme
+        if isIphoneX {self.nav_top_layout.constant = 24.f}
         self.old_password_textfield.placeholderColor = .db_place
         self.one_password_textfield.placeholderColor = .db_place
         self.two_password_textfield.placeholderColor = .db_place

+ 1 - 0
JiaPeiManage/Sources/Modulars/Mine/Controllers/UpdatePasswordViewController.xib

@@ -11,6 +11,7 @@
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="UpdatePasswordViewController" customModule="JiaPeiManage" customModuleProvider="target">
             <connections>
                 <outlet property="confirm_button" destination="zvD-Ux-XOx" id="YKb-yY-sI3"/>
+                <outlet property="nav_top_layout" destination="CFE-rC-Os6" id="7ex-sh-9gc"/>
                 <outlet property="old_password_textfield" destination="rV6-hn-VK3" id="PfL-x4-Vco"/>
                 <outlet property="old_pwdshow_button" destination="Ko0-y8-PQF" id="8Ga-I3-bPM"/>
                 <outlet property="one_password_textfield" destination="0r9-mx-DVE" id="k3l-Eb-TdD"/>

+ 113 - 2
JiaPeiManage/Sources/Modulars/Statistics/Controllers/StatisticsPageController.swift

@@ -9,15 +9,56 @@ import UIKit
 import RxSwift
 import RxCocoa
 
-final class StatisticsPageController: BaseViewController {
 
+final class StatisticsPageController: BaseGroupTableViewController {
+
+    let cellIdentifier:String = "_StatisticsPageCell"
     // MARK: 服务属性
     private let statisticsService: StatisticsServiceType = StatisticsService(networking: StatisticsNetworking())
+    // MARK: UI let
+    let statusBar = UIView().then {
+        $0.backgroundColor = UIColor.db_theme
+    }
     
+    let navBar = MeTraineeNavBar.loadFromNib().then {
+        $0.title_label.text = "全部报名统计"
+    }
+    
+    let headerView = StatisticsPageHeaderView.loadFromNib().then {
+        $0.backgroundColor = .db_theme
+    }
+    
+    override func setupConstraints() {
+        
+        statusBar.snp.makeConstraints { (make) in
+            make.left.right.top.equalToSuperview()
+            make.height.equalTo(Metric.statusBarHeight)
+        }
+        
+        navBar.snp.remakeConstraints { (make) in
+            make.left.right.equalToSuperview()
+            make.height.equalTo(Metric.navBarHeight)
+            make.top.equalTo(statusBar.snp.bottom)
+        }
+        
+        tableView.snp.remakeConstraints { make in
+            make.top.equalTo(navBar.snp.bottom)
+            make.left.right.bottom.equalToSuperview()
+        }
+        
+    }
     override func viewDidLoad() {
         super.viewDidLoad()
+        setupUI()
+        biandView()
         
-        
+        self.statisticsService.statisticsStuCount(city: LocalManager.userInfo.city!, schoolId: LocalManager.userInfo.schoolId).subscribe(onSuccess: { stuTotalCountDataModel in
+            
+                print("成功%@",stuTotalCountDataModel)
+            
+            }, onError: { error in
+            })
+            .disposed(by: disposeBag)
         self.statisticsService.everyDayStuCountRequest(city: LocalManager.userInfo.city!, schoolId: LocalManager.userInfo.schoolId, startDate: "2023-06-25", endDate: "2023-06-26").subscribe(onSuccess: { stuCountDataModel in
             
 //            self.rows.removeAll()
@@ -33,4 +74,74 @@ final class StatisticsPageController: BaseViewController {
         .disposed(by: disposeBag)
     }
     
+    // MARK: 私有方法
+    func setupUI(){
+        self.view.addSubview(navBar)
+        self.view.addSubview(statusBar)
+        self.view.backgroundColor = .db_theme
+        self.navBar.back_button.addTarget(self, action: #selector(actionBackdo), for: .touchUpInside)
+        self.navBar.search_button.isHidden = true
+    }
+    func biandView(){
+        tableView.delegate = self
+        tableView.dataSource = self
+        tableView.separatorStyle = .none //去除分割线
+        tableView.register(UINib(nibName: "StatisticsPageCell", bundle: nil), forCellReuseIdentifier: cellIdentifier)
+        tableView.rowHeight = 44.f
+        tableView.contentInset = UIEdgeInsets(top: -25, left: 0, bottom: -25, right: 0)
+        setupRefreshHeader(tableView) {[unowned self] in
+//            self.getStuResultList()
+            self.stopRefresh()
+        }
+        self.isEmptyDisplay = false
+        self.hideLoadAnimation()
+        // 设置上拉加载更多
+//        tableView.es.addInfiniteScrolling { [weak self] in
+//            self?.getLoadMore()
+//        }
+    }
+    
+}
+
+
+//数据源
+extension StatisticsPageController:UITableViewDataSource {
+    
+    
+    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+//        if (rows.count>0){
+//            return rows.count
+//        }
+        return 10
+    }
+    
+    func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
+//        if(rows.count>0){
+//            let info = rows.first! as StuLogFacInfoModel
+//            header03_view.usertemplate_imageview.sd_setImage(with: info.sourceimg?.urlValue)
+//        }
+        return headerView
+    }
+    
+    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
+        return 352.f
+    }
+    
+    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
+        let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as! StatisticsPageCell
+        cell.contentView.backgroundColor = ((indexPath.row%2) != 0) ? UIColor("#113357") : UIColor("#0B2B4D")
+        cell.backgroundColor = ((indexPath.row%2) != 0) ? UIColor("#113357") : UIColor("#0B2B4D")
+//        let info = rows[indexPath.row] as StuLogFacInfoModel
+//        cell.stutime_label.text = info.crdate
+//        cell.user_imageview.sd_setImage(with: info.img?.urlValue)
+//        cell.similar_label.text = info.similar
+//        cell.phone_label.text = info.sim
+        return cell
+    }
+}
+
+//事件
+extension StatisticsPageController:UITableViewDelegate {
+
+    
 }

+ 0 - 25
JiaPeiManage/Sources/Modulars/Statistics/Controllers/StatisticsPageController.xib

@@ -1,25 +0,0 @@
-<?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="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="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
-    </dependencies>
-    <objects>
-        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="StatisticsPageController" customModule="JiaPeiManage" customModuleProvider="target">
-            <connections>
-                <outlet property="view" destination="iN0-l3-epB" id="dCx-tj-GFW"/>
-            </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="375" height="812"/>
-            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-            <viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/>
-            <color key="backgroundColor" red="0.043137254899999998" green="0.16862745100000001" blue="0.30196078430000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-            <point key="canvasLocation" x="66" y="-12"/>
-        </view>
-    </objects>
-</document>

+ 19 - 0
JiaPeiManage/Sources/Modulars/Statistics/Views/StatisticsPageCell.swift

@@ -0,0 +1,19 @@
+//
+//  StatisticsPageCell.swift
+//  JiaPeiManage
+//
+//  Created by Ning.ge on 2023/6/27.
+//
+
+final class StatisticsPageCell: UITableViewCell,NibLoadable {
+    
+    //日期
+    @IBOutlet weak var date_label: UILabel!
+    //数量
+    @IBOutlet weak var num_label: UILabel!
+    
+    override func awakeFromNib() {
+        super.awakeFromNib()
+        self.selectionStyle = .none
+    }
+}

+ 53 - 0
JiaPeiManage/Sources/Modulars/Statistics/Views/StatisticsPageCell.xib

@@ -0,0 +1,53 @@
+<?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="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="StatisticsPageCell" customModule="JiaPeiManage" customModuleProvider="target">
+            <rect key="frame" x="0.0" y="0.0" width="393" height="44"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="2023-05-23" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="kc7-fc-ECi">
+                    <rect key="frame" x="30" y="0.0" width="81" height="44"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="44" id="4SC-X7-vtx"/>
+                    </constraints>
+                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                    <color key="textColor" red="0.83137254900000002" green="0.86666666670000003" blue="0.90196078430000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    <nil key="highlightedColor"/>
+                </label>
+                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7P4-09-1J5">
+                    <rect key="frame" x="293" y="0.0" width="100" height="44"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="44" id="5KA-La-SAH"/>
+                        <constraint firstAttribute="width" constant="100" id="g8D-6G-r8I"/>
+                    </constraints>
+                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                    <color key="textColor" red="0.53725490196078429" green="0.56862745098039214" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    <nil key="highlightedColor"/>
+                </label>
+            </subviews>
+            <viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/>
+            <color key="backgroundColor" red="0.14901960780000001" green="0.28235294119999998" blue="0.41960784309999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+            <constraints>
+                <constraint firstItem="7P4-09-1J5" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="dMC-ZA-SIK"/>
+                <constraint firstItem="kc7-fc-ECi" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="eO4-5E-BMh"/>
+                <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="7P4-09-1J5" secondAttribute="trailing" id="lGa-fk-PlW"/>
+                <constraint firstItem="kc7-fc-ECi" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" constant="30" id="ydu-PS-ZWx"/>
+            </constraints>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <connections>
+                <outlet property="date_label" destination="kc7-fc-ECi" id="GPm-lW-OpR"/>
+                <outlet property="num_label" destination="7P4-09-1J5" id="mw6-wX-TJk"/>
+            </connections>
+            <point key="canvasLocation" x="55.725190839694655" y="-11.267605633802818"/>
+        </view>
+    </objects>
+</document>

+ 65 - 0
JiaPeiManage/Sources/Modulars/Statistics/Views/StatisticsPageHeaderView.swift

@@ -0,0 +1,65 @@
+//
+//  StatisticsPageHeaderView.swift
+//  JiaPeiManage
+//
+//  Created by Ning.ge on 2023/6/27.
+//
+
+final class StatisticsPageHeaderView: UIView,NibLoadable {
+    
+    //预报名
+    @IBOutlet weak var advanceday_num_label: UILabel!
+    //今日
+    @IBOutlet weak var today_num_label: UILabel!
+    //昨日
+    @IBOutlet weak var yesterday_num_label: UILabel!
+    //当月
+    @IBOutlet weak var thismonth_num_label: UILabel!
+    //上月
+    @IBOutlet weak var lastmonth_num_label: UILabel!
+    //今年
+    @IBOutlet weak var thisyear_num_label: UILabel!
+    //去年
+    @IBOutlet weak var lastyear_num_label: UILabel!
+    //日月年-selgment
+    @IBOutlet weak var items_date_segmented: UISegmentedControl!
+    //日前
+    @IBOutlet weak var date_section_button: QMUIButton!
+    //时间
+    @IBOutlet weak var time_button: QMUIButton!
+    //学员
+    @IBOutlet weak var student_button: QMUIButton!
+    
+    
+    override func awakeFromNib() {
+        super.awakeFromNib()
+        
+        self.date_section_button.imagePosition = .right
+        self.date_section_button.spacingBetweenImageAndTitle = 9.f
+        
+        
+      
+        if #available(iOS 13.0, *) {
+            items_date_segmented.selectedSegmentTintColor = UIColor("#35BF5E")
+            items_date_segmented.backgroundColor = UIColor("#0B424D")
+        } else {
+            // Fallback on earlier versions
+            items_date_segmented.setBackgroundImage(UIColor.imageWithColor(UIColor("#35BF5E")!), for: .selected, barMetrics: .default)
+            items_date_segmented.layer.masksToBounds = true
+            items_date_segmented.layer.cornerRadius = 6
+            // 去掉分割线
+            items_date_segmented.setDividerImage(UIImage(), forLeftSegmentState: .normal, rightSegmentState: .normal, barMetrics: .default)
+            let image = UIColor.imageWithColor(UIColor("#0B424D")!)
+            // 设置未选中背景色
+            items_date_segmented.setBackgroundImage(image, for: .normal, barMetrics: .default)
+        }
+        // 设置选中字体色
+        items_date_segmented.setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.white], for: .selected)
+        // 设置未选中字体色
+        items_date_segmented.setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor("#899199")!], for: .normal)
+
+
+    }
+    
+}
+

+ 316 - 0
JiaPeiManage/Sources/Modulars/Statistics/Views/StatisticsPageHeaderView.xib

@@ -0,0 +1,316 @@
+<?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="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="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="StatisticsPageHeaderView" customModule="JiaPeiManage" customModuleProvider="target">
+            <rect key="frame" x="0.0" y="0.0" width="375" height="352"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="aft-wT-xvr" userLabel="View-预报名">
+                    <rect key="frame" x="15" y="24" width="168" height="100"/>
+                    <subviews>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="今日预报名" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YQ6-YH-McP">
+                            <rect key="frame" x="41.666666666666657" y="20" width="85" height="18"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="18" id="Lu8-Gl-Wud"/>
+                                <constraint firstAttribute="width" constant="85" id="m3E-T2-r5L"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                            <color key="textColor" red="0.53725490196078429" green="0.56862745098039214" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="999" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Uue-U7-tVN">
+                            <rect key="frame" x="0.0" y="38" width="168" height="42"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="42" id="uP8-mE-D5g"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="boldSystem" pointSize="30"/>
+                            <color key="textColor" red="0.83137254901960778" green="0.8666666666666667" blue="0.90196078431372551" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                    </subviews>
+                    <color key="backgroundColor" red="0.21176470588235294" green="0.19215686274509802" blue="0.1803921568627451" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    <constraints>
+                        <constraint firstItem="YQ6-YH-McP" firstAttribute="top" secondItem="aft-wT-xvr" secondAttribute="top" constant="20" id="CLG-mx-QD7"/>
+                        <constraint firstAttribute="height" constant="100" id="L9s-oW-D8c"/>
+                        <constraint firstItem="Uue-U7-tVN" firstAttribute="leading" secondItem="aft-wT-xvr" secondAttribute="leading" id="Re7-cG-6pY"/>
+                        <constraint firstAttribute="trailing" secondItem="Uue-U7-tVN" secondAttribute="trailing" id="Z1K-Y3-y2B"/>
+                        <constraint firstItem="YQ6-YH-McP" firstAttribute="centerX" secondItem="aft-wT-xvr" secondAttribute="centerX" id="b7h-MC-UQI"/>
+                        <constraint firstItem="Uue-U7-tVN" firstAttribute="top" secondItem="YQ6-YH-McP" secondAttribute="bottom" id="eMK-PW-2Wg"/>
+                    </constraints>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                            <real key="value" value="5"/>
+                        </userDefinedRuntimeAttribute>
+                    </userDefinedRuntimeAttributes>
+                </view>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="GKf-cU-ITH" userLabel="View-今日报名">
+                    <rect key="frame" x="192" y="24" width="168" height="100"/>
+                    <subviews>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="今日报名" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vv4-S5-9uc">
+                            <rect key="frame" x="41.666666666666657" y="11" width="85" height="18"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="18" id="MS7-O9-fYr"/>
+                                <constraint firstAttribute="width" constant="85" id="fiV-Mj-2SG"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                            <color key="textColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="999" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="y0U-dj-4K9">
+                            <rect key="frame" x="0.0" y="29" width="168" height="42"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="42" id="n6E-9f-D15"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="boldSystem" pointSize="30"/>
+                            <color key="textColor" red="0.83137254900000002" green="0.86666666670000003" blue="0.90196078430000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="昨日 88" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hl6-VS-paV">
+                            <rect key="frame" x="0.0" y="71" width="168" height="18"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="18" id="0Hk-Lq-KJI"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                            <color key="textColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                    </subviews>
+                    <color key="backgroundColor" red="0.047058823529411764" green="0.2196078431372549" blue="0.23137254901960785" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    <constraints>
+                        <constraint firstItem="hl6-VS-paV" firstAttribute="top" secondItem="y0U-dj-4K9" secondAttribute="bottom" id="PmV-Zo-DY5"/>
+                        <constraint firstAttribute="height" constant="100" id="SZn-R5-Og1"/>
+                        <constraint firstItem="vv4-S5-9uc" firstAttribute="centerX" secondItem="GKf-cU-ITH" secondAttribute="centerX" id="bde-Yx-H31"/>
+                        <constraint firstItem="hl6-VS-paV" firstAttribute="leading" secondItem="GKf-cU-ITH" secondAttribute="leading" id="ihk-e2-gKA"/>
+                        <constraint firstItem="y0U-dj-4K9" firstAttribute="leading" secondItem="GKf-cU-ITH" secondAttribute="leading" id="k7n-58-f9g"/>
+                        <constraint firstAttribute="trailing" secondItem="hl6-VS-paV" secondAttribute="trailing" id="nKU-p0-zhG"/>
+                        <constraint firstItem="y0U-dj-4K9" firstAttribute="top" secondItem="vv4-S5-9uc" secondAttribute="bottom" id="qy7-af-RRs"/>
+                        <constraint firstAttribute="trailing" secondItem="y0U-dj-4K9" secondAttribute="trailing" id="u8l-C0-bbu"/>
+                        <constraint firstItem="vv4-S5-9uc" firstAttribute="top" secondItem="GKf-cU-ITH" secondAttribute="top" constant="11" id="zy5-l2-Kn4"/>
+                    </constraints>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                            <real key="value" value="5"/>
+                        </userDefinedRuntimeAttribute>
+                    </userDefinedRuntimeAttributes>
+                </view>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3ul-T9-cgr" userLabel="View-本月">
+                    <rect key="frame" x="15" y="133" width="168" height="100"/>
+                    <subviews>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="本月报名" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Sq4-g5-kNa">
+                            <rect key="frame" x="40" y="11" width="85" height="18"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="18" id="B9m-4w-HyU"/>
+                                <constraint firstAttribute="width" constant="85" id="Xvu-IN-BTD"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                            <color key="textColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="999" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qTY-Ph-Ewx">
+                            <rect key="frame" x="0.0" y="29" width="168" height="42"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="42" id="p6s-Ve-TUi"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="boldSystem" pointSize="30"/>
+                            <color key="textColor" red="0.83137254900000002" green="0.86666666670000003" blue="0.90196078430000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="上月 99" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2On-dl-pRp">
+                            <rect key="frame" x="0.0" y="71" width="168" height="18"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="18" id="BA6-fh-7Qn"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                            <color key="textColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                    </subviews>
+                    <color key="backgroundColor" red="0.20392156862745098" green="0.20392156862745098" blue="0.14509803921568626" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    <constraints>
+                        <constraint firstAttribute="trailing" secondItem="qTY-Ph-Ewx" secondAttribute="trailing" id="EFb-bo-RhT"/>
+                        <constraint firstItem="2On-dl-pRp" firstAttribute="leading" secondItem="3ul-T9-cgr" secondAttribute="leading" id="Hzz-sa-szX"/>
+                        <constraint firstItem="Sq4-g5-kNa" firstAttribute="leading" secondItem="3ul-T9-cgr" secondAttribute="leading" constant="40" id="JvM-7s-Ugq"/>
+                        <constraint firstItem="Sq4-g5-kNa" firstAttribute="top" secondItem="3ul-T9-cgr" secondAttribute="top" constant="11" id="Li2-DO-0uB"/>
+                        <constraint firstItem="qTY-Ph-Ewx" firstAttribute="top" secondItem="Sq4-g5-kNa" secondAttribute="bottom" id="VfA-vX-4gi"/>
+                        <constraint firstItem="qTY-Ph-Ewx" firstAttribute="leading" secondItem="3ul-T9-cgr" secondAttribute="leading" id="XBO-1c-dop"/>
+                        <constraint firstAttribute="height" constant="100" id="d0g-NW-ZcM"/>
+                        <constraint firstItem="2On-dl-pRp" firstAttribute="top" secondItem="qTY-Ph-Ewx" secondAttribute="bottom" id="s4z-0n-b6z"/>
+                        <constraint firstAttribute="trailing" secondItem="2On-dl-pRp" secondAttribute="trailing" id="sRe-jf-dJv"/>
+                    </constraints>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                            <real key="value" value="5"/>
+                        </userDefinedRuntimeAttribute>
+                    </userDefinedRuntimeAttributes>
+                </view>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ix6-7h-s2x" userLabel="View-本年">
+                    <rect key="frame" x="192" y="133" width="168" height="100"/>
+                    <subviews>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="本年报名" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zlG-tz-bh1">
+                            <rect key="frame" x="41.666666666666657" y="11" width="85" height="18"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="18" id="dBg-Pk-BcM"/>
+                                <constraint firstAttribute="width" constant="85" id="htx-Sj-dVp"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                            <color key="textColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="999" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Bfy-od-tkR">
+                            <rect key="frame" x="0.0" y="29" width="168" height="42"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="42" id="xbQ-II-VTl"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="boldSystem" pointSize="30"/>
+                            <color key="textColor" red="0.83137254900000002" green="0.86666666670000003" blue="0.90196078430000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="去年 5652" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jMJ-CH-Lpe">
+                            <rect key="frame" x="0.0" y="71" width="168" height="18"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="18" id="qrM-Aq-X6e"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                            <color key="textColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                    </subviews>
+                    <color key="backgroundColor" red="0.043137254901960784" green="0.16862745098039217" blue="0.30196078431372547" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="100" id="7Lc-Qg-bal"/>
+                        <constraint firstItem="zlG-tz-bh1" firstAttribute="centerX" secondItem="Ix6-7h-s2x" secondAttribute="centerX" id="Q1i-nB-jr3"/>
+                        <constraint firstItem="Bfy-od-tkR" firstAttribute="leading" secondItem="Ix6-7h-s2x" secondAttribute="leading" id="RaH-ci-4zj"/>
+                        <constraint firstAttribute="trailing" secondItem="jMJ-CH-Lpe" secondAttribute="trailing" id="WxD-Lf-2bf"/>
+                        <constraint firstItem="zlG-tz-bh1" firstAttribute="top" secondItem="Ix6-7h-s2x" secondAttribute="top" constant="11" id="Zh2-IX-a86"/>
+                        <constraint firstAttribute="trailing" secondItem="Bfy-od-tkR" secondAttribute="trailing" id="cg0-QR-ULk"/>
+                        <constraint firstItem="Bfy-od-tkR" firstAttribute="top" secondItem="zlG-tz-bh1" secondAttribute="bottom" id="g8p-z6-4E6"/>
+                        <constraint firstItem="jMJ-CH-Lpe" firstAttribute="top" secondItem="Bfy-od-tkR" secondAttribute="bottom" id="ive-wU-KUK"/>
+                        <constraint firstItem="jMJ-CH-Lpe" firstAttribute="leading" secondItem="Ix6-7h-s2x" secondAttribute="leading" id="qYn-WB-Nrj"/>
+                    </constraints>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                            <real key="value" value="5"/>
+                        </userDefinedRuntimeAttribute>
+                    </userDefinedRuntimeAttributes>
+                </view>
+                <segmentedControl opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="VMX-s0-wJI">
+                    <rect key="frame" x="15" y="248" width="114" height="31"/>
+                    <color key="backgroundColor" red="0.043137254901960784" green="0.25882352941176467" blue="0.30196078431372547" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    <constraints>
+                        <constraint firstAttribute="width" constant="114" id="9EA-gu-pYG"/>
+                        <constraint firstAttribute="height" constant="30" id="RAP-ym-7nD"/>
+                    </constraints>
+                    <segments>
+                        <segment title="日"/>
+                        <segment title="月"/>
+                        <segment title="年"/>
+                    </segments>
+                    <color key="tintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    <color key="selectedSegmentTintColor" red="0.20784313725490194" green="0.74901960784313726" blue="0.36862745098039218" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                </segmentedControl>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ZSh-Wt-q99">
+                    <rect key="frame" x="0.0" y="308" width="375" height="44"/>
+                    <subviews>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="WPh-7j-9f7" customClass="QMUIButton">
+                            <rect key="frame" x="25" y="0.0" width="75" height="44"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="75" id="oxD-d2-4Ct"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
+                            <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.83137254901960778" green="0.8666666666666667" blue="0.90196078431372551" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            </state>
+                        </button>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ANm-wP-nuH" customClass="QMUIButton">
+                            <rect key="frame" x="275" y="0.0" width="75" height="44"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="75" id="Wfo-7g-hxA"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
+                            <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.83137254901960778" green="0.8666666666666667" blue="0.90196078431372551" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            </state>
+                        </button>
+                    </subviews>
+                    <color key="backgroundColor" red="0.14901960784313725" green="0.28235294117647058" blue="0.41960784313725491" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    <constraints>
+                        <constraint firstAttribute="bottom" secondItem="ANm-wP-nuH" secondAttribute="bottom" id="8gw-Go-dk9"/>
+                        <constraint firstAttribute="height" constant="44" id="JFp-hz-tPH"/>
+                        <constraint firstAttribute="trailing" secondItem="ANm-wP-nuH" secondAttribute="trailing" constant="25" id="RTW-lT-MuK"/>
+                        <constraint firstItem="WPh-7j-9f7" firstAttribute="top" secondItem="ZSh-Wt-q99" secondAttribute="top" id="VXF-Xw-WGS"/>
+                        <constraint firstItem="ANm-wP-nuH" firstAttribute="top" secondItem="ZSh-Wt-q99" secondAttribute="top" id="Z0m-GR-0Mu"/>
+                        <constraint firstAttribute="bottom" secondItem="WPh-7j-9f7" secondAttribute="bottom" id="k0z-1g-3BQ"/>
+                        <constraint firstItem="WPh-7j-9f7" firstAttribute="leading" secondItem="ZSh-Wt-q99" secondAttribute="leading" constant="25" id="vHp-Qi-IHr"/>
+                    </constraints>
+                </view>
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="LKE-qJ-bbU" customClass="QMUIButton">
+                    <rect key="frame" x="142" y="248" width="218" height="30"/>
+                    <constraints>
+                        <constraint firstAttribute="width" constant="218" id="3LQ-XM-YEh"/>
+                        <constraint firstAttribute="height" constant="30" id="JQG-ge-1Rr"/>
+                    </constraints>
+                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                    <state key="normal" title="2023-06-01~2023-06-30" image="btn_arrow_gray">
+                        <color key="titleColor" red="0.83137254901960778" green="0.8666666666666667" blue="0.90196078431372551" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    </state>
+                </button>
+            </subviews>
+            <viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/>
+            <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+            <constraints>
+                <constraint firstItem="aft-wT-xvr" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="24" id="4BC-CT-COV"/>
+                <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="GKf-cU-ITH" secondAttribute="trailing" constant="15" id="FIE-Pt-Dah"/>
+                <constraint firstItem="GKf-cU-ITH" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="24" id="GSz-V0-WGu"/>
+                <constraint firstItem="aft-wT-xvr" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" constant="15" id="H9E-ry-RsU"/>
+                <constraint firstItem="GKf-cU-ITH" firstAttribute="leading" secondItem="aft-wT-xvr" secondAttribute="trailing" constant="9" id="Ha2-O5-6QB"/>
+                <constraint firstItem="3ul-T9-cgr" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" constant="15" id="JeY-h4-cna"/>
+                <constraint firstItem="3ul-T9-cgr" firstAttribute="width" secondItem="Ix6-7h-s2x" secondAttribute="width" id="Rm1-TG-Ndr"/>
+                <constraint firstItem="3ul-T9-cgr" firstAttribute="top" secondItem="aft-wT-xvr" secondAttribute="bottom" constant="9" id="SaC-43-vHv"/>
+                <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="ZSh-Wt-q99" secondAttribute="trailing" id="Vb1-06-5bM"/>
+                <constraint firstItem="VMX-s0-wJI" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" constant="15" id="WRE-J1-ZVG"/>
+                <constraint firstItem="VMX-s0-wJI" firstAttribute="top" secondItem="3ul-T9-cgr" secondAttribute="bottom" constant="15" id="YqR-KB-6Ha"/>
+                <constraint firstAttribute="bottom" secondItem="ZSh-Wt-q99" secondAttribute="bottom" id="eWr-yZ-HLv"/>
+                <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="Ix6-7h-s2x" secondAttribute="trailing" constant="15" id="fdw-Kz-Zaw"/>
+                <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="LKE-qJ-bbU" secondAttribute="trailing" constant="15" id="fzm-nO-XpD"/>
+                <constraint firstItem="Ix6-7h-s2x" firstAttribute="top" secondItem="GKf-cU-ITH" secondAttribute="bottom" constant="9" id="gg2-cm-4AU"/>
+                <constraint firstItem="LKE-qJ-bbU" firstAttribute="top" secondItem="3ul-T9-cgr" secondAttribute="bottom" constant="15" id="jI8-Dd-mlE"/>
+                <constraint firstItem="aft-wT-xvr" firstAttribute="width" secondItem="GKf-cU-ITH" secondAttribute="width" id="lU3-3R-3rQ"/>
+                <constraint firstItem="Ix6-7h-s2x" firstAttribute="leading" secondItem="3ul-T9-cgr" secondAttribute="trailing" constant="9" id="uQU-Uf-zcV"/>
+                <constraint firstItem="ZSh-Wt-q99" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" id="x7L-zJ-PrP"/>
+            </constraints>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <userDefinedRuntimeAttributes>
+                <userDefinedRuntimeAttribute type="boolean" keyPath="aLRatio" value="YES"/>
+            </userDefinedRuntimeAttributes>
+            <connections>
+                <outlet property="advanceday_num_label" destination="Uue-U7-tVN" id="eku-jh-yHm"/>
+                <outlet property="date_section_button" destination="LKE-qJ-bbU" id="SB0-Ej-kzG"/>
+                <outlet property="items_date_segmented" destination="VMX-s0-wJI" id="7ws-br-KwA"/>
+                <outlet property="lastmonth_num_label" destination="2On-dl-pRp" id="kAc-cv-YFh"/>
+                <outlet property="lastyear_num_label" destination="jMJ-CH-Lpe" id="Wia-K1-kl9"/>
+                <outlet property="student_button" destination="ANm-wP-nuH" id="uuI-RX-EfN"/>
+                <outlet property="thismonth_num_label" destination="qTY-Ph-Ewx" id="4TL-s4-BET"/>
+                <outlet property="thisyear_num_label" destination="Bfy-od-tkR" id="KR2-ng-1jO"/>
+                <outlet property="time_button" destination="WPh-7j-9f7" id="UhX-fi-nWI"/>
+                <outlet property="today_num_label" destination="y0U-dj-4K9" id="ezX-4A-dDJ"/>
+                <outlet property="yesterday_num_label" destination="hl6-VS-paV" id="paB-U7-LdU"/>
+            </connections>
+            <point key="canvasLocation" x="64.799999999999997" y="-12.561576354679804"/>
+        </view>
+    </objects>
+    <resources>
+        <image name="btn_arrow_gray" width="16" height="12"/>
+    </resources>
+</document>

+ 0 - 4
JiaPeiManage/Sources/Modulars/学员/Controllers/MeTraineeListViewController.swift

@@ -17,10 +17,6 @@ enum TraineeType {
 
 final class MeTraineeListViewController: BaseViewController {
     
-    private struct Metric {
-        static let statusBarHeight = isIphoneX ? 44.f : 20.f
-        static let navBarHeight = 44.f
-    }
     
     // MARK: 私有属性
     

+ 3 - 14
JiaPeiManage/Sources/Modulars/学员/Controllers/MeTraineeSearchPageViewController.swift

@@ -14,7 +14,7 @@ final class MeTraineeSearchPageViewController: BaseTableViewController {
     // MARK: 服务属性
     private let cocahService: CoachServiceType = CoachService(networking: CoachNetworking())
     // MARK: UI属性
-    
+//    @IBOutlet weak var nav_top_layout: NSLayoutConstraint!
     @IBOutlet weak var searchView: UIView!
     //搜索
     @IBOutlet weak var search_textfield: QMUITextField!
@@ -37,7 +37,7 @@ final class MeTraineeSearchPageViewController: BaseTableViewController {
     var state = ""
     //重置约束
     override func setupConstraints() {
-        self.tableView.snp.makeConstraints { make in
+        self.tableView.snp.remakeConstraints { make in
             make.top.equalTo(self.searchView.bottom)
             make.left.right.bottom.equalTo(self.view)
         }
@@ -53,6 +53,7 @@ final class MeTraineeSearchPageViewController: BaseTableViewController {
     
     // MARK: 私有方法
     func setupUI(){
+        if isIphoneX {self.nav_top_layout.constant = 24.f}
         self.view.backgroundColor = .db_theme
 //        self.searchView.addSubview(search_bar)
         self.search_textfield.placeholderColor = .db_place
@@ -86,20 +87,8 @@ final class MeTraineeSearchPageViewController: BaseTableViewController {
             })
             .disposed(by: disposeBag)
         
-        //Driver
-//        let result = search_textfield.rx.text.skip(1)
-//            .flatMap{
-//                return self.dealWithData(intputText: $0!).observeOn(MainScheduler()).catchErrorJustReturn("监听到错误事件")
-//            }.share(replay: 1,scope: .whileConnected)
     }
     
-//    func dealWithData(intputText:String)-> Observable<Any> {
-//        return Observable<Any>.create({ ob -> Disposable in
-//            self.searchCoachInfoList()
-//            return Disposables.create()
-//        })
-//    }
-    
     func searchCoachInfoList()
     {
         print("网络请求")

+ 1 - 0
JiaPeiManage/Sources/Modulars/学员/Controllers/MeTraineeSearchPageViewController.xib

@@ -10,6 +10,7 @@
     <objects>
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="MeTraineeSearchPageViewController" customModule="JiaPeiManage" customModuleProvider="target">
             <connections>
+                <outlet property="nav_top_layout" destination="tPC-jM-adA" id="Dfu-2v-8Cz"/>
                 <outlet property="searchView" destination="a0a-sl-bPA" id="ZwG-50-IDo"/>
                 <outlet property="search_button" destination="Kuy-oy-vcr" id="NHZ-xx-f80"/>
                 <outlet property="search_textfield" destination="k19-9d-1vC" id="caV-uN-1es"/>

+ 1 - 1
JiaPeiManage/Sources/Modulars/学员/Views/MeTraineeSubjectCell.swift

@@ -94,7 +94,7 @@ final class MeTraineeSubjectCell: UITableViewCell,NibLoadable {
         self.k4_imageview.image = UIImage(named: k4Img)
         self.k4_label.text = k4Txt
         //备注
-        self.remark_label.text = "备注:" + ((rowInfo.remark=="" ? "无":rowInfo.remark)!)
+        self.remark_label.text = "备注:" + ((rowInfo.remark==nil||rowInfo.remark=="") ? "无":rowInfo.remark!)
         
     }
     

+ 4 - 5
JiaPeiManage/Sources/Services/StatisticsAPI.swift

@@ -17,7 +17,7 @@ enum StatisticsAPI {
     //查询每年报名数
     case everyYearStuCount(city:String,schoolId:Int,startYear:String, endYear:String)
     //查询驾校ID 报名数
-    case statisticsStuCount(city:String,schoolId:Int,month:String)
+    case statisticsStuCount(city:String,schoolId:Int)
     
 }
 
@@ -38,7 +38,7 @@ extension StatisticsAPI: TargetType {
             return "/jsjp-admin/open-api/tms/coachInfo/getEveryMonthStuCountBySchoolId"
         case .everyYearStuCount(_,_,_,_):
             return "/jsjp-admin/open-api/tms/coachInfo/getEveryYearStuCountBySchoolId"
-        case .statisticsStuCount(_,_,_):
+        case .statisticsStuCount(_,_):
             return "/jsjp-admin/open-api/tms/coachInfo/getStatisticsStuCountBySchoolId"
         }
     }
@@ -101,10 +101,9 @@ extension StatisticsAPI: TargetType {
                         "schoolId": schoolId,
                         "startDate":startDate,
                         "endDate":endDate,]
-            case let .statisticsStuCount(city, schoolId,month):
+            case let .statisticsStuCount(city, schoolId):
                 return ["city": city,
-                        "schoolId": schoolId,
-                        "month":month]
+                        "schoolId": schoolId]
             default:
                 return nil
             }

+ 4 - 4
JiaPeiManage/Sources/Services/StatisticsService.swift

@@ -18,7 +18,7 @@ protocol StatisticsServiceType {
     //查询每年报名数
     func everyYearStuCount(city: String, schoolId: Int, startYear: String, endYear: String) -> Single<StuCountDataModel>
     //查询驾校ID 报名数
-    func statisticsStuCount(city: String, schoolId: Int, month: String) -> Single<StuCountDataModel>
+    func statisticsStuCount(city: String, schoolId: Int) -> Single<StuTotalCountDataModel>
     
 }
 
@@ -45,9 +45,9 @@ final class StatisticsService: StatisticsServiceType {
         return networking.request(api).map(StuCountDataModel.self, isModel: true)
     }
     //查询驾校ID 报名数
-    func statisticsStuCount(city: String, schoolId: Int, month: String) -> RxSwift.Single<StuCountDataModel> {
-        let api = StatisticsAPI.statisticsStuCount(city: city, schoolId: schoolId, month: month)
-        return networking.request(api).map(StuCountDataModel.self, isModel: true)
+    func statisticsStuCount(city: String, schoolId: Int) -> RxSwift.Single<StuTotalCountDataModel> {
+        let api = StatisticsAPI.statisticsStuCount(city: city, schoolId: schoolId)
+        return networking.request(api).map(StuTotalCountDataModel.self)
     }
    
 }

+ 28 - 0
JiaPeiManage/Sources/Thirdparty/GJRatioAutoLayout/GJRatioAutoLayout.h

@@ -0,0 +1,28 @@
+//
+//  GJRatioAutoLayout.h
+//  GJRatioAutoLayout
+//
+//  Created by wangyutao on 16/1/3.
+//  Copyright © 2016年 wangyutao. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "GJRatioAutoLayoutDefine.h"
+#import "UIView+GJRatioAutoLayout.h"
+#import "UILabel+GJRatioAutoLayout.h"
+
+typedef NS_ENUM(NSUInteger, GJScreenSizeType) {
+    GJScreenSizeTypeiPhone4or5,
+    GJScreenSizeTypeiPhone6,
+    GJScreenSizeTypeiPhone6Plus,
+};
+
+@interface GJRatioAutoLayout : NSObject
+
++ (void)startWithScreenSizeType:(GJScreenSizeType)type;
+
++ (GJScreenSizeType)getScreenSizeType;
+
++ (NSInteger)getScreenSizeWidth;
+
+@end

+ 38 - 0
JiaPeiManage/Sources/Thirdparty/GJRatioAutoLayout/GJRatioAutoLayout.m

@@ -0,0 +1,38 @@
+//
+//  GJRatioAutoLayout.m
+//  GJRatioAutoLayout
+//
+//  Created by wangyutao on 16/1/3.
+//  Copyright © 2016年 wangyutao. All rights reserved.
+//
+
+#import "GJRatioAutoLayout.h"
+
+static GJScreenSizeType screenSizeType = GJScreenSizeTypeiPhone4or5;
+
+@implementation GJRatioAutoLayout
+
++ (void)startWithScreenSizeType:(GJScreenSizeType)type {
+    screenSizeType = type;
+}
+
++ (GJScreenSizeType)getScreenSizeType {
+    return screenSizeType;
+}
+
++ (NSInteger)getScreenSizeWidth {
+    switch (screenSizeType) {
+        case GJScreenSizeTypeiPhone4or5:
+            return 320;
+            break;
+        case GJScreenSizeTypeiPhone6:
+            return 375;
+        case GJScreenSizeTypeiPhone6Plus:
+            return 414;
+        default:
+            break;
+    }
+    return 320;
+}
+
+@end

+ 14 - 0
JiaPeiManage/Sources/Thirdparty/GJRatioAutoLayout/GJRatioAutoLayoutDefine.h

@@ -0,0 +1,14 @@
+//
+//  GJRatioAutoLaoutDefine.h
+//  GJRatioAutoLayout
+//
+//  Created by wangyutao on 15/12/30.
+//  Copyright © 2015年 wangyutao. All rights reserved.
+//
+
+#import "GJRatioAutoLayout.h"
+
+#define GJ_MainScreen                   [UIScreen mainScreen]
+#define GJ_ScreenW                      (GJ_MainScreen.bounds.size.width)
+#define GJ_BaseW                        [GJRatioAutoLayout getScreenSizeWidth]
+#define GJ_Scale                        (GJ_ScreenW/GJ_BaseW)

+ 13 - 0
JiaPeiManage/Sources/Thirdparty/GJRatioAutoLayout/UILabel+GJRatioAutoLayout.h

@@ -0,0 +1,13 @@
+//
+//  UILabel+GJRatioAutoLayout.h
+//  GJRatioAutoLayout
+//
+//  Created by wangyutao on 15/12/30.
+//  Copyright © 2015年 wangyutao. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface UILabel (GJRatioAutoLayout)
+
+@end

+ 79 - 0
JiaPeiManage/Sources/Thirdparty/GJRatioAutoLayout/UILabel+GJRatioAutoLayout.m

@@ -0,0 +1,79 @@
+//
+//  UILabel+GJRatioAutoLayout.m
+//  GJRatioAutoLayout
+//
+//  Created by wangyutao on 15/12/30.
+//  Copyright © 2015年 wangyutao. All rights reserved.
+//
+
+#import "UILabel+GJRatioAutoLayout.h"
+#import "UIView+GJRatioAutoLayout.h"
+#import "GJRatioAutoLayoutDefine.h"
+#import <objc/runtime.h>
+
+@interface UILabel (_GJRatioAutoLayoutStroge)
+@property (nonatomic, assign) CGFloat gj_originalFontSize;
+@end
+
+@implementation UILabel (_GJRatioAutoLayoutStroge)
+
+- (void)setGj_originalFontSize:(CGFloat)originalFontSize {
+    objc_setAssociatedObject(self, @selector(gj_originalFontSize), @(originalFontSize), OBJC_ASSOCIATION_RETAIN);
+}
+
+- (CGFloat)gj_originalFontSize {
+#if CGFLOAT_IS_DOUBLE
+    return [objc_getAssociatedObject(self, _cmd) doubleValue];
+#else
+    return [objc_getAssociatedObject(self, _cmd) floatValue];
+#endif
+}
+
+@end
+
+@implementation UILabel (GJRatioAutoLayout)
+
++ (void)load {
+    GJExchangeImplementations(self, @selector(setPreferredMaxLayoutWidth:), @selector(gj_setPreferredMaxLayoutWidth:));
+}
+
+#pragma mark- aLRatio rewrite
+- (void)setALRatio:(BOOL)aLRatio {
+    if (self.gj_aLRatio == aLRatio) return;
+    [super setALRatio:aLRatio];
+    //reset only when changed
+    [self resetFont];
+    [self resetPreferredMaxLayoutWidth];
+}
+
+
+#pragma mark - preferredMaxLayoutWidth
+//scaled when user set by code.
+- (void)gj_setPreferredMaxLayoutWidth:(CGFloat)width {
+    CGFloat maxWidth = width;
+    if (self.gj_aLRatio && maxWidth > 0) {
+        maxWidth *= GJ_Scale;
+    }
+    [self gj_setPreferredMaxLayoutWidth:maxWidth];
+}
+
+#pragma mark- private method
+- (void)resetFont {
+    if (self.gj_aLRatio) {
+        self.gj_originalFontSize = self.font.pointSize;
+        CGFloat size = floorl(self.font.pointSize * GJ_Scale);
+        NSString *name = self.font.fontName;
+        self.font = [UIFont fontWithName:name size:size];
+    }
+    else {
+        self.font = [UIFont fontWithName:self.font.fontName size:self.gj_originalFontSize];
+    }
+}
+
+- (void)resetPreferredMaxLayoutWidth {
+    if (self.gj_aLRatio && self.preferredMaxLayoutWidth > 0) {
+        [self gj_setPreferredMaxLayoutWidth:self.preferredMaxLayoutWidth * GJ_Scale];
+    }
+}
+
+@end

+ 20 - 0
JiaPeiManage/Sources/Thirdparty/GJRatioAutoLayout/UIView+GJRatioAutoLayout.h

@@ -0,0 +1,20 @@
+//
+//  UIView+GJRatioAutoLayout.h
+//  GJRatioAutoLayout
+//
+//  Created by wangyutao on 15/12/30.
+//  Copyright © 2015年 wangyutao. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+void GJExchangeImplementations(Class class, SEL newSelector, SEL oldSelector);
+
+@interface UIView (GJRatioAutoLayout)
+
+/**
+ *  set scaled open for view.
+ */
+@property (nonatomic, assign, getter=gj_aLRatio) IBInspectable BOOL aLRatio;
+
+@end

+ 164 - 0
JiaPeiManage/Sources/Thirdparty/GJRatioAutoLayout/UIView+GJRatioAutoLayout.m

@@ -0,0 +1,164 @@
+//
+//  UIView+GJRatioAutoLayout.m
+//  GJRatioAutoLayout
+//
+//  Created by wangyutao on 15/12/30.
+//  Copyright © 2015年 wangyutao. All rights reserved.
+//
+
+#import "UIView+GJRatioAutoLayout.h"
+#import "GJRatioAutoLayoutDefine.h"
+#import <objc/runtime.h>
+
+void GJExchangeImplementations(Class class, SEL newSelector, SEL oldSelector) {
+    Method oldMethod = class_getInstanceMethod(class, newSelector);
+    Method newMethod = class_getInstanceMethod(class, oldSelector);
+    method_exchangeImplementations(oldMethod, newMethod);
+};
+
+#pragma mark - NSLayoutConstaint Category
+
+@interface NSLayoutConstraint (_GJRatioAutoLayout)
+
+/**
+ *  gj_isRatio mark the constant is origin or scaled.
+ */
+@property (nonatomic, assign) BOOL gj_isRatio;
+
+@end
+
+@implementation NSLayoutConstraint (_GJRatioAutoLayout)
+
++ (void)load {
+    GJExchangeImplementations(self, @selector(gj_constant), @selector(constant));
+}
+
+- (CGFloat)gj_constant {
+    CGFloat constant = [self gj_constant];
+    if (self.gj_isRatio) {
+        constant *= GJ_Scale;
+    }
+    return constant;
+}
+
+- (void)setGj_isRatio:(BOOL)gj_isRatio {
+    if (self.gj_isRatio == gj_isRatio) return;
+    objc_setAssociatedObject(self, @selector(gj_isRatio), @(gj_isRatio), OBJC_ASSOCIATION_RETAIN);
+}
+
+- (BOOL)gj_isRatio {
+    return [objc_getAssociatedObject(self, _cmd) boolValue];
+}
+
+@end
+
+
+#pragma mark - UiView Category
+
+@implementation UIView (GJRatioAutoLayout)
+
++ (void)load {
+    GJExchangeImplementations(self, @selector(addConstraint:), @selector(gj_AddConstraint:));
+}
+
+- (BOOL)gj_aLRatio {
+    return [objc_getAssociatedObject(self, _cmd) boolValue];
+}
+
+- (void)setGj_aLRatio:(BOOL)aLRatio {
+    objc_setAssociatedObject(self, @selector(gj_aLRatio), @(aLRatio), OBJC_ASSOCIATION_RETAIN);
+}
+
+/**
+ *  set aLRatio
+ */
+- (void)setALRatio:(BOOL)aLRatio {
+    if (self.gj_aLRatio == aLRatio) return;
+    self.gj_aLRatio = aLRatio;
+    
+    if (self.gj_aLRatio) {
+        //if state is on, set all constraints constant scale
+        for (NSLayoutConstraint * constraint in [self.gj_constraints allObjects]) {
+            if (!constraint.gj_isRatio) {
+                constraint.gj_isRatio = YES;
+            }
+        }
+    }
+}
+
+/**
+ *  gj_constraints is a hash table that collect constraints himself
+ *
+ *  @return hash table, week array.
+ */
+- (NSHashTable *)gj_constraints {
+    NSHashTable *array = objc_getAssociatedObject(self, _cmd);
+    if (!array) {
+        array = [NSHashTable weakObjectsHashTable];
+        objc_setAssociatedObject(self, _cmd, array, OBJC_ASSOCIATION_RETAIN);
+    }
+    return array;
+}
+
+
+- (void)gj_AddConstraint:(NSLayoutConstraint *)constraint {
+    
+    if ([constraint isMemberOfClass:NSClassFromString(@"NSContentSizeLayoutConstraint")] &&
+        ([self isKindOfClass:[UILabel class]] ||
+         [self isKindOfClass:[UISlider class]] ||
+         [self isKindOfClass:[UISwitch class]] ||
+         [self isKindOfClass:[UIActivityIndicatorView class]] ||
+         [self isKindOfClass:[UIPageControl class]] ||
+         ([self isKindOfClass:[UIProgressView class]] &&
+           constraint.firstAttribute == NSLayoutAttributeHeight))) {
+             [self gj_AddConstraint:constraint];
+        return;
+    }
+
+    if ([constraint isMemberOfClass:[NSLayoutConstraint class]] ||
+        [constraint isMemberOfClass:NSClassFromString(@"MASLayoutConstraint")] ||
+        [constraint isMemberOfClass:NSClassFromString(@"NSIBPrototypingLayoutConstraint")] ||
+        [constraint isMemberOfClass:NSClassFromString(@"NSContentSizeLayoutConstraint")]) {
+    
+        //如果两个item有一个open,则这个constraint也open
+        if ([self checkALRatioWithFirstItem:constraint.firstItem
+                                 secondItem:constraint.secondItem]) {
+            if (!constraint.gj_isRatio) {
+                constraint.gj_isRatio = YES;
+            }
+        }
+
+        //set item's constraints
+        if (constraint.firstItem &&
+            [constraint.firstItem isKindOfClass:[UIView class]]) {
+            [((UIView *)constraint.firstItem).gj_constraints addObject:constraint];
+        }
+        
+        if (constraint.secondItem &&
+            [constraint.secondItem isKindOfClass:[UIView class]]) {
+            [((UIView *)constraint.secondItem).gj_constraints addObject:constraint];
+        }
+    }
+    
+    [self gj_AddConstraint:constraint];
+}
+
+- (BOOL)checkALRatioWithFirstItem:(id)firstItem
+                       secondItem:(id)secondItem {
+    BOOL firstRatio = NO;
+    if (firstItem && [firstItem isKindOfClass:[UIView class]]) {
+        UIView *firstView = firstItem;
+        firstRatio = firstView.gj_aLRatio;
+    }
+    
+    BOOL secondRatio = NO;
+    if (secondItem && [secondItem isKindOfClass:[UIView class]]) {
+        UIView *secondView = secondItem;
+        secondRatio = secondView.gj_aLRatio;
+    }
+    
+    return firstRatio || secondRatio;
+}
+
+@end
+

+ 2 - 1
JiaPeiManage/Sources/Utils/URLNavigationMap.swift

@@ -27,7 +27,7 @@ final class URLNavigationMap {
         }
         
         navigator.register(NYSwPushType.trainee_statistics.path) { (url, values, context) -> UIViewController? in
-            let statisticsPageController = StatisticsPageController(nibName: "StatisticsPageController")
+            let statisticsPageController = StatisticsPageController()
             return statisticsPageController
         }
         
@@ -122,6 +122,7 @@ final class URLNavigationMap {
                                                         advancetViewController: MeTraineeListViewController(type: .advancet),
                                                         officialViewController: MeTraineeListViewController(type: .official)
                                                            )
+            meTabBarController.modalPresentationStyle = .fullScreen
             navigator.present(meTabBarController)
             return true
         }