宽窄优行-由【嘉易行】项目成品而来
younger_times
2023-05-30 ab6ef7166ee51721fec3e3537414f6d6ed08b49d
OKProject/Class/Home/Controller/ReasonforTravelVC.swift
@@ -8,19 +8,22 @@
import UIKit
import QMUIKit
import HandyJSON
class PassengerInfo:HandyJSON{
    var name = ""
    var phone:String?
    required init(){}
    convenience init(name:String,phone:String? = nil){
        self.init()
        self.name = name
        self.phone = phone
    }
}
class ReasonforTravelVC: YYViewController {
    class PassengerInfo{
        var name = ""
        var phone:String?
        convenience init(name:String,phone:String? = nil){
            self.init()
            self.name = name
            self.phone = phone
        }
    }
    @IBOutlet weak var scrollButtomCons: NSLayoutConstraint!
    @IBOutlet weak var tableView: UITableView!
@@ -36,8 +39,8 @@
    @IBOutlet weak var view_addPassenger: UIView!
    var passengers = [PassengerInfo]()
    var reasonModels = [ReasonModel]()
    var selectIndex = 0
    var viewModel:TravelViewModel!
    var selectIndex = Set<Int>()
    override func viewDidLoad() {
        super.viewDidLoad()
@@ -54,10 +57,18 @@
        scrollButtomCons.constant = app.window?.safeAreaInsets.bottom ?? 0
        let h = ceil(8 / 4.0) * 30.0 + floor(8 / 4.0) * 10.0
        collectViewHeiCons.constant = h
        if viewModel.passengers.value.count == 0{
            passengers.append(PassengerInfo(name: app.userInfo.nickName, phone: app.userInfo.phone))
        }else{
            passengers = viewModel.passengers.value
        }
        passengers.append(PassengerInfo(name: "杨锴", phone: "18111223301"))
        tableViewHeiCons.constant = 40 * Double(passengers.count)
        
        btn_cost.isSelected = viewModel.officalPaymentType.value == .selfPay
        btn_companyCost.isSelected = viewModel.officalPaymentType.value == .company
        textView.text = self.viewModel.trailContentReason.value
        
        APIManager.shared.provider.rx.request(.getBusinessReason).mapThenValidate([ReasonModel].self).subscribe { result in
            switch result{
@@ -65,6 +76,15 @@
                self.reasonModels = m ?? []
                let h = ceil(Double(self.reasonModels.count) / 4.0) * 30.0 + floor(Double(self.reasonModels.count) / 4.0) * 10.0
                self.collectViewHeiCons.constant = h
                for (index,v) in self.reasonModels.enumerated(){
                    if let values = self.viewModel.trailReason.value{
                        if  values.contains(v.name){
                            self.selectIndex.insert(index)
                        }
                    }
                }
                self.collectionView.reloadData()
            case .failure(let error):
                alert(text: error.localizedDescription)
@@ -79,6 +99,10 @@
        textView.rx.text.changed.subscribe(onNext: {text in
            self.label_limit.text = "\(text?.count ?? 0)/50"
        }).disposed(by: disposeBag)
        textView.rx.text.orEmpty.changed.subscribe(onNext: {text in
            self.viewModel.trailContentReason.accept(text)
        }).disposed(by: disposeBag)
    }
@@ -108,6 +132,21 @@
    }
    @IBAction func closeAction(_ sender: Any) {
        self.removeViewAndControllerFromParentViewController()
    }
    @IBAction func completeAction(_ sender: UIButton) {
        self.viewModel.trailContentReason.accept(textView.text)
        var cotnent = [String]()
        for v in selectIndex{
            cotnent.append(reasonModels[v].name)
        }
        guard cotnent.count != 0 else {alert(text: "请选择出行事由");return}
        viewModel.trailReason.accept(cotnent.joined(separator: ","))
        viewModel.officalPaymentType.accept(btn_cost.isSelected ? .selfPay:.company)
        viewModel.passengers.accept(passengers)
        self.removeViewAndControllerFromParentViewController()
    }
}
@@ -147,7 +186,11 @@
extension ReasonforTravelVC:UICollectionViewDelegate{
    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        selectIndex = indexPath.row
        if selectIndex.contains(indexPath.row){
            selectIndex.remove(indexPath.row)
        }else{
            selectIndex.insert(indexPath.row)
        }
        collectionView.reloadData()
    }
}
@@ -161,7 +204,7 @@
        cell.titleL.cornerRadius = 2
        cell.titleL.backgroundColor = .white
        cell.titleL.font = UIFont.systemFont(ofSize: 12, weight: .medium)
        if selectIndex == indexPath.row{
        if selectIndex.contains(indexPath.row){
            cell.titleL.borderColor = UIColor(hexString: "#FF884D")!
            cell.titleL.textColor = UIColor(hexString: "#FF884D")!
        }else{