//
|
// CourseDetailApplyVC.swift
|
// WanPai
|
//
|
// Created by 杨锴 on 2023/6/9.
|
//
|
|
import UIKit
|
import JQTools
|
import QMUIKit
|
|
class CourseDetailApplyVC: BaseVC {
|
|
@IBOutlet weak var collectionView: UICollectionView!
|
@IBOutlet weak var cons_collectHei: NSLayoutConstraint!
|
@IBOutlet weak var btn_addStudent: QMUIButton!
|
@IBOutlet weak var tableView: UITableView!
|
@IBOutlet weak var cons_collHei: NSLayoutConstraint!
|
@IBOutlet weak var cons_tableHei: NSLayoutConstraint!
|
@IBOutlet weak var btn_coupon: TapBtn!
|
|
@IBOutlet weak var img_cover: UIImageView!
|
@IBOutlet weak var label_title: UILabel!
|
@IBOutlet weak var label_listenWeek: UILabel!
|
@IBOutlet weak var label_listenTime: UILabel!
|
@IBOutlet weak var label_store: UILabel!
|
@IBOutlet weak var label_address: UILabel!
|
|
@IBOutlet weak var label_price: UILabel!
|
@IBOutlet weak var label_originPrice: UILabel!
|
@IBOutlet weak var label_vipPrice: UILabel!
|
@IBOutlet weak var label_coin: UILabel!
|
@IBOutlet weak var btn_hasCoupon: TapBtn!
|
|
@IBOutlet weak var studentTableView: UITableView!
|
|
private var detailModel:CourseDetailModel?
|
private var selectClassIndex:Int = 0
|
private var CellW:Double!
|
private var CellH:Double!
|
private var studentModels = [CourseDetailStudentModel]()
|
private var couponModels = [CouponInfoModel]()
|
|
override func viewDidLoad() {
|
super.viewDidLoad()
|
title = "课程详情"
|
|
if let m = detailModel{
|
img_cover.sd_setImage(with: URL(string: m.coverDrawing))
|
label_title.text = m.name
|
label_listenWeek.text = m.weeks.joined(separator: "、")
|
label_listenTime.text = m.times
|
label_store.text = m.storeName
|
label_address.text = m.storeAddress
|
|
changePrice(selectClassIndex)
|
if let stu = m.student{studentModels.append(stu)}
|
|
cons_collHei.constant = ceil(Double(m.list.count) / 3.0) * CellH + floor(Double(m.list.count) / 3.0) * 21.0
|
collectionView.reloadData()
|
|
cons_tableHei.constant = CGFloat(studentModels.count * 87)
|
tableView.reloadData()
|
}
|
}
|
|
override func setUI() {
|
|
btn_hasCoupon.isHidden = true
|
CellW = (JQ_ScreenW - 155) / 3.0
|
CellH = CellW * 0.439
|
|
cons_tableHei.constant = 76
|
|
collectionView.delegate = self
|
collectionView.dataSource = self
|
collectionView.register(UINib(nibName: "Common_1_CCell", bundle: nil), forCellWithReuseIdentifier: "_Common_1_CCell")
|
|
studentTableView.dataSource = self
|
studentTableView.register(UINib(nibName: "StudentInfoTCell", bundle: nil), forCellReuseIdentifier: "_StudentInfoTCell")
|
|
btn_addStudent.imagePosition = .right
|
btn_addStudent.spacingBetweenImageAndTitle = 3
|
}
|
|
init(detailModel:CourseDetailModel) {
|
super.init(nibName: nil, bundle: nil)
|
self.detailModel = detailModel
|
}
|
|
required init?(coder: NSCoder) {
|
fatalError("init(coder:) has not been implemented")
|
}
|
|
|
@IBAction func couponAction(_ sender: TapBtn) {
|
guard couponModels.count != 0 else {
|
alertError(msg: "暂无优惠券");return
|
}
|
|
CouponChooseView.show()
|
}
|
|
@IBAction func studentAction(_ sender: QMUIButton) {
|
StudentChooseView.show(itemType:.course) {
|
|
} needAddClouse: { [weak self] () in
|
let vc = AddStudentVC()
|
self?.push(vc: vc)
|
}
|
}
|
|
@IBAction func paymentAction(_ sender: UIButton) {
|
PaymentView.show { status in
|
let paymentState:PaymentResultVC.PaymentResult = status ? .success:.fail
|
let vc = PaymentResultVC(result: paymentState, objType: .courseApply)
|
vc.modalPresentationStyle = .fullScreen
|
self.present(vc, animated: true)
|
}
|
}
|
|
private func changePrice(_ index:Int){
|
if let subM = detailModel?.list[index]{
|
label_price.text = subM.paymentPrice.currency()
|
label_originPrice.isHidden = subM.originalPrice == nil
|
label_coin.isHidden = subM.playPaiCoin == nil
|
label_vipPrice.isHidden = subM.vipPrice == nil
|
|
|
//原价
|
if let originPrice = subM.originalPrice{
|
let attribute = AttributedStringbuilder.build().add(string: originPrice.currency(), withFont: UIFont.systemFont(ofSize: 16, weight: .semibold), withColor: UIColor(hexStr: "#3F3F3F").withAlphaComponent(0.58)).underLine(color: UIColor(hexStr: "#3F3F3F").withAlphaComponent(0.58))
|
label_originPrice.attributedText = attribute.mutableAttributedString
|
}
|
|
|
//玩湃币
|
if let paiCoin = subM.playPaiCoin{
|
let coinAttribute = AttributedStringbuilder.build()
|
.add(string: "玩湃币:", withFont: UIFont.systemFont(ofSize: 14, weight: .semibold), withColor: UIColor(hexStr: "#3F3F3F"))
|
.add(string: "\(paiCoin)币", withFont: UIFont.systemFont(ofSize: 14, weight: .semibold), withColor: UIColor(hexStr: "#F21313"))
|
label_coin.attributedText = coinAttribute.mutableAttributedString
|
}
|
|
//会员价
|
if let vipPrice = subM.vipPrice{
|
let vipAttribute = AttributedStringbuilder.build()
|
.add(string: "会员价:", withFont: UIFont.systemFont(ofSize: 14, weight: .semibold), withColor: UIColor(hexStr: "#3F3F3F"))
|
.add(string: vipPrice.currency(), withFont: UIFont.systemFont(ofSize: 14, weight: .semibold), withColor: UIColor(hexStr: "#F21313"))
|
label_vipPrice.attributedText = vipAttribute.mutableAttributedString
|
}
|
}
|
|
queryCouponInfo()
|
}
|
|
private func queryCouponInfo(){
|
if let subM = detailModel?.list[selectClassIndex]{
|
|
var price:Double?
|
switch subM.payType{
|
case .cash:
|
price = subM.originalPrice == nil ? subM.vipPrice : subM.originalPrice
|
case .coin:
|
if let coin = subM.playPaiCoin{price = Double(coin)}
|
}
|
|
guard price != nil else {
|
LogError("会员优惠价格出现问题:nil");return
|
}
|
|
Services.queryAvaiableCopons(id: subM.id, price: price!).subscribe(onNext: { [weak self] data in
|
self?.btn_hasCoupon.isHidden = (data.data?.count ?? 0) == 0
|
self?.couponModels = data.data ?? []
|
}).disposed(by: disposeBag)
|
}
|
}
|
}
|
|
extension CourseDetailApplyVC:UICollectionViewDelegate{
|
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
|
selectClassIndex = indexPath.row
|
collectionView.reloadData()
|
changePrice(selectClassIndex)
|
}
|
}
|
|
extension CourseDetailApplyVC:UICollectionViewDataSource{
|
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
|
let m = detailModel!.list[indexPath.row]
|
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_Common_1_CCell", for: indexPath) as! Common_1_CCell
|
cell.isSelected = indexPath.row == selectClassIndex
|
cell.courseDetailListModel = m
|
|
return cell
|
}
|
|
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
|
return detailModel?.list.count ?? 0
|
}
|
}
|
|
extension CourseDetailApplyVC:UICollectionViewDelegateFlowLayout{
|
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
|
return 21
|
}
|
|
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
|
return 21
|
}
|
|
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
|
return CGSize(width: CellW, height: CellH)
|
}
|
}
|
|
extension CourseDetailApplyVC:UITableViewDataSource{
|
|
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
return studentModels.count
|
}
|
|
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
let cell = tableView.dequeueReusableCell(withIdentifier: "_StudentInfoTCell") as! StudentInfoTCell
|
cell.studentModel = studentModels[indexPath.row]
|
return cell
|
}
|
|
}
|