电子屏项目
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 
 

247 řádky
8.6 KiB

  1. package com.yzx.escreen.activity
  2. import android.app.Activity
  3. import android.view.View
  4. import com.blankj.utilcode.util.KeyboardUtils
  5. import com.blankj.utilcode.util.LogUtils
  6. import com.blankj.utilcode.util.SPUtils
  7. import com.flyco.tablayout.listener.CustomTabEntity
  8. import com.flyco.tablayout.listener.OnTabSelectListener
  9. import com.qmuiteam.qmui.widget.dialog.QMUIDialog
  10. import com.qmuiteam.qmui.widget.dialog.QMUITipDialog
  11. import com.qmuiteam.qmui.widget.dialog.QMUITipDialog.Builder.ICON_TYPE_FAIL
  12. import com.yzx.escreen.MainActivity
  13. import com.yzx.escreen.R
  14. import com.yzx.escreen.activity.base.BaseActivity
  15. import com.yzx.escreen.model.BaseUser
  16. import com.yzx.escreen.model.TabEntity
  17. import com.yzx.escreen.model.User
  18. import com.yzx.escreen.presenter.LoginPresenter
  19. import com.yzx.escreen.presenter.LoginView
  20. import com.yzx.escreen.utils.hideNavigationBar
  21. import com.yzx.escreen.utils.setSrc
  22. import kotlinx.android.synthetic.main.activity_login.accountEdit
  23. import kotlinx.android.synthetic.main.activity_login.accountLayout
  24. import kotlinx.android.synthetic.main.activity_login.loginBtn
  25. import kotlinx.android.synthetic.main.activity_login.pswCheckbox
  26. import kotlinx.android.synthetic.main.activity_login.pswEdit
  27. import kotlinx.android.synthetic.main.activity_login.qrCodeImg
  28. import kotlinx.android.synthetic.main.activity_login.qrLayout
  29. import kotlinx.android.synthetic.main.activity_login.tabLayout
  30. import org.jetbrains.anko.startActivity
  31. class LoginActivity : BaseActivity<LoginPresenter>(), LoginView {
  32. companion object {
  33. fun active(act: Activity) {
  34. act.startActivity<LoginActivity>()
  35. }
  36. }
  37. private var mTicket = ""
  38. override val inflateId: Int
  39. get() = R.layout.activity_login
  40. override fun initView() {
  41. val tabData = arrayListOf<CustomTabEntity>()
  42. tabData.add(TabEntity("账号密码登录", 0, 0))
  43. tabData.add(TabEntity("微信扫码登录", 0, 0))
  44. tabLayout.setTabData(tabData)
  45. tabLayout.setOnTabSelectListener(object : OnTabSelectListener {
  46. override fun onTabSelect(position: Int) {
  47. if (position == 0) {
  48. qrLayout.visibility = View.GONE
  49. accountLayout.visibility = View.VISIBLE
  50. SPUtils.getInstance().put("last_login_tab_index",0)
  51. } else {
  52. qrLayout.visibility = View.VISIBLE
  53. accountLayout.visibility = View.GONE
  54. SPUtils.getInstance().put("last_login_tab_index",1)
  55. KeyboardUtils.hideSoftInput(this@LoginActivity)
  56. }
  57. }
  58. override fun onTabReselect(position: Int) {
  59. }
  60. })
  61. val lastLoginTabIndex = SPUtils.getInstance().getInt("last_login_tab_index",0)
  62. if(lastLoginTabIndex == 1){
  63. qrLayout.visibility = View.VISIBLE
  64. accountLayout.visibility = View.GONE
  65. tabLayout.currentTab = 1
  66. }
  67. loginBtn.setOnClickListener {
  68. this.doLogin()
  69. }
  70. val isSavePsw = SPUtils.getInstance().getBoolean("is_save_psw", false)
  71. if (isSavePsw) {
  72. pswCheckbox.isChecked = true
  73. val phone = SPUtils.getInstance().getString("login_save_phone", "")
  74. val psw = SPUtils.getInstance().getString("login_save_psw", "")
  75. accountEdit.setText(phone)
  76. pswEdit.setText(psw)
  77. } else {
  78. pswCheckbox.isChecked = false
  79. }
  80. }
  81. private fun doLogin() {
  82. val phone = accountEdit.text.toString()
  83. val psw = pswEdit.text.toString()
  84. if (phone.isBlank()) {
  85. showDialogToast("请输入账号", icon = QMUITipDialog.Builder.ICON_TYPE_FAIL)
  86. return
  87. }
  88. if (psw.isBlank()) {
  89. showDialogToast("请输入密码", icon = QMUITipDialog.Builder.ICON_TYPE_FAIL)
  90. return
  91. }
  92. showLoading("登录中...")
  93. if(pswCheckbox.isChecked){
  94. SPUtils.getInstance().put("is_save_psw",true)
  95. SPUtils.getInstance().put("login_save_phone",phone)
  96. SPUtils.getInstance().put("login_save_psw",psw)
  97. }else{
  98. SPUtils.getInstance().put("is_save_psw",false)
  99. SPUtils.getInstance().remove("login_save_phone")
  100. SPUtils.getInstance().remove("login_save_psw")
  101. }
  102. mPresenter?.login(phone, psw)
  103. }
  104. override fun initData() {
  105. mPresenter?.getWXQrCode()
  106. }
  107. override fun initPresenter(): LoginPresenter = LoginPresenter(this)
  108. override fun onLoginSuccess(user: BaseUser, list: MutableList<BaseUser>) {
  109. val teaList = list.filter {
  110. return@filter it.type == 0
  111. }
  112. when {
  113. teaList.isEmpty() -> {
  114. if(user.type == 0){
  115. mPresenter?.switchUser(user.token, user.user_id, user.school_id)
  116. }else{
  117. hideLoading()
  118. this.showDialogToast("无登录权限", icon = ICON_TYPE_FAIL)
  119. }
  120. }
  121. teaList.size == 1 -> { //多个角色
  122. val item = teaList[0]
  123. mPresenter?.switchUser(user.token, item.user_id, item.unit_id)
  124. }
  125. else -> {
  126. mPresenter?.getUserRoleList(user.token)
  127. }
  128. }
  129. }
  130. override fun onLoginError(msg: String) {
  131. hideLoading()
  132. showDialogToast(msg, icon = ICON_TYPE_FAIL)
  133. }
  134. override fun onUserInfoSuccess(user: User) {
  135. hideLoading()
  136. startActivity<MainActivity>()
  137. finish()
  138. }
  139. override fun onWxQrCodeSuccess(imgUrl: String, ticket: String) {
  140. qrCodeImg.setSrc(imgUrl)
  141. mTicket = ticket
  142. mPresenter?.loginQuery(ticket)
  143. }
  144. override fun onDestroy() {
  145. qrCodeImg?.apply {
  146. removeCallbacks(null)
  147. }
  148. super.onDestroy()
  149. }
  150. private var mBindDialog: QMUIDialog? = null
  151. private var mOverTimeDialog: QMUIDialog? = null
  152. override fun onLoginQuerySuccess(user: BaseUser, code: Int) {
  153. when (code) {
  154. 0 -> {
  155. if (user.direct_login == 1) {
  156. mPresenter?.getUserLoginInfo(user.token)
  157. } else {
  158. mPresenter?.getUserRoleInfoByPhone(user.phone, user.tmp_token)
  159. }
  160. }
  161. 451 -> {
  162. if (mBindDialog == null) {
  163. mBindDialog = QMUIDialog.MessageDialogBuilder(this)
  164. .setTitle("温馨提示")
  165. .setMessage("您还未绑定微信公众,请绑定后再试!")
  166. .addAction("知道了") { dialog, index ->
  167. dialog.dismiss()
  168. }
  169. .create()
  170. mBindDialog?.show()
  171. mBindDialog?.hideNavigationBar()
  172. } else if (!mBindDialog!!.isShowing) {
  173. mBindDialog?.show()
  174. }
  175. qrCodeImg.postDelayed({
  176. mPresenter?.loginQuery(mTicket)
  177. }, 1000)
  178. }
  179. 452 -> {
  180. qrCodeImg.postDelayed({
  181. mPresenter?.loginQuery(mTicket)
  182. }, 1000)
  183. }
  184. else -> {
  185. if (mOverTimeDialog == null) {
  186. mOverTimeDialog = QMUIDialog.MessageDialogBuilder(this)
  187. .setTitle("温馨提示")
  188. .setMessage("二维码已使用,请重新扫码!")
  189. .addAction("知道了") { dialog, index ->
  190. dialog.dismiss()
  191. }
  192. .create()
  193. mOverTimeDialog!!.show()
  194. mOverTimeDialog!!.hideNavigationBar()
  195. } else if (!mOverTimeDialog!!.isShowing) {
  196. mOverTimeDialog?.show()
  197. }
  198. mPresenter?.getWXQrCode()
  199. }
  200. }
  201. }
  202. override fun onUserListSuccess(list: MutableList<BaseUser>, token: String) {
  203. LogUtils.d("onUserListSuccess", list)
  204. hideLoading()
  205. val builder = QMUIDialog.MenuDialogBuilder(this)
  206. list.forEach {
  207. builder.addItem(
  208. it.unit_name
  209. ) { dialog, which ->
  210. LogUtils.d("itemClick", which)
  211. val item = list[which]
  212. showLoading("登录中...")
  213. if(item.school_id>0){
  214. mPresenter?.switchUnit(item.user_id, item.unit_id,token)
  215. }else{
  216. mPresenter?.switchUser(token, item.user_id, item.unit_id)
  217. }
  218. }
  219. }
  220. builder.show()
  221. }
  222. }