From 3e3bfd1ad307ec2ea42f66e298ccb24cec26955f Mon Sep 17 00:00:00 2001 From: younger_times <841720330@qq.com> Date: 星期三, 26 七月 2023 18:13:33 +0800 Subject: [PATCH] 新增 --- WanPai/Root/Course/VC/CourseExerciseSubListVC.swift | 72 +++++++++++++++++++++++++++++++++--- 1 files changed, 66 insertions(+), 6 deletions(-) diff --git a/WanPai/Root/Course/VC/CourseExerciseSubListVC.swift b/WanPai/Root/Course/VC/CourseExerciseSubListVC.swift index fb5cc63..5545b98 100644 --- a/WanPai/Root/Course/VC/CourseExerciseSubListVC.swift +++ b/WanPai/Root/Course/VC/CourseExerciseSubListVC.swift @@ -7,35 +7,84 @@ import UIKit import QMUIKit +import RxSwift +import RxRelay + +class CourseExerciseViewModel:RefreshModel<ExerciseVideoModel>{ + let courseTypeId = BehaviorRelay<Int?>(value: nil) + let search = BehaviorRelay<String>(value: "") + override func api() -> (Observable<BaseResponse<[ExerciseVideoModel]>>)? { + return Services.exerciseCourseList(courseTypeId: courseTypeId.value, search: search.value) + } +} class CourseExerciseSubListVC: BaseVC { @IBOutlet weak var view_topView: UIView! @IBOutlet weak var btn_assign: QMUIButton! - @IBOutlet weak var tableView: UITableView! + @IBOutlet weak var tableView: BaseTableView! + @IBOutlet weak var tf_search: QMUITextField! + private var types = [CityProfileModel]() + private var selectType:NormalSimpleModel? + let viewModel = CourseExerciseViewModel() + override func viewDidLoad() { super.viewDidLoad() title = "课后练习" + getType() + viewModel.beginRefresh() + } + + private func getType(){ + Services.queryArrangeCourseList().subscribe(onNext: { data in + if let models = data.data{ + self.types = models + } + }).disposed(by: disposeBag) } override func setUI() { btn_assign.imagePosition = .right btn_assign.spacingBetweenImageAndTitle = 5 + tf_search.delegate = self tableView.register(UINib(nibName: "CourseExerciseTCell", bundle: nil), forCellReuseIdentifier: "_CourseExerciseTCell") tableView.delegate = self tableView.dataSource = self tableView.separatorStyle = .none + viewModel.configure(tableView) + tableView.jq_setEmptyView() } + @IBAction func searchAction(_ sender: UIButton) { + tf_search.resignFirstResponder() + viewModel.search.accept(tf_search.text!) + viewModel.beginRefresh() + } + @IBAction func assignAction(_ sender: QMUIButton) { guard !sender.isSelected else {return} - sender.isSelected = true - let items = Array<NormalSimpleModel>() - CourseSubTypeView.show(inView: self.view, afterView: view_topView, items: items) { m in - sender.isSelected = false + guard types.count != 0 else {return} + sender.isSelected = true + var items = Array<NormalSimpleModel>() + items.append(NormalSimpleModel(id: 0, name: "全部课程")) + for type in types { + items.append(NormalSimpleModel(id: type.id, name: type.name)) + } + + CourseSubTypeView.show(inView: self.view, afterView: view_topView, items: items, selectModel: selectType) {[weak self] m in + sender.isSelected = false + self?.selectType = m + if m.id == 0{ + sender.setTitle("布置课程", for: .normal) + self?.viewModel.courseTypeId.accept(nil) + }else{ + sender.setTitle(m.name, for: .normal) + self?.viewModel.courseTypeId.accept(m.id) + } + self?.viewModel.beginRefresh() } closeClouse: { sender.isSelected = false } @@ -48,11 +97,22 @@ extension CourseExerciseSubListVC:UITableViewDataSource{ func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let model = viewModel.dataSource.value[indexPath.row] let cell = tableView.dequeueReusableCell(withIdentifier: "_CourseExerciseTCell") as! CourseExerciseTCell + cell.exerciseVideoModel = model return cell } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return 5 + return viewModel.dataSource.value.count + } +} + +extension CourseExerciseSubListVC:QMUITextFieldDelegate{ + func textFieldShouldReturn(_ textField: UITextField) -> Bool { + textField.resignFirstResponder() + viewModel.search.accept(textField.text!) + viewModel.beginRefresh() + return true } } -- Gitblit v1.7.1