杨锴
2025-05-11 7453d2d0cef415b34323d1b91e6cfa4a6ba31178
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
125
126
127
128
129
130
131
132
//
//  CourseExerciseSubListVC.swift
//  WanPai
//
//  Created by 无故事王国 on 2023/6/27.
//
 
import UIKit
import QMUIKit
import RxSwift
import RxRelay
 
let CourseExercise_Noti = Notification.Name.init("CourseExercise_Noti")
 
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()
    }
 
    override func setRx() {
        NotificationCenter.default.rx.notification(CourseExercise_Noti).take(until: self.rx.deallocated).subscribe(onNext: {[weak self] noti in
            self?.viewModel.beginRefresh()
        }).disposed(by: disposeBag)
    }
 
 
    @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
    }
}