Просмотр исходного кода

refactor(更新)
- 优化代码,统一弹窗宽度为自适应,修改部分页面文本和图标显示不正确问题
- 新增地图点位显隐功能
- 新增下拉树图标
- 新增默认工作流程和默认区域功能
- 优化横屏首页数据显示,新增图标
- 优化备份导出体验
- 国际化文本新增和优化

周文健 8 месяцев назад
Родитель
Сommit
7943173cf2
100 измененных файлов с 1355 добавлено и 675 удалено
  1. 124 5
      app/src/main/assets/i18n/en-US.json
  2. 125 5
      app/src/main/assets/i18n/zh-CN.json
  3. BIN
      app/src/main/assets/themes/Default/icons/icon_data_manage_switch_layout.png
  4. 0 0
      app/src/main/assets/themes/Default/icons/icon_data_manage_switch_layout.svg
  5. BIN
      app/src/main/assets/themes/Default/icons/icon_drop_down_tree_check.png
  6. BIN
      app/src/main/assets/themes/Default/icons/icon_drop_down_tree_collapse.png
  7. BIN
      app/src/main/assets/themes/Default/icons/icon_drop_down_tree_expand.png
  8. BIN
      app/src/main/assets/themes/Default/icons/icon_drop_down_tree_point.png
  9. BIN
      app/src/main/assets/themes/Default/icons/icon_overview_data.png
  10. BIN
      app/src/main/assets/themes/Default/icons/icon_realtime_data.png
  11. BIN
      app/src/main/assets/themes/Default/icons/icon_switch_map_edit.png
  12. BIN
      app/src/main/assets/themes/Default/icons/icon_switch_map_hide_point.png
  13. BIN
      app/src/main/assets/themes/Default/icons/icon_switch_map_show_point.png
  14. BIN
      app/src/main/assets/themes/Default/icons/land-location.png
  15. 1 1
      app/src/main/java/com/grkj/iscs/ISCSApplication.kt
  16. 2 0
      app/src/main/java/com/grkj/iscs/features/main/activity/MainActivity.kt
  17. 7 2
      app/src/main/java/com/grkj/iscs/features/main/dialog/TextDropDownDialog.kt
  18. 2 1
      app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/AddPointToMapDialog.kt
  19. 7 2
      app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/AddRoleDialog.kt
  20. 3 3
      app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/AddWorkstationDialog.kt
  21. 2 1
      app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/FilterUserDialog.kt
  22. 2 1
      app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/UpdatePointToMapDialog.kt
  23. 7 2
      app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/UpdateRoleDialog.kt
  24. 3 3
      app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/UpdateWorkstationDialog.kt
  25. 5 2
      app/src/main/java/com/grkj/iscs/features/main/entity/QuickEntranceMenuItemEntity.kt
  26. 34 18
      app/src/main/java/com/grkj/iscs/features/main/fragment/data_manage/BackupAndRestoreFragment.kt
  27. 2 2
      app/src/main/java/com/grkj/iscs/features/main/fragment/data_manage/DataManageHomeFragment.kt
  28. 6 6
      app/src/main/java/com/grkj/iscs/features/main/fragment/data_manage/PointMangeFragment.kt
  29. 8 8
      app/src/main/java/com/grkj/iscs/features/main/fragment/data_manage/RoleManageFragment.kt
  30. 16 4
      app/src/main/java/com/grkj/iscs/features/main/fragment/data_manage/SwitchLayoutFragment.kt
  31. 5 5
      app/src/main/java/com/grkj/iscs/features/main/fragment/data_manage/UserManageFragment.kt
  32. 17 9
      app/src/main/java/com/grkj/iscs/features/main/fragment/data_manage/WorkstationManageFragment.kt
  33. 3 3
      app/src/main/java/com/grkj/iscs/features/main/fragment/hardware_manage/CardManageFragment.kt
  34. 6 6
      app/src/main/java/com/grkj/iscs/features/main/fragment/hardware_manage/KeyManageFragment.kt
  35. 3 3
      app/src/main/java/com/grkj/iscs/features/main/fragment/hardware_manage/LockManageFragment.kt
  36. 3 3
      app/src/main/java/com/grkj/iscs/features/main/fragment/hardware_manage/RfidTokenManageFragment.kt
  37. 45 34
      app/src/main/java/com/grkj/iscs/features/main/fragment/home/HomeFragment.kt
  38. 37 3
      app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/CreateJobFragment.kt
  39. 36 2
      app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/CreateSopFragment.kt
  40. 1 1
      app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/CreateSopJobFragment.kt
  41. 2 2
      app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/EditJobFragment.kt
  42. 1 1
      app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/EditSopFragment.kt
  43. 1 1
      app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/EditSopJobFragment.kt
  44. 2 1
      app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/JobExecuteFragment.kt
  45. 2 2
      app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/JobManageFragment.kt
  46. 10 3
      app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/JobManageHomeFragment.kt
  47. 2 2
      app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/SopManageFragment.kt
  48. 12 2
      app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/WorkflowManageFragment.kt
  49. 18 3
      app/src/main/java/com/grkj/iscs/features/main/viewmodel/data_manage/SwitchLayoutViewModel.kt
  50. 3 4
      app/src/main/java/com/grkj/iscs/features/main/viewmodel/data_manage/WorkstationManageViewModel.kt
  51. 45 0
      app/src/main/java/com/grkj/iscs/features/main/viewmodel/job_manage/JobManageHomeViewModel.kt
  52. 37 21
      app/src/main/java/com/grkj/iscs/features/splash/activity/SplashActivity.kt
  53. 1 1
      app/src/main/res/drawable/bg_text_drop_down.xml
  54. 79 62
      app/src/main/res/layout-land/fragment_home.xml
  55. 7 7
      app/src/main/res/layout-land/fragment_workflow_setting.xml
  56. 2 0
      app/src/main/res/layout-land/item_quick_entrance_config.xml
  57. 2 0
      app/src/main/res/layout-land/item_quick_entrance_not_config.xml
  58. 1 1
      app/src/main/res/layout/dialog_add_card.xml
  59. 1 1
      app/src/main/res/layout/dialog_add_fingerprint.xml
  60. 1 1
      app/src/main/res/layout/dialog_add_key.xml
  61. 1 1
      app/src/main/res/layout/dialog_add_lock.xml
  62. 6 6
      app/src/main/res/layout/dialog_add_point.xml
  63. 31 6
      app/src/main/res/layout/dialog_add_point_to_map.xml
  64. 1 1
      app/src/main/res/layout/dialog_add_rfid_token.xml
  65. 4 4
      app/src/main/res/layout/dialog_add_role.xml
  66. 6 6
      app/src/main/res/layout/dialog_add_user.xml
  67. 68 39
      app/src/main/res/layout/dialog_add_workstation.xml
  68. 1 1
      app/src/main/res/layout/dialog_filter_card.xml
  69. 1 1
      app/src/main/res/layout/dialog_filter_key.xml
  70. 1 1
      app/src/main/res/layout/dialog_filter_lock.xml
  71. 7 7
      app/src/main/res/layout/dialog_filter_point.xml
  72. 1 1
      app/src/main/res/layout/dialog_filter_rfid_token.xml
  73. 108 97
      app/src/main/res/layout/dialog_filter_role.xml
  74. 133 125
      app/src/main/res/layout/dialog_filter_user.xml
  75. 1 1
      app/src/main/res/layout/dialog_update_card.xml
  76. 1 1
      app/src/main/res/layout/dialog_update_key.xml
  77. 1 1
      app/src/main/res/layout/dialog_update_lock.xml
  78. 6 6
      app/src/main/res/layout/dialog_update_point.xml
  79. 29 5
      app/src/main/res/layout/dialog_update_point_to_map.xml
  80. 1 1
      app/src/main/res/layout/dialog_update_rfid_token.xml
  81. 4 4
      app/src/main/res/layout/dialog_update_role.xml
  82. 1 1
      app/src/main/res/layout/dialog_update_user.xml
  83. 2 2
      app/src/main/res/layout/dialog_update_workstation.xml
  84. 4 4
      app/src/main/res/layout/fragment_exception_report.xml
  85. 75 55
      app/src/main/res/layout/fragment_home.xml
  86. 1 1
      app/src/main/res/layout/fragment_my_todo_list.xml
  87. 9 0
      app/src/main/res/layout/fragment_workflow_manage.xml
  88. 7 7
      app/src/main/res/layout/fragment_workflow_setting.xml
  89. 2 2
      app/src/main/res/layout/item_backup.xml
  90. 10 10
      app/src/main/res/layout/item_home_text_drop_down.xml
  91. 6 4
      app/src/main/res/layout/item_quick_entrance_config.xml
  92. 2 0
      app/src/main/res/layout/item_quick_entrance_not_config.xml
  93. 3 4
      app/src/main/res/layout/item_role.xml
  94. 27 18
      app/src/main/res/layout/item_switch.xml
  95. 15 0
      app/src/main/res/layout/item_workflow_manage.xml
  96. 6 0
      data/src/main/java/com/grkj/data/dao/HardwareDao.kt
  97. 1 1
      data/src/main/java/com/grkj/data/dao/WorkstationDao.kt
  98. 10 0
      data/src/main/java/com/grkj/data/data/MMKVConstants.kt
  99. 16 1
      data/src/main/java/com/grkj/data/database/ISCSMigrations.kt
  100. 5 0
      data/src/main/java/com/grkj/data/logic/IHardwareLogic.kt

+ 124 - 5
app/src/main/assets/i18n/en-US.json

@@ -3809,11 +3809,6 @@
     "type": "text",
     "value": "Default Map"
   },
-  "add_to_map": {
-    "key": "add_to_map",
-    "type": "text",
-    "value": "Add to map"
-  },
   "update_info": {
     "key": "update_info",
     "type": "text",
@@ -3834,6 +3829,11 @@
     "type": "text",
     "value": "Coordinate Y:"
   },
+  "please_set_point_coordinate_first": {
+    "key": "please_set_point_coordinate_first",
+    "type": "text",
+    "value": "please_set_point_coordinate_first"
+  },
   "add_to_map_point_serial_number": {
     "key": "add_to_map_point_serial_number",
     "type": "text",
@@ -3868,5 +3868,124 @@
     "key": "workstation_info",
     "type": "text",
     "value": "Workstation info"
+  },
+  "year": {
+    "key": "year",
+    "type": "text",
+    "value": ""
+  },
+  "month": {
+    "key": "month",
+    "type": "text",
+    "value": ""
+  },
+  "day": {
+    "key": "day",
+    "type": "text",
+    "value": ""
+  },
+  "hour": {
+    "key": "hour",
+    "type": "text",
+    "value": ""
+  },
+  "min": {
+    "key": "min",
+    "type": "text",
+    "value": ""
+  },
+  "sec": {
+    "key": "sec",
+    "type": "text",
+    "value": ""
+  },
+  "please_select_backup_file": {
+    "key": "please_select_backup_file",
+    "type": "text",
+    "value": "Please select backup file"
+  },
+  "export_selected_backup_file_confirm": {
+    "key": "export_selected_backup_file_confirm",
+    "type": "text",
+    "value": "Launch the path selector, select and click on the bottom right corner to choose 'Export'"
+  },"header_pulling": {
+  "key": "header_pulling",
+  "type": "text",
+  "value": "Pull down to refresh"
+},
+  "header_refreshing": {
+    "key": "header_refreshing",
+    "type": "text",
+    "value": "Refreshing..."
+  },
+  "header_loading": {
+    "key": "header_loading",
+    "type": "text",
+    "value": "Loading..."
+  },
+  "header_release": {
+    "key": "header_release",
+    "type": "text",
+    "value": "Release to refresh"
+  },
+  "header_finish": {
+    "key": "header_finish",
+    "type": "text",
+    "value": "Refresh complete"
+  },
+  "header_failed": {
+    "key": "header_failed",
+    "type": "text",
+    "value": "Refresh failed"
+  },
+  "header_update": {
+    "key": "header_update",
+    "type": "text",
+    "value": "'Last update' M-d HH:mm"
+  },
+  "header_secondary": {
+    "key": "header_secondary",
+    "type": "text",
+    "value": "Release to enter second floor"
+  },
+  "footer_pulling": {
+    "key": "footer_pulling",
+    "type": "text",
+    "value": "Pull up to load more"
+  },
+  "footer_release": {
+    "key": "footer_release",
+    "type": "text",
+    "value": "Release to load"
+  },
+  "footer_loading": {
+    "key": "footer_loading",
+    "type": "text",
+    "value": "Refreshing..."
+  },
+  "footer_refreshing": {
+    "key": "footer_refreshing",
+    "type": "text",
+    "value": "Loading..."
+  },
+  "footer_finish": {
+    "key": "footer_finish",
+    "type": "text",
+    "value": "Load complete"
+  },
+  "footer_failed": {
+    "key": "footer_failed",
+    "type": "text",
+    "value": "Load failed"
+  },
+  "footer_nothing": {
+    "key": "footer_nothing",
+    "type": "text",
+    "value": "No more data"
+  },
+  "set_default": {
+    "key": "set_default",
+    "type": "text",
+    "value": "Set as default"
   }
 }

+ 125 - 5
app/src/main/assets/i18n/zh-CN.json

@@ -3804,11 +3804,6 @@
     "type": "text",
     "value": "默认地图"
   },
-  "add_to_map": {
-    "key": "add_to_map",
-    "type": "text",
-    "value": "添加到地图"
-  },
   "update_info": {
     "key": "update_info",
     "type": "text",
@@ -3819,6 +3814,11 @@
     "type": "text",
     "value": "坐标X:"
   },
+  "please_set_point_coordinate_first": {
+    "key": "please_set_point_coordinate_first",
+    "type": "text",
+    "value": "请先设置点位坐标。"
+  },
   "add_to_map_y": {
     "key": "add_to_map_y",
     "type": "text",
@@ -3863,5 +3863,125 @@
     "key": "workstation_info",
     "type": "text",
     "value": "区域信息"
+  },
+  "year": {
+    "key": "year",
+    "type": "text",
+    "value": "年"
+  },
+  "month": {
+    "key": "month",
+    "type": "text",
+    "value": "月"
+  },
+  "day": {
+    "key": "day",
+    "type": "text",
+    "value": "日"
+  },
+  "hour": {
+    "key": "hour",
+    "type": "text",
+    "value": "时"
+  },
+  "min": {
+    "key": "min",
+    "type": "text",
+    "value": "分"
+  },
+  "sec": {
+    "key": "sec",
+    "type": "text",
+    "value": "秒"
+  },
+  "please_select_backup_file": {
+    "key": "please_select_backup_file",
+    "type": "text",
+    "value": "请先选择备份文件"
+  },
+  "export_selected_backup_file_confirm": {
+    "key": "export_selected_backup_file_confirm",
+    "type": "text",
+    "value": "将启动路径选择器,选择之后点击右下角选择进行导出"
+  },
+  "header_pulling": {
+    "key": "header_pulling",
+    "type": "text",
+    "value": "下拉可以刷新"
+  },
+  "header_refreshing": {
+    "key": "header_refreshing",
+    "type": "text",
+    "value": "正在刷新..."
+  },
+  "header_loading": {
+    "key": "header_loading",
+    "type": "text",
+    "value": "正在加载..."
+  },
+  "header_release": {
+    "key": "header_release",
+    "type": "text",
+    "value": "释放立即刷新"
+  },
+  "header_finish": {
+    "key": "header_finish",
+    "type": "text",
+    "value": "刷新完成"
+  },
+  "header_failed": {
+    "key": "header_failed",
+    "type": "text",
+    "value": "刷新失败"
+  },
+  "header_update": {
+    "key": "header_update",
+    "type": "text",
+    "value": "上次更新 M-d HH:mm"
+  },
+  "header_secondary": {
+    "key": "header_secondary",
+    "type": "text",
+    "value": "释放进入二楼"
+  },
+  "footer_pulling": {
+    "key": "footer_pulling",
+    "type": "text",
+    "value": "上拉加载更多"
+  },
+  "footer_release": {
+    "key": "footer_release",
+    "type": "text",
+    "value": "释放立即加载"
+  },
+  "footer_loading": {
+    "key": "footer_loading",
+    "type": "text",
+    "value": "正在刷新..."
+  },
+  "footer_refreshing": {
+    "key": "footer_refreshing",
+    "type": "text",
+    "value": "正在加载..."
+  },
+  "footer_finish": {
+    "key": "footer_finish",
+    "type": "text",
+    "value": "加载完成"
+  },
+  "footer_failed": {
+    "key": "footer_failed",
+    "type": "text",
+    "value": "加载失败"
+  },
+  "footer_nothing": {
+    "key": "footer_nothing",
+    "type": "text",
+    "value": "全部加载完成"
+  },
+  "set_default": {
+    "key": "set_default",
+    "type": "text",
+    "value": "设为默认"
   }
 }

BIN
app/src/main/assets/themes/Default/icons/icon_data_manage_switch_layout.png


+ 0 - 0
app/src/main/assets/themes/Default/icons/land-location.svg → app/src/main/assets/themes/Default/icons/icon_data_manage_switch_layout.svg


BIN
app/src/main/assets/themes/Default/icons/icon_drop_down_tree_check.png


BIN
app/src/main/assets/themes/Default/icons/icon_drop_down_tree_collapse.png


BIN
app/src/main/assets/themes/Default/icons/icon_drop_down_tree_expand.png


BIN
app/src/main/assets/themes/Default/icons/icon_drop_down_tree_point.png


BIN
app/src/main/assets/themes/Default/icons/icon_overview_data.png


BIN
app/src/main/assets/themes/Default/icons/icon_realtime_data.png


BIN
app/src/main/assets/themes/Default/icons/icon_switch_map_edit.png


BIN
app/src/main/assets/themes/Default/icons/icon_switch_map_hide_point.png


BIN
app/src/main/assets/themes/Default/icons/icon_switch_map_show_point.png


BIN
app/src/main/assets/themes/Default/icons/land-location.png


+ 1 - 1
app/src/main/java/com/grkj/iscs/ISCSApplication.kt

@@ -166,7 +166,6 @@ class ISCSApplication : Application() {
 
     //static 代码段可以防止内存泄露
     init {
-
         //设置全局的Header构建器
         SmartRefreshLayout.setDefaultRefreshHeaderCreator { context, layout ->
             ClassicsHeader(context).apply {
@@ -178,6 +177,7 @@ class ISCSApplication : Application() {
         SmartRefreshLayout.setDefaultRefreshFooterCreator { context, p1 ->
             ClassicsFooter(context).apply {
                 this.setAccentColor(CommonUtils.getColor(com.grkj.ui_base.R.attr.colorTextPrimary))
+
             }
         }
     }

+ 2 - 0
app/src/main/java/com/grkj/iscs/features/main/activity/MainActivity.kt

@@ -25,6 +25,7 @@ import com.grkj.shared.utils.extension.toHexStrings
 import com.grkj.ui_base.utils.ble.BleSendDispatcher
 import com.grkj.ui_base.utils.event.FlashTipEvent
 import com.grkj.ui_base.utils.event.RFIDCardReadEvent
+import com.grkj.ui_base.utils.extension.removeTint
 import com.sik.sikcore.extension.file
 import com.sik.sikcore.extension.setDebouncedClickListener
 import com.sik.sikimage.ImageConvertUtils
@@ -98,6 +99,7 @@ class MainActivity() : BaseActivity<ActivityMainBinding>() {
             if (it.isNotEmpty()) {
                 val faceData = it.file().readText()
                 val avatar = ImageConvertUtils.base64ToBitmap(faceData)
+                binding.avatar.removeTint()
                 binding.avatar.load(avatar)
             }
         }

+ 7 - 2
app/src/main/java/com/grkj/iscs/features/main/dialog/TextDropDownDialog.kt

@@ -11,6 +11,7 @@ import com.drake.brv.utils.setup
 import com.grkj.iscs.R
 import com.grkj.iscs.databinding.DialogDropDownListBinding
 import com.grkj.iscs.databinding.ItemHomeTextDropDownBinding
+import com.grkj.ui_base.skin.loadSkinIcon
 import com.kongzue.dialogx.dialogs.CustomDialog
 import com.kongzue.dialogx.interfaces.OnBindView
 import com.sik.sikcore.extension.setDebouncedClickListener
@@ -53,12 +54,16 @@ class TextDropDownDialog(
                     itemBinding.arrowIv.isVisible = true
                     // 缩进
                     itemBinding.rootLayout.setPadding(indentPx * item.getLevel(), 0, 0, 0)
-                    itemBinding.arrowIv.rotation = if (item.itemExpand) 90f else 0f
+                    if (item.getChildren().isEmpty()) {
+                        itemBinding.arrowIv.loadSkinIcon("icon_drop_down_tree_point.png")
+                    } else {
+                        itemBinding.arrowIv.loadSkinIcon(if (item.itemExpand) "icon_drop_down_tree_expand.png" else "icon_drop_down_tree_collapse.png")
+                    }
                     // 文本和选中
                     itemBinding.dropDownText.text = item.getShowText()
                     itemBinding.arrowIv.setDebouncedClickListener {
                         if (item.itemExpand) collapse() else expand()
-                        itemBinding.arrowIv.rotation = if (item.itemExpand) 90f else 0f
+                        itemBinding.arrowIv.loadSkinIcon(if (item.itemExpand) "icon_drop_down_tree_expand.png" else "icon_drop_down_tree_collapse.png")
                     }
                     itemBinding.checkIv.isVisible = item.isSelected()
                     itemBinding.rootLayout.setDebouncedClickListener {

+ 2 - 1
app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/AddPointToMapDialog.kt

@@ -37,7 +37,8 @@ class AddPointToMapDialog(
                     isMapPoint.entityId ?: 0,
                     binding.xEt.text.toString(),
                     binding.yEt.text.toString(),
-                    binding.pointSerialNumberEt.text.toString()
+                    binding.pointSerialNumberEt.text.toString(),
+                    binding.status.isChecked
                 )
                 onConfirm(vo, dialog)
             }

+ 7 - 2
app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/AddRoleDialog.kt

@@ -11,6 +11,7 @@ import com.grkj.iscs.databinding.DialogAddRoleBinding
 import com.grkj.iscs.databinding.ItemRoleBinding
 import com.grkj.iscs.features.main.entity.AddRoleDataEntity
 import com.grkj.iscs.features.main.entity.RoleManageFunctionalPermissionsEntity
+import com.grkj.ui_base.skin.loadSkinIcon
 import com.kongzue.dialogx.dialogs.CustomDialog
 import com.kongzue.dialogx.interfaces.OnBindView
 import me.jessyan.autosize.utils.AutoSizeUtils
@@ -83,9 +84,13 @@ class AddRoleDialog(
                 // 展开/收起
                 itemBinding.rootLayout.setDebouncedClickListener {
                     if (item.itemExpand) collapse() else expand()
-                    itemBinding.arrowIv.rotation = if (item.itemExpand) 90f else 0f
+                    itemBinding.arrowIv.loadSkinIcon(if (item.itemExpand) "icon_drop_down_tree_expand.png" else "icon_drop_down_tree_collapse.png")
+                }
+                if (item.children.isEmpty()) {
+                    itemBinding.arrowIv.loadSkinIcon("icon_drop_down_tree_point.png")
+                } else {
+                    itemBinding.arrowIv.loadSkinIcon(if (item.itemExpand) "icon_drop_down_tree_expand.png" else "icon_drop_down_tree_collapse.png")
                 }
-                itemBinding.arrowIv.rotation = if (item.itemExpand) 90f else 0f
                 // 文本和选中
                 itemBinding.roleTv.text = item.description
                 itemBinding.roleCb.setOnCheckedChangeListener(null)

+ 3 - 3
app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/AddWorkstationDialog.kt

@@ -16,7 +16,7 @@ import com.sik.sikcore.extension.setDebouncedClickListener
  * AddWorkstationDialog.show { name -> /* handle */ }
  */
 class AddWorkstationDialog(
-    private val onConfirm: (String, CustomDialog) -> Unit
+    private val onConfirm: (String, Boolean, CustomDialog) -> Unit
 ) : OnBindView<CustomDialog>(R.layout.dialog_add_workstation) {
 
     private lateinit var binding: DialogAddWorkstationBinding
@@ -33,7 +33,7 @@ class AddWorkstationDialog(
             if (name.isEmpty()) {
                 PopTip.build().tip(CommonUtils.getStr("please_input_workstation_name"))
             } else {
-                onConfirm(name,dialog)
+                onConfirm(name, binding.setDefault.isChecked, dialog)
             }
         }
     }
@@ -43,7 +43,7 @@ class AddWorkstationDialog(
          * 显示新增区域对话框
          */
         @JvmStatic
-        fun show(onConfirm: (String, CustomDialog) -> Unit) {
+        fun show(onConfirm: (String, Boolean, CustomDialog) -> Unit) {
             CustomDialog.show(
                 AddWorkstationDialog(onConfirm),
                 CustomDialog.ALIGN.CENTER

+ 2 - 1
app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/FilterUserDialog.kt

@@ -28,7 +28,8 @@ class FilterUserDialog(
         // 设置遮罩色
         dialog?.setMaskColor(CommonUtils.getColor(com.grkj.ui_base.R.attr.scrim))
         // 根据配置显示/隐藏工作站输入
-        binding.workstationLayout.isVisible = ISCSConfig.isWorkstationOn
+        binding.areaTv.isVisible = ISCSConfig.isWorkstationOn
+        binding.workstationEt.isVisible = ISCSConfig.isWorkstationOn
 
         // 关闭/取消
         binding.closeIv.setDebouncedClickListener { dialog?.dismiss() }

+ 2 - 1
app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/UpdatePointToMapDialog.kt

@@ -43,7 +43,8 @@ class UpdatePointToMapDialog(
                     isMapPoint.entityId ?: 0,
                     binding.xEt.text.toString(),
                     binding.yEt.text.toString(),
-                    binding.pointSerialNumberEt.text.toString()
+                    binding.pointSerialNumberEt.text.toString(),
+                    binding.status.isChecked
                 )
                 onConfirm(vo, dialog)
             }

+ 7 - 2
app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/UpdateRoleDialog.kt

@@ -9,6 +9,7 @@ import com.grkj.iscs.databinding.DialogUpdateRoleBinding
 import com.grkj.iscs.databinding.ItemRoleBinding
 import com.grkj.iscs.features.main.entity.RoleManageFunctionalPermissionsEntity
 import com.grkj.iscs.features.main.entity.UpdateRoleDataEntity
+import com.grkj.ui_base.skin.loadSkinIcon
 import com.grkj.ui_base.utils.CommonUtils
 import com.grkj.ui_base.utils.extension.tip
 import com.kongzue.dialogx.dialogs.CustomDialog
@@ -59,10 +60,14 @@ class UpdateRoleDialog(
                 // 缩进
                 itemBinding.rootLayout.setPadding(indentPx * item.level, 0, 0, 0)
                 // 展开收起
-                itemBinding.arrowIv.rotation = if (item.itemExpand) 90f else 0f
                 itemBinding.rootLayout.setDebouncedClickListener {
                     if (item.itemExpand) collapse() else expand()
-                    itemBinding.arrowIv.rotation = if (item.itemExpand) 90f else 0f
+                    itemBinding.arrowIv.loadSkinIcon(if (item.itemExpand) "icon_drop_down_tree_expand.png" else "icon_drop_down_tree_collapse.png")
+                }
+                if (item.children.isEmpty()) {
+                    itemBinding.arrowIv.loadSkinIcon("icon_drop_down_tree_point.png")
+                } else {
+                    itemBinding.arrowIv.loadSkinIcon(if (item.itemExpand) "icon_drop_down_tree_expand.png" else "icon_drop_down_tree_collapse.png")
                 }
                 // 选中
                 itemBinding.roleTv.text = item.description

+ 3 - 3
app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/UpdateWorkstationDialog.kt

@@ -16,7 +16,7 @@ import com.sik.sikcore.extension.setDebouncedClickListener
  * UpdateWorkstationDialog.show { name -> /* handle */ }
  */
 class UpdateWorkstationDialog(
-    val workstationName: String, private val onConfirm: (String, CustomDialog) -> Unit
+    val workstationName: String, private val onConfirm: (String, Boolean, CustomDialog) -> Unit
 ) : OnBindView<CustomDialog>(R.layout.dialog_add_workstation) {
 
     private lateinit var binding: DialogAddWorkstationBinding
@@ -33,7 +33,7 @@ class UpdateWorkstationDialog(
             if (name.isEmpty()) {
                 PopTip.build().tip(CommonUtils.getStr("please_input_workstation_name"))
             } else {
-                onConfirm(name, dialog)
+                onConfirm(name, binding.setDefault.isChecked, dialog)
             }
         }
     }
@@ -43,7 +43,7 @@ class UpdateWorkstationDialog(
          * 显示新增区域对话框
          */
         @JvmStatic
-        fun show(workstationName: String, onConfirm: (String, CustomDialog) -> Unit) {
+        fun show(workstationName: String, onConfirm: (String, Boolean, CustomDialog) -> Unit) {
             CustomDialog.show(
                 UpdateWorkstationDialog(workstationName, onConfirm),
                 CustomDialog.ALIGN.CENTER

+ 5 - 2
app/src/main/java/com/grkj/iscs/features/main/entity/QuickEntranceMenuItemEntity.kt

@@ -29,7 +29,8 @@ data class QuickEntranceMenuItemEntity(
             return when (permission) {
                 RoleFunctionalPermissionsEnum.USER_MANAGE -> "user.svg"
                 RoleFunctionalPermissionsEnum.ROLE_MANAGE -> "users-alt.svg"
-                RoleFunctionalPermissionsEnum.WORKSTATION_MANAGE -> "land-location.svg"
+                RoleFunctionalPermissionsEnum.WORKSTATION_MANAGE -> "land-location.png"
+                RoleFunctionalPermissionsEnum.SWITCH_LAYOUT -> "icon_data_manage_switch_layout.svg"
                 RoleFunctionalPermissionsEnum.POINT_MANAGE -> "location-crosshairs.svg"
                 RoleFunctionalPermissionsEnum.TODO_LIST -> "to-do.svg"
                 RoleFunctionalPermissionsEnum.IN_PROGRESS_JOB -> "ballot-check.svg"
@@ -63,7 +64,8 @@ data class QuickEntranceMenuItemEntity(
         fun getNavGraphId(permission: RoleFunctionalPermissionsEnum): Int {
             return when (permission) {
                 RoleFunctionalPermissionsEnum.USER_MANAGE, RoleFunctionalPermissionsEnum.ROLE_MANAGE,
-                RoleFunctionalPermissionsEnum.WORKSTATION_MANAGE, RoleFunctionalPermissionsEnum.POINT_MANAGE -> R.navigation.nav_data_manage
+                RoleFunctionalPermissionsEnum.WORKSTATION_MANAGE, RoleFunctionalPermissionsEnum.POINT_MANAGE,
+                     RoleFunctionalPermissionsEnum.SWITCH_LAYOUT-> R.navigation.nav_data_manage
 
                 RoleFunctionalPermissionsEnum.TODO_LIST,
                 RoleFunctionalPermissionsEnum.IN_PROGRESS_JOB,
@@ -105,6 +107,7 @@ data class QuickEntranceMenuItemEntity(
                 RoleFunctionalPermissionsEnum.ROLE_MANAGE -> R.id.action_dataManageHomeFragment_to_roleManageFragment
                 RoleFunctionalPermissionsEnum.WORKSTATION_MANAGE -> R.id.action_dataManageHomeFragment_to_workstationManageFragment
                 RoleFunctionalPermissionsEnum.POINT_MANAGE -> R.id.action_dataManageHomeFragment_to_pointMangeFragment
+                RoleFunctionalPermissionsEnum.SWITCH_LAYOUT -> R.id.action_dataManageHomeFragment_to_nav_switch_layout
                 RoleFunctionalPermissionsEnum.TODO_LIST -> R.id.action_jobManageHomeFragment_to_myTodoListFragment
                 RoleFunctionalPermissionsEnum.IN_PROGRESS_JOB -> R.id.action_jobManageHomeFragment_to_inProgressJobManageFragment
                 RoleFunctionalPermissionsEnum.CREATE_SOP -> R.id.action_jobManageHomeFragment_to_createSopFragment

+ 34 - 18
app/src/main/java/com/grkj/iscs/features/main/fragment/data_manage/BackupAndRestoreFragment.kt

@@ -112,6 +112,10 @@ class BackupAndRestoreFragment : BaseFragment<FragmentBackupAndRestoreBinding>()
             }
         }
         binding.batchDelete.setDebouncedClickListener {
+            if (viewModel.backupItemDatas.none { it.isSelected }) {
+                showToast(I18nManager.t("please_select_backup_file"))
+                return@setDebouncedClickListener
+            }
             TipDialog.showInfo(
                 I18nManager.t("delete_selected_backup_file_confirm"),
                 onConfirmClick = {
@@ -128,19 +132,27 @@ class BackupAndRestoreFragment : BaseFragment<FragmentBackupAndRestoreBinding>()
                 })
         }
         binding.batchExport.setDebouncedClickListener {
-            filePickerUtils.pickDirectory { treeUri ->
-                viewModel.backupItemDatas.filter { it.isSelected }.forEach {
-                    treeUri?.let { treeUri ->
-                        requireContext().copyFileToDir(treeUri, it.file)
-                    }
-                }
-                viewModel.backupItemDatas.forEach {
-                    it.isSelected = false
-                }
-                checkAndSetSelectAllListener()
-                binding.listRv.adapter?.notifyDataSetChanged()
-                showToast(I18nManager.t("export_success"))
+            if (viewModel.backupItemDatas.none { it.isSelected }) {
+                showToast(I18nManager.t("please_select_backup_file"))
+                return@setDebouncedClickListener
             }
+            TipDialog.showInfo(
+                I18nManager.t("export_selected_backup_file_confirm"),
+                onConfirmClick = {
+                    filePickerUtils.pickDirectory { treeUri ->
+                        viewModel.backupItemDatas.filter { it.isSelected }.forEach {
+                            treeUri?.let { treeUri ->
+                                requireContext().copyFileToDir(treeUri, it.file)
+                            }
+                        }
+                        viewModel.backupItemDatas.forEach {
+                            it.isSelected = false
+                        }
+                        checkAndSetSelectAllListener()
+                        binding.listRv.adapter?.notifyDataSetChanged()
+                        showToast(I18nManager.t("export_success"))
+                    }
+                })
         }
         binding.state.emptyLayout = com.grkj.ui_base.R.layout.layout_no_backup
         binding.listRv.linear().setup {
@@ -235,12 +247,16 @@ class BackupAndRestoreFragment : BaseFragment<FragmentBackupAndRestoreBinding>()
             })
         }
         itemBinding.export.setDebouncedClickListener {
-            filePickerUtils.pickDirectory { treeUri ->
-                treeUri?.let { treeUri ->
-                    requireContext().copyFileToDir(treeUri, item.file)
-                }
-                showToast(I18nManager.t("export_success"))
-            }
+            TipDialog.showInfo(
+                I18nManager.t("export_selected_backup_file_confirm"),
+                onConfirmClick = {
+                    filePickerUtils.pickDirectory { treeUri ->
+                        treeUri?.let { treeUri ->
+                            requireContext().copyFileToDir(treeUri, item.file)
+                        }
+                        showToast(I18nManager.t("export_success"))
+                    }
+                })
         }
         itemBinding.restore.setDebouncedClickListener {
             TipDialog.showInfo(I18nManager.t("restore_backup_confirm"), onConfirmClick = {

+ 2 - 2
app/src/main/java/com/grkj/iscs/features/main/fragment/data_manage/DataManageHomeFragment.kt

@@ -45,7 +45,7 @@ class DataManageHomeFragment : BaseFragment<FragmentDataManageHomeBinding>() {
         ),
         MenuItemEntity(
             2,
-            "land-location.svg",
+            "land-location.png",
             RoleFunctionalPermissionsEnum.WORKSTATION_MANAGE.description,
             RoleFunctionalPermissionsEnum.WORKSTATION_MANAGE.functionalPermission
         ),
@@ -63,7 +63,7 @@ class DataManageHomeFragment : BaseFragment<FragmentDataManageHomeBinding>() {
         ),
         MenuItemEntity(
             5,
-            "icon_data_manage_switch_layout.png",
+            "icon_data_manage_switch_layout.svg",
             RoleFunctionalPermissionsEnum.SWITCH_LAYOUT.description,
             RoleFunctionalPermissionsEnum.SWITCH_LAYOUT.functionalPermission
         ),

+ 6 - 6
app/src/main/java/com/grkj/iscs/features/main/fragment/data_manage/PointMangeFragment.kt

@@ -81,7 +81,7 @@ class PointMangeFragment : BaseFragment<FragmentPointManageBinding>() {
                                 dialogType = TipDialog.DialogType.SUCCESS,
                                 msg = CommonUtils.getStr("add_point_succeed"),
                                 countDownTime = 10,
-                                showConfirm = false,
+                                showCancel = false,
                                 onCancelClick = {
                                     getPointData(nextPage = false)
                                 }
@@ -92,7 +92,7 @@ class PointMangeFragment : BaseFragment<FragmentPointManageBinding>() {
                                 dialogType = TipDialog.DialogType.ERROR,
                                 msg = CommonUtils.getStr("add_point_failed"),
                                 countDownTime = 10,
-                                showConfirm = false,
+                                showCancel = false,
                                 onCancelClick = {
                                     getPointData(nextPage = false)
                                 }
@@ -206,7 +206,7 @@ class PointMangeFragment : BaseFragment<FragmentPointManageBinding>() {
                             dialogType = TipDialog.DialogType.SUCCESS,
                             msg = CommonUtils.getStr("update_point_succeed"),
                             countDownTime = 10,
-                            showConfirm = false,
+                            showCancel = false,
                             onCancelClick = {
                                 getPointData(nextPage = false)
                             }
@@ -217,7 +217,7 @@ class PointMangeFragment : BaseFragment<FragmentPointManageBinding>() {
                             dialogType = TipDialog.DialogType.ERROR,
                             msg = CommonUtils.getStr("update_point_failed"),
                             countDownTime = 10,
-                            showConfirm = false,
+                            showCancel = false,
                             onCancelClick = {
                                 getPointData(nextPage = false)
                             }
@@ -279,7 +279,7 @@ class PointMangeFragment : BaseFragment<FragmentPointManageBinding>() {
                         TipDialog.show(
                             dialogType = TipDialog.DialogType.SUCCESS,
                             msg = CommonUtils.getStr("point_manage_delete_succeed"),
-                            showConfirm = false,
+                            showCancel = false,
                             countDownTime = 10
                         )
                         getPointData(false)
@@ -287,7 +287,7 @@ class PointMangeFragment : BaseFragment<FragmentPointManageBinding>() {
                         TipDialog.show(
                             dialogType = TipDialog.DialogType.ERROR,
                             msg = CommonUtils.getStr("point_manage_delete_failed"),
-                            showConfirm = false,
+                            showCancel = false,
                             countDownTime = 10
                         )
                     }

+ 8 - 8
app/src/main/java/com/grkj/iscs/features/main/fragment/data_manage/RoleManageFragment.kt

@@ -55,7 +55,7 @@ class RoleManageFragment : BaseFragment<FragmentRoleManageBinding>() {
                         dialogType = TipDialog.DialogType.ERROR,
                         msg = CommonUtils.getStr("role_key_already_exists"),
                         countDownTime = 10,
-                        showConfirm = false,
+                        showCancel = false,
                         onCancelClick = {
                             getRoleData(nextPage = false)
                         }
@@ -71,7 +71,7 @@ class RoleManageFragment : BaseFragment<FragmentRoleManageBinding>() {
                                 dialogType = TipDialog.DialogType.SUCCESS,
                                 msg = CommonUtils.getStr("add_role_succeed"),
                                 countDownTime = 10,
-                                showConfirm = false,
+                                showCancel = false,
                                 onCancelClick = {
                                     getRoleData(nextPage = false)
                                 }
@@ -82,7 +82,7 @@ class RoleManageFragment : BaseFragment<FragmentRoleManageBinding>() {
                                 dialogType = TipDialog.DialogType.ERROR,
                                 msg = CommonUtils.getStr("add_role_failed"),
                                 countDownTime = 10,
-                                showConfirm = false,
+                                showCancel = false,
                                 onCancelClick = {
                                     getRoleData(nextPage = false)
                                 }
@@ -170,7 +170,7 @@ class RoleManageFragment : BaseFragment<FragmentRoleManageBinding>() {
                                 msg = CommonUtils.getStr("role_key_already_exists")
                                     .toString(),
                                 countDownTime = 10,
-                                showConfirm = false,
+                                showCancel = false,
                                 onCancelClick = {
                                     getRoleData(nextPage = false)
                                 }
@@ -185,7 +185,7 @@ class RoleManageFragment : BaseFragment<FragmentRoleManageBinding>() {
                                     dialogType = TipDialog.DialogType.SUCCESS,
                                     msg = CommonUtils.getStr("update_role_succeed"),
                                     countDownTime = 10,
-                                    showConfirm = false,
+                                    showCancel = false,
                                     onCancelClick = {
                                         getRoleData(nextPage = false)
                                     }
@@ -196,7 +196,7 @@ class RoleManageFragment : BaseFragment<FragmentRoleManageBinding>() {
                                     dialogType = TipDialog.DialogType.ERROR,
                                     msg = CommonUtils.getStr("update_role_failed"),
                                     countDownTime = 10,
-                                    showConfirm = false,
+                                    showCancel = false,
                                     onCancelClick = {
                                         getRoleData(nextPage = false)
                                     }
@@ -261,7 +261,7 @@ class RoleManageFragment : BaseFragment<FragmentRoleManageBinding>() {
                                 TipDialog.show(
                                     dialogType = TipDialog.DialogType.SUCCESS,
                                     msg = CommonUtils.getStr("role_manage_delete_succeed"),
-                                    showConfirm = false,
+                                    showCancel = false,
                                     countDownTime = 10
                                 )
                                 getRoleData(false)
@@ -269,7 +269,7 @@ class RoleManageFragment : BaseFragment<FragmentRoleManageBinding>() {
                                 TipDialog.show(
                                     dialogType = TipDialog.DialogType.ERROR,
                                     msg = CommonUtils.getStr("role_manage_delete_failed"),
-                                    showConfirm = false,
+                                    showCancel = false,
                                     countDownTime = 10
                                 )
                             }

+ 16 - 4
app/src/main/java/com/grkj/iscs/features/main/fragment/data_manage/SwitchLayoutFragment.kt

@@ -32,6 +32,7 @@ import com.grkj.shared.utils.AssetsCopyUtil
 import com.grkj.shared.utils.i18n.I18nManager
 import com.grkj.ui_base.base.BaseFragment
 import com.grkj.ui_base.business.ModbusBusinessManager
+import com.grkj.ui_base.skin.loadSkinIcon
 import com.grkj.ui_base.utils.CommonUtils
 import com.grkj.ui_base.widget.CustomSwitchStationLayer
 import com.onlylemi.mapview.library.MapViewListener
@@ -169,10 +170,21 @@ class SwitchLayoutFragment : BaseFragment<FragmentSwitchLayoutBinding>() {
         itemBinding.root.setDebouncedClickListener {
             stationLayer?.selectPoint(item.entityId)
         }
-        if (item.x == null || item.y == null) {
-            itemBinding.addOrUpdateToMap.text = I18nManager.t("add_to_map")
-        } else {
-            itemBinding.addOrUpdateToMap.text = I18nManager.t("update_info")
+        if (item.showInMap){
+            itemBinding.showInMap.loadSkinIcon("icon_switch_map_show_point.png")
+        }else{
+            itemBinding.showInMap.loadSkinIcon("icon_switch_map_hide_point.png")
+        }
+        itemBinding.showInMap.setDebouncedClickListener {
+            if (item.x == null || item.y == null) {
+                showToast(CommonUtils.getStr("please_set_point_coordinate_first"))
+            }else{
+                viewModel.changeShowInMap(item.entityId?:0L, !item.showInMap).observe(this@SwitchLayoutFragment){
+                    getMap(currentWorkstationId)
+                    item.showInMap = !item.showInMap
+                    adapter.notifyDataSetChanged()
+                }
+            }
         }
         itemBinding.addOrUpdateToMap.setDebouncedClickListener {
             if (item.x == null || item.y == null) {

+ 5 - 5
app/src/main/java/com/grkj/iscs/features/main/fragment/data_manage/UserManageFragment.kt

@@ -88,7 +88,7 @@ class UserManageFragment : BaseFragment<FragmentUserManageBinding>() {
                                     dialogType = TipDialog.DialogType.SUCCESS,
                                     msg = CommonUtils.getStr("add_user_succeed"),
                                     countDownTime = 10,
-                                    showConfirm = false,
+                                    showCancel = false,
                                     onCancelClick = {
                                         getUserData(false)
                                     }
@@ -187,7 +187,7 @@ class UserManageFragment : BaseFragment<FragmentUserManageBinding>() {
                                 dialogType = TipDialog.DialogType.SUCCESS,
                                 msg = CommonUtils.getStr("update_user_succeed"),
                                 countDownTime = 10,
-                                showConfirm = false,
+                                showCancel = false,
                                 onCancelClick = {
                                     getUserData(false)
                                 }
@@ -198,7 +198,7 @@ class UserManageFragment : BaseFragment<FragmentUserManageBinding>() {
                                 dialogType = TipDialog.DialogType.ERROR,
                                 msg = CommonUtils.getStr("update_user_failed"),
                                 countDownTime = 10,
-                                showConfirm = false,
+                                showCancel = false,
                                 onCancelClick = {
                                     getUserData(false)
                                 }
@@ -256,7 +256,7 @@ class UserManageFragment : BaseFragment<FragmentUserManageBinding>() {
                                 TipDialog.show(
                                     dialogType = TipDialog.DialogType.SUCCESS,
                                     msg = CommonUtils.getStr("user_manage_delete_succeed"),
-                                    showConfirm = false,
+                                    showCancel = false,
                                     countDownTime = 10
                                 )
                                 getUserData(false)
@@ -264,7 +264,7 @@ class UserManageFragment : BaseFragment<FragmentUserManageBinding>() {
                                 TipDialog.show(
                                     dialogType = TipDialog.DialogType.ERROR,
                                     msg = CommonUtils.getStr("user_manage_delete_failed"),
-                                    showConfirm = false,
+                                    showCancel = false,
                                     countDownTime = 10
                                 )
                             }

+ 17 - 9
app/src/main/java/com/grkj/iscs/features/main/fragment/data_manage/WorkstationManageFragment.kt

@@ -9,6 +9,7 @@ import androidx.lifecycle.ViewModelProvider
 import com.drake.brv.utils.linear
 import com.drake.brv.utils.models
 import com.drake.brv.utils.setup
+import com.grkj.data.data.MMKVConstants
 import com.grkj.data.model.vo.WorkstationManageVo
 import com.grkj.iscs.R
 import com.grkj.iscs.databinding.FragmentWorkstationManageBinding
@@ -21,6 +22,7 @@ import com.grkj.ui_base.dialog.TipDialog
 import com.grkj.ui_base.utils.CommonUtils
 import com.grkj.ui_base.utils.extension.tip
 import com.kongzue.dialogx.dialogs.PopTip
+import com.sik.sikcore.extension.saveMMKVData
 import com.sik.sikcore.extension.setDebouncedClickListener
 import dagger.hilt.android.AndroidEntryPoint
 import me.jessyan.autosize.utils.AutoSizeUtils
@@ -46,19 +48,22 @@ class WorkstationManageFragment : BaseFragment<FragmentWorkstationManageBinding>
                 showToast(CommonUtils.getStr("please_select_workstation"))
                 return@setDebouncedClickListener
             }
-            UpdateWorkstationDialog.show(viewModel.workstationManageData.first { it.isSelected }.workstationName) { data, dialog ->
+            UpdateWorkstationDialog.show(viewModel.workstationManageData.first { it.isSelected }.workstationName) { data,setDefault, dialog ->
                 viewModel.validateWorkstationData(data).observe(this) {
                     val updateWorkstation = viewModel.workstationManageData.first { it.isSelected }
                     updateWorkstation.workstationName = data
                     viewModel.updateWorkstation(updateWorkstation).observe(this) {
                         dialog.dismiss()
                         if (it) {
+                            if (setDefault) {
+                                MMKVConstants.KEY_DEFAULT_WORKSTATION_ID.saveMMKVData(it)
+                            }
                             TipDialog.show(
                                 title = CommonUtils.getStr("action_succeed"),
                                 dialogType = TipDialog.DialogType.SUCCESS,
                                 msg = CommonUtils.getStr("update_workstation_succeed"),
                                 countDownTime = 10,
-                                showConfirm = false,
+                                showCancel = false,
                                 onCancelClick = {
                                     getWorkstationManageData()
                                 }
@@ -69,7 +74,7 @@ class WorkstationManageFragment : BaseFragment<FragmentWorkstationManageBinding>
                                 dialogType = TipDialog.DialogType.ERROR,
                                 msg = CommonUtils.getStr("update_workstation_failed"),
                                 countDownTime = 10,
-                                showConfirm = false,
+                                showCancel = false,
                                 onCancelClick = {
                                     getWorkstationManageData()
                                 }
@@ -80,17 +85,20 @@ class WorkstationManageFragment : BaseFragment<FragmentWorkstationManageBinding>
             }
         }
         binding.addWorkstation.setDebouncedClickListener {
-            AddWorkstationDialog.show { data, dialog ->
+            AddWorkstationDialog.show { data, setDefault, dialog ->
                 viewModel.validateWorkstationData(data).observe(this) {
                     viewModel.addWorkstation(data).observe(this) {
                         dialog.dismiss()
-                        if (it) {
+                        if (it != -1L) {
+                            if (setDefault) {
+                                MMKVConstants.KEY_DEFAULT_WORKSTATION_ID.saveMMKVData(it)
+                            }
                             TipDialog.show(
                                 title = CommonUtils.getStr("action_succeed"),
                                 dialogType = TipDialog.DialogType.SUCCESS,
                                 msg = CommonUtils.getStr("add_workstation_succeed"),
                                 countDownTime = 10,
-                                showConfirm = false,
+                                showCancel = false,
                                 onCancelClick = {
                                     getWorkstationManageData()
                                 }
@@ -101,7 +109,7 @@ class WorkstationManageFragment : BaseFragment<FragmentWorkstationManageBinding>
                                 dialogType = TipDialog.DialogType.ERROR,
                                 msg = CommonUtils.getStr("add_workstation_failed"),
                                 countDownTime = 10,
-                                showConfirm = false,
+                                showCancel = false,
                                 onCancelClick = {
                                     getWorkstationManageData()
                                 }
@@ -219,7 +227,7 @@ class WorkstationManageFragment : BaseFragment<FragmentWorkstationManageBinding>
                                 "workstation_manage_delete_succeed",
                                 args = listOf(deleteItem.workstationName).toTypedArray()
                             ),
-                            showConfirm = false,
+                            showCancel = false,
                             countDownTime = 10
                         )
                         getWorkstationManageData()
@@ -230,7 +238,7 @@ class WorkstationManageFragment : BaseFragment<FragmentWorkstationManageBinding>
                                 "workstation_manage_delete_failed",
                                 args = listOf(deleteItem.workstationName).toTypedArray()
                             ),
-                            showConfirm = false,
+                            showCancel = false,
                             countDownTime = 10
                         )
                     }

+ 3 - 3
app/src/main/java/com/grkj/iscs/features/main/fragment/hardware_manage/CardManageFragment.kt

@@ -51,7 +51,7 @@ class CardManageFragment : BaseFragment<FragmentCardManageBinding>() {
                             dialogType = if (ok) TipDialog.DialogType.SUCCESS else TipDialog.DialogType.ERROR,
                             msg = CommonUtils.getStr(msgRes).toString(),
                             countDownTime = 10,
-                            showConfirm = false,
+                            showCancel = false,
                             onCancelClick = { loadCards(reset = true) }
                         )
                     }
@@ -119,7 +119,7 @@ class CardManageFragment : BaseFragment<FragmentCardManageBinding>() {
                         dialogType = if (ok) TipDialog.DialogType.SUCCESS else TipDialog.DialogType.ERROR,
                         msg = CommonUtils.getStr(msgRes).toString(),
                         countDownTime = 10,
-                        showConfirm = false,
+                        showCancel = false,
                         onCancelClick = { loadCards(reset = true) }
                     )
                 }
@@ -172,7 +172,7 @@ class CardManageFragment : BaseFragment<FragmentCardManageBinding>() {
                         dialogType = if (ok) TipDialog.DialogType.SUCCESS else TipDialog.DialogType.ERROR,
                         msg = CommonUtils.getStr(if (ok) "card_manage_delete_succeed" else "card_manage_delete_failed")
                             .toString(),
-                        showConfirm = false,
+                        showCancel = false,
                         countDownTime = 10
                     )
                     loadCards(reset = true)

+ 6 - 6
app/src/main/java/com/grkj/iscs/features/main/fragment/hardware_manage/KeyManageFragment.kt

@@ -55,7 +55,7 @@ class KeyManageFragment : BaseFragment<FragmentKeyManageBinding>() {
                                 dialogType = TipDialog.DialogType.SUCCESS,
                                 msg = CommonUtils.getStr("add_key_succeed"),
                                 countDownTime = 10,
-                                showConfirm = false,
+                                showCancel = false,
                                 onCancelClick = {
                                     getKeyData(false)
                                 }
@@ -67,7 +67,7 @@ class KeyManageFragment : BaseFragment<FragmentKeyManageBinding>() {
                                 dialogType = TipDialog.DialogType.ERROR,
                                 msg = CommonUtils.getStr("add_key_failed"),
                                 countDownTime = 10,
-                                showConfirm = false,
+                                showCancel = false,
                                 onCancelClick = {
                                     getKeyData(false)
                                 }
@@ -135,7 +135,7 @@ class KeyManageFragment : BaseFragment<FragmentKeyManageBinding>() {
                             dialogType = TipDialog.DialogType.SUCCESS,
                             msg = CommonUtils.getStr("update_key_succeed"),
                             countDownTime = 10,
-                            showConfirm = false,
+                            showCancel = false,
                             onCancelClick = {
                                 getKeyData(false)
                             }
@@ -147,7 +147,7 @@ class KeyManageFragment : BaseFragment<FragmentKeyManageBinding>() {
                             dialogType = TipDialog.DialogType.ERROR,
                             msg = CommonUtils.getStr("update_key_failed").toString(),
                             countDownTime = 10,
-                            showConfirm = false,
+                            showCancel = false,
                             onCancelClick = {
                                 getKeyData(false)
                             }
@@ -204,7 +204,7 @@ class KeyManageFragment : BaseFragment<FragmentKeyManageBinding>() {
                                 TipDialog.show(
                                     dialogType = TipDialog.DialogType.SUCCESS,
                                     msg = CommonUtils.getStr("key_manage_delete_succeed"),
-                                    showConfirm = false,
+                                    showCancel = false,
                                     countDownTime = 10
                                 )
                                 getKeyData(false)
@@ -212,7 +212,7 @@ class KeyManageFragment : BaseFragment<FragmentKeyManageBinding>() {
                                 TipDialog.show(
                                     dialogType = TipDialog.DialogType.ERROR,
                                     msg = CommonUtils.getStr("key_manage_delete_failed"),
-                                    showConfirm = false,
+                                    showCancel = false,
                                     countDownTime = 10
                                 )
                             }

+ 3 - 3
app/src/main/java/com/grkj/iscs/features/main/fragment/hardware_manage/LockManageFragment.kt

@@ -52,7 +52,7 @@ class LockManageFragment : BaseFragment<FragmentLockManageBinding>() {
                             dialogType = if (ok) TipDialog.DialogType.SUCCESS else TipDialog.DialogType.ERROR,
                             msg = CommonUtils.getStr(msgRes),
                             countDownTime = 10,
-                            showConfirm = false,
+                            showCancel = false,
                             onCancelClick = { loadLocks(reset = true) }
                         )
                     }
@@ -122,7 +122,7 @@ class LockManageFragment : BaseFragment<FragmentLockManageBinding>() {
                             dialogType = if (ok) TipDialog.DialogType.SUCCESS else TipDialog.DialogType.ERROR,
                             msg = CommonUtils.getStr(msgRes),
                             countDownTime = 10,
-                            showConfirm = false,
+                            showCancel = false,
                             onCancelClick = { loadLocks(reset = true) }
                         )
                     }
@@ -172,7 +172,7 @@ class LockManageFragment : BaseFragment<FragmentLockManageBinding>() {
                                 dialogType = if (ok) TipDialog.DialogType.SUCCESS else TipDialog.DialogType.ERROR,
                                 msg = CommonUtils.getStr(if (ok) "lock_manage_delete_succeed" else "lock_manage_delete_failed")
                                     .toString(),
-                                showConfirm = false, countDownTime = 10
+                                showCancel = false, countDownTime = 10
                             )
                             loadLocks(reset = true)
                         }

+ 3 - 3
app/src/main/java/com/grkj/iscs/features/main/fragment/hardware_manage/RfidTokenManageFragment.kt

@@ -49,7 +49,7 @@ class RfidTokenManageFragment : BaseFragment<FragmentRfidTokenManageBinding>() {
                             dialogType = if (ok) TipDialog.DialogType.SUCCESS else TipDialog.DialogType.ERROR,
                             msg = CommonUtils.getStr(msgRes),
                             countDownTime = 10,
-                            showConfirm = false,
+                            showCancel = false,
                             onCancelClick = {
                                 loadTokens(reset = true)
                             }
@@ -125,7 +125,7 @@ class RfidTokenManageFragment : BaseFragment<FragmentRfidTokenManageBinding>() {
                         dialogType = if (ok) TipDialog.DialogType.SUCCESS else TipDialog.DialogType.ERROR,
                         msg = CommonUtils.getStr(msgRes),
                         countDownTime = 10,
-                        showConfirm = false,
+                        showCancel = false,
                         onCancelClick = { loadTokens(reset = true) }
                     )
                 }
@@ -179,7 +179,7 @@ class RfidTokenManageFragment : BaseFragment<FragmentRfidTokenManageBinding>() {
                         dialogType = if (ok) TipDialog.DialogType.SUCCESS else TipDialog.DialogType.ERROR,
                         msg = CommonUtils.getStr(if (ok) "rfid_token_manage_delete_succeed" else "rfid_token_manage_delete_failed")
                             .toString(),
-                        showConfirm = false,
+                        showCancel = false,
                         countDownTime = 10
                     )
                     loadTokens(reset = true)

+ 45 - 34
app/src/main/java/com/grkj/iscs/features/main/fragment/home/HomeFragment.kt

@@ -158,42 +158,53 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
         AutoSize.autoConvertDensity(requireActivity(), 600f, false)
         CardDatePickerDialog.builder(requireContext()).setTitle(
             if (startTime) CommonUtils.getStr("start_time") else CommonUtils.getStr("end_time")
-        ).setOnChoose { millisecond ->
-            val chooseTime = TimeUtils.formatDate(
-                Date(millisecond), TimeUtils.DEFAULT_DATE_HOUR_MIN_FORMAT
+        )
+            .showBackNow(false)
+            .setLabelText(
+                CommonUtils.getStr("year"),
+                CommonUtils.getStr("month"),
+                CommonUtils.getStr("day"),
+                CommonUtils.getStr("hour"),
+                CommonUtils.getStr("min"),
+                CommonUtils.getStr("sec")
             )
-            if (startTime && binding.endTime.text.isNotEmpty()) {
-                if (TimeUtils.isTimeBefore(
-                        binding.endTime.text.toString(),
-                        chooseTime,
-                        TimeUtils.DEFAULT_DATE_HOUR_MIN_FORMAT
-                    )
-                ) {
-                    showToast(CommonUtils.getStr("end_time_must_large_then_start_time"))
-                    return@setOnChoose
+            .showFocusDateInfo(false)
+            .setOnChoose(CommonUtils.getStr("confirm")) { millisecond ->
+                val chooseTime = TimeUtils.formatDate(
+                    Date(millisecond), TimeUtils.DEFAULT_DATE_HOUR_MIN_FORMAT
+                )
+                if (startTime && binding.endTime.text.isNotEmpty()) {
+                    if (TimeUtils.isTimeBefore(
+                            binding.endTime.text.toString(),
+                            chooseTime,
+                            TimeUtils.DEFAULT_DATE_HOUR_MIN_FORMAT
+                        )
+                    ) {
+                        showToast(CommonUtils.getStr("end_time_must_large_then_start_time"))
+                        return@setOnChoose
+                    }
+                } else {
+                    if (TimeUtils.isTimeBefore(
+                            chooseTime,
+                            binding.startTime.text.toString(),
+                            TimeUtils.DEFAULT_DATE_HOUR_MIN_FORMAT
+                        )
+                    ) {
+                        showToast(CommonUtils.getStr("end_time_must_large_then_start_time"))
+                        return@setOnChoose
+                    }
                 }
-            } else {
-                if (TimeUtils.isTimeBefore(
-                        chooseTime,
-                        binding.startTime.text.toString(),
-                        TimeUtils.DEFAULT_DATE_HOUR_MIN_FORMAT
-                    )
-                ) {
-                    showToast(CommonUtils.getStr("end_time_must_large_then_start_time"))
-                    return@setOnChoose
+                val timeStr = TimeUtils.formatDate(
+                    Date(millisecond), TimeUtils.DEFAULT_DATE_HOUR_MIN_FORMAT
+                )
+                timeView.text = timeStr
+                if (startTime) {
+                    viewModel.startTime = timeStr
+                } else {
+                    viewModel.endTime = timeStr
                 }
-            }
-            val timeStr = TimeUtils.formatDate(
-                Date(millisecond), TimeUtils.DEFAULT_DATE_HOUR_MIN_FORMAT
-            )
-            timeView.text = timeStr
-            if (startTime) {
-                viewModel.startTime = timeStr
-            } else {
-                viewModel.endTime = timeStr
-            }
-            getHomeData()
-        }.build().show()
+                getHomeData()
+            }.setOnCancel(CommonUtils.getStr("cancel")).build().show()
     }
 
     override fun initData() {
@@ -272,7 +283,7 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
                 }.toMutableList().apply {
                     add(
                         0, TextDropDownDialog.SimpleTextDropDownEntity(
-                            dataId = 0, dataText =CommonUtils.getStr("all")
+                            dataId = 0, dataText = CommonUtils.getStr("all")
                         )
                     )
                 }, binding.lockMode

+ 37 - 3
app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/CreateJobFragment.kt

@@ -14,12 +14,14 @@ import com.google.android.flexbox.AlignItems
 import com.google.android.flexbox.FlexDirection
 import com.google.android.flexbox.FlexboxLayoutManager
 import com.google.android.flexbox.JustifyContent
+import com.grkj.data.data.MMKVConstants
 import com.grkj.data.data.Type
 import com.grkj.data.enums.IsolationPointPowerTypeEnum
 import com.grkj.data.model.dos.WorkflowStep
 import com.grkj.data.model.vo.JobPointVo
 import com.grkj.data.model.vo.JobTicketGroupDataVo
 import com.grkj.data.model.vo.JobUserVo
+import com.grkj.data.model.vo.WorkstationManageVo
 import com.grkj.iscs.R
 import com.grkj.iscs.common.DataTransferConstants
 import com.grkj.iscs.databinding.FragmentCreateJobBinding
@@ -38,6 +40,7 @@ import com.grkj.ui_base.utils.CommonUtils
 import com.kongzue.dialogx.dialogs.PopTip
 import com.sik.sikcore.data.GlobalDataTempStore
 import com.sik.sikcore.extension.file
+import com.sik.sikcore.extension.getMMKVData
 import com.sik.sikcore.extension.setDebouncedClickListener
 import com.sik.sikcore.extension.toJson
 import com.sik.sikcore.thread.ThreadUtils
@@ -361,7 +364,38 @@ class CreateJobFragment : BaseFormFragment<FragmentCreateJobBinding>() {
 
     override fun initData() {
         super.initData()
-        viewModel.getWorkflowModes().observe(this) {}
+        viewModel.getWorkstationData().observe(this) {
+            viewModel.getWorkflowModes().observe(this) {
+                val defaultWorkstationId = MMKVConstants.KEY_DEFAULT_WORKSTATION_ID.getMMKVData(0L)
+                val defaultWorkflowModeId = MMKVConstants.KEY_DEFAULT_WORKFLOW_ID.getMMKVData(0L)
+                if (defaultWorkstationId != 0L) {
+                    selectedWorkstationId = defaultWorkstationId
+                    fun findWorkstation(
+                        workstationData: List<WorkstationManageVo>,
+                        workstationId: Long
+                    ): WorkstationManageVo? {
+                        for (manageVo in workstationData) {
+                            return if (manageVo.workstationId == workstationId) {
+                                manageVo
+                            } else if (manageVo.hasChildren()) {
+                                findWorkstation(manageVo.children, workstationId)
+                            } else {
+                                null
+                            }
+                        }
+                        return null
+                    }
+                    binding.workstationTv.text =
+                        findWorkstation(
+                            viewModel.workstationData,
+                            defaultWorkstationId
+                        )?.workstationName
+                    selectedModeId = defaultWorkstationId
+                    binding.lockModeTv.text =
+                        viewModel.workflowModes.find { it.modeId == defaultWorkflowModeId }?.modeName
+                }
+            }
+        }
     }
 
     /**
@@ -419,7 +453,7 @@ class CreateJobFragment : BaseFormFragment<FragmentCreateJobBinding>() {
                                 title = CommonUtils.getStr("action_failed"),
                                 msg = CommonUtils.getStr("job_create_and_execute_failed"),
                                 dialogType = TipDialog.DialogType.ERROR,
-                                showConfirm = false,
+                                showCancel = false,
                                 countDownTime = 10
                             )
                         }
@@ -443,7 +477,7 @@ class CreateJobFragment : BaseFormFragment<FragmentCreateJobBinding>() {
                     title = CommonUtils.getStr("action_failed"),
                     msg = CommonUtils.getStr("job_create_failed"),
                     dialogType = TipDialog.DialogType.ERROR,
-                    showConfirm = false,
+                    showCancel = false,
                     countDownTime = 10
                 )
             }

+ 36 - 2
app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/CreateSopFragment.kt

@@ -14,12 +14,14 @@ import com.google.android.flexbox.AlignItems
 import com.google.android.flexbox.FlexDirection
 import com.google.android.flexbox.FlexboxLayoutManager
 import com.google.android.flexbox.JustifyContent
+import com.grkj.data.data.MMKVConstants
 import com.grkj.data.data.Type
 import com.grkj.data.enums.IsolationPointPowerTypeEnum
 import com.grkj.data.model.dos.WorkflowStep
 import com.grkj.data.model.vo.JobPointVo
 import com.grkj.data.model.vo.JobTicketGroupDataVo
 import com.grkj.data.model.vo.JobUserVo
+import com.grkj.data.model.vo.WorkstationManageVo
 import com.grkj.iscs.R
 import com.grkj.iscs.common.DataTransferConstants
 import com.grkj.iscs.databinding.FragmentCreateSopBinding
@@ -38,6 +40,7 @@ import com.grkj.ui_base.utils.CommonUtils
 import com.kongzue.dialogx.dialogs.PopTip
 import com.sik.sikcore.data.GlobalDataTempStore
 import com.sik.sikcore.extension.file
+import com.sik.sikcore.extension.getMMKVData
 import com.sik.sikcore.extension.setDebouncedClickListener
 import com.sik.sikimage.ImageConvertUtils
 import dagger.hilt.android.AndroidEntryPoint
@@ -287,7 +290,38 @@ class CreateSopFragment : BaseFormFragment<FragmentCreateSopBinding>() {
 
     override fun initData() {
         super.initData()
-        viewModel.getWorkflowModes().observe(this) {}
+        viewModel.getWorkstationData().observe(this) {
+            viewModel.getWorkflowModes().observe(this) {
+                val defaultWorkstationId = MMKVConstants.KEY_DEFAULT_WORKSTATION_ID.getMMKVData(0L)
+                val defaultWorkflowModeId = MMKVConstants.KEY_DEFAULT_WORKFLOW_ID.getMMKVData(0L)
+                if (defaultWorkstationId != 0L) {
+                    selectedWorkstationId = defaultWorkstationId
+                    fun findWorkstation(
+                        workstationData: List<WorkstationManageVo>,
+                        workstationId: Long
+                    ): WorkstationManageVo? {
+                        for (manageVo in workstationData) {
+                            return if (manageVo.workstationId == workstationId) {
+                                manageVo
+                            } else if (manageVo.hasChildren()) {
+                                findWorkstation(manageVo.children, workstationId)
+                            } else {
+                                null
+                            }
+                        }
+                        return null
+                    }
+                    binding.workstationTv.text =
+                        findWorkstation(
+                            viewModel.workstationData,
+                            defaultWorkstationId
+                        )?.workstationName
+                    selectedModeId = defaultWorkstationId
+                    binding.lockModeTv.text =
+                        viewModel.workflowModes.find { it.modeId == defaultWorkflowModeId }?.modeName
+                }
+            }
+        }
     }
 
     /**
@@ -319,7 +353,7 @@ class CreateSopFragment : BaseFormFragment<FragmentCreateSopBinding>() {
                     title = CommonUtils.getStr("action_failed").toString(),
                     msg = CommonUtils.getStr("sop_create_failed").toString(),
                     dialogType = TipDialog.DialogType.ERROR,
-                    showConfirm = false,
+                    showCancel = false,
                     countDownTime = 10
                 )
             }

+ 1 - 1
app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/CreateSopJobFragment.kt

@@ -308,7 +308,7 @@ class CreateSopJobFragment : BaseFormFragment<FragmentCreateSopJobBinding>() {
                     title = CommonUtils.getStr("action_failed").toString(),
                     msg = CommonUtils.getStr("sop_job_save_failed").toString(),
                     dialogType = TipDialog.DialogType.ERROR,
-                    showConfirm = false,
+                    showCancel = false,
                     countDownTime = 10
                 )
             }

+ 2 - 2
app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/EditJobFragment.kt

@@ -294,7 +294,7 @@ class EditJobFragment : BaseFormFragment<FragmentEditJobBinding>() {
                                 msg = CommonUtils.getStr("job_create_and_execute_failed")
                                     .toString(),
                                 dialogType = TipDialog.DialogType.ERROR,
-                                showConfirm = false,
+                                showCancel = false,
                                 countDownTime = 10
                             )
                         }
@@ -318,7 +318,7 @@ class EditJobFragment : BaseFormFragment<FragmentEditJobBinding>() {
                     title = CommonUtils.getStr("action_failed").toString(),
                     msg = CommonUtils.getStr("job_create_failed").toString(),
                     dialogType = TipDialog.DialogType.ERROR,
-                    showConfirm = false,
+                    showCancel = false,
                     countDownTime = 10
                 )
             }

+ 1 - 1
app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/EditSopFragment.kt

@@ -283,7 +283,7 @@ class EditSopFragment : BaseFormFragment<FragmentEditSopBinding>() {
                     title = CommonUtils.getStr("action_failed").toString(),
                     msg = CommonUtils.getStr("sop_save_failed").toString(),
                     dialogType = TipDialog.DialogType.ERROR,
-                    showConfirm = false,
+                    showCancel = false,
                     countDownTime = 10
                 )
             }

+ 1 - 1
app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/EditSopJobFragment.kt

@@ -307,7 +307,7 @@ class EditSopJobFragment : BaseFormFragment<FragmentEditSopJobBinding>() {
                     title = CommonUtils.getStr("action_failed").toString(),
                     msg = CommonUtils.getStr("sop_job_save_failed").toString(),
                     dialogType = TipDialog.DialogType.ERROR,
-                    showConfirm = false,
+                    showCancel = false,
                     countDownTime = 10
                 )
             }

+ 2 - 1
app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/JobExecuteFragment.kt

@@ -42,6 +42,7 @@ import com.grkj.ui_base.utils.event.FlashTipEvent
 import com.grkj.ui_base.utils.event.RFIDCardReadEvent
 import com.grkj.ui_base.utils.event.UiEvent
 import com.grkj.ui_base.utils.extension.toggleExpandView
+import com.grkj.ui_base.utils.removeBgTint
 import com.kongzue.dialogx.dialogs.BottomMenu
 import com.sik.sikcore.data.GlobalDataTempStore
 import com.sik.sikcore.date.TimeUtils
@@ -276,7 +277,7 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
                 if (item.stepId == viewModel.currentStepData?.stepId) {
                     itemBinding.stepLayout.changeBgTint(CommonUtils.getColor(com.grkj.ui_base.R.attr.colorHomeBlockOngoing))
                 } else {
-                    itemBinding.stepLayout.backgroundTintList = null
+                    itemBinding.stepLayout.removeBgTint()
                 }
             }
         }

+ 2 - 2
app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/JobManageFragment.kt

@@ -87,7 +87,7 @@ class JobManageFragment : BaseFragment<FragmentJobManageBinding>() {
                             dialogType = TipDialog.DialogType.SUCCESS,
                             msg = CommonUtils.getStr("job_manage_delete_succeed")
                                 .toString(),
-                            showConfirm = false,
+                            showCancel = false,
                             countDownTime = 10,
                             onConfirmClick = {
                                 getData(false)
@@ -101,7 +101,7 @@ class JobManageFragment : BaseFragment<FragmentJobManageBinding>() {
                             dialogType = TipDialog.DialogType.ERROR,
                             msg = CommonUtils.getStr("job_manage_delete_failed")
                                 .toString(),
-                            showConfirm = false,
+                            showCancel = false,
                             countDownTime = 10
                         )
                     }

+ 10 - 3
app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/JobManageHomeFragment.kt

@@ -44,7 +44,6 @@ class JobManageHomeFragment : BaseFragment<FragmentJobManageHomeBinding>() {
             "ballot-check.svg",
             RoleFunctionalPermissionsEnum.IN_PROGRESS_JOB.description,
             RoleFunctionalPermissionsEnum.IN_PROGRESS_JOB.functionalPermission,
-            menuBgTint = CommonUtils.getColor(com.grkj.ui_base.R.attr.colorJobManageHomeInProgressBg),
         ),
         MenuItemEntity(
             2,
@@ -63,7 +62,6 @@ class JobManageHomeFragment : BaseFragment<FragmentJobManageHomeBinding>() {
             "message-alert.svg",
             RoleFunctionalPermissionsEnum.EXCEPTION_JOB.description,
             RoleFunctionalPermissionsEnum.EXCEPTION_JOB.functionalPermission,
-            menuBgTint = CommonUtils.getColor(com.grkj.ui_base.R.attr.colorJobManageHomeExceptionJobBg),
         ),
         MenuItemEntity(
             5,
@@ -125,7 +123,9 @@ class JobManageHomeFragment : BaseFragment<FragmentJobManageHomeBinding>() {
         itemBinding.homeMenuLayout.apply {
             this.badgeViewHelper.apply {
                 setBadgeGravity(BGABadgeViewHelper.BadgeGravity.RightTop)
-                setBadgeTextSizeSp(resources.getDimension(com.grkj.ui_base.R.dimen.iscs_text_xsm).toInt())
+                setBadgeTextSizeSp(
+                    resources.getDimension(com.grkj.ui_base.R.dimen.iscs_text_xsm).toInt()
+                )
             }
             if (item.badgeNum != 0) {
                 this.showTextBadge("${item.badgeNum}")
@@ -154,6 +154,13 @@ class JobManageHomeFragment : BaseFragment<FragmentJobManageHomeBinding>() {
                 it
             binding.homeMenuRv.adapter?.notifyDataSetChanged()
         }
+        viewModel.getDictData().observe(this) {
+            viewModel.getExceptionJobCount().observe(this) {
+                menuData.find { it.permission == RoleFunctionalPermissionsEnum.EXCEPTION_JOB.functionalPermission }?.badgeNum =
+                    it
+                binding.homeMenuRv.adapter?.notifyDataSetChanged()
+            }
+        }
         BottomNavVisibilityEvent.sendBottomNavVisibilityEvent()
     }
 

+ 2 - 2
app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/SopManageFragment.kt

@@ -82,7 +82,7 @@ class SopManageFragment : BaseFragment<FragmentSopManageBinding>() {
                                     dialogType = TipDialog.DialogType.SUCCESS,
                                     msg = CommonUtils.getStr("sop_manage_delete_succeed")
                                         .toString(),
-                                    showConfirm = false,
+                                    showCancel = false,
                                     countDownTime = 10,
                                     onConfirmClick = {
                                         getSopData(false)
@@ -96,7 +96,7 @@ class SopManageFragment : BaseFragment<FragmentSopManageBinding>() {
                                     dialogType = TipDialog.DialogType.ERROR,
                                     msg = CommonUtils.getStr("sop_manage_delete_failed")
                                         .toString(),
-                                    showConfirm = false,
+                                    showCancel = false,
                                     countDownTime = 10
                                 )
                             }

+ 12 - 2
app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/WorkflowManageFragment.kt

@@ -8,6 +8,7 @@ import com.drake.brv.utils.divider
 import com.drake.brv.utils.linear
 import com.drake.brv.utils.models
 import com.drake.brv.utils.setup
+import com.grkj.data.data.MMKVConstants
 import com.grkj.data.model.vo.WorkflowModeVo
 import com.grkj.iscs.R
 import com.grkj.iscs.common.DataTransferConstants
@@ -18,6 +19,8 @@ import com.grkj.ui_base.base.BaseFragment
 import com.grkj.ui_base.dialog.TipDialog
 import com.grkj.ui_base.utils.CommonUtils
 import com.sik.sikcore.data.GlobalDataTempStore
+import com.sik.sikcore.extension.getMMKVData
+import com.sik.sikcore.extension.saveMMKVData
 import com.sik.sikcore.extension.setDebouncedClickListener
 import dagger.hilt.android.AndroidEntryPoint
 
@@ -72,7 +75,7 @@ class WorkflowManageFragment : BaseFragment<FragmentWorkflowManageBinding>() {
                             dialogType = TipDialog.DialogType.SUCCESS,
                             msg = CommonUtils.getStr("workflow_mode_manage_delete_succeed")
                                 .toString(),
-                            showConfirm = false,
+                            showCancel = false,
                             countDownTime = 10,
                             onConfirmClick = {
                                 getData()
@@ -86,7 +89,7 @@ class WorkflowManageFragment : BaseFragment<FragmentWorkflowManageBinding>() {
                             dialogType = TipDialog.DialogType.ERROR,
                             msg = CommonUtils.getStr("job_manage_delete_failed")
                                 .toString(),
-                            showConfirm = false,
+                            showCancel = false,
                             countDownTime = 10
                         )
                     }
@@ -105,6 +108,13 @@ class WorkflowManageFragment : BaseFragment<FragmentWorkflowManageBinding>() {
         val itemBinding = holder.getBinding<ItemWorkflowManageBinding>()
         val item = holder.getModel<WorkflowModeVo>()
         itemBinding.name.text = item.modeName
+        itemBinding.setDefault.setOnCheckedChangeListener(null)
+        itemBinding.setDefault.isChecked =
+            MMKVConstants.KEY_DEFAULT_WORKFLOW_ID.getMMKVData(0L) == item.modeId
+        itemBinding.setDefault.setOnCheckedChangeListener { v, checked ->
+            MMKVConstants.KEY_DEFAULT_WORKFLOW_ID.saveMMKVData(item.modeId)
+            adapter.notifyDataSetChanged()
+        }
         itemBinding.status.setOnCheckedChangeListener(null)
         itemBinding.status.isChecked = item.status
         itemBinding.status.isEnabled = item.isPreset == false

+ 18 - 3
app/src/main/java/com/grkj/iscs/features/main/viewmodel/data_manage/SwitchLayoutViewModel.kt

@@ -104,8 +104,13 @@ class SwitchLayoutViewModel @Inject constructor(
                 MapInfoRespVO.IsMapPoint(
                     it.pointId,
                     it.pointName,
-                    mapPoint?.x, mapPoint?.y,
-                    "", rfidData?.rfid ?: "", it.pointSerialNumber, it.switchStatus
+                    mapPoint?.x,
+                    mapPoint?.y,
+                    "",
+                    rfidData?.rfid ?: "",
+                    it.pointSerialNumber,
+                    it.switchStatus,
+                    mapPoint?.showInMap ?: false
                 )
             }
             logger.info("点位数据:${mapInfoRespVO.pointList}")
@@ -183,7 +188,7 @@ class SwitchLayoutViewModel @Inject constructor(
 
         itMapInfo.pointList
             ?.asSequence()
-            ?.filter { it.x != null && it.y != null && it.entityId != null }
+            ?.filter { it.x != null && it.y != null && it.entityId != null && it.showInMap }
             ?.forEach { pt ->
                 // 1) 后端格坐标 → 全局像素(取格中心:+0.5f)
                 val gridX = (pt.x!!.toFloat() + 0.5f) * cellPx
@@ -318,6 +323,16 @@ class SwitchLayoutViewModel @Inject constructor(
         }
     }
 
+    /**
+     * 修改地图点位显示状态
+     */
+    fun changeShowInMap(pointId: Long, showInMap: Boolean): LiveData<Boolean> {
+        return liveData(Dispatchers.IO) {
+            hardwareLogic.changeShowInMap(pointId, showInMap)
+            emit(true)
+        }
+    }
+
     /**
      * 更新地图点位数据
      */

+ 3 - 4
app/src/main/java/com/grkj/iscs/features/main/viewmodel/data_manage/WorkstationManageViewModel.kt

@@ -4,7 +4,6 @@ import androidx.lifecycle.LiveData
 import androidx.lifecycle.liveData
 import com.grkj.data.model.vo.WorkstationManageVo
 import com.grkj.data.logic.IWorkstationLogic
-import com.grkj.ui_base.R
 import com.grkj.ui_base.base.BaseViewModel
 import com.grkj.ui_base.utils.CommonUtils
 import dagger.hilt.android.lifecycle.HiltViewModel
@@ -60,18 +59,18 @@ class WorkstationManageViewModel @Inject constructor(val workstationRepository:
     /**
      * 添加区域
      */
-    fun addWorkstation(workstationName: String): LiveData<Boolean> {
+    fun addWorkstation(workstationName: String): LiveData<Long> {
         return liveData(Dispatchers.IO) {
             val selectedItem = workstationManageData.firstOrNull { it.isSelected }
             val orderNum = selectedItem?.let {
                 return@let workstationManageData.count { it.parentId == selectedItem.workstationId } + 1
             } ?: workstationManageData.count { it.parentId == 0L }
-            workstationRepository.insertWorkstation(
+            val workstationId = workstationRepository.insertWorkstation(
                 workstationManageData.firstOrNull { it.isSelected },
                 orderNum,
                 workstationName
             )
-            emit(true)
+            emit(workstationId)
         }
     }
 

+ 45 - 0
app/src/main/java/com/grkj/iscs/features/main/viewmodel/job_manage/JobManageHomeViewModel.kt

@@ -2,23 +2,39 @@ package com.grkj.iscs.features.main.viewmodel.job_manage
 
 import androidx.lifecycle.LiveData
 import androidx.lifecycle.liveData
+import com.grkj.data.data.DictConstants
 import com.grkj.data.data.MainDomainData
+import com.grkj.data.logic.IExceptionLogic
 import com.grkj.data.logic.IJobTicketLogic
 import com.grkj.data.model.extension.splitTodoSteps
 import com.grkj.data.model.extension.toTodoVo
 import com.grkj.data.model.local.isMyTodo
+import com.grkj.data.model.res.CommonDictRes
 import com.grkj.data.model.vo.TodoItemVo
+import com.grkj.shared.utils.i18n.I18nManager
 import com.grkj.ui_base.base.BaseViewModel
+import com.grkj.ui_base.business.DataBusiness
 import dagger.hilt.android.lifecycle.HiltViewModel
 import kotlinx.coroutines.Dispatchers
 import javax.inject.Inject
 
 @HiltViewModel
 class JobManageHomeViewModel @Inject constructor(
+    val exceptionRepository: IExceptionLogic,
     val jobTicketRepository: IJobTicketLogic
 ) : BaseViewModel() {
     var todoItemVos: MutableList<TodoItemVo> = mutableListOf()
 
+    /**
+     * 异常类型
+     */
+    var exceptionType: List<CommonDictRes> = mutableListOf()
+
+    /**
+     * 异常状态
+     */
+    var exceptionStatus: List<CommonDictRes> = mutableListOf()
+
     /**
      * 获取正在进行中的作业
      */
@@ -50,4 +66,33 @@ class JobManageHomeViewModel @Inject constructor(
             emit(todoData.first.size + todoData.second.size)
         }
     }
+
+    /**
+     * 获取字典数据
+     */
+    fun getDictData(): LiveData<Boolean> {
+        return liveData(Dispatchers.IO) {
+            exceptionType = DataBusiness.fetchDict(DictConstants.KEY_EXCEPTION_TYPE)
+            exceptionStatus = DataBusiness.fetchDict(DictConstants.KEY_EXCEPTION_STATUS)
+            emit(true)
+        }
+    }
+
+    /**
+     * 获取异常作业数量
+     */
+    fun getExceptionJobCount(): LiveData<Int> {
+        return liveData(Dispatchers.IO) {
+            val exceptionDataList = exceptionRepository.getExceptionData()
+            val exceptionJobCount = exceptionDataList.count {
+                it.exceptionType.toString() == exceptionType.find {
+                    it.dictLabel == I18nManager.t(
+                        "job_exception"
+                    )
+                }?.dictValue &&
+                        exceptionStatus.find { it.dictLabel == I18nManager.t("pending") }?.dictValue == it.exceptionStatus.toString()
+            }
+            emit(exceptionJobCount)
+        }
+    }
 }

+ 37 - 21
app/src/main/java/com/grkj/iscs/features/splash/activity/SplashActivity.kt

@@ -4,15 +4,10 @@ import android.content.Intent
 import android.view.Gravity
 import androidx.activity.viewModels
 import androidx.lifecycle.lifecycleScope
-import androidx.work.Constraints
-import androidx.work.ExistingPeriodicWorkPolicy
-import androidx.work.PeriodicWorkRequestBuilder
-import androidx.work.WorkManager
 import com.grkj.data.data.MMKVConstants
 import com.grkj.data.database.BackupScheduler
 import com.grkj.data.database.DbReadyGate
 import com.grkj.data.database.ISCSDatabase
-import com.grkj.data.database.RoomBackupWorker
 import com.grkj.iscs.R
 import com.grkj.iscs.common.GlobalManager
 import com.grkj.iscs.databinding.ActivitySplashBinding
@@ -20,18 +15,19 @@ import com.grkj.iscs.features.init.activity.InitActivity
 import com.grkj.iscs.features.login.activity.LoginActivity
 import com.grkj.iscs.features.splash.viewmodel.SplashViewModel
 import com.grkj.shared.config.Constants
+import com.grkj.shared.utils.i18n.I18nManager
 import com.grkj.ui_base.base.BaseActivity
 import com.grkj.ui_base.utils.event.StartModbusEvent
 import com.kongzue.dialogx.DialogX
 import com.kongzue.dialogx.util.TextInfo
+import com.scwang.smart.refresh.footer.ClassicsFooter
+import com.scwang.smart.refresh.header.ClassicsHeader
 import com.sik.sikandroid.permission.PermissionUtils
 import com.sik.sikcore.extension.getMMKVData
 import dagger.hilt.android.AndroidEntryPoint
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.launch
-import kotlinx.coroutines.withContext
-import java.util.concurrent.TimeUnit
 
 @AndroidEntryPoint
 class SplashActivity : BaseActivity<ActivitySplashBinding>() {
@@ -44,20 +40,7 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() {
         // 应用启动时按已存配置安排下一次(默认=每天 00:00)
         BackupScheduler.applySaved(this)
         GlobalManager.cronJobManager.bindService()
-        val dialogXTextInfo = TextInfo()
-        val dialogXTitleTextInfo = TextInfo().apply {
-            setBold(true)
-            setGravity(Gravity.CENTER)
-        }
-        dialogXTextInfo.fontSize = 18
-        dialogXTitleTextInfo.fontSize = 22
-        DialogX.popTextInfo = dialogXTextInfo
-        DialogX.buttonTextInfo = dialogXTextInfo
-        DialogX.tipTextInfo = dialogXTextInfo
-        DialogX.messageTextInfo = dialogXTextInfo
-        DialogX.menuTextInfo = dialogXTextInfo
-        DialogX.okButtonTextInfo = dialogXTextInfo
-        DialogX.titleTextInfo = dialogXTitleTextInfo
+        initConfig()
         PermissionUtils.checkAndRequestPermissions(Constants.needPermission) {
             logger.info("授权结果:${it}")
             if (it) {
@@ -101,4 +84,37 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() {
             }
         }
     }
+
+    fun initConfig(){
+        val dialogXTextInfo = TextInfo()
+        val dialogXTitleTextInfo = TextInfo().apply {
+            setBold(true)
+            setGravity(Gravity.CENTER)
+        }
+        dialogXTextInfo.fontSize = 18
+        dialogXTitleTextInfo.fontSize = 22
+        DialogX.popTextInfo = dialogXTextInfo
+        DialogX.buttonTextInfo = dialogXTextInfo
+        DialogX.tipTextInfo = dialogXTextInfo
+        DialogX.messageTextInfo = dialogXTextInfo
+        DialogX.menuTextInfo = dialogXTextInfo
+        DialogX.okButtonTextInfo = dialogXTextInfo
+        DialogX.titleTextInfo = dialogXTitleTextInfo
+        ClassicsHeader.REFRESH_HEADER_PULLING = I18nManager.t("header_pulling")//"下拉可以刷新";
+        ClassicsHeader.REFRESH_HEADER_REFRESHING = I18nManager.t("header_refreshing")//"正在刷新...";
+        ClassicsHeader.REFRESH_HEADER_LOADING = I18nManager.t("header_loading")//"正在加载...";
+        ClassicsHeader.REFRESH_HEADER_RELEASE = I18nManager.t("header_release")//"释放立即刷新";
+        ClassicsHeader.REFRESH_HEADER_FINISH = I18nManager.t("header_finish")//"刷新完成";
+        ClassicsHeader.REFRESH_HEADER_FAILED = I18nManager.t("header_failed")//"刷新失败";
+        ClassicsHeader.REFRESH_HEADER_UPDATE = I18nManager.t("header_update")//"上次更新 M-d HH:mm";
+        ClassicsHeader.REFRESH_HEADER_SECONDARY = I18nManager.t("header_secondary")//"释放进入二楼"
+
+        ClassicsFooter.REFRESH_FOOTER_PULLING = I18nManager.t("footer_pulling")//"上拉加载更多";
+        ClassicsFooter.REFRESH_FOOTER_RELEASE = I18nManager.t("footer_release")//"释放立即加载";
+        ClassicsFooter.REFRESH_FOOTER_LOADING = I18nManager.t("footer_loading")//"正在刷新...";
+        ClassicsFooter.REFRESH_FOOTER_REFRESHING = I18nManager.t("footer_refreshing")//"正在加载...";
+        ClassicsFooter.REFRESH_FOOTER_FINISH = I18nManager.t("footer_finish")//"加载完成";
+        ClassicsFooter.REFRESH_FOOTER_FAILED = I18nManager.t("footer_failed")//"加载失败";
+        ClassicsFooter.REFRESH_FOOTER_NOTHING = I18nManager.t("footer_nothing")//"全部加载完成";
+    }
 }

+ 1 - 1
app/src/main/res/drawable/bg_text_drop_down.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
     <!-- 暗色表面:比页面背景略亮一档 -->
-    <solid android:color="?attr/colorSurface"/>
+    <solid android:color="?attr/colorContainerBg"/>
     <!-- 细描边:8% 白 -->
     <stroke android:width="@dimen/iscs_stroke_sm" android:color="?attr/colorStroke"/>
     <corners android:radius="@dimen/iscs_radius_md"/>

+ 79 - 62
app/src/main/res/layout-land/fragment_home.xml

@@ -13,17 +13,6 @@
             android:layout_height="match_parent"
             android:orientation="vertical">
 
-            <TextView
-                android:id="@+id/title_cn"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginLeft="@dimen/iscs_space_4"
-                android:layout_marginTop="@dimen/iscs_space_2"
-                android:textColor="?attr/colorTextPrimary"
-                android:textSize="@dimen/iscs_text_md"
-                android:textStyle="bold"
-                app:i18nKey='@{"loto"}' />
-
             <LinearLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
@@ -61,26 +50,40 @@
                 android:layout_height="match_parent"
                 android:layout_marginHorizontal="@dimen/iscs_space_4"
                 android:layout_marginVertical="@dimen/iscs_space_2"
-                android:divider="@drawable/common_divider_large_space_grid_land"
+                android:divider="@drawable/common_divider_small_space_vertical"
                 android:orientation="vertical"
                 android:showDividers="middle">
 
                 <LinearLayout
                     android:layout_width="match_parent"
-                    android:layout_height="0dp"
-                    android:layout_weight="1"
-                    android:background="@drawable/home_card_bg"
-                    android:orientation="vertical">
+                    android:layout_height="wrap_content"
+                    android:gravity="center_vertical"
+                    android:orientation="horizontal"
+                    android:paddingVertical="@dimen/iscs_space_1"
+                    android:paddingLeft="@dimen/iscs_space_2">
+
+                    <ImageView
+                        android:layout_width="@dimen/title_icon_size"
+                        android:layout_height="@dimen/title_icon_size"
+                        android:tint="?attr/colorPrimary"
+                        app:skinSrc='@{"icon_realtime_data.png"}' />
 
                     <TextView
                         android:id="@+id/realtime_data_title"
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
-                        android:paddingVertical="@dimen/iscs_space_1"
-                        android:paddingLeft="@dimen/iscs_space_2"
+                        android:layout_marginLeft="@dimen/iscs_space_2"
                         android:textColor="?attr/colorTextPrimary"
                         android:textSize="@dimen/iscs_text_md"
                         app:i18nKey='@{"home_realtime_data_title"}' />
+                </LinearLayout>
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="0dp"
+                    android:layout_weight="1"
+                    android:background="@drawable/home_card_bg"
+                    android:orientation="vertical">
 
                     <LinearLayout
                         android:id="@+id/realtime_data_filter_layout"
@@ -117,7 +120,7 @@
                         </LinearLayout>
 
                         <LinearLayout
-                            android:layout_width="wrap_content"
+                            android:layout_width="match_parent"
                             android:layout_height="wrap_content"
                             android:layout_marginLeft="@dimen/iscs_space_2"
                             android:gravity="center_vertical"
@@ -127,7 +130,7 @@
                                 android:layout_width="wrap_content"
                                 android:layout_height="wrap_content"
                                 android:textColor="?attr/colorTextPrimary"
-                                android:textSize="22sp"
+                                android:textSize="@dimen/iscs_text_md"
                                 app:i18nKey='@{"workflow_mode"}' />
 
                             <TextView
@@ -145,7 +148,6 @@
                         </LinearLayout>
                     </LinearLayout>
 
-
                     <LinearLayout
                         android:layout_width="match_parent"
                         android:layout_height="match_parent"
@@ -160,32 +162,32 @@
                             android:layout_width="0dp"
                             android:layout_height="match_parent"
                             android:layout_weight="1"
+                            android:background="@drawable/bg_home_card_num"
+                            android:backgroundTint="?attr/colorHomeBlockOngoing"
                             android:divider="@drawable/common_divider_small_space_horizontal"
                             android:gravity="center_vertical"
-                            android:orientation="vertical"
+                            android:orientation="horizontal"
                             android:showDividers="middle">
 
                             <TextView
-                                android:layout_width="match_parent"
+                                android:layout_width="wrap_content"
                                 android:layout_height="wrap_content"
                                 android:layout_marginHorizontal="@dimen/iscs_space_2"
                                 android:gravity="center"
                                 android:textColor="?attr/colorTextPrimary"
                                 android:textSize="@dimen/iscs_text_md"
                                 app:i18nKey='@{"ongoing_job_tv"}'
-                                tools:text="进行中的作业" />
+                                tools:text="进行中\n的作业" />
 
                             <TextView
                                 android:id="@+id/ongoing_job_num"
                                 android:layout_width="match_parent"
                                 android:layout_height="wrap_content"
                                 android:layout_margin="@dimen/iscs_space_2"
-                                android:background="@drawable/bg_home_card_num"
-                                android:backgroundTint="?attr/colorHomeBlockOngoing"
                                 android:gravity="center"
                                 android:padding="@dimen/iscs_space_2"
                                 android:textColor="?attr/colorTextPrimary"
-                                android:textSize="@dimen/iscs_text_h2"
+                                android:textSize="@dimen/iscs_text_h3"
                                 android:textStyle="bold"
                                 tools:text="80" />
                         </LinearLayout>
@@ -194,13 +196,15 @@
                             android:layout_width="0dp"
                             android:layout_height="match_parent"
                             android:layout_weight="1"
+                            android:background="@drawable/bg_home_card_num"
+                            android:backgroundTint="?attr/colorHomeBlockLocked"
                             android:divider="@drawable/common_divider_small_space_horizontal"
                             android:gravity="center_vertical"
-                            android:orientation="vertical"
+                            android:orientation="horizontal"
                             android:showDividers="middle">
 
                             <TextView
-                                android:layout_width="match_parent"
+                                android:layout_width="wrap_content"
                                 android:layout_height="wrap_content"
                                 android:layout_marginHorizontal="@dimen/iscs_space_2"
                                 android:gravity="center"
@@ -213,12 +217,10 @@
                                 android:layout_width="match_parent"
                                 android:layout_height="wrap_content"
                                 android:layout_margin="@dimen/iscs_space_2"
-                                android:background="@drawable/bg_home_card_num"
-                                android:backgroundTint="?attr/colorHomeBlockLocked"
                                 android:gravity="center"
                                 android:padding="@dimen/iscs_space_2"
                                 android:textColor="?attr/colorTextPrimary"
-                                android:textSize="@dimen/iscs_text_h2"
+                                android:textSize="@dimen/iscs_text_h3"
                                 android:textStyle="bold" />
                         </LinearLayout>
 
@@ -226,13 +228,15 @@
                             android:layout_width="0dp"
                             android:layout_height="match_parent"
                             android:layout_weight="1"
+                            android:background="@drawable/bg_home_card_num"
+                            android:backgroundTint="?attr/colorHomeBlockUseHardware"
                             android:divider="@drawable/common_divider_small_space_horizontal"
                             android:gravity="center_vertical"
-                            android:orientation="vertical"
+                            android:orientation="horizontal"
                             android:showDividers="middle">
 
                             <TextView
-                                android:layout_width="match_parent"
+                                android:layout_width="wrap_content"
                                 android:layout_height="wrap_content"
                                 android:layout_marginHorizontal="@dimen/iscs_space_2"
                                 android:gravity="center"
@@ -245,33 +249,47 @@
                                 android:layout_width="match_parent"
                                 android:layout_height="wrap_content"
                                 android:layout_margin="@dimen/iscs_space_2"
-                                android:background="@drawable/bg_home_card_num"
-                                android:backgroundTint="?attr/colorHomeBlockUseHardware"
                                 android:gravity="center"
                                 android:padding="@dimen/iscs_space_2"
                                 android:textColor="?attr/colorTextPrimary"
-                                android:textSize="@dimen/iscs_text_h2"
+                                android:textSize="@dimen/iscs_text_h3"
                                 android:textStyle="bold" />
                         </LinearLayout>
                     </LinearLayout>
 
                 </LinearLayout>
 
-                <RelativeLayout
+                <LinearLayout
                     android:layout_width="match_parent"
-                    android:layout_height="0dp"
-                    android:layout_weight="1"
-                    android:background="@drawable/home_card_bg">
+                    android:layout_height="wrap_content"
+                    android:gravity="center_vertical"
+                    android:orientation="horizontal"
+                    android:paddingVertical="@dimen/iscs_space_1"
+                    android:paddingLeft="@dimen/iscs_space_2">
+
+                    <ImageView
+                        android:layout_width="@dimen/title_icon_size"
+                        android:layout_height="@dimen/title_icon_size"
+                        android:tint="?attr/colorPrimary"
+                        app:skinSrc='@{"icon_overview_data.png"}' />
 
                     <TextView
                         android:id="@+id/overview_data_title"
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
-                        android:paddingVertical="@dimen/iscs_space_1"
-                        android:paddingLeft="@dimen/iscs_space_2"
+                        android:layout_marginLeft="@dimen/iscs_space_2"
                         android:textColor="?attr/colorTextPrimary"
                         android:textSize="@dimen/iscs_text_md"
                         app:i18nKey='@{"home_overview_data_title"}' />
+                </LinearLayout>
+
+
+                <RelativeLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="0dp"
+                    android:layout_weight="1"
+                    android:background="@drawable/home_card_bg">
+
 
                     <LinearLayout
                         android:id="@+id/overview_data_filter_layout"
@@ -291,7 +309,7 @@
                                 android:layout_width="wrap_content"
                                 android:layout_height="wrap_content"
                                 android:textColor="?attr/colorTextPrimary"
-                                android:textSize="22sp"
+                                android:textSize="@dimen/iscs_text_md"
                                 app:i18nKey='@{"time_frame_tv"}' />
 
                             <TextView
@@ -332,15 +350,15 @@
                         <LinearLayout
                             android:layout_width="match_parent"
                             android:layout_height="wrap_content"
-                            android:layout_marginLeft="@dimen/iscs_space_2"
                             android:gravity="center_vertical"
+                            android:layout_marginLeft="@dimen/iscs_space_2"
                             android:orientation="horizontal">
 
                             <TextView
                                 android:layout_width="wrap_content"
                                 android:layout_height="wrap_content"
                                 android:textColor="?attr/colorTextPrimary"
-                                android:textSize="22sp"
+                                android:textSize="@dimen/iscs_text_md"
                                 app:i18nKey='@{"zone"}' />
 
                             <TextView
@@ -358,7 +376,6 @@
                         </LinearLayout>
                     </LinearLayout>
 
-
                     <LinearLayout
                         android:layout_width="match_parent"
                         android:layout_height="match_parent"
@@ -374,13 +391,15 @@
                             android:layout_width="0dp"
                             android:layout_height="match_parent"
                             android:layout_weight="1"
+                            android:background="@drawable/bg_home_card_num"
+                            android:backgroundTint="?attr/colorHomeBlockOngoing"
                             android:divider="@drawable/common_divider_small_space_horizontal"
                             android:gravity="center_vertical"
-                            android:orientation="vertical"
+                            android:orientation="horizontal"
                             android:showDividers="middle">
 
                             <TextView
-                                android:layout_width="match_parent"
+                                android:layout_width="wrap_content"
                                 android:layout_height="wrap_content"
                                 android:layout_marginHorizontal="@dimen/iscs_space_2"
                                 android:gravity="center"
@@ -393,12 +412,10 @@
                                 android:layout_width="match_parent"
                                 android:layout_height="wrap_content"
                                 android:layout_margin="@dimen/iscs_space_2"
-                                android:background="@drawable/bg_home_card_num"
-                                android:backgroundTint="?attr/colorHomeBlockOngoing"
                                 android:gravity="center"
                                 android:padding="@dimen/iscs_space_2"
                                 android:textColor="?attr/colorTextPrimary"
-                                android:textSize="@dimen/iscs_text_h2"
+                                android:textSize="@dimen/iscs_text_h3"
                                 android:textStyle="bold" />
                         </LinearLayout>
 
@@ -406,13 +423,15 @@
                             android:layout_width="0dp"
                             android:layout_height="match_parent"
                             android:layout_weight="1"
+                            android:background="@drawable/bg_home_card_num"
+                            android:backgroundTint="?attr/colorHomeBlockLocked"
                             android:divider="@drawable/common_divider_small_space_horizontal"
                             android:gravity="center_vertical"
-                            android:orientation="vertical"
+                            android:orientation="horizontal"
                             android:showDividers="middle">
 
                             <TextView
-                                android:layout_width="match_parent"
+                                android:layout_width="wrap_content"
                                 android:layout_height="wrap_content"
                                 android:layout_marginHorizontal="@dimen/iscs_space_2"
                                 android:gravity="center"
@@ -425,12 +444,10 @@
                                 android:layout_width="match_parent"
                                 android:layout_height="wrap_content"
                                 android:layout_margin="@dimen/iscs_space_2"
-                                android:background="@drawable/bg_home_card_num"
-                                android:backgroundTint="?attr/colorHomeBlockLocked"
                                 android:gravity="center"
                                 android:padding="@dimen/iscs_space_2"
                                 android:textColor="?attr/colorTextPrimary"
-                                android:textSize="@dimen/iscs_text_h2"
+                                android:textSize="@dimen/iscs_text_h3"
                                 android:textStyle="bold" />
                         </LinearLayout>
 
@@ -438,13 +455,15 @@
                             android:layout_width="0dp"
                             android:layout_height="match_parent"
                             android:layout_weight="1"
+                            android:background="@drawable/bg_home_card_num"
+                            android:backgroundTint="?attr/colorHomeBlockUseHardware"
                             android:divider="@drawable/common_divider_small_space_horizontal"
                             android:gravity="center_vertical"
-                            android:orientation="vertical"
+                            android:orientation="horizontal"
                             android:showDividers="middle">
 
                             <TextView
-                                android:layout_width="match_parent"
+                                android:layout_width="wrap_content"
                                 android:layout_height="wrap_content"
                                 android:layout_marginHorizontal="@dimen/iscs_space_2"
                                 android:gravity="center"
@@ -457,12 +476,10 @@
                                 android:layout_width="match_parent"
                                 android:layout_height="wrap_content"
                                 android:layout_margin="@dimen/iscs_space_2"
-                                android:background="@drawable/bg_home_card_num"
-                                android:backgroundTint="?attr/colorHomeBlockUseHardware"
                                 android:gravity="center"
                                 android:padding="@dimen/iscs_space_2"
                                 android:textColor="?attr/colorTextPrimary"
-                                android:textSize="@dimen/iscs_text_h2"
+                                android:textSize="@dimen/iscs_text_h3"
                                 android:textStyle="bold" />
                         </LinearLayout>
                     </LinearLayout>

+ 7 - 7
app/src/main/res/layout-land/fragment_workflow_setting.xml

@@ -131,7 +131,7 @@
                             android:textStyle="bold"
                             app:layout_constraintEnd_toEndOf="@+id/barrier_title_end_land"
                             app:layout_constraintTop_toTopOf="parent"
-                            app:markPosition="end"
+                            app:markPosition="start"
                             app:required="true" />
 
                         <EditText
@@ -163,7 +163,7 @@
                             app:layout_constraintEnd_toEndOf="@+id/barrier_title_end_land"
                             app:layout_constraintStart_toStartOf="parent"
                             app:layout_constraintTop_toBottomOf="@+id/step_title_tv"
-                            app:markPosition="end"
+                            app:markPosition="start"
                             app:required="true" />
 
                         <EditText
@@ -195,7 +195,7 @@
                             app:layout_constraintEnd_toEndOf="@+id/barrier_title_end_land"
                             app:layout_constraintStart_toStartOf="parent"
                             app:layout_constraintTop_toBottomOf="@+id/step_title_short_tv"
-                            app:markPosition="end"
+                            app:markPosition="start"
                             app:required="true" />
 
                         <TextView
@@ -229,7 +229,7 @@
                             app:layout_constraintEnd_toEndOf="@+id/barrier_title_end_land"
                             app:layout_constraintStart_toStartOf="parent"
                             app:layout_constraintTop_toBottomOf="@+id/step_confirm_type_tv"
-                            app:markPosition="end"
+                            app:markPosition="start"
                             app:required="false" />
 
                         <TextView
@@ -263,7 +263,7 @@
                             app:layout_constraintEnd_toEndOf="@+id/barrier_title_end_land"
                             app:layout_constraintStart_toStartOf="parent"
                             app:layout_constraintTop_toBottomOf="@+id/step_confirm_role_tv"
-                            app:markPosition="end"
+                            app:markPosition="start"
                             app:required="false" />
 
                         <TextView
@@ -295,7 +295,7 @@
                             android:textStyle="bold"
                             app:layout_constraintEnd_toEndOf="@+id/barrier_title_end_land"
                             app:layout_constraintTop_toBottomOf="@+id/step_confirm_member_tv"
-                            app:markPosition="end"
+                            app:markPosition="start"
                             app:required="true" />
 
                         <androidx.recyclerview.widget.RecyclerView
@@ -326,7 +326,7 @@
                         android:textStyle="bold"
                         app:layout_constraintStart_toStartOf="parent"
                         app:layout_constraintTop_toTopOf="parent"
-                        app:markPosition="end"
+                        app:markPosition="start"
                         app:required="true" />
 
                     <EditText

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

@@ -30,6 +30,7 @@
                 android:layout_height="@dimen/common_badge_icon_size"
                 android:layout_gravity="right|top"
                 android:src="@drawable/icon_add"
+                android:tint="?attr/colorStatusGreen"
                 android:visibility="gone" />
 
             <ImageView
@@ -38,6 +39,7 @@
                 android:layout_height="@dimen/common_badge_icon_size"
                 android:layout_gravity="right|top"
                 android:src="@drawable/icon_remove"
+                android:tint="?attr/colorStatusRed"
                 android:visibility="gone" />
         </FrameLayout>
 

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

@@ -29,6 +29,7 @@
                 android:layout_height="@dimen/common_badge_icon_size"
                 android:layout_gravity="right|top"
                 android:src="@drawable/icon_add"
+                android:tint="?attr/colorStatusGreen"
                 android:visibility="gone" />
 
             <ImageView
@@ -37,6 +38,7 @@
                 android:layout_height="@dimen/common_badge_icon_size"
                 android:layout_gravity="right|top"
                 android:src="@drawable/icon_remove"
+                android:tint="?attr/colorStatusRed"
                 android:visibility="gone" />
         </FrameLayout>
 

+ 1 - 1
app/src/main/res/layout/dialog_add_card.xml

@@ -3,7 +3,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <LinearLayout
-        android:layout_width="@dimen/dialog_common_root_width"
+        android:layout_width="wrap_content"
         android:layout_height="@dimen/dialog_common_root_height_large"
         android:background="@drawable/common_card_bg"
         android:orientation="vertical">

+ 1 - 1
app/src/main/res/layout/dialog_add_fingerprint.xml

@@ -3,7 +3,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <LinearLayout
-        android:layout_width="@dimen/dialog_common_root_width"
+        android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:background="@drawable/common_card_bg"
         android:gravity="center"

+ 1 - 1
app/src/main/res/layout/dialog_add_key.xml

@@ -3,7 +3,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <LinearLayout
-        android:layout_width="@dimen/dialog_common_root_width"
+        android:layout_width="wrap_content"
         android:layout_height="@dimen/dialog_common_root_height_large"
         android:background="@drawable/common_card_bg"
         android:orientation="vertical">

+ 1 - 1
app/src/main/res/layout/dialog_add_lock.xml

@@ -3,7 +3,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <LinearLayout
-        android:layout_width="@dimen/dialog_common_root_width"
+        android:layout_width="wrap_content"
         android:layout_height="@dimen/dialog_common_root_height_large"
         android:background="@drawable/common_card_bg"
         android:orientation="vertical">

+ 6 - 6
app/src/main/res/layout/dialog_add_point.xml

@@ -3,7 +3,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <LinearLayout
-        android:layout_width="@dimen/dialog_common_root_width"
+        android:layout_width="wrap_content"
         android:layout_height="@dimen/dialog_common_root_height_md"
         android:background="@drawable/common_card_bg"
         android:orientation="vertical">
@@ -56,7 +56,7 @@
                 app:i18nKey='@{"point_manage_point_name"}'
                 app:layout_constraintLeft_toLeftOf="parent"
                 app:layout_constraintTop_toTopOf="parent"
-                app:markPosition="end"
+                app:markPosition="start"
                 app:required="true" />
 
             <EditText
@@ -88,7 +88,7 @@
                 app:i18nKey='@{"point_manage_point_function"}'
                 app:layout_constraintEnd_toEndOf="@+id/point_name_tv_title"
                 app:layout_constraintTop_toBottomOf="@+id/point_name_tv_title"
-                app:markPosition="end"
+                app:markPosition="start"
                 app:required="true" />
 
             <EditText
@@ -120,7 +120,7 @@
                 app:i18nKey='@{"point_manage_point_power_type"}'
                 app:layout_constraintEnd_toEndOf="@+id/function_tv"
                 app:layout_constraintTop_toBottomOf="@+id/function_tv"
-                app:markPosition="end"
+                app:markPosition="start"
                 app:required="true" />
 
             <TextView
@@ -173,7 +173,7 @@
                 app:i18nKey='@{"point_manage_workstation"}'
                 app:layout_constraintEnd_toEndOf="@+id/switch_tv"
                 app:layout_constraintTop_toBottomOf="@+id/switch_tv"
-                app:markPosition="end"
+                app:markPosition="start"
                 app:required="true" />
 
             <TextView
@@ -206,7 +206,7 @@
                 app:i18nKey='@{"point_manage_rfid_tag"}'
                 app:layout_constraintEnd_toEndOf="@+id/workstation_tv_title"
                 app:layout_constraintTop_toBottomOf="@+id/workstation_tv_title"
-                app:markPosition="end"
+                app:markPosition="start"
                 app:required="true" />
 
             <TextView

+ 31 - 6
app/src/main/res/layout/dialog_add_point_to_map.xml

@@ -3,7 +3,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <LinearLayout
-        android:layout_width="@dimen/dialog_common_root_width"
+        android:layout_width="wrap_content"
         android:layout_height="@dimen/dialog_common_root_height_md"
         android:background="@drawable/common_card_bg"
         android:orientation="vertical">
@@ -23,7 +23,7 @@
                 android:layout_weight="1"
                 android:textColor="?attr/colorTextPrimary"
                 android:textSize="@dimen/iscs_text_md"
-                app:i18nKey='@{"add_to_map"}' />
+                app:i18nKey='@{"edit"}' />
 
             <ImageView
                 android:id="@+id/close_iv"
@@ -56,7 +56,7 @@
                 app:i18nKey='@{"add_to_map_point_name"}'
                 app:layout_constraintLeft_toLeftOf="parent"
                 app:layout_constraintTop_toTopOf="parent"
-                app:markPosition="end" />
+                app:markPosition="start" />
 
             <TextView
                 android:id="@+id/point_name_tv"
@@ -87,7 +87,7 @@
                 app:i18nKey='@{"add_to_map_x"}'
                 app:layout_constraintEnd_toEndOf="@+id/point_name_tv_title"
                 app:layout_constraintTop_toBottomOf="@+id/point_name_tv_title"
-                app:markPosition="end"
+                app:markPosition="start"
                 app:required="true" />
 
             <EditText
@@ -120,7 +120,7 @@
                 app:i18nKey='@{"add_to_map_y"}'
                 app:layout_constraintEnd_toEndOf="@+id/x_tv"
                 app:layout_constraintTop_toBottomOf="@+id/x_tv"
-                app:markPosition="end"
+                app:markPosition="start"
                 app:required="true" />
 
 
@@ -154,7 +154,7 @@
                 app:i18nKey='@{"add_to_map_point_serial_number"}'
                 app:layout_constraintEnd_toEndOf="@+id/y_tv"
                 app:layout_constraintTop_toBottomOf="@+id/y_tv"
-                app:markPosition="end"
+                app:markPosition="start"
                 app:required="true" />
 
 
@@ -178,6 +178,31 @@
                 app:layout_constraintStart_toEndOf="@+id/point_serial_number_tv"
                 app:layout_constraintTop_toTopOf="@+id/point_serial_number_tv" />
 
+            <com.grkj.ui_base.widget.RequiredTextView
+                android:id="@+id/show_in_map_tv"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/iscs_space_4"
+                android:textColor="?attr/colorTextPrimary"
+                android:textSize="@dimen/iscs_text_md"
+                app:i18nKey='@{"add_to_map_point_serial_number"}'
+                app:layout_constraintEnd_toEndOf="@+id/point_serial_number_tv"
+                app:layout_constraintTop_toBottomOf="@+id/point_serial_number_tv"
+                app:markPosition="start"
+                app:required="true" />
+
+            <com.google.android.material.switchmaterial.SwitchMaterial
+                android:id="@+id/status"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center"
+                android:layout_marginLeft="@dimen/iscs_space_2"
+                android:gravity="center"
+                app:layout_constraintBottom_toBottomOf="@+id/show_in_map_tv"
+                app:layout_constraintStart_toEndOf="@+id/show_in_map_tv"
+                app:layout_constraintTop_toTopOf="@+id/show_in_map_tv"
+                app:useMaterialThemeColors="true" />
+
         </androidx.constraintlayout.widget.ConstraintLayout>
 
         <LinearLayout

+ 1 - 1
app/src/main/res/layout/dialog_add_rfid_token.xml

@@ -3,7 +3,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <LinearLayout
-        android:layout_width="@dimen/dialog_common_root_width"
+        android:layout_width="wrap_content"
         android:layout_height="@dimen/dialog_common_root_height_large"
         android:background="@drawable/common_card_bg"
         android:orientation="vertical">

+ 4 - 4
app/src/main/res/layout/dialog_add_role.xml

@@ -3,7 +3,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <LinearLayout
-        android:layout_width="@dimen/dialog_common_root_width"
+        android:layout_width="wrap_content"
         android:layout_height="@dimen/dialog_common_root_height_large"
         android:background="@drawable/common_card_bg"
         android:orientation="vertical">
@@ -56,7 +56,7 @@
                 android:textSize="@dimen/iscs_text_md"
                 app:layout_constraintLeft_toLeftOf="parent"
                 app:layout_constraintTop_toTopOf="parent"
-                app:markPosition="end"
+                app:markPosition="start"
                 app:required="true" />
 
             <EditText
@@ -88,7 +88,7 @@
                 android:textSize="@dimen/iscs_text_md"
                 app:layout_constraintEnd_toEndOf="@+id/role_name_tv"
                 app:layout_constraintTop_toBottomOf="@+id/role_name_tv"
-                app:markPosition="end"
+                app:markPosition="start"
                 app:required="true" />
 
             <EditText
@@ -120,7 +120,7 @@
                 android:textSize="@dimen/iscs_text_md"
                 app:layout_constraintEnd_toEndOf="@+id/role_key_tv"
                 app:layout_constraintTop_toBottomOf="@+id/role_key_tv"
-                app:markPosition="end"
+                app:markPosition="start"
                 app:required="true" />
 
             <RadioGroup

+ 6 - 6
app/src/main/res/layout/dialog_add_user.xml

@@ -4,7 +4,7 @@
     xmlns:tools="http://schemas.android.com/tools">
 
     <LinearLayout
-        android:layout_width="@dimen/dialog_common_root_width"
+        android:layout_width="wrap_content"
         android:layout_height="@dimen/dialog_common_root_height_large"
         android:background="@drawable/common_card_bg"
         android:orientation="vertical">
@@ -57,7 +57,7 @@
                 android:textSize="@dimen/iscs_text_md"
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toTopOf="parent"
-                app:markPosition="end"
+                app:markPosition="start"
                 app:required="true" />
 
             <EditText
@@ -87,7 +87,7 @@
                 android:textSize="@dimen/iscs_text_md"
                 app:layout_constraintEnd_toEndOf="@+id/username_tv"
                 app:layout_constraintTop_toBottomOf="@+id/username_tv"
-                app:markPosition="end"
+                app:markPosition="start"
                 app:required="true" />
 
             <EditText
@@ -118,7 +118,7 @@
                 android:textSize="@dimen/iscs_text_md"
                 app:layout_constraintEnd_toEndOf="@+id/nickname_tv"
                 app:layout_constraintTop_toBottomOf="@+id/nickname_tv"
-                app:markPosition="end"
+                app:markPosition="start"
                 app:required="true" />
 
             <TextView
@@ -150,7 +150,7 @@
                 android:textSize="@dimen/iscs_text_md"
                 app:layout_constraintEnd_toEndOf="@+id/role_title_tv"
                 app:layout_constraintTop_toBottomOf="@+id/role_title_tv"
-                app:markPosition="end"
+                app:markPosition="start"
                 app:required="true" />
 
             <TextView
@@ -180,7 +180,7 @@
                 android:textSize="@dimen/iscs_text_md"
                 app:layout_constraintEnd_toEndOf="@+id/workstation_tv"
                 app:layout_constraintTop_toBottomOf="@+id/workstation_tv"
-                app:markPosition="end"
+                app:markPosition="start"
                 app:required="true" />
 
             <RadioGroup

+ 68 - 39
app/src/main/res/layout/dialog_add_workstation.xml

@@ -3,7 +3,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <LinearLayout
-        android:layout_width="@dimen/dialog_common_root_width"
+        android:layout_width="wrap_content"
         android:layout_height="@dimen/dialog_common_root_height_small"
         android:background="@drawable/common_card_bg"
         android:orientation="vertical">
@@ -21,17 +21,17 @@
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
-                app:i18nKey='@{"workstation_manage_new_workstation"}'
                 android:textColor="?attr/colorTextPrimary"
-                android:textSize="@dimen/iscs_text_md" />
+                android:textSize="@dimen/iscs_text_md"
+                app:i18nKey='@{"workstation_manage_new_workstation"}' />
 
             <ImageView
                 android:id="@+id/close_iv"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:tint="?attr/colorPrimary"
                 android:paddingHorizontal="@dimen/iscs_space_2"
-                android:src="@drawable/icon_close" />
+                android:src="@drawable/icon_close"
+                android:tint="?attr/colorPrimary" />
         </LinearLayout>
 
         <View
@@ -39,44 +39,73 @@
             android:layout_height="@dimen/divider_line_space"
             android:background="?attr/colorDivider" />
 
-        <LinearLayout
+        <androidx.constraintlayout.widget.ConstraintLayout
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:layout_weight="1"
-            android:orientation="vertical">
+            android:orientation="vertical"
+            android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal">
 
-            <LinearLayout
-                android:layout_width="match_parent"
+
+            <com.grkj.ui_base.widget.RequiredTextView
+                android:id="@+id/workstation_name_tv"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/iscs_space_4"
+                android:textColor="?attr/colorTextPrimary"
+                android:textSize="@dimen/iscs_text_md"
+                app:i18nKey='@{"workstation_manage_workstation_name"}'
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toTopOf="parent"
+                app:markPosition="start"
+                app:required="true" />
+
+            <EditText
+                android:id="@+id/workstation_name_et"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/iscs_space_2"
+                android:background="@drawable/bg_common_input"
+                android:maxLines="1"
+                android:paddingHorizontal="@dimen/iscs_space_2"
+                android:paddingVertical="2dp"
+                android:singleLine="true"
+                android:textColor="?attr/colorTextPrimary"
+                android:textSize="@dimen/iscs_text_md"
+                app:i18nHint='@{"please_input_workstation_name"}'
+                app:layout_constraintBottom_toBottomOf="@+id/workstation_name_tv"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toEndOf="@+id/labelBarrier"
+                app:layout_constraintTop_toTopOf="@+id/workstation_name_tv" />
+
+            <com.grkj.ui_base.widget.RequiredTextView
+                android:id="@+id/set_default_tv"
+                android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/iscs_space_4"
-                android:gravity="center_vertical"
-                android:orientation="horizontal"
-                android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal">
+                android:textColor="?attr/colorTextPrimary"
+                android:textSize="@dimen/iscs_text_md"
+                app:i18nKey='@{"set_default"}'
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/workstation_name_tv"
+                app:markPosition="start"
+                app:required="false" />
 
-                <com.grkj.ui_base.widget.RequiredTextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    app:i18nKey='@{"workstation_manage_workstation_name"}'
-                    android:textColor="?attr/colorTextPrimary"
-                    android:textSize="@dimen/iscs_text_md"
-                    app:markPosition="end"
-                    app:required="true" />
+            <com.google.android.material.switchmaterial.SwitchMaterial
+                android:id="@+id/set_default"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                app:layout_constraintBottom_toBottomOf="@+id/set_default_tv"
+                app:layout_constraintStart_toEndOf="@+id/labelBarrier"
+                app:layout_constraintTop_toTopOf="@+id/set_default_tv" />
 
-                <EditText
-                    android:id="@+id/workstation_name_et"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_marginLeft="@dimen/iscs_space_2"
-                    android:background="@drawable/bg_common_input"
-                    app:i18nHint='@{"please_input_workstation_name"}'
-                    android:maxLines="1"
-                    android:paddingHorizontal="@dimen/iscs_space_2"
-                    android:paddingVertical="2dp"
-                    android:singleLine="true"
-                    android:textColor="?attr/colorTextPrimary"
-                    android:textSize="@dimen/iscs_text_md" />
-            </LinearLayout>
-        </LinearLayout>
+            <androidx.constraintlayout.widget.Barrier
+                android:id="@+id/labelBarrier"
+                android:layout_width="0dp"
+                android:layout_height="0dp"
+                app:barrierDirection="end"
+                app:constraint_referenced_ids="workstation_name_tv" />
+        </androidx.constraintlayout.widget.ConstraintLayout>
 
         <LinearLayout
             android:layout_width="match_parent"
@@ -96,9 +125,9 @@
                 android:gravity="center"
                 android:minHeight="@dimen/common_btn_height"
                 android:paddingHorizontal="@dimen/iscs_space_4"
-                app:i18nKey='@{"confirm"}'
                 android:textColor="?attr/colorTextPrimary"
-                android:textSize="@dimen/iscs_text_md" />
+                android:textSize="@dimen/iscs_text_md"
+                app:i18nKey='@{"confirm"}' />
 
             <TextView
                 android:id="@+id/cancel"
@@ -111,9 +140,9 @@
                 android:gravity="center"
                 android:minHeight="@dimen/common_btn_height"
                 android:paddingHorizontal="@dimen/iscs_space_4"
-                app:i18nKey='@{"cancel"}'
                 android:textColor="?attr/colorTextPrimary"
-                android:textSize="@dimen/iscs_text_md" />
+                android:textSize="@dimen/iscs_text_md"
+                app:i18nKey='@{"cancel"}' />
         </LinearLayout>
     </LinearLayout>
 </layout>

+ 1 - 1
app/src/main/res/layout/dialog_filter_card.xml

@@ -3,7 +3,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <LinearLayout
-        android:layout_width="@dimen/dialog_common_root_width"
+        android:layout_width="wrap_content"
         android:layout_height="@dimen/dialog_common_root_height_md"
         android:background="@drawable/common_card_bg"
         android:orientation="vertical">

+ 1 - 1
app/src/main/res/layout/dialog_filter_key.xml

@@ -3,7 +3,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <LinearLayout
-        android:layout_width="@dimen/dialog_common_root_width"
+        android:layout_width="wrap_content"
         android:layout_height="@dimen/dialog_common_root_height_md"
         android:background="@drawable/common_card_bg"
         android:orientation="vertical">

+ 1 - 1
app/src/main/res/layout/dialog_filter_lock.xml

@@ -3,7 +3,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <LinearLayout
-        android:layout_width="@dimen/dialog_common_root_width"
+        android:layout_width="wrap_content"
         android:layout_height="@dimen/dialog_common_root_height_md"
         android:background="@drawable/common_card_bg"
         android:orientation="vertical">

+ 7 - 7
app/src/main/res/layout/dialog_filter_point.xml

@@ -3,8 +3,8 @@
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <LinearLayout
-        android:layout_width="@dimen/dialog_common_root_width"
-        android:layout_height="@dimen/dialog_common_root_width"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
         android:background="@drawable/common_card_bg"
         android:orientation="vertical">
 
@@ -55,7 +55,7 @@
                 android:textSize="@dimen/iscs_text_md"
                 app:layout_constraintLeft_toLeftOf="parent"
                 app:layout_constraintTop_toTopOf="parent"
-                app:markPosition="end"
+                app:markPosition="start"
                 app:required="true" />
 
             <EditText
@@ -87,7 +87,7 @@
                 android:textSize="@dimen/iscs_text_md"
                 app:layout_constraintEnd_toEndOf="@+id/point_name_tv_title"
                 app:layout_constraintTop_toBottomOf="@+id/point_name_tv_title"
-                app:markPosition="end"
+                app:markPosition="start"
                 app:required="true" />
 
             <EditText
@@ -119,7 +119,7 @@
                 android:textSize="@dimen/iscs_text_md"
                 app:layout_constraintEnd_toEndOf="@+id/function_tv"
                 app:layout_constraintTop_toBottomOf="@+id/function_tv"
-                app:markPosition="end"
+                app:markPosition="start"
                 app:required="true" />
 
             <TextView
@@ -152,7 +152,7 @@
                 android:textSize="@dimen/iscs_text_md"
                 app:layout_constraintEnd_toEndOf="@+id/power_type_tv_title"
                 app:layout_constraintTop_toBottomOf="@+id/power_type_tv_title"
-                app:markPosition="end"
+                app:markPosition="start"
                 app:required="true" />
 
             <TextView
@@ -185,7 +185,7 @@
                 android:textSize="@dimen/iscs_text_md"
                 app:layout_constraintEnd_toEndOf="@+id/workstation_tv_title"
                 app:layout_constraintTop_toBottomOf="@+id/workstation_tv_title"
-                app:markPosition="end"
+                app:markPosition="start"
                 app:required="true" />
 
             <EditText

+ 1 - 1
app/src/main/res/layout/dialog_filter_rfid_token.xml

@@ -3,7 +3,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <LinearLayout
-        android:layout_width="@dimen/dialog_common_root_width"
+        android:layout_width="wrap_content"
         android:layout_height="@dimen/dialog_common_root_height_md"
         android:background="@drawable/common_card_bg"
         android:orientation="vertical">

+ 108 - 97
app/src/main/res/layout/dialog_filter_role.xml

@@ -3,7 +3,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <LinearLayout
-        android:layout_width="@dimen/dialog_common_root_width"
+        android:layout_width="wrap_content"
         android:layout_height="@dimen/dialog_common_root_height_md"
         android:background="@drawable/common_card_bg"
         android:orientation="vertical">
@@ -21,17 +21,17 @@
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
-                app:i18nKey='@{"user_manage_filter_title"}'
                 android:textColor="?attr/colorTextPrimary"
-                android:textSize="@dimen/iscs_text_md" />
+                android:textSize="@dimen/iscs_text_md"
+                app:i18nKey='@{"user_manage_filter_title"}' />
 
             <ImageView
                 android:id="@+id/close_iv"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:tint="?attr/colorPrimary"
                 android:paddingHorizontal="@dimen/iscs_space_2"
-                android:src="@drawable/icon_close" />
+                android:src="@drawable/icon_close"
+                android:tint="?attr/colorPrimary" />
         </LinearLayout>
 
         <View
@@ -39,115 +39,126 @@
             android:layout_height="@dimen/divider_line_space"
             android:background="?attr/colorDivider" />
 
-        <LinearLayout
+        <androidx.constraintlayout.widget.ConstraintLayout
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:layout_weight="1"
             android:orientation="vertical">
 
-            <LinearLayout
-                android:layout_width="match_parent"
+            <TextView
+                android:id="@+id/role_name"
+                android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_marginTop="@dimen/iscs_space_4"
-                android:gravity="center_vertical"
-                android:orientation="horizontal"
-                android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal">
-
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    app:i18nKey='@{"role_manage_role_name"}'
-                    android:textColor="?attr/colorTextPrimary"
-                    android:textSize="@dimen/iscs_text_md" />
+                android:textColor="?attr/colorTextPrimary"
+                android:textSize="@dimen/iscs_text_md"
+                android:layout_marginTop="@dimen/iscs_space_2"
+                app:i18nKey='@{"role_manage_role_name"}'
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintEnd_toEndOf="@+id/labelBarrier"
+                app:layout_constraintTop_toTopOf="parent" />
+
+            <EditText
+                android:id="@+id/role_name_tv"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/iscs_space_2"
+                android:background="@drawable/bg_common_input"
+                android:maxLines="1"
+                android:paddingHorizontal="@dimen/iscs_space_2"
+                android:paddingVertical="2dp"
+                android:singleLine="true"
+                android:textColor="?attr/colorTextPrimary"
+                android:textSize="@dimen/iscs_text_md"
+                app:i18nHint='@{"please_input_role_name"}'
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toEndOf="@id/labelBarrier"
+                app:layout_constraintTop_toTopOf="@+id/role_name" />
 
-                <EditText
-                    android:id="@+id/role_name_tv"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_marginLeft="@dimen/iscs_space_2"
-                    android:background="@drawable/bg_common_input"
-                    app:i18nHint='@{"please_input_role_name"}'
-                    android:maxLines="1"
-                    android:paddingHorizontal="@dimen/iscs_space_2"
-                    android:paddingVertical="2dp"
-                    android:singleLine="true"
-                    android:textColor="?attr/colorTextPrimary"
-                    android:textSize="@dimen/iscs_text_md" />
-            </LinearLayout>
 
-            <LinearLayout
-                android:layout_width="match_parent"
+            <TextView
+                android:id="@+id/permission_string"
+                android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_marginTop="@dimen/iscs_space_4"
-                android:gravity="center_vertical"
-                android:orientation="horizontal"
-                android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal">
+                android:textColor="?attr/colorTextPrimary"
+                android:textSize="@dimen/iscs_text_md"
+                android:layout_marginTop="@dimen/iscs_space_2"
+                app:i18nKey='@{"role_manage_permission_string"}'
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintEnd_toEndOf="@+id/labelBarrier"
+                app:layout_constraintTop_toBottomOf="@+id/role_name" />
+
+            <EditText
+                android:id="@+id/role_key_et"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/iscs_space_2"
+                android:layout_marginTop="@dimen/iscs_space_2"
+                android:background="@drawable/bg_common_input"
+                android:maxLines="1"
+                android:paddingHorizontal="@dimen/iscs_space_2"
+                android:paddingVertical="2dp"
+                android:singleLine="true"
+                android:textColor="?attr/colorTextPrimary"
+                android:textSize="@dimen/iscs_text_md"
+                app:i18nHint='@{"please_input_permission_characters"}'
+                app:layout_constraintBottom_toBottomOf="@+id/permission_string"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toEndOf="@+id/labelBarrier"
+                app:layout_constraintTop_toTopOf="@+id/permission_string" />
 
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    app:i18nKey='@{"role_manage_permission_string"}'
-                    android:textColor="?attr/colorTextPrimary"
-                    android:textSize="@dimen/iscs_text_md" />
 
-                <EditText
-                    android:id="@+id/role_key_et"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_marginLeft="@dimen/iscs_space_2"
-                    android:background="@drawable/bg_common_input"
-                    app:i18nHint='@{"please_input_permission_characters"}'
-                    android:maxLines="1"
-                    android:paddingHorizontal="@dimen/iscs_space_2"
-                    android:paddingVertical="2dp"
-                    android:singleLine="true"
-                    android:textColor="?attr/colorTextPrimary"
-                    android:textSize="@dimen/iscs_text_md" />
-            </LinearLayout>
+            <TextView
+                android:id="@+id/status_tv"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:textColor="?attr/colorTextPrimary"
+                android:textSize="@dimen/iscs_text_md"
+                android:layout_marginTop="@dimen/iscs_space_4"
+                app:i18nKey='@{"manage_filter_status"}'
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintEnd_toEndOf="@+id/labelBarrier"
+                app:layout_constraintTop_toBottomOf="@+id/permission_string" />
 
-            <LinearLayout
+            <RadioGroup
+                android:id="@+id/status_rg"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:layout_marginTop="@dimen/iscs_space_4"
-                android:gravity="center_vertical"
                 android:orientation="horizontal"
-                android:paddingHorizontal="@dimen/normal_radio_root_layout_padding">
+                app:layout_constraintBottom_toBottomOf="@+id/status_tv"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintEnd_toStartOf="@+id/labelBarrier"
+                app:layout_constraintTop_toTopOf="@+id/status_tv">
 
-                <TextView
+                <com.google.android.material.radiobutton.MaterialRadioButton
+                    android:id="@+id/activate_rb"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    app:i18nKey='@{"manage_filter_status"}'
+                    android:layout_marginLeft="@dimen/iscs_space_2"
                     android:textColor="?attr/colorTextPrimary"
-                    android:textSize="@dimen/iscs_text_md" />
+                    android:textSize="@dimen/iscs_text_md"
+                    app:i18nKey='@{"user_manage_filter_activate"}'
+                    app:useMaterialThemeColors="true" />
 
-                <RadioGroup
-                    android:id="@+id/status_rg"
-                    android:layout_width="match_parent"
+                <com.google.android.material.radiobutton.MaterialRadioButton
+                    android:id="@+id/deactivate_rb"
+                    android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:orientation="horizontal">
-
-                    <com.google.android.material.radiobutton.MaterialRadioButton
-                        android:id="@+id/activate_rb"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_marginLeft="@dimen/iscs_space_2"
-                        android:textSize="@dimen/iscs_text_md"
-                        app:useMaterialThemeColors="true"
-                        android:textColor="?attr/colorTextPrimary"
-                        app:i18nKey='@{"user_manage_filter_activate"}' />
-
-                    <com.google.android.material.radiobutton.MaterialRadioButton
-                        android:id="@+id/deactivate_rb"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_marginLeft="@dimen/iscs_space_2"
-                        android:textSize="@dimen/iscs_text_md"
-                        app:useMaterialThemeColors="true"
-                        android:textColor="?attr/colorTextPrimary"
-                        app:i18nKey='@{"user_manage_filter_deactivate"}' />
-                </RadioGroup>
-            </LinearLayout>
-        </LinearLayout>
+                    android:layout_marginLeft="@dimen/iscs_space_2"
+                    android:textColor="?attr/colorTextPrimary"
+                    android:textSize="@dimen/iscs_text_md"
+                    app:i18nKey='@{"user_manage_filter_deactivate"}'
+                    app:useMaterialThemeColors="true" />
+            </RadioGroup>
+
+            <androidx.constraintlayout.widget.Barrier
+                android:id="@+id/labelBarrier"
+                android:layout_width="0dp"
+                android:layout_height="0dp"
+                app:barrierDirection="end"
+                app:constraint_referenced_ids="role_name,permission_string,status_tv"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toTopOf="parent" />
+        </androidx.constraintlayout.widget.ConstraintLayout>
 
         <LinearLayout
             android:layout_width="match_parent"
@@ -167,9 +178,9 @@
                 android:gravity="center"
                 android:minHeight="@dimen/common_btn_height"
                 android:paddingHorizontal="@dimen/iscs_space_4"
-                app:i18nKey='@{"confirm"}'
                 android:textColor="?attr/colorTextPrimary"
-                android:textSize="@dimen/iscs_text_md" />
+                android:textSize="@dimen/iscs_text_md"
+                app:i18nKey='@{"confirm"}' />
 
             <TextView
                 android:id="@+id/cancel"
@@ -182,9 +193,9 @@
                 android:gravity="center"
                 android:minHeight="@dimen/common_btn_height"
                 android:paddingHorizontal="@dimen/iscs_space_4"
-                app:i18nKey='@{"cancel"}'
                 android:textColor="?attr/colorTextPrimary"
-                android:textSize="@dimen/iscs_text_md" />
+                android:textSize="@dimen/iscs_text_md"
+                app:i18nKey='@{"cancel"}' />
         </LinearLayout>
     </LinearLayout>
 </layout>

+ 133 - 125
app/src/main/res/layout/dialog_filter_user.xml

@@ -3,7 +3,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <LinearLayout
-        android:layout_width="@dimen/dialog_common_root_width"
+        android:layout_width="wrap_content"
         android:layout_height="@dimen/dialog_common_root_height_md"
         android:background="@drawable/common_card_bg"
         android:orientation="vertical">
@@ -21,17 +21,17 @@
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
-                app:i18nKey='@{"user_manage_filter_title"}'
                 android:textColor="?attr/colorTextPrimary"
-                android:textSize="@dimen/iscs_text_md" />
+                android:textSize="@dimen/iscs_text_md"
+                app:i18nKey='@{"user_manage_filter_title"}' />
 
             <ImageView
                 android:id="@+id/close_iv"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:tint="?attr/colorPrimary"
                 android:paddingHorizontal="@dimen/iscs_space_2"
-                android:src="@drawable/icon_close" />
+                android:src="@drawable/icon_close"
+                android:tint="?attr/colorPrimary" />
         </LinearLayout>
 
         <View
@@ -39,146 +39,154 @@
             android:layout_height="@dimen/divider_line_space"
             android:background="?attr/colorDivider" />
 
-        <LinearLayout
+        <androidx.constraintlayout.widget.ConstraintLayout
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:layout_weight="1"
             android:orientation="vertical">
 
-            <LinearLayout
-                android:layout_width="match_parent"
+            <TextView
+                android:id="@+id/nickname_tv"
+                android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_marginTop="@dimen/iscs_space_4"
-                android:gravity="center_vertical"
-                android:orientation="horizontal"
-                android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal">
-
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    app:i18nKey='@{"nickname"}'
-                    android:textColor="?attr/colorTextPrimary"
-                    android:textSize="@dimen/iscs_text_md" />
-
-                <EditText
-                    android:id="@+id/nickname_et"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_marginLeft="@dimen/iscs_space_2"
-                    android:background="@drawable/bg_common_input"
-                    app:i18nHint='@{"please_input_nickname"}'
-                    android:maxLines="1"
-                    android:paddingHorizontal="@dimen/iscs_space_2"
-                    android:paddingVertical="2dp"
-                    android:singleLine="true"
-                    android:textColor="?attr/colorTextPrimary"
-                    android:textSize="@dimen/iscs_text_md" />
-            </LinearLayout>
+                android:layout_marginTop="@dimen/iscs_space_2"
+                android:textColor="?attr/colorTextPrimary"
+                android:textSize="@dimen/iscs_text_md"
+                app:i18nKey='@{"nickname"}'
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toTopOf="parent" />
+
+            <EditText
+                android:id="@+id/nickname_et"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/iscs_space_2"
+                android:background="@drawable/bg_common_input"
+                android:maxLines="1"
+                android:paddingHorizontal="@dimen/iscs_space_2"
+                android:paddingVertical="2dp"
+                android:singleLine="true"
+                android:textColor="?attr/colorTextPrimary"
+                android:textSize="@dimen/iscs_text_md"
+                app:i18nHint='@{"please_input_nickname"}'
+                app:layout_constraintBottom_toBottomOf="@+id/nickname_tv"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toEndOf="@+id/labelBarrier"
+                app:layout_constraintTop_toTopOf="@+id/nickname_tv" />
 
-            <LinearLayout
+            <TextView
+                android:id="@+id/card_code_tv"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/iscs_space_2"
+                android:textColor="?attr/colorTextPrimary"
+                android:textSize="@dimen/iscs_text_md"
+                app:i18nKey='@{"user_manage_card_code"}'
+                app:layout_constraintEnd_toEndOf="@+id/labelBarrier"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/nickname_tv" />
+
+            <EditText
+                android:id="@+id/cardcode_et"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:layout_marginTop="@dimen/iscs_space_4"
-                android:gravity="center_vertical"
-                android:orientation="horizontal"
-                android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal">
-
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    app:i18nKey='@{"user_manage_card_code"}'
-                    android:textColor="?attr/colorTextPrimary"
-                    android:textSize="@dimen/iscs_text_md" />
+                android:layout_marginLeft="@dimen/iscs_space_2"
+                android:background="@drawable/bg_common_input"
+                android:maxLines="1"
+                android:paddingHorizontal="@dimen/iscs_space_2"
+                android:paddingVertical="2dp"
+                android:singleLine="true"
+                android:textColor="?attr/colorTextPrimary"
+                android:textSize="@dimen/iscs_text_md"
+                app:i18nHint='@{"please_input_card_code"}'
+                app:layout_constraintBottom_toBottomOf="@+id/card_code_tv"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toEndOf="@+id/labelBarrier"
+                app:layout_constraintTop_toTopOf="@+id/card_code_tv" />
 
-                <EditText
-                    android:id="@+id/cardcode_et"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_marginLeft="@dimen/iscs_space_2"
-                    android:background="@drawable/bg_common_input"
-                    app:i18nHint='@{"please_input_card_code"}'
-                    android:maxLines="1"
-                    android:paddingHorizontal="@dimen/iscs_space_2"
-                    android:paddingVertical="2dp"
-                    android:singleLine="true"
-                    android:textColor="?attr/colorTextPrimary"
-                    android:textSize="@dimen/iscs_text_md" />
-            </LinearLayout>
 
-            <LinearLayout
-                android:id="@+id/workstation_layout"
+            <TextView
+                android:id="@+id/area_tv"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/iscs_space_2"
+                android:textColor="?attr/colorTextPrimary"
+                android:textSize="@dimen/iscs_text_md"
+                app:i18nKey='@{"user_manage_area"}'
+                app:layout_constraintEnd_toEndOf="@+id/labelBarrier"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/card_code_tv" />
+
+            <EditText
+                android:id="@+id/workstation_et"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/iscs_space_2"
+                android:background="@drawable/bg_common_input"
+                android:maxLines="1"
+                android:paddingHorizontal="@dimen/iscs_space_2"
+                android:paddingVertical="2dp"
+                android:singleLine="true"
+                android:textColor="?attr/colorTextPrimary"
+                android:textSize="@dimen/iscs_text_md"
+                app:i18nHint='@{"please_input_area"}'
+                app:layout_constraintBottom_toBottomOf="@+id/area_tv"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toEndOf="@+id/labelBarrier"
+                app:layout_constraintTop_toTopOf="@+id/area_tv" />
+
+            <TextView
+                android:id="@+id/status_tv"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/iscs_space_4"
-                android:gravity="center_vertical"
+                android:textColor="?attr/colorTextPrimary"
+                android:textSize="@dimen/iscs_text_md"
+                app:i18nKey='@{"manage_filter_status"}'
+                app:layout_constraintEnd_toEndOf="@+id/labelBarrier"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/area_tv" />
+
+            <RadioGroup
+                android:id="@+id/status_rg"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
                 android:orientation="horizontal"
-                android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal">
+                app:layout_constraintBottom_toBottomOf="@+id/status_tv"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toEndOf="@+id/labelBarrier"
+                app:layout_constraintTop_toTopOf="@+id/status_tv">
 
-                <TextView
+                <com.google.android.material.radiobutton.MaterialRadioButton
+                    android:id="@+id/activate_rb"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    app:i18nKey='@{"user_manage_area"}'
-                    android:textColor="?attr/colorTextPrimary"
-                    android:textSize="@dimen/iscs_text_md" />
-
-                <EditText
-                    android:id="@+id/workstation_et"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
                     android:layout_marginLeft="@dimen/iscs_space_2"
-                    android:background="@drawable/bg_common_input"
-                    app:i18nHint='@{"please_input_area"}'
-                    android:maxLines="1"
-                    android:paddingHorizontal="@dimen/iscs_space_2"
-                    android:paddingVertical="2dp"
-                    android:singleLine="true"
                     android:textColor="?attr/colorTextPrimary"
-                    android:textSize="@dimen/iscs_text_md" />
-            </LinearLayout>
+                    android:textSize="@dimen/iscs_text_md"
+                    app:i18nKey='@{"user_manage_filter_activate"}'
+                    app:useMaterialThemeColors="true" />
 
-            <LinearLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="@dimen/iscs_space_4"
-                android:gravity="center_vertical"
-                android:orientation="horizontal"
-                android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal">
-
-                <TextView
+                <com.google.android.material.radiobutton.MaterialRadioButton
+                    android:id="@+id/deactivate_rb"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    app:i18nKey='@{"manage_filter_status"}'
+                    android:layout_marginLeft="@dimen/iscs_space_2"
                     android:textColor="?attr/colorTextPrimary"
-                    android:textSize="@dimen/iscs_text_md" />
-
-                <RadioGroup
-                    android:id="@+id/status_rg"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:orientation="horizontal">
-
-                    <com.google.android.material.radiobutton.MaterialRadioButton
-                        android:id="@+id/activate_rb"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_marginLeft="@dimen/iscs_space_2"
-                        android:textSize="@dimen/iscs_text_md"
-                        app:useMaterialThemeColors="true"
-                        android:textColor="?attr/colorTextPrimary"
-                        app:i18nKey='@{"user_manage_filter_activate"}' />
-
-                    <com.google.android.material.radiobutton.MaterialRadioButton
-                        android:id="@+id/deactivate_rb"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_marginLeft="@dimen/iscs_space_2"
-                        android:textSize="@dimen/iscs_text_md"
-                        app:useMaterialThemeColors="true"
-                        android:textColor="?attr/colorTextPrimary"
-                        app:i18nKey='@{"user_manage_filter_deactivate"}' />
-                </RadioGroup>
-            </LinearLayout>
-        </LinearLayout>
+                    android:textSize="@dimen/iscs_text_md"
+                    app:i18nKey='@{"user_manage_filter_deactivate"}'
+                    app:useMaterialThemeColors="true" />
+            </RadioGroup>
+
+            <androidx.constraintlayout.widget.Barrier
+                android:id="@+id/labelBarrier"
+                android:layout_width="0dp"
+                android:layout_height="0dp"
+                app:barrierDirection="end"
+                app:constraint_referenced_ids="nickname_tv,card_code_tv,area_tv,status_tv"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toTopOf="parent" />
+        </androidx.constraintlayout.widget.ConstraintLayout>
 
         <LinearLayout
             android:layout_width="match_parent"
@@ -198,9 +206,9 @@
                 android:gravity="center"
                 android:minHeight="@dimen/common_btn_height"
                 android:paddingHorizontal="@dimen/iscs_space_4"
-                app:i18nKey='@{"confirm"}'
                 android:textColor="?attr/colorTextPrimary"
-                android:textSize="@dimen/iscs_text_md" />
+                android:textSize="@dimen/iscs_text_md"
+                app:i18nKey='@{"confirm"}' />
 
             <TextView
                 android:id="@+id/cancel"
@@ -213,9 +221,9 @@
                 android:gravity="center"
                 android:minHeight="@dimen/common_btn_height"
                 android:paddingHorizontal="@dimen/iscs_space_4"
-                app:i18nKey='@{"cancel"}'
                 android:textColor="?attr/colorTextPrimary"
-                android:textSize="@dimen/iscs_text_md" />
+                android:textSize="@dimen/iscs_text_md"
+                app:i18nKey='@{"cancel"}' />
         </LinearLayout>
     </LinearLayout>
 </layout>

+ 1 - 1
app/src/main/res/layout/dialog_update_card.xml

@@ -3,7 +3,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <LinearLayout
-        android:layout_width="@dimen/dialog_common_root_width"
+        android:layout_width="wrap_content"
         android:layout_height="@dimen/dialog_common_root_height_large"
         android:background="@drawable/common_card_bg"
         android:orientation="vertical">

+ 1 - 1
app/src/main/res/layout/dialog_update_key.xml

@@ -3,7 +3,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <LinearLayout
-        android:layout_width="@dimen/dialog_common_root_width"
+        android:layout_width="wrap_content"
         android:layout_height="@dimen/dialog_common_root_height_large"
         android:background="@drawable/common_card_bg"
         android:orientation="vertical">

+ 1 - 1
app/src/main/res/layout/dialog_update_lock.xml

@@ -3,7 +3,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <LinearLayout
-        android:layout_width="@dimen/dialog_common_root_width"
+        android:layout_width="wrap_content"
         android:layout_height="@dimen/dialog_common_root_height_large"
         android:background="@drawable/common_card_bg"
         android:orientation="vertical">

+ 6 - 6
app/src/main/res/layout/dialog_update_point.xml

@@ -3,7 +3,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <LinearLayout
-        android:layout_width="@dimen/dialog_common_root_width"
+        android:layout_width="wrap_content"
         android:layout_height="@dimen/dialog_common_root_height_md"
         android:background="@drawable/common_card_bg"
         android:orientation="vertical">
@@ -56,7 +56,7 @@
                 android:textSize="@dimen/iscs_text_md"
                 app:layout_constraintLeft_toLeftOf="parent"
                 app:layout_constraintTop_toTopOf="parent"
-                app:markPosition="end"
+                app:markPosition="start"
                 app:required="true" />
 
             <EditText
@@ -88,7 +88,7 @@
                 android:textSize="@dimen/iscs_text_md"
                 app:layout_constraintEnd_toEndOf="@+id/point_name_tv_title"
                 app:layout_constraintTop_toBottomOf="@+id/point_name_tv_title"
-                app:markPosition="end"
+                app:markPosition="start"
                 app:required="true" />
 
             <EditText
@@ -120,7 +120,7 @@
                 android:textSize="@dimen/iscs_text_md"
                 app:layout_constraintEnd_toEndOf="@+id/function_tv"
                 app:layout_constraintTop_toBottomOf="@+id/function_tv"
-                app:markPosition="end"
+                app:markPosition="start"
                 app:required="true" />
 
             <TextView
@@ -173,7 +173,7 @@
                 app:i18nKey='@{"point_manage_workstation"}'
                 app:layout_constraintEnd_toEndOf="@+id/switch_tv"
                 app:layout_constraintTop_toBottomOf="@+id/switch_tv"
-                app:markPosition="end"
+                app:markPosition="start"
                 app:required="true" />
 
             <TextView
@@ -206,7 +206,7 @@
                 android:textSize="@dimen/iscs_text_md"
                 app:layout_constraintEnd_toEndOf="@+id/workstation_tv_title"
                 app:layout_constraintTop_toBottomOf="@+id/workstation_tv_title"
-                app:markPosition="end"
+                app:markPosition="start"
                 app:required="true" />
 
             <TextView

+ 29 - 5
app/src/main/res/layout/dialog_update_point_to_map.xml

@@ -4,7 +4,7 @@
     xmlns:tools="http://schemas.android.com/tools">
 
     <LinearLayout
-        android:layout_width="@dimen/dialog_common_root_width"
+        android:layout_width="wrap_content"
         android:layout_height="@dimen/dialog_common_root_height_md"
         android:background="@drawable/common_card_bg"
         android:orientation="vertical">
@@ -57,7 +57,7 @@
                 app:i18nKey='@{"add_to_map_point_name"}'
                 app:layout_constraintLeft_toLeftOf="parent"
                 app:layout_constraintTop_toTopOf="parent"
-                app:markPosition="end" />
+                app:markPosition="start" />
 
             <TextView
                 android:id="@+id/point_name_tv"
@@ -88,7 +88,7 @@
                 app:i18nKey='@{"add_to_map_x"}'
                 app:layout_constraintEnd_toEndOf="@+id/point_name_tv_title"
                 app:layout_constraintTop_toBottomOf="@+id/point_name_tv_title"
-                app:markPosition="end"
+                app:markPosition="start"
                 app:required="true" />
 
             <EditText
@@ -121,7 +121,7 @@
                 app:i18nKey='@{"add_to_map_y"}'
                 app:layout_constraintEnd_toEndOf="@+id/x_tv"
                 app:layout_constraintTop_toBottomOf="@+id/x_tv"
-                app:markPosition="end"
+                app:markPosition="start"
                 app:required="true" />
 
 
@@ -155,7 +155,7 @@
                 app:i18nKey='@{"add_to_map_point_serial_number"}'
                 app:layout_constraintEnd_toEndOf="@+id/y_tv"
                 app:layout_constraintTop_toBottomOf="@+id/y_tv"
-                app:markPosition="end"
+                app:markPosition="start"
                 app:required="true" />
 
 
@@ -179,6 +179,30 @@
                 app:layout_constraintStart_toEndOf="@+id/point_serial_number_tv"
                 app:layout_constraintTop_toTopOf="@+id/point_serial_number_tv" />
 
+            <com.grkj.ui_base.widget.RequiredTextView
+                android:id="@+id/show_in_map_tv"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/iscs_space_4"
+                android:textColor="?attr/colorTextPrimary"
+                android:textSize="@dimen/iscs_text_md"
+                app:i18nKey='@{"add_to_map_point_serial_number"}'
+                app:layout_constraintEnd_toEndOf="@+id/point_serial_number_tv"
+                app:layout_constraintTop_toBottomOf="@+id/point_serial_number_tv"
+                app:markPosition="start"
+                app:required="true" />
+
+            <com.google.android.material.switchmaterial.SwitchMaterial
+                android:id="@+id/status"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center"
+                android:layout_marginLeft="@dimen/iscs_space_2"
+                android:gravity="center"
+                app:layout_constraintBottom_toBottomOf="@+id/show_in_map_tv"
+                app:layout_constraintStart_toEndOf="@+id/show_in_map_tv"
+                app:layout_constraintTop_toTopOf="@+id/show_in_map_tv"
+                app:useMaterialThemeColors="true" />
         </androidx.constraintlayout.widget.ConstraintLayout>
 
         <LinearLayout

+ 1 - 1
app/src/main/res/layout/dialog_update_rfid_token.xml

@@ -3,7 +3,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <LinearLayout
-        android:layout_width="@dimen/dialog_common_root_width"
+        android:layout_width="wrap_content"
         android:layout_height="@dimen/dialog_common_root_height_large"
         android:background="@drawable/common_card_bg"
         android:orientation="vertical">

+ 4 - 4
app/src/main/res/layout/dialog_update_role.xml

@@ -3,7 +3,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <LinearLayout
-        android:layout_width="@dimen/dialog_common_root_width"
+        android:layout_width="wrap_content"
         android:layout_height="@dimen/dialog_common_root_height_large"
         android:background="@drawable/common_card_bg"
         android:orientation="vertical">
@@ -57,7 +57,7 @@
                 android:textSize="@dimen/iscs_text_md"
                 app:layout_constraintLeft_toLeftOf="parent"
                 app:layout_constraintTop_toTopOf="parent"
-                app:markPosition="end"
+                app:markPosition="start"
                 app:required="true" />
 
             <EditText
@@ -89,7 +89,7 @@
                 android:textSize="@dimen/iscs_text_md"
                 app:layout_constraintEnd_toEndOf="@+id/role_name_tv"
                 app:layout_constraintTop_toBottomOf="@+id/role_name_tv"
-                app:markPosition="end"
+                app:markPosition="start"
                 app:required="true" />
 
             <EditText
@@ -121,7 +121,7 @@
                 android:textSize="@dimen/iscs_text_md"
                 app:layout_constraintEnd_toEndOf="@+id/role_key_tv"
                 app:layout_constraintTop_toBottomOf="@+id/role_key_tv"
-                app:markPosition="end"
+                app:markPosition="start"
                 app:required="true" />
 
             <RadioGroup

+ 1 - 1
app/src/main/res/layout/dialog_update_user.xml

@@ -3,7 +3,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <LinearLayout
-        android:layout_width="@dimen/dialog_common_root_width"
+        android:layout_width="wrap_content"
         android:layout_height="@dimen/dialog_common_root_height_large"
         android:background="@drawable/common_card_bg"
         android:orientation="vertical">

+ 2 - 2
app/src/main/res/layout/dialog_update_workstation.xml

@@ -3,7 +3,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <LinearLayout
-        android:layout_width="@dimen/dialog_common_root_width"
+        android:layout_width="wrap_content"
         android:layout_height="@dimen/dialog_common_root_height_small"
         android:background="@drawable/common_card_bg"
         android:orientation="vertical">
@@ -58,7 +58,7 @@
                     app:i18nKey='@{"workstation_manage_workstation_name"}'
                     android:textColor="?attr/colorTextPrimary"
                     android:textSize="@dimen/iscs_text_md"
-                    app:markPosition="end"
+                    app:markPosition="start"
                     app:required="true" />
 
                 <EditText

+ 4 - 4
app/src/main/res/layout/fragment_exception_report.xml

@@ -99,7 +99,7 @@
                     android:textSize="@dimen/iscs_text_md"
                     app:layout_constraintStart_toStartOf="parent"
                     app:layout_constraintTop_toTopOf="parent"
-                    app:markPosition="end"
+                    app:markPosition="start"
                     app:required="true" />
 
                 <TextView
@@ -132,7 +132,7 @@
                     android:textSize="@dimen/iscs_text_md"
                     app:layout_constraintEnd_toEndOf="@+id/exception_type_tv"
                     app:layout_constraintTop_toBottomOf="@+id/exception_type_tv"
-                    app:markPosition="end"
+                    app:markPosition="start"
                     app:required="true" />
 
                 <TextView
@@ -165,7 +165,7 @@
                     android:textSize="@dimen/iscs_text_md"
                     app:layout_constraintEnd_toEndOf="@+id/exception_source_tv"
                     app:layout_constraintTop_toBottomOf="@+id/exception_source_tv"
-                    app:markPosition="end"
+                    app:markPosition="start"
                     app:required="true" />
 
                 <TextView
@@ -196,7 +196,7 @@
                     android:textSize="@dimen/iscs_text_md"
                     app:layout_constraintEnd_toEndOf="@+id/exception_description_tv"
                     app:layout_constraintTop_toBottomOf="@+id/exception_description_tv"
-                    app:markPosition="end"
+                    app:markPosition="start"
                     app:required="true" />
 
                 <TextView

+ 75 - 55
app/src/main/res/layout/fragment_home.xml

@@ -2,6 +2,7 @@
 <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">
+
     <androidx.core.widget.NestedScrollView
         android:layout_width="match_parent"
         android:layout_height="match_parent"
@@ -12,17 +13,6 @@
             android:layout_height="match_parent"
             android:orientation="vertical">
 
-            <TextView
-                android:id="@+id/title_cn"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginLeft="@dimen/iscs_space_4"
-                android:layout_marginTop="@dimen/iscs_space_2"
-                android:textColor="?attr/colorTextPrimary"
-                android:textSize="@dimen/iscs_text_md"
-                android:textStyle="bold"
-                app:i18nKey='@{"loto"}' />
-
             <LinearLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
@@ -60,26 +50,40 @@
                 android:layout_height="match_parent"
                 android:layout_marginHorizontal="@dimen/iscs_space_4"
                 android:layout_marginVertical="@dimen/iscs_space_2"
-                android:divider="@drawable/common_divider_normal_space_vertical"
+                android:divider="@drawable/common_divider_small_space_vertical"
                 android:orientation="vertical"
                 android:showDividers="middle">
 
                 <LinearLayout
                     android:layout_width="match_parent"
-                    android:layout_height="0dp"
-                    android:layout_weight="1"
-                    android:background="@drawable/home_card_bg"
-                    android:orientation="vertical">
+                    android:layout_height="wrap_content"
+                    android:gravity="center_vertical"
+                    android:orientation="horizontal"
+                    android:paddingVertical="@dimen/iscs_space_1"
+                    android:paddingLeft="@dimen/iscs_space_2">
+
+                    <ImageView
+                        android:layout_width="@dimen/title_icon_size"
+                        android:layout_height="@dimen/title_icon_size"
+                        android:tint="?attr/colorPrimary"
+                        app:skinSrc='@{"icon_realtime_data.png"}' />
 
                     <TextView
                         android:id="@+id/realtime_data_title"
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
-                        android:paddingVertical="@dimen/iscs_space_1"
-                        android:paddingLeft="@dimen/iscs_space_2"
+                        android:layout_marginLeft="@dimen/iscs_space_2"
                         android:textColor="?attr/colorTextPrimary"
                         android:textSize="@dimen/iscs_text_md"
                         app:i18nKey='@{"home_realtime_data_title"}' />
+                </LinearLayout>
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="0dp"
+                    android:layout_weight="1"
+                    android:background="@drawable/home_card_bg"
+                    android:orientation="vertical">
 
                     <LinearLayout
                         android:id="@+id/realtime_data_filter_layout"
@@ -158,32 +162,32 @@
                             android:layout_width="0dp"
                             android:layout_height="match_parent"
                             android:layout_weight="1"
+                            android:background="@drawable/bg_home_card_num"
+                            android:backgroundTint="?attr/colorHomeBlockOngoing"
                             android:divider="@drawable/common_divider_small_space_horizontal"
                             android:gravity="center_vertical"
-                            android:orientation="vertical"
+                            android:orientation="horizontal"
                             android:showDividers="middle">
 
                             <TextView
-                                android:layout_width="match_parent"
+                                android:layout_width="wrap_content"
                                 android:layout_height="wrap_content"
                                 android:layout_marginHorizontal="@dimen/iscs_space_2"
                                 android:gravity="center"
                                 android:textColor="?attr/colorTextPrimary"
                                 android:textSize="@dimen/iscs_text_md"
                                 app:i18nKey='@{"ongoing_job_tv"}'
-                                tools:text="进行中的作业" />
+                                tools:text="进行中\n的作业" />
 
                             <TextView
                                 android:id="@+id/ongoing_job_num"
                                 android:layout_width="match_parent"
                                 android:layout_height="wrap_content"
                                 android:layout_margin="@dimen/iscs_space_2"
-                                android:background="@drawable/bg_home_card_num"
-                                android:backgroundTint="?attr/colorHomeBlockOngoing"
                                 android:gravity="center"
                                 android:padding="@dimen/iscs_space_2"
                                 android:textColor="?attr/colorTextPrimary"
-                                android:textSize="@dimen/iscs_text_h2"
+                                android:textSize="@dimen/iscs_text_h3"
                                 android:textStyle="bold"
                                 tools:text="80" />
                         </LinearLayout>
@@ -192,13 +196,15 @@
                             android:layout_width="0dp"
                             android:layout_height="match_parent"
                             android:layout_weight="1"
+                            android:background="@drawable/bg_home_card_num"
+                            android:backgroundTint="?attr/colorHomeBlockLocked"
                             android:divider="@drawable/common_divider_small_space_horizontal"
                             android:gravity="center_vertical"
-                            android:orientation="vertical"
+                            android:orientation="horizontal"
                             android:showDividers="middle">
 
                             <TextView
-                                android:layout_width="match_parent"
+                                android:layout_width="wrap_content"
                                 android:layout_height="wrap_content"
                                 android:layout_marginHorizontal="@dimen/iscs_space_2"
                                 android:gravity="center"
@@ -211,12 +217,10 @@
                                 android:layout_width="match_parent"
                                 android:layout_height="wrap_content"
                                 android:layout_margin="@dimen/iscs_space_2"
-                                android:background="@drawable/bg_home_card_num"
-                                android:backgroundTint="?attr/colorHomeBlockLocked"
                                 android:gravity="center"
                                 android:padding="@dimen/iscs_space_2"
                                 android:textColor="?attr/colorTextPrimary"
-                                android:textSize="@dimen/iscs_text_h2"
+                                android:textSize="@dimen/iscs_text_h3"
                                 android:textStyle="bold" />
                         </LinearLayout>
 
@@ -224,13 +228,15 @@
                             android:layout_width="0dp"
                             android:layout_height="match_parent"
                             android:layout_weight="1"
+                            android:background="@drawable/bg_home_card_num"
+                            android:backgroundTint="?attr/colorHomeBlockUseHardware"
                             android:divider="@drawable/common_divider_small_space_horizontal"
                             android:gravity="center_vertical"
-                            android:orientation="vertical"
+                            android:orientation="horizontal"
                             android:showDividers="middle">
 
                             <TextView
-                                android:layout_width="match_parent"
+                                android:layout_width="wrap_content"
                                 android:layout_height="wrap_content"
                                 android:layout_marginHorizontal="@dimen/iscs_space_2"
                                 android:gravity="center"
@@ -243,33 +249,47 @@
                                 android:layout_width="match_parent"
                                 android:layout_height="wrap_content"
                                 android:layout_margin="@dimen/iscs_space_2"
-                                android:background="@drawable/bg_home_card_num"
-                                android:backgroundTint="?attr/colorHomeBlockUseHardware"
                                 android:gravity="center"
                                 android:padding="@dimen/iscs_space_2"
                                 android:textColor="?attr/colorTextPrimary"
-                                android:textSize="@dimen/iscs_text_h2"
+                                android:textSize="@dimen/iscs_text_h3"
                                 android:textStyle="bold" />
                         </LinearLayout>
                     </LinearLayout>
 
                 </LinearLayout>
 
-                <RelativeLayout
+                <LinearLayout
                     android:layout_width="match_parent"
-                    android:layout_height="0dp"
-                    android:layout_weight="1"
-                    android:background="@drawable/home_card_bg">
+                    android:layout_height="wrap_content"
+                    android:gravity="center_vertical"
+                    android:orientation="horizontal"
+                    android:paddingVertical="@dimen/iscs_space_1"
+                    android:paddingLeft="@dimen/iscs_space_2">
+
+                    <ImageView
+                        android:layout_width="@dimen/title_icon_size"
+                        android:layout_height="@dimen/title_icon_size"
+                        android:tint="?attr/colorPrimary"
+                        app:skinSrc='@{"icon_overview_data.png"}' />
 
                     <TextView
                         android:id="@+id/overview_data_title"
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
-                        android:paddingVertical="@dimen/iscs_space_1"
-                        android:paddingLeft="@dimen/iscs_space_2"
+                        android:layout_marginLeft="@dimen/iscs_space_2"
                         android:textColor="?attr/colorTextPrimary"
                         android:textSize="@dimen/iscs_text_md"
                         app:i18nKey='@{"home_overview_data_title"}' />
+                </LinearLayout>
+
+
+                <RelativeLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="0dp"
+                    android:layout_weight="1"
+                    android:background="@drawable/home_card_bg">
+
 
                     <LinearLayout
                         android:id="@+id/overview_data_filter_layout"
@@ -371,13 +391,15 @@
                             android:layout_width="0dp"
                             android:layout_height="match_parent"
                             android:layout_weight="1"
+                            android:background="@drawable/bg_home_card_num"
+                            android:backgroundTint="?attr/colorHomeBlockOngoing"
                             android:divider="@drawable/common_divider_small_space_horizontal"
                             android:gravity="center_vertical"
-                            android:orientation="vertical"
+                            android:orientation="horizontal"
                             android:showDividers="middle">
 
                             <TextView
-                                android:layout_width="match_parent"
+                                android:layout_width="wrap_content"
                                 android:layout_height="wrap_content"
                                 android:layout_marginHorizontal="@dimen/iscs_space_2"
                                 android:gravity="center"
@@ -390,12 +412,10 @@
                                 android:layout_width="match_parent"
                                 android:layout_height="wrap_content"
                                 android:layout_margin="@dimen/iscs_space_2"
-                                android:background="@drawable/bg_home_card_num"
-                                android:backgroundTint="?attr/colorHomeBlockOngoing"
                                 android:gravity="center"
                                 android:padding="@dimen/iscs_space_2"
                                 android:textColor="?attr/colorTextPrimary"
-                                android:textSize="@dimen/iscs_text_h2"
+                                android:textSize="@dimen/iscs_text_h3"
                                 android:textStyle="bold" />
                         </LinearLayout>
 
@@ -403,13 +423,15 @@
                             android:layout_width="0dp"
                             android:layout_height="match_parent"
                             android:layout_weight="1"
+                            android:background="@drawable/bg_home_card_num"
+                            android:backgroundTint="?attr/colorHomeBlockLocked"
                             android:divider="@drawable/common_divider_small_space_horizontal"
                             android:gravity="center_vertical"
-                            android:orientation="vertical"
+                            android:orientation="horizontal"
                             android:showDividers="middle">
 
                             <TextView
-                                android:layout_width="match_parent"
+                                android:layout_width="wrap_content"
                                 android:layout_height="wrap_content"
                                 android:layout_marginHorizontal="@dimen/iscs_space_2"
                                 android:gravity="center"
@@ -422,12 +444,10 @@
                                 android:layout_width="match_parent"
                                 android:layout_height="wrap_content"
                                 android:layout_margin="@dimen/iscs_space_2"
-                                android:background="@drawable/bg_home_card_num"
-                                android:backgroundTint="?attr/colorHomeBlockLocked"
                                 android:gravity="center"
                                 android:padding="@dimen/iscs_space_2"
                                 android:textColor="?attr/colorTextPrimary"
-                                android:textSize="@dimen/iscs_text_h2"
+                                android:textSize="@dimen/iscs_text_h3"
                                 android:textStyle="bold" />
                         </LinearLayout>
 
@@ -435,13 +455,15 @@
                             android:layout_width="0dp"
                             android:layout_height="match_parent"
                             android:layout_weight="1"
+                            android:background="@drawable/bg_home_card_num"
+                            android:backgroundTint="?attr/colorHomeBlockUseHardware"
                             android:divider="@drawable/common_divider_small_space_horizontal"
                             android:gravity="center_vertical"
-                            android:orientation="vertical"
+                            android:orientation="horizontal"
                             android:showDividers="middle">
 
                             <TextView
-                                android:layout_width="match_parent"
+                                android:layout_width="wrap_content"
                                 android:layout_height="wrap_content"
                                 android:layout_marginHorizontal="@dimen/iscs_space_2"
                                 android:gravity="center"
@@ -454,12 +476,10 @@
                                 android:layout_width="match_parent"
                                 android:layout_height="wrap_content"
                                 android:layout_margin="@dimen/iscs_space_2"
-                                android:background="@drawable/bg_home_card_num"
-                                android:backgroundTint="?attr/colorHomeBlockUseHardware"
                                 android:gravity="center"
                                 android:padding="@dimen/iscs_space_2"
                                 android:textColor="?attr/colorTextPrimary"
-                                android:textSize="@dimen/iscs_text_h2"
+                                android:textSize="@dimen/iscs_text_h3"
                                 android:textStyle="bold" />
                         </LinearLayout>
                     </LinearLayout>

+ 1 - 1
app/src/main/res/layout/fragment_my_todo_list.xml

@@ -93,7 +93,7 @@
                     app:i18nKey='@{"handle_time"}'
                     app:layout_constraintLeft_toLeftOf="parent"
                     app:layout_constraintTop_toTopOf="parent"
-                    app:markPosition="end"
+                    app:markPosition="start"
                     app:required="false" />
 
                 <TextView

+ 9 - 0
app/src/main/res/layout/fragment_workflow_manage.xml

@@ -124,6 +124,15 @@
                 app:i18nKey='@{"status"}'
                 android:textSize="@dimen/iscs_text_md" />
 
+            <TextView
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_weight="1"
+                android:gravity="center"
+                android:paddingVertical="@dimen/iscs_space_2"
+                android:textColor="?attr/colorTextPrimary"
+                app:i18nKey='@{"set_default"}'
+                android:textSize="@dimen/iscs_text_md" />
             <TextView
                 android:layout_width="0dp"
                 android:layout_height="match_parent"

+ 7 - 7
app/src/main/res/layout/fragment_workflow_setting.xml

@@ -127,7 +127,7 @@
                         android:textColor="?attr/colorTextPrimary"
                         app:layout_constraintEnd_toEndOf="@+id/barrier_title_end"
                         app:layout_constraintTop_toTopOf="parent"
-                        app:markPosition="end"
+                        app:markPosition="start"
                         app:required="true" />
 
                     <EditText
@@ -161,7 +161,7 @@
                         app:layout_constraintHorizontal_chainStyle="packed"
                         app:layout_constraintStart_toStartOf="parent"
                         app:layout_constraintTop_toBottomOf="@+id/step_title_tv"
-                        app:markPosition="end"
+                        app:markPosition="start"
                         app:required="true" />
 
                     <EditText
@@ -194,7 +194,7 @@
                         app:layout_constraintEnd_toEndOf="@+id/barrier_title_end"
                         app:layout_constraintHorizontal_chainStyle="packed"
                         app:layout_constraintTop_toBottomOf="@+id/step_title_short_tv"
-                        app:markPosition="end"
+                        app:markPosition="start"
                         app:required="true" />
 
                     <TextView
@@ -229,7 +229,7 @@
                         app:layout_constraintEnd_toEndOf="@+id/barrier_title_end"
                         app:layout_constraintHorizontal_chainStyle="packed"
                         app:layout_constraintTop_toBottomOf="@+id/step_confirm_type_tv"
-                        app:markPosition="end"
+                        app:markPosition="start"
                         app:required="false" />
 
                     <TextView
@@ -265,7 +265,7 @@
                         app:layout_constraintEnd_toEndOf="@+id/barrier_title_end"
                         app:layout_constraintHorizontal_chainStyle="packed"
                         app:layout_constraintTop_toBottomOf="@+id/step_confirm_role_tv"
-                        app:markPosition="end"
+                        app:markPosition="start"
                         app:required="false" />
 
                     <TextView
@@ -300,7 +300,7 @@
                         app:layout_constraintEnd_toEndOf="@+id/barrier_title_end"
                         app:layout_constraintHorizontal_chainStyle="packed"
                         app:layout_constraintTop_toBottomOf="@+id/step_confirm_member_tv"
-                        app:markPosition="end"
+                        app:markPosition="start"
                         app:required="true" />
 
                     <androidx.recyclerview.widget.RecyclerView
@@ -332,7 +332,7 @@
                         app:layout_constraintEnd_toEndOf="@+id/barrier_title_end"
                         app:layout_constraintHorizontal_chainStyle="packed"
                         app:layout_constraintTop_toBottomOf="@+id/barrier_step_function_bottom"
-                        app:markPosition="end"
+                        app:markPosition="start"
                         app:required="true" />
 
                     <EditText

+ 2 - 2
app/src/main/res/layout/item_backup.xml

@@ -37,7 +37,7 @@
                 android:layout_weight="1"
                 android:gravity="center"
                 android:textSize="@dimen/iscs_text_sm"
-                android:textColor="?attr/colorTextPrimary"
+                android:textColor="?attr/colorPrimary"
                 app:i18nKey='@{"common_export"}' />
 
             <TextView
@@ -57,7 +57,7 @@
                 android:layout_weight="1"
                 android:gravity="center"
                 android:textSize="@dimen/iscs_text_sm"
-                android:textColor="?attr/colorTextPrimary"
+                android:textColor="?attr/colorPrimary"
                 app:i18nKey='@{"restore"}' />
         </LinearLayout>
     </LinearLayout>

+ 10 - 10
app/src/main/res/layout/item_home_text_drop_down.xml

@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<layout xmlns:android="http://schemas.android.com/apk/res/android">
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <LinearLayout
         android:id="@+id/root_layout"
@@ -10,11 +11,10 @@
 
         <ImageView
             android:id="@+id/arrow_iv"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:padding="@dimen/iscs_space_2"
-            android:src="@drawable/icon_arrow_right"
-            android:tint="?attr/colorTextPrimary"
+            android:layout_width="@dimen/title_icon_size"
+            android:layout_height="@dimen/title_icon_size"
+            app:skinSrc='@{"icon_drop_down_tree_collapse.png"}'
+            android:tint="?attr/colorPrimary"
             android:visibility="gone" />
 
         <TextView
@@ -29,11 +29,11 @@
 
         <ImageView
             android:id="@+id/check_iv"
-            android:layout_width="wrap_content"
-            android:layout_height="match_parent"
+            android:layout_width="@dimen/title_icon_size"
+            android:layout_height="@dimen/title_icon_size"
             android:layout_marginRight="@dimen/iscs_space_2"
-            android:src="@drawable/icon_check"
-            android:tint="?attr/colorTextPrimary"
+            app:skinSrc='@{"icon_drop_down_tree_check.png"}'
+            android:tint="?attr/colorPrimary"
             android:visibility="gone" />
     </LinearLayout>
 </layout>

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

@@ -7,10 +7,10 @@
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_margin="@dimen/iscs_space_2"
-        android:paddingHorizontal="@dimen/iscs_space_4"
         android:background="?attr/selectableItemBackground"
         android:gravity="center_horizontal"
-        android:orientation="vertical">
+        android:orientation="vertical"
+        android:paddingHorizontal="@dimen/iscs_space_4">
 
         <FrameLayout
             android:layout_width="@dimen/home_item_quick_entrance_iv_layout"
@@ -21,8 +21,8 @@
                 android:id="@+id/home_menu_iv"
                 android:layout_width="@dimen/home_item_quick_entrance_iv"
                 android:layout_height="@dimen/home_item_quick_entrance_iv"
-                android:tint="?attr/colorPrimary"
-                android:layout_gravity="center" />
+                android:layout_gravity="center"
+                android:tint="?attr/colorPrimary" />
 
             <ImageView
                 android:id="@+id/add"
@@ -30,6 +30,7 @@
                 android:layout_height="@dimen/common_badge_icon_size"
                 android:layout_gravity="right|top"
                 android:src="@drawable/icon_add"
+                android:tint="?attr/colorStatusGreen"
                 android:visibility="gone" />
 
             <ImageView
@@ -38,6 +39,7 @@
                 android:layout_height="@dimen/common_badge_icon_size"
                 android:layout_gravity="right|top"
                 android:src="@drawable/icon_remove"
+                android:tint="?attr/colorStatusRed"
                 android:visibility="gone" />
         </FrameLayout>
 

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

@@ -28,6 +28,7 @@
                 android:layout_width="@dimen/common_badge_icon_size"
                 android:layout_height="@dimen/common_badge_icon_size"
                 android:layout_gravity="right|top"
+                android:tint="?attr/colorStatusGreen"
                 android:src="@drawable/icon_add"
                 android:visibility="gone" />
 
@@ -36,6 +37,7 @@
                 android:layout_width="@dimen/common_badge_icon_size"
                 android:layout_height="@dimen/common_badge_icon_size"
                 android:layout_gravity="right|top"
+                android:tint="?attr/colorStatusRed"
                 android:src="@drawable/icon_remove"
                 android:visibility="gone" />
         </FrameLayout>

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

@@ -11,10 +11,9 @@
 
         <ImageView
             android:id="@+id/arrow_iv"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:tint="?attr/colorTextPrimary"
-            android:src="@drawable/icon_arrow_right" />
+            android:layout_width="@dimen/title_icon_size"
+            android:layout_height="@dimen/title_icon_size"
+            android:tint="?attr/colorPrimary"/>
 
         <com.google.android.material.checkbox.MaterialCheckBox
             android:id="@+id/role_cb"

+ 27 - 18
app/src/main/res/layout/item_switch.xml

@@ -3,7 +3,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools">
 
-    <LinearLayout
+    <RelativeLayout
         android:id="@+id/root"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
@@ -16,8 +16,9 @@
 
         <TextView
             android:id="@+id/switch_name"
-            android:layout_width="wrap_content"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
+            android:layout_toLeftOf="@+id/add_or_update_to_map"
             android:textColor="@color/white"
             android:textSize="@dimen/iscs_text_sm"
             android:textStyle="bold"
@@ -27,6 +28,9 @@
             android:id="@+id/switch_id"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
+            android:layout_below="@+id/switch_name"
+            android:layout_alignLeft="@+id/switch_name"
+            android:layout_toLeftOf="@+id/add_or_update_to_map"
             android:textColor="@color/white"
             android:textSize="@dimen/iscs_text_sm"
             tools:text="ID:" />
@@ -34,6 +38,9 @@
         <LinearLayout
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
+            android:layout_below="@+id/switch_id"
+            android:layout_alignLeft="@+id/switch_id"
+            android:layout_toLeftOf="@+id/add_or_update_to_map"
             android:orientation="horizontal">
 
             <TextView
@@ -52,25 +59,27 @@
                 android:paddingHorizontal="@dimen/iscs_space_2"
                 android:paddingVertical="@dimen/iscs_space_1"
                 android:textColor="@color/white"
-                android:textSize="@dimen/iscs_text_sm"
+                android:textSize="@dimen/iscs_text_xs"
                 android:textStyle="bold"
                 tools:text="OFF" />
         </LinearLayout>
 
-        <TextView
+        <ImageView
             android:id="@+id/add_or_update_to_map"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_gravity="center_horizontal"
-            android:background="@drawable/bg_switch_on"
-            android:gravity="center"
-            android:minWidth="@dimen/common_btn_width"
-            android:paddingHorizontal="@dimen/iscs_space_2"
-            android:paddingVertical="@dimen/iscs_space_1"
-            android:textColor="@color/white"
-            android:textSize="@dimen/iscs_text_sm"
-            android:textStyle="bold"
-            app:i18nKey='@{"add_to_map"}'
-            tools:text="添加到地图" />
-    </LinearLayout>
+            android:layout_width="@dimen/iscs_icon_btn_size"
+            android:layout_height="@dimen/iscs_icon_btn_size"
+            android:layout_toLeftOf="@+id/show_in_map"
+            android:padding="@dimen/iscs_space_2"
+            android:tint="?attr/colorPrimary"
+            app:skinSrc='@{"icon_switch_map_edit.png"}' />
+
+        <ImageView
+            android:id="@+id/show_in_map"
+            android:layout_width="@dimen/iscs_icon_btn_size"
+            android:layout_height="@dimen/iscs_icon_btn_size"
+            android:layout_alignParentRight="true"
+            android:padding="@dimen/iscs_space_2"
+            android:tint="?attr/colorPrimary"
+            app:skinSrc='@{"icon_switch_map_hide_point.png"}' />
+    </RelativeLayout>
 </layout>

+ 15 - 0
app/src/main/res/layout/item_workflow_manage.xml

@@ -42,6 +42,21 @@
                 android:textSize="@dimen/iscs_text_md" />
         </FrameLayout>
 
+        <FrameLayout
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1">
+
+            <com.google.android.material.materialswitch.MaterialSwitch
+                android:id="@+id/set_default"
+                android:layout_width="wrap_content"
+                android:layout_height="match_parent"
+                android:layout_gravity="center"
+                android:gravity="center"
+                app:useMaterialThemeColors="true"
+                android:textSize="@dimen/iscs_text_md" />
+        </FrameLayout>
+
         <TextView
             android:id="@+id/view"
             android:layout_width="0dp"

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

@@ -558,4 +558,10 @@ interface HardwareDao {
     @Update
     fun updateMapPoint(mapPoint: IsMapPoint)
 
+    /**
+     * 根据点位id修改是否显示在地图上
+     */
+    @Query("update is_map_point set show_in_map = :showInMap where entity_id = :pointId")
+    fun changeShowInMap(pointId: Long, showInMap: Boolean)
+
 }

+ 1 - 1
data/src/main/java/com/grkj/data/dao/WorkstationDao.kt

@@ -35,7 +35,7 @@ interface WorkstationDao {
      * 新增区域
      */
     @Insert(onConflict = OnConflictStrategy.REPLACE)
-    fun insertWorkstation(workstation: IsWorkstation)
+    fun insertWorkstation(workstation: IsWorkstation): Long
 
     /**
      * 根据区域id删除

+ 10 - 0
data/src/main/java/com/grkj/data/data/MMKVConstants.kt

@@ -44,4 +44,14 @@ object MMKVConstants {
      * 地图选择
      */
     const val KEY_MAP_LOCAL = "key_map_local"
+
+    /**
+     * 默认选择区域
+     */
+    const val KEY_DEFAULT_WORKSTATION_ID = "key_default_workstation_id"
+
+    /**
+     * 默认流程模式
+     */
+    const val KEY_DEFAULT_WORKFLOW_ID = "key_default_workflow_id"
 }

+ 16 - 1
data/src/main/java/com/grkj/data/database/ISCSMigrations.kt

@@ -11,7 +11,7 @@ object ISCSMigrations {
     /**
      * 版本号
      */
-    const val VERSION = 6
+    const val VERSION = 7
 
     /**
      * 升级数据
@@ -23,6 +23,7 @@ object ISCSMigrations {
             migration3To4,
             migration4To5,
             migration5To6,
+            migration6To7,
         )
     }
 
@@ -203,4 +204,18 @@ object ISCSMigrations {
             """.trimIndent())
         }
     }
+
+    /**
+     * 增加地图开关分布表字段,是否显示在地图上
+     */
+    var migration6To7 = object : Migration(6, 7) {
+        override fun migrate(db: SupportSQLiteDatabase) {
+            db.execSQL(
+                """
+                  ALTER TABLE is_map_point
+                    ADD COLUMN `show_in_map` INTEGER NOT NULL DEFAULT 0
+                """.trimIndent()
+            )
+        }
+    }
 }

+ 5 - 0
data/src/main/java/com/grkj/data/logic/IHardwareLogic.kt

@@ -408,4 +408,9 @@ interface IHardwareLogic {
      * 从地图上移除点位
      */
     fun removePointFromMap(pointId: Long)
+
+    /**
+     * 修改是否显示在地图上
+     */
+    fun changeShowInMap(pointId: Long, showInMap: Boolean)
 }

Некоторые файлы не были показаны из-за большого количества измененных файлов