无故事王国
2023-10-26 152da0e2d8cd3bd522fb04d1114f0930c33c9fdf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
//
//  CourseExerciseSubListVC.swift
//  WanPai
//
//  Created by 无故事王国 on 2023/6/27.
//
 
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: 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,needMore: false)
//        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}
        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:UITableViewDelegate{
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let model = viewModel.dataSource.value[indexPath.row]
        let vc = CourseVideoDetailVC(model: model)
        vc.title = "课后练习"
        push(vc: vc)
    }
 
}
 
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 viewModel.dataSource.value.count
    }
}
 
extension CourseExerciseSubListVC:QMUITextFieldDelegate{
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        textField.resignFirstResponder()
        viewModel.search.accept(textField.text!)
        viewModel.beginRefresh()
        return true
    }
}