OOBindRegisterController.swift 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. //
  2. // OOBindRegisterController.swift
  3. // O2Platform
  4. //
  5. // Created by 刘振兴 on 2018/4/5.
  6. // Copyright © 2018年 zoneland. All rights reserved.
  7. //
  8. import UIKit
  9. import ReactiveSwift
  10. import ReactiveCocoa
  11. import Promises
  12. import O2OA_Auth_SDK
  13. class OOBindRegisterController: OOBaseViewController {
  14. @IBOutlet weak var phoneNumberTextField: OOUITextField!
  15. @IBOutlet weak var codeTextField: OOUIDownButtonTextField!
  16. @IBOutlet weak var nextButton: OOBaseUIButton!
  17. private var viewModel:OOLoginViewModel = {
  18. return OOLoginViewModel()
  19. }()
  20. override func viewDidLoad() {
  21. super.viewDidLoad()
  22. ////
  23. let headerView = Bundle.main.loadNibNamed("OORegisterTableView", owner: self, options: nil)?.first as! OORegisterTableView
  24. headerView.configTitle(title: "手机验证", actionTitle: nil)
  25. headerView.frame = CGRect(x: 0, y: 0, width: kScreenW, height: 66)
  26. view.addSubview(headerView)
  27. setupUI()
  28. }
  29. private func setupUI() {
  30. phoneNumberTextField.rule = OOPhoneNumberRule()
  31. phoneNumberTextField.keyboardType = .phonePad
  32. codeTextField.keyboardType = .numberPad
  33. codeTextField.buttonDelegate = self
  34. self.nextButton.isEnabled = false
  35. self.nextButton.disableBackColor = UIColor.lightGray
  36. self.codeTextField.downButton?.isEnabled = false
  37. self.codeTextField.isEnabled = false
  38. self.codeTextField.reactive.isEnabled <~ viewModel.passwordIsValid
  39. self.codeTextField.downButton!.reactive.isEnabled <~ viewModel.passwordIsValid
  40. self.nextButton.reactive.isEnabled <~ viewModel.submitButtionIsValid
  41. self.nextButton.reactive.backgroundColor <~ viewModel.submitButtonCurrentColor
  42. viewModel.loginControlIsValid(self.phoneNumberTextField, self.codeTextField)
  43. }
  44. @IBAction func nextAction(_ sender: UIButton) {
  45. codeTextField.stopTimerButton()
  46. guard let mobile = phoneNumberTextField.text else {
  47. self.showError(title: "请输入手机号码!")
  48. return
  49. }
  50. guard let value = codeTextField.text else {
  51. self.showError(title: "请输入验证码!")
  52. return
  53. }
  54. MBProgressHUD_JChat.showMessage(message: "绑定中...", toView: self.view)
  55. O2AuthSDK.shared.bindMobileToSever(mobile: mobile, code: value) { (state, msg) in
  56. switch state {
  57. case .goToChooseBindServer(let unitList):
  58. //多于一个节点到节点列表
  59. self.performSegue(withIdentifier: "nextSelectNodeSegue", sender: unitList)
  60. break
  61. case .goToLogin:
  62. self.showError(title: "错误!\(msg ?? "")")
  63. break
  64. case .noUnitCanBindError:
  65. self.showError(title: "没有获取到服务器列表,请确认服务器是否已经注册!")
  66. break
  67. case .unknownError:
  68. self.showError(title: "错误!\(msg ?? "")")
  69. break
  70. case .success:
  71. //处理移动端应用
  72. self.viewModel._saveAppConfigToDb()
  73. //成功,跳转
  74. DispatchQueue.main.async {
  75. if self.presentedViewController == nil {
  76. self.dismissVC(completion:nil)
  77. }
  78. let destVC = OOTabBarController.genernateVC()
  79. destVC.selectedIndex = 2
  80. UIApplication.shared.keyWindow?.rootViewController = destVC
  81. UIApplication.shared.keyWindow?.makeKeyAndVisible()
  82. }
  83. break
  84. }
  85. MBProgressHUD_JChat.hide(forView: self.view, animated: true)
  86. }
  87. }
  88. override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
  89. if segue.identifier == "nextSelectNodeSegue" {
  90. let destVC = segue.destination as! OOBindNodeViewController
  91. destVC.nodes = sender as! [O2BindUnitModel]
  92. destVC.mobile = phoneNumberTextField.text
  93. destVC.value = codeTextField.text
  94. }
  95. }
  96. override func didReceiveMemoryWarning() {
  97. super.didReceiveMemoryWarning()
  98. // Dispose of any resources that can be recreated.
  99. }
  100. }
  101. extension OOBindRegisterController:OOUIDownButtonTextFieldDelegate {
  102. func viewButtonClicked(_ textField: OOUIDownButtonTextField, _ sender: OOTimerButton) {
  103. //发送验证码
  104. self.showMessage(title: "发送中...")
  105. guard let mobile = phoneNumberTextField.text else {
  106. self.showError(title: "请输入手机号码!")
  107. return
  108. }
  109. O2AuthSDK.shared.sendBindSMS(mobile: mobile) { (result, msg) in
  110. if !result {
  111. DispatchQueue.main.async {
  112. self.showError(title: "发送验证码出错:\(msg ?? "")")
  113. sender.stopTiming()
  114. }
  115. }
  116. self.dismissProgressHUD()
  117. }
  118. }
  119. }