瀏覽代碼

我的学员 下拉cell cell优化

openlockPPP 2 年之前
父節點
當前提交
ffb665bfae
共有 67 個文件被更改,包括 588 次插入53 次删除
  1. 12 0
      JiaPeiManage.xcodeproj/project.pbxproj
  2. 6 0
      JiaPeiManage/Assets.xcassets/Modules/Animation/Contents.json
  3. 21 0
      JiaPeiManage/Assets.xcassets/Modules/Animation/animation_loading_error_1.imageset/Contents.json
  4. 二進制
      JiaPeiManage/Assets.xcassets/Modules/Animation/animation_loading_error_1.imageset/common_loading_error_1.png
  5. 21 0
      JiaPeiManage/Assets.xcassets/Modules/Animation/animation_loading_error_2.imageset/Contents.json
  6. 二進制
      JiaPeiManage/Assets.xcassets/Modules/Animation/animation_loading_error_2.imageset/common_loading_error_2.png
  7. 21 0
      JiaPeiManage/Assets.xcassets/Modules/Animation/animation_loading_error_3.imageset/Contents.json
  8. 二進制
      JiaPeiManage/Assets.xcassets/Modules/Animation/animation_loading_error_3.imageset/common_loading_error_3.png
  9. 21 0
      JiaPeiManage/Assets.xcassets/Modules/Animation/animation_loading_error_4.imageset/Contents.json
  10. 二進制
      JiaPeiManage/Assets.xcassets/Modules/Animation/animation_loading_error_4.imageset/common_loading_error_4.png
  11. 21 0
      JiaPeiManage/Assets.xcassets/Modules/Animation/animation_loading_loading_1.imageset/Contents.json
  12. 二進制
      JiaPeiManage/Assets.xcassets/Modules/Animation/animation_loading_loading_1.imageset/common_loading_loading_1.png
  13. 21 0
      JiaPeiManage/Assets.xcassets/Modules/Animation/animation_loading_loading_2.imageset/Contents.json
  14. 二進制
      JiaPeiManage/Assets.xcassets/Modules/Animation/animation_loading_loading_2.imageset/common_loading_loading_2.png
  15. 21 0
      JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_dance_1.imageset/Contents.json
  16. 二進制
      JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_dance_1.imageset/refresh_logo_1@3x.png
  17. 21 0
      JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_dance_2.imageset/Contents.json
  18. 二進制
      JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_dance_2.imageset/refresh_logo_2@3x.png
  19. 21 0
      JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_dance_3.imageset/Contents.json
  20. 二進制
      JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_dance_3.imageset/refresh_logo_3@3x.png
  21. 21 0
      JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_dance_4.imageset/Contents.json
  22. 二進制
      JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_dance_4.imageset/refresh_logo_4@3x.png
  23. 23 0
      JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_rabbit_1.imageset/Contents.json
  24. 二進制
      JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_rabbit_1.imageset/common_rabbitBar_face0.png
  25. 二進制
      JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_rabbit_1.imageset/common_rabbitBar_face0@2x.png
  26. 二進制
      JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_rabbit_1.imageset/common_rabbitBar_face0@3x.png
  27. 23 0
      JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_rabbit_2.imageset/Contents.json
  28. 二進制
      JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_rabbit_2.imageset/common_rabbitBar_face1.png
  29. 二進制
      JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_rabbit_2.imageset/common_rabbitBar_face1@2x.png
  30. 二進制
      JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_rabbit_2.imageset/common_rabbitBar_face1@3x.png
  31. 23 0
      JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_rabbit_3.imageset/Contents.json
  32. 二進制
      JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_rabbit_3.imageset/common_rabbitBar_face2.png
  33. 二進制
      JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_rabbit_3.imageset/common_rabbitBar_face2@2x.png
  34. 二進制
      JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_rabbit_3.imageset/common_rabbitBar_face2@3x.png
  35. 22 0
      JiaPeiManage/Assets.xcassets/Modules/Animation/tv_pull_loading_1.imageset/Contents.json
  36. 二進制
      JiaPeiManage/Assets.xcassets/Modules/Animation/tv_pull_loading_1.imageset/tv_pull_loading_1@2x.png
  37. 二進制
      JiaPeiManage/Assets.xcassets/Modules/Animation/tv_pull_loading_1.imageset/tv_pull_loading_1@3x.png
  38. 22 0
      JiaPeiManage/Assets.xcassets/Modules/Animation/tv_pull_loading_2.imageset/Contents.json
  39. 二進制
      JiaPeiManage/Assets.xcassets/Modules/Animation/tv_pull_loading_2.imageset/tv_pull_loading_2@2x.png
  40. 二進制
      JiaPeiManage/Assets.xcassets/Modules/Animation/tv_pull_loading_2.imageset/tv_pull_loading_2@3x.png
  41. 22 0
      JiaPeiManage/Assets.xcassets/Modules/Animation/tv_pull_loading_3.imageset/Contents.json
  42. 二進制
      JiaPeiManage/Assets.xcassets/Modules/Animation/tv_pull_loading_3.imageset/tv_pull_loading_3@2x.png
  43. 二進制
      JiaPeiManage/Assets.xcassets/Modules/Animation/tv_pull_loading_3.imageset/tv_pull_loading_3@3x.png
  44. 22 0
      JiaPeiManage/Assets.xcassets/Modules/Animation/tv_pull_loading_4.imageset/Contents.json
  45. 二進制
      JiaPeiManage/Assets.xcassets/Modules/Animation/tv_pull_loading_4.imageset/tv_pull_loading_4@2x.png
  46. 二進制
      JiaPeiManage/Assets.xcassets/Modules/Animation/tv_pull_loading_4.imageset/tv_pull_loading_4@3x.png
  47. 23 0
      JiaPeiManage/Assets.xcassets/Modules/Common/default-user-female.imageset/Contents.json
  48. 二進制
      JiaPeiManage/Assets.xcassets/Modules/Common/default-user-female.imageset/默认头像女.png
  49. 二進制
      JiaPeiManage/Assets.xcassets/Modules/Common/default-user-female.imageset/默认头像女@2x.png
  50. 二進制
      JiaPeiManage/Assets.xcassets/Modules/Common/default-user-female.imageset/默认头像女@3x.png
  51. 23 0
      JiaPeiManage/Assets.xcassets/Modules/Common/default-user-male.imageset/Contents.json
  52. 二進制
      JiaPeiManage/Assets.xcassets/Modules/Common/default-user-male.imageset/默认头像.png
  53. 二進制
      JiaPeiManage/Assets.xcassets/Modules/Common/default-user-male.imageset/默认头像@2x.png
  54. 二進制
      JiaPeiManage/Assets.xcassets/Modules/Common/default-user-male.imageset/默认头像@3x.png
  55. 3 1
      JiaPeiManage/Sources/Constants/NYImage.swift
  56. 2 0
      JiaPeiManage/Sources/Constants/NYMacros.swift
  57. 2 0
      JiaPeiManage/Sources/Custom/Protocol/Refreshable.swift
  58. 6 6
      JiaPeiManage/Sources/Custom/View/ImageViewAnimation/NetAnimationView.swift
  59. 76 0
      JiaPeiManage/Sources/Custom/View/RefreshHeaderAnimation/TVHeaderAnimator.swift
  60. 4 0
      JiaPeiManage/Sources/Main/Base/BaseTableViewController.swift
  61. 15 13
      JiaPeiManage/Sources/Models/TraineeDataModel.swift
  62. 26 26
      JiaPeiManage/Sources/Models/UserInfoModel.swift
  63. 3 3
      JiaPeiManage/Sources/Modulars/学员/Controllers/MeTraineeListViewController.swift
  64. 15 0
      JiaPeiManage/Sources/Modulars/学员/Controllers/MeTraineeSubjectPageViewController.swift
  65. 2 1
      JiaPeiManage/Sources/Modulars/学员/Views/MeTraineeSubjectCell.swift
  66. 2 2
      JiaPeiManage/Sources/Modulars/学员/Views/MeTraineeSubjectCell.xib
  67. 1 1
      JiaPeiManage/Sources/Services/CoachAPI.swift

+ 12 - 0
JiaPeiManage.xcodeproj/project.pbxproj

@@ -22,6 +22,7 @@
 		909DA5D32A3ADFD80034501F /* MeTraineeSubjectCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 909DA5D22A3ADFD80034501F /* MeTraineeSubjectCell.swift */; };
 		909DA5D32A3ADFD80034501F /* MeTraineeSubjectCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 909DA5D22A3ADFD80034501F /* MeTraineeSubjectCell.swift */; };
 		909DA5D52A3AE0160034501F /* MeTraineeSubjectCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 909DA5D42A3AE0160034501F /* MeTraineeSubjectCell.xib */; };
 		909DA5D52A3AE0160034501F /* MeTraineeSubjectCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 909DA5D42A3AE0160034501F /* MeTraineeSubjectCell.xib */; };
 		90BC4BD92A3B0F98006FD683 /* TraineeDataModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90BC4BD82A3B0F98006FD683 /* TraineeDataModel.swift */; };
 		90BC4BD92A3B0F98006FD683 /* TraineeDataModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90BC4BD82A3B0F98006FD683 /* TraineeDataModel.swift */; };
+		90BC4BDC2A3C2556006FD683 /* TVHeaderAnimator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90BC4BDB2A3C2556006FD683 /* TVHeaderAnimator.swift */; };
 		90CE52192A36C0710033BD06 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90CE52182A36C0710033BD06 /* AppDelegate.swift */; };
 		90CE52192A36C0710033BD06 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90CE52182A36C0710033BD06 /* AppDelegate.swift */; };
 		90CE521D2A36C0710033BD06 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90CE521C2A36C0710033BD06 /* ViewController.swift */; };
 		90CE521D2A36C0710033BD06 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90CE521C2A36C0710033BD06 /* ViewController.swift */; };
 		90CE52202A36C0710033BD06 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 90CE521E2A36C0710033BD06 /* Main.storyboard */; };
 		90CE52202A36C0710033BD06 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 90CE521E2A36C0710033BD06 /* Main.storyboard */; };
@@ -137,6 +138,7 @@
 		909DA5D22A3ADFD80034501F /* MeTraineeSubjectCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MeTraineeSubjectCell.swift; sourceTree = "<group>"; };
 		909DA5D22A3ADFD80034501F /* MeTraineeSubjectCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MeTraineeSubjectCell.swift; sourceTree = "<group>"; };
 		909DA5D42A3AE0160034501F /* MeTraineeSubjectCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MeTraineeSubjectCell.xib; sourceTree = "<group>"; };
 		909DA5D42A3AE0160034501F /* MeTraineeSubjectCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MeTraineeSubjectCell.xib; sourceTree = "<group>"; };
 		90BC4BD82A3B0F98006FD683 /* TraineeDataModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TraineeDataModel.swift; sourceTree = "<group>"; };
 		90BC4BD82A3B0F98006FD683 /* TraineeDataModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TraineeDataModel.swift; sourceTree = "<group>"; };
+		90BC4BDB2A3C2556006FD683 /* TVHeaderAnimator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TVHeaderAnimator.swift; sourceTree = "<group>"; };
 		90CE52152A36C0700033BD06 /* JiaPeiManage.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = JiaPeiManage.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		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>"; };
 		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>"; };
 		90CE521C2A36C0710033BD06 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
@@ -312,6 +314,14 @@
 			path = App;
 			path = App;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
 		};
 		};
+		90BC4BDA2A3C2541006FD683 /* RefreshHeaderAnimation */ = {
+			isa = PBXGroup;
+			children = (
+				90BC4BDB2A3C2556006FD683 /* TVHeaderAnimator.swift */,
+			);
+			path = RefreshHeaderAnimation;
+			sourceTree = "<group>";
+		};
 		90CE520C2A36C0700033BD06 = {
 		90CE520C2A36C0700033BD06 = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
@@ -495,6 +505,7 @@
 		90CE525D2A36E5460033BD06 /* View */ = {
 		90CE525D2A36E5460033BD06 /* View */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				90BC4BDA2A3C2541006FD683 /* RefreshHeaderAnimation */,
 				90CE525E2A36E5460033BD06 /* Toaster */,
 				90CE525E2A36E5460033BD06 /* Toaster */,
 				90CE52602A36E5460033BD06 /* CollectionViewLayout */,
 				90CE52602A36E5460033BD06 /* CollectionViewLayout */,
 				90CE52622A36E5460033BD06 /* GesConflictCollectionView */,
 				90CE52622A36E5460033BD06 /* GesConflictCollectionView */,
@@ -931,6 +942,7 @@
 				90CE52F12A36ECC80033BD06 /* NYWebViewController.swift in Sources */,
 				90CE52F12A36ECC80033BD06 /* NYWebViewController.swift in Sources */,
 				90CE52AD2A36E59A0033BD06 /* UIView+CornerRadius.swift in Sources */,
 				90CE52AD2A36E59A0033BD06 /* UIView+CornerRadius.swift in Sources */,
 				90CE52792A36E5460033BD06 /* LWPlayerUtils.swift in Sources */,
 				90CE52792A36E5460033BD06 /* LWPlayerUtils.swift in Sources */,
+				90BC4BDC2A3C2556006FD683 /* TVHeaderAnimator.swift in Sources */,
 				90CE527B2A36E5460033BD06 /* LWPlayerEnum.swift in Sources */,
 				90CE527B2A36E5460033BD06 /* LWPlayerEnum.swift in Sources */,
 				90CE52D92A36E6000033BD06 /* LocalManager.swift in Sources */,
 				90CE52D92A36E6000033BD06 /* LocalManager.swift in Sources */,
 				9076C5DF2A387CBC00E5E33F /* MeTraineeListViewController.swift in Sources */,
 				9076C5DF2A387CBC00E5E33F /* MeTraineeListViewController.swift in Sources */,

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

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

+ 21 - 0
JiaPeiManage/Assets.xcassets/Modules/Animation/animation_loading_error_1.imageset/Contents.json

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

二進制
JiaPeiManage/Assets.xcassets/Modules/Animation/animation_loading_error_1.imageset/common_loading_error_1.png


+ 21 - 0
JiaPeiManage/Assets.xcassets/Modules/Animation/animation_loading_error_2.imageset/Contents.json

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

二進制
JiaPeiManage/Assets.xcassets/Modules/Animation/animation_loading_error_2.imageset/common_loading_error_2.png


+ 21 - 0
JiaPeiManage/Assets.xcassets/Modules/Animation/animation_loading_error_3.imageset/Contents.json

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

二進制
JiaPeiManage/Assets.xcassets/Modules/Animation/animation_loading_error_3.imageset/common_loading_error_3.png


+ 21 - 0
JiaPeiManage/Assets.xcassets/Modules/Animation/animation_loading_error_4.imageset/Contents.json

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

二進制
JiaPeiManage/Assets.xcassets/Modules/Animation/animation_loading_error_4.imageset/common_loading_error_4.png


+ 21 - 0
JiaPeiManage/Assets.xcassets/Modules/Animation/animation_loading_loading_1.imageset/Contents.json

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

二進制
JiaPeiManage/Assets.xcassets/Modules/Animation/animation_loading_loading_1.imageset/common_loading_loading_1.png


+ 21 - 0
JiaPeiManage/Assets.xcassets/Modules/Animation/animation_loading_loading_2.imageset/Contents.json

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

二進制
JiaPeiManage/Assets.xcassets/Modules/Animation/animation_loading_loading_2.imageset/common_loading_loading_2.png


+ 21 - 0
JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_dance_1.imageset/Contents.json

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

二進制
JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_dance_1.imageset/refresh_logo_1@3x.png


+ 21 - 0
JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_dance_2.imageset/Contents.json

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

二進制
JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_dance_2.imageset/refresh_logo_2@3x.png


+ 21 - 0
JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_dance_3.imageset/Contents.json

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

二進制
JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_dance_3.imageset/refresh_logo_3@3x.png


+ 21 - 0
JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_dance_4.imageset/Contents.json

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

二進制
JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_dance_4.imageset/refresh_logo_4@3x.png


+ 23 - 0
JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_rabbit_1.imageset/Contents.json

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

二進制
JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_rabbit_1.imageset/common_rabbitBar_face0.png


二進制
JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_rabbit_1.imageset/common_rabbitBar_face0@2x.png


二進制
JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_rabbit_1.imageset/common_rabbitBar_face0@3x.png


+ 23 - 0
JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_rabbit_2.imageset/Contents.json

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

二進制
JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_rabbit_2.imageset/common_rabbitBar_face1.png


二進制
JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_rabbit_2.imageset/common_rabbitBar_face1@2x.png


二進制
JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_rabbit_2.imageset/common_rabbitBar_face1@3x.png


+ 23 - 0
JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_rabbit_3.imageset/Contents.json

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

二進制
JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_rabbit_3.imageset/common_rabbitBar_face2.png


二進制
JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_rabbit_3.imageset/common_rabbitBar_face2@2x.png


二進制
JiaPeiManage/Assets.xcassets/Modules/Animation/animation_refresh_rabbit_3.imageset/common_rabbitBar_face2@3x.png


+ 22 - 0
JiaPeiManage/Assets.xcassets/Modules/Animation/tv_pull_loading_1.imageset/Contents.json

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

二進制
JiaPeiManage/Assets.xcassets/Modules/Animation/tv_pull_loading_1.imageset/tv_pull_loading_1@2x.png


二進制
JiaPeiManage/Assets.xcassets/Modules/Animation/tv_pull_loading_1.imageset/tv_pull_loading_1@3x.png


+ 22 - 0
JiaPeiManage/Assets.xcassets/Modules/Animation/tv_pull_loading_2.imageset/Contents.json

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

二進制
JiaPeiManage/Assets.xcassets/Modules/Animation/tv_pull_loading_2.imageset/tv_pull_loading_2@2x.png


二進制
JiaPeiManage/Assets.xcassets/Modules/Animation/tv_pull_loading_2.imageset/tv_pull_loading_2@3x.png


+ 22 - 0
JiaPeiManage/Assets.xcassets/Modules/Animation/tv_pull_loading_3.imageset/Contents.json

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

二進制
JiaPeiManage/Assets.xcassets/Modules/Animation/tv_pull_loading_3.imageset/tv_pull_loading_3@2x.png


二進制
JiaPeiManage/Assets.xcassets/Modules/Animation/tv_pull_loading_3.imageset/tv_pull_loading_3@3x.png


+ 22 - 0
JiaPeiManage/Assets.xcassets/Modules/Animation/tv_pull_loading_4.imageset/Contents.json

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

二進制
JiaPeiManage/Assets.xcassets/Modules/Animation/tv_pull_loading_4.imageset/tv_pull_loading_4@2x.png


二進制
JiaPeiManage/Assets.xcassets/Modules/Animation/tv_pull_loading_4.imageset/tv_pull_loading_4@3x.png


+ 23 - 0
JiaPeiManage/Assets.xcassets/Modules/Common/default-user-female.imageset/Contents.json

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

二進制
JiaPeiManage/Assets.xcassets/Modules/Common/default-user-female.imageset/默认头像女.png


二進制
JiaPeiManage/Assets.xcassets/Modules/Common/default-user-female.imageset/默认头像女@2x.png


二進制
JiaPeiManage/Assets.xcassets/Modules/Common/default-user-female.imageset/默认头像女@3x.png


+ 23 - 0
JiaPeiManage/Assets.xcassets/Modules/Common/default-user-male.imageset/Contents.json

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

二進制
JiaPeiManage/Assets.xcassets/Modules/Common/default-user-male.imageset/默认头像.png


二進制
JiaPeiManage/Assets.xcassets/Modules/Common/default-user-male.imageset/默认头像@2x.png


二進制
JiaPeiManage/Assets.xcassets/Modules/Common/default-user-male.imageset/默认头像@3x.png


+ 3 - 1
JiaPeiManage/Sources/Constants/NYImage.swift

@@ -22,12 +22,14 @@ struct NYImage {
         static let mine_s = UIImage(named: "tabBar_mine_s")
         static let mine_s = UIImage(named: "tabBar_mine_s")
     }
     }
     struct Home {
     struct Home {
+        static let usermale = UIImage(named: "default-user-male")
+        static let userfemale = UIImage(named: "default-user-female")
+        
         static let shopping = UIImage(named: "home_shopping")
         static let shopping = UIImage(named: "home_shopping")
         static let search_rec = UIImage(named: "home_search_rec")
         static let search_rec = UIImage(named: "home_search_rec")
         static let search_live = UIImage(named: "home_search_live")
         static let search_live = UIImage(named: "home_search_live")
         static let downArrow = UIImage(named: "home_downArrow")
         static let downArrow = UIImage(named: "home_downArrow")
         static let rightArrow = UIImage(named: "home_right_arrow")
         static let rightArrow = UIImage(named: "home_right_arrow")
-        static let rank = UIImage(named: "home_rank")
         static let tag = UIImage(named: "home_tag")
         static let tag = UIImage(named: "home_tag")
         static let shadow = UIImage(named: "home_shadow")
         static let shadow = UIImage(named: "home_shadow")
         static let dislike = UIImage(named: "home_dislike")
         static let dislike = UIImage(named: "home_dislike")

+ 2 - 0
JiaPeiManage/Sources/Constants/NYMacros.swift

@@ -12,6 +12,8 @@ struct NYMacros {
     static let appVersion = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString")
     static let appVersion = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString")
     //应用build
     //应用build
     static let appBuild = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion")
     static let appBuild = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion")
+    //友盟key
+    static let appMenKey = "648bf1ac87568a379b57b0cd"
 
 
     ///------
     ///------
     /// iOS Version
     /// iOS Version

+ 2 - 0
JiaPeiManage/Sources/Custom/Protocol/Refreshable.swift

@@ -42,6 +42,7 @@ extension Refreshable where Self : UIViewController {
 //           return scrollView.es.addPullToRefresh(animator: RabbitHeaderAnimator(), handler: refreshHandler)
 //           return scrollView.es.addPullToRefresh(animator: RabbitHeaderAnimator(), handler: refreshHandler)
 //        default: return nil
 //        default: return nil
 //        }
 //        }
+        return scrollView.es.addPullToRefresh(animator: TVHeaderAnimator(), handler: refreshHandler)
         return nil
         return nil
     }
     }
 }
 }
@@ -59,6 +60,7 @@ extension Refreshable where Self : UIScrollView {
 //            return self.es.addPullToRefresh(animator: RabbitHeaderAnimator(), handler: refreshHandler)
 //            return self.es.addPullToRefresh(animator: RabbitHeaderAnimator(), handler: refreshHandler)
 //        default: return nil
 //        default: return nil
 //        }
 //        }
+        return self.es.addPullToRefresh(animator: TVHeaderAnimator(), handler: refreshHandler)
         return nil
         return nil
     }
     }
 }
 }

+ 6 - 6
JiaPeiManage/Sources/Custom/View/ImageViewAnimation/NetAnimationView.swift

@@ -49,7 +49,7 @@ final class NetAnimationView: UIView {
         
         
         if type == .loading {
         if type == .loading {
            textLabel.text = "正在努力加载数据中..."
            textLabel.text = "正在努力加载数据中..."
-           imageView.image = UIImage(named: "animation_loading_loading_1")
+//           imageView.image = UIImage(named: "animation_loading_loading_1")
 //           imageView.animationImages = [UIImage(named: "animation_loading_loading_1")!,UIImage(named: "animation_loading_loading_2")!]
 //           imageView.animationImages = [UIImage(named: "animation_loading_loading_1")!,UIImage(named: "animation_loading_loading_2")!]
            imageView.animationDuration = 0.5
            imageView.animationDuration = 0.5
            imageView.animationRepeatCount = 0
            imageView.animationRepeatCount = 0
@@ -57,11 +57,11 @@ final class NetAnimationView: UIView {
         
         
         if type == .failure {
         if type == .failure {
            textLabel.text = "似乎与互联网已经断开连接"
            textLabel.text = "似乎与互联网已经断开连接"
-           imageView.image = UIImage(named: "animation_loading_error_4")
-           imageView.animationImages = [UIImage(named: "animation_loading_error_1")!,
-                                        UIImage(named: "animation_loading_error_2")!,
-                                        UIImage(named: "animation_loading_error_3")!,
-                                        UIImage(named: "animation_loading_error_4")!]
+//           imageView.image = UIImage(named: "animation_loading_error_4")
+//           imageView.animationImages = [UIImage(named: "animation_loading_error_1")!,
+//                                        UIImage(named: "animation_loading_error_2")!,
+//                                        UIImage(named: "animation_loading_error_3")!,
+//                                        UIImage(named: "animation_loading_error_4")!]
            imageView.animationDuration = 2.0
            imageView.animationDuration = 2.0
            imageView.animationRepeatCount = 1
            imageView.animationRepeatCount = 1
         }
         }

+ 76 - 0
JiaPeiManage/Sources/Custom/View/RefreshHeaderAnimation/TVHeaderAnimator.swift

@@ -0,0 +1,76 @@
+//
+//  TVHeaderAnimator.swift
+//  SwiftBilibili
+//
+//  Created by 罗文 on 2021/6/20.
+//  Copyright © 2021年 罗文. All rights reserved.
+//
+
+import ESPullToRefresh
+
+final class TVHeaderAnimator: UIView,ESRefreshProtocol,ESRefreshAnimatorProtocol {
+
+    var view: UIView { return self }
+    
+    var insets: UIEdgeInsets = UIEdgeInsets.zero
+    
+    var trigger: CGFloat = 60
+    
+    var executeIncremental: CGFloat = 60
+    
+    var state: ESRefreshViewState = .pullToRefresh
+    
+    var duration : CGFloat = 0.5
+    
+    private let animationImageView = UIImageView().then{
+        $0.image = UIImage(named:"tv_pull_loading_1")
+        $0.animationImages = [UIImage(named:"tv_pull_loading_1")!,
+                              UIImage(named:"tv_pull_loading_2")!,
+                              UIImage(named:"tv_pull_loading_3")!,
+                              UIImage(named:"tv_pull_loading_4")!]
+        $0.animationDuration = 0.5
+        $0.animationRepeatCount = 0
+        $0.contentMode = .center
+    }
+    
+    override init(frame: CGRect) {
+        super.init(frame: frame)
+        
+        addSubview(animationImageView)
+    }
+    
+    required init?(coder aDecoder: NSCoder) {
+        fatalError("init(coder:) has not been implemented")
+    }
+    
+    
+    func refreshAnimationBegin(view: ESRefreshComponent) {
+        animationImageView.startAnimating()
+    }
+    
+    func refreshAnimationEnd(view: ESRefreshComponent) {
+        animationImageView.stopAnimating()
+    }
+    
+    func refresh(view: ESRefreshComponent, progressDidChange progress: CGFloat) {
+        
+    }
+    
+    func refresh(view: ESRefreshComponent, stateDidChange state: ESRefreshViewState) {
+        switch state {
+        case .pullToRefresh://普通状态
+            animationImageView.stopAnimating()
+        case .releaseToRefresh: //拉到了刷新状态
+            animationImageView.startAnimating()
+        default:break
+        }
+    }
+    
+    override func layoutSubviews() {
+        super.layoutSubviews()
+        
+        animationImageView.snp.makeConstraints({ (make) in
+            make.center.equalToSuperview()
+        })
+    }
+}

+ 4 - 0
JiaPeiManage/Sources/Main/Base/BaseTableViewController.swift

@@ -75,6 +75,10 @@ class BaseTableViewController: BaseViewController,Refreshable {
         self.showAnimationView(self.tableView)
         self.showAnimationView(self.tableView)
     }
     }
     
     
+    func hideLoadAnimation() {
+        self.hideAnimationView(self.tableView)
+    }
+    
     func stopRefresh() {
     func stopRefresh() {
         
         
         guard let isRefreshing = tableView.header?.isRefreshing else { return }
         guard let isRefreshing = tableView.header?.isRefreshing else { return }

+ 15 - 13
JiaPeiManage/Sources/Models/TraineeDataModel.swift

@@ -13,6 +13,7 @@ struct RowInfo : ImmutableMappable{
     var id : Int?
     var id : Int?
     var idcard : String?
     var idcard : String?
     var name : String?
     var name : String?
+    var sex : String?
     var phone : String?
     var phone : String?
     var photoPath : String?
     var photoPath : String?
     var remark : String?
     var remark : String?
@@ -31,19 +32,20 @@ struct RowInfo : ImmutableMappable{
         applydate = try map.value("applydate")
         applydate = try map.value("applydate")
         id = try map.value("id")
         id = try map.value("id")
         idcard = try map.value("idcard")
         idcard = try map.value("idcard")
-        name = try map.value("name")
-        phone = try map.value("phone")
-        photoPath = try map.value("photoPath")
-        remark = try map.value("remark")
-        state = try map.value("state")
-        trainFourExamStatus = try map.value("trainFourExamStatus")
-        trainFourExamTime = try map.value("trainFourExamTime")
-        trainOneExamStatus = try map.value("trainOneExamStatus")
-        trainOneExamTime = try map.value("trainOneExamTime")
-        trainThreeExamStatus = try map.value("trainThreeExamStatus")
-        trainThreeExamTime = try map.value("trainThreeExamTime")
-        trainTwoExamStatus = try map.value("trainTwoExamStatus")
-        trainTwoExamTime = try map.value("trainTwoExamTime")
+        name = try map.value("name") ?? ""
+        sex = try map.value("sex") ?? ""
+        phone = try map.value("phone") ?? ""
+        photoPath = try map.value("photoPath") ?? ""
+        remark = try map.value("remark") ?? ""
+        state = try map.value("state") ?? ""
+        trainFourExamStatus = try map.value("trainFourExamStatus") ?? ""
+        trainFourExamTime = try map.value("trainFourExamTime") ?? ""
+        trainOneExamStatus = try map.value("trainOneExamStatus") ?? ""
+        trainOneExamTime = try map.value("trainOneExamTime") ?? ""
+        trainThreeExamStatus = try map.value("trainThreeExamStatus") ?? ""
+        trainThreeExamTime = try map.value("trainThreeExamTime") ?? ""
+        trainTwoExamStatus = try map.value("trainTwoExamStatus") ?? ""
+        trainTwoExamTime = try map.value("trainTwoExamTime") ?? ""
         trainType = try map.value("trainType")
         trainType = try map.value("trainType")
         
         
     }
     }

+ 26 - 26
JiaPeiManage/Sources/Models/UserInfoModel.swift

@@ -239,49 +239,49 @@ struct UserInfo :ImmutableMappable{
     init(map: Map) throws {
     init(map: Map) throws {
         
         
         id = try map.value("id")
         id = try map.value("id")
-        coachNum = try map.value("coachNum")
-        recordDate = try map.value("recordDate")
+        coachNum = try map.value("coachNum") ?? ""
+        recordDate = try map.value("recordDate") ?? ""
         schoolId = try map.value("schoolId")
         schoolId = try map.value("schoolId")
         schoolName = try map.value("schoolName") ?? ""
         schoolName = try map.value("schoolName") ?? ""
-        name = try map.value("name")
+        name = try map.value("name") ?? ""
         sex = try map.value("sex")
         sex = try map.value("sex")
-        idcard = try map.value("idcard")
-        mobile = try map.value("mobile")
-        address = try map.value("address")
-        photo = try map.value("photo")
+        idcard = try map.value("idcard") ?? ""
+        mobile = try map.value("mobile") ?? ""
+        address = try map.value("address") ?? ""
+        photo = try map.value("photo") ?? 0
         fingerPrint = try map.value("fingerPrint") ?? ""
         fingerPrint = try map.value("fingerPrint") ?? ""
         drilicence = try map.value("drilicence")
         drilicence = try map.value("drilicence")
         expireTime = try map.value("expireTime") ?? ""
         expireTime = try map.value("expireTime") ?? ""
-        fstdrilicDate = try map.value("fstdrilicDate")
+        fstdrilicDate = try map.value("fstdrilicDate") ?? ""
         occupationNo = try map.value("occupationNo") ?? ""
         occupationNo = try map.value("occupationNo") ?? ""
         occupationLevel = try map.value("occupationLevel") ?? ""
         occupationLevel = try map.value("occupationLevel") ?? ""
-        dripermitted = try map.value("dripermitted")
+        dripermitted = try map.value("dripermitted") ?? ""
         teachpermitted = try map.value("teachpermitted")
         teachpermitted = try map.value("teachpermitted")
         employStatus = try map.value("employStatus")
         employStatus = try map.value("employStatus")
-        hireDate = try map.value("hireDate")
+        hireDate = try map.value("hireDate") ?? ""
         leaveDate = try map.value("leaveDate") ?? ""
         leaveDate = try map.value("leaveDate") ?? ""
-        createDate = try map.value("createDate")
-        createUser = try map.value("createUser")
-        createUserName = try map.value("createUserName")
-        photoPath = try map.value("photoPath")
-        updateDate = try map.value("updateDate")
-        updateUser = try map.value("updateUser")
-        updateUserName = try map.value("updateUserName")
-        cardType = try map.value("cardType")
-        cardId = try map.value("cardId")
-        logout = try map.value("logout")
-        sync = try map.value("sync")
+        createDate = try map.value("createDate") ?? ""
+        createUser = try map.value("createUser") ?? 0
+        createUserName = try map.value("createUserName") ?? ""
+        photoPath = try map.value("photoPath") ?? ""
+        updateDate = try map.value("updateDate") ?? ""
+        updateUser = try map.value("updateUser") ?? 0
+        updateUserName = try map.value("updateUserName") ?? ""
+        cardType = try map.value("cardType") ?? ""
+        cardId = try map.value("cardId") ?? ""
+        logout = try map.value("logout") ?? ""
+        sync = try map.value("sync") ?? ""
         syncTime = try map.value("syncTime") ?? ""
         syncTime = try map.value("syncTime") ?? ""
         groupId = try map.value("groupId") ?? ""
         groupId = try map.value("groupId") ?? ""
         lockStatus = try map.value("lockStatus") ?? ""
         lockStatus = try map.value("lockStatus") ?? ""
         protocolPath = try map.value("protocolPath") ?? ""
         protocolPath = try map.value("protocolPath") ?? ""
         auditStatus = try map.value("auditStatus") ?? ""
         auditStatus = try map.value("auditStatus") ?? ""
-        type = try map.value("type")
-        isIllegal = try map.value("isIllegal")
-        healthState = try map.value("healthState")
+        type = try map.value("type") ?? ""
+        isIllegal = try map.value("isIllegal") ?? ""
+        healthState = try map.value("healthState") ?? ""
         origo = try map.value("origo") ?? ""
         origo = try map.value("origo") ?? ""
-        educationLevel = try map.value("educationLevel")
-        isAgree = try map.value("isAgree")
+        educationLevel = try map.value("educationLevel") ?? ""
+        isAgree = try map.value("isAgree") ?? 0
         
         
     }
     }
 }
 }

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

@@ -188,19 +188,19 @@ extension MeTraineeListViewController : VTMagicViewDataSource{
         if pageIndex == 0 {
         if pageIndex == 0 {
             var meTraineeSubjectPageViewController = magicView.dequeueReusablePage(withIdentifier: "MeTraineeSubjectPageViewController01")
             var meTraineeSubjectPageViewController = magicView.dequeueReusablePage(withIdentifier: "MeTraineeSubjectPageViewController01")
             if meTraineeSubjectPageViewController == nil {
             if meTraineeSubjectPageViewController == nil {
-                meTraineeSubjectPageViewController = MeTraineeSubjectPageViewController()
+                meTraineeSubjectPageViewController = MeTraineeSubjectPageViewController(state: "1")
             }
             }
             return meTraineeSubjectPageViewController ?? UIViewController()
             return meTraineeSubjectPageViewController ?? UIViewController()
         } else if pageIndex == 1 {
         } else if pageIndex == 1 {
             var meTraineeSubjectPageViewController = magicView.dequeueReusablePage(withIdentifier: "MeTraineeSubjectPageViewController02")
             var meTraineeSubjectPageViewController = magicView.dequeueReusablePage(withIdentifier: "MeTraineeSubjectPageViewController02")
             if meTraineeSubjectPageViewController == nil {
             if meTraineeSubjectPageViewController == nil {
-                meTraineeSubjectPageViewController = MeTraineeSubjectPageViewController()
+                meTraineeSubjectPageViewController = MeTraineeSubjectPageViewController(state: "2")
             }
             }
             return meTraineeSubjectPageViewController ?? UIViewController()
             return meTraineeSubjectPageViewController ?? UIViewController()
         } else if pageIndex == 2 {
         } else if pageIndex == 2 {
             var meTraineeSubjectPageViewController = magicView.dequeueReusablePage(withIdentifier: "MeTraineeSubjectPageViewController03")
             var meTraineeSubjectPageViewController = magicView.dequeueReusablePage(withIdentifier: "MeTraineeSubjectPageViewController03")
             if meTraineeSubjectPageViewController == nil {
             if meTraineeSubjectPageViewController == nil {
-                meTraineeSubjectPageViewController = MeTraineeSubjectPageViewController()
+                meTraineeSubjectPageViewController = MeTraineeSubjectPageViewController(state: "3")
             }
             }
             return meTraineeSubjectPageViewController ?? UIViewController()
             return meTraineeSubjectPageViewController ?? UIViewController()
         } else if pageIndex == 3{
         } else if pageIndex == 3{

+ 15 - 0
JiaPeiManage/Sources/Modulars/学员/Controllers/MeTraineeSubjectPageViewController.swift

@@ -25,7 +25,14 @@ final class MeTraineeSubjectPageViewController: BaseTableViewController {
     var pageSize:Int = 10
     var pageSize:Int = 10
     var state = "1"
     var state = "1"
     
     
+    init(state:String) {
+        super.init()
+        self.state = state
+    }
     
     
+    required convenience init?(coder aDecoder: NSCoder) {
+        fatalError("init(coder:) has not been implemented")
+    }
     
     
     override func viewDidLoad() {
     override func viewDidLoad() {
         super.viewDidLoad()
         super.viewDidLoad()
@@ -34,6 +41,7 @@ final class MeTraineeSubjectPageViewController: BaseTableViewController {
             .subscribe(onSuccess: { traineeDataModel in
             .subscribe(onSuccess: { traineeDataModel in
                 self.traineeDataModel = traineeDataModel
                 self.traineeDataModel = traineeDataModel
                 print("coachInfoListRequest成功")
                 print("coachInfoListRequest成功")
+                self.hideLoadAnimation()
                 self.tableView.reloadData()
                 self.tableView.reloadData()
             }, onError: { error in
             }, onError: { error in
             })
             })
@@ -55,6 +63,13 @@ final class MeTraineeSubjectPageViewController: BaseTableViewController {
         tableView.separatorStyle = .none //去除分割线
         tableView.separatorStyle = .none //去除分割线
         tableView.register(UINib(nibName: "MeTraineeSubjectCell", bundle: nil), forCellReuseIdentifier: cellIdentifier)
         tableView.register(UINib(nibName: "MeTraineeSubjectCell", bundle: nil), forCellReuseIdentifier: cellIdentifier)
         tableView.rowHeight = 288.f
         tableView.rowHeight = 288.f
+        setupRefreshHeader(tableView) {[unowned self] in
+            DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
+                // 在延迟 1 秒后执行的代码
+                self.stopRefresh()
+            }
+            NSLog("AAAAAAA")
+        }
         self.isEmptyDisplay = false
         self.isEmptyDisplay = false
         
         
     }
     }

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

@@ -49,8 +49,9 @@ final class MeTraineeSubjectCell: UITableViewCell,NibLoadable {
     
     
     func setRowInfo(rowInfo:RowInfo){
     func setRowInfo(rowInfo:RowInfo){
         //用户头像
         //用户头像
-        self.user_imageview.sd_setImage(with: rowInfo.photoPath?.urlValue)
+        self.user_imageview.sd_setImage(with: rowInfo.photoPath?.urlValue, placeholderImage: rowInfo.sex == "1" ? NYImage.Home.usermale:NYImage.Home.userfemale)
         //报名时间
         //报名时间
+        
         self.jointime_label.text = "报名时间:\(rowInfo.applydate?.utf8CString)"
         self.jointime_label.text = "报名时间:\(rowInfo.applydate?.utf8CString)"
         //用户名
         //用户名
         self.username_label.text = rowInfo.name
         self.username_label.text = rowInfo.name

+ 2 - 2
JiaPeiManage/Sources/Modulars/学员/Views/MeTraineeSubjectCell.xib

@@ -33,7 +33,7 @@
                                 </userDefinedRuntimeAttribute>
                                 </userDefinedRuntimeAttribute>
                             </userDefinedRuntimeAttributes>
                             </userDefinedRuntimeAttributes>
                         </button>
                         </button>
-                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="矩形A" translatesAutoresizingMaskIntoConstraints="NO" id="adu-yu-H5N">
+                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="default-user" translatesAutoresizingMaskIntoConstraints="NO" id="adu-yu-H5N">
                             <rect key="frame" x="15" y="52" width="74" height="102"/>
                             <rect key="frame" x="15" y="52" width="74" height="102"/>
                             <constraints>
                             <constraints>
                                 <constraint firstAttribute="width" constant="74" id="dw9-Mk-KTJ"/>
                                 <constraint firstAttribute="width" constant="74" id="dw9-Mk-KTJ"/>
@@ -290,8 +290,8 @@
         <image name="K3_no" width="24" height="24"/>
         <image name="K3_no" width="24" height="24"/>
         <image name="K4_no" width="24" height="24"/>
         <image name="K4_no" width="24" height="24"/>
         <image name="call_phone" width="36" height="36"/>
         <image name="call_phone" width="36" height="36"/>
+        <image name="default-user" width="74" height="102"/>
         <image name="k2_yes" width="24" height="24"/>
         <image name="k2_yes" width="24" height="24"/>
         <image name="send_msg" width="36" height="36"/>
         <image name="send_msg" width="36" height="36"/>
-        <image name="矩形A" width="74" height="102"/>
     </resources>
     </resources>
 </document>
 </document>

+ 1 - 1
JiaPeiManage/Sources/Services/CoachAPI.swift

@@ -82,7 +82,7 @@ extension CoachAPI: TargetType {
                     "field": field,
                     "field": field,
                     "pageNum": pageNum,
                     "pageNum": pageNum,
                     "pageSize": pageSize,
                     "pageSize": pageSize,
-//                    "schoolId": schoolId,
+                    "schoolId": schoolId==0 ?"":"\(schoolId)",
                     "state": state,]
                     "state": state,]
         default:
         default:
             return nil
             return nil