Browse Source

教练日志 log. photo 数据逻辑 基本完成。 95%

openlockPPP 1 year ago
parent
commit
ff1ae97470
23 changed files with 480 additions and 213 deletions
  1. 12 0
      JiaPeiManage.xcodeproj/project.pbxproj
  2. 94 0
      JiaPeiManage/Sources/Models/ETeachLogDataModel.swift
  3. 57 0
      JiaPeiManage/Sources/Models/ETeachLogPhotoDataModel.swift
  4. 12 0
      JiaPeiManage/Sources/Models/TraineeDataModel.swift
  5. 36 13
      JiaPeiManage/Sources/Modulars/学员/Controllers/EstuLogListViewController.swift
  6. 31 15
      JiaPeiManage/Sources/Modulars/学员/Controllers/EstuLogPhotoListViewController.swift
  7. 1 0
      JiaPeiManage/Sources/Modulars/学员/Controllers/MeTraineeDetails/MeTraineeDetails01Controller.swift
  8. 36 15
      JiaPeiManage/Sources/Modulars/学员/Controllers/MeTraineeDetailsPageViewController.swift
  9. 2 2
      JiaPeiManage/Sources/Modulars/学员/Controllers/MeTraineeSearchPageViewController.swift
  10. 1 2
      JiaPeiManage/Sources/Modulars/学员/Controllers/MeTraineeSubjectPageViewController.swift
  11. 17 0
      JiaPeiManage/Sources/Modulars/学员/ViewModel/EstuLogListViewModel.swift
  12. 37 16
      JiaPeiManage/Sources/Modulars/学员/ViewModel/MeTraineeSubjectViewModel.swift
  13. 6 3
      JiaPeiManage/Sources/Modulars/学员/Views/EstuLog/EstuLogListCell.swift
  14. 42 6
      JiaPeiManage/Sources/Modulars/学员/Views/EstuLog/EstuLogListDetailsCell.swift
  15. 13 0
      JiaPeiManage/Sources/Modulars/学员/Views/EstuLog/EstuLogListDetailsCell.xib
  16. 8 0
      JiaPeiManage/Sources/Modulars/学员/Views/EstuLog/EstuLogPhotoCell.swift
  17. 2 1
      JiaPeiManage/Sources/Modulars/学员/Views/MeTraineeDetails01HeaderView.swift
  18. 2 0
      JiaPeiManage/Sources/Networking/Networking.swift
  19. 16 8
      JiaPeiManage/Sources/Services/CoachAPI.swift
  20. 7 0
      JiaPeiManage/Sources/Services/CoachService.swift
  21. 21 124
      JiaPeiManage/Sources/Services/ElogCoachAPI.swift
  22. 15 4
      JiaPeiManage/Sources/Services/ElogCoachService.swift
  23. 12 4
      JiaPeiManage/Sources/Utils/URLNavigationMap.swift

+ 12 - 0
JiaPeiManage.xcodeproj/project.pbxproj

@@ -56,6 +56,9 @@
 		908261FF2A9F31A00034104C /* BaseCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 908261FE2A9F31A00034104C /* BaseCollectionViewCell.swift */; };
 		908262012A9F35EC0034104C /* EstuLogPhotoCellReactor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 908262002A9F35EC0034104C /* EstuLogPhotoCellReactor.swift */; };
 		908262032A9F3EAE0034104C /* EstuLogPhotoHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 908262022A9F3EAE0034104C /* EstuLogPhotoHeaderView.swift */; };
+		908262052AA037C50034104C /* ETeachLogDataModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 908262042AA037C50034104C /* ETeachLogDataModel.swift */; };
+		908262072AA067C80034104C /* EstuLogListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 908262062AA067C80034104C /* EstuLogListViewModel.swift */; };
+		908262092AA0955C0034104C /* ETeachLogPhotoDataModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 908262082AA0955C0034104C /* ETeachLogPhotoDataModel.swift */; };
 		908FEE992A42A1D300BEB81C /* StuResultDataModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 908FEE982A42A1D300BEB81C /* StuResultDataModel.swift */; };
 		908FEE9B2A42CA1D00BEB81C /* MeTraineeDetails04HeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 908FEE9A2A42CA1D00BEB81C /* MeTraineeDetails04HeaderView.swift */; };
 		908FEE9D2A42CA3F00BEB81C /* MeTraineeDetails04HeaderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 908FEE9C2A42CA3F00BEB81C /* MeTraineeDetails04HeaderView.xib */; };
@@ -265,6 +268,9 @@
 		908261FE2A9F31A00034104C /* BaseCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseCollectionViewCell.swift; sourceTree = "<group>"; };
 		908262002A9F35EC0034104C /* EstuLogPhotoCellReactor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EstuLogPhotoCellReactor.swift; sourceTree = "<group>"; };
 		908262022A9F3EAE0034104C /* EstuLogPhotoHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EstuLogPhotoHeaderView.swift; sourceTree = "<group>"; };
+		908262042AA037C50034104C /* ETeachLogDataModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ETeachLogDataModel.swift; sourceTree = "<group>"; };
+		908262062AA067C80034104C /* EstuLogListViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EstuLogListViewModel.swift; sourceTree = "<group>"; };
+		908262082AA0955C0034104C /* ETeachLogPhotoDataModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ETeachLogPhotoDataModel.swift; sourceTree = "<group>"; };
 		908FEE982A42A1D300BEB81C /* StuResultDataModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StuResultDataModel.swift; sourceTree = "<group>"; };
 		908FEE9A2A42CA1D00BEB81C /* MeTraineeDetails04HeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MeTraineeDetails04HeaderView.swift; sourceTree = "<group>"; };
 		908FEE9C2A42CA3F00BEB81C /* MeTraineeDetails04HeaderView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MeTraineeDetails04HeaderView.xib; sourceTree = "<group>"; };
@@ -701,6 +707,7 @@
 			children = (
 				90A8CD452A5E763E00C02402 /* MeTraineeSearchViewModel.swift */,
 				90A8CD472A5EACB500C02402 /* MeTraineeSubjectViewModel.swift */,
+				908262062AA067C80034104C /* EstuLogListViewModel.swift */,
 			);
 			path = ViewModel;
 			sourceTree = "<group>";
@@ -826,6 +833,8 @@
 				90971E772A499BF200267B7F /* StuCountDataModel.swift */,
 				90E65C9B2A7B93AE0055B09C /* AuthorizationDataModel.swift */,
 				90E65C9D2A7CA09D0055B09C /* JpMsgDataModel.swift */,
+				908262042AA037C50034104C /* ETeachLogDataModel.swift */,
+				908262082AA0955C0034104C /* ETeachLogPhotoDataModel.swift */,
 			);
 			path = Models;
 			sourceTree = "<group>";
@@ -1355,6 +1364,7 @@
 				90CE52A92A36E59A0033BD06 /* UIBarButtonItem+Init.swift in Sources */,
 				90CE528C2A36E5460033BD06 /* Action.swift in Sources */,
 				90CE52CE2A36E5EC0033BD06 /* UICollectionViewFlexLayout+Rx.swift in Sources */,
+				908262052AA037C50034104C /* ETeachLogDataModel.swift in Sources */,
 				909DA5CF2A3AC23B0034501F /* UpdatePasswordViewController.swift in Sources */,
 				908261F82A9EF0C70034104C /* ElogCoachService.swift in Sources */,
 				90A8CD462A5E763E00C02402 /* MeTraineeSearchViewModel.swift in Sources */,
@@ -1362,6 +1372,7 @@
 				90CE52BE2A36E5B70033BD06 /* RequestError.swift in Sources */,
 				90CE52342A36E4600033BD06 /* BaseTableViewController.swift in Sources */,
 				90971E962A4AB1F400267B7F /* StatisticsPageCell.swift in Sources */,
+				908262092AA0955C0034104C /* ETeachLogPhotoDataModel.swift in Sources */,
 				908261E32A9C89F10034104C /* EstuLogListViewController.swift in Sources */,
 				90CE52892A36E5460033BD06 /* PopOverViewCell.swift in Sources */,
 				90CE52332A36E4600033BD06 /* BaseViewController.swift in Sources */,
@@ -1372,6 +1383,7 @@
 				908261FF2A9F31A00034104C /* BaseCollectionViewCell.swift in Sources */,
 				90CE52472A36E5170033BD06 /* NYImage.swift in Sources */,
 				9043AD9B2A542267005F6F81 /* StatisticsOfficialPageHeaderView.swift in Sources */,
+				908262072AA067C80034104C /* EstuLogListViewModel.swift in Sources */,
 				90CE52A42A36E59A0033BD06 /* DispatchQueue+Extension.swift in Sources */,
 				90CE52782A36E5460033BD06 /* Timer+LWPlayer.swift in Sources */,
 				90CE52A02A36E59A0033BD06 /* Data+Cache.swift in Sources */,

+ 94 - 0
JiaPeiManage/Sources/Models/ETeachLogDataModel.swift

@@ -0,0 +1,94 @@
+//
+//  ETeachLogDataModel.swift
+//  JiaPeiManage
+//
+//  Created by Ning.ge on 2023/8/31.
+//
+
+import ObjectMapper
+
+struct ETeachLogInfo : ImmutableMappable{
+
+    var auditReason: String?
+    var auditResult: String?
+    var auditResultStr: String?
+    var carLicnum: String?
+    var classid: String?
+    var coachName: String?
+    var duration: String?
+    var endTime: String?
+    var mile: String?
+    var pxlxName: String?
+    var recnum: String?
+    var recordStatus: String?
+    var recordStatusStr: String?
+    var sim: String?
+    var startTime: String?
+    var trainSubject: String?
+    var vaildTime: String?
+    var stuid : Int = 0
+
+    init(map: Map) throws {
+        auditReason = try map.value("applydate")
+        auditResult = try map.value("auditResult") ?? "-1"
+        carLicnum = try map.value("carLicnum") ?? ""
+        classid = try map.value("classid") ?? ""
+        coachName = try map.value("coachName") ?? ""
+        duration = try map.value("duration") ?? ""
+        endTime = try map.value("endTime") ?? ""
+        mile = try map.value("mile") ?? ""
+        pxlxName = try map.value("pxlxName") ?? ""
+        recnum = try map.value("recnum") ?? ""
+        recordStatus = try map.value("recordStatus") ?? "-1"
+        sim = try map.value("sim") ?? ""
+        startTime = try map.value("startTime") ?? ""
+        trainSubject = try map.value("trainSubject")
+        vaildTime = try map.value("vaildTime") ?? ""
+        switch Int(auditResult!) {
+            case 0:
+            auditResultStr = "审核通过"
+            case 1:
+            auditResultStr = "审核不通过"
+            case 2:
+            auditResultStr = "待审核"
+        case .none:
+            auditResultStr = ""
+        case .some(_):
+            auditResultStr = ""
+        }
+        switch Int(recordStatus!) {
+            case 0:
+            recordStatusStr = "未备案"
+            case 1:
+            recordStatusStr = "备案成功"
+            case 2:
+            recordStatusStr = "备案失败"
+        case .none:
+            auditResultStr = ""
+        case .some(_):
+            auditResultStr = ""
+        }
+    }
+
+}
+
+
+
+struct ETeachLogDataModel : ImmutableMappable{
+
+    var code : Int?
+    var data : AnyObject?
+    var msg : String?
+    var rows : [ETeachLogInfo]?
+    var total : Int?
+
+    init(map: Map) throws {
+        code = try map.value("code")
+        data = try map.value("data")
+        msg = try map.value("msg")
+        rows = try map.value("rows")
+        total = try map.value("total")
+        
+    }
+
+}

+ 57 - 0
JiaPeiManage/Sources/Models/ETeachLogPhotoDataModel.swift

@@ -0,0 +1,57 @@
+//
+//  ETeachLogPhotoDataModel.swift
+//  JiaPeiManage
+//
+//  Created by Ning.ge on 2023/8/31.
+//
+
+import ObjectMapper
+
+struct ETeachLogPhotoInfo : ImmutableMappable{
+
+    var eventStr: String?
+    var event: String?
+    var filepath: String?
+    var ptime: String?
+
+    init(map: Map) throws {
+        event = try map.value("event") ?? ""
+        filepath = try map.value("filepath") ?? ""
+        ptime = try map.value("ptime") ?? ""
+        //事件17:签到;18:签退;19:培训过程
+        switch Int(event!) {
+            case 17:
+            eventStr = "签到照片"
+            case 18:
+            eventStr = "签退照片"
+            case 19:
+            eventStr = "培训过程"
+        case .none:
+            eventStr = ""
+        case .some(_):
+            eventStr = ""
+        }
+    }
+
+}
+
+
+
+struct ETeachLogPhotoDataModel : ImmutableMappable{
+
+    var code : Int?
+    var data : AnyObject?
+    var msg : String?
+    var rows : [ETeachLogPhotoInfo]?
+    var total : Int?
+
+    init(map: Map) throws {
+        code = try map.value("code")
+        data = try map.value("data")
+        msg = try map.value("msg")
+        rows = try map.value("rows")
+        total = try map.value("total")
+        
+    }
+
+}

+ 12 - 0
JiaPeiManage/Sources/Models/TraineeDataModel.swift

@@ -20,14 +20,20 @@ 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 = ""
+    
+    
 
     init(map: Map) throws {
         applydate = try map.value("applydate")
@@ -47,6 +53,12 @@ struct RowInfo : ImmutableMappable{
         trainThreeExamTime = try map.value("trainThreeExamTime") ?? ""
         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") ?? ""
+        
         trainType = try map.value("trainType")
         bmType = try map.value("bmType") ?? ""
     }

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

@@ -15,7 +15,7 @@ final class EstuLogListViewController: BaseTableViewController {
     let cellIdentifier:String = "_EstuLogListCell"
     let dtcellIdentifier:String = "_EstuLogListDetailsCell"
     // MARK: 服务属性
-    private let cocahService: CoachServiceType = CoachService(networking: CoachNetworking())
+    private let elogCoachService: ElogCoachServiceType = ElogCoachService(networking: ElogCoachNetworking())
     // MARK: 私有属性
     
 
@@ -37,6 +37,12 @@ final class EstuLogListViewController: BaseTableViewController {
     let header01_view = EstuLog01HeaderView.loadFromNib()
 
     var selectPath = -1;
+    //学员ID
+    var stuId:Int = 0
+    var eteachLogDataModel:ETeachLogDataModel?
+    var rows : [ETeachLogInfo] = []
+    var page:Int = 1
+    var pageSize:Int = 10
     
     override func setupConstraints() {
         
@@ -66,12 +72,6 @@ final class EstuLogListViewController: BaseTableViewController {
         self.navigationController?.setNavigationBarHidden(true, animated: true)
     }
     
-    init(type:TraineeType) {
-        super.init()
-        navBar.title_label.text = "电子教学日志"
-        
-    }
-    
     required convenience init?(coder aDecoder: NSCoder) {
         fatalError("init(coder:) has not been implemented")
     }
@@ -86,7 +86,7 @@ final class EstuLogListViewController: BaseTableViewController {
     // MARK: 私有方法
     
     func setupUI(){
-        
+        self.navBar.title_label.text = "电子教学日志"
         self.navBar.back_button.addTarget(self, action: #selector(actionBackdo), for: .touchUpInside)
     }
     
@@ -104,13 +104,13 @@ final class EstuLogListViewController: BaseTableViewController {
         tableView.register(UINib(nibName: "EstuLogListCell", bundle: nil), forCellReuseIdentifier: cellIdentifier)
         tableView.register(UINib(nibName: "EstuLogListDetailsCell", bundle: nil), forCellReuseIdentifier: dtcellIdentifier)
         setupRefreshHeader(tableView) {[unowned self] in
-//            self.getStuResultList()
+            self.getStudentTeachLogList()
         }
         self.isEmptyDisplay = false
         self.hideLoadAnimation()
         // 设置上拉加载更多
         tableView.es.addInfiniteScrolling { [weak self] in
-//            self?.getLoadMore()
+            //self?.getStudentTeachLogList()
         }
         // tableView点击事件
         tableView.rx.itemSelected.throttle(.seconds(1), scheduler: MainScheduler.instance)
@@ -127,6 +127,23 @@ final class EstuLogListViewController: BaseTableViewController {
         }).disposed(by: disposeBag)
     }
     
+    func getStudentTeachLogList (){
+        self.elogCoachService.elogTmsStudentTeachLogByIdRequest(city: LocalManager.userInfo.city!, id: stuId, pageNum: page, pageSize: pageSize).subscribe(onSuccess: {[unowned self] eteachLogDataModel in
+                self.rows.removeAll()
+                self.eteachLogDataModel = eteachLogDataModel
+                self.rows += eteachLogDataModel.rows!
+                print("eteachLogDataModelRequest成功")
+                self.isEmptyDisplay = true
+                self.hideLoadAnimation()
+                self.stopRefresh()
+                self.tableView.reloadData()
+            }, onError: { error in
+                self.stopRefresh()
+                NYTips.hide()
+            })
+        .disposed(by: disposeBag)
+    }
+
 }
 
 //数据源
@@ -135,7 +152,7 @@ extension EstuLogListViewController:UITableViewDataSource {
     
     func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
 
-        return 10
+        return self.rows.count
     }
     
     func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
@@ -169,10 +186,16 @@ extension EstuLogListViewController:UITableViewDataSource {
     
     func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
         var cell:UITableViewCell;
+        var info = rows[indexPath.row] as ETeachLogInfo
+        info.stuid = stuId
         if self.selectPath == indexPath.row {
-            cell = tableView.dequeueReusableCell(withIdentifier: dtcellIdentifier, for: indexPath) as! EstuLogListDetailsCell
+            let dcell = tableView.dequeueReusableCell(withIdentifier: dtcellIdentifier, for: indexPath) as! EstuLogListDetailsCell
+            dcell.setRowInfo(rowInfo: info)
+            cell = dcell
         }else {
-            cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as! EstuLogListCell
+            let ecell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as! EstuLogListCell
+            ecell.setRowInfo(rowInfo: info)
+            cell = ecell
         }
         return cell
     }

+ 31 - 15
JiaPeiManage/Sources/Modulars/学员/Controllers/EstuLogPhotoListViewController.swift

@@ -15,7 +15,7 @@ final class EstuLogPhotoListViewController: BaseCollectionViewController {
     
     let cellIdentifier:String = "_EstuLogListCell"
     // MARK: 服务属性
-    private let cocahService: CoachServiceType = CoachService(networking: CoachNetworking())
+    private let elogCoachService: ElogCoachServiceType = ElogCoachService(networking: ElogCoachNetworking())
 
     private struct Reusable {
         static let ephotoCell = ReusableCell<EstuLogPhotoCell>()
@@ -34,7 +34,13 @@ final class EstuLogPhotoListViewController: BaseCollectionViewController {
     let estuLogHeaderView = EstuLogHeaderView.loadFromNib()
     
 
-    var selectPath = -1;
+    //学员ID
+    var stuId:Int = 0
+    var classId:String = ""
+    var eteachLogPhotoDataModel:ETeachLogPhotoDataModel?
+    var rows : [ETeachLogPhotoInfo] = []
+    var page:Int = 1
+    var pageSize:Int = 10
     
     override func setupConstraints() {
         
@@ -62,13 +68,7 @@ final class EstuLogPhotoListViewController: BaseCollectionViewController {
         
         self.navigationController?.setNavigationBarHidden(true, animated: true)
     }
-    
-    init(type:TraineeType) {
-        super.init()
-        navBar.title_label.text = "电子教学日志"
-        
-    }
-    
+
     required convenience init?(coder aDecoder: NSCoder) {
         fatalError("init(coder:) has not been implemented")
     }
@@ -83,7 +83,7 @@ final class EstuLogPhotoListViewController: BaseCollectionViewController {
     // MARK: 私有方法
     
     func setupUI(){
-        
+        self.navBar.title_label.text = "电子教学日志"
         self.navBar.back_button.addTarget(self, action: #selector(actionBackdo), for: .touchUpInside)
     }
     
@@ -113,21 +113,37 @@ final class EstuLogPhotoListViewController: BaseCollectionViewController {
 //        }
 //
 //        netRequest()
+        getStudentTeachLogPhotoList()
+    }
+    
+    func getStudentTeachLogPhotoList (){
+        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
+                self.rows += eteachLogPhotoDataModel.rows!
+                print("elogTmsStudentPhotoByIdRequest成功")
+                self.isEmptyDisplay = true
+                self.hideLoadAnimation()
+                self.stopRefresh()
+                self.collectionView.reloadData()
+            }, onError: { error in
+                self.stopRefresh()
+                NYTips.hide()
+            })
+        .disposed(by: disposeBag)
     }
-    
-    
 }
 
 extension EstuLogPhotoListViewController: UICollectionViewDataSource {
     
     func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
         
-         return 10 //self.datasources.count
+         return self.rows.count
     }
     
     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.setRowInfo(rowInfo: self.rows[indexPath.row])
 //         cell.reactor = datasources[indexPath.item]
          return cell
     }

+ 1 - 0
JiaPeiManage/Sources/Modulars/学员/Controllers/MeTraineeDetails/MeTraineeDetails01Controller.swift

@@ -124,6 +124,7 @@ extension MeTraineeDetails01Controller:UITableViewDataSource {
     
     func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
         let header_view = MeTraineeDetails01HeaderView.loadFromNib()
+        header_view.traineeInfoModel = self.traineeInfoModel
         header_view.title_label.text = keys[section]
         if section == 1 {
             header_view.estu_log_button.isHidden = false

+ 36 - 15
JiaPeiManage/Sources/Modulars/学员/Controllers/MeTraineeDetailsPageViewController.swift

@@ -21,6 +21,8 @@ final class MeTraineeDetailsPageViewController: BaseViewController {
     private var menuItemCurrentBtn : UIButton?
     //学员ID
     var stuId:Int = 0
+    //报名时间
+    var applyDate:String = ""
     var traineeInfoModel:TraineeInfoModel?
     // MARK: UI属性
     
@@ -81,21 +83,40 @@ final class MeTraineeDetailsPageViewController: BaseViewController {
     // MARK: 请求网络
     func getStudentInfo(){
         NYTips.show()
-        cocahService.studentInfoByIdRequest(city: LocalManager.userInfo.city!, id: stuId)
-            .subscribe { [unowned self] traineeInfoModel in
-                self.traineeInfoModel = traineeInfoModel
-                self.biandView()
-                if(self.pageController.currentPage==0){
-                    let vc:MeTraineeDetails01Controller =  self.pageController.currentViewController as! MeTraineeDetails01Controller
-                    vc.setInfo(info: traineeInfoModel)
-                }
-                //刷新理论成绩
-                guard let details02vc:MeTraineeDetails02Controller = self.pageController.viewController(atPage: 1) as? MeTraineeDetails02Controller else { return }
-                details02vc.setStuOutId(stuId: traineeInfoModel.id)
-                NYTips.hide()
-            } onError: { error in
-                NYTips.hide()
-            }.disposed(by: disposeBag)
+        if LocalManager.userInfo.city == "214" {//温州特殊判断
+            cocahService.studentInfoApplyByIdRequest(city: LocalManager.userInfo.city!, id: stuId, applyDate: applyDate)
+                .subscribe { [unowned self] traineeInfoModel in
+                    self.traineeInfoModel = traineeInfoModel
+                    self.biandView()
+                    if(self.pageController.currentPage==0){
+                        let vc:MeTraineeDetails01Controller =  self.pageController.currentViewController as! MeTraineeDetails01Controller
+                        vc.setInfo(info: traineeInfoModel)
+                    }
+                    //刷新理论成绩
+                    guard let details02vc:MeTraineeDetails02Controller = self.pageController.viewController(atPage: 1) as? MeTraineeDetails02Controller else { return }
+                    details02vc.setStuOutId(stuId: traineeInfoModel.id)
+                    NYTips.hide()
+                } onError: { error in
+                    NYTips.hide()
+                }.disposed(by: disposeBag)
+        }else{
+            cocahService.studentInfoByIdRequest(city: LocalManager.userInfo.city!, id: stuId)
+                .subscribe { [unowned self] traineeInfoModel in
+                    self.traineeInfoModel = traineeInfoModel
+                    self.biandView()
+                    if(self.pageController.currentPage==0){
+                        let vc:MeTraineeDetails01Controller =  self.pageController.currentViewController as! MeTraineeDetails01Controller
+                        vc.setInfo(info: traineeInfoModel)
+                    }
+                    //刷新理论成绩
+                    guard let details02vc:MeTraineeDetails02Controller = self.pageController.viewController(atPage: 1) as? MeTraineeDetails02Controller else { return }
+                    details02vc.setStuOutId(stuId: traineeInfoModel.id)
+                    NYTips.hide()
+                } onError: { error in
+                    NYTips.hide()
+                }.disposed(by: disposeBag)
+        }
+        
     }
     // MARK: 私有方法
     func setupUI(){

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

@@ -111,8 +111,8 @@ final class MeTraineeSearchPageViewController: BaseTableViewController {
             print("点击\(indexPath)行")
             let rowInfo:RowInfo = self!.meTraineeSearchViewModel.rows[indexPath.row]
             if rowInfo != nil && rowInfo.bmType == "2"  {
-                let context: Int = rowInfo.id!
-                NYSwRouter.push(NYSwPushType.trainee_info,context: context)
+//                let context: Int = rowInfo.id!
+                NYSwRouter.push(NYSwPushType.trainee_info,context: rowInfo)
             }
             self?.tableView.deselectRow(at: indexPath, animated: false)
         }).disposed(by: disposeBag)

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

@@ -63,8 +63,7 @@ final class MeTraineeSubjectPageViewController: BaseTableViewController {
             print("点击\(indexPath)行")
                 let rowInfo:RowInfo = self!.meTraineeSubjectViewModel.rows[indexPath.row]
             if rowInfo != nil && rowInfo.bmType == "2"  {
-                let context: Int = rowInfo.id!
-                NYSwRouter.push(NYSwPushType.trainee_info,context: context)
+                NYSwRouter.push(NYSwPushType.trainee_info,context: rowInfo)
             }
             self?.tableView.deselectRow(at: indexPath, animated: false)
         }).disposed(by: disposeBag)

+ 17 - 0
JiaPeiManage/Sources/Modulars/学员/ViewModel/EstuLogListViewModel.swift

@@ -0,0 +1,17 @@
+//
+//  EstuLogListViewModel.swift
+//  JiaPeiManage
+//
+//  Created by Ning.ge on 2023/8/31.
+//
+
+class EstuLogListViewModel: NSObject {
+    
+    // MARK: 服务属性
+    
+    
+    override init() {
+        super.init()
+        //        searchCoachInfoList()
+    }
+}

+ 37 - 16
JiaPeiManage/Sources/Modulars/学员/ViewModel/MeTraineeSubjectViewModel.swift

@@ -116,22 +116,43 @@ class MeTraineeSubjectViewModel: NSObject {
                 .disposed(by: vc.disposeBag)
             return
         }
-        self.cocahService.coachInfoListRequest(city: LocalManager.userInfo.city!, appCoachId: "", coachId: coachId, field: "", pageNum: page, pageSize: pageSize, schoolId: schoolId, state: 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)!-1])
-            }, onError: { error in
-                vc.stopRefresh()
-            })
-            .disposed(by: vc.disposeBag)
+        if schoolId>0 {//在校
+            self.cocahService.coachInfoListRequest(city: LocalManager.userInfo.city!, appCoachId: "", coachId: coachId, field: "", pageNum: page, pageSize: pageSize, schoolId: schoolId, state: 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)!-1])
+                }, onError: { error in
+                    vc.stopRefresh()
+                })
+                .disposed(by: vc.disposeBag)
+        }else{//我的
+            schoolId = LocalManager.userInfo.schoolId
+            self.cocahService.coachInfoMyListRequest(city: LocalManager.userInfo.city!, appCoachId: "", coachId: coachId, field: "", pageNum: page, pageSize: pageSize, schoolId: schoolId, state: 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)!-1])
+                }, onError: { error in
+                    vc.stopRefresh()
+                })
+                .disposed(by: vc.disposeBag)
+        }
+        
     }
     
     

+ 6 - 3
JiaPeiManage/Sources/Modulars/学员/Views/EstuLog/EstuLogListCell.swift

@@ -21,7 +21,7 @@ final class EstuLogListCell: UITableViewCell,NibLoadable {
     
     
 //    var disposeBag:DisposeBag?
-    var rowInfo:RowInfo?
+    var rowInfo:ETeachLogInfo?
     
     override func awakeFromNib() {
         super.awakeFromNib()
@@ -31,9 +31,12 @@ final class EstuLogListCell: UITableViewCell,NibLoadable {
         
     }
     
-    func setRowInfo(rowInfo:RowInfo){
+    func setRowInfo(rowInfo:ETeachLogInfo){
         self.rowInfo = rowInfo
-       
+        self.name_label.text = rowInfo.coachName
+        self.start_time_label.text = rowInfo.startTime
+        self.end_time_label.text = rowInfo.endTime
+        self.stu_time_label.text = rowInfo.vaildTime!+"分钟"
     }
     
 }

+ 42 - 6
JiaPeiManage/Sources/Modulars/学员/Views/EstuLog/EstuLogListDetailsCell.swift

@@ -11,11 +11,30 @@ import RxSwift
 final class EstuLogListDetailsCell: UITableViewCell,NibLoadable {
     
     // MARK: UI
-    //indexbtn
-    @IBOutlet weak var index_button: QMUIButton!
+    @IBOutlet weak var name_label: UILabel!
     
+    @IBOutlet weak var start_time_label: UILabel!
+    
+    @IBOutlet weak var end_time_label: UILabel!
+    
+    @IBOutlet weak var stu_time_label: UILabel!
+    
+    //培训时长
+    @IBOutlet weak var px_time_label: UILabel!
+    //培训里程
+    @IBOutlet weak var px_mile_label: UILabel!
+    //学时类型
+    @IBOutlet weak var px_type_label: UILabel!
+    //车辆
+    @IBOutlet weak var px_car_label: UILabel!
+    //备案状态
+    @IBOutlet weak var records_state_label: UILabel!
+    //监管
+    @IBOutlet weak var jg_check_label: UILabel!
+    //监管复核结果
+    @IBOutlet weak var jg_check_result_label: UILabel!
 //    var disposeBag:DisposeBag?
-    var rowInfo:RowInfo?
+    var rowInfo:ETeachLogInfo?
     
     override func awakeFromNib() {
         super.awakeFromNib()
@@ -25,14 +44,31 @@ final class EstuLogListDetailsCell: UITableViewCell,NibLoadable {
         
     }
     
-    func setRowInfo(rowInfo:RowInfo){
+    func setRowInfo(rowInfo:ETeachLogInfo){
         self.rowInfo = rowInfo
-       
+        self.name_label.text = rowInfo.coachName
+        self.start_time_label.text = rowInfo.startTime
+        self.end_time_label.text = rowInfo.endTime
+        self.stu_time_label.text = rowInfo.vaildTime! + "分钟"
+        //培训时长
+        self.px_time_label.text = rowInfo.duration! + "分钟"
+        //培训里程
+        self.px_mile_label.text = rowInfo.mile! + "公里"
+        //学时类型
+        self.px_type_label.text = rowInfo.pxlxName
+        //车辆
+        self.px_car_label.text = rowInfo.carLicnum
+        //备案状态 1备案成功 0未备案 其他:备案失败
+        self.records_state_label.text = rowInfo.recordStatusStr
+        //监管 监管审核 0审核通过 1审核不通过 2待审核
+        self.jg_check_label.text = rowInfo.auditResultStr
+        //监管复核结果
+        self.jg_check_result_label.text = rowInfo.auditReason
     }
     
     
     //电子教学照片日志
     @IBAction func estuLogPhotoAction(_ sender: QMUIButton) {
-        NYSwRouter.push(NYSwPushType.trainee_estu_log_photo.path)
+        NYSwRouter.push(NYSwPushType.trainee_estu_log_photo,context: rowInfo)
     }
 }

+ 13 - 0
JiaPeiManage/Sources/Modulars/学员/Views/EstuLog/EstuLogListDetailsCell.xib

@@ -353,6 +353,19 @@
                 <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="6zz-CY-b9P" secondAttribute="trailing" constant="15" id="x9V-QS-ffV"/>
             </constraints>
             <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <connections>
+                <outlet property="end_time_label" destination="5kK-f7-qbp" id="NDP-gb-dRW"/>
+                <outlet property="jg_check_label" destination="sVK-HJ-lST" id="yFl-VY-8sm"/>
+                <outlet property="jg_check_result_label" destination="YVT-Qv-O4p" id="eHw-Va-DKV"/>
+                <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_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"/>
+                <outlet property="start_time_label" destination="TTv-wk-fUI" id="2k2-Qf-csi"/>
+                <outlet property="stu_time_label" destination="mYb-CZ-idk" id="Pio-W7-qRg"/>
+            </connections>
             <point key="canvasLocation" x="102.89855072463769" y="-12.635869565217392"/>
         </view>
     </objects>

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

@@ -30,6 +30,7 @@ final class EstuLogPhotoCell: BaseCollectionViewCell,View {
         $0.textAlignment = .center
     }
     
+    var rowInfo:ETeachLogPhotoInfo?
     
     override func initialize() {
         
@@ -45,6 +46,13 @@ final class EstuLogPhotoCell: BaseCollectionViewCell,View {
         
     }
     
+    func setRowInfo(rowInfo:ETeachLogPhotoInfo){
+        self.rowInfo = rowInfo
+        coverImageView.sd_setImage(with:rowInfo.filepath?.urlValue)
+        timeLabel.text = rowInfo.ptime
+        titleLabel.text = rowInfo.eventStr
+    }
+    
     func bind(reactor: EstuLogPhotoCellReactor) {
 
 //        reactor.state.map{$0.coverURL}

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

@@ -12,6 +12,7 @@ final class MeTraineeDetails01HeaderView: UIView,NibLoadable {
     
     @IBOutlet weak var estu_log_button: QMUIButton!
     
+    var traineeInfoModel:TraineeInfoModel?
     override func awakeFromNib() {
         super.awakeFromNib()
         
@@ -22,7 +23,7 @@ final class MeTraineeDetails01HeaderView: UIView,NibLoadable {
     
     //电子教学日志
     @IBAction func estuLogAction(_ sender: QMUIButton) {
-        NYSwRouter.push(NYSwPushType.trainee_estu_log.path)
+        NYSwRouter.push(NYSwPushType.trainee_estu_log,context: traineeInfoModel)
     }
     
 }

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

@@ -9,6 +9,8 @@ import Moya
 import RxSwift
 import Alamofire
 
+
+typealias ElogCoachNetworking = Networking<ElogCoachAPI>
 typealias CoachNetworking = Networking<CoachAPI>
 typealias LoginNetworking = Networking<LoginAPI>
 typealias StatisticsNetworking = Networking<StatisticsAPI>

+ 16 - 8
JiaPeiManage/Sources/Services/CoachAPI.swift

@@ -27,7 +27,9 @@ enum CoachAPI {
     //获取教练预报名的学员
     case coachTempList(city:String,appCoachId:String ,coachId:String ,field:String ,pageNum:Int ,pageSize:Int ,schoolId:Int ,state:String )
     //通过id获取学员详细
-    case studentInfoById(city:String,id:Int )
+    case studentInfoById(city:String ,id:Int )
+    //温州-报名时间-通过id获取学员详细
+    case studentInfoApplyById(city:String ,id:Int ,applyDate:String)
     //查询成绩
     case stuScoreByOutId(pageNum:Int ,pageSize:Int ,stuOutId:Int)
     //查询签到记录
@@ -39,12 +41,12 @@ enum CoachAPI {
 extension CoachAPI: TargetType {
     
     var baseURL: URL {
-        switch self {
-        case .coachInfo,.coachQrInfo,.coachInfoList,.coachInfoMyList,.coachTempList,.studentInfoById,
-                .stuScoreByOutId,.stuTmsSignListByStuId,.stuTmsLogFaceListByStuId,
-                .allStudentInfoList,.yallStudentInfoList,.yallSchoolStudentInfoList:
-            return URL(string: HttpRequest.api.path)!
-        }
+        return URL(string: HttpRequest.api.path)!
+//        switch self {
+//        case .coachInfo,.coachQrInfo,.coachInfoList,.coachInfoMyList,.coachTempList,.studentInfoById,
+//                .stuScoreByOutId,.stuTmsSignListByStuId,.stuTmsLogFaceListByStuId,
+//                .allStudentInfoList,.yallStudentInfoList,.yallSchoolStudentInfoList:
+//            return URL(string: HttpRequest.api.path)!
     }
     
     var path: String {
@@ -66,6 +68,8 @@ extension CoachAPI: TargetType {
             return "/jsjp-admin/open-api/tms/coachInfo/allSchoolStudentInfoList"
         case .coachTempList(_,_,_,_,_,_,_,_):
             return "/jsjp-admin/open-api/tms/coachInfo/studenTempList"
+        case .studentInfoApplyById(_,_,_):
+            return "/jsjp-admin/open-api/tms/coachInfo/getTmsStudentInfoApplyById"
         case .studentInfoById(_,_):
             return "/jsjp-admin/open-api/tms/coachInfo/getTmsStudentInfoById"
         case .stuScoreByOutId(_,_,_):
@@ -95,7 +99,7 @@ extension CoachAPI: TargetType {
     
     var task: Moya.Task {
         switch self {
-        case .coachInfo(_,_),.coachQrInfo(_,_),.coachInfoList(_,_,_,_,_,_,_,_),.coachInfoMyList(_,_,_,_,_,_,_,_),.coachTempList(_,_,_,_,_,_,_,_),.studentInfoById(_,_)
+        case .coachInfo(_,_),.coachQrInfo(_,_),.coachInfoList(_,_,_,_,_,_,_,_),.coachInfoMyList(_,_,_,_,_,_,_,_),.coachTempList(_,_,_,_,_,_,_,_),.studentInfoById(_,_),.studentInfoApplyById(_,_,_)
             ,.stuScoreByOutId(_,_,_),.stuTmsSignListByStuId(_,_,_,_),.stuTmsLogFaceListByStuId(_,_,_,_),
                 .allStudentInfoList(_, _, _, _, _, _),.yallStudentInfoList(_, _, _, _, _, _),.yallSchoolStudentInfoList(_, _, _, _, _, _):
             if let parameters = parameters {
@@ -169,6 +173,10 @@ extension CoachAPI: TargetType {
         case let .studentInfoById(city,id):
             return ["city": city,
                     "id": id,]
+        case let .studentInfoApplyById(city, id, applyDate):
+            return ["applyDate":applyDate,
+                    "city": city,
+                    "id": id,]
         case let .stuScoreByOutId(pageNum, pageSize, stuOutId):
             return ["pageNum": pageNum,
                     "pageSize": pageSize,

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

@@ -28,6 +28,8 @@ protocol CoachServiceType {
     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>
+    //温州通过id获取学员详细
+    func studentInfoApplyByIdRequest(city:String,id:Int,applyDate:String) -> Single<TraineeInfoModel>
     //通过id获取学员成绩
     func stuScoreByOutIdRequest(pageNum:Int ,pageSize:Int ,stuOutId:Int) -> Single<StuResultDataModel>
     //查询签到记录
@@ -90,6 +92,11 @@ final class CoachService: CoachServiceType {
         return networking.request(api).map(TraineeInfoModel.self)
     }
     
+    func studentInfoApplyByIdRequest(city:String,id:Int,applyDate:String) -> RxSwift.Single<TraineeInfoModel> {
+        let api = CoachAPI.studentInfoApplyById(city: city, id: id, applyDate: applyDate)
+        return networking.request(api).map(TraineeInfoModel.self)
+    }
+    
     func stuScoreByOutIdRequest(pageNum: Int, pageSize: Int, stuOutId: Int) -> RxSwift.Single<StuResultDataModel> {
         let api = CoachAPI.stuScoreByOutId(pageNum: pageNum, pageSize: pageSize, stuOutId: stuOutId)
         return networking.request(api).map(StuResultDataModel.self, isModel: true)

+ 21 - 124
JiaPeiManage/Sources/Services/ElogCoachAPI.swift

@@ -9,40 +9,19 @@ import Moya
 import SwiftyUserDefaults
 
 enum ElogCoachAPI {
-    
-    //获取教练信息
-    case coachInfo(id:String ,city:String)
-    //获取教练二维码
-    case coachQrInfo(id:String ,city:String)
-    //获取教练的学员
-    case coachInfoList(city:String,appCoachId:String ,coachId:String ,field:String ,pageNum:Int ,pageSize:Int ,schoolId:Int ,state:String )
-    //获取教练的学员-我的学员
-    case coachInfoMyList(city:String,appCoachId:String ,coachId:String ,field:String ,pageNum:Int ,pageSize:Int ,schoolId:Int ,state:String )
-    //获取教练的学员-针对搜索专用-全局
-    case allStudentInfoList(city:String,coachId:String ,field:String ,pageNum:Int ,pageSize:Int ,schoolId:Int)
-    //预报名-我的学员-搜索
-    case yallStudentInfoList(city:String,coachId:String ,field:String ,pageNum:Int ,pageSize:Int ,schoolId:Int)
-    //预报名-在校学员-搜索
-    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 )
-    //通过id获取学员详细
-    case studentInfoById(city:String,id:Int )
-    //查询成绩
-    case stuScoreByOutId(pageNum:Int ,pageSize:Int ,stuOutId:Int)
-    //查询签到记录
-    case stuTmsSignListByStuId(pageNum:Int ,pageSize:Int ,stuOutId:Int,city:String)
-    //查询人脸比对记录
-    case stuTmsLogFaceListByStuId(pageNum:Int ,pageSize:Int ,stuOutId:Int,city:String)
+
+    //根据学员id获取电子教学日志
+    case elogTmsStudentTeachLogById(city:String ,id:Int ,pageNum:Int ,pageSize:Int)
+    //根据学员id和classId获取电子教学日志照片
+    case elogTmsStudentPhotoById(city:String ,classId:String ,id:Int ,pageNum:Int ,pageSize:Int)
+
 }
 
 extension ElogCoachAPI: TargetType {
     
     var baseURL: URL {
         switch self {
-        case .coachInfo,.coachQrInfo,.coachInfoList,.coachInfoMyList,.coachTempList,.studentInfoById,
-                .stuScoreByOutId,.stuTmsSignListByStuId,.stuTmsLogFaceListByStuId,
-                .allStudentInfoList,.yallStudentInfoList,.yallSchoolStudentInfoList:
+        case .elogTmsStudentTeachLogById,.elogTmsStudentPhotoById:
             return URL(string: HttpRequest.api.path)!
         }
     }
@@ -50,30 +29,11 @@ extension ElogCoachAPI: TargetType {
     var path: String {
 //    city:String ,coachId:String ,field:String ,pageNum:Int ,pageSize:Int ,schoolId:Int
         switch self {
-        case .coachInfo(_,_):
-            return "/jsjp-admin/open-api/tms/coachInfo/getCoachInfo"
-        case .coachQrInfo(_,_):
-            return "/jsjp-admin/open-api/tms/coachInfo/getCoachQrInfo"
-        case .coachInfoList(_,_,_,_,_,_,_,_):
-            return "/jsjp-admin/open-api/tms/coachInfo/list"
-        case .coachInfoMyList(_,_,_,_,_,_,_,_):
-            return "/jsjp-admin/open-api/tms/coachInfo/myList"
-        case .allStudentInfoList(_, _, _, _, _, _):
-            return "/jsjp-admin/open-api/tms/coachInfo/allStudentInfoList"
-        case .yallStudentInfoList(_, _, _, _, _, _):
-            return "/jsjp-admin/open-api/tms/coachInfo/allStudentInfoList"
-        case .yallSchoolStudentInfoList(_, _, _, _, _, _):
-            return "/jsjp-admin/open-api/tms/coachInfo/allSchoolStudentInfoList"
-        case .coachTempList(_,_,_,_,_,_,_,_):
-            return "/jsjp-admin/open-api/tms/coachInfo/studenTempList"
-        case .studentInfoById(_,_):
-            return "/jsjp-admin/open-api/tms/coachInfo/getTmsStudentInfoById"
-        case .stuScoreByOutId(_,_,_):
-            return "/jsjp-admin/open-api/gzpt/userInfo/getUserScoreByOutId"
-        case .stuTmsSignListByStuId(_,_,_,_):
-            return "/jsjp-admin/open-api/tms/coachInfo/getTmsSignListByStuId"
-        case .stuTmsLogFaceListByStuId(_,_,_,_):
-            return "/jsjp-admin/open-api/tms/coachInfo/getTmsLogFaceListByStuId"
+
+        case .elogTmsStudentTeachLogById(_,_,_,_):
+            return "/jsjp-admin/open-api/tms/coachInfo/getTmsStudentTeachLogById"
+        case .elogTmsStudentPhotoById(_,_,_,_,_):
+            return "/jsjp-admin/open-api/tms/coachInfo/getTmsStudentPhotoById"
             
         }
         
@@ -81,8 +41,7 @@ extension ElogCoachAPI: TargetType {
     
     var method: Moya.Method {
         switch self {
-        case .coachInfo,.coachQrInfo,.coachInfoList,.coachTempList,
-                .studentInfoById,.stuScoreByOutId,.stuTmsLogFaceListByStuId:
+        case .elogTmsStudentTeachLogById,.elogTmsStudentPhotoById:
             return .get
         default:
             return .get
@@ -95,9 +54,7 @@ extension ElogCoachAPI: TargetType {
     
     var task: Moya.Task {
         switch self {
-        case .coachInfo(_,_),.coachQrInfo(_,_),.coachInfoList(_,_,_,_,_,_,_,_),.coachInfoMyList(_,_,_,_,_,_,_,_),.coachTempList(_,_,_,_,_,_,_,_),.studentInfoById(_,_)
-            ,.stuScoreByOutId(_,_,_),.stuTmsSignListByStuId(_,_,_,_),.stuTmsLogFaceListByStuId(_,_,_,_),
-                .allStudentInfoList(_, _, _, _, _, _),.yallStudentInfoList(_, _, _, _, _, _),.yallSchoolStudentInfoList(_, _, _, _, _, _):
+        case .elogTmsStudentTeachLogById(_,_,_,_),.elogTmsStudentPhotoById(_,_,_,_,_):
             if let parameters = parameters {
                 return .requestParameters(parameters: parameters, encoding: URLEncoding.default)
             }
@@ -112,77 +69,17 @@ extension ElogCoachAPI: TargetType {
     
     var parameters: [String : Any]? {
         switch self {
-        case let .coachInfo(id,city):
-            return ["city": city,
-                    "id": id,]
-        case let .coachQrInfo(id,city):
-            return ["city": city,
-                    "id": id,]
-        case let .coachTempList(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):
+        case let .elogTmsStudentTeachLogById(city, id, pageNum, pageSize):
             return ["city": city,
-                    "appCoachId": appCoachId,
-                    "coachId": coachId,
-                    "field": field,
+                    "id": id,
                     "pageNum": pageNum,
-                    "pageSize": pageSize,
-                    "schoolId": schoolId==0 ?"":"\(schoolId)",
-                    "state": state,]
-        case let .coachInfoList(city,appCoachId ,coachId ,field ,pageNum ,pageSize ,schoolId ,state):
+                    "pageSize": pageSize]
+        case let .elogTmsStudentPhotoById(city, classId, id, pageNum, pageSize):
             return ["city": city,
-                    "appCoachId": appCoachId,
-                    "coachId": coachId,
-                    "field": field,
+                    "classId": classId,
+                    "id": id,
                     "pageNum": pageNum,
-                    "pageSize": pageSize,
-                    "schoolId": schoolId==0 ?"":"\(schoolId)",
-                    "state": state,]
-        case let .allStudentInfoList(city, coachId, field, pageNum, pageSize, schoolId):
-            return ["city": city,
-                    "coachId": coachId,
-                    "field": field,
-                    "pageNum": pageNum,
-                    "pageSize": pageSize,
-                    "schoolId": schoolId==0 ?"":"\(schoolId)"]
-        case let .yallStudentInfoList(city, coachId, field, pageNum, pageSize, schoolId):
-            return ["city": city,
-                    "coachId": coachId,
-                    "field": field,
-                    "pageNum": pageNum,
-                    "pageSize": pageSize,
-                    "schoolId": schoolId==0 ?"":"\(schoolId)"]
-        case let .yallSchoolStudentInfoList(city, coachId, field, pageNum, pageSize, schoolId):
-            return ["city": city,
-                    "coachId": coachId,
-                    "field": field,
-                    "pageNum": pageNum,
-                    "pageSize": pageSize,
-                    "schoolId": schoolId==0 ?"":"\(schoolId)"]
-        case let .studentInfoById(city,id):
-            return ["city": city,
-                    "id": id,]
-        case let .stuScoreByOutId(pageNum, pageSize, stuOutId):
-            return ["pageNum": pageNum,
-                    "pageSize": pageSize,
-                    "stuOutId": stuOutId,]
-        case let .stuTmsSignListByStuId(pageNum, pageSize, stuOutId, city):
-            return ["pageNum": pageNum,
-                    "pageSize": pageSize,
-                    "id": stuOutId,
-                    "city":city,]
-        case let .stuTmsLogFaceListByStuId(pageNum, pageSize, stuOutId, city):
-            return ["pageNum": pageNum,
-                    "pageSize": pageSize,
-                    "id": stuOutId,
-                    "city":city,]
+                    "pageSize": pageSize]
         default:
             return nil
         }

+ 15 - 4
JiaPeiManage/Sources/Services/ElogCoachService.swift

@@ -10,19 +10,30 @@ import RxCocoa
 import SwiftyJSON
 
 protocol ElogCoachServiceType {
-   
 
+    //根据学员id获取电子教学日志
+    func elogTmsStudentTeachLogByIdRequest(city:String ,id:Int ,pageNum:Int ,pageSize:Int) -> Single<ETeachLogDataModel>
+    //根据学员id和classId获取电子教学日志照片
+    func elogTmsStudentPhotoByIdRequest(city:String ,classId:String ,id:Int ,pageNum:Int ,pageSize:Int) -> Single<ETeachLogPhotoDataModel>
 }
 
 final class ElogCoachService: ElogCoachServiceType {
 
+    private let networking : ElogCoachNetworking
     
-    private let networking : CoachNetworking
-    
-    init(networking: CoachNetworking) {
+    init(networking: ElogCoachNetworking) {
         self.networking = networking
     }
+
+    func elogTmsStudentTeachLogByIdRequest(city: String, id: Int, pageNum: Int, pageSize: Int) -> RxSwift.Single<ETeachLogDataModel> {
+        let api = ElogCoachAPI.elogTmsStudentTeachLogById(city: city, id: id, pageNum: pageNum, pageSize: pageSize)
+        return networking.request(api).map(ETeachLogDataModel.self,isModel: true)
+    }
     
+    func elogTmsStudentPhotoByIdRequest(city: String, classId: String, id: Int, pageNum: Int, pageSize: Int) -> RxSwift.Single<ETeachLogPhotoDataModel> {
+        let api = ElogCoachAPI.elogTmsStudentPhotoById(city: city, classId: classId, id: id, pageNum: pageNum, pageSize: pageSize)
+        return networking.request(api).map(ETeachLogPhotoDataModel.self,isModel: true)
+    }
     
 }
 

+ 12 - 4
JiaPeiManage/Sources/Utils/URLNavigationMap.swift

@@ -14,10 +14,11 @@ final class URLNavigationMap {
     static func initialize(navigator:NavigatorType) {
         
         navigator.register(NYSwPushType.trainee_info.path) { (url, values, context) -> UIViewController? in
-            guard let context = context as? Int
+            guard let context = context as? RowInfo
             else { return nil }
             let meTraineeDetailsPageViewController = MeTraineeDetailsPageViewController(nibName: "MeTraineeDetailsPageViewController")
-            meTraineeDetailsPageViewController.stuId = context
+            meTraineeDetailsPageViewController.stuId = context.id!
+            meTraineeDetailsPageViewController.applyDate = context.applydate
             return meTraineeDetailsPageViewController
         }
         
@@ -69,12 +70,19 @@ final class URLNavigationMap {
         }
         
         navigator.register(NYSwPushType.trainee_estu_log.path) { (url, values, context) -> UIViewController? in
-            let estuLogListViewController = EstuLogListViewController(type: .biandstu)
+            guard let context = context as? TraineeInfoModel
+            else { return nil }
+            let estuLogListViewController = EstuLogListViewController()
+            estuLogListViewController.stuId = context.id!
             return estuLogListViewController
         }
         
         navigator.register(NYSwPushType.trainee_estu_log_photo.path) { (url, values, context) -> UIViewController? in
-            let estuLogPhotoListViewController = EstuLogPhotoListViewController(type: .biandstu)
+            guard let context = context as? ETeachLogInfo
+            else { return nil }
+            let estuLogPhotoListViewController = EstuLogPhotoListViewController()
+            estuLogPhotoListViewController.stuId = context.stuid
+            estuLogPhotoListViewController.classId = context.classid!
             return estuLogPhotoListViewController
         }