宽窄优行-由【嘉易行】项目成品而来
younger_times
2023-07-05 0d8f5fc8a516bfd07e425909e4a4432600572ee7
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
146
147
148
//
//  MineContactVC.swift
//  OKProject
//
//  Created by alvin_y on 2020/6/15.
//  Copyright © 2020 yangwang. All rights reserved.
//
 
import UIKit
import RxCocoa
import RxSwift
 
 
/// 紧急联系人状态
enum MineContactState {
    // 编辑
    case edit
    // 添加
    case add
}
 
class MineContactVC: YYViewController {
    
    let viewModel = MineContactViewModel()
 
    /// 编辑View
    @IBOutlet weak var view_edit: UIView!
    
    /// 添加View
    @IBOutlet weak var view_add: UIView!
    
    /// 添加按钮
    @IBOutlet weak var button_add: YYButton!
    
    /// 编辑按钮
    @IBOutlet weak var button_edit: UIButton!
    
    /// 名字
    @IBOutlet weak var label_name: UILabel!
    
    /// 手机号
    @IBOutlet weak var textField_phone: YYTextField!
    
    /// 姓名
    @IBOutlet weak var textField_name: YYTextField!
    
    init(state: MineContactState) {
        super.init(nibName: String.init(describing: MineContactVC.self), bundle: Bundle.main)
        viewModel.state.accept(state)
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
 
        // Do any additional setup after loading the view.
    }
    
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        self.label_name.text = "\(app.userInfo.emergencyContact)   \(app.userInfo.emergencyContactNumber)"
        self.textField_name.text = app.userInfo.emergencyContact
        self.textField_phone.text = app.userInfo.emergencyContactNumber
        viewModel.name.accept(app.userInfo.emergencyContact)
        viewModel.phone.accept(app.userInfo.emergencyContactNumber)
    }
    
    //MARK: - UI
    override func setupViews() {
        super.setupViews()
        navigationItem.title = "紧急联系人"
        textField_phone.keyboardType = .numberPad
    }
    
    
    //MARK: - Rx
    override func bindRx() {
        super.bindRx()
        
        textField_name.rx.text.orEmpty.bind(to: viewModel.name).disposed(by: disposeBag)
        textField_phone.rx.text.orEmpty.bind(to: viewModel.phone).disposed(by: disposeBag)
 
        
        button_edit.rx.tap.subscribe(onNext: {[unowned self] (_) in
            self.viewModel.state.accept(.add)
            self.textField_name.text = app.userInfo.emergencyContact
            self.textField_phone.text = app.userInfo.emergencyContactNumber
        }).disposed(by: disposeBag)
        
        button_add.rx.tap.subscribe(onNext: {[unowned self] (_) in
            if self.textField_name.isEmpty(empty: "请填写姓名"){
                return
            }
            if self.textField_phone.isEmpty(empty: "请填写联系电话"){
                return
            }
            if self.textField_phone.text != ""{
                if !(self.textField_phone.text?.isPhoneNum())!{
                    alert(text: "请输入正确的联系电话")
                    return
                }
            }
            if self.textField_phone.text == app.userInfo.phone{
                alert(text: "请勿设置本人手机号为紧急联系人")
                return
            }
            self.viewModel.setUrgentUser()
        }).disposed(by: disposeBag)
        
        
        viewModel.state
            .observeOn(MainScheduler.instance)
            .subscribe(onNext: {[unowned self] (s) in
                self.view_add.isHidden = s == .edit
                self.view_edit.isHidden = s == .add
                self.button_add.isHidden = s == .edit
        }).disposed(by: disposeBag)
        
        
        /// 设置紧急联系人
        viewModel.requestSubject
        .subscribe(onNext: {[unowned self] (status) in
            switch status{
            case .loading:
                self.show()
                break
            case .success(_):
                self.hide()
                app.userInfo.emergencyContact = self.textField_name.text ?? ""
                app.userInfo.emergencyContactNumber = self.textField_phone.text ?? ""
                self.label_name.text = app.userInfo.emergencyContact
                app.userInfo.save()
                alert(text: "设置成功")
                self.viewModel.state.accept(.edit)
                self.yy_pop()
                break
            case .error(let error):
                self.hide()
                alert(text: error.localizedDescription)
                break
            }
        }).disposed(by: rx.disposeBag)
    }
    
}