无故事王国
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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
//
//  SignUpCourseVC.swift
//  WanPai
//
//  Created by 无故事王国 on 2023/9/20.
//
 
import UIKit
import QMUIKit
import JQTools
import RxSwift
import RxDataSources
import RxCocoa
 
class SignUpCourseViewModel:RefreshModel<SignUpCourseItemModel>{
 
    var packageTypeData = BehaviorRelay<[NormalSimpleModel]?>(value: nil)
    var selectPackeType = BehaviorRelay<NormalSimpleModel?>(value: nil)
    var courseType = BehaviorRelay<NormalSimpleModel?>(value: nil)
    var search = BehaviorRelay<String?>(value: nil)
 
    override func api() -> (Observable<BaseResponse<[SignUpCourseItemModel]>>)? {
        return Services.registeredCourse(courseTypeId: courseType.value?.id, search: search.value)
    }
 
    func getDefaultData(){
        Services.coursePackageType().subscribe(onNext: {[weak self] data in
            if var datas = data.data{
                datas.insert(NormalSimpleModel(id: -1, name: "全部"), at: 0)
                self?.packageTypeData.accept(datas)
            }
        }) { error in
 
        }.disposed(by: disposeBag)
    }
}
 
class SignUpCourseVC: BaseVC {
 
    @IBOutlet weak var view_topView: UIView!
    @IBOutlet weak var tf_search: QMUITextField!
    @IBOutlet weak var tableView: BaseTableView!
    @IBOutlet weak var btn_courseType: QMUIButton!
 
    private var showSubTypeView:CourseSubTypeView?
    private let viewModel = SignUpCourseViewModel()
 
    override func viewDidLoad() {
        super.viewDidLoad()
        title = "已报名运动营"
        viewModel.getDefaultData()
        viewModel.beginRefresh()
    }
 
    override func setUI() {
        btn_courseType.imagePosition = .right
        btn_courseType.spacingBetweenImageAndTitle = 5
 
        tableView.delegate = self
        tableView.dataSource = self
        tableView.register(UINib(nibName: "CourseSignUpTCell", bundle: nil), forCellReuseIdentifier: "_CourseSignUpTCell")
        tableView.separatorStyle = .none
        tf_search.delegate = self
        viewModel.configure(tableView,needMore: false)
//        tableView.jq_setEmptyView()
    }
 
    override func setRx() {
        tf_search.rx.controlEvent(.editingDidEnd).subscribe(onNext: { [weak self] in
            if self?.tf_search.text?.isEmpty ?? true{
                self?.viewModel.search.accept(nil)
            }else{
                self?.viewModel.search.accept(self?.tf_search.text!)
            }
            self?.viewModel.beginRefresh()
        }).disposed(by: disposeBag)
    }
 
    private func cleanOther(){
        btn_courseType.isSelected = false
    }
 
    @IBAction func crouseTypeAction(_ sender: UIButton) {
 
        guard !sender.isSelected else {return}
        cleanOther()
        sender.isSelected = true
        showSubTypeView = CourseSubTypeView.show(inView: self.view, afterView: view_topView, items: viewModel.packageTypeData.value!,selectModel: viewModel.courseType.value) { [weak self] m in
            if m.name != "全部"{
                sender.setTitle(m.name, for: .normal)
                self?.viewModel.courseType.accept(m)
            }else{
                sender.setTitle("运动营类型", for: .normal)
                self?.viewModel.courseType.accept(nil)
            }
            sender.isSelected = false
            self?.viewModel.beginRefresh()
        } closeClouse: {
            sender.isSelected = false
        }
    }
 
    @IBAction func searchAction(_ sender: UIButton) {
        view.endEditing(true)
        viewModel.beginRefresh()
    }
}
 
extension SignUpCourseVC:UITableViewDelegate{
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let item = viewModel.dataSource.value[indexPath.row]
        Services.registeredData(coursePayId: item.coursePayId).subscribe(onNext: {data in
            if let m = data.data{
                let vc = CourseDetailVC(id: item.coursePackageId,signUpCourseModel: m)
                self.push(vc: vc)
            }
 
        }) { error in
 
        }.disposed(by: disposeBag)
    }
}
 
extension SignUpCourseVC:UITableViewDataSource{
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "_CourseSignUpTCell") as! CourseSignUpTCell
        cell.signUpCourseItemModel = viewModel.dataSource.value[indexPath.row]
        return cell
    }
 
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return viewModel.dataSource.value.count
    }
}
 
extension SignUpCourseVC:QMUITextFieldDelegate{
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        textField.resignFirstResponder()
        viewModel.beginRefresh()
        return true
    }
}