add
无故事王国
2024-06-03 3d8ce4866799bea7e66699acdeb86b60b0ba033c
DolphinEnglishLearnStudent/Moudle/Me/VC/AddressManageHandleVC.swift
@@ -6,17 +6,119 @@
//
import UIKit
import QMUIKit
import RxRelay
class AddressManageHandleViewModel{
            var userName = BehaviorRelay<String?>(value: nil)
            var phone = BehaviorRelay<String?>(value: nil)
            var provinceModel = BehaviorRelay<AddressTreeModel?>(value: nil)
            var cityModel = BehaviorRelay<AddressTreeModel?>(value: nil)
            var countryModel = BehaviorRelay<AddressTreeModel?>(value: nil)
            var detailAddress = BehaviorRelay<String?>(value: nil)
            var isDefault = BehaviorRelay<Bool>(value: false)
}
class AddressManageHandleVC: BaseVC {
            @IBOutlet weak var tf_name: UITextField!
            @IBOutlet weak var tf_phone: QMUITextField!
            @IBOutlet weak var tf_address: QMUITextField!
            @IBOutlet weak var tf_addressContent: QMUITextField!
            @IBOutlet weak var btn_isDefault: UIButton!
            let viewModel = AddressManageHandleViewModel()
            private var updateModel:AddressModel?
            @IBOutlet weak var view_container: UIView!
            override func viewDidLoad() {
        super.viewDidLoad()
                        if let updateModel{
                                    tf_name.text = updateModel.recipient
                                    tf_phone.text = updateModel.recipientPhone
                                    tf_address.text = updateModel.province + updateModel.city
                                    tf_addressContent.text = updateModel.address
                                    btn_isDefault.isSelected = updateModel.isDefault == 1
                                    viewModel.userName.accept(updateModel.recipient)
                                    viewModel.phone.accept(updateModel.recipientPhone)
                                    viewModel.detailAddress.accept(updateModel.address)
                                    viewModel.provinceModel.accept(AddressTreeModel(id: 0, name: updateModel.province, code: updateModel.provinceCode, parentId: 0, children: nil))
                                    viewModel.cityModel.accept(AddressTreeModel(id: 0, name: updateModel.city, code: updateModel.cityCode, parentId: 0, children: nil))
                        }
    }
            init(_ updateModel:AddressModel? = nil) {
                        super.init(nibName: nil, bundle: nil)
                        self.updateModel = updateModel
            }
            required init?(coder: NSCoder) {
                        fatalError("init(coder:) has not been implemented")
            }
            override func setUI() {
                        super.setUI()
                        view_container.jq_addShadows(shadowColor: UIColor(hexStr: "#D9D9D9").withAlphaComponent(0.28), corner: 8, radius: 20, offset: CGSize(width: 0, height: 2), opacity: 1)
                        tf_address.delegate = self
            }
            override func setRx() {
                        tf_name.rx.text.bind(to: viewModel.userName).disposed(by: disposeBag)
                        tf_phone.rx.text.bind(to: viewModel.phone).disposed(by: disposeBag)
                        tf_addressContent.rx.text.bind(to: viewModel.detailAddress).disposed(by: disposeBag)
            }
            @IBAction func chooseDefaultAction(_ sender: UIButton) {
                        sender.isSelected = !sender.isSelected
            }
            @IBAction func saveAction(_ sender: UIButton) {
                        guard !(viewModel.userName.value?.isEmpty ?? true) else {
                                    alert(msg: "请输入收件人姓名");return
                        }
                        guard !(viewModel.phone.value?.isEmpty ?? true) else {
                                    alert(msg: "请输入收件人电话");return
                        }
                        guard viewModel.phone.value!.jq_isPhone else {
                                    alert(msg: "请输入正确的手机号码");return
                        }
                        guard viewModel.cityModel.value != nil else {
                                    alert(msg: "请选择所在城市");return
                        }
                        guard !(viewModel.detailAddress.value?.isEmpty ?? true) else {
                                    alert(msg: "请输入详细地址");return
                        }
                        Services.addressSaveOrUpdate(id: updateModel?.id, province: viewModel.provinceModel.value, city: viewModel.cityModel.value, country: nil, userName: viewModel.userName.value, userPhone: viewModel.phone.value, isDefault: btn_isDefault.isSelected, detailAddress: viewModel.detailAddress.value ?? "").subscribe(onNext: {_ in
                                    if self.updateModel != nil{
                                                alertSuccess(msg: "编辑成功")
                                    }else{
                                                alertSuccess(msg: "添加成功")
                                    }
                                    self.navigationController?.popViewController()
                                    NotificationCenter.default.post(name: AddressManage_Refresh_Noti, object: nil)
                        }).disposed(by: disposeBag)
            }
}
extension AddressManageHandleVC:QMUITextFieldDelegate{
            func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
                        CityAddressPickerView.show(title: "选择省市区") {[weak self] province, city, country in
                                    self?.viewModel.provinceModel.accept(province)
                                    self?.viewModel.cityModel.accept(city)
                                    self?.viewModel.countryModel.accept(country)
                                    textField.text = "\(province?.name ?? "") \(city?.name ?? "") \(country?.name ?? "")"
                        }
                        return false
            }
}