//
|
// YYSpecialCarPaymentViewController.swift
|
// OKProject
|
//
|
// Created by alvin_y on 2020/9/17.
|
// Copyright © 2020 yangwang. All rights reserved.
|
//
|
|
import UIKit
|
|
class YYSpecialCarPaymentViewController: YYTableViewController {
|
|
let viewModel: YYSpecialCarViewModel
|
|
/// 金额
|
let cell_amount = YYAmountCell.makeByXIB()
|
|
/// 司机和行程信息栏
|
let view_travel = YYTravelInfosView.makeByXIB()
|
|
let didPressRefresh = Delegate<Void, Void>()
|
|
/// 立即支付
|
lazy var button_payment: UIButton = {
|
let button = UIButton()
|
button.setTitle("立即支付", for: .normal)
|
button.setTitleColor(.white, for: .normal)
|
button.backgroundColor = ThemeColor
|
button.titleLabel?.font = UIFont.systemFont(ofSize: 14, weight: .medium)
|
button.cornerRadius = 4
|
return button
|
}()
|
|
lazy var bottom_prompt: UILabel = {
|
let lb = UILabel()
|
lb.isHidden = true
|
lb.textAlignment = .center
|
lb.text = "若您已付款,请忽略!"
|
lb.textColor = ThemeColor
|
lb.font = UIFont.init(name: Medium, size: 14)!
|
return lb
|
}()
|
init(viewModel: YYSpecialCarViewModel) {
|
self.viewModel = viewModel
|
super.init(nibName: nil, bundle: nil)
|
}
|
|
required init?(coder aDecoder: NSCoder) {
|
fatalError("init(coder:) has not been implemented")
|
}
|
|
override func viewDidLoad() {
|
super.viewDidLoad()
|
|
// Do any additional setup after loading the view.
|
}
|
|
//MARK: - UI
|
override func setupViews() {
|
super.setupViews()
|
view.backgroundColor = #colorLiteral(red: 0.9529411765, green: 0.9568627451, blue: 0.9607843137, alpha: 1)
|
tableView.backgroundColor = #colorLiteral(red: 0.9529411765, green: 0.9568627451, blue: 0.9607843137, alpha: 1)
|
tableView.delegate = self
|
tableView.dataSource = self
|
tableView.separatorStyle = .none
|
view.addSubview(view_travel)
|
view.addSubview(button_payment)
|
view.addSubview(bottom_prompt)
|
bottom_prompt.isHidden = viewModel.orderType.value.rawValue == 3 ? true : false
|
bottom_prompt.isHidden = viewModel.state.value == .waitingForPayment ? false : true
|
}
|
|
//MARK: - Layouts
|
override func defineLayouts() {
|
super.defineLayouts()
|
|
view_travel.snp.makeConstraints { (make) in
|
make.top.equalTo(topLayoutGuide.snp.bottom)
|
make.left.right.equalTo(view)
|
}
|
// tableView.snp.remakeConstraints { (make) in
|
// make.top.equalTo(view_travel.snp.bottom)
|
// make.left.equalToSuperview()
|
// make.right.equalToSuperview()
|
// make.bottom.equalToSuperview().offset(-44)
|
// }
|
button_payment.snp.makeConstraints { (make) in
|
make.left.equalToSuperview().offset(14)
|
make.right.equalToSuperview().offset(-14)
|
make.height.equalTo(44)
|
make.bottom.equalToSuperview().offset(-14)
|
}
|
bottom_prompt.snp.makeConstraints { (make ) in
|
make.left.right.equalToSuperview()
|
make.bottom.equalTo(button_payment.snp.top).offset(-14)
|
}
|
let height = 42 * 3 + 89
|
tableView.snp.remakeConstraints { (make) in
|
if #available(iOS 11.0, *) {
|
make.top.equalTo(self.view.safeAreaLayoutGuide).offset(height)
|
} else {
|
make.top.equalTo(self.view).offset(height)
|
// Fallback on earlier versions
|
}
|
make.left.equalToSuperview()
|
make.right.equalToSuperview()
|
make.bottom.equalToSuperview().offset(-44)
|
}
|
}
|
|
//MARK: - Rx
|
override func bindRx() {
|
super.bindRx()
|
|
viewModel.dataSource.map{value in
|
let attributedString = AttributedStringbuilder.build()
|
.add(string: "查看收费明细", withFont: UIFont.systemFont(ofSize: 12, weight: .medium), withColor: #colorLiteral(red: 0, green: 0, blue: 0, alpha: 0.6)).underLine()
|
.mutableAttributedString
|
|
var cancelAttributedString = AttributedStringbuilder.build()
|
if value?.driverCancle == 1{
|
cancelAttributedString = cancelAttributedString.add(string: "司机取消订单", withFont: UIFont.systemFont(ofSize: 12, weight: .medium), withColor: #colorLiteral(red: 0, green: 0, blue: 0, alpha: 0.6))
|
}else{
|
cancelAttributedString = cancelAttributedString.add(string: "注:司机已接单后用户取消订单费用", withFont: UIFont.systemFont(ofSize: 12, weight: .medium), withColor: #colorLiteral(red: 0, green: 0, blue: 0, alpha: 0.6))
|
}
|
|
self.cell_amount.button_costRule.isHidden = value?.state == 12
|
|
if value?.state == 12{
|
self.cell_amount.buttonDetailCons.constant = 0
|
}
|
|
return value?.state == 12 ? cancelAttributedString.mutableAttributedString : attributedString
|
|
}.bind(to: cell_amount.button_detail.rx.attributedTitle())
|
.disposed(by: disposeBag)
|
|
|
viewModel.dataSource.map{value in
|
return value?.state == 12 ? false : true
|
}.bind(to: cell_amount.button_detail.rx.isUserInteractionEnabled)
|
.disposed(by: disposeBag)
|
|
/// 司机信息
|
viewModel.dataSource
|
.subscribe(onNext: { [unowned self] (dataSource) in
|
self.view_travel.configure(for: dataSource)
|
guard let data = dataSource else {return}
|
|
if data.rideType == 3 && data.state == 9{
|
if data.spellSuccess == 1{
|
self.cell_amount.carpoolingL.text = String(format: "(拼成)-%ld人价", data.peopleNumber)
|
}else{
|
self.cell_amount.carpoolingL.text = String(format: "(未拼成)-%ld人价", data.peopleNumber)
|
}
|
}else{
|
self.cell_amount.carpoolingL.text = ""
|
}
|
|
if data.state == 9 || data.state == 8{
|
self.cell_amount.label_amount.text = "¥\(data.payMoney.remain2Digits())"
|
self.cell_amount.label_amount.isHidden = data.payMoney == 0
|
}
|
else if data.state == 12{
|
self.cell_amount.label_amount.text = "¥\(data.cancelPayMoney.remain2Digits())"
|
self.cell_amount.label_amount.isHidden = data.cancelPayMoney == 0
|
}
|
else{
|
self.cell_amount.label_amount.text = "¥\(data.orderMoney.remain2Digits())"
|
self.cell_amount.label_amount.isHidden = data.orderMoney == 0
|
}
|
})
|
.disposed(by: disposeBag)
|
|
/// 立即支付
|
button_payment.rx.tap
|
.subscribe(onNext: {[unowned self] (_) in
|
if self.viewModel.dataSource.value?.state == 12{
|
let cancelServicePayView = TravelCancelServicePayView.instance(money: self.cell_amount.label_amount.text?.substring(from: 1).wy_toDouble() ?? 0, orderId: self.viewModel.orderId.value, cancelId: self.viewModel.cancelId.value, orderType: self.viewModel.orderType.value.rawValue)
|
cancelServicePayView.show()
|
cancelServicePayView.didPressClose.delegate(on: self) { (self, _) in
|
}
|
cancelServicePayView.refresh.delegate(on: self) { (self, _) in
|
NotificationCenter.default.post(name: NSNotification.Name.init(YYOrderListRefresh), object: nil)
|
self.didPressRefresh.call()
|
}
|
}else{
|
let vc = TravelServicePayVC.init(orderId: self.viewModel.orderId.value, money: self.cell_amount.label_amount.text?.substring(from: 1).wy_toDouble() ?? 0, orderType: self.viewModel.orderType.value)
|
let nav = YYNavigationController.init(rootViewController: vc)
|
self.yy_presentFullScreen(vc: nav)
|
vc.refresh.delegate(on: self) { (self, _) in
|
self.didPressRefresh.call()
|
}
|
|
vc.jumpBlock.delegate(on: self) { (self, _) in
|
let vc = MineCouponsVC()
|
vc.selectIndex = 1
|
self.yy_push(vc: vc)
|
}
|
}
|
|
})
|
.disposed(by: disposeBag)
|
|
/// 订单详情
|
cell_amount.button_detail.rx.tap
|
.subscribe(onNext: {[unowned self] (_) in
|
let vc = YYCostDetailViewController.init(orderId: self.viewModel.orderId.value, orderType: self.viewModel.orderType.value)
|
self.yy_push(vc: vc)
|
})
|
.disposed(by: disposeBag)
|
|
cell_amount.button_costRule.rx.tap.subscribe(onNext: { [unowned self] (_) in
|
guard let model = self.viewModel.dataSource.value else { return }
|
let vc = ValuationRuleVC()
|
vc.model = model
|
switch model.rideType {
|
case 1:vc.type = 11
|
case 2:vc.type = 12
|
case 3:vc.type = 10
|
default:vc.type = 10
|
}
|
self.yy_push(vc: vc)
|
}) { error in
|
|
}.disposed(by: disposeBag)
|
|
view_travel.button_call
|
.rx.tap
|
.subscribe(onNext: {[unowned self] (_) in
|
guard let phone = self.viewModel.dataSource.value?.driverPhone else {return}
|
call(number: phone)
|
})
|
.disposed(by: disposeBag)
|
|
view_travel.button_avatar.rx.tap
|
.subscribe(onNext: {[unowned self] (_) in
|
guard let driverId = self.viewModel.dataSource.value?.driverId else{return}
|
let vc = DriverInfoVC(driverId: driverId)
|
self.yy_push(vc: vc)
|
})
|
.disposed(by: disposeBag)
|
}
|
|
|
}
|
extension YYSpecialCarPaymentViewController: UITableViewDataSource {
|
|
func numberOfSections(in tableView: UITableView) -> Int {
|
return 1
|
}
|
|
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
return 1
|
}
|
|
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
return cell_amount
|
}
|
}
|
|
extension YYSpecialCarPaymentViewController: UITableViewDelegate {
|
|
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
|
return UITableView.automaticDimension
|
}
|
}
|