//
|
// OfficialCharterVC.swift
|
// OKProject
|
//
|
// Created by 无故事王国 on 2023/4/17.
|
// Copyright © 2023 yangwang. All rights reserved.
|
//
|
|
import UIKit
|
import QMUIKit
|
|
class OfficialCharterVC: YYViewController {
|
|
@IBOutlet weak var btn_starttime: QMUIButton!
|
@IBOutlet weak var btn_endtime: QMUIButton!
|
@IBOutlet weak var label_usedtime: UILabel!
|
@IBOutlet weak var label_startaddress: UILabel!
|
@IBOutlet weak var label_endaddress: UILabel!
|
@IBOutlet weak var switch_notice: UISwitch!
|
@IBOutlet weak var btn_addPassenger: QMUIButton!
|
@IBOutlet weak var label_passengerNum: UILabel!
|
@IBOutlet weak var label_contact: UILabel!
|
@IBOutlet weak var label_contactPhone: UILabel!
|
@IBOutlet weak var tableView: UITableView!
|
@IBOutlet weak var tableViewHeiCons: NSLayoutConstraint!
|
|
var test_num = 1
|
var viewModel:TravelViewModel!
|
var minDate:Date = Date()
|
|
var startDateTime:Date?
|
var endDateTime:Date?
|
|
var passengers = [PassengerInfo]()
|
|
override func viewDidLoad() {
|
super.viewDidLoad()
|
tableView.delegate = self
|
tableView.dataSource = self
|
tableView.register(UINib(nibName: "OfficialCharterPassengerTCell", bundle: nil), forCellReuseIdentifier: "_OfficialCharterPassengerTCell")
|
|
if viewModel.passengers.value.count == 0{
|
let temp = PassengerInfo(name: app.userInfo.nickName, phone: app.userInfo.phone)
|
passengers.append(temp)
|
}else{
|
passengers.append(contentsOf: viewModel.passengers.value)
|
}
|
|
label_passengerNum.text = "\(passengers.count)"
|
tableView.reloadData { [weak self] in
|
guard let weakSelf = self else { return }
|
weakSelf.tableViewHeiCons.constant = 100.0 * Double(weakSelf.passengers.count - 1)
|
}
|
|
label_contact.text = passengers.first?.name ?? ""
|
label_contactPhone.text = passengers.first?.phone ?? ""
|
|
if let v = YYMapViewManager.share.timeStamp.value{
|
let datetime = DateClass.timeStampToString("\(v * 1000)", dateFormat: "yyyy-MM-dd HH:mm")
|
startDateTime = Date(timeIntervalSince1970: v)
|
btn_starttime.setTitle(datetime, for: .normal)
|
}
|
|
switch_notice.isOn = true
|
}
|
|
override func bindRx() {
|
YYMapViewManager.share.originInfo.subscribe(onNext: {info in
|
self.label_startaddress.text = info?.name ?? ""
|
}).disposed(by: rx.disposeBag)
|
|
YYMapViewManager.share.destination.subscribe(onNext: {info in
|
self.label_endaddress.text = info?.name ?? ""
|
}).disposed(by: rx.disposeBag)
|
|
switch_notice.rx.value.changed.subscribe { status in
|
let value = status ? 1:0
|
self.viewModel.isNotice.accept(value)
|
}.disposed(by: disposeBag)
|
}
|
|
override func setupViews() {
|
super.setupViews()
|
btn_starttime.imagePosition = .right
|
btn_endtime.imagePosition = .right
|
btn_addPassenger.imagePosition = .right
|
btn_addPassenger.spacingBetweenImageAndTitle = 6
|
btn_starttime.spacingBetweenImageAndTitle = 9
|
btn_endtime.spacingBetweenImageAndTitle = 9
|
}
|
|
@IBAction func selectStartAddressAction(){
|
let vc = storyBoard(name: "Home", identifier: "SearchAddressVC") as! SearchAddressVC
|
vc.origin.accept(true)
|
vc.complete.delegate(on: self) { (self, arge) in
|
let (model,_) = arge
|
self.label_startaddress.text = model.address
|
YYMapViewManager.share.searchInfo.accept(model)
|
YYMapViewManager.share.addressNameType.accept(.search)
|
}
|
self.yy_push(vc: vc)
|
}
|
|
@IBAction func selectEndAddressAction(){
|
let vc = storyBoard(name: "Home", identifier: "SearchAddressVC") as! SearchAddressVC
|
vc.origin.accept(false)
|
vc.complete.delegate(on: self) { (self, arge) in
|
let (model,_) = arge
|
self.label_endaddress.text = model.address
|
YYMapViewManager.share.addressNameType.accept(.normal)
|
YYMapViewManager.share.destination.accept(model)
|
}
|
self.yy_push(vc: vc)
|
}
|
|
@IBAction func singleAction(_ sender: UIButton) {
|
UIView.animate(withDuration: 0.6) {
|
self.view.y = screenH
|
} completion: { _ in
|
self.removeFromParent()
|
}
|
}
|
|
@IBAction func addPassengerAction(_ sender: UIButton) {
|
passengers.append(PassengerInfo())
|
tableView.reloadData {[weak self] in
|
guard let weakSelf = self else { return }
|
weakSelf.tableViewHeiCons.constant = 100.0 * Double(weakSelf.passengers.count - 1)
|
weakSelf.label_passengerNum.text = "\(weakSelf.passengers.count)"
|
}
|
}
|
|
@IBAction func startTimeAction(_ sender: UIButton) {
|
BRDatePickerView.showDatePicker(withTitle: "选择用车时间", dateType: .YMDHM, defaultSelValue: minDate.zoneFormat("yyyy-MM-dd HH:mm"), minDate:minDate, maxDate: nil, isAutoSelect: false, themeColor: .blue) { (str) in
|
self.btn_starttime.setTitle(str!, for: .normal)
|
self.startDateTime = DateClass.dateStringToDate(str!,format: "yyyy-MM-dd HH:mm")
|
}
|
}
|
|
@IBAction func endTimeAction(_ sender: UIButton) {
|
guard let date = startDateTime?.addingTimeInterval(5 * 3600) else { alert(text: "请选择开始时间");return}
|
BRDatePickerView.showDatePicker(withTitle: "选择用车时间", dateType: .YMDHM, defaultSelValue: minDate.zoneFormat("yyyy-MM-dd HH:mm"), minDate:date, maxDate: nil, isAutoSelect: false, themeColor: .blue) { [self] (str) in
|
self.btn_endtime.setTitle(str!, for: .normal)
|
|
let endDateTime = DateClass.dateStringToDate(str!,format: "yyyy-MM-dd HH:mm")
|
let diffDays = DateClass.dateDifference(endDateTime, from:self.startDateTime!)
|
|
guard diffDays >= 0.5 else {alert(text: "最短不能低于0.5天");return}
|
self.endDateTime = endDateTime
|
|
self.label_usedtime.text = String(format: "%@天", diffDays.remain1Digits())
|
}
|
}
|
|
@IBAction func submitAction(_ sender: UIButton) {
|
|
guard startDateTime != nil else {
|
alert(text: "请选择用车开始时间");return
|
}
|
|
guard endDateTime != nil else {
|
alert(text: "请选择用车结束时间");return
|
}
|
|
guard YYMapViewManager.share.searchInfo.value != nil else {
|
alert(text: "请选择开始地址");return
|
}
|
|
guard YYMapViewManager.share.destination.value != nil else {
|
alert(text: "请选择结束地址");return
|
}
|
|
guard passengers.filter({$0.name.isEmpty }).count == 0 else {
|
alert(text: "请填写联系人信息");return
|
}
|
|
viewModel.travelEndTime.accept(endDateTime!.dateFormat(format: "yyyy-MM-dd HH:mm"))
|
YYMapViewManager.share.timeStamp.accept(startDateTime!.timeIntervalSince1970)
|
viewModel.passengers.accept(passengers)
|
|
UIView.animate(withDuration: 0.6) {
|
self.view.y = screenH
|
} completion: { _ in
|
self.removeFromParent()
|
}
|
}
|
}
|
|
extension OfficialCharterVC:UITableViewDelegate{
|
|
}
|
|
extension OfficialCharterVC:UITableViewDataSource{
|
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
let cell = tableView.dequeueReusableCell(withIdentifier: "_OfficialCharterPassengerTCell") as! OfficialCharterPassengerTCell
|
cell.indexPath = indexPath
|
|
if viewModel.passengers.value.count > 0{
|
let passenger = passengers[indexPath.row + 1]
|
cell.tf_contact.text = passenger.name
|
cell.tf_contactPhone.text = passenger.phone
|
}
|
|
cell.tf_contact.rx.text.orEmpty.subscribe(onNext: { [weak self] text in
|
self?.passengers[indexPath.row + 1].name = text
|
}).disposed(by: disposeBag)
|
|
cell.tf_contactPhone.rx.text.orEmpty.subscribe(onNext: { [weak self] text in
|
self?.passengers[indexPath.row + 1].phone = text
|
}).disposed(by: disposeBag)
|
|
cell.listener.bind { [weak self] indexPath in
|
guard let weakSelf = self else { return }
|
weakSelf.passengers.remove(at: indexPath.row + 1)
|
tableView.reloadData {
|
guard let weakSelf = self else { return }
|
weakSelf.tableViewHeiCons.constant = 100.0 * Double(weakSelf.passengers.count - 1)
|
}
|
}
|
return cell
|
}
|
|
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
return passengers.count - 1
|
}
|
}
|