diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0879cc2..661682c 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -100,6 +100,10 @@
android:name=".ui.activity.vpn.AuthSuccessActivity"
android:exported="false"
android:screenOrientation="portrait" />
+
Rows;
+
+ public int getTotal() {
+ return Total;
+ }
+
+ public void setTotal(int Total) {
+ this.Total = Total;
+ }
+
+ public List getRows() {
+ return Rows;
+ }
+
+ public void setRows(List Rows) {
+ this.Rows = Rows;
+ }
+
+ public static class RowsBean {
+ /**
+ * result : 1
+ * msg : 验证码发送成功!
+ * UserID : ZH_Admin
+ */
+
+ private String result;
+ private String msg;
+ private String UserID;
+
+ private String token;
+ private String token_exp;
+
+ public String getResult() {
+ return result;
+ }
+
+ public void setResult(String result) {
+ this.result = result;
+ }
+
+ public String getMsg() {
+ return msg;
+ }
+
+ public void setMsg(String msg) {
+ this.msg = msg;
+ }
+
+ public String getUserID() {
+ return UserID;
+ }
+
+ public void setUserID(String UserID) {
+ this.UserID = UserID;
+ }
+
+ public String getToken() {
+ return token;
+ }
+
+ public void setToken(String token) {
+ this.token = token;
+ }
+
+ public String getToken_exp() {
+ return token_exp;
+ }
+
+ public void setToken_exp(String token_exp) {
+ this.token_exp = token_exp;
+ }
+ }
+}
diff --git a/app/src/main/java/com/rehome/dywoa/ui/activity/LoginActivity.kt b/app/src/main/java/com/rehome/dywoa/ui/activity/LoginActivity.kt
index 23b812d..08ef7e4 100644
--- a/app/src/main/java/com/rehome/dywoa/ui/activity/LoginActivity.kt
+++ b/app/src/main/java/com/rehome/dywoa/ui/activity/LoginActivity.kt
@@ -157,6 +157,16 @@ class LoginActivity : BaseActivityOaToolbarViewBinding() {
SFUemSDK.getInstance().logout()
showToast(R.string.str_vpn_logout)
}
+ binding.tvSbcChangePwd.setOnClickListener {
+ if (TextUtils.isEmpty(binding.etUsername.text.toString())) {
+ showToast("请先填写用户名/工号")
+ }else{
+ val intent = Intent(context, WjmmGetVerificationCodeActivity::class.java)
+ intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP)
+ intent.putExtra("account",binding.etUsername.text.toString())
+ startActivity(intent)
+ }
+ }
}
@SuppressLint("SetTextI18n")
@@ -188,12 +198,12 @@ class LoginActivity : BaseActivityOaToolbarViewBinding() {
if (isApkInDebug(context)) {
//测试
-// binding.etUsername.setText("371522")
-// binding.etPassword.setText("A000000a")
+ binding.etUsername.setText("371522")
+ binding.etPassword.setText("A000000a.")
//ceshi1
binding.etUsername.setText("ceshi1")
- binding.etPassword.setText("A000000a")
+ binding.etPassword.setText("A000000a.")
// binding.etUsername.setText("CY00011")
// binding.etPassword.setText("A000000a")
diff --git a/app/src/main/java/com/rehome/dywoa/ui/activity/WjmmGetVerificationCodeActivity.kt b/app/src/main/java/com/rehome/dywoa/ui/activity/WjmmGetVerificationCodeActivity.kt
new file mode 100644
index 0000000..4572f9b
--- /dev/null
+++ b/app/src/main/java/com/rehome/dywoa/ui/activity/WjmmGetVerificationCodeActivity.kt
@@ -0,0 +1,211 @@
+package com.rehome.dywoa.ui.activity
+
+
+import android.text.Editable
+import android.text.TextUtils
+import android.util.Log
+import android.view.View
+import com.google.gson.Gson
+import com.rehome.dywoa.Contans
+import com.rehome.dywoa.R
+import com.rehome.dywoa.base.BaseActivityOaToolbarViewBinding
+import com.rehome.dywoa.bean.YzmBean
+import com.rehome.dywoa.databinding.ActivityWjmmGetVerificationCodeBinding
+import com.rehome.dywoa.utils.GsonUtils
+import com.rehome.dywoa.utils.HttpListener
+import com.rehome.dywoa.utils.NohttpUtils
+import com.rehome.dywoa.utils.RSAUtils
+import com.rehome.dywoa.utils.UiUtlis
+import com.yolanda.nohttp.NoHttp
+import com.yolanda.nohttp.RequestMethod
+import java.util.*
+
+class WjmmGetVerificationCodeActivity :
+ BaseActivityOaToolbarViewBinding() {
+
+ private var token: String = ""
+ private var token_exp: String = ""
+
+ override fun getViewBinding() = ActivityWjmmGetVerificationCodeBinding.inflate(layoutInflater)
+
+ override fun getToolbar() = binding.toolbarView.toolbar
+
+ override fun initView() {
+ initToolbar("修改密码", "") {}
+
+ }
+
+ override fun initData() {
+ var account = intent.getStringExtra("account")
+ if(account!=null){
+ binding.txGh.setText(account)
+ }
+ binding.buttonDjs.setOnClickListener(View.OnClickListener {
+ if (TextUtils.isEmpty(binding.txGh.text.toString().trim())) {
+ binding.txGh.error = "没有满足大写、小写、数字、符号"
+ showToast("请先输入工号!")
+ } else {
+ if (TextUtils.isEmpty(
+ binding.sjh.text.toString().trim()
+ ) || binding.sjh.text.toString().trim().length != 11
+ ) {
+ binding.sjh.error = "没有满足大写、小写、数字、符号"
+ showToast("手机号输入不正确")
+ } else {
+ binding.buttonDjs.start()
+ getYzm()
+ }
+ }
+ })
+ binding.buttonNext.setOnClickListener(View.OnClickListener {
+ if (TextUtils.isEmpty(binding.txGh.text.toString().trim())) {
+ binding.txGh.error = "没有满足大写、小写、数字、符号"
+ showToast("请先输入工号!")
+ } else if (TextUtils.isEmpty(
+ binding.sjh.text.toString().trim()
+ ) || binding.sjh.text.toString().trim().length != 11
+ ) {
+ binding.sjh.error = "没有满足大写、小写、数字、符号"
+ showToast("手机号输入不正确")
+ } else if (TextUtils.isEmpty(binding.yzm.text.toString().trim())) {
+ binding.yzm.error = "没有满足大写、小写、数字、符号"
+ showToast("请输入验证码")
+ } else {
+ checkVerificationCode()
+ }
+ })
+
+// binding.txGh.setText("ZHPS_Admin")
+// binding.sjh.setText("15307858521")
+ }
+
+ private fun getYzm() {
+ val json: String = getYzmParam()
+
+ val url = Contans.IP + Contans.GETYZMANDCHECKYZMANDMODIFYMIMA
+ val request = NoHttp.createStringRequest(url, RequestMethod.POST)
+ request.setDefineRequestBodyForJson(json)
+ showLog(url)
+
+ NohttpUtils.getInstance().add(this, 0, request, object : HttpListener {
+ override fun onSucceed(what: Int, response: com.yolanda.nohttp.rest.Response?) {
+ val jsonResult = response?.get()
+
+ showLog("-----getYzm------")
+ showLog(jsonResult)
+
+ val jsonDecode = RSAUtils.decryptBASE64StrClient(jsonResult)
+ if (TextUtils.isEmpty(jsonDecode)) {
+ showToast(UiUtlis.getString(context, R.string.data_error))
+ } else {
+ val bean: YzmBean? =
+ GsonUtils.GsonToBean(jsonDecode, YzmBean::class.java)
+ showLog(jsonDecode);
+ if (bean != null && bean.rows != null && bean.rows.size > 0 && bean.rows[0].result == "1") {
+ showToast(bean.rows[0].msg)
+ binding.yzm.visibility = View.VISIBLE
+ binding.verificationCodeLine.visibility = View.VISIBLE
+ binding.buttonNext.visibility = View.VISIBLE
+ if(bean.rows[0].token!=null){
+ token = bean.rows[0].token
+ }
+ if(bean.rows[0].token_exp!=null){
+ token_exp = bean.rows[0].token_exp
+ }
+ } else {
+ if (bean != null) {
+ showToast(bean.rows[0].msg)
+ }
+ }
+ }
+ }
+
+ override fun onFailed(what: Int, response: com.yolanda.nohttp.rest.Response?) {
+ Log.i("login", "onError")
+ }
+ }, true, true, "请稍候...")
+
+ }
+
+ //调用接口检查输入的验证码是否正确
+ private fun checkVerificationCode() {
+
+ val json: String = getCheckYzmParam()
+ val url = Contans.IP + Contans.GETYZMANDCHECKYZMANDMODIFYMIMA
+ val request = NoHttp.createStringRequest(url, RequestMethod.POST)
+ request.setDefineRequestBodyForJson(json)
+ showLog(url)
+
+
+ NohttpUtils.getInstance().add(this, 0,token, request, object : HttpListener {
+ override fun onSucceed(what: Int, response: com.yolanda.nohttp.rest.Response?) {
+ val jsonResult = response?.get()
+
+ showLog("-----CheckYzm------")
+ showLog(jsonResult)
+
+ val jsonDecode = RSAUtils.decryptBASE64StrClient(jsonResult)
+ if (TextUtils.isEmpty(jsonDecode)) {
+ showToast(UiUtlis.getString(context, R.string.data_error))
+ } else {
+ val bean: YzmBean? =
+ GsonUtils.GsonToBean(jsonDecode, YzmBean::class.java)
+ showLog(jsonDecode);
+ if (bean != null && bean.rows != null && bean.rows.size > 0 && bean.rows[0].result == "2") {
+ //验证码正确
+// val intent = Intent(
+// context,
+// WjmmActivity::class.java
+// )
+// intent.putExtra("gh", binding.txGh.text.toString().trim())
+// intent.putExtra("sjh", binding.sjh.text.toString().trim())
+// if(!TextUtils.isEmpty(token)){
+// intent.putExtra("token", token)
+// intent.putExtra("token_exp", token_exp)
+// startActivity(intent)
+// }else{
+// showToast("验证码校验失败")
+// }
+ } else {
+ if (bean != null) {
+ showToast(bean.rows[0].msg)
+ }
+ }
+ }
+ }
+
+ override fun onFailed(what: Int, response: com.yolanda.nohttp.rest.Response?) {
+ Log.i("login", "onError")
+ }
+ }, true, true, "请稍候...")
+ }
+
+ fun getYzmParam(): String {
+
+ val param= mutableMapOf()
+ param["account"] = Objects.requireNonNull(binding.txGh.text).toString().trim()
+
+ val json = Gson().toJson(param)
+ val jsonEncrypt = RSAUtils.encryptBASE64Str(json)
+ showLog(json);
+ showLog(jsonEncrypt)
+ return jsonEncrypt
+ }
+
+ fun getCheckYzmParam(): String {
+
+ val param= mutableMapOf()
+ param["userid"] = Objects.requireNonNull(binding.txGh.text).toString().trim()
+ param["type"] = "3"
+ param["telphone"] = Objects.requireNonNull(binding.sjh.text).toString().trim()
+ param["verificationcode"] = Objects.requireNonNull(binding.yzm.text).toString().trim()
+ param["token"] = token
+ param["token_exp"] = token_exp
+
+ val json = Gson().toJson(param)
+ val jsonEncrypt = RSAUtils.encryptBASE64Str(json)
+ showLog(json);
+ return jsonEncrypt
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/rehome/dywoa/utils/NohttpUtils.java b/app/src/main/java/com/rehome/dywoa/utils/NohttpUtils.java
index 1706237..a706bf4 100644
--- a/app/src/main/java/com/rehome/dywoa/utils/NohttpUtils.java
+++ b/app/src/main/java/com/rehome/dywoa/utils/NohttpUtils.java
@@ -118,6 +118,28 @@ public class NohttpUtils {
mQueue.add(what, request, new HttpResponseListener(mActivity, request, callback, true, true, "加载中..."));
}
+ /**
+ * 添加请求
+ *
+ * @param mActivity activity
+ * @param what 请求码,用来区分队列中的请求
+ * @param token token
+ * @param request 请求
+ * @param callback 请求回调
+ * @param canCanel 是否可以取消请求
+ * @param isLoading 是否弹出对话框
+ * @param
+ */
+ public void add(Activity mActivity, int what,String token, Request request, HttpListener callback, boolean canCanel, boolean isLoading, String msg) {
+ if(token!=null){
+ String credential = "Bearer " + token;
+ request.addHeader("Authorization", credential);
+ showLog(request.url(),mActivity);
+ }
+ mQueue.add(what, request, new HttpResponseListener(mActivity, request, callback, canCanel, isLoading, msg));
+ }
+
+
public void addNoProgress(Context context, int what, Request request, HttpListener callback) {
if(App.getInstance().getUserInfo()!=null){
if(DataPassUtils.checkCanLoginTokenLong()){
diff --git a/app/src/main/java/com/rehome/dywoa/weiget/CountdownView.java b/app/src/main/java/com/rehome/dywoa/weiget/CountdownView.java
new file mode 100644
index 0000000..1d91933
--- /dev/null
+++ b/app/src/main/java/com/rehome/dywoa/weiget/CountdownView.java
@@ -0,0 +1,90 @@
+package com.rehome.dywoa.weiget;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.util.AttributeSet;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.widget.AppCompatTextView;
+
+/**
+ * author : Android 轮子哥
+ * github : https://github.com/getActivity/AndroidProject
+ * time : 2018/10/18
+ * desc : 验证码倒计时
+ */
+public final class CountdownView extends AppCompatTextView implements Runnable {
+
+ /** 倒计时秒数 */
+ private int mTotalSecond = 60;
+ /** 秒数单位文本 */
+ private static final String TIME_UNIT = "S";
+
+ /** 当前秒数 */
+ private int mCurrentSecond;
+ /** 记录原有的文本 */
+ private CharSequence mRecordText;
+
+ public CountdownView(Context context) {
+ super(context);
+ }
+
+ public CountdownView(Context context, @Nullable AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public CountdownView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ }
+
+ /**
+ * 设置倒计时总秒数
+ */
+ public void setTotalTime(int totalTime) {
+ this.mTotalSecond = totalTime;
+ }
+
+ /**
+ * 开始倒计时
+ */
+ public void start() {
+ mRecordText = getText();
+ setEnabled(false);
+ mCurrentSecond = mTotalSecond;
+ post(this);
+ }
+
+ /**
+ * 结束倒计时
+ */
+ public void stop() {
+ setText(mRecordText);
+ setEnabled(true);
+ }
+
+ @Override
+ protected void onAttachedToWindow() {
+ super.onAttachedToWindow();
+ // 设置点击的属性
+ setClickable(true);
+ }
+
+ @Override
+ protected void onDetachedFromWindow() {
+ // 移除延迟任务,避免内存泄露
+ removeCallbacks(this);
+ super.onDetachedFromWindow();
+ }
+
+ @SuppressLint("SetTextI18n")
+ @Override
+ public void run() {
+ if (mCurrentSecond == 0) {
+ stop();
+ } else {
+ mCurrentSecond--;
+ setText(mCurrentSecond + " " + TIME_UNIT);
+ postDelayed(this, 1000);
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/rehome/dywoa/weiget/RegexEditText.java b/app/src/main/java/com/rehome/dywoa/weiget/RegexEditText.java
new file mode 100644
index 0000000..e8d18cb
--- /dev/null
+++ b/app/src/main/java/com/rehome/dywoa/weiget/RegexEditText.java
@@ -0,0 +1,192 @@
+package com.rehome.dywoa.weiget;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.text.InputFilter;
+import android.text.Spanned;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+
+import androidx.appcompat.widget.AppCompatEditText;
+
+
+import com.rehome.dywoa.R;
+
+import java.util.regex.Pattern;
+
+/**
+ * author : Android 轮子哥
+ * github : https://github.com/getActivity/AndroidProject
+ * time : 2019/06/29
+ * desc : 正则输入限制编辑框
+ */
+public class RegexEditText extends AppCompatEditText implements InputFilter {
+
+ /** 手机号(只能以 1 开头) */
+ public static final String REGEX_MOBILE = "[1]\\d{0,10}";
+ /** 中文(普通的中文字符) */
+ public static final String REGEX_CHINESE = "[\\u4e00-\\u9fa5]*";
+ /** 英文(大写和小写的英文) */
+ public static final String REGEX_ENGLISH = "[a-zA-Z]*";
+ /** 计数(非 0 开头的数字) */
+ public static final String REGEX_COUNT = "[1-9]\\d*";
+ /** 用户名(中文、英文、数字) */
+ public static final String REGEX_NAME = "[[\\u4e00-\\u9fa5]|[a-zA-Z]|\\d]*";
+ /** 非空格的字符(不能输入空格) */
+ public static final String REGEX_NONNULL = "\\S+";
+
+ /** 正则表达式规则 */
+ private Pattern mPattern;
+
+ public RegexEditText(Context context) {
+ this(context, null);
+ }
+
+ public RegexEditText(Context context, AttributeSet attrs) {
+ this(context, attrs, android.R.attr.editTextStyle);
+ }
+
+ public RegexEditText(Context context, AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+
+ final TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.RegexEditText);
+
+ if (array.hasValue(R.styleable.RegexEditText_inputRegex)) {
+ setInputRegex(array.getString(R.styleable.RegexEditText_inputRegex));
+ } else {
+ if (array.hasValue(R.styleable.RegexEditText_regexType)) {
+ int regexType = array.getInt(R.styleable.RegexEditText_regexType, 0);
+ switch (regexType) {
+ case 0x01:
+ setInputRegex(REGEX_MOBILE);
+ break;
+ case 0x02:
+ setInputRegex(REGEX_CHINESE);
+ break;
+ case 0x03:
+ setInputRegex(REGEX_ENGLISH);
+ break;
+ case 0x04:
+ setInputRegex(REGEX_COUNT);
+ break;
+ case 0x05:
+ setInputRegex(REGEX_NAME);
+ break;
+ case 0x06:
+ setInputRegex(REGEX_NONNULL);
+ break;
+ default:
+ break;
+ }
+ }
+ }
+
+ array.recycle();
+ }
+
+ /**
+ * 是否有这个输入标记
+ */
+ public boolean hasInputType(int type) {
+ return (getInputType() & type) != 0;
+ }
+
+ /**
+ * 添加一个输入标记
+ */
+ public void addInputType(int type) {
+ setInputType(getInputType() | type);
+ }
+
+ /**
+ * 移除一个输入标记
+ */
+ public void removeInputType(int type) {
+ setInputType(getInputType() & ~type);
+ }
+
+ /**
+ * 设置输入正则
+ */
+ public void setInputRegex(String regex) {
+ if (TextUtils.isEmpty(regex)) {
+ return;
+ }
+
+ mPattern = Pattern.compile(regex);
+ addFilters(this);
+ }
+
+ /**
+ * 获取输入正则
+ */
+ public String getInputRegex() {
+ if (mPattern == null) {
+ return null;
+ }
+ return mPattern.pattern();
+ }
+
+ /**
+ * 添加筛选规则
+ */
+ public void addFilters(InputFilter filter) {
+ if (filter == null) {
+ return;
+ }
+
+ final InputFilter[] newFilters;
+ final InputFilter[] oldFilters = getFilters();
+ if (oldFilters != null && oldFilters.length > 0) {
+ newFilters = new InputFilter[oldFilters.length + 1];
+ // 复制旧数组的元素到新数组中
+ System.arraycopy(oldFilters, 0, newFilters, 0, oldFilters.length);
+ newFilters[oldFilters.length] = filter;
+ } else {
+ newFilters = new InputFilter[1];
+ newFilters[0] = filter;
+ }
+ super.setFilters(newFilters);
+ }
+
+ /**
+ * {@link InputFilter}
+ *
+ * @param source 新输入的字符串
+ * @param start 新输入的字符串起始下标,一般为0
+ * @param end 新输入的字符串终点下标,一般为source长度-1
+ * @param dest 输入之前文本框内容
+ * @param destStart 原内容起始坐标,一般为0
+ * @param destEnd 原内容终点坐标,一般为dest长度-1
+ * @return 返回字符串将会加入到内容中
+ */
+ @Override
+ public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int destStart, int destEnd) {
+ if (mPattern != null) {
+ // 拼接出最终的字符串
+ String begin = dest.toString().substring(0, destStart);
+ String over = dest.toString().substring(destStart + (destEnd - destStart), destStart + (dest.toString().length() - begin.length()));
+ String result = begin + source + over;
+
+ // 判断是插入还是删除
+ if (destStart > destEnd - 1) {
+ // 如果是插入字符
+ if (!mPattern.matcher(result).matches()) {
+ // 如果不匹配就不让这个字符输入
+ return "";
+ }
+ } else {
+ // 如果是删除字符
+ if (!mPattern.matcher(result).matches()) {
+ // 如果不匹配则不让删除(删空操作除外)
+ if (!"".equals(result)) {
+ return dest.toString().substring(destStart, destEnd);
+ }
+ }
+ }
+ }
+
+ // 不做任何修改
+ return source;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/countdown_color_next_selector.xml b/app/src/main/res/drawable/countdown_color_next_selector.xml
new file mode 100644
index 0000000..daa3382
--- /dev/null
+++ b/app/src/main/res/drawable/countdown_color_next_selector.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/countdown_color_selector.xml b/app/src/main/res/drawable/countdown_color_selector.xml
new file mode 100644
index 0000000..f0f83cd
--- /dev/null
+++ b/app/src/main/res/drawable/countdown_color_selector.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/countdown_next_selector.xml b/app/src/main/res/drawable/countdown_next_selector.xml
new file mode 100644
index 0000000..6631a8a
--- /dev/null
+++ b/app/src/main/res/drawable/countdown_next_selector.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/countdown_selector.xml b/app/src/main/res/drawable/countdown_selector.xml
new file mode 100644
index 0000000..9a52ad4
--- /dev/null
+++ b/app/src/main/res/drawable/countdown_selector.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index 05f2c70..cd48f46 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -154,6 +154,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml
index ea30109..470245a 100644
--- a/app/src/main/res/values/attrs.xml
+++ b/app/src/main/res/values/attrs.xml
@@ -41,14 +41,30 @@
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index f62f98f..b294738 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -60,4 +60,6 @@
#f6f6f6
#EFF0F2
#5e86e9
+ #BBBBBB
+ #ECECEC
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 623c553..7022beb 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -96,4 +96,10 @@
启动隧道
关闭隧道
主从测试
+ 第一步:获取验证码
+ 重置密码前需提供工号和手机号获取验证码
+ 第二步:重置密码
+ 密码长度不能小于8位,且必须为大小写字母、数字和特殊字符组成!
+ 输入验证码(必填)
+ 发送验证码
\ No newline at end of file
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index deb69f3..02525e0 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -203,5 +203,50 @@
- 12sp
- @color/black
+
+
+
+
+
+
+
+