无故事王国
2023-10-18 e86e19e5e5909f46e09adec1df430e0214a81590
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
    //
    //  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!
    @IBOutlet weak var btn_complete: UIButton!
    
 
    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:((Int,String)->Void)!
    private let disposeBag = DisposeBag()
    
    override func awakeFromNib() {
        super.awakeFromNib()
        view_container.transform = .init(scaleX: 0.1, y: 0.1)
        alpha = 0
        layoutIfNeeded()
    }
    
    static func show(_ clouse:@escaping (Int,String)->Void){
        let storesView = StoresChooseView.jq_loadNibView()
        storesView.clouse = clouse
        storesView.frame = sceneDelegate?.window?.frame ?? .zero
        sceneDelegate?.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:Int? = 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:Int){
        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(){
        UIView.animate(withDuration: 0.4) {
            self.view_container.transform = .init(scaleX: 0.1, y: 0.1)
            self.alpha = 0
        } completion: { _ in
            self.removeFromSuperview()
        }
    }
 
 
    override func layoutSubviews() {
        super.layoutSubviews()
        btn_complete.localGradientColor(cornerRadius: 20)
    }
 
    @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!.id,storeModel!.name)
    }
    
}