Pārlūkot izejas kodu

登录注册的一些页面与逻辑
个人首页的搭建

liukai 3 gadi atpakaļ
vecāks
revīzija
6fb1a88bf9
100 mainītis faili ar 4161 papildinājumiem un 235 dzēšanām
  1. 6 2
      app/src/main/AndroidManifest.xml
  2. 25 0
      app/src/main/java/com/hongyegroup/nucleicacidtest/router/AppComponentImpl.kt
  3. 37 7
      app/src/main/java/com/hongyegroup/nucleicacidtest/ui/SplashActivity.kt
  4. BIN
      app/src/main/res/drawable-xhdpi/splash_center_blue_logo.webp
  5. 11 0
      app/src/main/res/drawable/layer_start_window.xml
  6. 6 19
      app/src/main/res/layout/activity_splash.xml
  7. 15 0
      app/src/main/res/values/style.xml
  8. 40 1
      cpt_auths/src/main/AndroidManifest.xml
  9. 44 0
      cpt_auths/src/main/java/com/hongyegroup/cpt_auths/mvvm/vm/PensonalLoginViewModel.kt
  10. 44 0
      cpt_auths/src/main/java/com/hongyegroup/cpt_auths/mvvm/vm/PensonalSignUpInputViewModel.kt
  11. 5 0
      cpt_auths/src/main/java/com/hongyegroup/cpt_auths/router/AuthComponentImpl.kt
  12. 58 0
      cpt_auths/src/main/java/com/hongyegroup/cpt_auths/ui/BusinessForgotPsdEmailActivity.kt
  13. 297 0
      cpt_auths/src/main/java/com/hongyegroup/cpt_auths/ui/BusinessForgotPsdVerityActivity.kt
  14. 78 0
      cpt_auths/src/main/java/com/hongyegroup/cpt_auths/ui/BusinessLoginActivity.kt
  15. 27 16
      cpt_auths/src/main/java/com/hongyegroup/cpt_auths/ui/ChooseAuthActivity.kt
  16. 58 0
      cpt_auths/src/main/java/com/hongyegroup/cpt_auths/ui/PensonalForgotPsdMobileActivity.kt
  17. 328 0
      cpt_auths/src/main/java/com/hongyegroup/cpt_auths/ui/PensonalForgotPsdVerityActivity.kt
  18. 92 0
      cpt_auths/src/main/java/com/hongyegroup/cpt_auths/ui/PensonalLoginActivity.kt
  19. 77 0
      cpt_auths/src/main/java/com/hongyegroup/cpt_auths/ui/PensonalSignupInputActivity.kt
  20. 327 0
      cpt_auths/src/main/java/com/hongyegroup/cpt_auths/ui/PensonalSignupVerifyActivity.kt
  21. 93 0
      cpt_auths/src/main/java/com/hongyegroup/cpt_auths/ui/ResetPasswordActivity.kt
  22. 63 0
      cpt_auths/src/main/java/com/hongyegroup/cpt_auths/widget/CountyCodePopup.kt
  23. BIN
      cpt_auths/src/main/res/drawable-hdpi/business_login_top_bg.webp
  24. BIN
      cpt_auths/src/main/res/drawable-hdpi/choose_role_left_bottom.webp
  25. BIN
      cpt_auths/src/main/res/drawable-hdpi/choose_role_right_bottom.webp
  26. BIN
      cpt_auths/src/main/res/drawable-hdpi/choose_role_top_img.webp
  27. BIN
      cpt_auths/src/main/res/drawable-hdpi/forgot_email_icon.webp
  28. BIN
      cpt_auths/src/main/res/drawable-hdpi/forgot_phone_icon.webp
  29. BIN
      cpt_auths/src/main/res/drawable-hdpi/login_email_icon.webp
  30. BIN
      cpt_auths/src/main/res/drawable-hdpi/login_mobile_drop_down_icon.webp
  31. BIN
      cpt_auths/src/main/res/drawable-hdpi/login_mobile_icon.webp
  32. BIN
      cpt_auths/src/main/res/drawable-hdpi/login_password_icon.webp
  33. BIN
      cpt_auths/src/main/res/drawable-hdpi/personal_login_bottom_bg.webp
  34. BIN
      cpt_auths/src/main/res/drawable-hdpi/personal_login_top_bg.webp
  35. BIN
      cpt_auths/src/main/res/drawable-hdpi/reset_confirm_password_.webp
  36. BIN
      cpt_auths/src/main/res/drawable-hdpi/reset_new_password.webp
  37. BIN
      cpt_auths/src/main/res/drawable-hdpi/reset_old_password.webp
  38. BIN
      cpt_auths/src/main/res/drawable-hdpi/signup_top_img.webp
  39. BIN
      cpt_auths/src/main/res/drawable-xhdpi/business_login_top_bg.webp
  40. BIN
      cpt_auths/src/main/res/drawable-xhdpi/choose_role_left_bottom.webp
  41. BIN
      cpt_auths/src/main/res/drawable-xhdpi/choose_role_right_bottom.webp
  42. BIN
      cpt_auths/src/main/res/drawable-xhdpi/choose_role_top_img.webp
  43. BIN
      cpt_auths/src/main/res/drawable-xhdpi/forgot_email_icon.webp
  44. BIN
      cpt_auths/src/main/res/drawable-xhdpi/forgot_phone_icon.webp
  45. BIN
      cpt_auths/src/main/res/drawable-xhdpi/login_email_icon.webp
  46. BIN
      cpt_auths/src/main/res/drawable-xhdpi/login_mobile_drop_down_icon.webp
  47. BIN
      cpt_auths/src/main/res/drawable-xhdpi/login_mobile_icon.webp
  48. BIN
      cpt_auths/src/main/res/drawable-xhdpi/login_password_icon.webp
  49. BIN
      cpt_auths/src/main/res/drawable-xhdpi/personal_login_bottom_bg.webp
  50. BIN
      cpt_auths/src/main/res/drawable-xhdpi/personal_login_top_bg.webp
  51. BIN
      cpt_auths/src/main/res/drawable-xhdpi/reset_confirm_password_.webp
  52. BIN
      cpt_auths/src/main/res/drawable-xhdpi/reset_new_password.webp
  53. BIN
      cpt_auths/src/main/res/drawable-xhdpi/reset_old_password.webp
  54. BIN
      cpt_auths/src/main/res/drawable-xhdpi/signup_top_img.webp
  55. BIN
      cpt_auths/src/main/res/drawable-xxhdpi/business_login_top_bg.webp
  56. BIN
      cpt_auths/src/main/res/drawable-xxhdpi/choose_role_left_bottom.webp
  57. BIN
      cpt_auths/src/main/res/drawable-xxhdpi/choose_role_right_bottom.webp
  58. BIN
      cpt_auths/src/main/res/drawable-xxhdpi/choose_role_top_img.webp
  59. BIN
      cpt_auths/src/main/res/drawable-xxhdpi/forgot_email_icon.webp
  60. BIN
      cpt_auths/src/main/res/drawable-xxhdpi/forgot_phone_icon.webp
  61. BIN
      cpt_auths/src/main/res/drawable-xxhdpi/login_email_icon.webp
  62. BIN
      cpt_auths/src/main/res/drawable-xxhdpi/login_mobile_drop_down_icon.webp
  63. BIN
      cpt_auths/src/main/res/drawable-xxhdpi/login_mobile_icon.webp
  64. BIN
      cpt_auths/src/main/res/drawable-xxhdpi/login_password_icon.webp
  65. BIN
      cpt_auths/src/main/res/drawable-xxhdpi/personal_login_bottom_bg.webp
  66. BIN
      cpt_auths/src/main/res/drawable-xxhdpi/personal_login_top_bg.webp
  67. BIN
      cpt_auths/src/main/res/drawable-xxhdpi/reset_confirm_password_.webp
  68. BIN
      cpt_auths/src/main/res/drawable-xxhdpi/reset_new_password.webp
  69. BIN
      cpt_auths/src/main/res/drawable-xxhdpi/reset_old_password.webp
  70. BIN
      cpt_auths/src/main/res/drawable-xxhdpi/signup_top_img.webp
  71. 0 170
      cpt_auths/src/main/res/drawable/ic_launcher_background.xml
  72. 118 0
      cpt_auths/src/main/res/layout/activity_business_forgot_psd_email.xml
  73. 36 0
      cpt_auths/src/main/res/layout/activity_business_forgot_psd_input.xml
  74. 245 0
      cpt_auths/src/main/res/layout/activity_business_forgot_psd_verity.xml
  75. 177 0
      cpt_auths/src/main/res/layout/activity_business_login.xml
  76. 60 16
      cpt_auths/src/main/res/layout/activity_choose_auth.xml
  77. 31 0
      cpt_auths/src/main/res/layout/activity_pensonal_forgot_psd_input.xml
  78. 118 0
      cpt_auths/src/main/res/layout/activity_pensonal_forgot_psd_mobile.xml
  79. 245 0
      cpt_auths/src/main/res/layout/activity_pensonal_forgot_psd_verity.xml
  80. 220 0
      cpt_auths/src/main/res/layout/activity_pensonal_login.xml
  81. 266 0
      cpt_auths/src/main/res/layout/activity_pensonal_signup_input.xml
  82. 245 0
      cpt_auths/src/main/res/layout/activity_pensonal_signup_verity.xml
  83. 206 0
      cpt_auths/src/main/res/layout/activity_reset_password.xml
  84. 37 0
      cpt_auths/src/main/res/layout/item_popup_count_code.xml
  85. 7 0
      cpt_auths/src/main/res/layout/popup_county_code_list.xml
  86. 27 1
      cpt_business/src/main/AndroidManifest.xml
  87. 1 1
      cpt_business/src/main/java/com/hongyegroup/cpt_business/router/BusinessComponentImpl.kt
  88. 40 0
      cpt_business/src/main/java/com/hongyegroup/cpt_business/ui/activity/BusinessAddStaffActivity.kt
  89. 41 0
      cpt_business/src/main/java/com/hongyegroup/cpt_business/ui/activity/BusinessAppointmentChooseEmployeeActivity.kt
  90. 41 0
      cpt_business/src/main/java/com/hongyegroup/cpt_business/ui/activity/BusinessAppointmentDateActivity.kt
  91. 41 0
      cpt_business/src/main/java/com/hongyegroup/cpt_business/ui/activity/BusinessAppointmentMakeActivity.kt
  92. 40 0
      cpt_business/src/main/java/com/hongyegroup/cpt_business/ui/activity/BusinessCodeActivity.kt
  93. 40 0
      cpt_business/src/main/java/com/hongyegroup/cpt_business/ui/activity/BusinessInfoEditActivity.kt
  94. 4 2
      cpt_business/src/main/java/com/hongyegroup/cpt_business/BusinessMainActivity.kt
  95. 28 0
      cpt_business/src/main/java/com/hongyegroup/cpt_business/ui/fragment/BusinessAppointmentFragment.kt
  96. 28 0
      cpt_business/src/main/java/com/hongyegroup/cpt_business/ui/fragment/BusinessEmployeesFragment.kt
  97. 28 0
      cpt_business/src/main/java/com/hongyegroup/cpt_business/ui/fragment/BusinessInfosFragment.kt
  98. 28 0
      cpt_business/src/main/java/com/hongyegroup/cpt_business/ui/fragment/BusinessSettingFragment.kt
  99. 32 0
      cpt_business/src/main/res/layout/activity_business_add_staff.xml
  100. 0 0
      cpt_business/src/main/res/layout/activity_business_appointment_choose_employee.xml

+ 6 - 2
app/src/main/AndroidManifest.xml

@@ -17,12 +17,16 @@
         android:supportsRtl="true"
         android:theme="@style/AppTheme">
 
-        <activity android:name="com.hongyegroup.nucleicacidtest.ui.SplashActivity">
+        <activity
+            android:name="com.hongyegroup.nucleicacidtest.ui.SplashActivity"
+            android:screenOrientation="portrait"
+            android:theme="@style/AppTheme_welcome">
+
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
-
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
+
         </activity>
 
 

+ 25 - 0
app/src/main/java/com/hongyegroup/nucleicacidtest/router/AppComponentImpl.kt

@@ -1,10 +1,35 @@
 package com.hongyegroup.nucleicacidtest.router
 
+import android.app.Activity
 import com.guadou.cs_router.app.IAppComponentServer
+import com.guadou.lib_baselib.utils.CommUtils
+import com.guadou.lib_baselib.utils.Log.YYLogUtils
 import io.github.prototypez.appjoint.core.ServiceProvider
 
 @ServiceProvider
 class AppComponentImpl : IAppComponentServer {
 
+    override fun initSMS(): IAppComponentServer {
+
+        return this
+    }
+
+    override fun sendSMSCode(
+        activity: Activity,
+        phone: String,
+        sendAction: ((isSuccess: Boolean) -> Unit)?,
+        verifyAction: ((isSuccess: Boolean) -> Unit)?
+    ) {
+
+    }
+
+    override fun verifySMSCode(activity: Activity, code: String, verifyAction: ((isSuccess: Boolean) -> Unit)?) {
+        //模拟成功
+        YYLogUtils.w("开始模拟")
+        CommUtils.getHandler().postDelayed({
+            YYLogUtils.w("模拟成功")
+            verifyAction?.let { it(true) }
+        }, 1000)
+    }
 
 }

+ 37 - 7
app/src/main/java/com/hongyegroup/nucleicacidtest/ui/SplashActivity.kt

@@ -1,16 +1,25 @@
 package com.hongyegroup.nucleicacidtest.ui
 
+import android.os.Bundle
+import com.guadou.cs_cptservices.Constants
 import com.guadou.cs_cptservices.base.activity.YYBaseVDBActivity
 import com.guadou.cs_router.YYRouterService
 import com.guadou.lib_baselib.base.vm.EmptyViewModel
 import com.guadou.lib_baselib.bean.DataBindingConfig
-import com.guadou.lib_baselib.ext.click
+import com.guadou.lib_baselib.ext.SP
+import com.guadou.lib_baselib.utils.BitmapUtils
+import com.guadou.lib_baselib.utils.CheckUtil
+import com.guadou.lib_baselib.utils.CommUtils
 import com.hongyegroup.nucleicacidtest.R
 import com.hongyegroup.nucleicacidtest.databinding.ActivitySplashBinding
 
 
 class SplashActivity : YYBaseVDBActivity<EmptyViewModel, ActivitySplashBinding>() {
 
+    companion object {
+        //起始页面延迟的时间
+        const val SPLASH_DELAY_MILLISEC: Long = 1500
+    }
 
     override fun getDataBindingConfig(): DataBindingConfig {
         return DataBindingConfig(R.layout.activity_splash)
@@ -20,16 +29,37 @@ class SplashActivity : YYBaseVDBActivity<EmptyViewModel, ActivitySplashBinding>(
 
     }
 
-    override fun init() {
+    override fun init(savedInstanceState: Bundle?) {
+
+        //清除BitmapUtil的缓存图片
+        BitmapUtils.getInstance(mContext).deleteBitmapCacheDir()
+
+        //开启倒计时,还是直接启动
+        navLoginOrMain()
 
-        mBinding.btnJumpMain.click {
-//            YYRouterService.mainComponentServer?.startChooseRoleActivity()
 
-//            YYRouterService.businessComponentServer?.startBusinessMainActivity()
+    }
+
+    private fun navLoginOrMain() {
 
-            YYRouterService.pensonalComponentServer.startPensonalMainActivity()
-        }
+        CommUtils.getHandler().postDelayed({
 
+            if (CheckUtil.isEmpty(SP().getString(Constants.SP_KEY_TOKEN, ""))) {
+                //指引页面
+                YYRouterService.mainComponentServer?.startChooseRoleActivity()
+            } else {
+
+                if (SP().getBoolean(Constants.SP_KEY_IS_BUSINESS, false)) {
+                    YYRouterService.businessComponentServer?.startBusinessMainActivity()
+                } else {
+                    YYRouterService.pensonalComponentServer?.startPensonalMainActivity()
+                }
+            }
+
+            finish()
+
+        }, SPLASH_DELAY_MILLISEC)
 
     }
+
 }

BIN
app/src/main/res/drawable-xhdpi/splash_center_blue_logo.webp


+ 11 - 0
app/src/main/res/drawable/layer_start_window.xml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@color/white"/>
+
+    <item>
+        <bitmap
+            android:gravity="center"
+            android:src="@drawable/splash_center_blue_logo"/>
+    </item>
+
+</layer-list>

+ 6 - 19
app/src/main/res/layout/activity_splash.xml

@@ -9,34 +9,21 @@
 
     </data>
 
-    <LinearLayout
+    <FrameLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:background="@color/white"
-        android:orientation="vertical">
-
-        <com.guadou.lib_baselib.view.titlebar.EasyTitleBar
-            android:id="@+id/easy_title"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            app:Easy_hasStatusPadding="true"
-            app:Easy_title="Main" />
+        tools:viewBindingIgnore="true">
 
 
-        <TextView
+        <ImageView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_gravity="center_horizontal"
-            android:text="Main Page" />
-
+            android:layout_gravity="center"
+            android:src="@drawable/splash_center_blue_logo" />
 
-        <Button
-            android:id="@+id/btn_jump_main"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="跳转主页模块" />
 
-    </LinearLayout>
+    </FrameLayout>
 
 </layout>
 

+ 15 - 0
app/src/main/res/values/style.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <!--app-splash的启动theme,不带状态栏-->
+    <style name="AppTheme_welcome" parent="@android:style/Theme.NoTitleBar.Fullscreen">
+        <item name="android:windowBackground">@drawable/layer_start_window</item>
+        <item name="windowActionBar">false</item>
+        <item name="windowNoTitle">true</item>
+        <item name="colorPrimary">@color/colorPrimary</item>
+        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
+        <item name="colorAccent">@color/colorAccent</item>
+        <item name="android:windowAnimationStyle">@style/My_AnimationActivity</item>
+    </style>
+
+</resources>

+ 40 - 1
cpt_auths/src/main/AndroidManifest.xml

@@ -4,8 +4,47 @@
 
     <application android:allowBackup="true">
 
-        <activity android:name=".ui.ChooseAuthActivity" />
+        <activity
+            android:name=".ui.ChooseAuthActivity"
+            android:screenOrientation="portrait" />
 
+        <activity
+            android:name=".ui.BusinessForgotPsdEmailActivity"
+            android:screenOrientation="portrait" />
+
+        <activity
+            android:name=".ui.BusinessForgotPsdVerityActivity"
+            android:screenOrientation="portrait" />
+
+        <activity
+            android:name=".ui.PensonalForgotPsdMobileActivity"
+            android:screenOrientation="portrait" />
+
+        <activity
+            android:name=".ui.PensonalForgotPsdVerityActivity"
+            android:screenOrientation="portrait" />
+
+        <activity
+            android:name=".ui.PensonalLoginActivity"
+            android:launchMode="singleTask"
+            android:screenOrientation="portrait" />
+
+        <activity
+            android:name=".ui.BusinessLoginActivity"
+            android:launchMode="singleTask"
+            android:screenOrientation="portrait" />
+
+        <activity
+            android:name=".ui.PensonalSignupInputActivity"
+            android:screenOrientation="portrait" />
+
+        <activity
+            android:name=".ui.PensonalSignupVerifyActivity"
+            android:screenOrientation="portrait" />
+
+        <activity
+            android:name=".ui.ResetPasswordActivity"
+            android:screenOrientation="portrait" />
 
     </application>
 

+ 44 - 0
cpt_auths/src/main/java/com/hongyegroup/cpt_auths/mvvm/vm/PensonalLoginViewModel.kt

@@ -0,0 +1,44 @@
+package com.hongyegroup.cpt_auths.mvvm.vm
+
+import android.app.Activity
+import android.view.View
+import androidx.hilt.lifecycle.ViewModelInject
+import androidx.lifecycle.MutableLiveData
+import com.guadou.lib_baselib.base.vm.BaseViewModel
+import com.guadou.lib_baselib.ext.dp2px
+import com.hongyegroup.cpt_auths.widget.CountyCodePopup
+import com.lxj.xpopup.XPopup
+import com.lxj.xpopup.enums.PopupPosition
+
+class PensonalLoginViewModel @ViewModelInject constructor(
+
+) : BaseViewModel() {
+
+    private val countyCodes = listOf("+1", "+44", "+60", "+61", "+63", "+65", "+66", "+84", "+86", "+852")
+
+    var mMobileCodeLiveData: MutableLiveData<String> = MutableLiveData()
+
+    init {
+        mMobileCodeLiveData.value = "+65"
+    }
+
+    /**
+     * 下拉选选择国家区号
+     */
+    fun showCountryCodePopup(view: View, activity: Activity) {
+
+        XPopup.Builder(activity)
+            .hasShadowBg(false)
+            .isCenterHorizontal(true) //是否与目标水平居中对齐
+            .offsetY(-5)
+            .popupPosition(PopupPosition.Bottom) //手动指定弹窗的位置
+            .atView(view) // 依附于所点击的View,内部会自动判断在上方或者下方显示
+            .asCustom(CountyCodePopup(activity, view, dp2px(300f), countyCodes) { _, text ->
+                mMobileCodeLiveData.value = text
+            })
+            .show()
+
+    }
+
+
+}

+ 44 - 0
cpt_auths/src/main/java/com/hongyegroup/cpt_auths/mvvm/vm/PensonalSignUpInputViewModel.kt

@@ -0,0 +1,44 @@
+package com.hongyegroup.cpt_auths.mvvm.vm
+
+import android.app.Activity
+import android.view.View
+import androidx.hilt.lifecycle.ViewModelInject
+import androidx.lifecycle.MutableLiveData
+import com.guadou.lib_baselib.base.vm.BaseViewModel
+import com.guadou.lib_baselib.ext.dp2px
+import com.hongyegroup.cpt_auths.widget.CountyCodePopup
+import com.lxj.xpopup.XPopup
+import com.lxj.xpopup.enums.PopupPosition
+
+class PensonalSignUpInputViewModel @ViewModelInject constructor(
+
+) : BaseViewModel() {
+
+    private val countyCodes = listOf("+1", "+44", "+60", "+61", "+63", "+65", "+66", "+84", "+86", "+852")
+
+    var mMobileCodeLiveData: MutableLiveData<String> = MutableLiveData()
+
+    init {
+        mMobileCodeLiveData.value = "+65"
+    }
+
+    /**
+     * 下拉选选择国家区号
+     */
+    fun showCountryCodePopup(view: View, activity: Activity) {
+
+        XPopup.Builder(activity)
+            .hasShadowBg(false)
+            .isCenterHorizontal(true) //是否与目标水平居中对齐
+            .offsetY(-5)
+            .popupPosition(PopupPosition.Bottom) //手动指定弹窗的位置
+            .atView(view) // 依附于所点击的View,内部会自动判断在上方或者下方显示
+            .asCustom(CountyCodePopup(activity, view, dp2px(200f), countyCodes) { _, text ->
+                mMobileCodeLiveData.value = text
+            })
+            .show()
+
+    }
+
+
+}

+ 5 - 0
cpt_auths/src/main/java/com/hongyegroup/cpt_auths/router/AuthComponentImpl.kt

@@ -2,6 +2,7 @@ package com.hongyegroup.cpt_auths.router
 
 import com.guadou.cs_router.auth.IAuthComponentServer
 import com.hongyegroup.cpt_auths.ui.ChooseAuthActivity
+import com.hongyegroup.cpt_auths.ui.ResetPasswordActivity
 import io.github.prototypez.appjoint.core.ServiceProvider
 
 @ServiceProvider
@@ -11,4 +12,8 @@ class AuthComponentImpl : IAuthComponentServer {
         ChooseAuthActivity.startInstance()
     }
 
+    override fun startResetPasswordActivity(isFromBusiness: Boolean, isForgot: Boolean) {
+        ResetPasswordActivity.startInstance(isFromBusiness, isForgot)
+    }
+
 }

+ 58 - 0
cpt_auths/src/main/java/com/hongyegroup/cpt_auths/ui/BusinessForgotPsdEmailActivity.kt

@@ -0,0 +1,58 @@
+package com.hongyegroup.cpt_auths.ui
+
+import android.content.Intent
+import android.os.Bundle
+import androidx.lifecycle.MutableLiveData
+import com.guadou.cs_cptservices.base.activity.YYBaseVDBActivity
+import com.guadou.lib_baselib.base.vm.EmptyViewModel
+import com.guadou.lib_baselib.bean.DataBindingConfig
+import com.guadou.lib_baselib.utils.CommUtils
+import com.guadou.lib_baselib.utils.KeyboardUtils
+import com.hongyegroup.cpt_auths.BR
+import com.hongyegroup.cpt_auths.R
+import com.hongyegroup.cpt_auths.databinding.ActivityBusinessForgotPsdEmailBinding
+
+/**
+ * 公司忘记密码 1-输入邮箱
+ */
+class BusinessForgotPsdEmailActivity : YYBaseVDBActivity<EmptyViewModel, ActivityBusinessForgotPsdEmailBinding>() {
+
+    companion object {
+        fun startInstance() {
+            val context = CommUtils.getContext()
+            val intent = Intent(context, BusinessForgotPsdEmailActivity::class.java)
+            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+            context.startActivity(intent)
+        }
+    }
+
+    override fun getDataBindingConfig(): DataBindingConfig {
+        return DataBindingConfig(R.layout.activity_business_forgot_psd_email)
+            .addBindingParams(BR.click, ClickProxy())
+    }
+
+    override fun startObserve() {
+
+    }
+
+    override fun init(savedInstanceState: Bundle?) {
+
+    }
+
+    /**
+     * DataBinding事件处理
+     */
+    inner class ClickProxy {
+
+        //邮箱
+        val mEmailLD: MutableLiveData<String> = MutableLiveData()
+
+        //执行提交
+        fun doSubmit() {
+            KeyboardUtils.hideSoftInput(mActivity)
+            BusinessForgotPsdVerityActivity.startInstance("liukai2324@163.com")
+        }
+
+    }
+
+}

+ 297 - 0
cpt_auths/src/main/java/com/hongyegroup/cpt_auths/ui/BusinessForgotPsdVerityActivity.kt

@@ -0,0 +1,297 @@
+package com.hongyegroup.cpt_auths.ui
+
+import android.content.Intent
+import android.os.Bundle
+import android.view.KeyEvent
+import android.view.View
+import android.widget.EditText
+import android.widget.FrameLayout
+import android.widget.TextView
+import androidx.core.content.ContextCompat
+import androidx.lifecycle.MutableLiveData
+import com.guadou.cs_cptservices.base.activity.YYBaseVDBActivity
+import com.guadou.lib_baselib.bean.DataBindingConfig
+import com.guadou.lib_baselib.utils.CheckUtil
+import com.guadou.lib_baselib.utils.CommUtils
+import com.guadou.lib_baselib.utils.KeyboardUtils
+import com.hongyegroup.cpt_auths.BR
+import com.hongyegroup.cpt_auths.R
+import com.hongyegroup.cpt_auths.databinding.ActivityBusinessForgotPsdVerityBinding
+import com.hongyegroup.cpt_auths.mvvm.AuthViewModel
+import dagger.hilt.android.AndroidEntryPoint
+
+/**
+ * 公司忘记密码 2-验证码
+ */
+@AndroidEntryPoint
+class BusinessForgotPsdVerityActivity : YYBaseVDBActivity<AuthViewModel, ActivityBusinessForgotPsdVerityBinding>(), View.OnKeyListener {
+
+    private var mEmail: String? = null
+    private val clickProxy by lazy { ClickProxy() }
+
+    companion object {
+        fun startInstance(email: String) {
+            val context = CommUtils.getContext()
+            val intent = Intent(context, BusinessForgotPsdVerityActivity::class.java)
+            intent.putExtra("email", email)
+            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+            context.startActivity(intent)
+        }
+    }
+
+    override fun getDataBindingConfig(): DataBindingConfig {
+        return DataBindingConfig(R.layout.activity_business_forgot_psd_verity, BR.viewModel, mViewModel)
+            .addBindingParams(BR.click, clickProxy)
+    }
+
+    override fun getDataFromIntent(intent: Intent) {
+        mEmail = intent.getStringExtra("email")
+        clickProxy.mEmailLD.value = mEmail
+    }
+
+    override fun startObserve() {
+
+    }
+
+    override fun init(savedInstanceState: Bundle?) {
+
+        initListener()
+    }
+
+    private fun initListener() {
+
+        mBinding.editTextFirstCode.setOnKeyListener(this)
+        mBinding.editTextSecondCode.setOnKeyListener(this)
+        mBinding.editTextThirdCode.setOnKeyListener(this)
+        mBinding.editTextFourthCode.setOnKeyListener(this)
+        mBinding.editTextFifthCode.setOnKeyListener(this)
+        mBinding.editTextSixthCode.setOnKeyListener(this)
+
+        //默认展示第一个
+        mBinding.editTextFirstCode.isFocusable = true
+        mBinding.editTextFirstCode.isFocusableInTouchMode = true
+        setFocusedBackground(mBinding.frameFirstCode)
+        CommUtils.getHandler().postDelayed({
+            KeyboardUtils.openSoftKeyboard(mActivity, mBinding.editTextHidden)
+        }, 250)
+
+    }
+
+    private fun setFocusedBackground(frameLayout: FrameLayout) {
+        setViewBackground(frameLayout, R.drawable.white_input_finish)
+    }
+
+    private fun setDefaultBackground(frameLayout: FrameLayout) {
+        setViewBackground(frameLayout, R.drawable.white_input_field)
+    }
+
+    private fun setViewBackground(frameLayout: FrameLayout, resource: Int) {
+        if (resource == 0) return
+        frameLayout.background = ContextCompat.getDrawable(mContext, resource)
+    }
+
+    private fun setFocus(editText: EditText?) {
+        if (editText == null) return
+        editText.isFocusable = true
+        editText.isFocusableInTouchMode = true
+        editText.requestFocus()
+        editText.setSelection(editText.text.length)
+    }
+
+    /**
+     * 检查焦点
+     */
+    fun checkFocus(view: View) {
+        when (view.id) {
+            R.id.edit_text_first_code -> {
+                setFocusedBackground(mBinding.frameFirstCode)
+                setFocus(mBinding.editTextHidden)
+                KeyboardUtils.showKeyboard(mActivity)
+            }
+            R.id.edit_text_second_code -> {
+                setFocus(mBinding.editTextHidden)
+                KeyboardUtils.showKeyboard(mActivity)
+            }
+            R.id.edit_text_third_code -> {
+                setFocus(mBinding.editTextHidden)
+                KeyboardUtils.showKeyboard(mActivity)
+            }
+            R.id.edit_text_fourth_code -> {
+                setFocus(mBinding.editTextHidden)
+                KeyboardUtils.showKeyboard(mActivity)
+            }
+            R.id.edit_text_fifth_code -> {
+                setFocus(mBinding.editTextHidden)
+                KeyboardUtils.showKeyboard(mActivity)
+            }
+            R.id.edit_text_sixth_code -> {
+                setFocus(mBinding.editTextHidden)
+                KeyboardUtils.showKeyboard(mActivity)
+            }
+
+        }
+    }
+
+    /**
+     * 展示在顶部的Top
+     */
+    private fun showFramCode(charSequence: String) {
+
+        if (charSequence.isEmpty()) {
+            setFocusedBackground(mBinding.frameFirstCode)
+            setDefaultBackground(mBinding.frameSecondCode)
+            setDefaultBackground(mBinding.frameThirdCode)
+            setDefaultBackground(mBinding.frameFourthCode)
+            setDefaultBackground(mBinding.frameFifthCode)
+            setDefaultBackground(mBinding.frameSixthCode)
+            mBinding.editTextFirstCode.setText("")
+        } else if (charSequence.length == 1) {
+            setFocusedBackground(mBinding.frameFirstCode)
+            setFocusedBackground(mBinding.frameSecondCode)
+            setDefaultBackground(mBinding.frameThirdCode)
+            setDefaultBackground(mBinding.frameFourthCode)
+            setDefaultBackground(mBinding.frameFifthCode)
+            setDefaultBackground(mBinding.frameSixthCode)
+            mBinding.editTextFirstCode.setText(charSequence[0].toString())
+            mBinding.editTextSecondCode.setText("")
+            mBinding.editTextThirdCode.setText("")
+            mBinding.editTextFourthCode.setText("")
+            mBinding.editTextFifthCode.setText("")
+            mBinding.editTextSixthCode.setText("")
+        } else if (charSequence.length == 2) {
+            setFocusedBackground(mBinding.frameFirstCode)
+            setFocusedBackground(mBinding.frameSecondCode)
+            setFocusedBackground(mBinding.frameThirdCode)
+            setDefaultBackground(mBinding.frameFourthCode)
+            setDefaultBackground(mBinding.frameFifthCode)
+            setDefaultBackground(mBinding.frameSixthCode)
+            mBinding.editTextSecondCode.setText(charSequence[1].toString())
+            mBinding.editTextThirdCode.setText("")
+            mBinding.editTextFourthCode.setText("")
+            mBinding.editTextFifthCode.setText("")
+            mBinding.editTextSixthCode.setText("")
+        } else if (charSequence.length == 3) {
+            setFocusedBackground(mBinding.frameFirstCode)
+            setFocusedBackground(mBinding.frameSecondCode)
+            setFocusedBackground(mBinding.frameThirdCode)
+            setFocusedBackground(mBinding.frameFourthCode)
+            setDefaultBackground(mBinding.frameFifthCode)
+            setDefaultBackground(mBinding.frameSixthCode)
+            mBinding.editTextThirdCode.setText(charSequence[2].toString())
+            mBinding.editTextFourthCode.setText("")
+            mBinding.editTextFifthCode.setText("")
+            mBinding.editTextSixthCode.setText("")
+        } else if (charSequence.length == 4) {
+            setFocusedBackground(mBinding.frameFirstCode)
+            setFocusedBackground(mBinding.frameSecondCode)
+            setFocusedBackground(mBinding.frameThirdCode)
+            setFocusedBackground(mBinding.frameFourthCode)
+            setFocusedBackground(mBinding.frameFifthCode)
+            setDefaultBackground(mBinding.frameSixthCode)
+            mBinding.editTextFourthCode.setText(charSequence[3].toString())
+            mBinding.editTextFifthCode.setText("")
+            mBinding.editTextSixthCode.setText("")
+        } else if (charSequence.length == 5) {
+            setFocusedBackground(mBinding.frameFirstCode)
+            setFocusedBackground(mBinding.frameSecondCode)
+            setFocusedBackground(mBinding.frameThirdCode)
+            setFocusedBackground(mBinding.frameFourthCode)
+            setFocusedBackground(mBinding.frameFifthCode)
+            setFocusedBackground(mBinding.frameSixthCode)
+            mBinding.editTextFifthCode.setText(charSequence[4].toString())
+            mBinding.editTextSixthCode.setText("")
+        } else if (charSequence.length == 6) {
+            setFocusedBackground(mBinding.frameFirstCode)
+            setFocusedBackground(mBinding.frameSecondCode)
+            setFocusedBackground(mBinding.frameThirdCode)
+            setFocusedBackground(mBinding.frameFourthCode)
+            setFocusedBackground(mBinding.frameFifthCode)
+            setFocusedBackground(mBinding.frameSixthCode)
+            mBinding.editTextSixthCode.setText(charSequence[5].toString())
+            KeyboardUtils.closeSoftKeyboard(mBinding.editTextSixthCode)
+
+            val code: String = mBinding.editTextHidden.text.toString()
+
+            if (!CheckUtil.isEmpty(code)) {
+                verifyCode(code)
+            }
+        }
+    }
+
+    /**
+     * 键盘监听
+     */
+    override fun onKey(view: View?, keyCode: Int, event: KeyEvent?): Boolean {
+        if (event?.action == KeyEvent.ACTION_DOWN) {
+            val id = view?.id
+            if (id == R.id.edit_text_hidden) {
+                if (keyCode == KeyEvent.KEYCODE_DEL) {
+                    when (mBinding.editTextHidden.text.length) {
+                        6 -> {
+                            mBinding.editTextSixthCode.setText("")
+                        }
+                        5 -> {
+                            mBinding.editTextFifthCode.setText("")
+                        }
+                        4 -> {
+                            mBinding.editTextFourthCode.setText("")
+                        }
+                        3 -> {
+                            mBinding.editTextThirdCode.setText("")
+                        }
+                        2 -> {
+                            mBinding.editTextSecondCode.setText("")
+                        }
+                        1 -> {
+                            mBinding.editTextFirstCode.setText("")
+                        }
+                    }
+
+                    if (mBinding.editTextHidden.length() > 0) {
+                        mBinding.editTextHidden.setText(mBinding.editTextHidden.text.subSequence(0, mBinding.editTextHidden.length() - 1))
+                        mBinding.editTextHidden.setSelection(mBinding.editTextHidden.text.length)
+                    }
+
+                    return true
+                }
+            }
+        }
+        return false
+    }
+
+    /**
+     * 检测验证码
+     */
+    private fun verifyCode(code: String) {
+
+        //调用接口校验邮箱验证码
+
+        ResetPasswordActivity.startInstance(isFromBusiness = true, isForgort = true)
+
+    }
+
+    /**
+     * DataBinding事件处理
+     */
+    inner class ClickProxy {
+
+        //被验证的邮箱
+        val mEmailLD: MutableLiveData<String> = MutableLiveData()
+
+        //重新发送
+        fun resendCode() {
+
+        }
+
+        //获取焦点的监听
+        val onFocusGet: (textView: TextView) -> Unit = {
+            checkFocus(it)
+        }
+
+        val onTextChange: (str: String) -> Unit = {
+            showFramCode(it)
+        }
+
+    }
+
+}

+ 78 - 0
cpt_auths/src/main/java/com/hongyegroup/cpt_auths/ui/BusinessLoginActivity.kt

@@ -0,0 +1,78 @@
+package com.hongyegroup.cpt_auths.ui
+
+import android.content.Intent
+import android.os.Bundle
+import androidx.lifecycle.MutableLiveData
+import com.guadou.cs_cptservices.base.activity.YYBaseVDBActivity
+import com.guadou.cs_router.YYRouterService
+import com.guadou.lib_baselib.base.vm.EmptyViewModel
+import com.guadou.lib_baselib.bean.DataBindingConfig
+import com.guadou.lib_baselib.utils.ActivityManage
+import com.guadou.lib_baselib.utils.CommUtils
+import com.guadou.lib_baselib.utils.KeyboardUtils
+import com.guadou.lib_baselib.utils.StatusBarUtils
+import com.hongyegroup.cpt_auths.BR
+import com.hongyegroup.cpt_auths.R
+import com.hongyegroup.cpt_auths.databinding.ActivityBusinessLoginBinding
+
+/**
+ * 用户的登录页面
+ */
+class BusinessLoginActivity : YYBaseVDBActivity<EmptyViewModel, ActivityBusinessLoginBinding>() {
+
+    companion object {
+        fun startInstance() {
+            val context = CommUtils.getContext()
+            val intent = Intent(context, BusinessLoginActivity::class.java)
+            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+            context.startActivity(intent)
+        }
+    }
+
+    override fun getDataBindingConfig(): DataBindingConfig {
+        return DataBindingConfig(R.layout.activity_business_login)
+            .addBindingParams(BR.click, ClickProxy())
+    }
+
+    override fun startObserve() {
+
+    }
+
+    override fun init(savedInstanceState: Bundle?) {
+        StatusBarUtils.immersive(this)
+
+    }
+
+    /**
+     * DataBinding事件处理
+     */
+    inner class ClickProxy {
+
+        //电话号码
+        val mEmailLD: MutableLiveData<String> = MutableLiveData()
+
+        //密码
+        val mPasswordLD: MutableLiveData<String> = MutableLiveData()
+
+        //返回按钮
+        fun backPage() {
+            finish()
+        }
+
+        //执行登录
+        fun doLogin() {
+            KeyboardUtils.hideSoftInput(mActivity)
+            YYRouterService.businessComponentServer?.startBusinessMainActivity()
+            ActivityManage.finishAllActivity()
+        }
+
+        //去忘记密码页面
+        fun gotoForgotPasswordPage() {
+            KeyboardUtils.hideSoftInput(mActivity)
+            BusinessForgotPsdEmailActivity.startInstance()
+        }
+
+
+    }
+
+}

+ 27 - 16
cpt_auths/src/main/java/com/hongyegroup/cpt_auths/ui/ChooseAuthActivity.kt

@@ -1,23 +1,20 @@
 package com.hongyegroup.cpt_auths.ui
 
 import android.content.Intent
+import android.os.Bundle
 import com.guadou.cs_cptservices.base.activity.YYBaseVDBActivity
+import com.guadou.lib_baselib.base.vm.EmptyViewModel
 import com.guadou.lib_baselib.bean.DataBindingConfig
-import com.guadou.lib_baselib.ext.click
 import com.guadou.lib_baselib.utils.CommUtils
+import com.guadou.lib_baselib.utils.StatusBarUtils
 import com.hongyegroup.cpt_auths.BR
 import com.hongyegroup.cpt_auths.R
 import com.hongyegroup.cpt_auths.databinding.ActivityChooseAuthBinding
-import com.hongyegroup.cpt_auths.di.MemberServer
-import com.hongyegroup.cpt_auths.mvvm.AuthViewModel
-import dagger.hilt.android.AndroidEntryPoint
-import javax.inject.Inject
 
-@AndroidEntryPoint
-class ChooseAuthActivity : YYBaseVDBActivity<AuthViewModel, ActivityChooseAuthBinding>() {
-
-    @Inject
-    lateinit var userServer: MemberServer
+/**
+ * 选择角色的页面
+ */
+class ChooseAuthActivity : YYBaseVDBActivity<EmptyViewModel, ActivityChooseAuthBinding>() {
 
     companion object {
         fun startInstance() {
@@ -29,22 +26,36 @@ class ChooseAuthActivity : YYBaseVDBActivity<AuthViewModel, ActivityChooseAuthBi
     }
 
     override fun getDataBindingConfig(): DataBindingConfig {
-        return DataBindingConfig(R.layout.activity_choose_auth, BR.viewModel, mViewModel)
+        return DataBindingConfig(R.layout.activity_choose_auth)
+            .addBindingParams(BR.click, ClickProxy())
     }
 
     override fun startObserve() {
 
     }
 
-    override fun init() {
+    override fun init(savedInstanceState: Bundle?) {
+
+        StatusBarUtils.immersive(this)
+        setStatusBarWhiteText()
+
+    }
 
-        userServer.testUser()
+    /**
+     * DataBinding事件处理
+     */
+    inner class ClickProxy {
 
-        mBinding.btnLogin.click {
-            mViewModel.getServiceTime()
+        //普通用户登录
+        fun gotoPersonalLoginPage() {
+            PensonalLoginActivity.startInstance()
         }
 
-    }
+        //商家登录
+        fun gotoBusinessLoginPage() {
+            BusinessLoginActivity.startInstance()
+        }
 
+    }
 
 }

+ 58 - 0
cpt_auths/src/main/java/com/hongyegroup/cpt_auths/ui/PensonalForgotPsdMobileActivity.kt

@@ -0,0 +1,58 @@
+package com.hongyegroup.cpt_auths.ui
+
+import android.content.Intent
+import android.os.Bundle
+import androidx.lifecycle.MutableLiveData
+import com.guadou.cs_cptservices.base.activity.YYBaseVDBActivity
+import com.guadou.lib_baselib.base.vm.EmptyViewModel
+import com.guadou.lib_baselib.bean.DataBindingConfig
+import com.guadou.lib_baselib.utils.CommUtils
+import com.guadou.lib_baselib.utils.KeyboardUtils
+import com.hongyegroup.cpt_auths.BR
+import com.hongyegroup.cpt_auths.R
+import com.hongyegroup.cpt_auths.databinding.ActivityPensonalForgotPsdMobileBinding
+
+/**
+ * 用户忘记密码 1-输入手机号码
+ */
+class PensonalForgotPsdMobileActivity : YYBaseVDBActivity<EmptyViewModel, ActivityPensonalForgotPsdMobileBinding>() {
+
+    companion object {
+        fun startInstance() {
+            val context = CommUtils.getContext()
+            val intent = Intent(context, PensonalForgotPsdMobileActivity::class.java)
+            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+            context.startActivity(intent)
+        }
+    }
+
+    override fun getDataBindingConfig(): DataBindingConfig {
+        return DataBindingConfig(R.layout.activity_pensonal_forgot_psd_mobile)
+            .addBindingParams(BR.click, ClickProxy())
+    }
+
+    override fun startObserve() {
+
+    }
+
+    override fun init(savedInstanceState: Bundle?) {
+
+    }
+
+    /**
+     * DataBinding事件处理
+     */
+    inner class ClickProxy {
+
+        //电话号码
+        val mMobilePhoneLD: MutableLiveData<String> = MutableLiveData()
+
+        //执行提交
+        fun doSubmit() {
+            KeyboardUtils.hideSoftInput(mActivity)
+            PensonalForgotPsdVerityActivity.startInstance("+86 1234567890")
+        }
+
+    }
+
+}

+ 328 - 0
cpt_auths/src/main/java/com/hongyegroup/cpt_auths/ui/PensonalForgotPsdVerityActivity.kt

@@ -0,0 +1,328 @@
+package com.hongyegroup.cpt_auths.ui
+
+import android.content.Intent
+import android.os.Bundle
+import android.view.KeyEvent
+import android.view.View
+import android.widget.EditText
+import android.widget.FrameLayout
+import android.widget.TextView
+import androidx.core.content.ContextCompat
+import androidx.lifecycle.MutableLiveData
+import com.guadou.cs_cptservices.base.activity.YYBaseVDBActivity
+import com.guadou.cs_router.YYRouterService
+import com.guadou.cs_router.app.IAppComponentServer
+import com.guadou.lib_baselib.base.vm.EmptyViewModel
+import com.guadou.lib_baselib.bean.DataBindingConfig
+import com.guadou.lib_baselib.ext.toast
+import com.guadou.lib_baselib.utils.CheckUtil
+import com.guadou.lib_baselib.utils.CommUtils
+import com.guadou.lib_baselib.utils.KeyboardUtils
+import com.hongyegroup.cpt_auths.BR
+import com.hongyegroup.cpt_auths.R
+import com.hongyegroup.cpt_auths.databinding.ActivityPensonalForgotPsdVerityBinding
+
+/**
+ * 用户忘记密码 2-短信验证码
+ */
+class PensonalForgotPsdVerityActivity : YYBaseVDBActivity<EmptyViewModel, ActivityPensonalForgotPsdVerityBinding>(), View.OnKeyListener {
+
+    private var mSMSService: IAppComponentServer? = null
+    private var mMobilePhone: String? = null
+    private val clickProxy by lazy { ClickProxy() }
+
+    companion object {
+        fun startInstance(phone: String?) {
+            val context = CommUtils.getContext()
+            val intent = Intent(context, PensonalForgotPsdVerityActivity::class.java)
+            intent.putExtra("phone", phone)
+            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+            context.startActivity(intent)
+        }
+    }
+
+    override fun getDataBindingConfig(): DataBindingConfig {
+        return DataBindingConfig(R.layout.activity_pensonal_forgot_psd_verity)
+            .addBindingParams(BR.click, clickProxy)
+    }
+
+    override fun getDataFromIntent(intent: Intent) {
+        mMobilePhone = intent.getStringExtra("phone")
+        clickProxy.mMobilePhoneLD.value = mMobilePhone
+    }
+
+    override fun startObserve() {
+
+    }
+
+    override fun init(savedInstanceState: Bundle?) {
+
+        initListener()
+    }
+
+    private fun initListener() {
+
+        mBinding.editTextFirstCode.setOnKeyListener(this)
+        mBinding.editTextSecondCode.setOnKeyListener(this)
+        mBinding.editTextThirdCode.setOnKeyListener(this)
+        mBinding.editTextFourthCode.setOnKeyListener(this)
+        mBinding.editTextFifthCode.setOnKeyListener(this)
+        mBinding.editTextSixthCode.setOnKeyListener(this)
+
+        //默认展示第一个
+        mBinding.editTextFirstCode.isFocusable = true
+        mBinding.editTextFirstCode.isFocusableInTouchMode = true
+        setFocusedBackground(mBinding.frameFirstCode)
+        CommUtils.getHandler().postDelayed({
+            KeyboardUtils.openSoftKeyboard(mActivity, mBinding.editTextHidden)
+        }, 250)
+
+    }
+
+    private fun setFocusedBackground(frameLayout: FrameLayout) {
+        setViewBackground(frameLayout, R.drawable.white_input_finish)
+    }
+
+    private fun setDefaultBackground(frameLayout: FrameLayout) {
+        setViewBackground(frameLayout, R.drawable.white_input_field)
+    }
+
+    private fun setViewBackground(frameLayout: FrameLayout, resource: Int) {
+        if (resource == 0) return
+        frameLayout.background = ContextCompat.getDrawable(mContext, resource)
+    }
+
+    private fun setFocus(editText: EditText?) {
+        if (editText == null) return
+        editText.isFocusable = true
+        editText.isFocusableInTouchMode = true
+        editText.requestFocus()
+        editText.setSelection(editText.text.length)
+    }
+
+    /**
+     * 检查焦点
+     */
+    fun checkFocus(view: View) {
+        when (view.id) {
+            R.id.edit_text_first_code -> {
+                setFocusedBackground(mBinding.frameFirstCode)
+                setFocus(mBinding.editTextHidden)
+                KeyboardUtils.showKeyboard(mActivity)
+            }
+            R.id.edit_text_second_code -> {
+                setFocus(mBinding.editTextHidden)
+                KeyboardUtils.showKeyboard(mActivity)
+            }
+            R.id.edit_text_third_code -> {
+                setFocus(mBinding.editTextHidden)
+                KeyboardUtils.showKeyboard(mActivity)
+            }
+            R.id.edit_text_fourth_code -> {
+                setFocus(mBinding.editTextHidden)
+                KeyboardUtils.showKeyboard(mActivity)
+            }
+            R.id.edit_text_fifth_code -> {
+                setFocus(mBinding.editTextHidden)
+                KeyboardUtils.showKeyboard(mActivity)
+            }
+            R.id.edit_text_sixth_code -> {
+                setFocus(mBinding.editTextHidden)
+                KeyboardUtils.showKeyboard(mActivity)
+            }
+
+        }
+    }
+
+    /**
+     * 展示在顶部的Top
+     */
+    private fun showFramCode(charSequence: String) {
+
+        if (charSequence.isEmpty()) {
+            setFocusedBackground(mBinding.frameFirstCode)
+            setDefaultBackground(mBinding.frameSecondCode)
+            setDefaultBackground(mBinding.frameThirdCode)
+            setDefaultBackground(mBinding.frameFourthCode)
+            setDefaultBackground(mBinding.frameFifthCode)
+            setDefaultBackground(mBinding.frameSixthCode)
+            mBinding.editTextFirstCode.setText("")
+        } else if (charSequence.length == 1) {
+            setFocusedBackground(mBinding.frameFirstCode)
+            setFocusedBackground(mBinding.frameSecondCode)
+            setDefaultBackground(mBinding.frameThirdCode)
+            setDefaultBackground(mBinding.frameFourthCode)
+            setDefaultBackground(mBinding.frameFifthCode)
+            setDefaultBackground(mBinding.frameSixthCode)
+            mBinding.editTextFirstCode.setText(charSequence[0].toString())
+            mBinding.editTextSecondCode.setText("")
+            mBinding.editTextThirdCode.setText("")
+            mBinding.editTextFourthCode.setText("")
+            mBinding.editTextFifthCode.setText("")
+            mBinding.editTextSixthCode.setText("")
+        } else if (charSequence.length == 2) {
+            setFocusedBackground(mBinding.frameFirstCode)
+            setFocusedBackground(mBinding.frameSecondCode)
+            setFocusedBackground(mBinding.frameThirdCode)
+            setDefaultBackground(mBinding.frameFourthCode)
+            setDefaultBackground(mBinding.frameFifthCode)
+            setDefaultBackground(mBinding.frameSixthCode)
+            mBinding.editTextSecondCode.setText(charSequence[1].toString())
+            mBinding.editTextThirdCode.setText("")
+            mBinding.editTextFourthCode.setText("")
+            mBinding.editTextFifthCode.setText("")
+            mBinding.editTextSixthCode.setText("")
+        } else if (charSequence.length == 3) {
+            setFocusedBackground(mBinding.frameFirstCode)
+            setFocusedBackground(mBinding.frameSecondCode)
+            setFocusedBackground(mBinding.frameThirdCode)
+            setFocusedBackground(mBinding.frameFourthCode)
+            setDefaultBackground(mBinding.frameFifthCode)
+            setDefaultBackground(mBinding.frameSixthCode)
+            mBinding.editTextThirdCode.setText(charSequence[2].toString())
+            mBinding.editTextFourthCode.setText("")
+            mBinding.editTextFifthCode.setText("")
+            mBinding.editTextSixthCode.setText("")
+        } else if (charSequence.length == 4) {
+            setFocusedBackground(mBinding.frameFirstCode)
+            setFocusedBackground(mBinding.frameSecondCode)
+            setFocusedBackground(mBinding.frameThirdCode)
+            setFocusedBackground(mBinding.frameFourthCode)
+            setFocusedBackground(mBinding.frameFifthCode)
+            setDefaultBackground(mBinding.frameSixthCode)
+            mBinding.editTextFourthCode.setText(charSequence[3].toString())
+            mBinding.editTextFifthCode.setText("")
+            mBinding.editTextSixthCode.setText("")
+        } else if (charSequence.length == 5) {
+            setFocusedBackground(mBinding.frameFirstCode)
+            setFocusedBackground(mBinding.frameSecondCode)
+            setFocusedBackground(mBinding.frameThirdCode)
+            setFocusedBackground(mBinding.frameFourthCode)
+            setFocusedBackground(mBinding.frameFifthCode)
+            setFocusedBackground(mBinding.frameSixthCode)
+            mBinding.editTextFifthCode.setText(charSequence[4].toString())
+            mBinding.editTextSixthCode.setText("")
+        } else if (charSequence.length == 6) {
+            setFocusedBackground(mBinding.frameFirstCode)
+            setFocusedBackground(mBinding.frameSecondCode)
+            setFocusedBackground(mBinding.frameThirdCode)
+            setFocusedBackground(mBinding.frameFourthCode)
+            setFocusedBackground(mBinding.frameFifthCode)
+            setFocusedBackground(mBinding.frameSixthCode)
+            mBinding.editTextSixthCode.setText(charSequence[5].toString())
+            KeyboardUtils.closeSoftKeyboard(mBinding.editTextSixthCode)
+
+            val code: String = mBinding.editTextHidden.text.toString()
+
+            if (!CheckUtil.isEmpty(code)) {
+                verifyCode(code)
+            }
+        }
+    }
+
+    /**
+     * 键盘监听
+     */
+    override fun onKey(view: View?, keyCode: Int, event: KeyEvent?): Boolean {
+        if (event?.action == KeyEvent.ACTION_DOWN) {
+            val id = view?.id
+            if (id == R.id.edit_text_hidden) {
+                if (keyCode == KeyEvent.KEYCODE_DEL) {
+                    when (mBinding.editTextHidden.text.length) {
+                        6 -> {
+                            mBinding.editTextSixthCode.setText("")
+                        }
+                        5 -> {
+                            mBinding.editTextFifthCode.setText("")
+                        }
+                        4 -> {
+                            mBinding.editTextFourthCode.setText("")
+                        }
+                        3 -> {
+                            mBinding.editTextThirdCode.setText("")
+                        }
+                        2 -> {
+                            mBinding.editTextSecondCode.setText("")
+                        }
+                        1 -> {
+                            mBinding.editTextFirstCode.setText("")
+                        }
+                    }
+
+                    if (mBinding.editTextHidden.length() > 0) {
+                        mBinding.editTextHidden.setText(mBinding.editTextHidden.text.subSequence(0, mBinding.editTextHidden.length() - 1))
+                        mBinding.editTextHidden.setSelection(mBinding.editTextHidden.text.length)
+                    }
+
+                    return true
+                }
+            }
+        }
+        return false
+    }
+
+    /**
+     * 检测验证码
+     */
+    private fun verifyCode(code: String) {
+        showStateProgress()
+
+        if (mSMSService == null) {
+            mSMSService = YYRouterService.appComponentServer?.initSMS()
+        }
+
+        mSMSService?.verifySMSCode(mActivity, code) { isSuccess ->
+            hideStateProgress()
+            if (isSuccess) {
+                verifySuccess()
+            }
+        }
+    }
+
+    //检测成功之后的跳转
+    private fun verifySuccess() {
+        ResetPasswordActivity.startInstance(isFromBusiness = false, isForgort = true)
+    }
+
+    /**
+     * DataBinding事件处理
+     */
+    inner class ClickProxy {
+
+        //被验证的电话号码
+        val mMobilePhoneLD: MutableLiveData<String> = MutableLiveData()
+
+        //重新发送
+        fun resendCode() {
+            if (mSMSService == null) {
+                mSMSService = YYRouterService.appComponentServer?.initSMS()
+            }
+
+            showStateProgress()
+            mSMSService?.sendSMSCode(mActivity, mMobilePhone ?: "",
+                sendAction = { isSuccess ->
+                    hideStateProgress()
+                    if (isSuccess) {
+                        toast("Send Success!")
+                    }
+                }, verifyAction = { isSuccess ->
+                    if (isSuccess) {
+                        verifySuccess()
+                    }
+                })
+
+        }
+
+        //获取焦点的监听
+        val onFocusGet: (textView: TextView) -> Unit = {
+            checkFocus(it)
+        }
+
+        val onTextChange: (str: String) -> Unit = {
+            showFramCode(it)
+        }
+
+    }
+
+
+}

+ 92 - 0
cpt_auths/src/main/java/com/hongyegroup/cpt_auths/ui/PensonalLoginActivity.kt

@@ -0,0 +1,92 @@
+package com.hongyegroup.cpt_auths.ui
+
+import android.content.Intent
+import android.os.Bundle
+import android.view.View
+import androidx.lifecycle.MutableLiveData
+import com.guadou.cs_cptservices.base.activity.YYBaseVDBActivity
+import com.guadou.cs_router.YYRouterService
+import com.guadou.lib_baselib.bean.DataBindingConfig
+import com.guadou.lib_baselib.ext.toast
+import com.guadou.lib_baselib.utils.ActivityManage
+import com.guadou.lib_baselib.utils.CommUtils
+import com.guadou.lib_baselib.utils.KeyboardUtils
+import com.guadou.lib_baselib.utils.StatusBarUtils
+import com.hongyegroup.cpt_auths.BR
+import com.hongyegroup.cpt_auths.R
+import com.hongyegroup.cpt_auths.databinding.ActivityPensonalLoginBinding
+import com.hongyegroup.cpt_auths.mvvm.vm.PensonalLoginViewModel
+
+/**
+ * 用户的登录页面
+ */
+class PensonalLoginActivity : YYBaseVDBActivity<PensonalLoginViewModel, ActivityPensonalLoginBinding>() {
+
+    companion object {
+        fun startInstance() {
+            val context = CommUtils.getContext()
+            val intent = Intent(context, PensonalLoginActivity::class.java)
+            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+            context.startActivity(intent)
+        }
+    }
+
+    override fun getDataBindingConfig(): DataBindingConfig {
+        return DataBindingConfig(R.layout.activity_pensonal_login, BR.viewModel, mViewModel)
+            .addBindingParams(BR.click, ClickProxy())
+    }
+
+    override fun startObserve() {
+
+    }
+
+    override fun init(savedInstanceState: Bundle?) {
+        StatusBarUtils.immersive(this)
+
+    }
+
+    /**
+     * DataBinding事件处理
+     */
+    inner class ClickProxy {
+
+        //电话号码
+        val mMobilePhoneStr: MutableLiveData<String> = MutableLiveData()
+
+        //密码
+        val mPasswordStr: MutableLiveData<String> = MutableLiveData()
+
+        //选择手机区号
+        fun selectCountCode(view: View) {
+            KeyboardUtils.hideSoftInput(mActivity)
+            mViewModel.showCountryCodePopup(view, mActivity)
+        }
+
+        //返回按钮
+        fun backPage() {
+            finish()
+        }
+
+        //执行登录
+        fun doLogin() {
+            KeyboardUtils.hideSoftInput(mActivity)
+            toast("执行登录:账号" + mViewModel.mMobileCodeLiveData.value + mMobilePhoneStr.value + " 密码:" + mPasswordStr.value)
+            YYRouterService.pensonalComponentServer?.startPensonalMainActivity()
+            ActivityManage.finishAllActivity()
+        }
+
+        //去忘记密码页面
+        fun gotoForgotPasswordPage() {
+            KeyboardUtils.hideSoftInput(mActivity)
+            PensonalForgotPsdMobileActivity.startInstance()
+        }
+
+        //去登录页面
+        fun gotoSignUpPage() {
+            KeyboardUtils.hideSoftInput(mActivity)
+            PensonalSignupInputActivity.startInstance()
+        }
+
+    }
+
+}

+ 77 - 0
cpt_auths/src/main/java/com/hongyegroup/cpt_auths/ui/PensonalSignupInputActivity.kt

@@ -0,0 +1,77 @@
+package com.hongyegroup.cpt_auths.ui
+
+import android.content.Intent
+import android.os.Bundle
+import android.view.View
+import androidx.lifecycle.MutableLiveData
+import com.guadou.cs_cptservices.base.activity.YYBaseVDBActivity
+import com.guadou.lib_baselib.bean.DataBindingConfig
+import com.guadou.lib_baselib.utils.CommUtils
+import com.guadou.lib_baselib.utils.KeyboardUtils
+import com.hongyegroup.cpt_auths.BR
+import com.hongyegroup.cpt_auths.R
+import com.hongyegroup.cpt_auths.databinding.ActivityPensonalSignupVerityBinding
+import com.hongyegroup.cpt_auths.mvvm.vm.PensonalSignUpInputViewModel
+
+/**
+ * 用户注册的校验页面
+ */
+class PensonalSignupInputActivity : YYBaseVDBActivity<PensonalSignUpInputViewModel, ActivityPensonalSignupVerityBinding>() {
+
+    companion object {
+        fun startInstance() {
+            val context = CommUtils.getContext()
+            val intent = Intent(context, PensonalSignupInputActivity::class.java)
+            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+            context.startActivity(intent)
+        }
+    }
+
+    override fun getDataBindingConfig(): DataBindingConfig {
+        return DataBindingConfig(R.layout.activity_pensonal_signup_input, BR.viewModel, mViewModel)
+            .addBindingParams(BR.click, ClickProxy())
+    }
+
+    override fun startObserve() {
+
+    }
+
+    override fun init(savedInstanceState: Bundle?) {
+
+    }
+
+    /**
+     * DataBinding事件处理
+     */
+    inner class ClickProxy {
+
+        //电话号码
+        val mMobilePhoneLD: MutableLiveData<String> = MutableLiveData()
+
+        //全名
+        val mFullNameLD: MutableLiveData<String> = MutableLiveData()
+
+        //身份证
+        val mNRICLD: MutableLiveData<String> = MutableLiveData()
+
+        //密码
+        val mPasswordLD: MutableLiveData<String> = MutableLiveData()
+
+        //确认密码
+        val mConfirmPsdLD: MutableLiveData<String> = MutableLiveData()
+
+        //选择手机区号
+        fun selectCountCode(view: View) {
+            KeyboardUtils.hideSoftInput(mActivity)
+            mViewModel.showCountryCodePopup(view, mActivity)
+        }
+
+        //执行登录校验
+        fun doSignUp() {
+            KeyboardUtils.hideSoftInput(mActivity)
+            PensonalSignupVerifyActivity.startInstance("+86 1234567890")
+        }
+
+    }
+
+}

+ 327 - 0
cpt_auths/src/main/java/com/hongyegroup/cpt_auths/ui/PensonalSignupVerifyActivity.kt

@@ -0,0 +1,327 @@
+package com.hongyegroup.cpt_auths.ui
+
+import android.content.Intent
+import android.os.Bundle
+import android.view.KeyEvent
+import android.view.View
+import android.widget.EditText
+import android.widget.FrameLayout
+import android.widget.TextView
+import androidx.core.content.ContextCompat
+import androidx.lifecycle.MutableLiveData
+import com.guadou.cs_cptservices.base.activity.YYBaseVDBActivity
+import com.guadou.cs_router.YYRouterService
+import com.guadou.cs_router.app.IAppComponentServer
+import com.guadou.lib_baselib.base.vm.EmptyViewModel
+import com.guadou.lib_baselib.bean.DataBindingConfig
+import com.guadou.lib_baselib.ext.toast
+import com.guadou.lib_baselib.utils.CheckUtil
+import com.guadou.lib_baselib.utils.CommUtils
+import com.guadou.lib_baselib.utils.KeyboardUtils
+import com.hongyegroup.cpt_auths.BR
+import com.hongyegroup.cpt_auths.R
+import com.hongyegroup.cpt_auths.databinding.ActivityPensonalSignupVerityBinding
+
+/**
+ * 用户注册的校验页面
+ */
+class PensonalSignupVerifyActivity : YYBaseVDBActivity<EmptyViewModel, ActivityPensonalSignupVerityBinding>(), View.OnKeyListener {
+
+    private var mSMSService: IAppComponentServer? = null
+    private var mMobilePhone: String? = null
+    private val clickProxy by lazy { ClickProxy() }
+
+    companion object {
+        fun startInstance(phone: String?) {
+            val context = CommUtils.getContext()
+            val intent = Intent(context, PensonalSignupVerifyActivity::class.java)
+            intent.putExtra("phone", phone)
+            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+            context.startActivity(intent)
+        }
+    }
+
+    override fun getDataBindingConfig(): DataBindingConfig {
+        return DataBindingConfig(R.layout.activity_pensonal_signup_verity)
+            .addBindingParams(BR.click, clickProxy)
+    }
+
+    override fun getDataFromIntent(intent: Intent) {
+        mMobilePhone = intent.getStringExtra("phone")
+        clickProxy.mMobilePhoneLD.value = mMobilePhone
+    }
+
+    override fun startObserve() {
+
+    }
+
+    override fun init(savedInstanceState: Bundle?) {
+
+        initListener()
+    }
+
+    private fun initListener() {
+
+        mBinding.editTextFirstCode.setOnKeyListener(this)
+        mBinding.editTextSecondCode.setOnKeyListener(this)
+        mBinding.editTextThirdCode.setOnKeyListener(this)
+        mBinding.editTextFourthCode.setOnKeyListener(this)
+        mBinding.editTextFifthCode.setOnKeyListener(this)
+        mBinding.editTextSixthCode.setOnKeyListener(this)
+
+        //默认展示第一个
+        mBinding.editTextFirstCode.isFocusable = true
+        mBinding.editTextFirstCode.isFocusableInTouchMode = true
+        setFocusedBackground(mBinding.frameFirstCode)
+        CommUtils.getHandler().postDelayed({
+            KeyboardUtils.openSoftKeyboard(mActivity, mBinding.editTextHidden)
+        }, 250)
+
+    }
+
+    private fun setFocusedBackground(frameLayout: FrameLayout) {
+        setViewBackground(frameLayout, R.drawable.white_input_finish)
+    }
+
+    private fun setDefaultBackground(frameLayout: FrameLayout) {
+        setViewBackground(frameLayout, R.drawable.white_input_field)
+    }
+
+    private fun setViewBackground(frameLayout: FrameLayout, resource: Int) {
+        if (resource == 0) return
+        frameLayout.background = ContextCompat.getDrawable(mContext, resource)
+    }
+
+    private fun setFocus(editText: EditText?) {
+        if (editText == null) return
+        editText.isFocusable = true
+        editText.isFocusableInTouchMode = true
+        editText.requestFocus()
+        editText.setSelection(editText.text.length)
+    }
+
+    /**
+     * 检查焦点
+     */
+    fun checkFocus(view: View) {
+        when (view.id) {
+            R.id.edit_text_first_code -> {
+                setFocusedBackground(mBinding.frameFirstCode)
+                setFocus(mBinding.editTextHidden)
+                KeyboardUtils.showKeyboard(mActivity)
+            }
+            R.id.edit_text_second_code -> {
+                setFocus(mBinding.editTextHidden)
+                KeyboardUtils.showKeyboard(mActivity)
+            }
+            R.id.edit_text_third_code -> {
+                setFocus(mBinding.editTextHidden)
+                KeyboardUtils.showKeyboard(mActivity)
+            }
+            R.id.edit_text_fourth_code -> {
+                setFocus(mBinding.editTextHidden)
+                KeyboardUtils.showKeyboard(mActivity)
+            }
+            R.id.edit_text_fifth_code -> {
+                setFocus(mBinding.editTextHidden)
+                KeyboardUtils.showKeyboard(mActivity)
+            }
+            R.id.edit_text_sixth_code -> {
+                setFocus(mBinding.editTextHidden)
+                KeyboardUtils.showKeyboard(mActivity)
+            }
+
+        }
+    }
+
+    /**
+     * 展示在顶部的Top
+     */
+    private fun showFramCode(charSequence: String) {
+
+        if (charSequence.isEmpty()) {
+            setFocusedBackground(mBinding.frameFirstCode)
+            setDefaultBackground(mBinding.frameSecondCode)
+            setDefaultBackground(mBinding.frameThirdCode)
+            setDefaultBackground(mBinding.frameFourthCode)
+            setDefaultBackground(mBinding.frameFifthCode)
+            setDefaultBackground(mBinding.frameSixthCode)
+            mBinding.editTextFirstCode.setText("")
+        } else if (charSequence.length == 1) {
+            setFocusedBackground(mBinding.frameFirstCode)
+            setFocusedBackground(mBinding.frameSecondCode)
+            setDefaultBackground(mBinding.frameThirdCode)
+            setDefaultBackground(mBinding.frameFourthCode)
+            setDefaultBackground(mBinding.frameFifthCode)
+            setDefaultBackground(mBinding.frameSixthCode)
+            mBinding.editTextFirstCode.setText(charSequence[0].toString())
+            mBinding.editTextSecondCode.setText("")
+            mBinding.editTextThirdCode.setText("")
+            mBinding.editTextFourthCode.setText("")
+            mBinding.editTextFifthCode.setText("")
+            mBinding.editTextSixthCode.setText("")
+        } else if (charSequence.length == 2) {
+            setFocusedBackground(mBinding.frameFirstCode)
+            setFocusedBackground(mBinding.frameSecondCode)
+            setFocusedBackground(mBinding.frameThirdCode)
+            setDefaultBackground(mBinding.frameFourthCode)
+            setDefaultBackground(mBinding.frameFifthCode)
+            setDefaultBackground(mBinding.frameSixthCode)
+            mBinding.editTextSecondCode.setText(charSequence[1].toString())
+            mBinding.editTextThirdCode.setText("")
+            mBinding.editTextFourthCode.setText("")
+            mBinding.editTextFifthCode.setText("")
+            mBinding.editTextSixthCode.setText("")
+        } else if (charSequence.length == 3) {
+            setFocusedBackground(mBinding.frameFirstCode)
+            setFocusedBackground(mBinding.frameSecondCode)
+            setFocusedBackground(mBinding.frameThirdCode)
+            setFocusedBackground(mBinding.frameFourthCode)
+            setDefaultBackground(mBinding.frameFifthCode)
+            setDefaultBackground(mBinding.frameSixthCode)
+            mBinding.editTextThirdCode.setText(charSequence[2].toString())
+            mBinding.editTextFourthCode.setText("")
+            mBinding.editTextFifthCode.setText("")
+            mBinding.editTextSixthCode.setText("")
+        } else if (charSequence.length == 4) {
+            setFocusedBackground(mBinding.frameFirstCode)
+            setFocusedBackground(mBinding.frameSecondCode)
+            setFocusedBackground(mBinding.frameThirdCode)
+            setFocusedBackground(mBinding.frameFourthCode)
+            setFocusedBackground(mBinding.frameFifthCode)
+            setDefaultBackground(mBinding.frameSixthCode)
+            mBinding.editTextFourthCode.setText(charSequence[3].toString())
+            mBinding.editTextFifthCode.setText("")
+            mBinding.editTextSixthCode.setText("")
+        } else if (charSequence.length == 5) {
+            setFocusedBackground(mBinding.frameFirstCode)
+            setFocusedBackground(mBinding.frameSecondCode)
+            setFocusedBackground(mBinding.frameThirdCode)
+            setFocusedBackground(mBinding.frameFourthCode)
+            setFocusedBackground(mBinding.frameFifthCode)
+            setFocusedBackground(mBinding.frameSixthCode)
+            mBinding.editTextFifthCode.setText(charSequence[4].toString())
+            mBinding.editTextSixthCode.setText("")
+        } else if (charSequence.length == 6) {
+            setFocusedBackground(mBinding.frameFirstCode)
+            setFocusedBackground(mBinding.frameSecondCode)
+            setFocusedBackground(mBinding.frameThirdCode)
+            setFocusedBackground(mBinding.frameFourthCode)
+            setFocusedBackground(mBinding.frameFifthCode)
+            setFocusedBackground(mBinding.frameSixthCode)
+            mBinding.editTextSixthCode.setText(charSequence[5].toString())
+            KeyboardUtils.closeSoftKeyboard(mBinding.editTextSixthCode)
+
+            val code: String = mBinding.editTextHidden.text.toString()
+
+            if (!CheckUtil.isEmpty(code)) {
+                verifyCode(code)
+            }
+        }
+    }
+
+    /**
+     * 键盘监听
+     */
+    override fun onKey(view: View?, keyCode: Int, event: KeyEvent?): Boolean {
+        if (event?.action == KeyEvent.ACTION_DOWN) {
+            val id = view?.id
+            if (id == R.id.edit_text_hidden) {
+                if (keyCode == KeyEvent.KEYCODE_DEL) {
+                    when (mBinding.editTextHidden.text.length) {
+                        6 -> {
+                            mBinding.editTextSixthCode.setText("")
+                        }
+                        5 -> {
+                            mBinding.editTextFifthCode.setText("")
+                        }
+                        4 -> {
+                            mBinding.editTextFourthCode.setText("")
+                        }
+                        3 -> {
+                            mBinding.editTextThirdCode.setText("")
+                        }
+                        2 -> {
+                            mBinding.editTextSecondCode.setText("")
+                        }
+                        1 -> {
+                            mBinding.editTextFirstCode.setText("")
+                        }
+                    }
+
+                    if (mBinding.editTextHidden.length() > 0) {
+                        mBinding.editTextHidden.setText(mBinding.editTextHidden.text.subSequence(0, mBinding.editTextHidden.length() - 1))
+                        mBinding.editTextHidden.setSelection(mBinding.editTextHidden.text.length)
+                    }
+
+                    return true
+                }
+            }
+        }
+        return false
+    }
+
+    /**
+     * 检测验证码
+     */
+    private fun verifyCode(code: String) {
+        showStateProgress()
+
+        if (mSMSService == null) {
+            mSMSService = YYRouterService.appComponentServer?.initSMS()
+        }
+
+        mSMSService?.verifySMSCode(mActivity, code) { isSuccess ->
+            hideStateProgress()
+            if (isSuccess) {
+                verifySuccess()
+            }
+        }
+    }
+
+    //检测成功之后的跳转
+    private fun verifySuccess() {
+        toast("检车成功")
+    }
+
+    /**
+     * DataBinding事件处理
+     */
+    inner class ClickProxy {
+
+        //被验证的电话号码
+        val mMobilePhoneLD: MutableLiveData<String> = MutableLiveData()
+
+        //重新发送
+        fun resendCode() {
+            if (mSMSService == null) {
+                mSMSService = YYRouterService.appComponentServer?.initSMS()
+            }
+
+            showStateProgress()
+            mSMSService?.sendSMSCode(mActivity, mMobilePhone ?: "",
+                sendAction = { isSuccess ->
+                    hideStateProgress()
+                    if (isSuccess) {
+                        toast("Send Success!")
+                    }
+                }, verifyAction = { isSuccess ->
+                    if (isSuccess) {
+                        verifySuccess()
+                    }
+                })
+
+        }
+
+        //获取焦点的监听
+        val onFocusGet: (textView: TextView) -> Unit = {
+            checkFocus(it)
+        }
+
+        val onTextChange: (str: String) -> Unit = {
+            showFramCode(it)
+        }
+
+    }
+
+}

+ 93 - 0
cpt_auths/src/main/java/com/hongyegroup/cpt_auths/ui/ResetPasswordActivity.kt

@@ -0,0 +1,93 @@
+package com.hongyegroup.cpt_auths.ui
+
+import android.content.Intent
+import android.os.Bundle
+import androidx.lifecycle.MutableLiveData
+import com.guadou.cs_cptservices.base.activity.YYBaseVDBActivity
+import com.guadou.lib_baselib.base.vm.EmptyViewModel
+import com.guadou.lib_baselib.bean.DataBindingConfig
+import com.guadou.lib_baselib.utils.CommUtils
+import com.guadou.lib_baselib.utils.KeyboardUtils
+import com.hongyegroup.cpt_auths.BR
+import com.hongyegroup.cpt_auths.R
+import com.hongyegroup.cpt_auths.databinding.ActivityResetPasswordBinding
+
+/**
+ * 公用的页面 重置密码
+ * 输入旧密码,新密码 更换密码
+ * 输入新密码  忘记密码
+ */
+class ResetPasswordActivity : YYBaseVDBActivity<EmptyViewModel, ActivityResetPasswordBinding>() {
+
+    private var isFromBusiness: Boolean = false
+    private var isForgort: Boolean = false
+    private val clickProxy by lazy { ClickProxy() }
+
+    companion object {
+        fun startInstance(isFromBusiness: Boolean, isForgort: Boolean) {
+            val context = CommUtils.getContext()
+            val intent = Intent(context, ResetPasswordActivity::class.java)
+            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+            intent.putExtra("isFromBusiness", isFromBusiness)
+            intent.putExtra("isForgort", isForgort)
+            context.startActivity(intent)
+        }
+    }
+
+    override fun getDataBindingConfig(): DataBindingConfig {
+        return DataBindingConfig(R.layout.activity_reset_password)
+            .addBindingParams(BR.click, clickProxy)
+    }
+
+    override fun getDataFromIntent(intent: Intent) {
+        this.isFromBusiness = intent.getBooleanExtra("isFromBusiness", false)
+        this.isForgort = intent.getBooleanExtra("isForgort", false)
+
+        clickProxy.isShowOldBoxLD.value = !isForgort
+    }
+
+    override fun startObserve() {
+
+    }
+
+    override fun init(savedInstanceState: Bundle?) {
+
+    }
+
+    /**
+     * DataBinding事件处理
+     */
+    inner class ClickProxy {
+
+        //是否展示旧密码
+        val isShowOldBoxLD: MutableLiveData<Boolean> = MutableLiveData()
+
+        //旧密码
+        val mOldPasswordLD: MutableLiveData<String> = MutableLiveData()
+
+        //密码
+        val mNewPasswordLD: MutableLiveData<String> = MutableLiveData()
+
+        //确认密码
+        val mConfirmPsdLD: MutableLiveData<String> = MutableLiveData()
+
+
+        //执行登录校验
+        fun doSubmit() {
+            KeyboardUtils.hideSoftInput(mActivity)
+
+            if (isForgort) {
+                if (isFromBusiness) {
+                    BusinessLoginActivity.startInstance()
+                } else {
+                    PensonalLoginActivity.startInstance()
+                }
+            } else {
+                finish()
+            }
+
+        }
+
+    }
+
+}

+ 63 - 0
cpt_auths/src/main/java/com/hongyegroup/cpt_auths/widget/CountyCodePopup.kt

@@ -0,0 +1,63 @@
+package com.hongyegroup.cpt_auths.widget
+
+import android.annotation.SuppressLint
+import android.app.Activity
+import android.view.View
+import androidx.recyclerview.widget.RecyclerView
+import com.hongyegroup.cpt_auths.R
+import com.lxj.easyadapter.EasyAdapter
+import com.lxj.easyadapter.MultiItemTypeAdapter
+import com.lxj.easyadapter.ViewHolder
+import com.lxj.xpopup.core.AttachPopupView
+import com.lxj.xpopup.interfaces.OnSelectListener
+import com.lxj.xpopup.widget.VerticalRecyclerView
+
+/**
+ * 依附下拉选-选择国家区号
+ */
+@SuppressLint("ViewConstructor")
+class CountyCodePopup(
+    activity: Activity, private val view: View, private val rvHeight: Int,
+    private val list: List<String>, private val selectListener: OnSelectListener?
+) : AttachPopupView(activity) {
+
+    private lateinit var recyclerView: RecyclerView
+
+    override fun getImplLayoutId(): Int {
+        return R.layout.popup_county_code_list
+    }
+
+    override fun onCreate() {
+        super.onCreate()
+
+        recyclerView = findViewById(R.id.recyclerView)
+        val layoutParams = recyclerView.layoutParams
+        layoutParams.width = view.width
+        layoutParams.height = rvHeight
+        recyclerView.layoutParams = layoutParams
+
+        val adapter: EasyAdapter<String> = object : EasyAdapter<String>(list, R.layout.item_popup_count_code) {
+            override fun bind(holder: ViewHolder, t: String, position: Int) {
+                holder.setText(R.id.tv_text, t)
+            }
+        }
+        adapter.setOnItemClickListener(object : MultiItemTypeAdapter.SimpleOnItemClickListener() {
+            override fun onItemClick(view: View, holder: RecyclerView.ViewHolder, position: Int) {
+
+                selectListener?.onSelect(position, adapter.data[position])
+
+                if (popupInfo.autoDismiss) {
+                    dismiss()
+                }
+            }
+        })
+
+        recyclerView.adapter = adapter
+        (recyclerView as VerticalRecyclerView).setupDivider(false)
+    }
+
+    override fun getPopupWidth(): Int {
+        return view.width
+    }
+
+}

BIN
cpt_auths/src/main/res/drawable-hdpi/business_login_top_bg.webp


BIN
cpt_auths/src/main/res/drawable-hdpi/choose_role_left_bottom.webp


BIN
cpt_auths/src/main/res/drawable-hdpi/choose_role_right_bottom.webp


BIN
cpt_auths/src/main/res/drawable-hdpi/choose_role_top_img.webp


BIN
cpt_auths/src/main/res/drawable-hdpi/forgot_email_icon.webp


BIN
cpt_auths/src/main/res/drawable-hdpi/forgot_phone_icon.webp


BIN
cpt_auths/src/main/res/drawable-hdpi/login_email_icon.webp


BIN
cpt_auths/src/main/res/drawable-hdpi/login_mobile_drop_down_icon.webp


BIN
cpt_auths/src/main/res/drawable-hdpi/login_mobile_icon.webp


BIN
cpt_auths/src/main/res/drawable-hdpi/login_password_icon.webp


BIN
cpt_auths/src/main/res/drawable-hdpi/personal_login_bottom_bg.webp


BIN
cpt_auths/src/main/res/drawable-hdpi/personal_login_top_bg.webp


BIN
cpt_auths/src/main/res/drawable-hdpi/reset_confirm_password_.webp


BIN
cpt_auths/src/main/res/drawable-hdpi/reset_new_password.webp


BIN
cpt_auths/src/main/res/drawable-hdpi/reset_old_password.webp


BIN
cpt_auths/src/main/res/drawable-hdpi/signup_top_img.webp


BIN
cpt_auths/src/main/res/drawable-xhdpi/business_login_top_bg.webp


BIN
cpt_auths/src/main/res/drawable-xhdpi/choose_role_left_bottom.webp


BIN
cpt_auths/src/main/res/drawable-xhdpi/choose_role_right_bottom.webp


BIN
cpt_auths/src/main/res/drawable-xhdpi/choose_role_top_img.webp


BIN
cpt_auths/src/main/res/drawable-xhdpi/forgot_email_icon.webp


BIN
cpt_auths/src/main/res/drawable-xhdpi/forgot_phone_icon.webp


BIN
cpt_auths/src/main/res/drawable-xhdpi/login_email_icon.webp


BIN
cpt_auths/src/main/res/drawable-xhdpi/login_mobile_drop_down_icon.webp


BIN
cpt_auths/src/main/res/drawable-xhdpi/login_mobile_icon.webp


BIN
cpt_auths/src/main/res/drawable-xhdpi/login_password_icon.webp


BIN
cpt_auths/src/main/res/drawable-xhdpi/personal_login_bottom_bg.webp


BIN
cpt_auths/src/main/res/drawable-xhdpi/personal_login_top_bg.webp


BIN
cpt_auths/src/main/res/drawable-xhdpi/reset_confirm_password_.webp


BIN
cpt_auths/src/main/res/drawable-xhdpi/reset_new_password.webp


BIN
cpt_auths/src/main/res/drawable-xhdpi/reset_old_password.webp


BIN
cpt_auths/src/main/res/drawable-xhdpi/signup_top_img.webp


BIN
cpt_auths/src/main/res/drawable-xxhdpi/business_login_top_bg.webp


BIN
cpt_auths/src/main/res/drawable-xxhdpi/choose_role_left_bottom.webp


BIN
cpt_auths/src/main/res/drawable-xxhdpi/choose_role_right_bottom.webp


BIN
cpt_auths/src/main/res/drawable-xxhdpi/choose_role_top_img.webp


BIN
cpt_auths/src/main/res/drawable-xxhdpi/forgot_email_icon.webp


BIN
cpt_auths/src/main/res/drawable-xxhdpi/forgot_phone_icon.webp


BIN
cpt_auths/src/main/res/drawable-xxhdpi/login_email_icon.webp


BIN
cpt_auths/src/main/res/drawable-xxhdpi/login_mobile_drop_down_icon.webp


BIN
cpt_auths/src/main/res/drawable-xxhdpi/login_mobile_icon.webp


BIN
cpt_auths/src/main/res/drawable-xxhdpi/login_password_icon.webp


BIN
cpt_auths/src/main/res/drawable-xxhdpi/personal_login_bottom_bg.webp


BIN
cpt_auths/src/main/res/drawable-xxhdpi/personal_login_top_bg.webp


BIN
cpt_auths/src/main/res/drawable-xxhdpi/reset_confirm_password_.webp


BIN
cpt_auths/src/main/res/drawable-xxhdpi/reset_new_password.webp


BIN
cpt_auths/src/main/res/drawable-xxhdpi/reset_old_password.webp


BIN
cpt_auths/src/main/res/drawable-xxhdpi/signup_top_img.webp


+ 0 - 170
cpt_auths/src/main/res/drawable/ic_launcher_background.xml

@@ -1,170 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="108dp"
-    android:height="108dp"
-    android:viewportWidth="108"
-    android:viewportHeight="108">
-    <path
-        android:fillColor="#3DDC84"
-        android:pathData="M0,0h108v108h-108z" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M9,0L9,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M19,0L19,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M29,0L29,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M39,0L39,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M49,0L49,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M59,0L59,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M69,0L69,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M79,0L79,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M89,0L89,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M99,0L99,108"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,9L108,9"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,19L108,19"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,29L108,29"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,39L108,39"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,49L108,49"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,59L108,59"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,69L108,69"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,79L108,79"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,89L108,89"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M0,99L108,99"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M19,29L89,29"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M19,39L89,39"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M19,49L89,49"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M19,59L89,59"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M19,69L89,69"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M19,79L89,79"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M29,19L29,89"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M39,19L39,89"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M49,19L49,89"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M59,19L59,89"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M69,19L69,89"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M79,19L79,89"
-        android:strokeWidth="0.8"
-        android:strokeColor="#33FFFFFF" />
-</vector>

+ 118 - 0
cpt_auths/src/main/res/layout/activity_business_forgot_psd_email.xml

@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:binding="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="RtlHardcoded">
+
+    <data>
+
+        <variable
+            name="click"
+            type="com.hongyegroup.cpt_auths.ui.BusinessForgotPsdEmailActivity.ClickProxy" />
+
+    </data>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@color/page_bg"
+        android:focusable="true"
+        android:focusableInTouchMode="true"
+        android:orientation="vertical">
+
+        <com.guadou.lib_baselib.view.titlebar.EasyTitleBar
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            app:Easy_title="Forgot Password" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_marginLeft="@dimen/d_5dp"
+            android:layout_marginTop="@dimen/d_5dp"
+            android:layout_marginRight="@dimen/d_5dp"
+            android:layout_marginBottom="@dimen/d_10dp"
+            android:background="@drawable/shadow_round_gray_bg"
+            android:orientation="vertical">
+
+
+            <com.guadou.lib_baselib.font_text_view.TextViewSBold
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/d_22dp"
+                android:layout_marginTop="@dimen/d_35dp"
+                android:text="Forgot Password"
+                android:textColor="#3E4A5D"
+                android:textSize="@dimen/d_23sp" />
+
+            <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/d_22dp"
+                android:layout_marginTop="@dimen/d_22dp"
+                android:layout_marginRight="@dimen/d_80dp"
+                android:text="Please enter your email to reset your password"
+                android:textColor="#FFADB5C2"
+                android:textSize="16sp" />
+
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="43dp"
+                android:layout_marginLeft="@dimen/d_22dp"
+                android:layout_marginTop="@dimen/d_19dp"
+                android:layout_marginRight="@dimen/d_22dp"
+                android:background="@drawable/shape_input_gray_4round_bg"
+                android:gravity="center_vertical"
+                android:orientation="horizontal">
+
+                <ImageView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="@dimen/d_17dp"
+                    android:layout_marginRight="@dimen/d_17dp"
+                    android:src="@drawable/forgot_email_icon" />
+
+                <View
+                    android:layout_width="1dp"
+                    android:layout_height="match_parent"
+                    android:background="#FFD9E1ED" />
+
+                <EditText
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_marginLeft="@dimen/d_10dp"
+                    android:background="@color/transparent"
+                    android:hint="Please enter your email"
+                    android:inputType="phone"
+                    android:singleLine="true"
+                    android:text="@={click.MEmailLD}"
+                    android:textColor="@color/input_black_text"
+                    android:textColorHint="#FFA1B0BE"
+                    android:textSize="@dimen/d_15sp"
+                    binding:typefaceRegular="@{true}" />
+
+            </LinearLayout>
+
+
+            <com.guadou.lib_baselib.font_text_view.TextViewSBold
+                android:layout_width="match_parent"
+                android:layout_height="43dp"
+                android:layout_marginLeft="@dimen/d_22dp"
+                android:layout_marginTop="@dimen/d_20dp"
+                android:layout_marginRight="@dimen/d_22dp"
+                android:layout_marginBottom="@dimen/d_20dp"
+                android:background="@drawable/shape_btn_blue_3round_bg"
+                android:gravity="center"
+                android:text="Submit"
+                android:textColor="@color/white"
+                android:textSize="@dimen/d_16sp"
+                binding:clicks="@{click.doSubmit}" />
+
+
+        </LinearLayout>
+
+    </LinearLayout>
+
+</layout>

+ 36 - 0
cpt_auths/src/main/res/layout/activity_business_forgot_psd_input.xml

@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:binding="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="RtlHardcoded">
+
+    <data>
+
+        <variable
+            name="viewModel"
+            type="com.hongyegroup.cpt_auths.mvvm.AuthViewModel" />
+
+        <import type="android.text.TextUtils" />
+
+    </data>
+
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@color/white"
+        android:orientation="vertical">
+
+
+        <com.guadou.lib_baselib.font_text_view.TextViewRegular
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:gravity="center"
+            android:text="Forgot Password Input"
+            android:textSize="@dimen/d_18sp" />
+
+
+    </LinearLayout>
+
+</layout>

+ 245 - 0
cpt_auths/src/main/res/layout/activity_business_forgot_psd_verity.xml

@@ -0,0 +1,245 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:binding="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="RtlHardcoded">
+
+    <data>
+
+        <variable
+            name="click"
+            type="com.hongyegroup.cpt_auths.ui.BusinessForgotPsdVerityActivity.ClickProxy" />
+
+    </data>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@color/page_bg"
+        android:orientation="vertical">
+
+        <com.guadou.lib_baselib.view.titlebar.EasyTitleBar
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            app:Easy_title="Forgot Passowrd" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_marginLeft="@dimen/d_5dp"
+            android:layout_marginTop="@dimen/d_5dp"
+            android:layout_marginRight="@dimen/d_5dp"
+            android:layout_marginBottom="@dimen/d_10dp"
+            android:background="@drawable/shadow_round_gray_bg"
+            android:orientation="vertical">
+
+
+            <com.guadou.lib_baselib.font_text_view.TextViewSBold
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/d_22dp"
+                android:layout_marginTop="@dimen/d_35dp"
+                binding:text="@{click.MEmailLD}"
+                tools:text="+6598567878"
+                android:textColor="#3E4A5D"
+                android:textSize="@dimen/d_23sp" />
+
+            <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/d_22dp"
+                android:layout_marginTop="@dimen/d_22dp"
+                android:text="Enter the 6-digit code sent to:"
+                android:textColor="#FFADB5C2"
+                android:textSize="16sp" />
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/d_20dp"
+                android:baselineAligned="false"
+                android:focusable="true"
+                android:focusableInTouchMode="true"
+                android:gravity="center_vertical"
+                android:orientation="horizontal">
+
+                <FrameLayout
+                    android:id="@+id/frame_first_code"
+                    android:layout_width="@dimen/d_37dp"
+                    android:layout_height="@dimen/d_37dp"
+                    android:layout_marginLeft="@dimen/d_23dp"
+                    android:background="@drawable/white_input_field">
+
+                    <EditText
+                        android:id="@+id/edit_text_first_code"
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:background="@android:color/transparent"
+                        android:cursorVisible="false"
+                        android:gravity="center"
+                        android:inputType="number"
+                        android:maxLength="1"
+                        android:minEms="2"
+                        android:textColor="@color/input_blue_text"
+                        android:textSize="@dimen/d_16sp"
+                        binding:onFocusGet="@{click.onFocusGet}"
+                        binding:typefaceRegular="@{true}" />
+
+                </FrameLayout>
+
+                <FrameLayout
+                    android:id="@+id/frame_second_code"
+                    android:layout_width="@dimen/d_37dp"
+                    android:layout_height="@dimen/d_37dp"
+                    android:layout_marginLeft="@dimen/d_12dp"
+                    android:background="@drawable/white_input_field">
+
+                    <EditText
+                        android:id="@+id/edit_text_second_code"
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:background="@android:color/transparent"
+                        android:cursorVisible="false"
+                        android:gravity="center"
+                        android:inputType="number"
+                        android:maxLength="1"
+                        android:minEms="2"
+                        android:textColor="@color/input_blue_text"
+                        android:textSize="@dimen/d_16sp"
+                        binding:onFocusGet="@{click.onFocusGet}"
+                        binding:typefaceRegular="@{true}" />
+
+                </FrameLayout>
+
+                <FrameLayout
+                    android:id="@+id/frame_third_code"
+                    android:layout_width="@dimen/d_37dp"
+                    android:layout_height="@dimen/d_37dp"
+                    android:layout_marginLeft="@dimen/d_12dp"
+                    android:background="@drawable/white_input_field">
+
+                    <EditText
+                        android:id="@+id/edit_text_third_code"
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:background="@android:color/transparent"
+                        android:cursorVisible="false"
+                        android:gravity="center"
+                        android:inputType="number"
+                        android:maxLength="1"
+                        android:minEms="2"
+                        android:textColor="@color/input_blue_text"
+                        android:textSize="@dimen/d_16sp"
+                        binding:onFocusGet="@{click.onFocusGet}"
+                        binding:typefaceRegular="@{true}" />
+
+                </FrameLayout>
+
+                <FrameLayout
+                    android:id="@+id/frame_fourth_code"
+                    android:layout_width="@dimen/d_37dp"
+                    android:layout_height="@dimen/d_37dp"
+                    android:layout_marginLeft="@dimen/d_12dp"
+                    android:background="@drawable/white_input_field">
+
+                    <EditText
+                        android:id="@+id/edit_text_fourth_code"
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:background="@android:color/transparent"
+                        android:cursorVisible="false"
+                        android:gravity="center"
+                        android:inputType="number"
+                        android:maxLength="1"
+                        android:minEms="2"
+                        android:textColor="@color/input_blue_text"
+                        android:textSize="@dimen/d_16sp"
+                        binding:onFocusGet="@{click.onFocusGet}"
+                        binding:typefaceRegular="@{true}" />
+
+                </FrameLayout>
+
+                <FrameLayout
+                    android:id="@+id/frame_fifth_code"
+                    android:layout_width="@dimen/d_37dp"
+                    android:layout_height="@dimen/d_37dp"
+                    android:layout_marginLeft="@dimen/d_12dp"
+                    android:layout_marginTop="@dimen/d_10dp"
+                    android:layout_marginBottom="@dimen/d_10dp"
+                    android:background="@drawable/white_input_field">
+
+                    <EditText
+                        android:id="@+id/edit_text_fifth_code"
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:background="@android:color/transparent"
+                        android:cursorVisible="false"
+                        android:gravity="center"
+                        android:inputType="number"
+                        android:maxLength="1"
+                        android:minEms="2"
+                        android:textColor="@color/input_blue_text"
+                        android:textSize="@dimen/d_16sp"
+                        binding:onFocusGet="@{click.onFocusGet}"
+                        binding:typefaceRegular="@{true}" />
+
+                </FrameLayout>
+
+                <FrameLayout
+                    android:id="@+id/frame_sixth_code"
+                    android:layout_width="@dimen/d_37dp"
+                    android:layout_height="@dimen/d_37dp"
+                    android:layout_marginLeft="@dimen/d_12dp"
+                    android:layout_marginTop="@dimen/d_10dp"
+                    android:layout_marginBottom="@dimen/d_10dp"
+                    android:background="@drawable/white_input_field">
+
+                    <EditText
+                        android:id="@+id/edit_text_sixth_code"
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:background="@android:color/transparent"
+                        android:cursorVisible="false"
+                        android:gravity="center"
+                        android:inputType="number"
+                        android:maxLength="1"
+                        android:minEms="2"
+                        android:textColor="@color/input_blue_text"
+                        android:textSize="@dimen/d_16sp"
+                        binding:onFocusGet="@{click.onFocusGet}"
+                        binding:typefaceRegular="@{true}" />
+
+                </FrameLayout>
+
+            </LinearLayout>
+
+
+            <EditText
+                android:id="@+id/edit_text_hidden"
+                android:layout_width="@dimen/d_1dp"
+                android:layout_height="@dimen/d_1dp"
+                android:layout_gravity="center_horizontal"
+                android:background="@null"
+                android:cursorVisible="false"
+                android:gravity="center_horizontal"
+                android:inputType="number"
+                android:maxLength="6"
+                android:textColor="#00000000"
+                binding:onTextChanged="@{click.onTextChange}" />
+
+            <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/d_22dp"
+                android:layout_marginTop="@dimen/d_22dp"
+                android:text="Resend code in 00:55"
+                android:textColor="#FFADB5C2"
+                android:textSize="16sp" />
+
+        </LinearLayout>
+
+
+    </LinearLayout>
+
+</layout>

+ 177 - 0
cpt_auths/src/main/res/layout/activity_business_login.xml

@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:binding="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="RtlHardcoded">
+
+    <data>
+
+        <variable
+            name="click"
+            type="com.hongyegroup.cpt_auths.ui.BusinessLoginActivity.ClickProxy" />
+
+    </data>
+
+    <FrameLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="#3684F9">
+
+        <ImageView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_gravity="bottom"
+            android:scaleType="centerCrop"
+            android:src="@drawable/personal_login_bottom_bg" />
+
+        <ImageView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="@drawable/business_login_top_bg"
+            android:scaleType="centerCrop" />
+
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="@dimen/d_15dp"
+            android:layout_marginTop="@dimen/d_35dp"
+            android:src="@mipmap/back_black"
+            binding:clicks="@{click.backPage}" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="345dp"
+            android:layout_gravity="center"
+            android:layout_marginLeft="@dimen/d_30dp"
+            android:layout_marginRight="@dimen/d_30dp"
+            android:background="@drawable/shape_white_10round_bg"
+            android:focusable="true"
+            android:focusableInTouchMode="true"
+            android:orientation="vertical">
+
+            <com.guadou.lib_baselib.font_text_view.TextViewSBold
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:layout_marginTop="30dp"
+                android:text="Business login"
+                android:textAllCaps="true"
+                android:textColor="@color/input_blue_text"
+                android:textSize="25sp" />
+
+            <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="38dp"
+                android:layout_marginTop="@dimen/d_25dp"
+                android:text="Email"
+                android:textColor="#547395"
+                android:textSize="14sp" />
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/d_35dp"
+                android:layout_marginLeft="32dp"
+                android:layout_marginTop="@dimen/d_5dp"
+                android:layout_marginRight="32dp"
+                android:background="@drawable/shape_input_gray_4round_bg"
+                android:gravity="center_vertical"
+                android:orientation="horizontal">
+
+                <ImageView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="@dimen/d_9dp"
+                    android:src="@drawable/login_email_icon" />
+
+                <EditText
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_marginLeft="@dimen/d_15dp"
+                    android:background="@color/transparent"
+                    android:hint="Email Account"
+                    android:inputType="textEmailAddress"
+                    android:singleLine="true"
+                    android:text="@={click.MEmailLD}"
+                    android:textColor="@color/input_black_text"
+                    android:textColorHint="#FFA1B0BE"
+                    android:textSize="@dimen/d_15sp"
+                    binding:typefaceRegular="@{true}" />
+
+            </LinearLayout>
+
+            <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="38dp"
+                android:layout_marginTop="@dimen/d_18dp"
+                android:text="Password"
+                android:textColor="#547395"
+                android:textSize="14sp" />
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/d_35dp"
+                android:layout_marginLeft="32dp"
+                android:layout_marginTop="@dimen/d_5dp"
+                android:layout_marginRight="32dp"
+                android:background="@drawable/shape_input_gray_4round_bg"
+                android:gravity="center_vertical"
+                android:orientation="horizontal">
+
+                <ImageView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="@dimen/d_9dp"
+                    android:src="@drawable/login_password_icon" />
+
+                <EditText
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_marginLeft="@dimen/d_15dp"
+                    android:background="@color/transparent"
+                    android:hint="Enter Password"
+                    android:inputType="textPassword"
+                    android:singleLine="true"
+                    android:text="@={click.MPasswordLD}"
+                    android:textColor="@color/input_black_text"
+                    android:textColorHint="#FFA1B0BE"
+                    android:textSize="@dimen/d_15sp"
+                    binding:typefaceRegular="@{true}" />
+
+            </LinearLayout>
+
+
+            <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/d_36dp"
+                android:layout_marginLeft="@dimen/d_32dp"
+                android:layout_marginTop="@dimen/d_24dp"
+                android:layout_marginRight="@dimen/d_32dp"
+                android:background="@drawable/shape_btn_blue_18round_bg"
+                android:gravity="center"
+                android:text="Login"
+                android:textColor="@color/white"
+                android:textSize="@dimen/d_16sp"
+                binding:clicks="@{click.doLogin}" />
+
+            <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/d_36dp"
+                android:layout_marginLeft="@dimen/d_32dp"
+                android:layout_marginTop="@dimen/d_10dp"
+                android:layout_marginRight="@dimen/d_32dp"
+                android:background="@drawable/shape_btn_origin_18round_bg"
+                android:gravity="center"
+                android:text="Forgot Password"
+                android:textColor="@color/white"
+                android:textSize="@dimen/d_16sp"
+                binding:clicks="@{click.gotoForgotPasswordPage}" />
+
+        </LinearLayout>
+
+
+    </FrameLayout>
+
+</layout>

+ 60 - 16
cpt_auths/src/main/res/layout/activity_choose_auth.xml

@@ -8,32 +8,76 @@
     <data>
 
         <variable
-            name="viewModel"
-            type="com.hongyegroup.cpt_auths.mvvm.AuthViewModel" />
-
-        <import type="android.text.TextUtils" />
+            name="click"
+            type="com.hongyegroup.cpt_auths.ui.ChooseAuthActivity.ClickProxy" />
 
     </data>
 
-
-    <LinearLayout
+    <FrameLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:background="@color/white"
-        android:orientation="vertical">
+        android:background="@color/white">
 
-        <com.guadou.lib_baselib.view.titlebar.EasyTitleBar
-            android:layout_width="match_parent"
-            android:layout_height="@dimen/d_45dp"
-            app:Easy_title="Main" />
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="bottom|left"
+            android:src="@drawable/choose_role_left_bottom" />
 
-        <Button
-            android:id="@+id/btn_login"
+        <ImageView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:text="登录" />
+            android:layout_gravity="bottom|right"
+            android:src="@drawable/choose_role_right_bottom" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
+
+            <ImageView
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:scaleType="centerCrop"
+                android:src="@drawable/choose_role_top_img" />
+
+            <com.guadou.lib_baselib.font_text_view.TextViewSBold
+                android:layout_width="match_parent"
+                android:layout_height="52dp"
+                android:layout_marginLeft="32dp"
+                android:layout_marginTop="42dp"
+                android:layout_marginRight="32dp"
+                android:background="@drawable/shape_btn_blue_25round_bg"
+                android:gravity="center"
+                android:text="Personal Login"
+                android:textColor="@color/white"
+                android:textSize="@dimen/d_18sp"
+                binding:clicks="@{click.gotoPersonalLoginPage}" />
+
+            <com.guadou.lib_baselib.font_text_view.TextViewSBold
+                android:layout_width="match_parent"
+                android:layout_height="52dp"
+                android:layout_marginLeft="32dp"
+                android:layout_marginTop="@dimen/d_18dp"
+                android:layout_marginRight="32dp"
+                android:background="@drawable/shape_btn_green_25round_bg"
+                android:gravity="center"
+                android:text="Business Login"
+                android:textColor="@color/white"
+                android:textSize="@dimen/d_18sp"
+                binding:clicks="@{click.gotoBusinessLoginPage}" />
 
+        </LinearLayout>
+
+        <com.guadou.lib_baselib.font_text_view.TextViewSBold
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_horizontal"
+            android:layout_marginTop="@dimen/d_60dp"
+            android:text="Convid - 19 Swab Test"
+            android:textColor="@color/white"
+            android:textSize="26sp" />
 
-    </LinearLayout>
+    </FrameLayout>
 
 </layout>

+ 31 - 0
cpt_auths/src/main/res/layout/activity_pensonal_forgot_psd_input.xml

@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:binding="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="RtlHardcoded">
+
+    <data>
+
+
+    </data>
+
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@color/white"
+        android:orientation="vertical">
+
+
+        <com.guadou.lib_baselib.font_text_view.TextViewRegular
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:gravity="center"
+            android:text="Forgot Password Input"
+            android:textSize="@dimen/d_18sp" />
+
+
+    </LinearLayout>
+
+</layout>

+ 118 - 0
cpt_auths/src/main/res/layout/activity_pensonal_forgot_psd_mobile.xml

@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:binding="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="RtlHardcoded">
+
+    <data>
+
+        <variable
+            name="click"
+            type="com.hongyegroup.cpt_auths.ui.PensonalForgotPsdMobileActivity.ClickProxy" />
+
+    </data>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@color/page_bg"
+        android:focusable="true"
+        android:focusableInTouchMode="true"
+        android:orientation="vertical">
+
+        <com.guadou.lib_baselib.view.titlebar.EasyTitleBar
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            app:Easy_title="Forgot Password" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_marginLeft="@dimen/d_5dp"
+            android:layout_marginTop="@dimen/d_5dp"
+            android:layout_marginRight="@dimen/d_5dp"
+            android:layout_marginBottom="@dimen/d_10dp"
+            android:background="@drawable/shadow_round_gray_bg"
+            android:orientation="vertical">
+
+
+            <com.guadou.lib_baselib.font_text_view.TextViewSBold
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/d_22dp"
+                android:layout_marginTop="@dimen/d_35dp"
+                android:text="Forgot Password"
+                android:textColor="#3E4A5D"
+                android:textSize="@dimen/d_23sp" />
+
+            <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/d_22dp"
+                android:layout_marginTop="@dimen/d_22dp"
+                android:layout_marginRight="@dimen/d_22dp"
+                android:text="Please enter your cell phone number to reset your password"
+                android:textColor="#FFADB5C2"
+                android:textSize="16sp" />
+
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="43dp"
+                android:layout_marginLeft="@dimen/d_22dp"
+                android:layout_marginTop="@dimen/d_19dp"
+                android:layout_marginRight="@dimen/d_22dp"
+                android:background="@drawable/shape_input_gray_4round_bg"
+                android:gravity="center_vertical"
+                android:orientation="horizontal">
+
+                <ImageView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="@dimen/d_17dp"
+                    android:layout_marginRight="@dimen/d_17dp"
+                    android:src="@drawable/forgot_phone_icon" />
+
+                <View
+                    android:layout_width="1dp"
+                    android:layout_height="match_parent"
+                    android:background="#FFD9E1ED" />
+
+                <EditText
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_marginLeft="@dimen/d_10dp"
+                    android:background="@color/transparent"
+                    android:hint="Enter Mobile"
+                    android:inputType="phone"
+                    android:singleLine="true"
+                    android:text="@={click.MMobilePhoneLD}"
+                    android:textColor="@color/input_black_text"
+                    android:textColorHint="#FFA1B0BE"
+                    android:textSize="@dimen/d_15sp"
+                    binding:typefaceRegular="@{true}" />
+
+            </LinearLayout>
+
+
+            <com.guadou.lib_baselib.font_text_view.TextViewSBold
+                android:layout_width="match_parent"
+                android:layout_height="43dp"
+                android:layout_marginLeft="@dimen/d_22dp"
+                android:layout_marginTop="@dimen/d_20dp"
+                android:layout_marginRight="@dimen/d_22dp"
+                android:layout_marginBottom="@dimen/d_20dp"
+                android:background="@drawable/shape_btn_blue_3round_bg"
+                android:gravity="center"
+                android:text="Submit"
+                android:textColor="@color/white"
+                android:textSize="@dimen/d_16sp"
+                binding:clicks="@{click.doSubmit}" />
+
+
+        </LinearLayout>
+
+    </LinearLayout>
+
+</layout>

+ 245 - 0
cpt_auths/src/main/res/layout/activity_pensonal_forgot_psd_verity.xml

@@ -0,0 +1,245 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:binding="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="RtlHardcoded">
+
+    <data>
+
+        <variable
+            name="click"
+            type="com.hongyegroup.cpt_auths.ui.PensonalForgotPsdVerityActivity.ClickProxy" />
+
+    </data>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@color/page_bg"
+        android:orientation="vertical">
+
+        <com.guadou.lib_baselib.view.titlebar.EasyTitleBar
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            app:Easy_title="Forgot Passowrd" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_marginLeft="@dimen/d_5dp"
+            android:layout_marginTop="@dimen/d_5dp"
+            android:layout_marginRight="@dimen/d_5dp"
+            android:layout_marginBottom="@dimen/d_10dp"
+            android:background="@drawable/shadow_round_gray_bg"
+            android:orientation="vertical">
+
+
+            <com.guadou.lib_baselib.font_text_view.TextViewSBold
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/d_22dp"
+                android:layout_marginTop="@dimen/d_35dp"
+                binding:text="@{click.MMobilePhoneLD}"
+                tools:text="+6598567878"
+                android:textColor="#3E4A5D"
+                android:textSize="@dimen/d_23sp" />
+
+            <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/d_22dp"
+                android:layout_marginTop="@dimen/d_22dp"
+                android:text="Enter the 6-digit code sent to:"
+                android:textColor="#FFADB5C2"
+                android:textSize="16sp" />
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/d_20dp"
+                android:baselineAligned="false"
+                android:focusable="true"
+                android:focusableInTouchMode="true"
+                android:gravity="center_vertical"
+                android:orientation="horizontal">
+
+                <FrameLayout
+                    android:id="@+id/frame_first_code"
+                    android:layout_width="@dimen/d_37dp"
+                    android:layout_height="@dimen/d_37dp"
+                    android:layout_marginLeft="@dimen/d_23dp"
+                    android:background="@drawable/white_input_field">
+
+                    <EditText
+                        android:id="@+id/edit_text_first_code"
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:background="@android:color/transparent"
+                        android:cursorVisible="false"
+                        android:gravity="center"
+                        android:inputType="number"
+                        android:maxLength="1"
+                        android:minEms="2"
+                        android:textColor="@color/input_blue_text"
+                        android:textSize="@dimen/d_16sp"
+                        binding:onFocusGet="@{click.onFocusGet}"
+                        binding:typefaceRegular="@{true}" />
+
+                </FrameLayout>
+
+                <FrameLayout
+                    android:id="@+id/frame_second_code"
+                    android:layout_width="@dimen/d_37dp"
+                    android:layout_height="@dimen/d_37dp"
+                    android:layout_marginLeft="@dimen/d_12dp"
+                    android:background="@drawable/white_input_field">
+
+                    <EditText
+                        android:id="@+id/edit_text_second_code"
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:background="@android:color/transparent"
+                        android:cursorVisible="false"
+                        android:gravity="center"
+                        android:inputType="number"
+                        android:maxLength="1"
+                        android:minEms="2"
+                        android:textColor="@color/input_blue_text"
+                        android:textSize="@dimen/d_16sp"
+                        binding:onFocusGet="@{click.onFocusGet}"
+                        binding:typefaceRegular="@{true}" />
+
+                </FrameLayout>
+
+                <FrameLayout
+                    android:id="@+id/frame_third_code"
+                    android:layout_width="@dimen/d_37dp"
+                    android:layout_height="@dimen/d_37dp"
+                    android:layout_marginLeft="@dimen/d_12dp"
+                    android:background="@drawable/white_input_field">
+
+                    <EditText
+                        android:id="@+id/edit_text_third_code"
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:background="@android:color/transparent"
+                        android:cursorVisible="false"
+                        android:gravity="center"
+                        android:inputType="number"
+                        android:maxLength="1"
+                        android:minEms="2"
+                        android:textColor="@color/input_blue_text"
+                        android:textSize="@dimen/d_16sp"
+                        binding:onFocusGet="@{click.onFocusGet}"
+                        binding:typefaceRegular="@{true}" />
+
+                </FrameLayout>
+
+                <FrameLayout
+                    android:id="@+id/frame_fourth_code"
+                    android:layout_width="@dimen/d_37dp"
+                    android:layout_height="@dimen/d_37dp"
+                    android:layout_marginLeft="@dimen/d_12dp"
+                    android:background="@drawable/white_input_field">
+
+                    <EditText
+                        android:id="@+id/edit_text_fourth_code"
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:background="@android:color/transparent"
+                        android:cursorVisible="false"
+                        android:gravity="center"
+                        android:inputType="number"
+                        android:maxLength="1"
+                        android:minEms="2"
+                        android:textColor="@color/input_blue_text"
+                        android:textSize="@dimen/d_16sp"
+                        binding:onFocusGet="@{click.onFocusGet}"
+                        binding:typefaceRegular="@{true}" />
+
+                </FrameLayout>
+
+                <FrameLayout
+                    android:id="@+id/frame_fifth_code"
+                    android:layout_width="@dimen/d_37dp"
+                    android:layout_height="@dimen/d_37dp"
+                    android:layout_marginLeft="@dimen/d_12dp"
+                    android:layout_marginTop="@dimen/d_10dp"
+                    android:layout_marginBottom="@dimen/d_10dp"
+                    android:background="@drawable/white_input_field">
+
+                    <EditText
+                        android:id="@+id/edit_text_fifth_code"
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:background="@android:color/transparent"
+                        android:cursorVisible="false"
+                        android:gravity="center"
+                        android:inputType="number"
+                        android:maxLength="1"
+                        android:minEms="2"
+                        android:textColor="@color/input_blue_text"
+                        android:textSize="@dimen/d_16sp"
+                        binding:onFocusGet="@{click.onFocusGet}"
+                        binding:typefaceRegular="@{true}" />
+
+                </FrameLayout>
+
+                <FrameLayout
+                    android:id="@+id/frame_sixth_code"
+                    android:layout_width="@dimen/d_37dp"
+                    android:layout_height="@dimen/d_37dp"
+                    android:layout_marginLeft="@dimen/d_12dp"
+                    android:layout_marginTop="@dimen/d_10dp"
+                    android:layout_marginBottom="@dimen/d_10dp"
+                    android:background="@drawable/white_input_field">
+
+                    <EditText
+                        android:id="@+id/edit_text_sixth_code"
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:background="@android:color/transparent"
+                        android:cursorVisible="false"
+                        android:gravity="center"
+                        android:inputType="number"
+                        android:maxLength="1"
+                        android:minEms="2"
+                        android:textColor="@color/input_blue_text"
+                        android:textSize="@dimen/d_16sp"
+                        binding:onFocusGet="@{click.onFocusGet}"
+                        binding:typefaceRegular="@{true}" />
+
+                </FrameLayout>
+
+            </LinearLayout>
+
+
+            <EditText
+                android:id="@+id/edit_text_hidden"
+                android:layout_width="@dimen/d_1dp"
+                android:layout_height="@dimen/d_1dp"
+                android:layout_gravity="center_horizontal"
+                android:background="@null"
+                android:cursorVisible="false"
+                android:gravity="center_horizontal"
+                android:inputType="number"
+                android:maxLength="6"
+                android:textColor="#00000000"
+                binding:onTextChanged="@{click.onTextChange}" />
+
+            <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/d_22dp"
+                android:layout_marginTop="@dimen/d_22dp"
+                android:text="Resend code in 00:55"
+                android:textColor="#FFADB5C2"
+                android:textSize="16sp" />
+
+        </LinearLayout>
+
+
+    </LinearLayout>
+
+</layout>

+ 220 - 0
cpt_auths/src/main/res/layout/activity_pensonal_login.xml

@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:binding="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="RtlHardcoded">
+
+    <data>
+
+        <variable
+            name="viewModel"
+            type="com.hongyegroup.cpt_auths.mvvm.vm.PensonalLoginViewModel" />
+
+        <variable
+            name="click"
+            type="com.hongyegroup.cpt_auths.ui.PensonalLoginActivity.ClickProxy" />
+
+    </data>
+
+
+    <FrameLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="#3684F9">
+
+        <ImageView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_gravity="bottom"
+            android:scaleType="centerCrop"
+            android:src="@drawable/personal_login_bottom_bg" />
+
+        <ImageView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="@drawable/personal_login_top_bg"
+            android:scaleType="centerCrop" />
+
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="@dimen/d_15dp"
+            android:layout_marginTop="@dimen/d_35dp"
+            android:src="@mipmap/back_black"
+            binding:clicks="@{click.backPage}" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="395dp"
+            android:layout_gravity="center"
+            android:layout_marginLeft="@dimen/d_30dp"
+            android:layout_marginTop="30dp"
+            android:layout_marginRight="@dimen/d_30dp"
+            android:background="@drawable/shape_white_10round_bg"
+            android:focusable="true"
+            android:focusableInTouchMode="true"
+            android:orientation="vertical">
+
+            <com.guadou.lib_baselib.font_text_view.TextViewSBold
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:layout_marginTop="30dp"
+                android:text="Personal login"
+                android:textAllCaps="true"
+                android:textColor="@color/input_blue_text"
+                android:textSize="25sp" />
+
+            <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="38dp"
+                android:layout_marginTop="@dimen/d_25dp"
+                android:text="Mobile"
+                android:textColor="#547395"
+                android:textSize="14sp" />
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/d_35dp"
+                android:layout_marginLeft="32dp"
+                android:layout_marginTop="@dimen/d_5dp"
+                android:layout_marginRight="32dp"
+                android:background="@drawable/shape_input_gray_4round_bg"
+                android:orientation="horizontal">
+
+                <LinearLayout
+                    android:layout_width="wrap_content"
+                    android:layout_height="match_parent"
+                    android:layout_marginLeft="@dimen/d_9dp"
+                    android:gravity="center_vertical"
+                    android:onClick="@{click.selectCountCode}"
+                    android:orientation="horizontal">
+
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:src="@drawable/login_mobile_icon" />
+
+                    <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="@dimen/d_5dp"
+                        android:layout_marginRight="@dimen/d_5dp"
+                        android:textColor="#FF373D44"
+                        android:textSize="@dimen/d_15sp"
+                        binding:text="@{viewModel.mMobileCodeLiveData}"
+                        tools:text="+65" />
+
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:src="@drawable/login_mobile_drop_down_icon" />
+
+                </LinearLayout>
+
+
+                <EditText
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_marginLeft="@dimen/d_15dp"
+                    android:background="@color/transparent"
+                    android:hint="Enter Mobile"
+                    android:inputType="phone"
+                    android:singleLine="true"
+                    android:text="@={click.MMobilePhoneStr}"
+                    android:textColor="@color/input_black_text"
+                    android:textColorHint="#FFA1B0BE"
+                    android:textSize="@dimen/d_15sp"
+                    binding:typefaceRegular="@{true}" />
+
+            </LinearLayout>
+
+            <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="38dp"
+                android:layout_marginTop="@dimen/d_18dp"
+                android:text="Password"
+                android:textColor="#547395"
+                android:textSize="14sp" />
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/d_35dp"
+                android:layout_marginLeft="32dp"
+                android:layout_marginTop="@dimen/d_5dp"
+                android:layout_marginRight="32dp"
+                android:background="@drawable/shape_input_gray_4round_bg"
+                android:gravity="center_vertical"
+                android:orientation="horizontal">
+
+                <ImageView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="@dimen/d_9dp"
+                    android:src="@drawable/login_password_icon" />
+
+                <EditText
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_marginLeft="@dimen/d_15dp"
+                    android:background="@color/transparent"
+                    android:hint="Enter Password"
+                    android:inputType="textPassword"
+                    android:singleLine="true"
+                    android:text="@={click.MPasswordStr}"
+                    android:textColor="@color/input_black_text"
+                    android:textColorHint="#FFA1B0BE"
+                    android:textSize="@dimen/d_15sp"
+                    binding:typefaceRegular="@{true}" />
+
+            </LinearLayout>
+
+
+            <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/d_36dp"
+                android:layout_marginLeft="@dimen/d_32dp"
+                android:layout_marginTop="@dimen/d_24dp"
+                android:layout_marginRight="@dimen/d_32dp"
+                android:background="@drawable/shape_btn_blue_18round_bg"
+                android:gravity="center"
+                android:text="Login"
+                android:textColor="@color/white"
+                android:textSize="@dimen/d_16sp"
+                binding:clicks="@{click.doLogin}" />
+
+            <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/d_36dp"
+                android:layout_marginLeft="@dimen/d_32dp"
+                android:layout_marginTop="@dimen/d_10dp"
+                android:layout_marginRight="@dimen/d_32dp"
+                android:background="@drawable/shape_btn_origin_18round_bg"
+                android:gravity="center"
+                android:text="Forgot Password"
+                android:textColor="@color/white"
+                android:textSize="@dimen/d_16sp"
+                binding:clicks="@{click.gotoForgotPasswordPage}" />
+
+            <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/d_36dp"
+                android:layout_marginLeft="@dimen/d_32dp"
+                android:layout_marginTop="@dimen/d_10dp"
+                android:layout_marginRight="@dimen/d_32dp"
+                android:background="@drawable/shape_btn_red_18round_bg"
+                android:gravity="center"
+                android:text="Personal Sign Up"
+                android:textColor="@color/white"
+                android:textSize="@dimen/d_16sp"
+                binding:clicks="@{click.gotoSignUpPage}" />
+
+        </LinearLayout>
+
+
+    </FrameLayout>
+
+</layout>

+ 266 - 0
cpt_auths/src/main/res/layout/activity_pensonal_signup_input.xml

@@ -0,0 +1,266 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:binding="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="RtlHardcoded">
+
+    <data>
+
+        <variable
+            name="viewModel"
+            type="com.hongyegroup.cpt_auths.mvvm.vm.PensonalSignUpInputViewModel" />
+
+        <variable
+            name="click"
+            type="com.hongyegroup.cpt_auths.ui.PensonalSignupInputActivity.ClickProxy" />
+
+
+    </data>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@color/page_bg"
+        android:focusable="true"
+        android:focusableInTouchMode="true"
+        android:orientation="vertical">
+
+        <com.guadou.lib_baselib.view.titlebar.EasyTitleBar
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            app:Easy_title="Personal Sign Up" />
+
+        <ScrollView
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:layout_weight="1">
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="vertical">
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_marginLeft="@dimen/d_5dp"
+                    android:layout_marginTop="@dimen/d_5dp"
+                    android:layout_marginRight="@dimen/d_5dp"
+                    android:layout_marginBottom="@dimen/d_10dp"
+                    android:background="@drawable/shadow_round_gray_bg"
+                    android:orientation="vertical">
+
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="@dimen/d_10dp"
+                        android:layout_marginRight="@dimen/d_10dp"
+                        android:orientation="vertical">
+
+                        <ImageView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_gravity="center_horizontal"
+                            android:layout_marginTop="@dimen/d_18dp"
+                            android:src="@drawable/signup_top_img" />
+
+
+                        <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="@dimen/d_18dp"
+                            android:layout_marginTop="@dimen/d_12dp"
+                            android:text="Mobile"
+                            android:textColor="#547395"
+                            android:textSize="14sp" />
+
+                        <LinearLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="43dp"
+                            android:layout_marginLeft="@dimen/d_12dp"
+                            android:layout_marginTop="@dimen/d_8dp"
+                            android:layout_marginRight="@dimen/d_12dp"
+                            android:background="@drawable/shape_input_gray_4round_bg"
+                            android:orientation="horizontal">
+
+                            <LinearLayout
+                                android:layout_width="wrap_content"
+                                android:layout_height="match_parent"
+                                android:gravity="center_vertical"
+                                android:onClick="@{click.selectCountCode}"
+                                android:orientation="horizontal"
+                                android:paddingLeft="@dimen/d_13dp"
+                                android:paddingRight="@dimen/d_13dp">
+
+                                <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="wrap_content"
+                                    android:layout_marginRight="@dimen/d_5dp"
+                                    android:textColor="#FF373D44"
+                                    android:textSize="@dimen/d_15sp"
+                                    binding:text="@{viewModel.mMobileCodeLiveData}"
+                                    tools:text="+65" />
+
+                                <ImageView
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="wrap_content"
+                                    android:src="@drawable/login_mobile_drop_down_icon" />
+
+                            </LinearLayout>
+
+
+                            <EditText
+                                android:layout_width="match_parent"
+                                android:layout_height="match_parent"
+                                android:background="@color/transparent"
+                                android:hint="Enter Mobile"
+                                android:inputType="phone"
+                                android:singleLine="true"
+                                android:text="@={click.MMobilePhoneLD}"
+                                android:textColor="@color/input_black_text"
+                                android:textColorHint="#FFA1B0BE"
+                                android:textSize="@dimen/d_15sp"
+                                binding:typefaceRegular="@{true}" />
+
+                        </LinearLayout>
+
+                        <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="@dimen/d_18dp"
+                            android:layout_marginTop="@dimen/d_12dp"
+                            android:text="Full Name"
+                            android:textColor="#547395"
+                            android:textSize="14sp" />
+
+                        <EditText
+                            android:layout_width="match_parent"
+                            android:layout_height="43dp"
+                            android:layout_marginLeft="@dimen/d_12dp"
+                            android:layout_marginTop="@dimen/d_8dp"
+                            android:layout_marginRight="@dimen/d_12dp"
+                            android:background="@drawable/shape_input_gray_4round_bg"
+                            android:hint="As Per NRIC"
+                            android:paddingLeft="@dimen/d_12dp"
+                            android:paddingRight="@dimen/d_12dp"
+                            android:singleLine="true"
+                            android:text="@={click.MFullNameLD}"
+                            android:textColor="@color/input_black_text"
+                            android:textColorHint="#FFA1B0BE"
+                            android:textSize="@dimen/d_15sp"
+                            binding:typefaceRegular="@{true}" />
+
+
+                        <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="@dimen/d_18dp"
+                            android:layout_marginTop="@dimen/d_12dp"
+                            android:text="NRIC"
+                            android:textColor="#547395"
+                            android:textSize="14sp" />
+
+                        <EditText
+                            android:layout_width="match_parent"
+                            android:layout_height="43dp"
+                            android:layout_marginLeft="@dimen/d_12dp"
+                            android:layout_marginTop="@dimen/d_8dp"
+                            android:layout_marginRight="@dimen/d_12dp"
+                            android:background="@drawable/shape_input_gray_4round_bg"
+                            android:hint="Enter NRIC"
+                            android:paddingLeft="@dimen/d_12dp"
+                            android:paddingRight="@dimen/d_12dp"
+                            android:singleLine="true"
+                            android:text="@={click.MNRICLD}"
+                            android:textColor="@color/input_black_text"
+                            android:textColorHint="#FFA1B0BE"
+                            android:textSize="@dimen/d_15sp"
+                            binding:typefaceRegular="@{true}" />
+
+                        <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="@dimen/d_18dp"
+                            android:layout_marginTop="@dimen/d_12dp"
+                            android:text="Password"
+                            android:textColor="#547395"
+                            android:textSize="14sp" />
+
+                        <EditText
+                            android:layout_width="match_parent"
+                            android:layout_height="43dp"
+                            android:layout_marginLeft="@dimen/d_12dp"
+                            android:layout_marginTop="@dimen/d_8dp"
+                            android:layout_marginRight="@dimen/d_12dp"
+                            android:background="@drawable/shape_input_gray_4round_bg"
+                            android:hint="Enter Password"
+                            android:inputType="textPassword"
+                            android:paddingLeft="@dimen/d_12dp"
+                            android:paddingRight="@dimen/d_12dp"
+                            android:singleLine="true"
+                            android:text="@={click.MPasswordLD}"
+                            android:textColor="@color/input_black_text"
+                            android:textColorHint="#FFA1B0BE"
+                            android:textSize="@dimen/d_15sp"
+                            binding:typefaceRegular="@{true}" />
+
+
+                        <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="@dimen/d_18dp"
+                            android:layout_marginTop="@dimen/d_12dp"
+                            android:text="Confirm Password"
+                            android:textColor="#547395"
+                            android:textSize="14sp" />
+
+                        <EditText
+                            android:layout_width="match_parent"
+                            android:layout_height="43dp"
+                            android:layout_marginLeft="@dimen/d_12dp"
+                            android:layout_marginTop="@dimen/d_8dp"
+                            android:layout_marginRight="@dimen/d_12dp"
+                            android:background="@drawable/shape_input_gray_4round_bg"
+                            android:hint="Enter Confirm Password"
+                            android:inputType="textPassword"
+                            android:paddingLeft="@dimen/d_12dp"
+                            android:paddingRight="@dimen/d_12dp"
+                            android:singleLine="true"
+                            android:text="@={click.MConfirmPsdLD}"
+                            android:textColor="@color/input_black_text"
+                            android:textColorHint="#FFA1B0BE"
+                            android:textSize="@dimen/d_15sp"
+                            binding:typefaceRegular="@{true}" />
+
+
+                        <com.guadou.lib_baselib.font_text_view.TextViewSBold
+                            android:layout_width="match_parent"
+                            android:layout_height="43dp"
+                            android:layout_marginLeft="@dimen/d_12dp"
+                            android:layout_marginTop="@dimen/d_20dp"
+                            android:layout_marginRight="@dimen/d_12dp"
+                            android:layout_marginBottom="@dimen/d_20dp"
+                            android:background="@drawable/shape_btn_blue_3round_bg"
+                            android:gravity="center"
+                            android:text="Sign Up"
+                            android:textColor="@color/white"
+                            android:textSize="@dimen/d_16sp"
+                            binding:clicks="@{click.doSignUp}" />
+
+                    </LinearLayout>
+
+                </LinearLayout>
+
+                <View
+                    android:layout_width="1dp"
+                    android:layout_height="5dp" />
+
+            </LinearLayout>
+
+
+        </ScrollView>
+
+    </LinearLayout>
+
+</layout>

+ 245 - 0
cpt_auths/src/main/res/layout/activity_pensonal_signup_verity.xml

@@ -0,0 +1,245 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:binding="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="RtlHardcoded">
+
+    <data>
+
+        <variable
+            name="click"
+            type="com.hongyegroup.cpt_auths.ui.PensonalSignupVerifyActivity.ClickProxy" />
+
+    </data>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@color/page_bg"
+        android:orientation="vertical">
+
+        <com.guadou.lib_baselib.view.titlebar.EasyTitleBar
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            app:Easy_title="Verify OTP" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_marginLeft="@dimen/d_5dp"
+            android:layout_marginTop="@dimen/d_5dp"
+            android:layout_marginRight="@dimen/d_5dp"
+            android:layout_marginBottom="@dimen/d_10dp"
+            android:background="@drawable/shadow_round_gray_bg"
+            android:orientation="vertical">
+
+
+            <com.guadou.lib_baselib.font_text_view.TextViewSBold
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/d_22dp"
+                android:layout_marginTop="@dimen/d_35dp"
+                android:textColor="#3E4A5D"
+                android:textSize="@dimen/d_23sp"
+                binding:text="@{click.MMobilePhoneLD}"
+                tools:text="+6598567878" />
+
+            <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/d_22dp"
+                android:layout_marginTop="@dimen/d_22dp"
+                android:text="Enter the 6-digit code sent to:"
+                android:textColor="#FFADB5C2"
+                android:textSize="16sp" />
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/d_20dp"
+                android:baselineAligned="false"
+                android:focusable="true"
+                android:focusableInTouchMode="true"
+                android:gravity="center_vertical"
+                android:orientation="horizontal">
+
+                <FrameLayout
+                    android:id="@+id/frame_first_code"
+                    android:layout_width="@dimen/d_37dp"
+                    android:layout_height="@dimen/d_37dp"
+                    android:layout_marginLeft="@dimen/d_23dp"
+                    android:background="@drawable/white_input_field">
+
+                    <EditText
+                        android:id="@+id/edit_text_first_code"
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:background="@android:color/transparent"
+                        android:cursorVisible="false"
+                        android:gravity="center"
+                        android:inputType="number"
+                        android:maxLength="1"
+                        android:minEms="2"
+                        android:textColor="@color/input_blue_text"
+                        android:textSize="@dimen/d_16sp"
+                        binding:onFocusGet="@{click.onFocusGet}"
+                        binding:typefaceRegular="@{true}" />
+
+                </FrameLayout>
+
+                <FrameLayout
+                    android:id="@+id/frame_second_code"
+                    android:layout_width="@dimen/d_37dp"
+                    android:layout_height="@dimen/d_37dp"
+                    android:layout_marginLeft="@dimen/d_12dp"
+                    android:background="@drawable/white_input_field">
+
+                    <EditText
+                        android:id="@+id/edit_text_second_code"
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:background="@android:color/transparent"
+                        android:cursorVisible="false"
+                        android:gravity="center"
+                        android:inputType="number"
+                        android:maxLength="1"
+                        android:minEms="2"
+                        android:textColor="@color/input_blue_text"
+                        android:textSize="@dimen/d_16sp"
+                        binding:onFocusGet="@{click.onFocusGet}"
+                        binding:typefaceRegular="@{true}" />
+
+                </FrameLayout>
+
+                <FrameLayout
+                    android:id="@+id/frame_third_code"
+                    android:layout_width="@dimen/d_37dp"
+                    android:layout_height="@dimen/d_37dp"
+                    android:layout_marginLeft="@dimen/d_12dp"
+                    android:background="@drawable/white_input_field">
+
+                    <EditText
+                        android:id="@+id/edit_text_third_code"
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:background="@android:color/transparent"
+                        android:cursorVisible="false"
+                        android:gravity="center"
+                        android:inputType="number"
+                        android:maxLength="1"
+                        android:minEms="2"
+                        android:textColor="@color/input_blue_text"
+                        android:textSize="@dimen/d_16sp"
+                        binding:onFocusGet="@{click.onFocusGet}"
+                        binding:typefaceRegular="@{true}" />
+
+                </FrameLayout>
+
+                <FrameLayout
+                    android:id="@+id/frame_fourth_code"
+                    android:layout_width="@dimen/d_37dp"
+                    android:layout_height="@dimen/d_37dp"
+                    android:layout_marginLeft="@dimen/d_12dp"
+                    android:background="@drawable/white_input_field">
+
+                    <EditText
+                        android:id="@+id/edit_text_fourth_code"
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:background="@android:color/transparent"
+                        android:cursorVisible="false"
+                        android:gravity="center"
+                        android:inputType="number"
+                        android:maxLength="1"
+                        android:minEms="2"
+                        android:textColor="@color/input_blue_text"
+                        android:textSize="@dimen/d_16sp"
+                        binding:onFocusGet="@{click.onFocusGet}"
+                        binding:typefaceRegular="@{true}" />
+
+                </FrameLayout>
+
+                <FrameLayout
+                    android:id="@+id/frame_fifth_code"
+                    android:layout_width="@dimen/d_37dp"
+                    android:layout_height="@dimen/d_37dp"
+                    android:layout_marginLeft="@dimen/d_12dp"
+                    android:layout_marginTop="@dimen/d_10dp"
+                    android:layout_marginBottom="@dimen/d_10dp"
+                    android:background="@drawable/white_input_field">
+
+                    <EditText
+                        android:id="@+id/edit_text_fifth_code"
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:background="@android:color/transparent"
+                        android:cursorVisible="false"
+                        android:gravity="center"
+                        android:inputType="number"
+                        android:maxLength="1"
+                        android:minEms="2"
+                        android:textColor="@color/input_blue_text"
+                        android:textSize="@dimen/d_16sp"
+                        binding:onFocusGet="@{click.onFocusGet}"
+                        binding:typefaceRegular="@{true}" />
+
+                </FrameLayout>
+
+                <FrameLayout
+                    android:id="@+id/frame_sixth_code"
+                    android:layout_width="@dimen/d_37dp"
+                    android:layout_height="@dimen/d_37dp"
+                    android:layout_marginLeft="@dimen/d_12dp"
+                    android:layout_marginTop="@dimen/d_10dp"
+                    android:layout_marginBottom="@dimen/d_10dp"
+                    android:background="@drawable/white_input_field">
+
+                    <EditText
+                        android:id="@+id/edit_text_sixth_code"
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:background="@android:color/transparent"
+                        android:cursorVisible="false"
+                        android:gravity="center"
+                        android:inputType="number"
+                        android:maxLength="1"
+                        android:minEms="2"
+                        android:textColor="@color/input_blue_text"
+                        android:textSize="@dimen/d_16sp"
+                        binding:onFocusGet="@{click.onFocusGet}"
+                        binding:typefaceRegular="@{true}" />
+
+                </FrameLayout>
+
+            </LinearLayout>
+
+
+            <EditText
+                android:id="@+id/edit_text_hidden"
+                android:layout_width="@dimen/d_1dp"
+                android:layout_height="@dimen/d_1dp"
+                android:layout_gravity="center_horizontal"
+                android:background="@null"
+                android:cursorVisible="false"
+                android:gravity="center_horizontal"
+                android:inputType="number"
+                android:maxLength="6"
+                android:textColor="#00000000"
+                binding:onTextChanged="@{click.onTextChange}" />
+
+            <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/d_22dp"
+                android:layout_marginTop="@dimen/d_22dp"
+                android:text="Resend code in 00:55"
+                android:textColor="#FFADB5C2"
+                android:textSize="16sp" />
+
+        </LinearLayout>
+
+
+    </LinearLayout>
+
+</layout>

+ 206 - 0
cpt_auths/src/main/res/layout/activity_reset_password.xml

@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:binding="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="RtlHardcoded">
+
+    <data>
+
+        <variable
+            name="click"
+            type="com.hongyegroup.cpt_auths.ui.ResetPasswordActivity.ClickProxy" />
+
+    </data>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@color/page_bg"
+        android:focusable="true"
+        android:focusableInTouchMode="true"
+        android:orientation="vertical">
+
+        <com.guadou.lib_baselib.view.titlebar.EasyTitleBar
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            app:Easy_title="Reset Password" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_marginLeft="@dimen/d_5dp"
+            android:layout_marginTop="@dimen/d_5dp"
+            android:layout_marginRight="@dimen/d_5dp"
+            android:layout_marginBottom="@dimen/d_10dp"
+            android:background="@drawable/shadow_round_gray_bg"
+            android:orientation="vertical">
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="vertical"
+                binding:isVisibleGone="@{click.isShowOldBoxLD}">
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="@dimen/d_17dp"
+                    android:layout_marginTop="@dimen/d_22dp"
+                    android:gravity="center_vertical"
+                    android:orientation="horizontal">
+
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginBottom="@dimen/d_1dp"
+                        android:src="@drawable/reset_old_password" />
+
+                    <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="11dp"
+                        android:text="Old Password"
+                        android:textColor="#FF3E4A5D"
+                        android:textSize="@dimen/d_15sp" />
+
+                </LinearLayout>
+
+                <EditText
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="45dp"
+                    android:layout_marginTop="@dimen/d_10dp"
+                    android:background="@null"
+                    android:hint="Please enter your old password"
+                    android:inputType="textPassword"
+                    android:singleLine="true"
+                    android:textColor="#FF3E4A5D"
+                    android:textColorHint="#FFADB5C2"
+                    android:textSize="@dimen/d_15sp"
+                    binding:typefaceRegular="@{true}" />
+
+                <View
+                    android:layout_width="match_parent"
+                    android:layout_height="0.7dp"
+                    android:layout_marginLeft="@dimen/d_17dp"
+                    android:layout_marginTop="@dimen/d_14dp"
+                    android:layout_marginRight="@dimen/d_17dp"
+                    android:background="#FFDFE4EE" />
+
+            </LinearLayout>
+
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/d_17dp"
+                android:layout_marginTop="@dimen/d_22dp"
+                android:gravity="center_vertical"
+                android:orientation="horizontal">
+
+                <ImageView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginBottom="@dimen/d_1dp"
+                    android:src="@drawable/reset_new_password" />
+
+                <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="11dp"
+                    android:text="New Password(min 8 characters)"
+                    android:textColor="#FF3E4A5D"
+                    android:textSize="@dimen/d_15sp" />
+
+            </LinearLayout>
+
+            <EditText
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="45dp"
+                android:layout_marginTop="@dimen/d_10dp"
+                android:background="@null"
+                android:hint="Please enter new password"
+                android:inputType="textPassword"
+                android:singleLine="true"
+                android:textColor="#FF3E4A5D"
+                android:textColorHint="#FFADB5C2"
+                android:textSize="@dimen/d_15sp"
+                binding:typefaceRegular="@{true}" />
+
+            <View
+                android:layout_width="match_parent"
+                android:layout_height="0.7dp"
+                android:layout_marginLeft="@dimen/d_17dp"
+                android:layout_marginTop="@dimen/d_14dp"
+                android:layout_marginRight="@dimen/d_17dp"
+                android:background="#FFDFE4EE" />
+
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/d_17dp"
+                android:layout_marginTop="@dimen/d_22dp"
+                android:gravity="center_vertical"
+                android:orientation="horizontal">
+
+                <ImageView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginBottom="@dimen/d_1dp"
+                    android:src="@drawable/reset_confirm_password_" />
+
+                <com.guadou.lib_baselib.font_text_view.TextViewRegular
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="11dp"
+                    android:text="Confirm Password(min 8 characters)"
+                    android:textColor="#FF3E4A5D"
+                    android:textSize="@dimen/d_15sp" />
+
+            </LinearLayout>
+
+            <EditText
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="45dp"
+                android:layout_marginTop="@dimen/d_10dp"
+                android:background="@null"
+                android:hint="Please confirm the password"
+                android:inputType="textPassword"
+                android:singleLine="true"
+                android:textColor="#FF3E4A5D"
+                android:textColorHint="#FFADB5C2"
+                android:textSize="@dimen/d_15sp"
+                binding:typefaceRegular="@{true}" />
+
+            <View
+                android:layout_width="match_parent"
+                android:layout_height="0.7dp"
+                android:layout_marginLeft="@dimen/d_17dp"
+                android:layout_marginTop="@dimen/d_14dp"
+                android:layout_marginRight="@dimen/d_17dp"
+                android:background="#FFDFE4EE" />
+
+
+            <com.guadou.lib_baselib.font_text_view.TextViewSBold
+                android:layout_width="match_parent"
+                android:layout_height="43dp"
+                android:layout_marginLeft="@dimen/d_12dp"
+                android:layout_marginTop="@dimen/d_45dp"
+                android:layout_marginRight="@dimen/d_12dp"
+                android:layout_marginBottom="@dimen/d_20dp"
+                android:background="@drawable/shape_btn_blue_3round_bg"
+                android:gravity="center"
+                android:text="Submit"
+                android:textColor="@color/white"
+                android:textSize="@dimen/d_16sp"
+                binding:clicks="@{click.doSubmit}" />
+
+        </LinearLayout>
+
+    </LinearLayout>
+
+</layout>

+ 37 - 0
cpt_auths/src/main/res/layout/item_popup_count_code.xml

@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="?android:attr/selectableItemBackground"
+    android:orientation="vertical"
+    tools:ignore="MissingDefaultResource">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="center"
+        android:orientation="horizontal"
+        android:paddingTop="10dp"
+        android:paddingBottom="10dp">
+
+        <ImageView
+            android:id="@+id/iv_image"
+            android:layout_width="22dp"
+            android:layout_height="22dp"
+            android:layout_marginEnd="8dp"
+            android:visibility="gone" />
+
+        <com.guadou.lib_baselib.font_text_view.TextViewRegular
+            android:id="@+id/tv_text"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:ellipsize="end"
+            android:singleLine="true"
+            android:textColor="@color/_xpopup_title_color"
+            android:textSize="15sp"
+            tools:text="123" />
+
+    </LinearLayout>
+
+</LinearLayout>

+ 7 - 0
cpt_auths/src/main/res/layout/popup_county_code_list.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<com.lxj.xpopup.widget.VerticalRecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/recyclerView"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:overScrollMode="never"
+    android:scrollbars="none" />

+ 27 - 1
cpt_business/src/main/AndroidManifest.xml

@@ -4,7 +4,33 @@
 
     <application android:allowBackup="true">
 
-        <activity android:name=".BusinessMainActivity" />
+        <activity
+            android:name=".ui.activity.BusinessMainActivity"
+            android:screenOrientation="portrait" />
+
+        <activity
+            android:name=".ui.activity.BusinessAddStaffActivity"
+            android:screenOrientation="portrait" />
+
+        <activity
+            android:name=".ui.activity.BusinessAppointmentChooseEmployeeActivity"
+            android:screenOrientation="portrait" />
+
+        <activity
+            android:name=".ui.activity.BusinessAppointmentDateActivity"
+            android:screenOrientation="portrait" />
+
+        <activity
+            android:name=".ui.activity.BusinessAppointmentMakeActivity"
+            android:screenOrientation="portrait" />
+
+        <activity
+            android:name=".ui.activity.BusinessCodeActivity"
+            android:screenOrientation="portrait" />
+
+        <activity
+            android:name=".ui.activity.BusinessInfoEditActivity"
+            android:screenOrientation="portrait" />
 
     </application>
 

+ 1 - 1
cpt_business/src/main/java/com/hongyegroup/cpt_business/router/BusinessComponentImpl.kt

@@ -1,7 +1,7 @@
 package com.hongyegroup.cpt_business.router
 
 import com.guadou.cs_router.business.IBusinessComponentServer
-import com.hongyegroup.cpt_business.BusinessMainActivity
+import com.hongyegroup.cpt_business.ui.activity.BusinessMainActivity
 import io.github.prototypez.appjoint.core.ServiceProvider
 
 @ServiceProvider

+ 40 - 0
cpt_business/src/main/java/com/hongyegroup/cpt_business/ui/activity/BusinessAddStaffActivity.kt

@@ -0,0 +1,40 @@
+package com.hongyegroup.cpt_business.ui.activity
+
+import android.content.Intent
+import android.os.Bundle
+import com.guadou.cs_cptservices.base.activity.YYBaseVDBActivity
+import com.guadou.lib_baselib.base.vm.EmptyViewModel
+import com.guadou.lib_baselib.bean.DataBindingConfig
+import com.guadou.lib_baselib.utils.CommUtils
+import com.hongyegroup.cpt_business.R
+import com.hongyegroup.cpt_business.databinding.ActivityBusinessAddStaffBinding
+
+/**
+ * 公司 添加旗下的员工页面
+ */
+class BusinessAddStaffActivity : YYBaseVDBActivity<EmptyViewModel, ActivityBusinessAddStaffBinding>() {
+
+    companion object {
+        fun startInstance() {
+            val context = CommUtils.getContext()
+            val intent = Intent(context, BusinessAddStaffActivity::class.java)
+            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+            context.startActivity(intent)
+        }
+    }
+
+    override fun getDataBindingConfig(): DataBindingConfig {
+        return DataBindingConfig(R.layout.activity_business_add_staff)
+    }
+
+    override fun startObserve() {
+
+    }
+
+    override fun init(savedInstanceState: Bundle?) {
+
+
+    }
+
+
+}

+ 41 - 0
cpt_business/src/main/java/com/hongyegroup/cpt_business/ui/activity/BusinessAppointmentChooseEmployeeActivity.kt

@@ -0,0 +1,41 @@
+package com.hongyegroup.cpt_business.ui.activity
+
+import android.content.Intent
+import android.os.Bundle
+import com.guadou.cs_cptservices.base.activity.YYBaseVDBActivity
+import com.guadou.lib_baselib.base.vm.EmptyViewModel
+import com.guadou.lib_baselib.bean.DataBindingConfig
+import com.guadou.lib_baselib.utils.CommUtils
+import com.hongyegroup.cpt_business.R
+import com.hongyegroup.cpt_business.databinding.ActivityBusinessAppointmentMakeBinding
+
+/**
+ * 公司预约列表
+ * 为指定的员工预约 选择员工列表
+ */
+class BusinessAppointmentChooseEmployeeActivity : YYBaseVDBActivity<EmptyViewModel, ActivityBusinessAppointmentMakeBinding>() {
+
+    companion object {
+        fun startInstance() {
+            val context = CommUtils.getContext()
+            val intent = Intent(context, BusinessAppointmentChooseEmployeeActivity::class.java)
+            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+            context.startActivity(intent)
+        }
+    }
+
+    override fun getDataBindingConfig(): DataBindingConfig {
+        return DataBindingConfig(R.layout.activity_business_appointment_make)
+    }
+
+    override fun startObserve() {
+
+    }
+
+    override fun init(savedInstanceState: Bundle?) {
+
+
+    }
+
+
+}

+ 41 - 0
cpt_business/src/main/java/com/hongyegroup/cpt_business/ui/activity/BusinessAppointmentDateActivity.kt

@@ -0,0 +1,41 @@
+package com.hongyegroup.cpt_business.ui.activity
+
+import android.content.Intent
+import android.os.Bundle
+import com.guadou.cs_cptservices.base.activity.YYBaseVDBActivity
+import com.guadou.lib_baselib.base.vm.EmptyViewModel
+import com.guadou.lib_baselib.bean.DataBindingConfig
+import com.guadou.lib_baselib.utils.CommUtils
+import com.hongyegroup.cpt_business.R
+import com.hongyegroup.cpt_business.databinding.ActivityBusinessAppointmentDateBinding
+
+/**
+ * 公司预约列表
+ * 指定日期下面全部的员工的预约列表
+ */
+class BusinessAppointmentDateActivity : YYBaseVDBActivity<EmptyViewModel, ActivityBusinessAppointmentDateBinding>() {
+
+    companion object {
+        fun startInstance() {
+            val context = CommUtils.getContext()
+            val intent = Intent(context, BusinessAppointmentDateActivity::class.java)
+            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+            context.startActivity(intent)
+        }
+    }
+
+    override fun getDataBindingConfig(): DataBindingConfig {
+        return DataBindingConfig(R.layout.activity_business_appointment_date)
+    }
+
+    override fun startObserve() {
+
+    }
+
+    override fun init(savedInstanceState: Bundle?) {
+
+
+    }
+
+
+}

+ 41 - 0
cpt_business/src/main/java/com/hongyegroup/cpt_business/ui/activity/BusinessAppointmentMakeActivity.kt

@@ -0,0 +1,41 @@
+package com.hongyegroup.cpt_business.ui.activity
+
+import android.content.Intent
+import android.os.Bundle
+import com.guadou.cs_cptservices.base.activity.YYBaseVDBActivity
+import com.guadou.lib_baselib.base.vm.EmptyViewModel
+import com.guadou.lib_baselib.bean.DataBindingConfig
+import com.guadou.lib_baselib.utils.CommUtils
+import com.hongyegroup.cpt_business.R
+import com.hongyegroup.cpt_business.databinding.ActivityBusinessAppointmentChooseEmployeeBinding
+
+/**
+ * 公司预约列表
+ * 为指定的员工预约  预约页面
+ */
+class BusinessAppointmentMakeActivity : YYBaseVDBActivity<EmptyViewModel, ActivityBusinessAppointmentChooseEmployeeBinding>() {
+
+    companion object {
+        fun startInstance() {
+            val context = CommUtils.getContext()
+            val intent = Intent(context, BusinessAppointmentMakeActivity::class.java)
+            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+            context.startActivity(intent)
+        }
+    }
+
+    override fun getDataBindingConfig(): DataBindingConfig {
+        return DataBindingConfig(R.layout.activity_business_appointment_choose_employee)
+    }
+
+    override fun startObserve() {
+
+    }
+
+    override fun init(savedInstanceState: Bundle?) {
+
+
+    }
+
+
+}

+ 40 - 0
cpt_business/src/main/java/com/hongyegroup/cpt_business/ui/activity/BusinessCodeActivity.kt

@@ -0,0 +1,40 @@
+package com.hongyegroup.cpt_business.ui.activity
+
+import android.content.Intent
+import android.os.Bundle
+import com.guadou.cs_cptservices.base.activity.YYBaseVDBActivity
+import com.guadou.lib_baselib.base.vm.EmptyViewModel
+import com.guadou.lib_baselib.bean.DataBindingConfig
+import com.guadou.lib_baselib.utils.CommUtils
+import com.hongyegroup.cpt_business.R
+import com.hongyegroup.cpt_business.databinding.ActivityBusinessCodeBinding
+
+/**
+ * 公司的id二维码展示页面
+ */
+class BusinessCodeActivity : YYBaseVDBActivity<EmptyViewModel, ActivityBusinessCodeBinding>() {
+
+    companion object {
+        fun startInstance() {
+            val context = CommUtils.getContext()
+            val intent = Intent(context, BusinessCodeActivity::class.java)
+            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+            context.startActivity(intent)
+        }
+    }
+
+    override fun getDataBindingConfig(): DataBindingConfig {
+        return DataBindingConfig(R.layout.activity_business_code)
+    }
+
+    override fun startObserve() {
+
+    }
+
+    override fun init(savedInstanceState: Bundle?) {
+
+
+    }
+
+
+}

+ 40 - 0
cpt_business/src/main/java/com/hongyegroup/cpt_business/ui/activity/BusinessInfoEditActivity.kt

@@ -0,0 +1,40 @@
+package com.hongyegroup.cpt_business.ui.activity
+
+import android.content.Intent
+import android.os.Bundle
+import com.guadou.cs_cptservices.base.activity.YYBaseVDBActivity
+import com.guadou.lib_baselib.base.vm.EmptyViewModel
+import com.guadou.lib_baselib.bean.DataBindingConfig
+import com.guadou.lib_baselib.utils.CommUtils
+import com.hongyegroup.cpt_business.R
+import com.hongyegroup.cpt_business.databinding.ActivityBusinessInfoEditBinding
+
+/**
+ * 公司的信息编辑
+ */
+class BusinessInfoEditActivity : YYBaseVDBActivity<EmptyViewModel, ActivityBusinessInfoEditBinding>() {
+
+    companion object {
+        fun startInstance() {
+            val context = CommUtils.getContext()
+            val intent = Intent(context, BusinessInfoEditActivity::class.java)
+            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+            context.startActivity(intent)
+        }
+    }
+
+    override fun getDataBindingConfig(): DataBindingConfig {
+        return DataBindingConfig(R.layout.activity_business_info_edit)
+    }
+
+    override fun startObserve() {
+
+    }
+
+    override fun init(savedInstanceState: Bundle?) {
+
+
+    }
+
+
+}

+ 4 - 2
cpt_business/src/main/java/com/hongyegroup/cpt_business/BusinessMainActivity.kt

@@ -1,11 +1,13 @@
-package com.hongyegroup.cpt_business
+package com.hongyegroup.cpt_business.ui.activity
 
 import android.annotation.SuppressLint
 import android.content.Intent
+import android.os.Bundle
 import com.guadou.cs_cptservices.base.activity.YYBaseVDBActivity
 import com.guadou.lib_baselib.base.vm.EmptyViewModel
 import com.guadou.lib_baselib.bean.DataBindingConfig
 import com.guadou.lib_baselib.utils.CommUtils
+import com.hongyegroup.cpt_business.R
 import com.hongyegroup.cpt_business.databinding.ActivityBusinessMainBinding
 
 class BusinessMainActivity : YYBaseVDBActivity<EmptyViewModel, ActivityBusinessMainBinding>() {
@@ -28,7 +30,7 @@ class BusinessMainActivity : YYBaseVDBActivity<EmptyViewModel, ActivityBusinessM
     }
 
     @SuppressLint("SetTextI18n")
-    override fun init() {
+    override fun init(savedInstanceState: Bundle?) {
 
         mBinding.tvMainText.setText("Business Main Page")
     }

+ 28 - 0
cpt_business/src/main/java/com/hongyegroup/cpt_business/ui/fragment/BusinessAppointmentFragment.kt

@@ -0,0 +1,28 @@
+package com.hongyegroup.cpt_business.ui.fragment
+
+import com.guadou.cs_cptservices.base.fragment.YYBaseVDBFragment
+import com.guadou.lib_baselib.base.vm.EmptyViewModel
+import com.guadou.lib_baselib.bean.DataBindingConfig
+import com.hongyegroup.cpt_business.R
+import com.hongyegroup.cpt_business.databinding.FragmentBusinessAppointmentBinding
+
+
+/**
+ * 公司用户 首页第二个Tab
+ * 公司下面全部的预约列表 按时间日期计数
+ */
+class BusinessAppointmentFragment : YYBaseVDBFragment<EmptyViewModel, FragmentBusinessAppointmentBinding>() {
+
+    override fun getDataBindingConfig(): DataBindingConfig {
+        return DataBindingConfig(R.layout.fragment_business_appointment)
+    }
+
+    override fun startObserve() {
+
+    }
+
+    override fun init() {
+
+    }
+
+}

+ 28 - 0
cpt_business/src/main/java/com/hongyegroup/cpt_business/ui/fragment/BusinessEmployeesFragment.kt

@@ -0,0 +1,28 @@
+package com.hongyegroup.cpt_business.ui.fragment
+
+import com.guadou.cs_cptservices.base.fragment.YYBaseVDBFragment
+import com.guadou.lib_baselib.base.vm.EmptyViewModel
+import com.guadou.lib_baselib.bean.DataBindingConfig
+import com.hongyegroup.cpt_business.R
+import com.hongyegroup.cpt_business.databinding.FragmentBusinessEmployeesBinding
+
+
+/**
+ * 公司用户 首页第一个Tab
+ * 公司旗下全部员工列表
+ */
+class BusinessEmployeesFragment : YYBaseVDBFragment<EmptyViewModel, FragmentBusinessEmployeesBinding>() {
+
+    override fun getDataBindingConfig(): DataBindingConfig {
+        return DataBindingConfig(R.layout.fragment_business_employees)
+    }
+
+    override fun startObserve() {
+
+    }
+
+    override fun init() {
+
+    }
+
+}

+ 28 - 0
cpt_business/src/main/java/com/hongyegroup/cpt_business/ui/fragment/BusinessInfosFragment.kt

@@ -0,0 +1,28 @@
+package com.hongyegroup.cpt_business.ui.fragment
+
+import com.guadou.cs_cptservices.base.fragment.YYBaseVDBFragment
+import com.guadou.lib_baselib.base.vm.EmptyViewModel
+import com.guadou.lib_baselib.bean.DataBindingConfig
+import com.hongyegroup.cpt_business.R
+import com.hongyegroup.cpt_business.databinding.FragmentBusinessInfosBinding
+
+
+/**
+ * 公司用户 首页第三个Tab
+ * 公司的信息
+ */
+class BusinessInfosFragment : YYBaseVDBFragment<EmptyViewModel, FragmentBusinessInfosBinding>() {
+
+    override fun getDataBindingConfig(): DataBindingConfig {
+        return DataBindingConfig(R.layout.fragment_business_infos)
+    }
+
+    override fun startObserve() {
+
+    }
+
+    override fun init() {
+
+    }
+
+}

+ 28 - 0
cpt_business/src/main/java/com/hongyegroup/cpt_business/ui/fragment/BusinessSettingFragment.kt

@@ -0,0 +1,28 @@
+package com.hongyegroup.cpt_business.ui.fragment
+
+import com.guadou.cs_cptservices.base.fragment.YYBaseVDBFragment
+import com.guadou.lib_baselib.base.vm.EmptyViewModel
+import com.guadou.lib_baselib.bean.DataBindingConfig
+import com.hongyegroup.cpt_business.R
+import com.hongyegroup.cpt_business.databinding.FragmentBusinessSettingBinding
+
+
+/**
+ * 公司用户 首页第四个Tab
+ * 公司的相关设置
+ */
+class BusinessSettingFragment : YYBaseVDBFragment<EmptyViewModel, FragmentBusinessSettingBinding>() {
+
+    override fun getDataBindingConfig(): DataBindingConfig {
+        return DataBindingConfig(R.layout.fragment_business_setting)
+    }
+
+    override fun startObserve() {
+
+    }
+
+    override fun init() {
+
+    }
+
+}

+ 32 - 0
cpt_business/src/main/res/layout/activity_business_add_staff.xml

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:binding="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="RtlHardcoded">
+
+    <data>
+
+        <import type="android.text.TextUtils" />
+
+    </data>
+
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@color/white"
+        tools:context=".ui.activity.BusinessMainActivity">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="Add Staff"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+</layout>

+ 0 - 0
cpt_business/src/main/res/layout/activity_business_appointment_choose_employee.xml


Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels