| | |
| | | |
| | | 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 |
| | | } |
| | |
| | | |
| | | 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 |
| | | } |
| | | } |