OOBindRegisterController.swift 6.4 KB

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