宽窄优行-由【嘉易行】项目成品而来
younger_times
2023-04-11 4356615a9252a987a62469331b1fcf91c102e24c
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
//
//  BindPhoneVC.swift
//  OKProject
//
//  Created by alvin_y on 2020/5/27.
//  Copyright © 2020 yangwang. All rights reserved.
//
 
import UIKit
 
/// 绑定手机号
class BindPhoneVC: YYViewController {
    
    /// 获取验证码
    @IBOutlet weak var button_getCode: YYButton!
    
    /// 确定
    @IBOutlet weak var button_submit: YYButton!
    
    /// 验证码
    @IBOutlet weak var textField_code: YYTextField!
    
    /// 手机号
    @IBOutlet weak var textField_phone: YYTextField!
    
    /// viewModel
    let viewModel = BindPhoneViewModel()
    let userInfoViewModel = MineInfoViewModel()
    
    /// 验证按钮倒计时
    var codeTimeTick: CodeTimeTick = CodeTimeTick()
    
    override func viewDidLoad() {
        super.viewDidLoad()
 
        // Do any additional setup after loading the view.
        yy_popBlock = {
            for item in (self.navigationController?.viewControllers)! {
                if item.isKind(of: LoginVC.classForCoder()){
                    let owr = item
                    self.navigationController?.popToViewController(owr, animated: true)
                    return
                }
            }
            self.dismiss(animated: true, completion: nil)
        }
    }
 
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        yy_isHiddenNavBarLine = true
    }
    
    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(animated)
        codeTimeTick.close()
    }
 
    //MARK: - UI
    override func setupViews() {
        super.setupViews()
        navigationItem.title = "完善手机号"
//        navigationItem.rightBarButtonItem = UIBarButtonItem.yy_creat(title: "跳过", UIFont.systemFont(ofSize: 14), UIColor.color(hexString: "#666666"), target: self, action: #selector(skip)).item
        codeTimeTick.config(button: button_getCode, grayColor: UIColor.color(light: UIColor.color(hexString: "#333333",0.39), dark: UIColor.color(hexString: "#333333",0.39)))
    }
    
    //MARK: - Rx
    override func bindRx() {
        super.bindRx()
        
        /// 获取验证码
        button_getCode.rx.tap.subscribe(onNext: {[unowned self] (_) in
            self.viewModel.sendSMSCode(type: 3)
        }).disposed(by: disposeBag)
        
        
        /// 发送验证码处理
        viewModel.sendSMSCodeSubject
            .subscribe(onNext: {[unowned self] (status) in
                switch status{
                case .loading:
                    self.show()
                    break
                case .success(_ ):
                    self.hide()
                    // 倒计时
                    self.codeTimeTick.start()
                    break
                case .error(let error):
                    self.hide()
                    alert(text: error.localizedDescription)
                    break
                }
        }).disposed(by: disposeBag)
        
        textField_phone.rx.text.orEmpty
            .bind(to: viewModel.phoneNumber)
            .disposed(by: disposeBag)
        
        textField_code.rx.text.orEmpty
            .bind(to: viewModel.code)
            .disposed(by: disposeBag)
        
        viewModel.requestSubject
            .subscribe(onNext: {[unowned self] (status) in
                switch status{
                case .loading:
                    self.show()
                    break
                case .success(let data):
                    self.hide()
                        if let model = data as? LoginModel{
                            alert(text: "绑定成功")
                            app.userInfo.phone = self.viewModel.phoneNumber.value
                            app.userInfo.save()
 
                            if !model.token.isEmpty{
                                app.loginInfo.save(model: model)
                            }
 
                            self.userInfoViewModel.queryUserInfo()
                            self.dismiss(animated: true, completion: nil)
                        }
                    break
                case .error(let error):
                    self.hide()
                    alert(text: error.localizedDescription)
                    break
                }
        }).disposed(by: disposeBag)
        
        button_submit.rx.tap.subscribe(onNext: {[unowned self] (_) in
            self.viewModel.bindPhone()
        }).disposed(by: disposeBag)
        
    }
    
    /// 跳过
    @objc func skip(){
        self.dismiss(animated: true, completion: nil)
    }
 
}