//
|
// ScanTravelVC.swift
|
// OKProject
|
//
|
// Created by alvin_y on 2020/6/16.
|
// Copyright © 2020 yangwang. All rights reserved.
|
//
|
|
import UIKit
|
import RxSwift
|
import RxCocoa
|
|
/// 司机信息
|
class ScanTravelVC: YYViewController {
|
|
/// 提交
|
@IBOutlet weak var button_submit: YYButton!
|
|
/// 目的地
|
@IBOutlet weak var textField_endAddress: YYTextField!
|
|
/// 开始位置
|
@IBOutlet weak var textField_startAddress: YYTextField!
|
|
/// 拨打手机号
|
@IBOutlet weak var button_phone: UIButton!
|
|
/// 订单数
|
@IBOutlet weak var label_orderNum: UILabel!
|
|
/// 评分
|
@IBOutlet weak var label_score: UILabel!
|
|
/// 品牌
|
@IBOutlet weak var label_brand: UILabel!
|
|
/// 车牌
|
@IBOutlet weak var label_licensePlate: UILabel!
|
|
/// 名字
|
@IBOutlet weak var label_name: UILabel!
|
|
/// 头像
|
@IBOutlet weak var image_avatar: YYImageView!
|
|
/// viewModel
|
let viewModel = TravelViewModel()
|
|
/// 消息按钮
|
private let button_message: UIButton = {
|
let btn = UIButton.init(type: .custom)
|
btn.setImage(UIImage.init(named: "icon_nav_news")!, for: .normal)
|
btn.setTitle("", for: .normal)
|
btn.bounds = CGRect.init(x: 0, y: 0, width: 30, height: 30)
|
btn.contentHorizontalAlignment = .center
|
return btn
|
}()
|
|
/// 数据源
|
private var model: DriverDetailInfoModel?
|
|
let sysViewModel = SystemMessageViewModel()
|
|
init(model: DriverDetailInfoModel,type: OrderType) {
|
super.init(nibName: nil, bundle: nil)
|
self.model = model
|
self.viewModel.orderType.accept(type)
|
self.viewModel.orderSource.accept(2)
|
}
|
|
required init?(coder: NSCoder) {
|
fatalError("init(coder:) has not been implemented")
|
}
|
|
override func viewDidLoad() {
|
super.viewDidLoad()
|
|
// Do any additional setup after loading the view.
|
}
|
|
override func viewWillAppear(_ animated: Bool) {
|
super.viewWillAppear(animated)
|
sysViewModel.queryNoReadNoticeNum()
|
}
|
|
override func viewWillDisappear(_ animated: Bool) {
|
super.viewWillDisappear(animated)
|
YYMapViewManager.share.clearData()
|
// 收起
|
NotificationCenter.default.post(Notification.init(name: Notification.Name(rawValue: YYTableViewReset)))
|
}
|
|
//MARK: - UI
|
override func setupViews() {
|
super.setupViews()
|
navigationItem.title = "扫码叫车"
|
// button_message.addTarget(self, action: #selector(message), for: .touchUpInside)
|
// navigationItem.rightBarButtonItem = UIBarButtonItem.init(customView: button_message)
|
textField_startAddress.delegate = self
|
textField_endAddress.delegate = self
|
guard let data = self.model else {return}
|
self.viewModel.driverId.accept(data.id)
|
self.image_avatar.load(url: data.avatar)
|
self.label_name.text = data.name
|
self.label_licensePlate.text = data.licensePlate
|
self.label_brand.text = data.brand
|
self.label_score.text = "\(data.fraction.remain1Digits())"
|
self.label_orderNum.text = "\(data.orderNum)单"
|
if data.state == 2{ // 空闲
|
|
}else if data.state == 3{ // 服务中
|
self.button_submit.isUserInteractionEnabled = false
|
self.button_submit.alpha = 0.5
|
self.button_submit.setTitle("该司机正在服务请稍后在下单", for: .normal)
|
}else{
|
self.button_submit.isUserInteractionEnabled = false
|
self.button_submit.alpha = 0.5
|
self.button_submit.setTitle("该司机未上班", for: .normal)
|
}
|
}
|
|
//MARK: - Rx
|
override func bindRx() {
|
super.bindRx()
|
|
sysViewModel.queryNoReadNoticeNumSubject
|
.subscribeOn(MainScheduler.instance)
|
.subscribe(onNext: { [unowned self] (status) in
|
switch status {
|
case .loading: break
|
case .success(let model):
|
guard let data: NoticeNumModel = model as? NoticeNumModel else{return}
|
self.button_message.showBadge(hidden: data.number > 0 ? false : true,percentX: 0.75, percentY: 0.1,size: CGSize(width: 4, height: 4))
|
break
|
case .error( _):
|
break
|
}
|
}).disposed(by: disposeBag)
|
|
|
button_submit.rx.tap.subscribe(onNext: {[unowned self] (_) in
|
if self.textField_startAddress.isEmpty(empty: "请选择出发地"){
|
return
|
}
|
if self.textField_endAddress.isEmpty(empty: "请选择目的地"){
|
return
|
}
|
if self.viewModel.orderType.value == .taxi{
|
self.viewModel.taxiOrder()
|
}else{
|
self.viewModel.selectedCarType.accept(YYCarTypeModel.init(amount: 0, id: -1, img: "", name: ""))
|
YYMapViewManager.share.carpoolingType.accept(.exclusive)
|
self.viewModel.specialOrder()
|
}
|
}).disposed(by: disposeBag)
|
|
button_phone.rx.tap.subscribe(onNext: {[unowned self] (_) in
|
guard let data = self.model else {return}
|
call(number: data.phone)
|
}).disposed(by: disposeBag)
|
|
YYMapViewManager.share.originInfo
|
.subscribeOn(MainScheduler.instance)
|
.map{ (value) -> String in
|
return "\(value?.name ?? "")"
|
}
|
.bind(to: textField_startAddress.rx.text).disposed(by: rx.disposeBag)
|
|
YYMapViewManager.share.destination
|
.subscribeOn(MainScheduler.instance)
|
.map{ (value) -> String in
|
return "\(value?.name ?? "")"
|
}
|
.bind(to: textField_endAddress.rx.text).disposed(by: rx.disposeBag)
|
|
|
viewModel.taxiOrderSubject
|
.subscribeOn(MainScheduler.instance)
|
.subscribe(onNext: { [unowned self] (status) in
|
switch status {
|
case .loading:
|
self.show()
|
break
|
case .success(_):
|
self.hide()
|
YYMapViewManager.share.clearData()
|
// 收起
|
NotificationCenter.default.post(Notification.init(name: Notification.Name(rawValue: YYTableViewReset)))
|
if self.viewModel.orderType.value.rawValue == 1{
|
// 收起
|
let vc = YYSpecialCarViewController.init(orderId: self.viewModel.orderId.value,isCarpool: false)
|
self.yy_push(vc: vc)
|
}else{
|
// 收起
|
let vc = TravelServiceVC.init(orderId: self.viewModel.orderId.value, orderType: self.viewModel.orderType.value)
|
|
self.yy_push(vc: vc)
|
}
|
|
|
break
|
case .error(let error):
|
self.hide()
|
alert(text: error.localizedDescription)
|
break
|
}
|
}).disposed(by: disposeBag)
|
}
|
|
/// 消息
|
@objc func message(){
|
if isUserLogined(){
|
|
}
|
}
|
}
|
|
|
extension ScanTravelVC: UITextFieldDelegate
|
{
|
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
|
if textField == textField_startAddress{
|
let vc = storyBoard(name: "Home", identifier: "SearchAddressVC") as! SearchAddressVC
|
vc.origin.accept(true)
|
vc.complete.delegate(on: self) { (self, arge) in
|
let (model,_) = arge
|
YYMapViewManager.share.originInfo.accept(model)
|
}
|
self.yy_push(vc: vc)
|
return false
|
}else if textField == textField_endAddress{
|
let vc = storyBoard(name: "Home", identifier: "SearchAddressVC") as! SearchAddressVC
|
vc.origin.accept(false)
|
vc.complete.delegate(on: self) { (self, arge) in
|
let (model,_) = arge
|
YYMapViewManager.share.destination.accept(model)
|
}
|
self.yy_push(vc: vc)
|
return false
|
}
|
return false
|
}
|
}
|