宽窄优行-由【嘉易行】项目成品而来
younger_times
2023-04-06 a1ae6802080a22e6e6ce6d0935e95facb1daca5c
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
149
150
//
//  ForgotPasswordVC.swift
//  OKProject
//
//  Created by alvin_y on 2020/5/27.
//  Copyright © 2020 yangwang. All rights reserved.
//
 
import UIKit
 
/// 忘记密码
class ForgotPasswordVC: YYViewController {
    
    /// 提交按钮
    @IBOutlet weak var button_submit: YYButton!
    
    /// 手机号
    @IBOutlet weak var textField_phone: YYTextField!
    
    /// 密码
    @IBOutlet weak var textField_password: YYTextField!
    
    /// 验证码
    @IBOutlet weak var textField_code: YYTextField!
    
    /// viewModel
    let viewModel = ForgotPasswordViewModel()
    
    /// 获取验证码
    @IBOutlet weak var button_getCode: YYButton!
    
    /// 验证按钮倒计时
    var codeTimeTick: CodeTimeTick = CodeTimeTick()
    
    override func viewDidLoad() {
        super.viewDidLoad()
 
        // Do any additional setup after loading the view.
    }
 
    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 = "忘记密码"
        textField_phone.keyboardType = .numberPad
        textField_code.keyboardType = .numberPad
        textField_password.delegate = self
        textField_password.isSecureTextEntry = true
        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: 4)
        }).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)
        
        textField_password.rx.text.orEmpty
        .bind(to: viewModel.password)
        .disposed(by: disposeBag)
        
        viewModel.requestSubject
            .subscribe(onNext: {[unowned self] (status) in
                switch status{
                case .loading:
                    self.show()
                    break
                case .success(_ ):
                    self.hide()
                    alert(text: "找回成功")
                    self.yy_pop()
                    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.forgotPassword()
        }).disposed(by: disposeBag)
        
        
//        viewModel.checkCaptchaSubject
//        .subscribe(onNext: {[unowned self] (status) in
//                switch status{
//                case .loading:
//                    self.show()
//                    break
//                case .success(_ ):
//                    self.hide()
//                    self.viewModel.forgotPassword()
//                    break
//                case .error(let error):
//                    self.hide()
//                    alert(text: error.localizedDescription)
//                    break
//                }
//        }).disposed(by: disposeBag)
    }
}
 
// MARK: - UITextFieldDelegate
extension ForgotPasswordVC: UITextFieldDelegate
{
    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        return isInputRuleAndNumber(str: string)
    }
}