Эх сурвалжийг харах

refactor(更新)
- 快捷页面文字显示
- 初始化用户:账号:6-20(只允许数字大小写字母)
密码:6-20(只允许数字大小写字母和键盘上的特殊符号、不包含空格)
- 人员角色过多时显示不全

周文健 3 сар өмнө
parent
commit
616e6be38f

+ 13 - 0
app/src/main/java/com/grkj/iscs/features/init/fragment/InitSetAdminAccountFragment.kt

@@ -1,13 +1,16 @@
 package com.grkj.iscs.features.init.fragment
 
 import androidx.fragment.app.viewModels
+import com.grkj.data.data.CommonConstants
 import com.grkj.iscs.R
 import com.grkj.iscs.databinding.FragmentInitSetAdminAccountBinding
 import com.grkj.iscs.features.init.viewmodel.InitViewModel
 import com.grkj.shared.utils.KeyboardUtils
 import com.grkj.ui_base.base.BaseFragment
+import com.grkj.ui_base.utils.CommonUtils
 import com.kongzue.dialogx.dialogs.PopTip
 import com.sik.sikcore.extension.setDebouncedClickListener
+import com.sik.sikcore.string.RegexUtils
 import dagger.hilt.android.AndroidEntryPoint
 
 /**
@@ -45,6 +48,11 @@ class InitSetAdminAccountFragment : BaseFragment<FragmentInitSetAdminAccountBind
             PopTip.tip(R.string.please_input_admin_username)
             return false
         }
+        val username = binding.adminUsernameEt.text.toString()
+        if (RegexUtils.isMatch(username, CommonConstants.REGEX_USERNAME)){
+            showToast(CommonUtils.getStr(R.string.username_regex_tip).toString())
+            return false
+        }
         if (binding.passwordEt.text.toString().isEmpty()) {
             PopTip.tip(com.grkj.ui_base.R.string.please_input_password)
             return false
@@ -53,6 +61,11 @@ class InitSetAdminAccountFragment : BaseFragment<FragmentInitSetAdminAccountBind
             PopTip.tip(R.string.please_input_repeat_password)
             return false
         }
+        val password = binding.passwordEt.text.toString()
+        if (RegexUtils.isMatch(password, CommonConstants.REGEX_PASSWORD)){
+            showToast(CommonUtils.getStr(R.string.password_regex_tip).toString())
+            return false
+        }
         if (binding.passwordEt.text.toString() != binding.repeatPasswordEt.text.toString()) {
             PopTip.tip(R.string.password_and_repeat_password_not_same)
             return false

+ 2 - 2
app/src/main/java/com/grkj/iscs/features/main/viewmodel/hardware_manage/RfidTokenManageViewModel.kt

@@ -67,8 +67,8 @@ class RfidTokenManageViewModel @Inject constructor(
      */
     fun addRfidToken(data: AddRfidTokenDataVo): LiveData<Boolean> =
         liveData(Dispatchers.IO) {
-            var defaultRfidCodeSize = hardwareRepository.getDefaultRFIDNameCount()
-            var token = BeanUtils.copyProperties(data, IsRfidToken::class.java)
+            val defaultRfidCodeSize = hardwareRepository.getDefaultRFIDNameCount()
+            val token = BeanUtils.copyProperties(data, IsRfidToken::class.java)
             if (token?.rfidCode.isNullOrEmpty()) {
                 token?.rfidCode = "RFID_${defaultRfidCodeSize + 1}"
             }

+ 3 - 0
app/src/main/res/layout-land/activity_main.xml

@@ -59,6 +59,9 @@
                         android:layout_height="match_parent"
                         android:layout_marginLeft="@dimen/home_nickname_margin"
                         android:gravity="center"
+                        android:singleLine="true"
+                        android:maxLength="4"
+                        android:ellipsize="end"
                         android:textColor="@color/white"
                         android:textSize="@dimen/home_nickname_text_size" />
                 </LinearLayout>

+ 4 - 3
app/src/main/res/layout-land/item_home_quick_entrance.xml

@@ -1,13 +1,14 @@
 <?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:tools="http://schemas.android.com/tools">
 
     <LinearLayout
-        android:layout_width="@dimen/home_item_quick_entrance_layout"
+        android:layout_width="wrap_content"
         android:layout_height="@dimen/home_item_quick_entrance_layout"
         android:gravity="center_horizontal"
-        android:orientation="vertical">
+        android:orientation="vertical"
+        android:background="?attr/selectableItemBackground"
+        android:paddingHorizontal="@dimen/common_spacing_2x">
 
         <cn.bingoogolapple.badgeview.BGABadgeFrameLayout
             android:id="@+id/quick_entrance_layout"

+ 4 - 2
app/src/main/res/layout-land/item_quick_entrance_config.xml

@@ -4,11 +4,13 @@
     xmlns:tools="http://schemas.android.com/tools">
 
     <LinearLayout
-        android:layout_width="@dimen/home_item_quick_entrance_layout"
+        android:layout_width="wrap_content"
         android:layout_height="@dimen/home_item_quick_entrance_layout"
         android:layout_margin="@dimen/common_spacing"
+        android:background="?attr/selectableItemBackground"
         android:gravity="center_horizontal"
-        android:orientation="vertical">
+        android:orientation="vertical"
+        android:paddingHorizontal="@dimen/common_spacing_2x">
 
         <FrameLayout
             android:layout_width="@dimen/home_item_quick_entrance_iv_layout"

+ 2 - 1
app/src/main/res/layout-land/item_quick_entrance_not_config.xml

@@ -4,10 +4,11 @@
     xmlns:tools="http://schemas.android.com/tools">
 
     <LinearLayout
-        android:layout_width="@dimen/home_item_quick_entrance_layout"
+        android:layout_width="wrap_content"
         android:layout_height="@dimen/home_item_quick_entrance_layout"
         android:layout_margin="@dimen/common_spacing"
         android:gravity="center_horizontal"
+        android:paddingHorizontal="@dimen/common_spacing_2x"
         android:orientation="vertical">
 
         <FrameLayout

+ 3 - 0
app/src/main/res/layout/activity_main.xml

@@ -61,6 +61,9 @@
                         android:layout_height="match_parent"
                         android:layout_marginLeft="@dimen/home_nickname_margin"
                         android:gravity="center"
+                        android:singleLine="true"
+                        android:maxLength="4"
+                        android:ellipsize="end"
                         android:textColor="@color/white"
                         android:textSize="@dimen/home_nickname_text_size" />
                 </LinearLayout>

+ 2 - 0
app/src/main/res/layout/dialog_add_user.xml

@@ -161,6 +161,8 @@
                 android:paddingVertical="2dp"
                 android:textColor="@color/black"
                 android:textSize="@dimen/common_text_size"
+                android:singleLine="true"
+                android:ellipsize="end"
                 app:layout_constraintBottom_toBottomOf="@+id/role_title_tv"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toEndOf="@+id/role_title_tv"

+ 2 - 0
app/src/main/res/layout/dialog_update_user.xml

@@ -154,6 +154,8 @@
                 android:paddingVertical="2dp"
                 android:textColor="@color/black"
                 android:textSize="@dimen/common_text_size"
+                android:singleLine="true"
+                android:ellipsize="end"
                 app:layout_constraintBottom_toBottomOf="@+id/role_title_tv"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toEndOf="@+id/role_title_tv"

+ 16 - 13
app/src/main/res/layout/fragment_init_set_admin_account.xml

@@ -68,19 +68,20 @@
             android:layout_width="0dp"
             android:layout_height="wrap_content"
             android:layout_marginLeft="@dimen/common_spacing"
+            android:layout_marginTop="@dimen/common_spacing"
             android:layout_marginRight="@dimen/common_spacing_7x"
             android:background="@drawable/bg_common_input"
             android:hint="@string/please_input_admin_username"
+            android:maxLength="20"
             android:maxLines="1"
             android:paddingHorizontal="@dimen/common_spacing_1_5x"
             android:paddingVertical="2dp"
             android:singleLine="true"
             android:textColor="@color/black"
             android:textSize="@dimen/common_text_size"
-            app:layout_constraintBottom_toBottomOf="@+id/admin_username_tv"
             app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintStart_toEndOf="@+id/admin_username_tv"
-            app:layout_constraintTop_toTopOf="@+id/admin_username_tv" />
+            app:layout_constraintStart_toStartOf="@+id/admin_username_tv"
+            app:layout_constraintTop_toBottomOf="@+id/admin_username_tv" />
 
         <TextView
             android:id="@+id/password_tv"
@@ -90,22 +91,22 @@
             android:text="@string/set_password"
             android:textColor="@color/black"
             android:textSize="@dimen/common_text_size"
-            app:layout_constraintEnd_toEndOf="@+id/admin_username_tv"
-            app:layout_constraintTop_toBottomOf="@+id/admin_username_tv" />
+            app:layout_constraintStart_toStartOf="@+id/admin_username_tv"
+            app:layout_constraintTop_toBottomOf="@+id/admin_username_et" />
 
         <com.google.android.material.textfield.TextInputLayout
             android:id="@+id/container_password"
             android:layout_width="0dp"
             android:layout_height="@dimen/init_set_admin_account_et_height"
             android:layout_marginLeft="@dimen/common_spacing"
+            android:layout_marginTop="@dimen/common_spacing"
             android:layout_marginRight="@dimen/common_spacing_7x"
             app:boxBackgroundMode="none"
             app:endIconMode="password_toggle"
             app:hintEnabled="false"
-            app:layout_constraintBottom_toBottomOf="@+id/password_tv"
             app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintStart_toEndOf="@+id/password_tv"
-            app:layout_constraintTop_toTopOf="@+id/password_tv">
+            app:layout_constraintStart_toStartOf="@+id/password_tv"
+            app:layout_constraintTop_toBottomOf="@+id/password_tv">
 
             <androidx.appcompat.widget.AppCompatEditText
                 android:id="@+id/password_et"
@@ -114,6 +115,7 @@
                 android:background="@drawable/bg_common_input"
                 android:hint="@string/please_input_password"
                 android:inputType="textPassword"
+                android:maxLength="20"
                 android:maxLines="1"
                 android:minHeight="0dp"
                 android:paddingHorizontal="@dimen/common_spacing"
@@ -131,21 +133,21 @@
             android:text="@string/repeat_password"
             android:textColor="@color/black"
             android:textSize="@dimen/common_text_size"
-            app:layout_constraintEnd_toEndOf="@+id/password_tv"
-            app:layout_constraintTop_toBottomOf="@+id/password_tv" />
+            app:layout_constraintStart_toStartOf="@+id/password_tv"
+            app:layout_constraintTop_toBottomOf="@+id/container_password" />
 
         <com.google.android.material.textfield.TextInputLayout
             android:id="@+id/container_repeat_password"
             android:layout_width="0dp"
             android:layout_height="@dimen/init_set_admin_account_et_height"
             android:layout_marginLeft="@dimen/common_spacing"
+            android:layout_marginTop="@dimen/common_spacing"
             android:layout_marginRight="@dimen/common_spacing_7x"
             app:endIconMode="password_toggle"
             app:hintEnabled="false"
-            app:layout_constraintBottom_toBottomOf="@+id/repeat_password_tv"
             app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintStart_toEndOf="@+id/repeat_password_tv"
-            app:layout_constraintTop_toTopOf="@+id/repeat_password_tv">
+            app:layout_constraintStart_toStartOf="@+id/repeat_password_tv"
+            app:layout_constraintTop_toBottomOf="@+id/repeat_password_tv">
 
             <androidx.appcompat.widget.AppCompatEditText
                 android:id="@+id/repeat_password_et"
@@ -154,6 +156,7 @@
                 android:background="@drawable/bg_common_input"
                 android:hint="@string/please_input_repeat_password"
                 android:inputType="textPassword"
+                android:maxLength="20"
                 android:maxLines="1"
                 android:minHeight="0dp"
                 android:paddingHorizontal="@dimen/common_spacing"

+ 3 - 1
app/src/main/res/layout/item_home_quick_entrance.xml

@@ -4,9 +4,11 @@
     xmlns:tools="http://schemas.android.com/tools">
 
     <LinearLayout
-        android:layout_width="@dimen/home_item_quick_entrance_layout"
+        android:layout_width="wrap_content"
         android:layout_height="@dimen/home_item_quick_entrance_layout"
         android:gravity="center_horizontal"
+        android:paddingHorizontal="@dimen/common_spacing_2x"
+        android:background="?attr/selectableItemBackground"
         android:orientation="vertical">
 
         <cn.bingoogolapple.badgeview.BGABadgeFrameLayout

+ 3 - 1
app/src/main/res/layout/item_quick_entrance_config.xml

@@ -4,9 +4,11 @@
     xmlns:tools="http://schemas.android.com/tools">
 
     <LinearLayout
-        android:layout_width="@dimen/home_item_quick_entrance_layout"
+        android:layout_width="wrap_content"
         android:layout_height="@dimen/home_item_quick_entrance_layout"
         android:layout_margin="@dimen/common_spacing"
+        android:paddingHorizontal="@dimen/common_spacing_2x"
+        android:background="?attr/selectableItemBackground"
         android:gravity="center_horizontal"
         android:orientation="vertical">
 

+ 2 - 1
app/src/main/res/layout/item_quick_entrance_not_config.xml

@@ -4,10 +4,11 @@
     xmlns:tools="http://schemas.android.com/tools">
 
     <LinearLayout
-        android:layout_width="@dimen/home_item_quick_entrance_layout"
+        android:layout_width="wrap_content"
         android:layout_height="@dimen/home_item_quick_entrance_layout"
         android:layout_margin="@dimen/common_spacing"
         android:gravity="center_horizontal"
+        android:paddingHorizontal="@dimen/common_spacing_2x"
         android:orientation="vertical">
 
         <FrameLayout

+ 3 - 0
app/src/main/res/layout/item_user_manage_user.xml

@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <layout xmlns:android="http://schemas.android.com/apk/res/android">
+
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
@@ -34,7 +35,9 @@
             android:layout_width="0dp"
             android:layout_height="match_parent"
             android:layout_weight="1"
+            android:ellipsize="end"
             android:gravity="center"
+            android:singleLine="true"
             android:textSize="@dimen/common_text_size" />
     </LinearLayout>
 </layout>

+ 6 - 4
app/src/main/res/values-en/strings.xml

@@ -200,10 +200,10 @@
     <string name="init_set_admin_account_step">1</string>
     <string name="init_set_admin_account_step_tip">Set up administrator account</string>
     <string name="init_set_admin_account_step_hint">Please set the administrator account password</string>
-    <string name="admin_username">Admin account</string>
+    <string name="admin_username">Admin account: (numbers, letters, 6-20 digits)</string>
     <string name="please_input_admin_username">Please input admin account</string>
-    <string name="set_password">Set password</string>
-    <string name="repeat_password">Repeat password</string>
+    <string name="set_password">Set password: (numbers, letters, special symbols, 6-20 digits)</string>
+    <string name="repeat_password">Repeat password: (numbers, letters, special symbols, 6-20 digits)</string>
     <string name="please_input_repeat_password">Please input repeat password</string>
     <string name="previous">Previous</string>
     <string name="next">Next</string>
@@ -477,7 +477,7 @@
     <string name="select_group_tip">Click on the blank area of the group to select</string>
     <string name="quick_entrance_title">Quick access configuration</string>
     <string name="check_new_key_need_register">Detected a new key, is it registered</string>
-    <string name="selected_quick_entrance">Configurable shortcut entrances (up to 8 shortcut entrances can be added)</string>
+    <string name="selected_quick_entrance">Configurable shortcut entrances (up to 8 shortcut entrances can be added, drag and drop sorting)</string>
     <string name="all_quick_entrance">All Quick Entrances</string>
     <string name="quick_entrance_most_set_tip">Up to 8 quick entry points can be set</string>
     <string name="admin_role_can_not_edit">Admin role can not edit</string>
@@ -552,5 +552,7 @@
     <string name="role_in_use">Role has job in use</string>
     <string name="lock_in_use">Lock in use</string>
     <string name="key_in_use">Key in use</string>
+    <string name="password_regex_tip">The password does not meet the requirements</string>
+    <string name="username_regex_tip">Account number does not meet the requirements</string>
 
 </resources>

+ 6 - 4
app/src/main/res/values-zh/strings.xml

@@ -200,10 +200,10 @@
     <string name="init_set_admin_account_step">1</string>
     <string name="init_set_admin_account_step_tip">设置管理员账号</string>
     <string name="init_set_admin_account_step_hint">请设置管理员账号密码</string>
-    <string name="admin_username">管理员账号</string>
+    <string name="admin_username">管理员账号:(数字、字母、6-20位)</string>
     <string name="please_input_admin_username">请输入管理员账号</string>
-    <string name="set_password">设置密码</string>
-    <string name="repeat_password">重复密码</string>
+    <string name="set_password">设置密码:(数字、字母、特殊符号、6-20位)</string>
+    <string name="repeat_password">重复密码:(数字、字母、特殊符号、6-20位)</string>
     <string name="please_input_repeat_password">请输入重复密码</string>
     <string name="previous">上一步</string>
     <string name="next">下一步</string>
@@ -477,7 +477,7 @@
     <string name="select_group_tip">点击分组空白区域进行选中</string>
     <string name="quick_entrance_title">快捷入口配置</string>
     <string name="check_new_key_need_register">检测到新钥匙,是否注册</string>
-    <string name="selected_quick_entrance">已配置的快捷入口(最多添加8个快捷入口)</string>
+    <string name="selected_quick_entrance">已配置的快捷入口(最多添加8个快捷入口,可拖拽排序)</string>
     <string name="all_quick_entrance">所有快捷入口</string>
     <string name="quick_entrance_most_set_tip">快捷入口最多设置8个</string>
     <string name="admin_role_can_not_edit">管理员角色无法编辑</string>
@@ -552,5 +552,7 @@
     <string name="role_in_use">角色已有作业在使用</string>
     <string name="lock_in_use">挂锁正在使用中</string>
     <string name="key_in_use">钥匙正在使用</string>
+    <string name="password_regex_tip">密码不符合要求</string>
+    <string name="username_regex_tip">账号不符合要求</string>
 
 </resources>

+ 6 - 4
app/src/main/res/values/strings.xml

@@ -199,10 +199,10 @@
     <string name="init_set_admin_account_step">1</string>
     <string name="init_set_admin_account_step_tip">设置管理员账号</string>
     <string name="init_set_admin_account_step_hint">请设置管理员账号密码</string>
-    <string name="admin_username">管理员账号</string>
+    <string name="admin_username">管理员账号:(数字、字母、6-20位)</string>
     <string name="please_input_admin_username">请输入管理员账号</string>
-    <string name="set_password">设置密码</string>
-    <string name="repeat_password">重复密码</string>
+    <string name="set_password">设置密码:(数字、字母、特殊符号、6-20位)</string>
+    <string name="repeat_password">重复密码:(数字、字母、特殊符号、6-20位)</string>
     <string name="please_input_repeat_password">请输入重复密码</string>
     <string name="previous">上一步</string>
     <string name="next">下一步</string>
@@ -480,7 +480,7 @@
     <string name="select_group_tip">点击分组空白区域选中</string>
     <string name="quick_entrance_title">快捷入口配置</string>
     <string name="check_new_key_need_register">检测到新钥匙,是否注册</string>
-    <string name="selected_quick_entrance">已配置的快捷入口(最多添加8个快捷入口)</string>
+    <string name="selected_quick_entrance">已配置的快捷入口(最多添加8个快捷入口,可拖拽排序)</string>
     <string name="all_quick_entrance">所有快捷入口</string>
     <string name="quick_entrance_most_set_tip">快捷入口最多设置8个</string>
     <string name="admin_role_can_not_edit">管理员角色无法编辑</string>
@@ -555,5 +555,7 @@
     <string name="role_in_use">角色已有作业在使用</string>
     <string name="lock_in_use">挂锁正在使用中</string>
     <string name="key_in_use">钥匙正在使用</string>
+    <string name="password_regex_tip">密码不符合要求</string>
+    <string name="username_regex_tip">账号不符合要求</string>
 
 </resources>

+ 4 - 4
data/src/main/java/com/grkj/data/dao/HardwareDao.kt

@@ -99,25 +99,25 @@ interface HardwareDao {
     /**
      * 获取默认数据数量
      */
-    @Query("select count(1) from is_key where key_code like 'KEY_%'")
+    @Query("select count(1) from is_key")
     fun getDefaultKeyNameCount(): Int
 
     /**
      * 获取默认数据数量
      */
-    @Query("select count(1) from is_lock where lock_code like 'LOCK_%'")
+    @Query("select count(1) from is_lock")
     fun getDefaultLockNameCount(): Int
 
     /**
      * 获取默认数据数量
      */
-    @Query("select count(1) from is_job_card where card_code like 'CARD_%'")
+    @Query("select count(1) from is_job_card")
     fun getDefaultCardNameCount(): Int
 
     /**
      * 获取默认数据数量
      */
-    @Query("select count(1) from is_rfid_token where rfid_code like 'RFID_%'")
+    @Query("select count(1) from is_rfid_token")
     fun getDefaultRfidTokenNameCount(): Int
 
     /**

+ 9 - 0
data/src/main/java/com/grkj/data/data/CommonConstants.kt

@@ -44,6 +44,15 @@ object CommonConstants {
      */
     const val REGEX_MOBILE = "^1(3\\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\\d|9[0-35-9])\\d{8}$"
 
+    /**
+     * 密码正则
+     */
+    const val REGEX_USERNAME = "^[A-Za-z0-9]{6,20}$"
+    /**
+     * 密码正则
+     */
+    const val REGEX_PASSWORD = "^[A-Za-z0-9!\"#\$%&'()*+,\\-./:;<=>?@\\[\\\\\\]^_`{|}~]{6,20}$"
+
     /**
      * 蓝牙断连时间
      */

+ 1 - 0
ui-base/src/main/res/values-en/strings.xml

@@ -381,4 +381,5 @@
     <string name="error_date_range_invalid">The start time cannot be later than the end time</string>
     <string name="loading_data">Data loading</string>
     <string name="not_in_slot">Not in slot</string>
+    <string name="ticket_get_failed">Ticket get failed</string>
 </resources>

+ 1 - 0
ui-base/src/main/res/values-zh/strings.xml

@@ -381,4 +381,5 @@
     <string name="error_date_range_invalid">开始时间不能晚于结束时间</string>
     <string name="loading_data">数据加载中</string>
     <string name="not_in_slot">未在仓位</string>
+    <string name="ticket_get_failed">作业票获取失败</string>
 </resources>

+ 1 - 0
ui-base/src/main/res/values/strings.xml

@@ -381,4 +381,5 @@
     <string name="error_date_range_invalid">开始时间不能晚于结束时间</string>
     <string name="loading_data">数据加载中</string>
     <string name="not_in_slot">未在仓位</string>
+    <string name="ticket_get_failed">作业票获取失败</string>
 </resources>