//
|
// AddressManageHandleVC.swift
|
// DolphinEnglishLearnManager
|
//
|
// Created by 无故事王国 on 2024/5/20.
|
//
|
|
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
|
}
|
}
|