//
|
// 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)
|
}
|
|
}
|