OOBindRegisterController.swift 5.5 KB

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