Explorar o código

完成,电子日子 照片浏览 + bug 数据问题解决

openlockPPP hai 1 ano
pai
achega
1cff6f18a7
Modificáronse 35 ficheiros con 2933 adicións e 2395 borrados
  1. 1 1
      JiaPeiManage/Sources/Main/Base/BaseCollectionViewController.swift
  2. 1 1
      JiaPeiManage/Sources/Models/ETeachLogDataModel.swift
  3. 44 9
      JiaPeiManage/Sources/Models/TraineeDataModel.swift
  4. 43 2
      JiaPeiManage/Sources/Models/TraineeInfoModel.swift
  5. 1 1
      JiaPeiManage/Sources/Modulars/Mine/Controllers/MineViewController.xib
  6. 1 1
      JiaPeiManage/Sources/Modulars/Mine/ViewModel/SwitchAccountViewModel.swift
  7. 1 1
      JiaPeiManage/Sources/Modulars/学员/Controllers/EstuLogListViewController.swift
  8. 76 16
      JiaPeiManage/Sources/Modulars/学员/Controllers/EstuLogPhotoListViewController.swift
  9. 17 21
      JiaPeiManage/Sources/Modulars/学员/Controllers/MeTraineeDetails/MeTraineeDetails01Controller.swift
  10. 8 9
      JiaPeiManage/Sources/Modulars/学员/ViewModel/EstuLogListViewModel.swift
  11. 6 3
      JiaPeiManage/Sources/Modulars/学员/ViewModel/MeTraineeSearchViewModel.swift
  12. 68 30
      JiaPeiManage/Sources/Modulars/学员/ViewModel/MeTraineeSubjectViewModel.swift
  13. 115 0
      JiaPeiManage/Sources/Modulars/学员/ViewModel/Reactor/EstuLogPhotoCollReactor.swift
  14. 4 1
      JiaPeiManage/Sources/Modulars/学员/Views/EstuLog/EstuLogListDetailsCell.swift
  15. 47 12
      JiaPeiManage/Sources/Modulars/学员/Views/EstuLog/EstuLogListDetailsCell.xib
  16. 1 1
      JiaPeiManage/Sources/Modulars/学员/Views/EstuLog/EstuLogPhotoCell.swift
  17. 1 1
      JiaPeiManage/Sources/Modulars/学员/Views/EstuLog/EstuLogPhotoCellReactor.swift
  18. 19 30
      JiaPeiManage/Sources/Modulars/学员/Views/MeTraineeSubjectCell.swift
  19. 76 0
      JiaPeiManage/Sources/Modulars/学员/Views/MeTraineeSubjectCell.xib
  20. 15 2
      JiaPeiManage/Sources/Services/CoachAPI.swift
  21. 7 0
      JiaPeiManage/Sources/Services/CoachService.swift
  22. 2 0
      Podfile
  23. 9 1
      Podfile.lock
  24. 9 1
      Pods/Manifest.lock
  25. 2231 2143
      Pods/Pods.xcodeproj/project.pbxproj
  26. 10 108
      Pods/Pods.xcodeproj/xcuserdata/mimasigeling.xcuserdatad/xcschemes/xcschememanagement.plist
  27. 48 0
      Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage-acknowledgements.markdown
  28. 60 0
      Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage-acknowledgements.plist
  29. 2 0
      Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage-frameworks-Debug-input-files.xcfilelist
  30. 2 0
      Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage-frameworks-Debug-output-files.xcfilelist
  31. 2 0
      Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage-frameworks-Release-input-files.xcfilelist
  32. 2 0
      Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage-frameworks-Release-output-files.xcfilelist
  33. 4 0
      Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage-frameworks.sh
  34. 0 0
      Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage.debug.xcconfig
  35. 0 0
      Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage.release.xcconfig

+ 1 - 1
JiaPeiManage/Sources/Main/Base/BaseCollectionViewController.swift

@@ -91,7 +91,7 @@ class BaseCollectionViewController: BaseViewController,Refreshable {
     }
     
     //MARK: Private Method
-    private func stopLoad() {
+    func stopLoad() {
         
         guard let isLoading = collectionView.footer?.isRefreshing else { return }
         

+ 1 - 1
JiaPeiManage/Sources/Models/ETeachLogDataModel.swift

@@ -29,7 +29,7 @@ struct ETeachLogInfo : ImmutableMappable{
     var stuid : Int = 0
 
     init(map: Map) throws {
-        auditReason = try map.value("applydate")
+        auditReason = try map.value("auditReason") ?? ""
         auditResult = try map.value("auditResult") ?? "-1"
         carLicnum = try map.value("carLicnum") ?? ""
         classid = try map.value("classid") ?? ""

+ 44 - 9
JiaPeiManage/Sources/Models/TraineeDataModel.swift

@@ -20,21 +20,28 @@ struct RowInfo : ImmutableMappable{
     var state : String = ""
     var trainFourExamStatus : String = ""
     var trainFourExamTime : String = ""
-    var trainFourStatus : String = ""
     var trainOneExamStatus : String = ""
     var trainOneExamTime : String = ""
-    var trainOneStatus : String = ""
     var trainThreeExamStatus : String = ""
     var trainThreeExamTime : String = ""
-    var trainThreeStatus : String = ""
     var trainTwoExamStatus : String = ""
     var trainTwoExamTime : String = ""
-    var trainTwoStatus : String = ""
     var trainType : String = ""
     var bmType : String = ""
     
+    var trainFourStatus : String = "-1"
+    var trainOneStatus : String = "-1"
+    var trainThreeStatus : String = "-1"
+    var trainTwoStatus : String = "-1"
+    var trainOneStatusStr : String = ""
+    var trainTwoStatusStr : String = ""
+    var trainThreeStatusStr : String = ""
+    var trainFourStatusStr : String = ""
+    var trainOneStatusColor : String = ""
+    var trainTwoStatusColor : String = ""
+    var trainThreeStatusColor : String = ""
+    var trainFourStatusColor : String = ""
     
-
     init(map: Map) throws {
         applydate = try map.value("applydate")
         id = try map.value("id")
@@ -54,19 +61,47 @@ struct RowInfo : ImmutableMappable{
         trainTwoExamStatus = try map.value("trainTwoExamStatus") ?? ""
         trainTwoExamTime = try map.value("trainTwoExamTime") ?? ""
         
-        trainOneStatus = try map.value("trainOneStatus") ?? ""
-        trainFourStatus = try map.value("trainFourStatus") ?? ""
-        trainThreeStatus = try map.value("trainThreeStatus") ?? ""
-        trainTwoStatus = try map.value("trainTwoStatus") ?? ""
+        trainOneStatus = try map.value("trainOneStatus") ?? "-1"
+        trainFourStatus = try map.value("trainFourStatus") ?? "-1"
+        trainThreeStatus = try map.value("trainThreeStatus") ?? "-1"
+        trainTwoStatus = try map.value("trainTwoStatus") ?? "-1"
         
         trainType = try map.value("trainType")
         bmType = try map.value("bmType") ?? ""
+        switchStatus(status: Int(trainOneStatus)!, str: &trainOneStatusStr,color: &trainOneStatusColor)
+        switchStatus(status: Int(trainTwoStatus)!, str: &trainTwoStatusStr,color: &trainTwoStatusColor)
+        switchStatus(status: Int(trainThreeStatus)!, str: &trainThreeStatusStr,color: &trainThreeStatusColor)
+        switchStatus(status: Int(trainFourStatus)!, str: &trainFourStatusStr,color: &trainFourStatusColor)
     }
 
+    func switchStatus(status:Int,str:inout String,color:inout String){
+        switch status {
+            case 0:
+            str = "未达标"
+            color = "#899199"
+            case 1:
+            str = "未送审"
+            color = "#899199"
+            case 2:
+            str = "审核通过"
+            color = "#30B05C"
+            case 3:
+            str = "退回"
+            color = "#F84444"
+            case 4:
+            str = "待审核状态"
+            color = "#EF7F34"
+            default:
+            str = "未知状态"
+            color = "#899199"
+        }
+    }
 }
 
 
 
+
+
 struct TraineeDataModel : ImmutableMappable{
 
     var code : Int?

+ 43 - 2
JiaPeiManage/Sources/Models/TraineeInfoModel.swift

@@ -53,7 +53,18 @@ struct TraineeInfoModel : ImmutableMappable{
     var trainTwoExamTime : String = ""
     var trainType : String = ""
 
-    
+    var trainFourStatus : String = "-1"
+    var trainOneStatus : String = "-1"
+    var trainThreeStatus : String = "-1"
+    var trainTwoStatus : String = "-1"
+    var trainOneStatusStr : String = ""
+    var trainTwoStatusStr : String = ""
+    var trainThreeStatusStr : String = ""
+    var trainFourStatusStr : String = ""
+    var trainOneStatusColor : String = ""
+    var trainTwoStatusColor : String = ""
+    var trainThreeStatusColor : String = ""
+    var trainFourStatusColor : String = ""
 
     init(map: Map) throws {
         
@@ -100,7 +111,37 @@ struct TraineeInfoModel : ImmutableMappable{
         trainTwoExamTime = try map.value("trainTwoExamTime") ?? ""
         trainType = try map.value("trainType")
         trainTwoExamTime = try map.value("trainTwoExamTime") ?? ""
+        
+        trainOneStatus = try map.value("trainOneStatus") ?? "-1"
+        trainFourStatus = try map.value("trainFourStatus") ?? "-1"
+        trainThreeStatus = try map.value("trainThreeStatus") ?? "-1"
+        trainTwoStatus = try map.value("trainTwoStatus") ?? "-1"
+        switchStatus(status: Int(trainOneStatus)!, str: &trainOneStatusStr,color: &trainOneStatusColor)
+        switchStatus(status: Int(trainTwoStatus)!, str: &trainTwoStatusStr,color: &trainTwoStatusColor)
+        switchStatus(status: Int(trainThreeStatus)!, str: &trainThreeStatusStr,color: &trainThreeStatusColor)
+        switchStatus(status: Int(trainFourStatus)!, str: &trainFourStatusStr,color: &trainFourStatusColor)
+    }
+    func switchStatus(status:Int,str:inout String,color:inout String){
+        switch status {
+            case 0:
+            str = "未达标"
+            color = "#899199"
+            case 1:
+            str = "未送审"
+            color = "#899199"
+            case 2:
+            str = "审核通过"
+            color = "#30B05C"
+            case 3:
+            str = "退回"
+            color = "#F84444"
+            case 4:
+            str = "待审核状态"
+            color = "#EF7F34"
+            default:
+            str = "未知状态"
+            color = "#899199"
+        }
     }
-
 }
 

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

@@ -369,7 +369,7 @@
                                     <constraints>
                                         <constraint firstAttribute="height" constant="34" id="3Fs-Ho-y3f"/>
                                     </constraints>
-                                    <state key="normal" title="切换身份"/>
+                                    <state key="normal" title="切换账号"/>
                                     <userDefinedRuntimeAttributes>
                                         <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
                                             <real key="value" value="5"/>

+ 1 - 1
JiaPeiManage/Sources/Modulars/Mine/ViewModel/SwitchAccountViewModel.swift

@@ -48,7 +48,7 @@ class SwitchAccountViewModel: NSObject {
         let action2 = QMUIAlertAction(title: "切换", style: .destructive) { [unowned self] vc, action in
             self.switchLogindo(userinfo: userinfo)
         }
-        let alertController = QMUIAlertController(title: "提示", message: "确认切换身份?", preferredStyle: .alert)
+        let alertController = QMUIAlertController(title: "提示", message: "确认切换账号?", preferredStyle: .alert)
         alertController.addAction(action1)
         alertController.addAction(action2)
         let visualEffectView = UIVisualEffectView(effect: UIBlurEffect(style: .dark))

+ 1 - 1
JiaPeiManage/Sources/Modulars/学员/Controllers/EstuLogListViewController.swift

@@ -20,7 +20,7 @@ final class EstuLogListViewController: BaseTableViewController {
         $0.search_button.isHidden = true
     }
     
-    let estuLogHeaderView = EstuLogHeaderView.loadFromNib()
+//    let estuLogHeaderView = EstuLogHeaderView.loadFromNib()
     
     let mtheader01_view = MeTraineeDetails01HeaderView.loadFromNib().then {
         $0.title_label.text = "查询明细"

+ 76 - 16
JiaPeiManage/Sources/Modulars/学员/Controllers/EstuLogPhotoListViewController.swift

@@ -10,6 +10,8 @@ import RxSwift
 import RxCocoa
 import ReusableKit
 import Dollar
+import JXPhotoBrowser
+import Kingfisher
 
 final class EstuLogPhotoListViewController: BaseCollectionViewController {
     
@@ -39,6 +41,7 @@ final class EstuLogPhotoListViewController: BaseCollectionViewController {
     var classId:String = ""
     var eteachLogPhotoDataModel:ETeachLogPhotoDataModel?
     var rows : [ETeachLogPhotoInfo] = []
+    private var datasources: [EstuLogPhotoCellReactor] = []
     var page:Int = 1
     var pageSize:Int = 10
     
@@ -103,20 +106,27 @@ final class EstuLogPhotoListViewController: BaseCollectionViewController {
         collectionView.dataSource = self
         self.isEmptyDisplay = false
         self.hideLoadAnimation()
-//        if !isRcmd {
-//
-//            setupRefreshHeader(collectionView,.rabbit) {[unowned self] in
-//                self.netRequest()
-//            }
-//
-//            self.autoSetRefreshStatus(header: collectionView.header).disposed(by: disposeBag)
-//        }
-//
-//        netRequest()
-        getStudentTeachLogPhotoList()
+        
+        setupRefreshHeader(collectionView,.rabbit) {[unowned self] in
+            self.getStudentTeachLogPhotoList(isLoading: false)
+        }
+        // 设置上拉加载更多
+        collectionView.es.addInfiniteScrolling { [weak self] in
+            self?.getLoadMore()
+        }
+        getStudentTeachLogPhotoList(isLoading: true)
+        
+        // collectionView点击事件
+        collectionView.rx.itemSelected.throttle(.seconds(1), scheduler: MainScheduler.instance)
+            .subscribe(onNext: { [weak self]indexPath in
+                print("点击\(indexPath)行")
+                self?.openPhotoBrowser(with: self!.collectionView, indexPath: indexPath)
+            }).disposed(by: disposeBag)
     }
-    
-    func getStudentTeachLogPhotoList (){
+
+    func getStudentTeachLogPhotoList(isLoading:Bool){
+        page = 1
+        if isLoading {NYTips.show()}
         self.elogCoachService.elogTmsStudentPhotoByIdRequest(city: LocalManager.userInfo.city!, classId: classId, id: stuId, pageNum: page, pageSize: pageSize).subscribe(onSuccess: {[unowned self] eteachLogPhotoDataModel in
                 self.rows.removeAll()
                 self.eteachLogPhotoDataModel = eteachLogPhotoDataModel
@@ -126,12 +136,62 @@ final class EstuLogPhotoListViewController: BaseCollectionViewController {
                 self.hideLoadAnimation()
                 self.stopRefresh()
                 self.collectionView.reloadData()
+                NYTips.hide()
             }, onError: { error in
                 self.stopRefresh()
                 NYTips.hide()
             })
         .disposed(by: disposeBag)
     }
+    
+    //更多
+    func getLoadMore(){
+        //计算-页数
+        if (eteachLogPhotoDataModel != nil){
+            let total = pageSize*self.page
+            if(total<(eteachLogPhotoDataModel?.total)!){
+                self.page+=1
+            }else{
+                self.stopLoad()
+                return //已经显示完
+            }
+        }
+        //请求网络-加载
+        self.elogCoachService.elogTmsStudentPhotoByIdRequest(city: LocalManager.userInfo.city!, classId: classId, id: stuId, pageNum: page, pageSize: pageSize).subscribe(onSuccess: {[unowned self] eteachLogPhotoDataModel in
+                self.eteachLogPhotoDataModel = eteachLogPhotoDataModel
+                self.rows += eteachLogPhotoDataModel.rows!
+                print("resultInfoModel成功")
+                self.collectionView.reloadData()
+                self.stopLoad()
+            }, onError: { error in
+                self.stopLoad()
+            })
+        .disposed(by: disposeBag)
+
+    }
+    
+    func openPhotoBrowser(with collectionView: UICollectionView, indexPath: IndexPath) {
+        let browser = JXPhotoBrowser()
+        browser.numberOfItems = {
+            self.rows.count
+        }
+        browser.reloadCellAtIndex = { context in
+            let url = self.rows[context.index].filepath.flatMap { URL(string: $0) }
+            let browserCell = context.cell as? JXPhotoBrowserImageCell
+            let collectionPath = IndexPath(item: context.index, section: indexPath.section)
+            let collectionCell = collectionView.cellForItem(at: collectionPath) as? EstuLogPhotoCell
+            let placeholder = collectionCell?.coverImageView.image
+            // 用 Kingfisher 加载
+            browserCell?.imageView.kf.setImage(with: url, placeholder: placeholder)
+        }
+        browser.transitionAnimator = JXPhotoBrowserZoomAnimator(previousView: { index -> UIView? in
+            let path = IndexPath(item: index, section: indexPath.section)
+            let cell = collectionView.cellForItem(at: path) as? EstuLogPhotoCell
+            return cell?.coverImageView
+        })
+        browser.pageIndex = indexPath.item
+        browser.show()
+    }
 }
 
 extension EstuLogPhotoListViewController: UICollectionViewDataSource {
@@ -142,9 +202,9 @@ extension EstuLogPhotoListViewController: UICollectionViewDataSource {
     }
     
     func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
-        let cell = collectionView.dequeue(Reusable.ephotoCell, for: indexPath) 
+        let cell = collectionView.dequeue(Reusable.ephotoCell, for: indexPath)
+//        cell.reactor = datasources[indexPath.item]
         cell.setRowInfo(rowInfo: self.rows[indexPath.row])
-//         cell.reactor = datasources[indexPath.item]
          return cell
     }
     
@@ -167,7 +227,7 @@ extension EstuLogPhotoListViewController: UICollectionViewDelegateFlowLayout {
         
 //        let cellReactor = datasources[indexPath.item]
         
-        return  CGSize(width: NYFitReal.screenWidth*0.5, height: 172) //Reusable.rcmdCell.class.cellSize(reactor: cellReactor)
+        return  CGSize(width: NYFitReal.screenWidth*0.5, height: 174) //Reusable.rcmdCell.class.cellSize(reactor: cellReactor)
     }
     
     func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {

+ 17 - 21
JiaPeiManage/Sources/Modulars/学员/Controllers/MeTraineeDetails/MeTraineeDetails01Controller.swift

@@ -58,27 +58,23 @@ final class MeTraineeDetails01Controller: BaseTableViewController {
                               "是否激活":(info.active=="1" ? "是":"否"),
                               "备案时间":info.recordDate ?? "",
                               "所属机构":info.schoolName ?? "",]
-        let onetime:String = info.trainOneExamStatus=="1" ? "运管已签章"+info.trainOneExamTime.prefix(10):"无"
-        let twotime:String = info.trainTwoExamStatus=="1" ? "运管已签章"+info.trainTwoExamTime.prefix(10):"无"
-        let threetime:String = info.trainThreeExamStatus=="1" ? "运管已签章"+info.trainThreeExamTime.prefix(10):"无"
-        let fourtime:String = info.trainFourExamStatus=="1" ? "运管已签章"+info.trainFourExamTime.prefix(10):"无"
-
-        if (info.trainOneExamStatus=="1"){
-            groupColorList["阶段一学时"] = "#35BF5E"
-            groupColorList["科一已打/所需学时"] = "#35BF5E"
-        }
-        if(info.trainTwoExamStatus=="1"){
-            groupColorList["阶段二学时"] = "#35BF5E"
-            groupColorList["科二已打/所需学时"] = "#35BF5E"
-        }
-        if(info.trainThreeExamStatus=="1"){
-            groupColorList["阶段三学时"] = "#35BF5E"
-            groupColorList["科三已打/所需学时"] = "#35BF5E"
-        }
-        if(info.trainFourExamStatus=="1"){
-            groupColorList["阶段四学时"] = "#35BF5E"
-            groupColorList["科四已打/所需学时"] = "#35BF5E"
-        }
+//        let onetime:String = info.trainOneExamStatus=="1" ? "运管已签章"+info.trainOneExamTime.prefix(10):"无"
+//        let twotime:String = info.trainTwoExamStatus=="1" ? "运管已签章"+info.trainTwoExamTime.prefix(10):"无"
+//        let threetime:String = info.trainThreeExamStatus=="1" ? "运管已签章"+info.trainThreeExamTime.prefix(10):"无"
+//        let fourtime:String = info.trainFourExamStatus=="1" ? "运管已签章"+info.trainFourExamTime.prefix(10):"无"
+        let onetime:String = info.trainOneStatusStr
+        let twotime:String = info.trainTwoStatusStr
+        let threetime:String = info.trainThreeStatusStr
+        let fourtime:String = info.trainFourStatusStr
+        groupColorList["阶段一学时"] = info.trainOneStatusColor
+        groupColorList["科一已打/所需学时"] = "#35BF5E"
+        groupColorList["阶段二学时"] = info.trainTwoStatusColor
+        groupColorList["科二已打/所需学时"] = "#35BF5E"
+        groupColorList["阶段三学时"] = info.trainThreeStatusColor
+        groupColorList["科三已打/所需学时"] = "#35BF5E"
+        groupColorList["阶段四学时"] = info.trainFourStatusColor
+        groupColorList["科四已打/所需学时"] = "#35BF5E"
+        
         
         groupList["培训信息"] = ["阶段一学时":onetime,
                               "阶段二学时":twotime,

+ 8 - 9
JiaPeiManage/Sources/Modulars/学员/ViewModel/EstuLogListViewModel.swift

@@ -124,15 +124,14 @@ extension EstuLogListViewModel:UITableViewDataSource {
         let header_view = UIView().then {
             $0.backgroundColor = .db_theme
         }
-        header_view.addSubview(self.vc!.estuLogHeaderView)
-        self.vc!.estuLogHeaderView.snp.makeConstraints { make in
-            make.left.right.top.equalTo(header_view)
-            make.height.equalTo(59.f)
-        }
+//        header_view.addSubview(self.vc!.estuLogHeaderView)
+//        self.vc!.estuLogHeaderView.snp.makeConstraints { make in
+//            make.left.right.top.equalTo(header_view)
+//            make.height.equalTo(59.f)
+//        }
         header_view.addSubview(self.vc!.mtheader01_view)
         self.vc!.mtheader01_view.snp.makeConstraints { make in
-            make.top.equalTo(self.vc!.estuLogHeaderView.bottom)
-            make.left.right.equalTo(header_view)
+            make.top.left.right.equalTo(header_view)
             make.height.equalTo(52.f)
         }
         header_view.addSubview(self.vc!.header01_view)
@@ -146,7 +145,7 @@ extension EstuLogListViewModel:UITableViewDataSource {
     }
     
     func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
-        return 155.f
+        return 96.f
     }
     
     func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
@@ -167,7 +166,7 @@ extension EstuLogListViewModel:UITableViewDataSource {
     
     func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
         if(selectPath==indexPath.row){
-            return 465.f;
+            return 520.f;
         }
         return 80.f;
     }

+ 6 - 3
JiaPeiManage/Sources/Modulars/学员/ViewModel/MeTraineeSearchViewModel.swift

@@ -33,11 +33,13 @@ class MeTraineeSearchViewModel: NSObject {
     override init() {
         super.init()
 //        searchCoachInfoList()
+        
     }
     
     /// 数据请求
     func searchCoachInfoList(vc:MeTraineeSearchPageViewController)
     {
+        coachId = "\(LocalManager.userInfo.id)" //8-28 都传入coachId 都由服务端判断
         print("网络请求")
         var keyword:String = vc.search_textfield.text!.trimmingCharacters(in: .whitespacesAndNewlines)
         if keyword == "" {
@@ -84,8 +86,8 @@ class MeTraineeSearchViewModel: NSObject {
             
             
         }else{//绑定的学员+remark=1+ 走原始api
-            let coachIdStr = (appCoachId == "" ? coachId: "")
-            self.cocahService.coachInfoListRequest(city: LocalManager.userInfo.city!, appCoachId: appCoachId, coachId: coachIdStr, field: keyword, pageNum: page, pageSize: pageSize, schoolId: schoolId, state: state)
+//            let coachIdStr = (appCoachId == "" ? coachId: "")
+            self.cocahService.coachInfoListRequest(city: LocalManager.userInfo.city!, appCoachId: appCoachId, coachId: coachId, field: keyword, pageNum: page, pageSize: pageSize, schoolId: schoolId, state: state)
                 .subscribe(onSuccess: { [unowned self] traineeDataModel in
                     self.rows.removeAll()
                     self.traineeDataModel = traineeDataModel
@@ -105,6 +107,7 @@ class MeTraineeSearchViewModel: NSObject {
     
     //更多
     func getLoadMore(vc:MeTraineeSearchPageViewController){
+        coachId = "\(LocalManager.userInfo.id)" //8-28 都传入coachId 都由服务端判断
         //计算-页数
         if (traineeDataModel != nil){
             let total = pageSize*self.page
@@ -146,7 +149,7 @@ class MeTraineeSearchViewModel: NSObject {
             }
             
         }else{//绑定的学员+remark=1+ 走原始api
-            self.cocahService.coachInfoListRequest(city: LocalManager.userInfo.city!, appCoachId: appCoachId, coachId: "", field: keyword, pageNum: page, pageSize: pageSize, schoolId: schoolId, state: state)
+            self.cocahService.coachInfoListRequest(city: LocalManager.userInfo.city!, appCoachId: appCoachId, coachId: coachId, field: keyword, pageNum: page, pageSize: pageSize, schoolId: schoolId, state: state)
                 .subscribe(onSuccess: { [unowned self] traineeDataModel in
                     self.traineeDataModel = traineeDataModel
                     if(traineeDataModel.rows!.count>0){

+ 68 - 30
JiaPeiManage/Sources/Modulars/学员/ViewModel/MeTraineeSubjectViewModel.swift

@@ -39,22 +39,42 @@ class MeTraineeSubjectViewModel: NSObject {
         let coachId = "\(LocalManager.userInfo.id)" //8-28 都传入coachId 都由服务端判断
         if (self.type == .advancet){ //预报名
             if state == "0" {
-                self.cocahService.coachTempListRequest(city: LocalManager.userInfo.city!, appCoachId: "", coachId: coachId, field: "", pageNum: page, pageSize: pageSize, schoolId: schoolId, state: "")
-                    .subscribe(onSuccess: {[unowned self] traineeDataModel in
-                        self.rows.removeAll()
-                        self.traineeDataModel = traineeDataModel
-                        self.rows += traineeDataModel.rows!
-                        itemsSubject.onNext(self.rows)//消息rx
-                        print("coachInfoListRequest成功")
-                        vc.isEmptyDisplay = true
-                        vc.hideLoadAnimation()
-                        vc.tableView.reloadData()
-                        vc.stopRefresh()
-                        NotificationCenter.default.post(name: Notification.updateItemTopTotalNameNotification, object: [traineeDataModel.total,Int(self.state)!])
-                    }, onError: { error in
-                        vc.stopRefresh()
-                    })
-                    .disposed(by: vc.disposeBag)
+                if (schoolId>0){//在校
+                    self.cocahService.coachTempListRequest(city: LocalManager.userInfo.city!, appCoachId: "", coachId: coachId, field: "", pageNum: page, pageSize: pageSize, schoolId: schoolId, state: "")
+                        .subscribe(onSuccess: {[unowned self] traineeDataModel in
+                            self.rows.removeAll()
+                            self.traineeDataModel = traineeDataModel
+                            self.rows += traineeDataModel.rows!
+                            itemsSubject.onNext(self.rows)//消息rx
+                            print("coachInfoListRequest成功")
+                            vc.isEmptyDisplay = true
+                            vc.hideLoadAnimation()
+                            vc.tableView.reloadData()
+                            vc.stopRefresh()
+                            NotificationCenter.default.post(name: Notification.updateItemTopTotalNameNotification, object: [traineeDataModel.total,Int(self.state)!])
+                        }, onError: { error in
+                            vc.stopRefresh()
+                        })
+                        .disposed(by: vc.disposeBag)
+                }else {//我的
+                    self.cocahService.mycoachTempListRequest(city: LocalManager.userInfo.city!, appCoachId: "", coachId: coachId, field: "", pageNum: page, pageSize: pageSize, schoolId: schoolId, state: "")
+                        .subscribe(onSuccess: {[unowned self] traineeDataModel in
+                            self.rows.removeAll()
+                            self.traineeDataModel = traineeDataModel
+                            self.rows += traineeDataModel.rows!
+                            itemsSubject.onNext(self.rows)//消息rx
+                            print("coachInfoListRequest成功")
+                            vc.isEmptyDisplay = true
+                            vc.hideLoadAnimation()
+                            vc.tableView.reloadData()
+                            vc.stopRefresh()
+                            NotificationCenter.default.post(name: Notification.updateItemTopTotalNameNotification, object: [traineeDataModel.total,Int(self.state)!])
+                        }, onError: { error in
+                            vc.stopRefresh()
+                        })
+                        .disposed(by: vc.disposeBag)
+                }
+                
             }else {
                 if (schoolId>0){//在校
                     self.cocahService.coachInfoListRequest(city: LocalManager.userInfo.city!, appCoachId: "", coachId: coachId, field: "", pageNum: page, pageSize: pageSize, schoolId: schoolId, state: state)
@@ -171,20 +191,38 @@ class MeTraineeSubjectViewModel: NSObject {
         let coachId = "\(LocalManager.userInfo.id)" //8-28 都传入coachId 都由服务端判断
         if (self.type == .advancet){ //预报名
             if state == "0" {
-                self.cocahService.coachTempListRequest(city: LocalManager.userInfo.city!, appCoachId: "", coachId: coachId, field: "", pageNum: page, pageSize: pageSize, schoolId: schoolId, state: "")
-                    .subscribe(onSuccess: {[unowned self] traineeDataModel in
-                        self.traineeDataModel = traineeDataModel
-                        if(traineeDataModel.rows!.count>0){
-                            self.rows += traineeDataModel.rows!
-                        }
-                        itemsSubject.onNext(self.rows)//消息rx
-                        print("coachInfoListRequest成功")
-    //                    vc.tableView.reloadData()
-                        vc.stopLoad()
-                    }, onError: { error in
-                        vc.stopRefresh()
-                    })
-                    .disposed(by: vc.disposeBag)
+                if (schoolId>0){//在校
+                    self.cocahService.mycoachTempListRequest(city: LocalManager.userInfo.city!, appCoachId: "", coachId: coachId, field: "", pageNum: page, pageSize: pageSize, schoolId: schoolId, state: "")
+                        .subscribe(onSuccess: {[unowned self] traineeDataModel in
+                            self.traineeDataModel = traineeDataModel
+                            if(traineeDataModel.rows!.count>0){
+                                self.rows += traineeDataModel.rows!
+                            }
+                            itemsSubject.onNext(self.rows)//消息rx
+                            print("coachInfoListRequest成功")
+        //                    vc.tableView.reloadData()
+                            vc.stopLoad()
+                        }, onError: { error in
+                            vc.stopRefresh()
+                        })
+                        .disposed(by: vc.disposeBag)
+                }else {//我的
+                    self.cocahService.coachTempListRequest(city: LocalManager.userInfo.city!, appCoachId: "", coachId: coachId, field: "", pageNum: page, pageSize: pageSize, schoolId: schoolId, state: "")
+                        .subscribe(onSuccess: {[unowned self] traineeDataModel in
+                            self.traineeDataModel = traineeDataModel
+                            if(traineeDataModel.rows!.count>0){
+                                self.rows += traineeDataModel.rows!
+                            }
+                            itemsSubject.onNext(self.rows)//消息rx
+                            print("coachInfoListRequest成功")
+        //                    vc.tableView.reloadData()
+                            vc.stopLoad()
+                        }, onError: { error in
+                            vc.stopRefresh()
+                        })
+                        .disposed(by: vc.disposeBag)
+                }
+                
             }else {
                 if (schoolId>0){//在校
                     self.cocahService.coachInfoListRequest(city: LocalManager.userInfo.city!, appCoachId: "", coachId: coachId, field: "", pageNum: page, pageSize: pageSize, schoolId: schoolId, state: state)

+ 115 - 0
JiaPeiManage/Sources/Modulars/学员/ViewModel/Reactor/EstuLogPhotoCollReactor.swift

@@ -0,0 +1,115 @@
+//
+//  EstuLogPhotoCollReactor.swift
+//  JiaPeiManage
+//
+//  Created by Ning.ge on 2023/9/1.
+//
+
+import ReactorKit
+
+import RxSwift
+
+final class DramaRcmdCellReactor: Reactor {
+
+    enum Action {
+        case follow(season_id:String, season_type:String)
+        case unFollow(season_id:String, season_type:String)
+    }
+    
+    struct State {
+        var coverURL: URL?
+        var favourites: String?
+        var badge: String?
+        var title: String
+        var latestUpdate: String
+        var latestUpdateColor: UIColor
+        var watchProgress: String?
+        var tagDesc: String?
+        var season_id:String?
+        var season_type:String?
+        var isRcmd: Bool
+        var isHiddenLine: Bool
+    }
+    
+    let initialState: State
+    
+    private let service: HomeServiceType
+    
+    init(recommend: DramaRecommendModel, service: HomeServiceType, isLast:Bool) {
+        
+        self.service = service
+        
+        let coverURL = URL(string: recommend.cover)
+        let favourites = "\(recommend.favorites ?? "")人追番"
+        let latestUpdate = "更新至第\(recommend.newest_ep_index)话"
+        var tagDesc: String = ""
+        if let tags = recommend.tags {
+            for tag in tags {
+               tagDesc += ",\(tag.tag_name)"
+            }
+        }
+        
+        if !tagDesc.isEmpty {
+            tagDesc.remove(at: String.Index(utf16Offset: 0, in: tagDesc))
+        }
+        self.initialState = State(coverURL: coverURL,
+                                  favourites: favourites,
+                                  badge: recommend.badge,
+                                  title: recommend.title,
+                                  latestUpdate: latestUpdate,
+                                  latestUpdateColor:UIColor.db_pink,
+                                  watchProgress: nil,
+                                  tagDesc: tagDesc,
+                                  season_id:recommend.season_id!,
+                                  season_type:"\(recommend.season_type!)",
+                                  isRcmd:true,
+                                  isHiddenLine: false)
+        _ = self.state
+    }
+    
+    init(like: DramaLikeModel, service: HomeServiceType, isLast:Bool) {
+        
+        self.service = service
+        
+        let coverURL = URL(string: like.cover)
+        let latestUpdate = "更新至第\(like.newest_ep_index)话"
+        var watchProgress: String?
+        if like.user_season.last_ep_index.isEmpty {
+            watchProgress = "尚未观看"
+        }else{
+            if let num = Int(like.user_season.last_ep_index) {
+                watchProgress = "看到第\(num)话"
+            }else{
+                watchProgress = "看到\(like.user_season.last_ep_index)"
+            }
+        }
+        
+        self.initialState = State(coverURL: coverURL,
+                                  favourites: nil,
+                                  badge: like.badge,
+                                  title: like.title,
+                                  latestUpdate: latestUpdate,
+                                  latestUpdateColor:UIColor.db_darkGray,
+                                  watchProgress:watchProgress,
+                                  tagDesc: nil,
+                                  season_id:nil,
+                                  season_type:nil,
+                                  isRcmd:false,
+                                  isHiddenLine: isLast)
+        _ = self.state
+    }
+    //只需调用接口,其他不用处理
+    func mutate(action: Action) -> Observable<Void> {
+        switch action {
+        case .follow(let season_id, let season_type):
+            
+            BilibiliToaster.show("由于接口加密,所以需要看到类似B站的效果必须用自己手机抓包,将请求参数替换")
+            
+           _ = service.dramaFollow(season_id: season_id, season_type: season_type).asObservable().subscribe()
+            return .empty()
+        case .unFollow(let season_id, let season_type):
+           _ = service.dramaUnFollow(season_id: season_id, season_type: season_type).subscribe()
+            return .empty()
+        }
+    }
+}

+ 4 - 1
JiaPeiManage/Sources/Modulars/学员/Views/EstuLog/EstuLogListDetailsCell.swift

@@ -18,7 +18,8 @@ final class EstuLogListDetailsCell: UITableViewCell,NibLoadable {
     @IBOutlet weak var end_time_label: UILabel!
     
     @IBOutlet weak var stu_time_label: UILabel!
-    
+    //培训阶段
+    @IBOutlet weak var px_stage_label: UILabel!
     //培训时长
     @IBOutlet weak var px_time_label: UILabel!
     //培训里程
@@ -50,6 +51,8 @@ final class EstuLogListDetailsCell: UITableViewCell,NibLoadable {
         self.start_time_label.text = rowInfo.startTime
         self.end_time_label.text = rowInfo.endTime
         self.stu_time_label.text = rowInfo.vaildTime! + "分钟"
+        //培训阶段
+        self.px_stage_label.text = "第" + rowInfo.trainSubject! + "阶段"
         //培训时长
         self.px_time_label.text = rowInfo.duration! + "分钟"
         //培训里程

+ 47 - 12
JiaPeiManage/Sources/Modulars/学员/Views/EstuLog/EstuLogListDetailsCell.xib

@@ -11,7 +11,7 @@
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
         <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="EstuLogListDetailsCell" customModule="JiaPeiManage" customModuleProvider="target">
-            <rect key="frame" x="0.0" y="0.0" width="414" height="465"/>
+            <rect key="frame" x="0.0" y="0.0" width="414" height="520"/>
             <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
             <subviews>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ynt-at-eQ0" userLabel="View-(content)">
@@ -76,14 +76,45 @@
                     </constraints>
                 </view>
                 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="arrow_down" translatesAutoresizingMaskIntoConstraints="NO" id="ToO-wy-ONc">
-                    <rect key="frame" x="198.66666666666666" y="448" width="17" height="9"/>
+                    <rect key="frame" x="198.66666666666666" y="503" width="17" height="9"/>
                     <constraints>
                         <constraint firstAttribute="width" constant="17" id="OGf-0g-9PI"/>
                         <constraint firstAttribute="height" constant="9" id="PCq-NQ-7qy"/>
                     </constraints>
                 </imageView>
-                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="v1c-8g-Voz" userLabel="View-cell">
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="mO1-qH-b8f" userLabel="View-cell-jd">
                     <rect key="frame" x="15" y="77" width="384" height="40"/>
+                    <subviews>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="培训阶段" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nWp-9j-FwZ">
+                            <rect key="frame" x="15" y="0.0" width="90" height="40"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="90" id="efP-6D-rs4"/>
+                            </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="果冻" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nbS-CM-5mV">
+                            <rect key="frame" x="115" y="0.0" width="254" height="40"/>
+                            <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>
+                    </subviews>
+                    <color key="backgroundColor" red="0.066666666669999999" green="0.20000000000000001" blue="0.3411764706" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    <constraints>
+                        <constraint firstAttribute="bottom" secondItem="nbS-CM-5mV" secondAttribute="bottom" id="21i-K7-Nvr"/>
+                        <constraint firstAttribute="trailing" secondItem="nbS-CM-5mV" secondAttribute="trailing" constant="15" id="IFE-O7-zoo"/>
+                        <constraint firstItem="nWp-9j-FwZ" firstAttribute="top" secondItem="mO1-qH-b8f" secondAttribute="top" id="VmZ-QC-ZmH"/>
+                        <constraint firstItem="nWp-9j-FwZ" firstAttribute="leading" secondItem="mO1-qH-b8f" secondAttribute="leading" constant="15" id="gv0-RZ-nfQ"/>
+                        <constraint firstItem="nbS-CM-5mV" firstAttribute="top" secondItem="mO1-qH-b8f" secondAttribute="top" id="isx-By-sa7"/>
+                        <constraint firstAttribute="bottom" secondItem="nWp-9j-FwZ" secondAttribute="bottom" id="jBz-z1-KjX"/>
+                        <constraint firstAttribute="height" constant="40" id="tiI-Ho-BYP"/>
+                        <constraint firstItem="nbS-CM-5mV" firstAttribute="leading" secondItem="nWp-9j-FwZ" secondAttribute="trailing" constant="10" id="z0n-Rd-FEq"/>
+                    </constraints>
+                </view>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="v1c-8g-Voz" userLabel="View-cell">
+                    <rect key="frame" x="15" y="122" width="384" height="40"/>
                     <subviews>
                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="培训时长" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="NdJ-tv-UdD">
                             <rect key="frame" x="15" y="0.0" width="90" height="40"/>
@@ -114,7 +145,7 @@
                     </constraints>
                 </view>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="6zz-CY-b9P" userLabel="View-cell">
-                    <rect key="frame" x="15" y="122" width="384" height="40"/>
+                    <rect key="frame" x="15" y="167" width="384" height="40"/>
                     <subviews>
                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="培训里程" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YBb-cg-DaT">
                             <rect key="frame" x="15" y="0.0" width="90" height="40"/>
@@ -145,7 +176,7 @@
                     </constraints>
                 </view>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="UHn-9D-ufG" userLabel="View-cell">
-                    <rect key="frame" x="15" y="167" width="384" height="40"/>
+                    <rect key="frame" x="15" y="212" width="384" height="40"/>
                     <subviews>
                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="学时类型" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Z6k-0r-gNk">
                             <rect key="frame" x="15" y="0.0" width="90" height="40"/>
@@ -176,7 +207,7 @@
                     </constraints>
                 </view>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Oeb-AO-wWP" userLabel="View-cell">
-                    <rect key="frame" x="15" y="212" width="384" height="40"/>
+                    <rect key="frame" x="15" y="257" width="384" height="40"/>
                     <subviews>
                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="培训车辆" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3Vv-PJ-a7e">
                             <rect key="frame" x="15" y="0.0" width="90" height="40"/>
@@ -207,7 +238,7 @@
                     </constraints>
                 </view>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="v99-Ck-iAO" userLabel="View-cell">
-                    <rect key="frame" x="15" y="257" width="384" height="40"/>
+                    <rect key="frame" x="15" y="302" width="384" height="40"/>
                     <subviews>
                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="备案状态" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5Wh-Jl-me2">
                             <rect key="frame" x="15" y="0.0" width="90" height="40"/>
@@ -238,7 +269,7 @@
                     </constraints>
                 </view>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="5Kc-xn-0HH" userLabel="View-cell">
-                    <rect key="frame" x="15" y="302" width="384" height="40"/>
+                    <rect key="frame" x="15" y="347" width="384" height="40"/>
                     <subviews>
                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="监管审核" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="n2W-fU-UgD">
                             <rect key="frame" x="15" y="0.0" width="90" height="40"/>
@@ -269,7 +300,7 @@
                     </constraints>
                 </view>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="50h-s3-FxI" userLabel="View-cell">
-                    <rect key="frame" x="15" y="347" width="384" height="40"/>
+                    <rect key="frame" x="15" y="392" width="384" height="40"/>
                     <subviews>
                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="监管复核结果" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="IGz-DC-s9Q">
                             <rect key="frame" x="15" y="0.0" width="90" height="40"/>
@@ -283,7 +314,7 @@
                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="果冻" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YVT-Qv-O4p">
                             <rect key="frame" x="120" y="0.0" width="249" height="40"/>
                             <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"/>
+                            <color key="textColor" red="0.20784313725490194" green="0.74901960784313726" blue="0.36862745098039218" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             <nil key="highlightedColor"/>
                         </label>
                     </subviews>
@@ -300,7 +331,7 @@
                     </constraints>
                 </view>
                 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="rrg-ux-rHK">
-                    <rect key="frame" x="15" y="402" width="73" height="36"/>
+                    <rect key="frame" x="15" y="447" width="73" height="36"/>
                     <color key="backgroundColor" red="0.20784313725490194" green="0.74901960784313726" blue="0.36862745098039218" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                     <constraints>
                         <constraint firstAttribute="width" constant="73" id="6uJ-8t-wRf"/>
@@ -334,17 +365,20 @@
                 <constraint firstItem="v1c-8g-Voz" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" constant="15" id="KDC-eh-F4W"/>
                 <constraint firstItem="UHn-9D-ufG" firstAttribute="top" secondItem="6zz-CY-b9P" secondAttribute="bottom" constant="5" id="NAt-wY-mlI"/>
                 <constraint firstItem="rrg-ux-rHK" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" constant="15" id="QzN-JW-cjq"/>
-                <constraint firstItem="v1c-8g-Voz" firstAttribute="top" secondItem="Ynt-at-eQ0" secondAttribute="bottom" constant="10" id="RYh-6O-mWs"/>
+                <constraint firstItem="v1c-8g-Voz" firstAttribute="top" secondItem="mO1-qH-b8f" secondAttribute="bottom" constant="5" id="RYh-6O-mWs"/>
                 <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="Ynt-at-eQ0" secondAttribute="trailing" id="TkJ-Gz-DiE"/>
                 <constraint firstItem="vUN-kp-3ea" firstAttribute="bottom" secondItem="ToO-wy-ONc" secondAttribute="bottom" constant="8" id="Ww0-59-Zab"/>
+                <constraint firstItem="mO1-qH-b8f" firstAttribute="top" secondItem="Ynt-at-eQ0" secondAttribute="bottom" constant="10" id="YUt-pA-BJv"/>
                 <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="Oeb-AO-wWP" secondAttribute="trailing" constant="15" id="dmT-rm-3fg"/>
                 <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="v99-Ck-iAO" secondAttribute="trailing" constant="15" id="fOd-jE-RSS"/>
                 <constraint firstItem="v99-Ck-iAO" firstAttribute="top" secondItem="Oeb-AO-wWP" secondAttribute="bottom" constant="5" id="gFn-US-f0r"/>
                 <constraint firstItem="rrg-ux-rHK" firstAttribute="top" secondItem="50h-s3-FxI" secondAttribute="bottom" constant="15" id="hfR-ot-L2F"/>
                 <constraint firstItem="ToO-wy-ONc" firstAttribute="centerX" secondItem="iN0-l3-epB" secondAttribute="centerX" id="kXy-F1-lGf"/>
                 <constraint firstItem="5Kc-xn-0HH" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" constant="15" id="nne-cM-Hpf"/>
+                <constraint firstItem="mO1-qH-b8f" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" constant="15" id="oPB-yN-hDA"/>
                 <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="v1c-8g-Voz" secondAttribute="trailing" constant="15" id="oTR-x9-piK"/>
                 <constraint firstItem="50h-s3-FxI" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" constant="15" id="omN-er-JLW"/>
+                <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="mO1-qH-b8f" secondAttribute="trailing" constant="15" id="pfN-Iu-EkF"/>
                 <constraint firstItem="6zz-CY-b9P" firstAttribute="top" secondItem="v1c-8g-Voz" secondAttribute="bottom" constant="5" id="ph1-Yk-Nj0"/>
                 <constraint firstItem="v99-Ck-iAO" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" constant="15" id="rbv-6d-nwC"/>
                 <constraint firstItem="50h-s3-FxI" firstAttribute="top" secondItem="5Kc-xn-0HH" secondAttribute="bottom" constant="5" id="rtM-eM-IkS"/>
@@ -360,6 +394,7 @@
                 <outlet property="name_label" destination="TjO-7K-E2t" id="wIu-g9-jXl"/>
                 <outlet property="px_car_label" destination="d6s-u5-I5K" id="7dk-7V-nSQ"/>
                 <outlet property="px_mile_label" destination="b6x-El-IrZ" id="p0v-iC-NFw"/>
+                <outlet property="px_stage_label" destination="nbS-CM-5mV" id="NRV-CK-zXk"/>
                 <outlet property="px_time_label" destination="xlR-BZ-V0w" id="c7l-5r-Lhe"/>
                 <outlet property="px_type_label" destination="QSe-Tl-KaZ" id="Yjj-mc-oFX"/>
                 <outlet property="records_state_label" destination="882-CW-I0n" id="LvI-Z5-QwN"/>

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

@@ -58,7 +58,7 @@ final class EstuLogPhotoCell: BaseCollectionViewCell,View {
 //        reactor.state.map{$0.coverURL}
 //            .bind(to: coverImageView.rx.image(placeholder: .placeholderImage(bgSize:placeholderSize)))
 //            .disposed(by: disposeBag)
-//
+
 //        reactor.state.map{$0.title}
 //            .distinctUntilChanged()
 //            .bind(to: titleLabel.rx.text)

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

@@ -17,7 +17,7 @@ final class EstuLogPhotoCellReactor: Reactor {
     }
     
     struct State {
-//        var coverURL: URL?
+        var coverURL: URL?
         var favourites: String?
         var title: String
     }

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

@@ -33,12 +33,16 @@ final class MeTraineeSubjectCell: UITableViewCell,NibLoadable {
     //科目1-4
     @IBOutlet weak var k1_imageview: UIImageView!
     @IBOutlet weak var k1_label: UILabel!
+    @IBOutlet weak var k1_button: UIButton!
     @IBOutlet weak var k2_imageview: UIImageView!
     @IBOutlet weak var k2_label: UILabel!
+    @IBOutlet weak var k2_button: UIButton!
     @IBOutlet weak var k3_imageview: UIImageView!
     @IBOutlet weak var k3_label: UILabel!
+    @IBOutlet weak var k3_button: UIButton!
     @IBOutlet weak var k4_imageview: UIImageView!
     @IBOutlet weak var k4_label: UILabel!
+    @IBOutlet weak var k4_button: UIButton!
     //预报名
     @IBOutlet weak var stumake_imageview: UIImageView!
 
@@ -54,7 +58,6 @@ final class MeTraineeSubjectCell: UITableViewCell,NibLoadable {
         self.contentView.backgroundColor = .db_theme
         self.selectionStyle = .none
 
-        
     }
     
     func setRowInfo(rowInfo:RowInfo){
@@ -72,36 +75,22 @@ final class MeTraineeSubjectCell: UITableViewCell,NibLoadable {
         //电话
         self.phone_label.text = rowInfo.phone
         //阶段btn
-        self.state_button.setTitle("阶段\(NYSource.statedicts[rowInfo.state ?? ""]!)", for: .normal)
+        var stateStr = rowInfo.state == "5" ? "结业":"阶段\(NYSource.statedicts[rowInfo.state ?? ""]!)"
+        
+        self.state_button.setTitle(stateStr, for: .normal)
         //科目1-4
-        var k1Img = "K1_no", k1Txt = "未通过"
-        if rowInfo.trainOneExamStatus=="1" {
-            k1Img = "K1_yes"
-            k1Txt = "\(rowInfo.trainOneExamTime.prefix(10) ?? "")"
-        }
-        self.k1_imageview.image = UIImage(named: k1Img)
-        self.k1_label.text = k1Txt
-        var k2Img = "K2_no", k2Txt = "未通过"
-        if rowInfo.trainTwoExamStatus=="1" {
-            k2Img = "K2_yes"
-            k2Txt = "\(rowInfo.trainTwoExamTime.prefix(10) ?? "")"
-        }
-        self.k2_imageview.image = UIImage(named: k2Img)
-        self.k2_label.text = k2Txt
-        var k3Img = "K3_no", k3Txt = "未通过"
-        if rowInfo.trainThreeExamStatus=="1" {
-            k3Img = "K3_yes"
-            k3Txt = "\(rowInfo.trainThreeExamTime.prefix(10) ?? "")"
-        }
-        self.k3_imageview.image = UIImage(named: k3Img)
-        self.k3_label.text = k3Txt
-        var k4Img = "K4_no", k4Txt = "未通过"
-        if rowInfo.trainThreeExamStatus=="1" {
-            k4Img = "K4_yes"
-            k4Txt = "\(rowInfo.trainFourExamTime.prefix(10) ?? "")"
-        }
-        self.k4_imageview.image = UIImage(named: k4Img)
-        self.k4_label.text = k4Txt
+        self.k1_label.text = rowInfo.trainOneStatusStr
+        self.k1_label.textColor = UIColor(rowInfo.trainOneStatusColor)
+        self.k1_button.backgroundColor = UIColor(rowInfo.trainOneStatusColor)
+        self.k2_label.text = rowInfo.trainTwoStatusStr
+        self.k2_label.textColor = UIColor(rowInfo.trainTwoStatusColor)
+        self.k2_button.backgroundColor = UIColor(rowInfo.trainTwoStatusColor)
+        self.k3_label.text = rowInfo.trainThreeStatusStr
+        self.k3_label.textColor = UIColor(rowInfo.trainThreeStatusColor)
+        self.k3_button.backgroundColor = UIColor(rowInfo.trainThreeStatusColor)
+        self.k4_label.text = rowInfo.trainFourStatusStr
+        self.k4_label.textColor = UIColor(rowInfo.trainFourStatusColor)
+        self.k4_button.backgroundColor = UIColor(rowInfo.trainFourStatusColor)
         //备注
         self.remark_label.text = "备注:" + ((rowInfo.remark==nil||rowInfo.remark=="") ? "无":rowInfo.remark)
         //预

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

@@ -124,6 +124,22 @@
                                     <color key="textColor" red="0.71372549019607845" green="0.75686274509803919" blue="0.80000000000000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                     <nil key="highlightedColor"/>
                                 </label>
+                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ClK-Rz-qW6">
+                                    <rect key="frame" x="20" y="7" width="24" height="24"/>
+                                    <color key="backgroundColor" red="0.53725490196078429" green="0.56862745098039214" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="24" id="0u9-Rq-608"/>
+                                        <constraint firstAttribute="width" constant="24" id="kkF-bA-jgw"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="boldSystem" pointSize="13"/>
+                                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                    <state key="normal" title="k1"/>
+                                    <userDefinedRuntimeAttributes>
+                                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                            <real key="value" value="12"/>
+                                        </userDefinedRuntimeAttribute>
+                                    </userDefinedRuntimeAttributes>
+                                </button>
                                 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="K2_no" translatesAutoresizingMaskIntoConstraints="NO" id="1U8-M0-twU">
                                     <rect key="frame" x="181" y="7" width="24" height="24"/>
                                     <constraints>
@@ -141,6 +157,22 @@
                                     <color key="textColor" red="0.71372549019999998" green="0.75686274509999996" blue="0.80000000000000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                     <nil key="highlightedColor"/>
                                 </label>
+                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="6eA-5P-JC4">
+                                    <rect key="frame" x="181" y="7" width="24" height="24"/>
+                                    <color key="backgroundColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="24" id="Iho-jY-Xs7"/>
+                                        <constraint firstAttribute="height" constant="24" id="ffk-6A-IXj"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="boldSystem" pointSize="13"/>
+                                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                    <state key="normal" title="k2"/>
+                                    <userDefinedRuntimeAttributes>
+                                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                            <real key="value" value="12"/>
+                                        </userDefinedRuntimeAttribute>
+                                    </userDefinedRuntimeAttributes>
+                                </button>
                                 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="K3_no" translatesAutoresizingMaskIntoConstraints="NO" id="8Dg-8s-8DR">
                                     <rect key="frame" x="20" y="39" width="24" height="24"/>
                                     <constraints>
@@ -158,6 +190,22 @@
                                     <color key="textColor" red="0.71372549019999998" green="0.75686274509999996" blue="0.80000000000000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                     <nil key="highlightedColor"/>
                                 </label>
+                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="hrl-h2-nP7">
+                                    <rect key="frame" x="20" y="39" width="24" height="24"/>
+                                    <color key="backgroundColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="24" id="hsd-Rt-J4w"/>
+                                        <constraint firstAttribute="width" constant="24" id="qrm-mp-tjV"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="boldSystem" pointSize="13"/>
+                                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                    <state key="normal" title="k3"/>
+                                    <userDefinedRuntimeAttributes>
+                                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                            <real key="value" value="12"/>
+                                        </userDefinedRuntimeAttribute>
+                                    </userDefinedRuntimeAttributes>
+                                </button>
                                 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="K4_no" translatesAutoresizingMaskIntoConstraints="NO" id="Kwx-EB-6Ff">
                                     <rect key="frame" x="181" y="39" width="24" height="24"/>
                                     <constraints>
@@ -175,16 +223,37 @@
                                     <color key="textColor" red="0.71372549019999998" green="0.75686274509999996" blue="0.80000000000000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                     <nil key="highlightedColor"/>
                                 </label>
+                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Rzl-t3-rMu">
+                                    <rect key="frame" x="181" y="39" width="24" height="24"/>
+                                    <color key="backgroundColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="24" id="ZFm-Ll-OAy"/>
+                                        <constraint firstAttribute="width" constant="24" id="fJi-Za-2e4"/>
+                                    </constraints>
+                                    <fontDescription key="fontDescription" type="boldSystem" pointSize="13"/>
+                                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                    <state key="normal" title="k4"/>
+                                    <userDefinedRuntimeAttributes>
+                                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                            <real key="value" value="12"/>
+                                        </userDefinedRuntimeAttribute>
+                                    </userDefinedRuntimeAttributes>
+                                </button>
                             </subviews>
                             <color key="backgroundColor" red="0.062745098039215685" green="0.20784313725490194" blue="0.3529411764705882" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             <constraints>
                                 <constraint firstItem="yxZ-cO-GDM" firstAttribute="leading" secondItem="8Dg-8s-8DR" secondAttribute="trailing" constant="5" id="2Ry-3h-U5V"/>
+                                <constraint firstItem="ClK-Rz-qW6" firstAttribute="centerX" secondItem="QUD-2Q-Nej" secondAttribute="centerX" id="6D7-Aj-G0h"/>
                                 <constraint firstItem="SIZ-3h-LeX" firstAttribute="leading" secondItem="QUD-2Q-Nej" secondAttribute="trailing" constant="5" id="6cQ-Pe-Sdb"/>
+                                <constraint firstItem="hrl-h2-nP7" firstAttribute="centerY" secondItem="8Dg-8s-8DR" secondAttribute="centerY" id="7c1-ET-Jhk"/>
                                 <constraint firstItem="AZo-dC-4iu" firstAttribute="top" secondItem="8Kf-rl-yaG" secondAttribute="top" constant="9" id="DGd-mq-dd5"/>
                                 <constraint firstItem="QUD-2Q-Nej" firstAttribute="leading" secondItem="8Kf-rl-yaG" secondAttribute="leading" constant="20" id="E50-u9-uSM"/>
+                                <constraint firstItem="hrl-h2-nP7" firstAttribute="centerX" secondItem="8Dg-8s-8DR" secondAttribute="centerX" id="FWS-8D-ePh"/>
                                 <constraint firstItem="8Dg-8s-8DR" firstAttribute="top" secondItem="QUD-2Q-Nej" secondAttribute="bottom" constant="8" id="Fv9-59-arP"/>
                                 <constraint firstItem="Kwx-EB-6Ff" firstAttribute="top" secondItem="1U8-M0-twU" secondAttribute="bottom" constant="8" symbolic="YES" id="JmO-Ju-rlR"/>
                                 <constraint firstItem="yxZ-cO-GDM" firstAttribute="centerY" secondItem="8Dg-8s-8DR" secondAttribute="centerY" id="RFm-2b-eyo"/>
+                                <constraint firstItem="6eA-5P-JC4" firstAttribute="centerX" secondItem="1U8-M0-twU" secondAttribute="centerX" id="SvZ-SM-6eB"/>
+                                <constraint firstItem="6eA-5P-JC4" firstAttribute="centerY" secondItem="1U8-M0-twU" secondAttribute="centerY" id="Vo6-MT-o34"/>
                                 <constraint firstAttribute="trailing" secondItem="5qf-KY-LhA" secondAttribute="trailing" constant="20" id="Y5x-SN-Uet"/>
                                 <constraint firstItem="SIZ-3h-LeX" firstAttribute="centerY" secondItem="QUD-2Q-Nej" secondAttribute="centerY" id="b5c-fQ-3Gc"/>
                                 <constraint firstItem="8Dg-8s-8DR" firstAttribute="leading" secondItem="8Kf-rl-yaG" secondAttribute="leading" constant="20" id="dAb-e0-9Rp"/>
@@ -192,9 +261,12 @@
                                 <constraint firstAttribute="height" constant="70" id="gf6-nH-FtT"/>
                                 <constraint firstItem="1U8-M0-twU" firstAttribute="top" secondItem="8Kf-rl-yaG" secondAttribute="top" constant="7" id="ipD-8v-o35"/>
                                 <constraint firstItem="5qf-KY-LhA" firstAttribute="top" secondItem="1U8-M0-twU" secondAttribute="bottom" constant="10" id="jyc-lt-FCV"/>
+                                <constraint firstItem="ClK-Rz-qW6" firstAttribute="centerY" secondItem="QUD-2Q-Nej" secondAttribute="centerY" id="kIS-29-Fy9"/>
                                 <constraint firstItem="5qf-KY-LhA" firstAttribute="leading" secondItem="Kwx-EB-6Ff" secondAttribute="trailing" constant="5" id="nWD-9C-o2S"/>
+                                <constraint firstItem="Rzl-t3-rMu" firstAttribute="centerX" secondItem="Kwx-EB-6Ff" secondAttribute="centerX" id="qHs-WD-edT"/>
                                 <constraint firstItem="AZo-dC-4iu" firstAttribute="leading" secondItem="1U8-M0-twU" secondAttribute="trailing" constant="5" id="rQK-hc-rMg"/>
                                 <constraint firstItem="QUD-2Q-Nej" firstAttribute="top" secondItem="8Kf-rl-yaG" secondAttribute="top" constant="7" id="tLt-Vs-tL0"/>
+                                <constraint firstItem="Rzl-t3-rMu" firstAttribute="centerY" secondItem="Kwx-EB-6Ff" secondAttribute="centerY" id="tXq-Pu-SCf"/>
                             </constraints>
                             <userDefinedRuntimeAttributes>
                                 <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
@@ -290,12 +362,16 @@
                 <outlet property="idcart_label" destination="hcU-Lv-pf4" id="3em-er-l3C"/>
                 <outlet property="index_button" destination="CcQ-HC-rwy" id="VPA-cL-6JU"/>
                 <outlet property="jointime_label" destination="plQ-03-a5S" id="KXl-Jq-mP4"/>
+                <outlet property="k1_button" destination="ClK-Rz-qW6" id="Lgg-22-BOz"/>
                 <outlet property="k1_imageview" destination="QUD-2Q-Nej" id="96J-WI-kDV"/>
                 <outlet property="k1_label" destination="SIZ-3h-LeX" id="Fn0-Ae-Waj"/>
+                <outlet property="k2_button" destination="6eA-5P-JC4" id="RFW-9c-UGF"/>
                 <outlet property="k2_imageview" destination="1U8-M0-twU" id="rZM-m8-ag4"/>
                 <outlet property="k2_label" destination="AZo-dC-4iu" id="Qnn-cl-Snf"/>
+                <outlet property="k3_button" destination="hrl-h2-nP7" id="4kB-WP-eMg"/>
                 <outlet property="k3_imageview" destination="8Dg-8s-8DR" id="3KU-TK-iVx"/>
                 <outlet property="k3_label" destination="yxZ-cO-GDM" id="uHf-FC-o3U"/>
+                <outlet property="k4_button" destination="Rzl-t3-rMu" id="eM7-4R-6bm"/>
                 <outlet property="k4_imageview" destination="Kwx-EB-6Ff" id="c8W-mD-2m9"/>
                 <outlet property="k4_label" destination="5qf-KY-LhA" id="Ddy-VH-SWR"/>
                 <outlet property="message_button" destination="26Z-Ih-zAP" id="3VA-x9-WNh"/>

+ 15 - 2
JiaPeiManage/Sources/Services/CoachAPI.swift

@@ -26,6 +26,8 @@ enum CoachAPI {
     case yallSchoolStudentInfoList(city:String,coachId:String ,field:String ,pageNum:Int ,pageSize:Int ,schoolId:Int)
     //获取教练预报名的学员
     case coachTempList(city:String,appCoachId:String ,coachId:String ,field:String ,pageNum:Int ,pageSize:Int ,schoolId:Int ,state:String )
+    //获取我的教练预报名的学员
+    case mycoachTempList(city:String,appCoachId:String ,coachId:String ,field:String ,pageNum:Int ,pageSize:Int ,schoolId:Int ,state:String )
     //通过id获取学员详细
     case studentInfoById(city:String ,id:Int )
     //温州-报名时间-通过id获取学员详细
@@ -67,7 +69,9 @@ extension CoachAPI: TargetType {
         case .yallSchoolStudentInfoList(_, _, _, _, _, _):
             return "/jsjp-admin/open-api/tms/coachInfo/allSchoolStudentInfoList"
         case .coachTempList(_,_,_,_,_,_,_,_):
-            return "/jsjp-admin/open-api/tms/coachInfo/studenTempList"
+            return "/jsjp-admin/open-api/tms/coachInfo/studentTempList"
+        case .mycoachTempList(_,_,_,_,_,_,_,_):
+            return "/jsjp-admin/open-api/tms/coachInfo/myStudentTempList"
         case .studentInfoApplyById(_,_,_):
             return "/jsjp-admin/open-api/tms/coachInfo/getTmsStudentInfoApplyById"
         case .studentInfoById(_,_):
@@ -101,7 +105,7 @@ extension CoachAPI: TargetType {
         switch self {
         case .coachInfo(_,_),.coachQrInfo(_,_),.coachInfoList(_,_,_,_,_,_,_,_),.coachInfoMyList(_,_,_,_,_,_,_,_),.coachTempList(_,_,_,_,_,_,_,_),.studentInfoById(_,_),.studentInfoApplyById(_,_,_)
             ,.stuScoreByOutId(_,_,_),.stuTmsSignListByStuId(_,_,_,_),.stuTmsLogFaceListByStuId(_,_,_,_),
-                .allStudentInfoList(_, _, _, _, _, _),.yallStudentInfoList(_, _, _, _, _, _),.yallSchoolStudentInfoList(_, _, _, _, _, _):
+                .allStudentInfoList(_, _, _, _, _, _),.yallStudentInfoList(_, _, _, _, _, _),.yallSchoolStudentInfoList(_, _, _, _, _, _),.mycoachTempList(_,_,_,_,_,_,_,_):
             if let parameters = parameters {
                 return .requestParameters(parameters: parameters, encoding: URLEncoding.default)
             }
@@ -131,6 +135,15 @@ extension CoachAPI: TargetType {
                     "pageSize": pageSize,
                     "schoolId": schoolId==0 ?"":"\(schoolId)",
                     "state": state,]
+        case let .mycoachTempList(city,appCoachId ,coachId ,field ,pageNum ,pageSize ,schoolId ,state):
+            return ["city": city,
+                    "appCoachId": appCoachId,
+                    "coachId": coachId,
+                    "field": field,
+                    "pageNum": pageNum,
+                    "pageSize": pageSize,
+                    "schoolId": schoolId==0 ?"":"\(schoolId)",
+                    "state": state,]
         case let .coachInfoMyList(city,appCoachId ,coachId ,field ,pageNum ,pageSize ,schoolId ,state):
             return ["city": city,
                     "appCoachId": appCoachId,

+ 7 - 0
JiaPeiManage/Sources/Services/CoachService.swift

@@ -25,6 +25,8 @@ protocol CoachServiceType {
     //预报名-在校学员-搜索
     func yallSchoolStudentInfoListRequest(city:String,coachId:String,field:String ,pageNum:Int ,pageSize:Int ,schoolId:Int ) -> Single<TraineeDataModel>
     //获取我的预报名学员信息list
+    func mycoachTempListRequest(city:String,appCoachId:String ,coachId:String ,field:String ,pageNum:Int ,pageSize:Int ,schoolId:Int ,state:String) -> Single<TraineeDataModel>
+    //获取在校预报名学员信息list
     func coachTempListRequest(city:String,appCoachId:String ,coachId:String ,field:String ,pageNum:Int ,pageSize:Int ,schoolId:Int ,state:String) -> Single<TraineeDataModel>
     //通过id获取学员详细
     func studentInfoByIdRequest(city:String,id:Int) -> Single<TraineeInfoModel>
@@ -87,6 +89,11 @@ final class CoachService: CoachServiceType {
         return networking.request(api).map(TraineeDataModel.self,isModel: true)
     }
     
+    func mycoachTempListRequest(city: String, appCoachId: String, coachId: String, field: String, pageNum: Int, pageSize: Int, schoolId: Int, state: String) -> RxSwift.Single<TraineeDataModel> {
+        let api = CoachAPI.mycoachTempList(city: city, appCoachId: appCoachId, coachId: coachId, field: field, pageNum: pageNum, pageSize: pageSize, schoolId: schoolId, state: state)
+        return networking.request(api).map(TraineeDataModel.self,isModel: true)
+    }
+    
     func studentInfoByIdRequest(city: String, id: Int) -> RxSwift.Single<TraineeInfoModel> {
         let api = CoachAPI.studentInfoById(city: city, id: id)
         return networking.request(api).map(TraineeInfoModel.self)

+ 2 - 0
Podfile

@@ -43,6 +43,8 @@ target 'JiaPeiManage' do
   pod 'SDWebImage'
   pod 'SDWebImageWebPCoder', '0.8.3'
   pod 'PGDatePicker'
+  pod 'Hero'
+  pod 'JXPhotoBrowser', '~> 3.1.3'
   # Logging
   pod 'CocoaLumberjack/Swift'
   

+ 9 - 1
Podfile.lock

@@ -11,6 +11,8 @@ PODS:
   - ESPullToRefresh (2.9.3)
   - FSPagerView (0.8.3)
   - GDPerformanceView-Swift (2.1.1)
+  - Hero (1.6.2)
+  - JXPhotoBrowser (3.1.3)
   - Kingfisher (7.7.0)
   - libwebp (1.2.4):
     - libwebp/demux (= 1.2.4)
@@ -404,6 +406,8 @@ DEPENDENCIES:
   - ESPullToRefresh
   - FSPagerView
   - GDPerformanceView-Swift
+  - Hero
+  - JXPhotoBrowser (~> 3.1.3)
   - Kingfisher
   - ManualLayout
   - Moya/RxSwift
@@ -454,6 +458,8 @@ SPEC REPOS:
     - ESPullToRefresh
     - FSPagerView
     - GDPerformanceView-Swift
+    - Hero
+    - JXPhotoBrowser
     - Kingfisher
     - libwebp
     - ManualLayout
@@ -515,6 +521,8 @@ SPEC CHECKSUMS:
   ESPullToRefresh: 0d68daa602b343c81753a1b95e09fd0bfcddfd40
   FSPagerView: 670405b2f18e2a87fa37f20b00de783e562c25a8
   GDPerformanceView-Swift: 22d964fe40b19e3d914dba2586237d064de8fd77
+  Hero: c69009dbc9e2f0472e081adc644dba05fcedae72
+  JXPhotoBrowser: d32e94e1226d43bf5ed83164e3f5b651fed625e0
   Kingfisher: f043ac666dfc96c1f37604f93effb45a7ee3a3e1
   libwebp: f62cb61d0a484ba548448a4bd52aabf150ff6eef
   ManualLayout: 68ac8cfa6b5f656f7a9fadec3730208b95986880
@@ -557,6 +565,6 @@ SPEC CHECKSUMS:
   WechatOpenSDK-XCFramework: acdeeda129efbef9532bca8a10c24e1b4b8c7d69
   YYText: 5c461d709e24d55a182d1441c41dc639a18a4849
 
-PODFILE CHECKSUM: 02abf0d5d3e1f02d896eb3b8897b90a3c76fc43f
+PODFILE CHECKSUM: fe55471ccb2a7b2c906aa4f5244663f34a8cac64
 
 COCOAPODS: 1.12.1

+ 9 - 1
Pods/Manifest.lock

@@ -11,6 +11,8 @@ PODS:
   - ESPullToRefresh (2.9.3)
   - FSPagerView (0.8.3)
   - GDPerformanceView-Swift (2.1.1)
+  - Hero (1.6.2)
+  - JXPhotoBrowser (3.1.3)
   - Kingfisher (7.7.0)
   - libwebp (1.2.4):
     - libwebp/demux (= 1.2.4)
@@ -404,6 +406,8 @@ DEPENDENCIES:
   - ESPullToRefresh
   - FSPagerView
   - GDPerformanceView-Swift
+  - Hero
+  - JXPhotoBrowser (~> 3.1.3)
   - Kingfisher
   - ManualLayout
   - Moya/RxSwift
@@ -454,6 +458,8 @@ SPEC REPOS:
     - ESPullToRefresh
     - FSPagerView
     - GDPerformanceView-Swift
+    - Hero
+    - JXPhotoBrowser
     - Kingfisher
     - libwebp
     - ManualLayout
@@ -515,6 +521,8 @@ SPEC CHECKSUMS:
   ESPullToRefresh: 0d68daa602b343c81753a1b95e09fd0bfcddfd40
   FSPagerView: 670405b2f18e2a87fa37f20b00de783e562c25a8
   GDPerformanceView-Swift: 22d964fe40b19e3d914dba2586237d064de8fd77
+  Hero: c69009dbc9e2f0472e081adc644dba05fcedae72
+  JXPhotoBrowser: d32e94e1226d43bf5ed83164e3f5b651fed625e0
   Kingfisher: f043ac666dfc96c1f37604f93effb45a7ee3a3e1
   libwebp: f62cb61d0a484ba548448a4bd52aabf150ff6eef
   ManualLayout: 68ac8cfa6b5f656f7a9fadec3730208b95986880
@@ -557,6 +565,6 @@ SPEC CHECKSUMS:
   WechatOpenSDK-XCFramework: acdeeda129efbef9532bca8a10c24e1b4b8c7d69
   YYText: 5c461d709e24d55a182d1441c41dc639a18a4849
 
-PODFILE CHECKSUM: 02abf0d5d3e1f02d896eb3b8897b90a3c76fc43f
+PODFILE CHECKSUM: fe55471ccb2a7b2c906aa4f5244663f34a8cac64
 
 COCOAPODS: 1.12.1

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 2231 - 2143
Pods/Pods.xcodeproj/project.pbxproj


+ 10 - 108
Pods/Pods.xcodeproj/xcuserdata/mimasigeling.xcuserdatad/xcschemes/xcschememanagement.plist

@@ -8,379 +8,281 @@
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>0</integer>
 		</dict>
 		<key>Bugly.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>1</integer>
 		</dict>
 		<key>CGFloatLiteral.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>2</integer>
 		</dict>
 		<key>CocoaLumberjack.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>3</integer>
 		</dict>
 		<key>Differentiator.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>4</integer>
 		</dict>
 		<key>Dollar.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>5</integer>
 		</dict>
 		<key>ESPullToRefresh-ESPullToRefresh.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>8</integer>
 		</dict>
 		<key>ESPullToRefresh.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>7</integer>
 		</dict>
 		<key>EmptyKit.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>6</integer>
 		</dict>
 		<key>FSPagerView.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>9</integer>
 		</dict>
 		<key>GDPerformanceView-Swift.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>10</integer>
+		</dict>
+		<key>Hero.xcscheme</key>
+		<dict>
+			<key>isShown</key>
+			<false/>
+		</dict>
+		<key>JXPhotoBrowser.xcscheme</key>
+		<dict>
+			<key>isShown</key>
+			<false/>
 		</dict>
 		<key>Kingfisher.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>11</integer>
 		</dict>
 		<key>ManualLayout.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>13</integer>
 		</dict>
 		<key>Moya.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>14</integer>
 		</dict>
 		<key>NSObject+Rx.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>15</integer>
 		</dict>
 		<key>ObjectMapper.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>16</integer>
 		</dict>
 		<key>PGDatePicker.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>17</integer>
 		</dict>
 		<key>PGPickerView.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>18</integer>
 		</dict>
 		<key>Pods-JiaPeiManage.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>19</integer>
 		</dict>
 		<key>QMUIKit-QMUIResources.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>21</integer>
 		</dict>
 		<key>QMUIKit.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>20</integer>
 		</dict>
 		<key>ReachabilitySwift.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>22</integer>
 		</dict>
 		<key>ReactorKit.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>23</integer>
 		</dict>
 		<key>Realm.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>24</integer>
 		</dict>
 		<key>RealmSwift.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>25</integer>
 		</dict>
 		<key>ReusableKit.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>26</integer>
 		</dict>
 		<key>RxCocoa.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>27</integer>
 		</dict>
 		<key>RxDataSources.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>28</integer>
 		</dict>
 		<key>RxGesture.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>29</integer>
 		</dict>
 		<key>RxOptional.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>30</integer>
 		</dict>
 		<key>RxRelay.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>31</integer>
 		</dict>
 		<key>RxSwift.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>32</integer>
 		</dict>
 		<key>RxViewController.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>33</integer>
 		</dict>
 		<key>SDWebImage.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>34</integer>
 		</dict>
 		<key>SDWebImageWebPCoder.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>35</integer>
 		</dict>
 		<key>SectionReactor.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>36</integer>
 		</dict>
 		<key>SnapKit.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>37</integer>
 		</dict>
 		<key>SwiftDate.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>38</integer>
 		</dict>
 		<key>SwiftTimer.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>39</integer>
 		</dict>
 		<key>SwiftyColor.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>40</integer>
 		</dict>
 		<key>SwiftyImage.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>41</integer>
 		</dict>
 		<key>SwiftyJSON.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>42</integer>
 		</dict>
 		<key>SwiftyUserDefaults.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>43</integer>
 		</dict>
 		<key>Then.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>44</integer>
 		</dict>
 		<key>Toaster.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>45</integer>
 		</dict>
 		<key>UMCCommonLog.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>46</integer>
 		</dict>
 		<key>UMCommon.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>47</integer>
 		</dict>
 		<key>UMDevice.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>48</integer>
 		</dict>
 		<key>URLNavigator.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>49</integer>
 		</dict>
 		<key>VTMagic.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>50</integer>
 		</dict>
 		<key>WeakMapTable.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>51</integer>
 		</dict>
 		<key>WechatOpenSDK-XCFramework.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>52</integer>
 		</dict>
 		<key>YYText.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>53</integer>
 		</dict>
 		<key>libwebp.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>12</integer>
 		</dict>
 	</dict>
 	<key>SuppressBuildableAutocreation</key>

+ 48 - 0
Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage-acknowledgements.markdown

@@ -219,6 +219,54 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 SOFTWARE.
 
 
+## Hero
+
+The MIT License (MIT)
+
+Copyright (c) 2015 Luke Zhao <me@lkzhao.com>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+
+## JXPhotoBrowser
+
+Copyright (c) 2017-2019 LiangJiongXing <liangjiongxing@qq.com>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+
 ## Kingfisher
 
 The MIT License (MIT)

+ 60 - 0
Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage-acknowledgements.plist

@@ -294,6 +294,66 @@ SOFTWARE.
 			<key>FooterText</key>
 			<string>The MIT License (MIT)
 
+Copyright (c) 2015 Luke Zhao &lt;me@lkzhao.com&gt;
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+</string>
+			<key>License</key>
+			<string>MIT</string>
+			<key>Title</key>
+			<string>Hero</string>
+			<key>Type</key>
+			<string>PSGroupSpecifier</string>
+		</dict>
+		<dict>
+			<key>FooterText</key>
+			<string>Copyright (c) 2017-2019 LiangJiongXing &lt;liangjiongxing@qq.com&gt;
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+</string>
+			<key>License</key>
+			<string>MIT</string>
+			<key>Title</key>
+			<string>JXPhotoBrowser</string>
+			<key>Type</key>
+			<string>PSGroupSpecifier</string>
+		</dict>
+		<dict>
+			<key>FooterText</key>
+			<string>The MIT License (MIT)
+
 Copyright (c) 2019 Wei Wang
 
 Permission is hereby granted, free of charge, to any person obtaining a copy

+ 2 - 0
Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage-frameworks-Debug-input-files.xcfilelist

@@ -8,6 +8,8 @@ ${BUILT_PRODUCTS_DIR}/ESPullToRefresh/ESPullToRefresh.framework
 ${BUILT_PRODUCTS_DIR}/EmptyKit/EmptyKit.framework
 ${BUILT_PRODUCTS_DIR}/FSPagerView/FSPagerView.framework
 ${BUILT_PRODUCTS_DIR}/GDPerformanceView-Swift/GDPerformanceView_Swift.framework
+${BUILT_PRODUCTS_DIR}/Hero/Hero.framework
+${BUILT_PRODUCTS_DIR}/JXPhotoBrowser/JXPhotoBrowser.framework
 ${BUILT_PRODUCTS_DIR}/Kingfisher/Kingfisher.framework
 ${BUILT_PRODUCTS_DIR}/ManualLayout/ManualLayout.framework
 ${BUILT_PRODUCTS_DIR}/Moya/Moya.framework

+ 2 - 0
Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage-frameworks-Debug-output-files.xcfilelist

@@ -7,6 +7,8 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ESPullToRefresh.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/EmptyKit.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FSPagerView.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GDPerformanceView_Swift.framework
+${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Hero.framework
+${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXPhotoBrowser.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Kingfisher.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ManualLayout.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Moya.framework

+ 2 - 0
Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage-frameworks-Release-input-files.xcfilelist

@@ -8,6 +8,8 @@ ${BUILT_PRODUCTS_DIR}/ESPullToRefresh/ESPullToRefresh.framework
 ${BUILT_PRODUCTS_DIR}/EmptyKit/EmptyKit.framework
 ${BUILT_PRODUCTS_DIR}/FSPagerView/FSPagerView.framework
 ${BUILT_PRODUCTS_DIR}/GDPerformanceView-Swift/GDPerformanceView_Swift.framework
+${BUILT_PRODUCTS_DIR}/Hero/Hero.framework
+${BUILT_PRODUCTS_DIR}/JXPhotoBrowser/JXPhotoBrowser.framework
 ${BUILT_PRODUCTS_DIR}/Kingfisher/Kingfisher.framework
 ${BUILT_PRODUCTS_DIR}/ManualLayout/ManualLayout.framework
 ${BUILT_PRODUCTS_DIR}/Moya/Moya.framework

+ 2 - 0
Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage-frameworks-Release-output-files.xcfilelist

@@ -7,6 +7,8 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ESPullToRefresh.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/EmptyKit.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FSPagerView.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GDPerformanceView_Swift.framework
+${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Hero.framework
+${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXPhotoBrowser.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Kingfisher.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ManualLayout.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Moya.framework

+ 4 - 0
Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage-frameworks.sh

@@ -185,6 +185,8 @@ if [[ "$CONFIGURATION" == "Debug" ]]; then
   install_framework "${BUILT_PRODUCTS_DIR}/EmptyKit/EmptyKit.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/FSPagerView/FSPagerView.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/GDPerformanceView-Swift/GDPerformanceView_Swift.framework"
+  install_framework "${BUILT_PRODUCTS_DIR}/Hero/Hero.framework"
+  install_framework "${BUILT_PRODUCTS_DIR}/JXPhotoBrowser/JXPhotoBrowser.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/Kingfisher/Kingfisher.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/ManualLayout/ManualLayout.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/Moya/Moya.framework"
@@ -233,6 +235,8 @@ if [[ "$CONFIGURATION" == "Release" ]]; then
   install_framework "${BUILT_PRODUCTS_DIR}/EmptyKit/EmptyKit.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/FSPagerView/FSPagerView.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/GDPerformanceView-Swift/GDPerformanceView_Swift.framework"
+  install_framework "${BUILT_PRODUCTS_DIR}/Hero/Hero.framework"
+  install_framework "${BUILT_PRODUCTS_DIR}/JXPhotoBrowser/JXPhotoBrowser.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/Kingfisher/Kingfisher.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/ManualLayout/ManualLayout.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/Moya/Moya.framework"

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage.debug.xcconfig


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
Pods/Target Support Files/Pods-JiaPeiManage/Pods-JiaPeiManage.release.xcconfig


Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio