登录逻辑修改

main
chenglifeng 8 months ago
parent 9c4465c1e3
commit c7131b3992
  1. 42
      app/src/main/java/com/project/survey/logic/viewmodel/LoginViewModel.kt
  2. 19
      app/src/main/java/com/project/survey/network/Api.kt
  3. 12
      app/src/main/java/com/project/survey/ui/SplashActivity.kt
  4. 20
      app/src/main/java/com/project/survey/ui/base/BaseBindingActivity.kt
  5. 57
      app/src/main/java/com/project/survey/ui/home/MeFragment.kt
  6. 36
      app/src/main/java/com/project/survey/ui/login/LoginActivity.kt
  7. 48
      app/src/main/java/com/project/survey/ui/login/LoginInputCodeActivity.kt
  8. 19
      app/src/main/java/com/project/survey/ui/project/ProjectListActivity.kt
  9. 3
      app/src/main/java/com/project/survey/util/ActivityNavUtil.kt
  10. 2
      app/src/main/java/com/project/survey/widget/edittext/verificationcode/SerialnumberLayout.java
  11. 2
      app/src/main/res/layout/activity_forget_pwd_input_code.xml
  12. 3
      app/src/main/res/layout/activity_login.xml
  13. 25
      app/src/main/res/layout/activity_login_input_code.xml
  14. 4
      app/src/main/res/layout/fragment_me.xml
  15. 2
      app/src/main/res/layout/view_password.xml
  16. 3
      app/src/main/res/values/color.xml
  17. 1
      app/src/main/res/values/strings.xml

@ -2,22 +2,64 @@ package com.project.survey.logic.viewmodel
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import blankj.utilcode.util.ActivityUtils
import com.project.survey.constants.EventConstants import com.project.survey.constants.EventConstants
import com.project.survey.constants.SPConstants import com.project.survey.constants.SPConstants
import com.project.survey.logic.bean.LoginBean import com.project.survey.logic.bean.LoginBean
import com.project.survey.logic.event.Message import com.project.survey.logic.event.Message
import com.project.survey.network.RetrofitClient import com.project.survey.network.RetrofitClient
import com.project.survey.ui.MainActivity
import com.project.survey.ui.login.LoginActivity
import com.project.survey.ui.login.LoginInputCodeActivity
import com.project.survey.util.SPUtils import com.project.survey.util.SPUtils
import kotlinx.coroutines.delay
class LoginViewModel : BaseViewModel() { class LoginViewModel : BaseViewModel() {
val api = RetrofitClient.createApiService() val api = RetrofitClient.createApiService()
// val externalPersonSMSCodeResponse: LiveData<Any>
// get() = _externalPersonSMSCodeResponse
// private val _externalPersonSMSCodeResponse = MutableLiveData<Any>()
/**
* 外部用户获取验证码
*/
fun fetchExternalPersonSMSCode(account: String, password: String) {
launch {
val res = api.fetchExternalPersonSMSCode(account, password)
if (res.success) {
// _externalPersonSMSCodeResponse.postValue(res.data)
LoginInputCodeActivity.start(account, password, res.data?:"")
}
}
}
val loginResponse: LiveData<LoginBean> val loginResponse: LiveData<LoginBean>
get() = _loginResponse get() = _loginResponse
private val _loginResponse = MutableLiveData<LoginBean>() private val _loginResponse = MutableLiveData<LoginBean>()
/**
* 外部用户登录
*/
fun externalPersonLogin(account: String, password: String, code: String){
launch {
val res = api.externalPersonLogin(account, password, code)
if (res.success) {
// _externalPersonSMSCodeResponse.postValue(res.data)
SPUtils.put(SPConstants.TOKEN, res.data.token)
SPUtils.put(SPConstants.ACCOUNT, account)
SPUtils.put(SPConstants.MOBILE_PHONE, res.data.mobilePhone)
msgEvent.postValue(Message(EventConstants.LOGIN_STATUS))
MainActivity.start()
ActivityUtils.finishActivity(LoginActivity::class.java)
ActivityUtils.finishActivity(LoginInputCodeActivity::class.java)
}
}
}
/** /**
* 登录 * 登录
*/ */

@ -16,6 +16,25 @@ interface Api {
@Query("password") password: String @Query("password") password: String
): HttpResult<LoginBean> ): HttpResult<LoginBean>
/**
* 外部用户获取验证码
*/
@GET("/je/personInfo/sendSms")
suspend fun fetchExternalPersonSMSCode(
@Query("account") account: String,
@Query("password") password: String
): HttpResult<String?>
/**
* 外部用户登录
*/
@GET("/je/personInfo/externalEntry")
suspend fun externalPersonLogin(
@Query("account") account: String,
@Query("password") password: String,
@Query("code") code: String
): HttpResult<LoginBean>
/** /**
* 获取用户可访问的所有项目的信息 * 获取用户可访问的所有项目的信息
*/ */

@ -1,7 +1,10 @@
package com.project.survey.ui package com.project.survey.ui
import com.project.survey.constants.SPConstants
import com.project.survey.databinding.ActivitySplashBinding import com.project.survey.databinding.ActivitySplashBinding
import com.project.survey.ui.base.BaseBindingActivity import com.project.survey.ui.base.BaseBindingActivity
import com.project.survey.ui.login.LoginActivity
import com.project.survey.util.SPUtils
/** /**
* 启动页 * 启动页
@ -11,11 +14,16 @@ class SplashActivity : BaseBindingActivity<ActivitySplashBinding>() {
override fun getBinding(): ActivitySplashBinding = ActivitySplashBinding.inflate(layoutInflater) override fun getBinding(): ActivitySplashBinding = ActivitySplashBinding.inflate(layoutInflater)
override fun initView() { override fun initView() {
MainActivity.start()
finish()
} }
override fun initData() { override fun initData() {
if (SPUtils.getString(SPConstants.TOKEN).isNullOrBlank()) {
LoginActivity.start()
} else {
MainActivity.start()
}
finish()
} }
override fun initListener() { override fun initListener() {

@ -2,20 +2,17 @@ package com.project.survey.ui.base
import android.os.Bundle import android.os.Bundle
import android.view.MenuItem import android.view.MenuItem
import android.view.View
import android.view.WindowManager import android.view.WindowManager
import androidx.annotation.StringRes import androidx.annotation.StringRes
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate import androidx.appcompat.app.AppCompatDelegate
import androidx.appcompat.widget.Toolbar import androidx.appcompat.widget.Toolbar
import androidx.lifecycle.LiveData import androidx.core.content.ContextCompat
import androidx.lifecycle.MutableLiveData
import androidx.viewbinding.ViewBinding import androidx.viewbinding.ViewBinding
import blankj.utilcode.util.Utils import blankj.utilcode.util.Utils
import com.gyf.immersionbar.ImmersionBar
import com.project.survey.App import com.project.survey.App
import com.project.survey.R import com.project.survey.R
import com.project.survey.ui.interfacee.ImmersionAction
import com.project.survey.util.Tools
import com.project.survey.util.param.ParamUtil import com.project.survey.util.param.ParamUtil
import org.polaric.colorful.Colorful import org.polaric.colorful.Colorful
@ -40,7 +37,7 @@ abstract class BaseBindingActivity<VB : ViewBinding> : AppCompatActivity() {
// //设置背景色 // //设置背景色
// mBinding.root.setBackgroundColor(Tools.getColor(R.color.bg_content)) // mBinding.root.setBackgroundColor(Tools.getColor(R.color.bg_content))
initToolBar() // initToolBar()
initView() initView()
initListener() initListener()
initData() initData()
@ -86,4 +83,15 @@ abstract class BaseBindingActivity<VB : ViewBinding> : AppCompatActivity() {
return true return true
} }
protected fun immersionToolbar(toolbar: Toolbar, title: String? = null) {
ImmersionBar.with(this)
.statusBarDarkFont(true)
.titleBarMarginTop(toolbar)
.init()
setSupportActionBar(toolbar)
toolbar.setBackgroundColor(0)
toolbar.setTitleTextColor(ContextCompat.getColor(this, R.color.text_color_main))
toolbar.setTitle(title)
}
} }

@ -3,6 +3,7 @@ package com.project.survey.ui.home
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.ViewGroup import android.view.ViewGroup
import androidx.fragment.app.viewModels import androidx.fragment.app.viewModels
import blankj.utilcode.util.ActivityUtils
import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.MaterialDialog
import com.project.survey.BuildConfig import com.project.survey.BuildConfig
import com.project.survey.R import com.project.survey.R
@ -12,9 +13,11 @@ import com.project.survey.databinding.FragmentMeBinding
import com.project.survey.extend.setOnClickNoRepeatListener import com.project.survey.extend.setOnClickNoRepeatListener
import com.project.survey.logic.event.Message import com.project.survey.logic.event.Message
import com.project.survey.logic.viewmodel.LoginViewModel import com.project.survey.logic.viewmodel.LoginViewModel
import com.project.survey.ui.MainActivity
import com.project.survey.ui.base.BaseBindingFragment import com.project.survey.ui.base.BaseBindingFragment
import com.project.survey.ui.login.LoginActivity import com.project.survey.ui.login.LoginActivity
import com.project.survey.ui.project.ProjectListActivity import com.project.survey.ui.project.ProjectListActivity
import com.project.survey.util.ActivityNavUtil
import com.project.survey.util.SPUtils import com.project.survey.util.SPUtils
/** /**
@ -31,44 +34,44 @@ class MeFragment : BaseBindingFragment<FragmentMeBinding>() {
} }
override fun initData() { override fun initData() {
viewModel.msgEvent.observe(this) { mBinding.tvName.text = SPUtils.getString(SPConstants.ACCOUNT)
updateUIByData() // viewModel.msgEvent.observe(this) {
} // updateUIByData()
updateUIByData() // }
if (BuildConfig.DEBUG) { if (BuildConfig.DEBUG) {
mBinding.tvVersion.text = BuildConfig.VERSION_NAME mBinding.tvVersion.text = BuildConfig.VERSION_NAME
} }
} }
private fun updateUIByData(){ private fun updateUIByData() {
val token = SPUtils.getString(SPConstants.TOKEN) ?: "" val token = SPUtils.getString(SPConstants.TOKEN) ?: ""
mBinding.tvLoginOrOut.text =
if (token.isBlank())
getString(R.string.login)
else
getString(R.string.login_out)
mBinding.tvName.text = mBinding.tvName.text =
if (token.isBlank()) "请登录" else SPUtils.getString(SPConstants.ACCOUNT) ?: "" if (token.isBlank()) "请登录" else SPUtils.getString(SPConstants.ACCOUNT) ?: ""
} }
override fun initListener() { override fun initListener() {
mBinding.tvLoginOrOut.setOnClickNoRepeatListener { mBinding.tvLoginOut.setOnClickNoRepeatListener {
if (SPUtils.getString(SPConstants.TOKEN).isNullOrBlank()) { // 退出登录
// 登录 MaterialDialog.Builder(mContext)
LoginActivity.start() .title("确定退出吗?")
} else { .negativeText("取消")
// 退出登录 .positiveText("退出")
MaterialDialog.Builder(mContext) .onPositive { _, _ ->
.title("确定退出吗?") SPUtils.removeKey(SPConstants.TOKEN)
.negativeText("取消") SPUtils.removeKey(SPConstants.ACCOUNT)
.positiveText("退出") SPUtils.removeKey(SPConstants.MOBILE_PHONE)
.onPositive { _, _ -> ActivityNavUtil.finishActivity<MainActivity>()
SPUtils.removeKey(SPConstants.TOKEN) ActivityNavUtil.startActivity<LoginActivity> { }
SPUtils.removeKey(SPConstants.ACCOUNT) // viewModel.msgEvent.postValue(Message(EventConstants.LOGIN_STATUS))
viewModel.msgEvent.postValue(Message(EventConstants.LOGIN_STATUS)) }
} .show()
.show() // if (SPUtils.getString(SPConstants.TOKEN).isNullOrBlank()) {
} // // 登录
// LoginActivity.start()
// } else {
//
// }
} }
mBinding.llSwitchProject.setOnClickNoRepeatListener { mBinding.llSwitchProject.setOnClickNoRepeatListener {
ProjectListActivity.start() ProjectListActivity.start()

@ -40,10 +40,14 @@ class LoginActivity : BaseBindingActivity<ActivityLoginBinding>() {
mBinding.tvError.text = it mBinding.tvError.text = it
mBinding.tvError.isVisibleOrInvisible(true) mBinding.tvError.isVisibleOrInvisible(true)
} }
// 外部账号获取验证码
// viewModel.externalPersonSMSCodeResponse.observe(this) {
// LoginInputCodeActivity.start()
// }
// 登录成功 // 登录成功
viewModel.loginResponse.observe(this) { // viewModel.loginResponse.observe(this) {
finish() // finish()
} // }
} }
override fun initListener() { override fun initListener() {
@ -61,16 +65,18 @@ class LoginActivity : BaseBindingActivity<ActivityLoginBinding>() {
// 登录 // 登录
mBinding.btnLogin.setOnClickNoRepeatListener { mBinding.btnLogin.setOnClickNoRepeatListener {
val account = mBinding.etAccount.text.toString()
val password = mBinding.passwordView.getText()
if (account.isBlank() || password.isNullOrBlank()) {
toast("账号或密码不能为空")
return@setOnClickNoRepeatListener
}
if (isOutLogin) { if (isOutLogin) {
loginByOut() // 外部账号登录
viewModel.fetchExternalPersonSMSCode(account, password)
} else { } else {
val account = mBinding.etAccount.text.toString() toast("开发中……")
val password = mBinding.passwordView.getText()
if (account.isBlank() || password.isNullOrBlank()) {
toast("账号或密码不能为空")
return@setOnClickNoRepeatListener
}
viewModel.login(account, password)
} }
} }
@ -87,14 +93,6 @@ class LoginActivity : BaseBindingActivity<ActivityLoginBinding>() {
startActivity(Intent(this, LoginInputCodeActivity::class.java)) startActivity(Intent(this, LoginInputCodeActivity::class.java))
} }
/**
* 外部登录
*/
private fun loginByOut() {
}
private fun refreshInnerOutUi() { private fun refreshInnerOutUi() {
if (isOutLogin) { if (isOutLogin) {
//当前外部登录 //当前外部登录

@ -1,17 +1,49 @@
package com.project.survey.ui.login package com.project.survey.ui.login
import android.util.Log import androidx.activity.viewModels
import com.project.survey.ui.base.BaseBindingActivity import com.project.survey.R
import com.project.survey.databinding.ActivityLoginInputCodeBinding import com.project.survey.databinding.ActivityLoginInputCodeBinding
import com.project.survey.logic.viewmodel.LoginViewModel
import com.project.survey.ui.base.BaseBindingActivity
import com.project.survey.util.ActivityNavUtil
import com.project.survey.util.KeyboardUtils
import com.project.survey.util.param.Param
class LoginInputCodeActivity : BaseBindingActivity<ActivityLoginInputCodeBinding>() { class LoginInputCodeActivity : BaseBindingActivity<ActivityLoginInputCodeBinding>() {
override fun getBinding(): ActivityLoginInputCodeBinding {
return ActivityLoginInputCodeBinding.inflate(layoutInflater) companion object {
fun start(account: String, password: String, mobile:String) {
ActivityNavUtil.startActivity<LoginInputCodeActivity> {
putString("account", account)
putString("password", password)
putString("mobile", mobile)
}
}
} }
override fun getBinding(): ActivityLoginInputCodeBinding =
ActivityLoginInputCodeBinding.inflate(layoutInflater)
private val viewModel: LoginViewModel by viewModels()
@Param
private lateinit var account: String
@Param
private lateinit var password: String
@Param
private lateinit var mobile: String
override fun initView() { override fun initView() {
mBinding.etInputCode.setOnInputListener { immersionToolbar(mBinding.ilToolBar.toolbar)
Log.d("hwhw", "sss" + it)
if (mobile.length == 11) {
mBinding.tvTips.text =
String.format(
getString(R.string.the_verification_code_was_sent_for_login),
mobile.replace("(\\d{3})\\d{4}(\\d{4})","$1****$2")
)
} }
} }
@ -20,7 +52,9 @@ class LoginInputCodeActivity : BaseBindingActivity<ActivityLoginInputCodeBinding
} }
override fun initListener() { override fun initListener() {
mBinding.etInputCode.setOnInputListener {
viewModel.externalPersonLogin(account, password, it)
}
} }
} }

@ -3,8 +3,6 @@ package com.project.survey.ui.project
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.core.content.ContextCompat
import com.gyf.immersionbar.ImmersionBar
import com.project.survey.R import com.project.survey.R
import com.project.survey.constants.SPConstants import com.project.survey.constants.SPConstants
import com.project.survey.databinding.ActivityProjectListBinding import com.project.survey.databinding.ActivityProjectListBinding
@ -30,15 +28,16 @@ class ProjectListActivity : BaseBindingActivity<ActivityProjectListBinding>() {
private val adapter by lazy { ProjectListAdapter() } private val adapter by lazy { ProjectListAdapter() }
override fun initView() { override fun initView() {
ImmersionBar.with(this) immersionToolbar(mBinding.ilToolBar.toolbar, "项目列表")
.statusBarDarkFont(true) // ImmersionBar.with(this)
.titleBarMarginTop(mBinding.ilToolBar.toolbar) // .statusBarDarkFont(true)
.init() // .titleBarMarginTop(mBinding.ilToolBar.toolbar)
setSupportActionBar(mBinding.ilToolBar.toolbar) // .init()
// setSupportActionBar(mBinding.ilToolBar.toolbar)
mBinding.ilToolBar.toolbar.setBackgroundColor(0) // mBinding.ilToolBar.toolbar.setBackgroundColor(0)
mBinding.ilToolBar.toolbar.setTitle("项目列表") // mBinding.ilToolBar.toolbar.setTitle("项目列表")
mBinding.ilToolBar.toolbar.setTitleTextColor(ContextCompat.getColor(this, R.color.text_color_main)) // mBinding.ilToolBar.toolbar.setTitleTextColor(ContextCompat.getColor(this, R.color.text_color_main))
// initTabLayout() // initTabLayout()
mBinding.recyclerView.addItemDecoration(HorDividerDecoration(this)) mBinding.recyclerView.addItemDecoration(HorDividerDecoration(this))

@ -10,4 +10,7 @@ object ActivityNavUtil {
ActivityUtils.startActivity(Bundle().apply(block), T::class.java) ActivityUtils.startActivity(Bundle().apply(block), T::class.java)
} }
inline fun <reified T : AppCompatActivity> finishActivity(){
ActivityUtils.finishActivity(T::class.java)
}
} }

@ -18,6 +18,7 @@ import android.widget.RelativeLayout;
import android.widget.Toast; import android.widget.Toast;
import com.project.survey.R; import com.project.survey.R;
import com.project.survey.util.KeyboardUtils;
import com.project.survey.util.Tools; import com.project.survey.util.Tools;
import java.util.ArrayList; import java.util.ArrayList;
@ -167,6 +168,7 @@ public class SerialnumberLayout extends RelativeLayout {
editViews.get(0).setFocusable(true); editViews.get(0).setFocusable(true);
editViews.get(0).setFocusableInTouchMode(true); editViews.get(0).setFocusableInTouchMode(true);
editViews.get(0).requestFocus(); editViews.get(0).requestFocus();
KeyboardUtils.showSoftInput(editViews.get(0));
} }
private void showCode(int location, String code) { private void showCode(int location, String code) {

@ -34,7 +34,7 @@
android:layout_marginHorizontal="@dimen/sw_22dp" android:layout_marginHorizontal="@dimen/sw_22dp"
android:layout_marginTop="@dimen/sw_24dp" android:layout_marginTop="@dimen/sw_24dp"
app:code_number="6" app:code_number="6"
app:line_color_default="@color/c_dfdfdf" app:line_color_default="@color/text_color_df"
app:line_color_focus="@color/colorPrimary" /> app:line_color_focus="@color/colorPrimary" />
</LinearLayout> </LinearLayout>

@ -35,7 +35,8 @@
android:id="@+id/etAccount" android:id="@+id/etAccount"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="" android:singleLine="true"
android:imeOptions="actionNext"
android:textColor="@color/text_color_20" android:textColor="@color/text_color_20"
android:textSize="14sp" /> android:textSize="14sp" />

@ -5,24 +5,27 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"> android:orientation="vertical">
<include layout="@layout/sh_toolbar" /> <include
android:id="@+id/ilToolBar"
layout="@layout/sh_toolbar" />
<TextView <TextView
android:id="@+id/tvAccountDesc" android:id="@+id/tvAccountDesc"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/sw_22dp" android:layout_marginHorizontal="@dimen/margin_side"
android:layout_marginTop="@dimen/sw_55dp" android:layout_marginTop="12dp"
android:text="@string/please_input_code" android:text="@string/please_input_code"
android:textColor="@color/text_color_1" android:textColor="@color/text_color_20"
android:textSize="@dimen/sw_20sp" android:textSize="20sp"
android:textStyle="bold" /> android:textStyle="bold" />
<TextView <TextView
android:id="@+id/tvTips"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/sw_22dp" android:layout_marginHorizontal="@dimen/margin_side"
android:layout_marginTop="@dimen/sw_6dp" android:layout_marginTop="6dp"
android:text="@string/the_verification_code_was_sent_for_login" android:text="@string/the_verification_code_was_sent_for_login"
android:textColor="@color/text_color_727778" android:textColor="@color/text_color_727778"
android:textSize="@dimen/sw_14sp" /> android:textSize="@dimen/sw_14sp" />
@ -31,11 +34,11 @@
android:id="@+id/etInputCode" android:id="@+id/etInputCode"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/sw_22dp" android:layout_marginHorizontal="@dimen/margin_side"
android:layout_marginTop="@dimen/sw_24dp" android:layout_marginTop="24dp"
app:code_number="6" app:code_number="6"
app:line_color_default="@color/c_dfdfdf" app:line_color_default="@color/text_color_df"
app:line_color_focus="@color/colorPrimary" /> app:line_color_focus="@color/text_color_396bd0" />
</LinearLayout> </LinearLayout>

@ -138,10 +138,10 @@
</LinearLayout> </LinearLayout>
<TextView <TextView
android:id="@+id/tvLoginOrOut" android:id="@+id/tvLoginOut"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="48dp" android:layout_height="48dp"
android:text="@string/login" android:text="@string/login_out"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:gravity="center" android:gravity="center"
android:background="@color/white" android:background="@color/white"

@ -7,6 +7,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:inputType="textPassword" android:inputType="textPassword"
android:paddingEnd="@dimen/sw_24dp" android:paddingEnd="@dimen/sw_24dp"
android:singleLine="true"
android:imeOptions="actionNext"
android:textColor="@color/text_color_20" android:textColor="@color/text_color_20"
android:textSize="14sp" /> android:textSize="14sp" />

@ -11,7 +11,7 @@
<color name="c_2964da">#2964DA</color> <color name="c_2964da">#2964DA</color>
<color name="c_ebebeb">#EBEBEB</color> <color name="c_ebebeb">#EBEBEB</color>
<color name="text_color_727778">#727778</color> <color name="text_color_727778">#727778</color>
<color name="c_dfdfdf">#DFDFDF</color> <color name="text_color_df">#DFDFDF</color>
<color name="hor_line">#EBEBEB</color> <color name="hor_line">#EBEBEB</color>
<color name="transparent">#00000000</color> <color name="transparent">#00000000</color>
<color name="c_10000000">#10000000</color> <color name="c_10000000">#10000000</color>
@ -23,6 +23,7 @@
<color name="text_color_fff">#FFFFFF</color> <color name="text_color_fff">#FFFFFF</color>
<color name="text_color_20">#202020</color> <color name="text_color_20">#202020</color>
<color name="text_color_CC5155">#CC5155</color> <color name="text_color_CC5155">#CC5155</color>
<color name="text_color_396bd0">#396BD0</color>
<color name="bg_color_home_page">#F9FAFB</color> <color name="bg_color_home_page">#F9FAFB</color>
<color name="bg_color_main_tab">#FFFFFF</color> <color name="bg_color_main_tab">#FFFFFF</color>

@ -40,6 +40,7 @@
<string name="xui_met_not_allow_empty" translatable="false">输入不能为空!</string> <string name="xui_met_not_allow_empty" translatable="false">输入不能为空!</string>
<string name="please_input_code">请输入验证码</string> <string name="please_input_code">请输入验证码</string>
<string name="the_verification_code_was_sent_for_login">验证码已发送至%1$s的手机,如您已更换手机,请联系管理员。</string> <string name="the_verification_code_was_sent_for_login">验证码已发送至%1$s的手机,如您已更换手机,请联系管理员。</string>
<!-- <string name="the_verification_code_was_sent_for_login">验证码已发送至您的手机,如您已更换手机,请联系管理员。</string>-->
<string name="the_verification_code_was_sent_for_forget_pwd">验证码已发送至%1$s的手机,请输入6位数验证码。</string> <string name="the_verification_code_was_sent_for_forget_pwd">验证码已发送至%1$s的手机,请输入6位数验证码。</string>
<string name="authentication">身份验证</string> <string name="authentication">身份验证</string>
<string name="please_input_username">请输入账号。</string> <string name="please_input_username">请输入账号。</string>

Loading…
Cancel
Save