杨锴
2024-09-19 642175113bf6f2c90894e689dacda50278cad570
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
//
//  WatchHistoryDetailVC.swift
//  XQMuse
//
//  Created by 无故事王国 on 2024/8/22.
//
 
import UIKit
import JQTools
import RxRelay
import RxSwift
 
class WatchHistoryViewModel:RefreshInnerModel<CourseModel>{
 
                let state = BehaviorRelay<Int>(value: 1)
                var type = BehaviorRelay<WatchType>(value: .collect)
 
                override func api() -> (Observable<BaseResponse<BaseResponseList<CourseModel>>>)? {
                                switch type.value {
                                                case .history:Services.lookHistory(page: page, pageSize: 20, state: state.value)
                                                case .collect:Services.myCollect(page: page, pageSize: 20, state: state.value)
                                                case .payment:Services.myOrderCourse(page: page, pageSize: 20, state: state.value)
                                }
                }
}
 
 
class WatchHistoryDetailVC: BaseVC {
 
                private var viewModel = WatchHistoryViewModel()
                private var collectionView:UICollectionView!
 
                init(state:Int,type:WatchType) {
                                super.init(nibName: nil, bundle: nil)
                                self.viewModel.type.accept(type)
                                self.viewModel.state.accept(state)
                }
 
                required init?(coder: NSCoder) {
                                fatalError("init(coder:) has not been implemented")
                }
 
                override func viewDidLoad() {
                                super.viewDidLoad()
 
 
                                let layout = UICollectionViewFlowLayout()
                                collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout)
                                collectionView.delegate = self
                                collectionView.dataSource = self
                                collectionView.showsVerticalScrollIndicator = false
                                collectionView.backgroundColor = .clear
                                collectionView.register(UINib(nibName: "HomeRelaxBannerCCell", bundle: nil), forCellWithReuseIdentifier: "_HomeRelaxBannerCCell")
                                collectionView.contentInset = UIEdgeInsets(top: 0, left: 29.5 , bottom: 0, right: 29.5)
 
                                view.addSubview(collectionView)
                                collectionView.snp.makeConstraints { make in
                                                make.top.equalTo(0)
                                                make.left.right.bottom.equalToSuperview()
                                }
 
                                viewModel.configure(collectionView)
                                viewModel.beginRefresh()
                }
}
 
extension WatchHistoryDetailVC:UICollectionViewDelegate & UICollectionViewDataSource{
                func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
                                return viewModel.dataSource.value?.list.count ?? 0
                }
 
                func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
                                let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_HomeRelaxBannerCCell", for: indexPath) as! HomeRelaxBannerCCell
                                let m = viewModel.dataSource.value!.list[indexPath.row]
                                cell.setCourseModel(m)
                                return cell
                }
 
                func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {
                                return CGSizeMake(JQ_ScreenW, 29)
                }
 
                func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
 
                                let m = viewModel.dataSource.value!.list[indexPath.row]
                                if viewModel.state.value == 1{
                                                let vc = HomeItemDetailVC(id: m.id)
                                                JQ_currentViewController().jq_push(vc: vc)
                                }else{
                                                let vc = CourseDetialVC(courseId: m.id)
                                                JQ_currentViewController().jq_push(vc: vc)
                                }
                }
}
 
extension WatchHistoryDetailVC:UICollectionViewDelegateFlowLayout{
                func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
 
                                let w = (JQ_ScreenW - (29.5 * 2) - 18.5) / 2
                                return CGSize(width: w, height: w * 1.3124)
                }
}