//
|
// YYSpecialCarCommentViewController.swift
|
// OKProject
|
//
|
// Created by alvin_y on 2020/9/17.
|
// Copyright © 2020 yangwang. All rights reserved.
|
//
|
|
import UIKit
|
import RxRelay
|
import RxSwift
|
|
class YYSpecialCarCommentViewController: YYTableViewController {
|
|
/// 是否为摆渡车下单
|
var isFERRY = false
|
let viewModel: YYSpecialCarViewModel
|
let homeViewModel = HomeViewModel()
|
var adItems = [AdvertisingModel]()
|
|
let didPressRefresh = Delegate<Void, Void>()
|
|
/// 司机和行程信息栏
|
let view_travel = YYTravelInfosView.makeByXIB()
|
|
/// 金额
|
let cell_rating = YYRatingStartCell.makeByXIB()
|
|
/// 立即支付
|
lazy var button_evaluation: UIButton = {
|
let button = UIButton()
|
button.setTitle("匿名评价", for: .normal)
|
button.setTitleColor(.white, for: .normal)
|
button.isHidden = true
|
button.backgroundColor = #colorLiteral(red: 0.2901960784, green: 0.2980392157, blue: 0.3490196078, alpha: 1)
|
button.titleLabel?.font = UIFont.systemFont(ofSize: 14, weight: .medium)
|
button.cornerRadius = 4
|
return button
|
}()
|
|
init(viewModel: YYSpecialCarViewModel) {
|
self.viewModel = viewModel
|
self.homeViewModel.advertType.accept(3)
|
super.init(nibName: nil, bundle: nil)
|
}
|
|
required init?(coder aDecoder: NSCoder) {
|
fatalError("init(coder:) has not been implemented")
|
}
|
|
override func viewDidLoad() {
|
super.viewDidLoad()
|
if self.viewModel.orderType.value == .travel {
|
self.isFeerCar()
|
}
|
// 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.register(cellName: "AdvertCell", identifier: "item")
|
tableView.separatorStyle = .none
|
view.addSubview(view_travel)
|
view.addSubview(button_evaluation)
|
cell_rating.view_star.addTarget(self, action: #selector(starRatingChanged), for: .valueChanged)
|
cell_rating.tagsView.completion = { [unowned self] (selectTags, index) in
|
self.viewModel.evaluationArray = selectTags as? [String] ?? []
|
}
|
}
|
|
//MARK: - Layouts
|
override func defineLayouts() {
|
super.defineLayouts()
|
|
var height = 42 * 3
|
if viewModel.orderType.value.rawValue == 3 {
|
height = 42 * 4
|
if viewModel.dataSource.value?.remark.count ?? 0 > 0 {
|
height = 42 * 5
|
}
|
}
|
view_travel.snp.makeConstraints { (make) in
|
make.top.equalTo(topLayoutGuide.snp.bottom)
|
make.left.right.equalTo(view)
|
make.height.equalTo(height+89)
|
}
|
|
|
tableView.snp.remakeConstraints { (make) in
|
make.top.equalTo(view_travel.snp.bottom)
|
make.left.equalToSuperview()
|
make.right.equalToSuperview()
|
make.bottom.equalToSuperview().offset(-44)
|
}
|
|
button_evaluation.snp.makeConstraints { (make) in
|
make.left.equalToSuperview().offset(14)
|
make.right.equalToSuperview().offset(-14)
|
make.height.equalTo(44)
|
make.bottom.equalToSuperview().offset(-14)
|
}
|
}
|
|
//MARK: - Rx
|
override func bindRx() {
|
super.bindRx()
|
/// 司机信息
|
viewModel.dataSource
|
.subscribe(onNext: { [unowned self] (dataSource) in
|
self.view_travel.configure(for: dataSource)
|
guard let data = dataSource else {return}
|
if data.state == 9 || data.state == 8{
|
self.cell_rating.label_amount.text = "¥\(data.payMoney.remain2Digits())"
|
self.cell_rating.label_amount.isHidden = data.payMoney == 0
|
}else{
|
self.cell_rating.label_amount.text = "¥\(data.orderMoney.remain2Digits())"
|
self.cell_rating.label_amount.isHidden = data.orderMoney == 0
|
}
|
})
|
.disposed(by: disposeBag)
|
|
/// 立即评价
|
button_evaluation.rx.tap
|
.subscribe(onNext: {[unowned self] (_) in
|
if self.viewModel.evaluationArray.count != 0{
|
let content = (self.viewModel.evaluationArray as NSArray).componentsJoined(by: ",")
|
self.viewModel.content.accept(content)
|
}
|
self.viewModel.fraction.accept(Int(self.cell_rating.view_star.value))
|
self.orderEvaluate()
|
})
|
.disposed(by: disposeBag)
|
|
/// 订单详情
|
cell_rating.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)
|
|
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)
|
|
homeViewModel.getAdvertising()
|
homeViewModel.requestSubject.subscribe(onNext: {status in
|
switch status {
|
case .success(let model):
|
if let m = model as? [AdvertisingModel]{
|
self.adItems = m
|
self.tableView.reloadData()
|
}
|
break
|
case .loading:break
|
case .error(_):break
|
}
|
}).disposed(by: disposeBag)
|
}
|
|
/// 评分
|
@objc func starRatingChanged() {
|
if cell_rating.view_star.value < 5{
|
self.cell_rating.evaluationLeftContraint.constant = 10
|
self.cell_rating.evaluationRightContraint.constant = 10
|
}else{
|
self.cell_rating.evaluationLeftContraint.constant = 50
|
self.cell_rating.evaluationRightContraint.constant = 50
|
}
|
cell_rating.tagsView.clearSelectedTags()
|
cell_rating.tagsView.isHidden = false
|
button_evaluation.isHidden = false
|
let array = getEvaluatContent(value: Int(cell_rating.view_star.value))
|
cell_rating.tagsView.tags = array
|
cell_rating.tagsView.reloadData()
|
let height = HXTagsView.getEqualSpaceFlowLayoutHeight(withTags: array, layout: cell_rating.tagsView.layout, tagAttribute: cell_rating.tagsView.tagAttribute, width: screenW - (self.cell_rating.evaluationLeftContraint.constant + self.cell_rating.evaluationRightContraint.constant))
|
self.cell_rating.evaluationConstraint.constant = height
|
self.tableView.reloadData()
|
}
|
/// 摆渡车
|
func isFeerCar(){
|
|
let view = TravelSuccessView.show(window: self.view)
|
view.sureBlock = {
|
// 预约摆渡车
|
let vc = ShuttleBusesVC()
|
vc.crossCityOrderId = self.viewModel.dataSource.value?.orderId.string ?? ""
|
let model = TravelServiceModel()
|
|
model.startAddress = self.viewModel.dataSource.value?.endAddress ?? ""
|
model.startLon = (self.viewModel.dataSource.value?.endLon ?? 0.0)
|
model.startLat = (self.viewModel.dataSource.value?.endLat ?? 0.0)
|
vc.model.accept(model)
|
vc.travelType.accept(.commentTravel)
|
self.yy_push(vc: vc)
|
|
}
|
|
}
|
/// 评价
|
func orderEvaluate() {
|
YYAlertKit.displayActivity()
|
viewModel.orderEvaluate()
|
.subscribe(onNext: {[unowned self] (result) in
|
switch result{
|
case .success(_):
|
YYAlertKit.display(message: "评价成功")
|
|
self.button_evaluation.isHidden = true
|
self.cell_rating.tagsView.isUserInteractionEnabled = false
|
self.cell_rating.view_star.isUserInteractionEnabled = false
|
NotificationCenter.default.post(name: NSNotification.Name.init(YYOrderListRefresh), object: nil)
|
self.didPressRefresh.call()
|
// 查询是否有红包
|
self.queryRedMoney()
|
|
break
|
case .failure(let error):
|
YYAlertKit.display(message: error.localizedDescription)
|
break
|
}
|
})
|
.disposed(by: disposeBag)
|
}
|
/// // 查询是否有红包
|
func queryRedMoney() {
|
viewModel.queryRedMoney()
|
.subscribe(onNext: {[unowned self] (result) in
|
switch result{
|
case .success(let data):
|
guard let data = data else {return}
|
if data.amount != 0{
|
self.viewModel.shareRedEnvelopeAmount.accept(data.amount)
|
alert(popup: .double, title: "提示", text: "分享APP给好友可以获得\(data.amount)元打车红包", submitTitle: "去分享", cancelTitle: "不分享", submitClick: { [unowned self] in
|
// 弹出分享框
|
ShareView.share(controller: self, title: nil, content: "新版“宽窄优行”隆重上线,下载注册即送打车券。", url: "\(share_url)/share/shareIndex.html?uid=\(app.userInfo.id)&type=1",hiddenMessage: true).show(success: {
|
self.shareRedEnvelope()
|
})
|
}) {}
|
}
|
break
|
case .failure(let error):
|
YYAlertKit.display(message: error.localizedDescription)
|
break
|
}
|
})
|
.disposed(by: disposeBag)
|
}
|
|
/// 分享红包
|
func shareRedEnvelope() {
|
viewModel.shareRedEnvelope()
|
.subscribe(onNext: { (result) in
|
switch result{
|
case .success(_):
|
alert(popup: .single, title: "提示", text: "您收到一个\(String(format: "%.2f", self.viewModel.shareRedEnvelopeAmount.value))元的打车红包,已经放入钱包,下次打车可抵扣金额", submitTitle: "确定", cancelTitle: nil, submitClick: {
|
}) {}
|
break
|
case .failure(let error):
|
YYAlertKit.display(message: error.localizedDescription)
|
break
|
}
|
})
|
.disposed(by: disposeBag)
|
}
|
|
/// 获取评价内容
|
/// - Parameter value: 评分
|
/// - Returns: 内容
|
func getEvaluatContent(value: Int) -> [String] {
|
if value < 5{
|
return ["道路不熟","服务态度恶劣","车辆肮脏","车内有异味","车牌号不符","司机吸烟","打电话玩手机","未坐好就开车","未提醒系安全带","未提醒开门注意","过路口不减速","索要好评"]
|
}else{
|
return ["车内整洁","活地图认路准","驾驶平稳","态度好服务棒"]
|
}
|
}
|
}
|
extension YYSpecialCarCommentViewController: UITableViewDataSource {
|
|
func numberOfSections(in tableView: UITableView) -> Int {
|
return 1
|
}
|
|
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
return 1 + adItems.count
|
}
|
|
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
if indexPath.row == 0{
|
return cell_rating
|
}else{
|
let cell = tableView.dequeueReusableCell(withIdentifier: "item", for: indexPath) as! AdvertCell
|
cell.selectionStyle = .none
|
cell.image_cover.load(url: adItems[indexPath.row - 1].imgUrl)
|
return cell
|
}
|
}
|
}
|
|
extension YYSpecialCarCommentViewController: UITableViewDelegate {
|
|
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
|
// if indexPath.row == 0{return}
|
let data = adItems[indexPath.row]
|
// guard indexPath.row > 0,data.isJump == 1 else {return}
|
if data.isJump == 1{
|
switch data.jumpType {
|
case 1:// 外部
|
openURL(url: data.jumpUrl)
|
break
|
case 2:// 内部
|
let vc = YYWebView()
|
vc.name = data.name
|
vc.url = data.content
|
UIViewController.base()?.navigationController?.pushViewController(vc)
|
break
|
default:
|
break
|
}
|
}
|
}
|
|
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
|
if indexPath.row == 0{
|
return UITableView.automaticDimension
|
}else{
|
return 120
|
}
|
|
}
|
}
|