From 19a3cec9bbafe352d67a57ae9a1c4c601c73b6c0 Mon Sep 17 00:00:00 2001
From: younger_times <841720330@qq.com>
Date: 星期四, 27 七月 2023 22:19:27 +0800
Subject: [PATCH] fix

---
 WanPai/Root/Course/VC/StudentCourseDetailVC.swift |  139 +++++++++++++++++++++++++++++++++++++--------
 1 files changed, 113 insertions(+), 26 deletions(-)

diff --git a/WanPai/Root/Course/VC/StudentCourseDetailVC.swift b/WanPai/Root/Course/VC/StudentCourseDetailVC.swift
index 7e1a39a..10b444e 100644
--- a/WanPai/Root/Course/VC/StudentCourseDetailVC.swift
+++ b/WanPai/Root/Course/VC/StudentCourseDetailVC.swift
@@ -8,11 +8,32 @@
 import UIKit
 import JQTools
 import QMUIKit
+import SPPageMenu
+import RxRelay
+import RxSwift
+
+
+class StudentCourseViewModel:RefreshModel<CourseRecordModel>{
+
+    let stuId = BehaviorRelay<Int>(value: 0)
+    let lessionId = BehaviorRelay<Int>(value: 0)
+    let startTime = BehaviorRelay<Date?>(value: nil)
+    let type = BehaviorRelay<Int?>(value: nil)
+
+    override func api() -> (Observable<BaseResponse<[CourseRecordModel]>>)? {
+        return Services.recordDetails(stuId: stuId.value, lessionId: lessionId.value, startTime: startTime.value?.jq_format("yyyy-MM"), type: type.value)
+    }
+}
+
 
 class StudentCourseDetailVC: BaseVC {
 
-    private lazy var tableView:UITableView = {
-        let table = UITableView(frame: .zero, style: .plain)
+    private var models = [StartClouseListModel]()
+    private var studentModel:StudentSimpleProfileModel!
+    private var defaultIndex = 0
+
+    private lazy var tableView:BaseTableView = {
+        let table = BaseTableView(frame: .zero, style: .plain)
         table.separatorStyle = .none
         table.delegate = self
         table.dataSource = self
@@ -23,16 +44,57 @@
         return table
     }()
 
-    private let headView = StudentCourseDetailHeadView.jq_loadNibView()
+    private var headView:StudentCourseDetailHeadView = {
+        return StudentCourseDetailHeadView.jq_loadNibView()
+    }()
+    private let viewModel = StudentCourseViewModel()
+
+    private lazy var sectionView:HeaderInSectionView = {
+        let v = HeaderInSectionView()
+        v.btn_filter.addTarget(self, action: #selector(fliterAction), for: .touchUpInside)
+        v.btn_datetime.addTarget(self, action: #selector(datetimePickerAction), for: .touchUpInside)
+        return v
+    }()
+
+
+    required init(models:[StartClouseListModel],defaultIndex:Int,studentModel:StudentSimpleProfileModel) {
+        super.init(nibName: nil, bundle: nil)
+        self.models = models
+        self.defaultIndex = defaultIndex
+        self.studentModel = studentModel
+    }
+
+    required init?(coder: NSCoder) {
+        fatalError("init(coder:) has not been implemented")
+    }
 
     override func viewDidLoad() {
         super.viewDidLoad()
         title = "课时详情"
 
         headView.renewalClouse = { [weak self] () in
-            let vc = CourseDetailApplyVC(detailModel: CourseDetailModel())
-            self?.push(vc: vc)
+            guard let weakSelf = self else { return }
+            let model = weakSelf.models[weakSelf.headView.pageMenu.selectedItemIndex]
+            Services.queryCourseInfo(id: model.courseId).subscribe(onNext: {[weak self] data in
+                if let m = data.data{
+                    let vc = CourseDetailApplyVC(detailModel: m)
+                    self?.push(vc: vc)
+                }
+            }).disposed(by: weakSelf.disposeBag)
         }
+
+        viewModel.startTime.accept(Date())
+        viewModel.lessionId.accept(models[defaultIndex].courseId)
+        viewModel.stuId.accept(studentModel.stuId)
+
+        headView.pageMenu.setItems(models.map({$0.courseName}), selectedItemIndex: defaultIndex)
+        headView.pageMenu.delegate = self
+        headView.label_stuName.text = studentModel.stuName
+        headView.img_stuProfile.sd_setImage(with: URL(string: studentModel.stuImage),placeholderImage: UIImage(named: "placeholder_1"))
+
+        viewModel.beginRefresh()
+
+
     }
 
     override func setUI() {
@@ -41,13 +103,36 @@
             make.edges.equalToSuperview()
         }
 
-
         tableView.tableHeaderView = headView
         headView.snp.makeConstraints { make in
             make.width.equalToSuperview()
             make.height.greaterThanOrEqualTo(0)
         }
+        tableView.jq_setEmptyView()
+        viewModel.configure(tableView,needMore: false)
         headView.layoutIfNeeded()
+    }
+
+    @objc func fliterAction(){
+        JQ_MenuView().show(self, tapView: sectionView.btn_filter, items: ["全部","增加","扣除"],tableHei: 160) {[weak self] index, str in
+            if index == 0{
+                self?.sectionView.btn_filter.setTitle("全部记录", for: .normal)
+                self?.viewModel.type.accept(nil)
+            }else{
+                self?.sectionView.btn_filter.setTitle(str, for: .normal)
+                self?.viewModel.type.accept(index)
+            }
+            self?.viewModel.beginRefresh()
+        }
+    }
+
+    @objc func datetimePickerAction(){
+        CommonDatePickerView.show(before: 3, after: 0, type: .YM) { [weak self] year, month, _ in
+            let date = Date.jq_format(year: year, month: month, day: 2)
+            self?.sectionView.btn_datetime.setTitle(date!.jq_format("yyyy年MM月>"), for: .normal)
+            self?.viewModel.startTime.accept(date)
+            self?.viewModel.beginRefresh()
+        }
     }
 }
 
@@ -57,12 +142,14 @@
 
 extension StudentCourseDetailVC:UITableViewDataSource{
     func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
+         let model = viewModel.dataSource.value[indexPath.row]
         let cell = tableView.dequeueReusableCell(withIdentifier: "_CourseChargeTCell") as! CourseChargeTCell
+        cell.courseRecordModel = model
         return cell
     }
 
     func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
-        return 50
+        return viewModel.dataSource.value.count
     }
 
     func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
@@ -70,14 +157,14 @@
     }
 
     func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
-        let v = HeaderInSectionView()
-        return v
+        sectionView.btn_datetime.setTitle(viewModel.startTime.value?.jq_format("yyyy年MM月>"), for: .normal)
+        return sectionView
     }
 }
 
 private class HeaderInSectionView:UIView{
 
-    private lazy var btn_datetime:QMUIButton = {
+    private(set) lazy var btn_datetime:QMUIButton = {
         let btn = QMUIButton(type: .custom)
         btn.setTitle(Date().jq_format("yyyy年M月>"), for: .normal)
         btn.setTitleColor(UIColor(hexStr: "#0048FF"), for: .normal)
@@ -85,7 +172,7 @@
         return btn
     }()
 
-    private lazy var btn_filter:QMUIButton = {
+    private(set) lazy var btn_filter:QMUIButton = {
         let btn = QMUIButton(type: .custom)
         btn.setTitleColor(UIColor(hexStr: "#414141"), for: .normal)
         btn.titleLabel?.font = UIFont.systemFont(ofSize: 16)
@@ -119,24 +206,24 @@
             make.height.equalTo(22)
             make.centerY.equalTo(btn_filter)
         }
-
-        btn_filter.addTarget(self, action: #selector(fliterAction), for: .touchUpInside)
-        btn_datetime.addTarget(self, action: #selector(datetimePickerAction), for: .touchUpInside)
-    }
-
-    @objc func fliterAction(){
-        JQ_MenuView().show(self, tapView: btn_filter, items: ["1","2"],tableHei: 140) { index, str in
-
-        }
-    }
-
-    @objc func datetimePickerAction(){
-        CommonDatePickerView.show { year, month, day in
-            
-        }
     }
 
     required init?(coder: NSCoder) {
         fatalError("init(coder:) has not been implemented")
     }
 }
+
+extension StudentCourseDetailVC:SPPageMenuDelegate{
+    func pageMenu(_ pageMenu: SPPageMenu, itemSelectedAt index: Int) {
+        defaultIndex = index
+        let model = models[index]
+        headView.label_deductedNums.text = "\(model.deductedNums)"
+        headView.label_totalNums.text = "\(model.totalNums)"
+        headView.label_remainingNums.text = "\(model.remainingNums)"
+        headView.label_datetime.text =  "有效期:\(model.periodOfValidity)"
+        headView.label_deductedNums_1.text = "已扣课时数:\(model.deductedNums)"
+
+        viewModel.lessionId.accept(model.courseId)
+        viewModel.beginRefresh()
+    }
+}

--
Gitblit v1.7.1