//
|
// RegisterVC.swift
|
// XQMuse
|
//
|
// Created by 无故事王国 on 2024/8/13.
|
//
|
|
import UIKit
|
import JQTools
|
import QMUIKit
|
import RxRelay
|
import RxSwift
|
import RxCocoa
|
|
class RegisterViewModel{
|
var phone = BehaviorRelay<String>(value: "")
|
var code = BehaviorRelay<String>(value: "")
|
var pwd = BehaviorRelay<String>(value: "")
|
var pwdAgain = BehaviorRelay<String>(value: "")
|
var isRead = BehaviorRelay<Bool>(value: false)
|
|
func checkSafe()->Bool{
|
if phone.value.isEmpty{
|
alertError(msg: "请输入您的手机号");return false
|
}
|
|
if !phone.value.jq_isPhone{
|
alertError(msg: "请输入正确手机号");return false
|
}
|
|
if code.value.isEmpty{
|
alertError(msg: "请输入验证码");return false
|
}
|
|
if pwd.value.isEmpty{
|
alertError(msg: "请输入密码");return false
|
}
|
|
if pwdAgain.value.isEmpty{
|
alertError(msg: "请输入确认密码");return false
|
}
|
|
if pwd.value != pwdAgain.value{
|
alertError(msg: "两次密码不一致");return false
|
}
|
|
|
return true
|
}
|
}
|
|
class RegisterVC: BaseVC {
|
|
@IBOutlet weak var tf_phone: QMUITextField!
|
@IBOutlet weak var tf_code: QMUITextField!
|
@IBOutlet weak var tf_pwd: QMUITextField!
|
@IBOutlet weak var tf_pwdAgain: QMUITextField!
|
@IBOutlet weak var btn_register: UIButton!
|
@IBOutlet weak var btn_isRead: UIButton!
|
|
private var viewModel = RegisterViewModel()
|
|
let shadowView = UIView()
|
|
override func viewDidLoad() {
|
super.viewDidLoad()
|
title = "注册账户"
|
}
|
|
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)
|
}
|
}
|
|
override func setRx() {
|
tf_phone.rx.text.orEmpty.bind(to: viewModel.phone).disposed(by: disposeBag)
|
tf_code.rx.text.orEmpty.bind(to: viewModel.code).disposed(by: disposeBag)
|
tf_pwd.rx.text.orEmpty.bind(to: viewModel.pwd).disposed(by: disposeBag)
|
tf_pwdAgain.rx.text.orEmpty.bind(to: viewModel.pwdAgain).disposed(by: disposeBag)
|
}
|
|
@IBAction func getCodeAction(_ sender: UIButton) {
|
|
guard !viewModel.phone.value.isEmpty else {alertError(msg: "请输入手机号");return}
|
guard viewModel.phone.value.jq_isPhone else {alertError(msg: "请输入正确手机号");return}
|
|
Services.sendCode(type: .register).subscribe(onNext: {data in
|
if let _ = data.data{
|
sender.jq_openCountDown(60, defultTitle: "发送验证码") {
|
sender.titleLabel?.font = UIFont.systemFont(ofSize: 12)
|
sender.setTitleColor(.black.withAlphaComponent(0.3), for: .normal)
|
} completeClouse: {
|
sender.titleLabel?.font = UIFont.systemFont(ofSize: 14, weight: .medium)
|
sender.setTitleColor(UIColor(hexStr: "#96AD81"), for: .normal)
|
}
|
}
|
}).disposed(by: disposeBag)
|
}
|
|
@IBAction func registerAction(_ sender: UIButton) {
|
|
view.endEditing(true)
|
guard viewModel.checkSafe() else {return}
|
guard btn_isRead.isSelected else {
|
alertError(msg: "请阅读并同意《用户注册协议》和《用户隐私协议》");return
|
}
|
|
Services.register(cellPhone: viewModel.phone.value, captcha: viewModel.code.value, password: viewModel.pwd.value).subscribe(onNext: {data in
|
if let model = data.data{
|
UserViewModel.saveUserInfo(model)
|
sceneDelegate?.loginSuccess()
|
}
|
}).disposed(by: disposeBag)
|
}
|
|
@IBAction func isReadAction(_ sender: UIButton) {
|
sender.isSelected = !sender.isSelected
|
}
|
|
|
@IBAction func userResigerAgreementAction(_ sender: Any) {
|
let vc = WebVC(type: .user)
|
vc.title = "用户注册协议"
|
push(vc: vc)
|
}
|
|
|
@IBAction func userPrivateAgreementAction(_ sender: Any) {
|
let vc = WebVC(type: .privacy)
|
vc.title = "用户隐私协议"
|
push(vc: vc)
|
}
|
|
|
override func viewDidLayoutSubviews() {
|
super.viewDidLayoutSubviews()
|
|
btn_register.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])
|
|
}
|
}
|