//
|
// ForgotPasswordInputCodeVC.swift
|
// XQMuse
|
//
|
// Created by 无故事王国 on 2024/8/13.
|
//
|
|
import UIKit
|
import JQTools
|
import QMUIKit
|
import RxSwift
|
|
class ForgotPasswordInputCodeVC: BaseVC {
|
|
@IBOutlet weak var c1: CustomerTextField!
|
@IBOutlet weak var c2: CustomerTextField!
|
@IBOutlet weak var c3: CustomerTextField!
|
@IBOutlet weak var c4: CustomerTextField!
|
@IBOutlet weak var c5: CustomerTextField!
|
@IBOutlet weak var c6: CustomerTextField!
|
|
@IBOutlet weak var label_hint: UILabel!
|
@IBOutlet weak var btn_chek: UIButton!
|
@IBOutlet weak var btn_retry: UIButton!
|
@IBOutlet weak var label_retryCode: UILabel!
|
private var timer:Timer?
|
private var times = 60
|
private let shadowView = UIView()
|
private var phone:String!
|
private var inputCode:String = ""
|
|
|
init(phone:String) {
|
super.init(nibName: nil, bundle: nil)
|
self.phone = phone
|
}
|
|
required init?(coder: NSCoder) {
|
fatalError("init(coder:) has not been implemented")
|
}
|
|
override func viewDidAppear(_ animated: Bool) {
|
super.viewDidAppear(animated)
|
c1.becomeFirstResponder()
|
c1.jq_borderWidth = 1
|
// sendCode()
|
}
|
|
override func viewDidLoad() {
|
super.viewDidLoad()
|
title = "修改密码"
|
|
c1.delegate = self
|
c2.delegate = self
|
c3.delegate = self
|
c4.delegate = self
|
c5.delegate = self
|
c6.delegate = self
|
|
starTimer()
|
}
|
|
override func setUI() {
|
view.addSubview(shadowView)
|
shadowView.backgroundColor = .white
|
shadowView.snp.makeConstraints { make in
|
make.top.equalTo(self.view.safeAreaLayoutGuide.snp.top).offset(0)
|
make.left.right.equalToSuperview()
|
make.height.equalTo(30)
|
}
|
label_hint.text = "验证码已发送至:" + phone.jq_insertBlank()
|
}
|
|
override func setRx() {
|
c2.deletebackwordClouse {[unowned self] in
|
self.c1.becomeFirstResponder()
|
self.checkCode()
|
}
|
c3.deletebackwordClouse {[unowned self] in
|
self.c2.becomeFirstResponder()
|
self.checkCode()
|
}
|
c4.deletebackwordClouse {[unowned self] in
|
self.c3.becomeFirstResponder()
|
self.checkCode()
|
}
|
c5.deletebackwordClouse {[unowned self] in
|
self.c4.becomeFirstResponder()
|
self.checkCode()
|
}
|
c6.deletebackwordClouse {[unowned self] in
|
self.c5.becomeFirstResponder()
|
self.checkCode()
|
}
|
}
|
|
|
private func sendCode(){
|
Services.sendCode(phone:phone,type: .forgetPwd).subscribe(onNext: { _ in
|
self.starTimer()
|
}).disposed(by: disposeBag)
|
}
|
|
private func starTimer(){
|
times = 60
|
btn_retry.isEnabled = false
|
btn_retry.alpha = 0.5
|
timer = Timer(timeInterval: 1.0, repeats: true) {[weak self] t in
|
self?.times -= 1
|
|
self?.label_retryCode.attributedText = AttributedStringbuilder.build()
|
.add(string: "\(self?.times ?? 0)s", withFont: .systemFont(ofSize: 12, weight: .medium), withColor: UIColor(hexStr: "#98B083"))
|
.add(string: "后可重新获取验证码", withFont: .systemFont(ofSize: 12, weight: .medium), withColor: UIColor(hexStr: "#B7B7B7")).mutableAttributedString
|
|
// self?.label_retryCode.text = "\(self?.times ?? 0)s后可重新获取验证码"
|
if self?.times == 0{
|
self?.label_retryCode.text = ""
|
self?.btn_retry.isEnabled = true
|
self?.btn_retry.alpha = 1.0
|
t.invalidate()
|
}
|
}
|
timer?.fire()
|
RunLoop.current.add(timer!, forMode: .common)
|
}
|
|
private func checkCode(){
|
inputCode = c1.text! + c2.text! + c3.text! + c4.text! + c5.text! + c6.text!
|
}
|
|
@IBAction func checkingAction(_ sender: UIButton) {
|
view.endEditing(true)
|
if inputCode.count != 6{
|
alertError(msg: "请输入验证码");return
|
}
|
|
Services.forgotPwdVerifyCode(cellPhone: phone, captcha: inputCode).subscribe(onNext: {data in
|
if data.data?.successFlag ?? false{
|
Popup_1_View.show(state: .success, title: "验证成功", subtitle:"手机号验证成功") {
|
let vc = ForgotPasswordChangeVC(phone:self.phone,secretCode: data.data?.secret ?? "")
|
self.push(vc: vc)
|
}
|
}else{
|
Popup_1_View.show(state: .fail, title: "验证失败", subtitle:"验证码错误") {
|
|
}
|
}
|
}).disposed(by: disposeBag)
|
|
}
|
|
@IBAction func tryAgainAction(_ sender: UIButton) {
|
view.endEditing(true)
|
sendCode()
|
}
|
|
|
override func viewDidLayoutSubviews() {
|
super.viewDidLayoutSubviews()
|
|
btn_chek.jq_gradientNibColor(colorArr: [UIColor(hexStr: "#8EA47A").cgColor,UIColor(hexStr: "#AFCA98").cgColor], cornerRadius: 20)
|
|
shadowView.jq_gradientColor(colorArr: [UIColor(hexStr: "#F5F5F5").withAlphaComponent(0.15).cgColor,UIColor.white.cgColor], cornerRadius: 0, startPoint: CGPoint(x: 0, y: 0), endPoint: CGPoint(x: 0, y: 1), bounds: CGRect(x: 0, y: 0, width: JQ_ScreenW, height: 30),locations: [0.1,0.9])
|
|
}
|
}
|
|
extension ForgotPasswordInputCodeVC:QMUITextFieldDelegate{
|
func textFieldDidBeginEditing(_ textField: UITextField) {
|
textField.text = ""
|
textField.layer.borderWidth = 1
|
textField.tintColor = UIColor(hexStr: "#ADC896")
|
}
|
func textFieldDidEndEditing(_ textField: UITextField) {
|
textField.layer.borderWidth = 0
|
|
inputCode = c1.text! + c2.text! + c3.text! + c4.text! + c5.text! + c6.text!
|
}
|
|
|
func textField(_ textField: UITextField!, shouldChangeCharactersIn range: NSRange, replacementString string: String!, originalValue: Bool) -> Bool {
|
|
if !string.isEmpty{
|
textField.text = string
|
if textField == c1{c2.becomeFirstResponder()}
|
if textField == c2{c3.becomeFirstResponder()}
|
if textField == c3{c4.becomeFirstResponder()}
|
if textField == c4{c5.becomeFirstResponder()}
|
if textField == c5{c6.becomeFirstResponder()}
|
if textField == c6{textField.resignFirstResponder()}
|
}else{
|
textField.text = ""
|
}
|
checkCode()
|
return true
|
}
|
}
|
|
|
class CustomerTextField:QMUITextField{
|
|
private var clouse:(()->Void)?
|
|
override func deleteBackward() {
|
clouse?()
|
}
|
|
func deletebackwordClouse(_ clouse:@escaping ()->Void){
|
self.clouse = clouse
|
}
|
}
|