// // UpdatePasswordViewController.swift // JiaPeiManage // // Created by Ning.ge on 2023/6/15. // import UIKit import RxSwift import RxCocoa final class UpdatePasswordViewController: BaseViewController { // MARK: 服务属性 private let loginService: LoginServiceType = LoginService(networking: LoginNetworking()) // MARK: UI属性 @IBOutlet weak var old_password_textfield: QMUITextField! @IBOutlet weak var one_password_textfield: QMUITextField! @IBOutlet weak var two_password_textfield: QMUITextField! @IBOutlet weak var old_pwdshow_button: QMUIButton! @IBOutlet weak var one_pwdshow_button: QMUIButton! @IBOutlet weak var two_pwdshow_button: QMUIButton! @IBOutlet weak var confirm_button: UIButton! override func viewDidLoad() { super.viewDidLoad() setupUI() biandView() } // MARK: 私有方法 func setupUI(){ self.view.backgroundColor = .db_theme if isIphoneX {self.nav_top_layout.constant = 24.f} self.old_password_textfield.placeholderColor = .db_place self.one_password_textfield.placeholderColor = .db_place self.two_password_textfield.placeholderColor = .db_place } //绑定-rx func biandView(){ //显示密码 old_pwdshow_button.rx.tap.subscribe ({ [unowned self] (_) in self.old_pwdshow_button.isSelected = !self.old_pwdshow_button.isSelected; self.old_password_textfield.isSecureTextEntry = !self.old_pwdshow_button.isSelected }).disposed(by: disposeBag) one_pwdshow_button.rx.tap.subscribe ({ [unowned self] (_) in self.one_pwdshow_button.isSelected = !self.one_pwdshow_button.isSelected; self.one_password_textfield.isSecureTextEntry = !self.one_pwdshow_button.isSelected }).disposed(by: disposeBag) two_pwdshow_button.rx.tap.subscribe ({ [unowned self] (_) in self.two_pwdshow_button.isSelected = !self.two_pwdshow_button.isSelected; self.two_password_textfield.isSecureTextEntry = !self.two_pwdshow_button.isSelected }).disposed(by: disposeBag) //判断密码的输入是否可用 let old_passwordValid = old_password_textfield.rx.text.orEmpty.map{ value in return value.count >= 6 } let one_passwordValid = one_password_textfield.rx.text.orEmpty.map{ value in return value.count >= 6 } let two_passwordValid = two_password_textfield.rx.text.orEmpty.map{ value in return value.count >= 6 } //确定按钮的可用与否 let confirmObserver = Observable.combineLatest(old_passwordValid,one_passwordValid,two_passwordValid){(old,one,two) in old && one && two } //绑定按钮 confirmObserver.bind(to: confirm_button.rx.isEnabled).disposed(by: disposeBag) confirmObserver.subscribe(onNext: { [unowned self] valid in self.confirm_button.alpha = valid ? 1 : 0.5 }).disposed(by: disposeBag) confirm_button.rx.tap .asObservable() .withLatestFrom(confirmObserver) .do(onNext: { [unowned self]_ in self.confirm_button.isEnabled = false self.view.endEditing(true) }) .subscribe(onNext: {[unowned self]isLogin in self.confirm_button.isEnabled = true let user_name = LocalManager.userInfo.userAccount let old_pwd = old_password_textfield.text let one_pwd = one_password_textfield.text let two_pwd = two_password_textfield.text if old_pwd != LocalManager.userInfo.password { NYTips.showMsg(txt: "原密码不正确!") return } if one_pwd != two_pwd { NYTips.showMsg(txt: "两次密码不相同") return } NYTips.show() self.loginService.updateRequest(user_name: user_name!, user_password: old_pwd!, new_password: two_pwd!, city: LocalManager.userInfo.city!) .subscribe(onSuccess: { updateDataModel in NYTips.hide() if updateDataModel.data as! Int == 1{ LocalManager.userInfo.password = two_pwd LocalManager.userInfo.isLogin = true //设置已经登录 print("修改成功:%@", updateDataModel) self.navigationController?.popViewController(animated: true) }else { NYTips.showErr(txt: updateDataModel.msg!) } }, onError: { error in NYTips.hide() NYTips.showErr(txt: error.localizedDescription) print("%@",error) }) .disposed(by: disposeBag) }) .disposed(by: disposeBag) //添加手势 let tapBackground = UITapGestureRecognizer() tapBackground.rx.event .subscribe(onNext: { [weak self] _ in self?.view.endEditing(true) }) .disposed(by: disposeBag) view.addGestureRecognizer(tapBackground) } }