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