杨锴
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
//
//  ActivitySignupDetailVC.swift
//  WanPai
//
//  Created by 无故事王国 on 2023/6/15.
//
 
import UIKit
import SDWebImage
import JQTools
import QMUIKit
 
let CancelActivitySingup_Noti = Notification.Name.init("CancelActivitySingup_Noti")
 
class ActivitySignupDetailVC: BaseVC {
 
                private var id:Int!
                @IBOutlet weak var view_banner: CommonBannerView!
                //    @IBOutlet weak var img_profile: UIImageView!
                //    @IBOutlet weak var label_storeNames: UILabel!
                @IBOutlet weak var label_title: UILabel!
                @IBOutlet weak var label_joinCondition: UILabel!
                @IBOutlet weak var label_address: UILabel!
                @IBOutlet weak var label_duetime: UILabel!
                @IBOutlet weak var label_starttime: UILabel!
                @IBOutlet weak var label_endtime: UILabel!
                @IBOutlet weak var label_ageScope: UILabel!
                @IBOutlet weak var label_city: UILabel!
                @IBOutlet weak var label_money: UILabel!
                @IBOutlet weak var label_totalMoney: UILabel!
                @IBOutlet weak var label_introducion: UILabel!
                @IBOutlet weak var img_enrollRequired: UIImageView!
                @IBOutlet weak var cons_imgEnrollHei: NSLayoutConstraint!
                @IBOutlet weak var btn_cancel: QMUIButton!
                @IBOutlet weak var tableView: UITableView!
                @IBOutlet weak var cons_tableHei: NSLayoutConstraint!
                @IBOutlet weak var label_matchStore: UILabel!
                @IBOutlet weak var btn_moreMatchStore: UIButton!
 
                var activityDetailModel:ActivityDetailModel?{
                                didSet{
 
                                                guard let m = activityDetailModel else {return}
 
 
                                                let imgs = m.imgs.components(separatedBy: ",")
                                                var items = [CommonBannerModel]()
                                                for (index,img) in imgs.enumerated(){
                                                                items.append(CommonBannerModel(index: index,resource: img,mediaType: .imageUrl))
                                                }
                                                view_banner.setItems(items: items)
 
                                                label_title.text = m.name
                                                label_joinCondition.text = m.registerCondition.strTitle + "参与"
                                                label_address.text = m.address
                                                label_duetime.text = m.registerEndTime
                                                label_starttime.text = m.startTime
                                                label_endtime.text = m.endTime
                                                label_ageScope.text = m.age + "岁"
                                                label_introducion.text = m.introduction
                                                label_city.isHidden = m.province.isEmpty || m.city.isEmpty
                                                label_city.text = m.province + "|" + m.city
                                                label_matchStore.text = m.storeInfos.map({$0.name}).joined(separator: ",")
                                                btn_moreMatchStore.isHidden = (label_matchStore.text?.count ?? 0) < 50
 
                                                img_enrollRequired.sd_setImage(with: URL(string: m.registrationNotes)) {[weak self] image, error, type, url in
                                                                guard let img = image else {
                                                                                self?.cons_imgEnrollHei.constant = 0;return
                                                                }
 
                                                                let radio = img.size.width / img.size.height
                                                                self?.cons_imgEnrollHei.constant = JQ_ScreenW / radio
                                                }
 
                                                switch m.payType {
                                                                case .wechat,.aliPay:
                                                                                label_money.text =  String(format: "%@/人", m.cashPrice.currency())
                                                                                label_totalMoney.text = String(format: "合计:%@", (m.cashPrice * Double(m.participant.count)).currency())
                                                                case .coin:
                                                                                label_money.text =  String(format: "%ld币/人", m.playPaiCoin)
                                                                                label_totalMoney.text = String(format: "合计:%ld币", (m.playPaiCoin * m.participant.count))
                                                                case .courseNum:
                                                                                label_money.text =  String(format: "%ld课时/人", m.classPrice)
                                                                                label_totalMoney.text = String(format: "合计:%ld课时", (m.classPrice * m.participant.count))
                                                                default:
                                                                                label_money.text =  "未知"
                                                                                label_totalMoney.text = "未知"
                                                }
 
                                                cons_tableHei.constant = Double(m.participant.count) * 100
                                                tableView.reloadData()
 
                                                switch m.status {
                                                                case .prepare:
 
                    //不能取消
                    if m.apply == 1{
                        btn_cancel.isHidden = true;return
                    }
 
                                                                                let name = m.apply == 1 ? "取消":"已取消"
                                                                                let color = m.apply == 1 ? Def_ThemeColor:UIColor(hexStr: "#C0C0C0")
                                                                                btn_cancel.isUserInteractionEnabled = m.apply == 1
                                                                                btn_cancel.setTitle(name, for: .normal)
                                                                                btn_cancel.backgroundColor = color
 
                                                                                if m.apply == 1{
                                                                                                btn_cancel.setImage(UIImage(named: "btn_cancel"), for: .normal)
                                                                                }
 
 
                                                                case .ongoing:
                    //不能取消
                    if m.apply == 1{
                        btn_cancel.isHidden = true;return
                    }
 
                                                                                let endTime = Date.jq_StringToTimeInterval(m.registerEndTime, "yyyy-MM-dd HH:mm")
                                                                                if Date.jq_CalByEnum(startDate: Date(), endDate: Date(timeIntervalSince1970: endTime)).minute > 0{
                                                                                                let name = m.apply == 1 ? "取消":"已取消"
                                                                                                let color = m.apply == 1 ? Def_ThemeColor:UIColor(hexStr: "#C0C0C0")
                                                                                                btn_cancel.isUserInteractionEnabled = m.apply == 1
                                                                                                btn_cancel.setTitle(name, for: .normal)
                                                                                                btn_cancel.backgroundColor = color
                                                                                                if m.apply == 1{
                                                                                                                btn_cancel.setImage(UIImage(named: "btn_cancel"), for: .normal)
                                                                                                }
                                                                                }else{
                                                                                                btn_cancel.setTitle("进行中", for: .normal)
                                                                                                btn_cancel.isUserInteractionEnabled = false
                                                                                                btn_cancel.backgroundColor = UIColor(hexStr: "#C0C0C0")
                                                                                }
 
                                                                case .over:
                    btn_cancel.isHidden = false
                                                                                btn_cancel.setTitle("已结束", for: .normal)
                                                                                btn_cancel.isUserInteractionEnabled = false
                                                                                btn_cancel.backgroundColor = UIColor(hexStr: "#C0C0C0")
                                                                case .cancel:
                    btn_cancel.isHidden = false
                                                                                btn_cancel.setTitle("已取消", for: .normal)
                                                                                btn_cancel.isUserInteractionEnabled = false
                                                                                btn_cancel.backgroundColor = UIColor(hexStr: "#C0C0C0")
                                                                default:break
                                                }
                                }
                }
 
                required init(id: Int) {
                                super.init(nibName: nil, bundle: nil)
                                self.id = id
                }
 
                required init?(coder: NSCoder) {
                                fatalError("init(coder:) has not been implemented")
                }
 
 
                override func viewDidLoad() {
                                super.viewDidLoad()
                                title = "活动详情"
 
                                Services.queryMyCompetitionInfo(id: id).subscribe(onNext: {data in
                                                self.activityDetailModel = data.data
                                }).disposed(by: disposeBag)
                }
 
                override func setUI() {
                                btn_cancel.imagePosition = .left
                                btn_cancel.spacingBetweenImageAndTitle = 12
                                tableView.delegate = self
                                tableView.dataSource = self
                                tableView.separatorStyle = .none
                                tableView.register(UINib(nibName: "StudentInfo_2_TCell", bundle: nil), forCellReuseIdentifier: "_StudentInfo_2_TCell")
                                let moreBtnAttributeding = AttributedStringbuilder.build().add(string: "查看更多", withFont: UIFont.systemFont(ofSize: 12, weight: .medium), withColor: Def_ThemeColor).underLine(color: Def_ThemeColor).mutableAttributedString
                                btn_moreMatchStore.setAttributedTitle(moreBtnAttributeding, for: .normal)
        btn_cancel.isHidden = true
                }
 
                @IBAction func matchStoreAction(_ sender: UIButton) {
                                if let content = activityDetailModel?.storeInfos.map({$0.name}).joined(separator: ","){
                                                AgreentView.show(type: .matchStore, content: content)
                                }
                }
 
                @IBAction func operationAction(_ sender: UIButton) {
                                CommonAlertView.show(title: "提示", content: "确认取消吗?取消后相关费用将会退还到原支付账户!") { [weak self]status in
                                                guard let weakSelf = self else { return }
                                                if status{
                                                                Services.cancelMyCOmpetition(id: weakSelf.id).subscribe(onNext: { data in
                                                                                alertSuccess(msg: "取消成功")
                                                                                self?.btn_cancel.setTitle("已取消", for: .normal)
                                                                                self?.btn_cancel.backgroundColor = UIColor(hexStr: "#C0C0C0")
                                                                                NotificationCenter.default.post(name: CancelActivitySingup_Noti, object: nil)
                                                                                NotificationCenter.default.post(name: StudentRefresh_Nofi, object: nil)
                                                                }).disposed(by: weakSelf.disposeBag)
                                                }
                                }
                }
 
}
 
extension ActivitySignupDetailVC:UITableViewDelegate{
 
}
 
extension ActivitySignupDetailVC:UITableViewDataSource{
                func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
                                let student = activityDetailModel!.participant[indexPath.row]
                                let cell = tableView.dequeueReusableCell(withIdentifier: "_StudentInfo_2_TCell") as! StudentInfo_2_TCell
                                cell.indexPath = indexPath
                                cell.activityDetailPartModel = student
                                cell.btn_edit.isHidden = true
                                cell.img_radio.isHidden = true
                                cell.btn_delete.isHidden = true
 
                                return cell
                }
 
                func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
                                return activityDetailModel?.participant.count ?? 0
                }
}