//
|
// InvoiceMoreViewController.swift
|
// OKProject
|
//
|
// Created by 无故事王国 on 2022/5/30.
|
// Copyright © 2022 yangwang. All rights reserved.
|
//
|
|
import UIKit
|
|
class InvoiceMoreViewController: YYViewController {
|
@IBOutlet weak var containerVIew: UIView!
|
@IBOutlet weak var leftCons: NSLayoutConstraint!
|
@IBOutlet weak var startTimeField: UITextField!
|
@IBOutlet weak var endTimeField: UITextField!
|
@IBOutlet weak var minimumField: UITextField!
|
@IBOutlet weak var maxmumField: UITextField!
|
@IBOutlet weak var orderTypeCollectionView: UICollectionView!
|
private var selectIndex = -1
|
private var items = ["快车/专车","出租车","跨城出行","景区直通车","机场专线","公务用车"]
|
var viewMoel:InvoiceOrderViewModel?
|
var completeClouse:(()->Void)?
|
var minDate:Date?
|
var maxDate:Date?
|
|
override func viewWillAppear(_ animated: Bool) {
|
super.viewWillAppear(animated)
|
leftCons.constant = ScreenWidth
|
view.layoutIfNeeded()
|
}
|
|
override func viewDidAppear(_ animated: Bool) {
|
super.viewDidAppear(animated)
|
|
selectIndex = (viewMoel?.orderType.value?.rawValue ?? 0) - 1
|
startTimeField.text = viewMoel?.startTime.value
|
endTimeField.text = viewMoel?.endTime.value
|
|
if let startMoney = viewMoel?.startMoney.value,startMoney > 0{
|
minimumField.text = startMoney.string()
|
}
|
|
if let endMoney = viewMoel?.endMoney.value,endMoney > 0{
|
maxmumField.text = endMoney.string()
|
}
|
|
UIView.animate(withDuration: 0.3, delay: 0, options: .layoutSubviews) {
|
self.leftCons.constant = ScreenWidth - 294
|
self.view.layoutIfNeeded()
|
} completion: { _ in
|
self.orderTypeCollectionView.reloadData()
|
}
|
}
|
|
override func viewDidLoad() {
|
super.viewDidLoad()
|
|
startTimeField.delegate = self
|
endTimeField.delegate = self
|
orderTypeCollectionView.delegate = self
|
orderTypeCollectionView.dataSource = self
|
orderTypeCollectionView.register(UINib(nibName: "Common_SingleText_CCell", bundle: nil), forCellWithReuseIdentifier: "_Common_SingleText_CCell")
|
view.backgroundColor = .black.withAlphaComponent(0.5)
|
view.alpha = 0
|
UIView.animate(withDuration: 0.4) {
|
self.view.alpha = 1.0
|
self.view.layoutIfNeeded()
|
}
|
}
|
|
override func bindRx() {
|
minimumField.rx.text.orEmpty.subscribe(onNext: {[weak self] text in
|
if text.wy_toDouble() > 0{
|
self?.viewMoel?.startMoney.accept(text.wy_toDouble())
|
}
|
}).disposed(by: disposeBag)
|
|
maxmumField.rx.text.orEmpty.subscribe(onNext: {[weak self] text in
|
if text.wy_toDouble() > 0{
|
self?.viewMoel?.endMoney.accept(text.wy_toDouble())
|
}
|
|
}).disposed(by: disposeBag)
|
}
|
|
@IBAction func resetAction(_ sender: UIButton) {
|
startTimeField.text = ""
|
endTimeField.text = ""
|
minimumField.text = ""
|
maxmumField.text = ""
|
selectIndex = -1
|
orderTypeCollectionView.reloadData()
|
|
viewMoel?.orderType.accept(nil)
|
viewMoel?.startTime.accept(nil)
|
viewMoel?.endTime.accept(nil)
|
viewMoel?.startMoney.accept(nil)
|
viewMoel?.endMoney.accept(nil)
|
|
}
|
|
@IBAction func completeAction(_ sender: UIButton) {
|
|
if startTimeField.isEmpty && !endTimeField.isEmpty{
|
alert(text: "请选择起始时间");return
|
}
|
|
if !startTimeField.isEmpty && endTimeField.isEmpty{
|
alert(text: "请选择终止时间");return
|
}
|
|
if minimumField.isEmpty && !maxmumField.isEmpty{
|
alert(text: "请输入最低价");return
|
}
|
|
if !minimumField.isEmpty && maxmumField.isEmpty{
|
alert(text: "请输入最高价");return
|
}
|
|
|
completeClouse?()
|
UIView.animate(withDuration: 0.4, delay: 0, options: .layoutSubviews) {
|
self.view.alpha = 0
|
self.leftCons.constant = ScreenWidth
|
self.view.layoutIfNeeded()
|
} completion: { _ in
|
self.removeFromParent()
|
}
|
}
|
|
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
|
guard let touchPoint = touches.first?.location(in: self.view) else { return }
|
let rect = CGRect(x: 0, y: 0, width: 80, height: ScreenHeight)
|
if rect.contains(touchPoint){
|
UIView.animate(withDuration: 0.4, delay: 0, options: .layoutSubviews) {
|
self.view.alpha = 0
|
self.leftCons.constant = ScreenWidth
|
self.view.layoutIfNeeded()
|
} completion: { _ in
|
self.removeFromParent()
|
}
|
}
|
}
|
}
|
|
extension InvoiceMoreViewController:UICollectionViewDelegate{
|
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
|
selectIndex = indexPath.row
|
collectionView.reloadData()
|
|
var orderType:OrderType = .special
|
switch indexPath.row{
|
case 0:orderType = .special
|
case 1:orderType = .taxi
|
case 2:orderType = .travel
|
case 3:orderType = .scenic
|
case 4:orderType = .plane
|
case 5:orderType = .offical
|
default:break
|
}
|
viewMoel?.orderType.accept(orderType)
|
}
|
}
|
|
extension InvoiceMoreViewController:UICollectionViewDataSource{
|
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
|
return items.count
|
}
|
|
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
|
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_Common_SingleText_CCell", for: indexPath) as! Common_SingleText_CCell
|
cell.titleL.cornerRadius = 3
|
cell.titleL.maskToBounds = true
|
cell.titleL.text = items[indexPath.row]
|
if items[indexPath.row].count >= 6{
|
cell.titleL.font = UIFont.systemFont(ofSize: 12,weight: .medium)
|
}else{
|
cell.titleL.font = UIFont.systemFont(ofSize: 13,weight: .medium)
|
}
|
|
if selectIndex == indexPath.row{
|
cell.titleL.textColor = .white
|
cell.titleL.backgroundColor = UIColor(hexString: "#00BF30")
|
}else{
|
cell.titleL.textColor = UIColor(hexString: "#939393")
|
cell.titleL.backgroundColor = UIColor(hexString: "#F3F4F5")
|
}
|
|
return cell
|
}
|
}
|
|
extension InvoiceMoreViewController:UICollectionViewDelegateFlowLayout{
|
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
|
return 7
|
}
|
|
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
|
return 4
|
}
|
|
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
|
return CGSize(width: 246 / 3, height: 30)
|
}
|
}
|
|
extension InvoiceMoreViewController:UITextFieldDelegate{
|
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
|
|
view.endEditing(true)
|
let minDate = getDateFromTime(time: String(format: "%02ld-%02ld-%02ld", Date().year - 3,1,1))
|
if startTimeField == textField{
|
BRDatePickerView.showDatePicker(withTitle: "", dateType: .YMD, defaultSelValue: Date().zoneFormat("yyyy-MM-dd"), minDate:minDate, maxDate: Date(), isAutoSelect: false, themeColor: .blue) { [weak self](str) in
|
self?.minDate = DateClass.dateStringToDate(str!)
|
self?.maxDate = nil
|
self?.endTimeField.text = ""
|
self?.startTimeField.text = str
|
self?.viewMoel?.endTime.accept(nil)
|
self?.viewMoel?.startTime.accept(str)
|
}
|
}
|
|
if endTimeField == textField{
|
if startTimeField.text!.isEmpty{
|
alert(text: "请先选择起始日期");return false
|
}
|
|
BRDatePickerView.showDatePicker(withTitle: "", dateType: .YMD, defaultSelValue: Date().zoneFormat("yyyy-MM-dd"), minDate:minDate, maxDate: Date(), isAutoSelect: false, themeColor: .blue) {[weak self](str) in
|
guard let weakSelf = self else { return }
|
weakSelf.maxDate = DateClass.dateStringToDate(str!)
|
if DateClass.compareOneDay(oneDay: weakSelf.maxDate!, withAnotherDay: weakSelf.minDate!) > 1{
|
alert(text: "终止时间不能小于起始时间")
|
weakSelf.maxDate = nil
|
weakSelf.endTimeField.text = ""
|
}else{
|
weakSelf.endTimeField.text = str
|
weakSelf.viewMoel?.endTime.accept(str)
|
}
|
}
|
}
|
return false
|
}
|
}
|
|
extension InvoiceMoreViewController{
|
func getDateFromTime(time:String) ->Date{
|
let dateformatter = DateFormatter()
|
//自定义日期格式
|
dateformatter.dateFormat="yyyy-MM-dd"
|
return dateformatter.date(from: time)!
|
}
|
}
|