add
无故事王国
2024-06-03 3d8ce4866799bea7e66699acdeb86b60b0ba033c
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
//
//  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
                }
}