younger_times
2023-07-14 ca2a4ce89064be715e90ae60dc305c26e7dd5719
WanPai/Root/Other/View/StoresChooseView.swift
@@ -1,17 +1,33 @@
//
//  StoresChooseView.swift
//  WanPai
//
//  Created by 杨锴 on 2023/6/9.
//
    //
    //  StoresChooseView.swift
    //  WanPai
    //
    //  Created by 杨锴 on 2023/6/9.
    //
import UIKit
import JQTools
import RxSwift
class StoresChooseView: UIView,JQNibView{
    @IBOutlet weak var view_container: UIView!
    @IBOutlet weak var label_currently: UILabel!
    @IBOutlet weak var label_province: UILabel!
    @IBOutlet weak var label_city: UILabel!
    private var provinceModel:CityProfileModel?
    private var cityModel:CityProfileModel?
    private var storeModel:CityProfileModel?
    private var provincesModel = [CityProfileModel]()
    private var citysModel = [CityProfileModel]()
    private var storesModel = [CityProfileModel]()
    private var clouse:((String)->Void)!
    private let disposeBag = DisposeBag()
    
    override func awakeFromNib() {
        super.awakeFromNib()
@@ -20,15 +36,36 @@
        layoutIfNeeded()
    }
    
    static func show(){
    static func show(_ clouse:@escaping (String)->Void){
        let storesView = StoresChooseView.jq_loadNibView()
        storesView.clouse = clouse
        storesView.frame = screnDelegate?.window?.frame ?? .zero
        screnDelegate?.window?.addSubview(storesView)
        
        UIView.animate(withDuration: 0.4) {
            storesView.view_container.transform = CGAffineTransform(scaleX: 1.0, y: 1.0)
            storesView.alpha = 1
        }completion: { _ in
            storesView.getData()
        }
    }
    private func getData(_ provinceId:String? = nil){
        Services.queryProvinceAndCity(pcode: provinceId).subscribe(onNext: { [weak self] data in
            guard let weakSelf = self else { return }
            if provinceId == nil{
                weakSelf.provincesModel = data.data ?? []
            }else{
                weakSelf.citysModel = data.data ?? []
            }
        }).disposed(by: disposeBag)
    }
    private func getStore(_ cityCode:String){
        Services.queryStoreAtCity(cityCode: cityCode).subscribe(onNext: { [weak self] data in
            guard let weakSelf = self else { return }
            weakSelf.storesModel = data.data ?? []
        }).disposed(by: disposeBag)
    }
    
    private func close(){
@@ -39,20 +76,63 @@
            self.removeFromSuperview()
        }
    }
    @IBAction func tapChooseAction(_ sender: TapBtn) {
        JQ_MenuView().show(self, tapView: sender, items: ["1","2","3","3","3","3","3","3","3","3"], menuWidth: sender.jq_width, tableHei: 200) { index, str in
    @IBAction func provinceAction(_ sender: TapBtn) {
        guard provincesModel.count != 0 else {
            alertError(msg: "省级获取失败,正在重新获取")
            getData()
            return
        }
        let names = provincesModel.map({$0.name})
        JQ_MenuView().show(self, tapView: sender, items: names, menuWidth: sender.jq_width, tableHei: 200) { [weak self] index, str in
            guard let weakSelf = self else { return }
            weakSelf.provinceModel = weakSelf.provincesModel[index]
            weakSelf.label_province.text = weakSelf.provinceModel?.name ?? ""
            weakSelf.getData(weakSelf.provinceModel!.code)
        }
    }
    @IBAction func cityAction(_ sender: TapBtn) {
        guard provinceModel != nil else {alertError(msg: "请先选择省份");return}
        guard citysModel.count != 0 else {alertError(msg: "当前城市未开通");return}
        JQ_MenuView().show(self, tapView: sender, items: citysModel.map({$0.name}), menuWidth: sender.jq_width, tableHei: 200) { [weak self] index, str in
            guard let weakSelf = self else { return }
            weakSelf.cityModel = weakSelf.citysModel[index]
            weakSelf.label_city.text = weakSelf.cityModel?.name ?? ""
            weakSelf.getStore(weakSelf.cityModel!.code)
        }
    }
    @IBAction func storeAction(_ sender: TapBtn) {
        guard provincesModel.count != 0 else {
            alertError(msg: "请先选择省份");return
        }
        guard citysModel.count != 0 else {
            alertError(msg: "请先选城市");return
        }
        JQ_MenuView().show(self, tapView: sender, items: storesModel.map({$0.name}), menuWidth: sender.jq_width, tableHei: 200) { [weak self] index, str in
            guard let weakSelf = self else { return }
            weakSelf.storeModel = weakSelf.storesModel[index]
            weakSelf.label_currently.text = weakSelf.storeModel?.name ?? ""
        }
    }
    
    @IBAction func closeAction(_ sender: UIButton) {
        close()
    }
    
    @IBAction func completeAction(_ sender: UIButton) {
        guard storeModel != nil else {
            alertError(msg: "请选择门店名称");return
        }
        close()
        clouse?(storeModel!.code)
    }
    
}