Selaa lähdekoodia

refactor(更新)
- 自定义作业和流程的修改

周文健 4 kuukautta sitten
vanhempi
sitoutus
93efec5af2
100 muutettua tiedostoa jossa 2572 lisäystä ja 729 poistoa
  1. BIN
      app/src/main/assets/data.db
  2. 6 1
      app/src/main/java/com/grkj/iscs/common/DataTransferConstants.kt
  3. 283 0
      app/src/main/java/com/grkj/iscs/features/main/fragment/common/WorkflowSettingFragment.kt
  4. 26 4
      app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/CreateJobFragment.kt
  5. 26 4
      app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/CreateSopFragment.kt
  6. 23 1
      app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/CreateSopJobFragment.kt
  7. 22 0
      app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/EditJobFragment.kt
  8. 22 0
      app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/EditSopFragment.kt
  9. 22 0
      app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/EditSopJobFragment.kt
  10. 1 1
      app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/ExceptionJobManageFragment.kt
  11. 1 1
      app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/InProgressJobManageFragment.kt
  12. 69 14
      app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/JobExecuteFragment.kt
  13. 7 1
      app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/JobManageHomeFragment.kt
  14. 120 0
      app/src/main/java/com/grkj/iscs/features/main/viewmodel/common/WorkflowSettingViewModel.kt
  15. 50 28
      app/src/main/java/com/grkj/iscs/features/main/viewmodel/job_manage/JobExecuteViewModel.kt
  16. 4 2
      app/src/main/java/com/grkj/iscs/features/splash/activity/SplashActivity.kt
  17. 1 1
      app/src/main/res/drawable-land/bg_job_execute_step.xml
  18. 1 0
      app/src/main/res/drawable/bg_common_input_disable.xml
  19. 2 0
      app/src/main/res/drawable/bg_common_input_normal.xml
  20. 1 1
      app/src/main/res/drawable/bg_job_execute_step.xml
  21. 1 0
      app/src/main/res/drawable/home_card_bg.xml
  22. 2 2
      app/src/main/res/drawable/icon_select_member.xml
  23. 19 21
      app/src/main/res/layout-land/fragment_create_job.xml
  24. 19 21
      app/src/main/res/layout-land/fragment_create_sop.xml
  25. 14 15
      app/src/main/res/layout-land/fragment_create_sop_job.xml
  26. 15 17
      app/src/main/res/layout-land/fragment_edit_job.xml
  27. 15 17
      app/src/main/res/layout-land/fragment_edit_sop.xml
  28. 14 15
      app/src/main/res/layout-land/fragment_edit_sop_job.xml
  29. 313 177
      app/src/main/res/layout-land/fragment_job_execute.xml
  30. 5 5
      app/src/main/res/layout-land/fragment_point_manage.xml
  31. 9 6
      app/src/main/res/layout-land/fragment_select_memeber.xml
  32. 9 6
      app/src/main/res/layout-land/fragment_select_point.xml
  33. 364 0
      app/src/main/res/layout-land/fragment_workflow_setting.xml
  34. 1 2
      app/src/main/res/layout/dialog_filter_point.xml
  35. 5 5
      app/src/main/res/layout/fragment_card_manage.xml
  36. 15 14
      app/src/main/res/layout/fragment_create_job.xml
  37. 16 15
      app/src/main/res/layout/fragment_create_sop.xml
  38. 12 11
      app/src/main/res/layout/fragment_create_sop_job.xml
  39. 12 11
      app/src/main/res/layout/fragment_edit_job.xml
  40. 12 11
      app/src/main/res/layout/fragment_edit_sop.xml
  41. 12 11
      app/src/main/res/layout/fragment_edit_sop_job.xml
  42. 5 5
      app/src/main/res/layout/fragment_exception_job_manage.xml
  43. 5 5
      app/src/main/res/layout/fragment_in_progress_job_manage.xml
  44. 313 177
      app/src/main/res/layout/fragment_job_execute.xml
  45. 5 5
      app/src/main/res/layout/fragment_job_manage.xml
  46. 5 5
      app/src/main/res/layout/fragment_key_manage.xml
  47. 9 9
      app/src/main/res/layout/fragment_lock_manage.xml
  48. 5 5
      app/src/main/res/layout/fragment_locked_point.xml
  49. 5 5
      app/src/main/res/layout/fragment_point_manage.xml
  50. 5 5
      app/src/main/res/layout/fragment_reset_password.xml
  51. 9 9
      app/src/main/res/layout/fragment_rfid_token_manage.xml
  52. 5 5
      app/src/main/res/layout/fragment_role_manage.xml
  53. 12 9
      app/src/main/res/layout/fragment_select_memeber.xml
  54. 12 9
      app/src/main/res/layout/fragment_select_point.xml
  55. 5 5
      app/src/main/res/layout/fragment_sop_manage.xml
  56. 5 5
      app/src/main/res/layout/fragment_user_info.xml
  57. 5 5
      app/src/main/res/layout/fragment_user_manage.xml
  58. 388 0
      app/src/main/res/layout/fragment_workflow_setting.xml
  59. 5 5
      app/src/main/res/layout/fragment_workstation_manage.xml
  60. 1 1
      app/src/main/res/layout/item_login_method.xml
  61. 2 2
      app/src/main/res/layout/item_select_all_member.xml
  62. 2 2
      app/src/main/res/layout/item_select_member.xml
  63. 1 1
      app/src/main/res/layout/item_select_point.xml
  64. 14 0
      app/src/main/res/layout/item_work_flow_step_function.xml
  65. BIN
      app/src/main/res/mipmap-xhdpi/icon_avatar.png
  66. BIN
      app/src/main/res/mipmap-xhdpi/icon_data_manage_menu_point_manage.png
  67. BIN
      app/src/main/res/mipmap-xhdpi/icon_full_screen.png
  68. BIN
      app/src/main/res/mipmap-xhdpi/icon_item_point.png
  69. BIN
      app/src/main/res/mipmap-xhdpi/icon_job_execute.png
  70. BIN
      app/src/main/res/mipmap-xhdpi/icon_job_execute_colock.png
  71. BIN
      app/src/main/res/mipmap-xhdpi/icon_job_execute_info.png
  72. BIN
      app/src/main/res/mipmap-xhdpi/icon_job_execute_lock.png
  73. BIN
      app/src/main/res/mipmap-xhdpi/icon_job_manage_create_job.png
  74. BIN
      app/src/main/res/mipmap-xhdpi/icon_job_manage_create_sop.png
  75. BIN
      app/src/main/res/mipmap-xhdpi/icon_job_manage_in_progress_job.png
  76. BIN
      app/src/main/res/mipmap-xhdpi/icon_job_manage_sop_manage.png
  77. BIN
      app/src/main/res/mipmap-xhdpi/icon_logo.png
  78. BIN
      app/src/main/res/mipmap-xhdpi/icon_loto_step_1.png
  79. BIN
      app/src/main/res/mipmap-xhdpi/icon_loto_step_2.png
  80. BIN
      app/src/main/res/mipmap-xhdpi/icon_loto_step_4.png
  81. BIN
      app/src/main/res/mipmap-xhdpi/icon_loto_step_6.png
  82. BIN
      app/src/main/res/mipmap-xhdpi/icon_loto_step_7.png
  83. BIN
      app/src/main/res/mipmap-xhdpi/icon_loto_step_8.png
  84. BIN
      app/src/main/res/mipmap-xhdpi/icon_selected_member.png
  85. BIN
      app/src/main/res/mipmap-xhdpi/icon_step_colock.png
  86. BIN
      app/src/main/res/mipmap-xhdpi/icon_step_lock.png
  87. BIN
      app/src/main/res/mipmap-xhdpi/icon_step_select_member.png
  88. BIN
      app/src/main/res/mipmap-xhdpi/icon_step_unlock.png
  89. BIN
      app/src/main/res/mipmap-xhdpi/icon_title_arrow_divider.png
  90. BIN
      app/src/main/res/mipmap-xhdpi/icon_unselect_member.png
  91. BIN
      app/src/main/res/mipmap-xhdpi/icon_workflow_setting.png
  92. 22 0
      app/src/main/res/navigation/nav_job_manage.xml
  93. 35 0
      app/src/main/res/values-en/strings.xml
  94. 6 1
      app/src/main/res/values-land/dimens.xml
  95. 35 0
      app/src/main/res/values-zh/strings.xml
  96. 6 1
      app/src/main/res/values/dimens.xml
  97. 35 0
      app/src/main/res/values/strings.xml
  98. 5 0
      app/src/main/res/xml/badge_style.xml
  99. 8 5
      data/src/main/java/com/grkj/data/dao/JobTicketDao.kt
  100. 26 2
      data/src/main/java/com/grkj/data/dao/UserDao.kt

BIN
app/src/main/assets/data.db


+ 6 - 1
app/src/main/java/com/grkj/iscs/common/DataTransferConstants.kt

@@ -19,7 +19,12 @@ object DataTransferConstants {
     /**
      * 选择点位区域过滤
      */
-    const val KEY_SELECT_POINT_WORKSTATION_ID = "KEY_SELECT_POINT_WORKSTATION_ID"
+    const val KEY_SELECT_POINT_WORKSTATION_ID = "key_select_point_workstation_id"
+
+    /**
+     * 流程模式的模式id
+     */
+    const val KEY_WORKFLOW_SETTING_MODE_ID = "KEY_WORKFLOW_SETTING_MODE_ID"
 
     /**
      * 上一步标题/图标

+ 283 - 0
app/src/main/java/com/grkj/iscs/features/main/fragment/common/WorkflowSettingFragment.kt

@@ -0,0 +1,283 @@
+package com.grkj.iscs.features.main.fragment.common
+
+import android.graphics.drawable.GradientDrawable
+import android.widget.LinearLayout
+import androidx.core.view.isVisible
+import androidx.fragment.app.viewModels
+import com.drake.brv.BindingAdapter
+import com.drake.brv.utils.linear
+import com.drake.brv.utils.models
+import com.drake.brv.utils.setup
+import com.grkj.data.enums.WorkflowStepConfirmTypeEnum
+import com.grkj.data.model.dos.WorkflowStep
+import com.grkj.iscs.R
+import com.grkj.iscs.common.DataTransferConstants
+import com.grkj.iscs.databinding.FragmentWorkflowSettingBinding
+import com.grkj.iscs.databinding.ItemJobExecuteStepBinding
+import com.grkj.iscs.databinding.ItemWorkFlowStepFunctionBinding
+import com.grkj.iscs.features.main.dialog.TextDropDownDialog
+import com.grkj.iscs.features.main.viewmodel.common.WorkflowSettingViewModel
+import com.grkj.ui_base.base.BaseFormFragment
+import com.grkj.ui_base.utils.CommonUtils
+import com.grkj.ui_base.utils.extension.smoothScrollToSmartPosition
+import com.kongzue.dialogx.dialogs.PopTip
+import com.sik.sikcore.data.GlobalDataTempStore
+import com.sik.sikcore.extension.setDebouncedClickListener
+import dagger.hilt.android.AndroidEntryPoint
+
+/**
+ * 流程模式设置
+ */
+@AndroidEntryPoint
+class WorkflowSettingFragment : BaseFormFragment<FragmentWorkflowSettingBinding>() {
+    private val viewModel: WorkflowSettingViewModel by viewModels()
+    override fun getLayoutId(): Int {
+        return R.layout.fragment_workflow_setting
+    }
+
+    override val needInitData: Boolean
+        get() = true
+
+    override val needWatchObject: List<Any?> by lazy {
+        listOf(
+            binding.stepTitleEt,
+            binding.stepTitleShortEt,
+            viewModel.currentConfirmType,
+            viewModel.currentConfirmRole,
+            viewModel.currentConfirmMember,
+            binding.stepDescriptionEt
+        )
+    }
+
+    override fun initView() {
+        binding.back.setDebouncedClickListener {
+            if (isFormDirty) {
+                showUnsavedConfirmDialog()
+            } else {
+                navController.popBackStack()
+            }
+        }
+        binding.cancel.setDebouncedClickListener {
+            if (isFormDirty) {
+                showUnsavedConfirmDialog()
+            } else {
+                navController.popBackStack()
+            }
+        }
+        binding.confirm.setDebouncedClickListener {
+            viewModel.saveStepsData().observe(this) {
+                PopTip.tip(com.grkj.ui_base.R.string.save_success)
+                resetFormDirty()
+            }
+        }
+        addTextChange(binding.stepTitleEt) {
+            viewModel.currentStep?.stepTitle = it
+        }
+        addTextChange(binding.stepTitleShortEt) {
+            viewModel.currentStep?.stepTitleShort = it
+        }
+        addTextChange(binding.stepDescriptionEt) {
+            viewModel.currentStep?.stepDescription = it
+        }
+        binding.stepConfirmType.setDebouncedClickListener {
+            TextDropDownDialog.showSingle(WorkflowStepConfirmTypeEnum.values().map {
+                TextDropDownDialog.SimpleTextDropDownEntity(
+                    dataObject = it.type,
+                    dataText = it.description
+                )
+            }, binding.stepConfirmType) { selectedData ->
+                viewModel.currentConfirmType = WorkflowStepConfirmTypeEnum.values()
+                    .find { it.type == selectedData.getData() as Int }
+                    ?: WorkflowStepConfirmTypeEnum.AUTO_CONFIRM
+                binding.stepConfirmType.text = selectedData.getShowText()
+                if (viewModel.currentConfirmType != WorkflowStepConfirmTypeEnum.ROLE_CONFIRM) {
+                    viewModel.currentConfirmRole = null
+                    viewModel.currentConfirmMember = null
+                }
+                checkAndSetConfirmData()
+            }
+        }
+        binding.stepConfirmRole.setDebouncedClickListener {
+            TextDropDownDialog.showSingle(viewModel.allRole.map {
+                TextDropDownDialog.SimpleTextDropDownEntity(
+                    dataTag = it.roleKey,
+                    dataText = it.roleName
+                )
+            }, binding.stepConfirmRole) { selectedData ->
+                viewModel.currentConfirmRole = selectedData.getTag()
+                binding.stepConfirmRole.text = selectedData.getShowText()
+                viewModel.currentConfirmMember = null
+                binding.stepConfirmMember.text = ""
+                viewModel.currentStep?.confirmRoleCode = viewModel.currentConfirmRole
+            }
+        }
+        binding.stepConfirmMember.setDebouncedClickListener {
+            val filterUsers = viewModel.allUser.filter { it.roleKeys.contains(viewModel.currentConfirmRole) }
+            if (filterUsers.isEmpty()){
+                PopTip.tip(R.string.current_role_no_user)
+                return@setDebouncedClickListener
+            }
+            TextDropDownDialog.showSingle(filterUsers.map {
+                    TextDropDownDialog.SimpleTextDropDownEntity(
+                        dataId = it.userId,
+                        dataText = it.nickName
+                    )
+                }, binding.stepConfirmMember) { selectedData ->
+                viewModel.currentConfirmMember = selectedData.getId()
+                binding.stepConfirmMember.text = selectedData.getShowText()
+                viewModel.currentStep?.confirmUser = viewModel.currentConfirmMember
+            }
+        }
+        binding.workflowModeRv.linear(orientation = LinearLayout.HORIZONTAL).setup {
+            addType<WorkflowStep>(R.layout.item_job_execute_step)
+            onBind {
+                onStepRVListBinding(this)
+            }
+        }
+        binding.stepFunctionRv.linear().setup {
+            addType<String>(R.layout.item_work_flow_step_function)
+            onBind {
+                val itemBinding = getBinding<ItemWorkFlowStepFunctionBinding>()
+                val item = getModel<String>()
+                itemBinding.stepFunction.text = item
+            }
+        }
+    }
+
+    private fun BindingAdapter.BindingViewHolder.onStepRVListBinding(holder: BindingAdapter.BindingViewHolder) {
+        val itemBinding = holder.getBinding<ItemJobExecuteStepBinding>()
+        val item = holder.getModel<WorkflowStep>()
+        itemBinding.stepIconIv.setImageResource(getStepIcon(item))
+        itemBinding.stepNameTv.text = item.stepTitleShort
+        itemBinding.stepIndexTv.text = item.stepIndex.toString()
+        itemBinding.dividerIv.isVisible = item.stepIndex != viewModel.workflowSteps.last().stepIndex
+        val bg = itemBinding.stepLayout.background
+        if (item.stepId == viewModel.currentStep?.stepId) {
+            if (bg is GradientDrawable) {
+                bg.mutate()  // 拷贝一份,避免影响到其它引用了同一个 drawable 的 view
+                bg.setColor(requireContext().getColor(R.color.color_ffec99))
+            }
+        } else {
+            if (bg is GradientDrawable) {
+                bg.mutate()  // 拷贝一份,避免影响到其它引用了同一个 drawable 的 view
+                bg.setColor(requireContext().getColor(R.color.color_e9ecf4))
+            }
+        }
+        itemBinding.stepLayout.setDebouncedClickListener {
+            viewModel.currentStep = item
+            adapter.notifyDataSetChanged()
+            binding.workflowModeRv.smoothScrollToSmartPosition(modelPosition)
+            checkCurrentStepData()
+            resetFormDirty()
+        }
+    }
+
+    /**
+     * 获取步骤图标
+     */
+    private fun getStepIcon(workflowStep: WorkflowStep): Int {
+        return when {
+            workflowStep.stepTitleShort?.contains(
+                CommonUtils.getStr(com.grkj.ui_base.R.string.recognize_work_content).toString()
+            ) == true -> R.mipmap.icon_loto_step_1
+
+            workflowStep.stepTitleShort?.contains(
+                CommonUtils.getStr(com.grkj.ui_base.R.string.power_isolation_way).toString()
+            ) == true -> R.mipmap.icon_loto_step_2
+
+            workflowStep.stepTitleShort?.contains(
+                CommonUtils.getStr(com.grkj.ui_base.R.string.shutdown).toString()
+            ) == true -> R.mipmap.icon_loto_step_4
+
+            workflowStep.stepTitleShort?.contains(
+                CommonUtils.getStr(com.grkj.ui_base.R.string.ensure_power_isolation).toString()
+            ) == true -> R.mipmap.icon_loto_step_6
+
+            workflowStep.stepTitleShort?.contains(
+                CommonUtils.getStr(com.grkj.ui_base.R.string.check_before_unlocking).toString()
+            ) == true -> R.mipmap.icon_loto_step_7
+
+            workflowStep.stepTitleShort?.contains(
+                CommonUtils.getStr(com.grkj.ui_base.R.string.unlock_and_restore_switch).toString()
+            ) == true -> R.mipmap.icon_loto_step_8
+
+            workflowStep.enableSetLocker || workflowStep.enableSetColocker -> R.mipmap.icon_step_select_member
+            workflowStep.enableLock -> R.mipmap.icon_step_lock
+            workflowStep.enableColock -> R.mipmap.icon_step_colock
+            workflowStep.enableUnlock -> R.mipmap.icon_step_unlock
+            else -> 0
+        }
+    }
+
+    override fun initData() {
+        super.initData()
+        viewModel.modeId = GlobalDataTempStore.getInstance()
+            .getData(DataTransferConstants.KEY_WORKFLOW_SETTING_MODE_ID) as Long
+        val previewStepTitle = GlobalDataTempStore.getInstance()
+            .getData(DataTransferConstants.KEY_PREVIEW_STEP_TITLE_DATA) as String
+        val previewStepIcon = GlobalDataTempStore.getInstance()
+            .getData(DataTransferConstants.KEY_PREVIEW_STEP_ICON_DATA) as Int
+        binding.previewStepTitle.text = previewStepTitle
+        binding.previewStepIv.setImageResource(previewStepIcon)
+        viewModel.getSettingData().observe(this) {
+            viewModel.getWorkflowSteps().observe(this) {
+                if (viewModel.workflowSteps.isEmpty()) {
+                    PopTip.tip(R.string.current_workflow_mode_error)
+                    navController.popBackStack()
+                    return@observe
+                }
+                binding.workflowModeRv.models = viewModel.workflowSteps
+                viewModel.currentStep = viewModel.workflowSteps[0]
+                checkCurrentStepData()
+            }
+        }
+    }
+
+    /**
+     * 检查和设置当前步骤的数据
+     */
+    private fun checkCurrentStepData() {
+        viewModel.currentStep?.let {
+            binding.stepTitleEt.setText(it.stepTitle)
+            binding.stepTitleShortEt.setText(it.stepTitleShort)
+            binding.stepDescriptionEt.setText(it.stepDescription)
+            binding.stepFunctionRv.models = viewModel.checkAndSetStepFunction()
+            if (it.confirmType != 0) {
+                viewModel.currentConfirmType = WorkflowStepConfirmTypeEnum.AUTO_CONFIRM
+            } else {
+                if (it.confirmRoleCode == null) {
+                    viewModel.currentConfirmType = WorkflowStepConfirmTypeEnum.CLICK_CONFIRM
+                } else {
+                    viewModel.currentConfirmType = WorkflowStepConfirmTypeEnum.ROLE_CONFIRM
+                }
+            }
+            viewModel.currentConfirmRole = viewModel.currentStep?.confirmRoleCode
+            viewModel.currentConfirmMember = viewModel.currentStep?.confirmUser
+            checkAndSetConfirmData()
+            initDataComplete()
+        }
+    }
+
+    /**
+     * 检查和设置执行确认数据
+     */
+    private fun checkAndSetConfirmData() {
+        binding.stepConfirmType.text = viewModel.currentConfirmType.description
+        viewModel.currentConfirmRole?.let { roleKey ->
+            binding.stepConfirmRole.text =
+                viewModel.allRole.find { it.roleKey == roleKey }?.roleName
+        }
+        viewModel.currentConfirmMember?.let { userId ->
+            binding.stepConfirmMember.text =
+                viewModel.allUser.find { it.userId == userId }?.nickName
+        }
+        binding.stepConfirmRole.isVisible =
+            viewModel.currentConfirmType == WorkflowStepConfirmTypeEnum.ROLE_CONFIRM
+        binding.stepConfirmRoleTv.isVisible =
+            viewModel.currentConfirmType == WorkflowStepConfirmTypeEnum.ROLE_CONFIRM
+        binding.stepConfirmMember.isVisible =
+            viewModel.currentConfirmType == WorkflowStepConfirmTypeEnum.ROLE_CONFIRM
+        binding.stepConfirmMemberTv.isVisible =
+            viewModel.currentConfirmType == WorkflowStepConfirmTypeEnum.ROLE_CONFIRM
+    }
+}

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

@@ -147,7 +147,7 @@ class CreateJobFragment : BaseFormFragment<FragmentCreateJobBinding>() {
             GlobalDataTempStore.getInstance()
                 .saveData(
                     DataTransferConstants.KEY_PREVIEW_STEP_ICON_DATA,
-                    R.mipmap.icon_data_manage_menu_point_manage
+                    R.mipmap.icon_job_manage_create_job
                 )
             navController.navigate(R.id.action_createJobFragment_to_selectPointFragment)
         }
@@ -191,10 +191,32 @@ class CreateJobFragment : BaseFormFragment<FragmentCreateJobBinding>() {
             GlobalDataTempStore.getInstance()
                 .saveData(
                     DataTransferConstants.KEY_PREVIEW_STEP_ICON_DATA,
-                    R.mipmap.icon_data_manage_menu_point_manage
+                    R.mipmap.icon_job_manage_create_job
                 )
             navController.navigate(R.id.action_createJobFragment_to_selectMemberFragment)
         }
+        binding.workflowModeSettingTv.setDebouncedClickListener {
+            if (selectedModeId == null) {
+                PopTip.tip(R.string.please_select_workflow_mode)
+                return@setDebouncedClickListener
+            }
+            GlobalDataTempStore.getInstance()
+                .saveData(
+                    DataTransferConstants.KEY_WORKFLOW_SETTING_MODE_ID,
+                    selectedModeId ?: 0
+                )
+            GlobalDataTempStore.getInstance()
+                .saveData(
+                    DataTransferConstants.KEY_PREVIEW_STEP_TITLE_DATA,
+                    CommonUtils.getStr(R.string.create_job_title).toString()
+                )
+            GlobalDataTempStore.getInstance()
+                .saveData(
+                    DataTransferConstants.KEY_PREVIEW_STEP_ICON_DATA,
+                    R.mipmap.icon_job_manage_create_job
+                )
+            navController.navigate(R.id.action_createJobFragment_to_workflowSettingFragment)
+        }
         binding.selectPointTv.setDebouncedClickListener {
             if (selectedWorkstationId == null) {
                 PopTip.tip(R.string.please_select_job_workstation)
@@ -215,7 +237,7 @@ class CreateJobFragment : BaseFormFragment<FragmentCreateJobBinding>() {
             GlobalDataTempStore.getInstance()
                 .saveData(
                     DataTransferConstants.KEY_PREVIEW_STEP_ICON_DATA,
-                    R.mipmap.icon_data_manage_menu_point_manage
+                    R.mipmap.icon_job_manage_create_job
                 )
             navController.navigate(R.id.action_createJobFragment_to_selectPointFragment)
         }
@@ -256,7 +278,7 @@ class CreateJobFragment : BaseFormFragment<FragmentCreateJobBinding>() {
             GlobalDataTempStore.getInstance()
                 .saveData(
                     DataTransferConstants.KEY_PREVIEW_STEP_ICON_DATA,
-                    R.mipmap.icon_data_manage_menu_point_manage
+                    R.mipmap.icon_job_manage_create_job
                 )
             navController.navigate(R.id.action_createJobFragment_to_selectMemberFragment)
         }

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

@@ -111,7 +111,7 @@ class CreateSopFragment : BaseFormFragment<FragmentCreateSopBinding>() {
             GlobalDataTempStore.getInstance()
                 .saveData(
                     DataTransferConstants.KEY_PREVIEW_STEP_ICON_DATA,
-                    R.mipmap.icon_data_manage_menu_point_manage
+                    R.mipmap.icon_job_manage_create_sop
                 )
             navController.navigate(R.id.action_createSopFragment_to_selectPointFragment)
         }
@@ -152,10 +152,32 @@ class CreateSopFragment : BaseFormFragment<FragmentCreateSopBinding>() {
             GlobalDataTempStore.getInstance()
                 .saveData(
                     DataTransferConstants.KEY_PREVIEW_STEP_ICON_DATA,
-                    R.mipmap.icon_data_manage_menu_point_manage
+                    R.mipmap.icon_job_manage_create_sop
                 )
             navController.navigate(R.id.action_createSopFragment_to_selectMemberFragment)
         }
+        binding.workflowModeSettingTv.setDebouncedClickListener {
+            if (selectedModeId == null) {
+                PopTip.tip(R.string.please_select_workflow_mode)
+                return@setDebouncedClickListener
+            }
+            GlobalDataTempStore.getInstance()
+                .saveData(
+                    DataTransferConstants.KEY_WORKFLOW_SETTING_MODE_ID,
+                    selectedModeId ?: 0
+                )
+            GlobalDataTempStore.getInstance()
+                .saveData(
+                    DataTransferConstants.KEY_PREVIEW_STEP_TITLE_DATA,
+                    CommonUtils.getStr(R.string.create_sop_title).toString()
+                )
+            GlobalDataTempStore.getInstance()
+                .saveData(
+                    DataTransferConstants.KEY_PREVIEW_STEP_ICON_DATA,
+                    R.mipmap.icon_job_manage_create_sop
+                )
+            navController.navigate(R.id.action_createSopFragment_to_workflowSettingFragment)
+        }
         binding.selectPointTv.setDebouncedClickListener {
             if (selectedWorkstationId == null) {
                 PopTip.tip(R.string.please_select_sop_workstation)
@@ -176,7 +198,7 @@ class CreateSopFragment : BaseFormFragment<FragmentCreateSopBinding>() {
             GlobalDataTempStore.getInstance()
                 .saveData(
                     DataTransferConstants.KEY_PREVIEW_STEP_ICON_DATA,
-                    R.mipmap.icon_data_manage_menu_point_manage
+                    R.mipmap.icon_job_manage_create_sop
                 )
             navController.navigate(R.id.action_createSopFragment_to_selectPointFragment)
         }
@@ -213,7 +235,7 @@ class CreateSopFragment : BaseFormFragment<FragmentCreateSopBinding>() {
             GlobalDataTempStore.getInstance()
                 .saveData(
                     DataTransferConstants.KEY_PREVIEW_STEP_ICON_DATA,
-                    R.mipmap.icon_data_manage_menu_point_manage
+                    R.mipmap.icon_job_manage_create_sop
                 )
             navController.navigate(R.id.action_createSopFragment_to_selectMemberFragment)
         }

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

@@ -109,6 +109,28 @@ class CreateSopJobFragment : BaseFormFragment<FragmentCreateSopJobBinding>() {
         binding.workstationTv.setOnClickListener {
             setWorkstationData()
         }
+        binding.workflowModeSettingTv.setDebouncedClickListener {
+            if (selectedSop == null) {
+                PopTip.tip(R.string.please_select_sop)
+                return@setDebouncedClickListener
+            }
+            GlobalDataTempStore.getInstance()
+                .saveData(
+                    DataTransferConstants.KEY_WORKFLOW_SETTING_MODE_ID,
+                    selectedSop?.modeId ?: 0
+                )
+            GlobalDataTempStore.getInstance()
+                .saveData(
+                    DataTransferConstants.KEY_PREVIEW_STEP_TITLE_DATA,
+                    CommonUtils.getStr(R.string.create_sop_job_title).toString()
+                )
+            GlobalDataTempStore.getInstance()
+                .saveData(
+                    DataTransferConstants.KEY_PREVIEW_STEP_ICON_DATA,
+                    R.mipmap.icon_job_manage_create_job
+                )
+            navController.navigate(R.id.action_createSopJobFragment_to_workflowSettingFragment)
+        }
         binding.sopTv.setDebouncedClickListener {
             if (selectedWorkstationId == null) {
                 PopTip.tip(R.string.please_select_sop_workstation)
@@ -143,7 +165,7 @@ class CreateSopJobFragment : BaseFormFragment<FragmentCreateSopJobBinding>() {
             GlobalDataTempStore.getInstance()
                 .saveData(
                     DataTransferConstants.KEY_PREVIEW_STEP_TITLE_DATA,
-                    CommonUtils.getStr(R.string.create_sop_title).toString()
+                    CommonUtils.getStr(R.string.create_sop_job_title).toString()
                 )
             GlobalDataTempStore.getInstance()
                 .saveData(

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

@@ -107,6 +107,28 @@ class EditJobFragment : BaseFormFragment<FragmentEditJobBinding>() {
         binding.lockModeTv.setOnClickListener {
             setLockModeData()
         }
+        binding.workflowModeSettingTv.setDebouncedClickListener {
+            if (selectedModeId == null) {
+                PopTip.tip(R.string.please_select_workflow_mode)
+                return@setDebouncedClickListener
+            }
+            GlobalDataTempStore.getInstance()
+                .saveData(
+                    DataTransferConstants.KEY_WORKFLOW_SETTING_MODE_ID,
+                    selectedModeId ?: 0
+                )
+            GlobalDataTempStore.getInstance()
+                .saveData(
+                    DataTransferConstants.KEY_PREVIEW_STEP_TITLE_DATA,
+                    CommonUtils.getStr(R.string.create_job_title).toString()
+                )
+            GlobalDataTempStore.getInstance()
+                .saveData(
+                    DataTransferConstants.KEY_PREVIEW_STEP_ICON_DATA,
+                    R.mipmap.icon_job_manage_create_job
+                )
+            navController.navigate(R.id.action_editJobFragment_to_workflowSettingFragment)
+        }
         binding.selectPointTv.setDebouncedClickListener {
             if (selectedWorkstationId == null) {
                 PopTip.tip(R.string.please_select_job_workstation)

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

@@ -95,6 +95,28 @@ class EditSopFragment : BaseFormFragment<FragmentEditSopBinding>() {
         binding.lockModeTv.setOnClickListener {
             setLockModeData()
         }
+        binding.workflowModeSettingTv.setDebouncedClickListener {
+            if (selectedModeId == null) {
+                PopTip.tip(R.string.please_select_workflow_mode)
+                return@setDebouncedClickListener
+            }
+            GlobalDataTempStore.getInstance()
+                .saveData(
+                    DataTransferConstants.KEY_WORKFLOW_SETTING_MODE_ID,
+                    selectedModeId ?: 0
+                )
+            GlobalDataTempStore.getInstance()
+                .saveData(
+                    DataTransferConstants.KEY_PREVIEW_STEP_TITLE_DATA,
+                    CommonUtils.getStr(R.string.create_sop_title).toString()
+                )
+            GlobalDataTempStore.getInstance()
+                .saveData(
+                    DataTransferConstants.KEY_PREVIEW_STEP_ICON_DATA,
+                    R.mipmap.icon_job_manage_create_sop
+                )
+            navController.navigate(R.id.action_editSopFragment_to_workflowSettingFragment)
+        }
         binding.selectPointTv.setDebouncedClickListener {
             if (selectedWorkstationId == null) {
                 PopTip.tip(R.string.please_select_sop_workstation)

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

@@ -122,6 +122,28 @@ class EditSopJobFragment : BaseFormFragment<FragmentEditSopJobBinding>() {
                 }
             }
         }
+        binding.workflowModeSettingTv.setDebouncedClickListener {
+            if (selectedSop == null) {
+                PopTip.tip(R.string.please_select_sop)
+                return@setDebouncedClickListener
+            }
+            GlobalDataTempStore.getInstance()
+                .saveData(
+                    DataTransferConstants.KEY_WORKFLOW_SETTING_MODE_ID,
+                    selectedSop?.modeId ?: 0
+                )
+            GlobalDataTempStore.getInstance()
+                .saveData(
+                    DataTransferConstants.KEY_PREVIEW_STEP_TITLE_DATA,
+                    CommonUtils.getStr(R.string.create_sop_job_title).toString()
+                )
+            GlobalDataTempStore.getInstance()
+                .saveData(
+                    DataTransferConstants.KEY_PREVIEW_STEP_ICON_DATA,
+                    R.mipmap.icon_job_manage_create_job
+                )
+            navController.navigate(R.id.action_editSopJobFragment_to_workflowSettingFragment)
+        }
         binding.selectMemberTv.setDebouncedClickListener {
             if (selectedWorkstationId == null) {
                 PopTip.tip(R.string.please_select_sop_workstation)

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

@@ -59,7 +59,7 @@ class ExceptionJobManageFragment : BaseFragment<FragmentExceptionJobManageBindin
         }
     }
 
-    private fun BindingAdapter.BindingViewHolder.onListDataBinding(holder: BindingAdapter.BindingViewHolder) {
+    private fun onListDataBinding(holder: BindingAdapter.BindingViewHolder) {
         val itemBinding = holder.getBinding<ItemJobManageBinding>()
         val item = holder.getModel<JobTicketManageVo>()
         itemBinding.jobName.text = item.ticketName

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

@@ -55,7 +55,7 @@ class InProgressJobManageFragment : BaseFragment<FragmentInProgressJobManageBind
         }
     }
 
-    private fun BindingAdapter.BindingViewHolder.onListDataBinding(holder: BindingAdapter.BindingViewHolder) {
+    private fun onListDataBinding(holder: BindingAdapter.BindingViewHolder) {
         val itemBinding = holder.getBinding<ItemJobManageBinding>()
         val item = holder.getModel<JobTicketManageVo>()
         itemBinding.jobName.text = item.ticketName

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

@@ -1,6 +1,7 @@
 package com.grkj.iscs.features.main.fragment.job_manage
 
 import android.graphics.drawable.GradientDrawable
+import android.view.ViewGroup
 import android.widget.LinearLayout
 import androidx.core.view.isVisible
 import androidx.fragment.app.viewModels
@@ -26,9 +27,11 @@ import com.grkj.iscs.features.main.viewmodel.job_manage.JobExecuteViewModel
 import com.grkj.shared.model.EventBean
 import com.grkj.ui_base.base.BaseFragment
 import com.grkj.data.data.EventConstants
+import com.grkj.data.model.dos.WorkflowStep
 import com.grkj.ui_base.dialog.TipDialog
 import com.grkj.ui_base.utils.CommonUtils
 import com.grkj.ui_base.utils.event.RFIDCardReadEvent
+import com.grkj.ui_base.utils.extension.toggleExpandView
 import com.kongzue.dialogx.dialogs.PopTip
 import com.sik.sikcore.data.GlobalDataTempStore
 import com.sik.sikcore.extension.setDebouncedClickListener
@@ -102,14 +105,31 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
                 onColockerRVListBinding(this)
             }
         }
+        binding.fullScreen.setDebouncedClickListener {
+            if ((binding.dataLayout.parent as ViewGroup).id == binding.fullScreenRootLayout.id) {
+                toggleExpandView(binding.fullScreenRootLayout, binding.dataLayout, false)
+            } else {
+                toggleExpandView(binding.fullScreenRootLayout, binding.dataLayout, true)
+            }
+        }
+    }
+
+    /**
+     * 检查界面
+     */
+    private fun checkLayout(index: Int) {
+        binding.stepDescriptionTv?.isVisible = index == 0
+        binding.lockStatusLayout?.isVisible = index == 1
+        binding.colockerLayout.isVisible = index == 2
     }
 
     private fun BindingAdapter.BindingViewHolder.onStepRVListBinding(holder: BindingAdapter.BindingViewHolder) {
         val itemBinding = holder.getBinding<ItemJobExecuteStepBinding>()
         val item = holder.getModel<IsJobTicketStepDataVo>()
-        itemBinding.stepIconIv.setImageResource(getStepIcon(item.stepIndex))
-        itemBinding.stepNameTv.text = item.stepContent
-        itemBinding.stepIndexTv.text = (item.position + 1).toString()
+        itemBinding.stepIconIv.setImageResource(getStepIcon(viewModel.workflowSteps.find { it.stepId == item.stepId }))
+        itemBinding.stepNameTv.text =
+            viewModel.workflowSteps.find { it.stepId == item.stepId }?.stepTitleShort
+        itemBinding.stepIndexTv.text = item.stepIndex.toString()
         itemBinding.dividerIv.isVisible = item.stepId != viewModel.ticketStep.last().stepId
         val bg = itemBinding.stepLayout.background
         when (item.stepStatus) {
@@ -131,7 +151,7 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
                 }
             }
         }
-        //临时测试
+        //点击确认的时候需要
         itemBinding.stepLayout.setDebouncedClickListener {
             if (viewModel.workflowSteps.find { it.stepIndex == item.stepStatus.toInt() }?.enableSetLocker == true ||
                 viewModel.workflowSteps.find { it.stepIndex == item.stepStatus.toInt() }?.enableSetColocker == true ||
@@ -168,6 +188,18 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
                         R.mipmap.icon_data_manage_menu_point_manage
                     )
                 navController.navigate(R.id.action_jobExecuteFragment_to_selectMemberFragment)
+            } else if (viewModel.workflowSteps.find { it.stepIndex == item.stepStatus.toInt() }?.confirmType == 0 &&
+                viewModel.workflowSteps.find { it.stepIndex == item.stepStatus.toInt() }?.confirmRoleCode == null &&
+                viewModel.workflowSteps.find { it.stepIndex == item.stepStatus.toInt() }?.confirmUser == null
+            ) {
+                item.stepStatus = "1"
+                viewModel.updateStepStatus(item).observe(this@JobExecuteFragment) {
+                    if (it == false) {
+                        PopTip.tip(R.string.step_confirm_failed)
+                    } else {
+                        adapter.notifyDataSetChanged()
+                    }
+                }
             }
         }
     }
@@ -184,15 +216,40 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
         }
     }
 
-    private fun getStepIcon(stepIndex: Int): Int {
+    private fun getStepIcon(workflowStep: WorkflowStep?): Int {
+        if (workflowStep == null) {
+            return 0
+        }
         return when {
-            (viewModel.workflowSteps.find { it.stepIndex == stepIndex }?.enableSetLocker == true || viewModel.workflowSteps.find { it.stepIndex == stepIndex }?.enableSetColocker == true) -> R.drawable.icon_select_member
-            viewModel.workflowSteps.find { it.stepIndex == stepIndex }?.enableLock == true -> R.drawable.icon_ticket_lock
-            viewModel.workflowSteps.find { it.stepIndex == stepIndex }?.enableColock == true -> R.drawable.icon_ticket_colock
-            viewModel.workflowSteps.find { it.stepIndex == stepIndex }?.enableUnlock == true -> R.drawable.icon_ticket_unlock
-            else -> {
-                0
-            }
+            workflowStep.stepTitleShort?.contains(
+                CommonUtils.getStr(com.grkj.ui_base.R.string.recognize_work_content).toString()
+            ) == true -> R.mipmap.icon_loto_step_1
+
+            workflowStep.stepTitleShort?.contains(
+                CommonUtils.getStr(com.grkj.ui_base.R.string.power_isolation_way).toString()
+            ) == true -> R.mipmap.icon_loto_step_2
+
+            workflowStep.stepTitleShort?.contains(
+                CommonUtils.getStr(com.grkj.ui_base.R.string.shutdown).toString()
+            ) == true -> R.mipmap.icon_loto_step_4
+
+            workflowStep.stepTitleShort?.contains(
+                CommonUtils.getStr(com.grkj.ui_base.R.string.ensure_power_isolation).toString()
+            ) == true -> R.mipmap.icon_loto_step_6
+
+            workflowStep.stepTitleShort?.contains(
+                CommonUtils.getStr(com.grkj.ui_base.R.string.check_before_unlocking).toString()
+            ) == true -> R.mipmap.icon_loto_step_7
+
+            workflowStep.stepTitleShort?.contains(
+                CommonUtils.getStr(com.grkj.ui_base.R.string.unlock_and_restore_switch).toString()
+            ) == true -> R.mipmap.icon_loto_step_8
+
+            workflowStep.enableSetLocker || workflowStep.enableSetColocker -> R.mipmap.icon_step_select_member
+            workflowStep.enableLock -> R.mipmap.icon_step_lock
+            workflowStep.enableColock -> R.mipmap.icon_step_colock
+            workflowStep.enableUnlock -> R.mipmap.icon_step_unlock
+            else -> 0
         }
     }
 
@@ -354,8 +411,6 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
                     binding.stepRv.models = viewModel.ticketStep
                     viewModel.currentStepData =
                         viewModel.ticketStep.firstOrNull { it.stepStatus == "0" }
-                    binding.spaceView.isVisible =
-                        viewModel.workflowModes.find { it.modeId == viewModel.ticketData?.modeId }?.isColockSupport == false
                     binding.colockerLayout.isVisible =
                         viewModel.workflowModes.find { it.modeId == viewModel.ticketData?.modeId }?.isColockSupport == true
                     refreshTicketUser()

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

@@ -21,6 +21,7 @@ import com.grkj.iscs.features.main.entity.MenuItemEntity
 import com.grkj.iscs.features.main.viewmodel.job_manage.JobManageHomeViewModel
 import com.grkj.ui_base.base.BaseFragment
 import com.grkj.ui_base.utils.CommonUtils
+import com.grkj.ui_base.utils.GraphicUtils
 import com.grkj.ui_base.utils.event.BottomNavVisibilityEvent
 import dagger.hilt.android.AndroidEntryPoint
 
@@ -108,19 +109,24 @@ class JobManageHomeFragment : BaseFragment<FragmentJobManageHomeBinding>() {
         itemBinding.homeMenuTv.text = item.menuText
         if (item.badgeNum != 0) {
             if (item.badgeDrawable == null) {
-                item.badgeDrawable = BadgeDrawable.create(requireContext())
+                item.badgeDrawable =
+                    BadgeDrawable.createFromResource(requireContext(), R.xml.badge_style)
             }
             item.badgeDrawable?.apply {
                 badgeGravity = BadgeDrawable.TOP_END
                 number = item.badgeNum
                 backgroundColor = CommonUtils.getColor(com.grkj.ui_base.R.color.common_status_red)
                 isVisible = item.badgeNum > 0
+                this.text
                 itemBinding.homeMenuLayout.post {
                     BadgeUtils.attachBadgeDrawable(
                         this,
                         itemBinding.homeMenuLayout,
                         itemBinding.homeMenuLayout
                     )
+                    itemBinding.homeMenuLayout.post {
+                        GraphicUtils.adjustBadgeSize(this)
+                    }
                 }
             }
         }

+ 120 - 0
app/src/main/java/com/grkj/iscs/features/main/viewmodel/common/WorkflowSettingViewModel.kt

@@ -0,0 +1,120 @@
+package com.grkj.iscs.features.main.viewmodel.common
+
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.liveData
+import com.grkj.data.enums.WorkflowStepConfirmTypeEnum
+import com.grkj.data.model.dos.SysRole
+import com.grkj.data.model.dos.WorkflowStep
+import com.grkj.data.model.vo.SysUserVo
+import com.grkj.data.repository.IRoleRepository
+import com.grkj.data.repository.IUserRepository
+import com.grkj.data.repository.IWorkflowRepository
+import com.grkj.iscs.R
+import com.grkj.ui_base.base.BaseViewModel
+import com.grkj.ui_base.utils.CommonUtils
+import com.sik.sikcore.SIKCore
+import dagger.hilt.android.lifecycle.HiltViewModel
+import kotlinx.coroutines.Dispatchers
+import javax.inject.Inject
+
+/**
+ * 流程设置
+ */
+@HiltViewModel
+class WorkflowSettingViewModel @Inject constructor(
+    val workflowRepository: IWorkflowRepository,
+    val userRepository: IUserRepository,
+    val roleRepository: IRoleRepository
+) : BaseViewModel() {
+    var modeId: Long = 0
+    var workflowSteps: List<WorkflowStep> = mutableListOf()
+    var currentStep: WorkflowStep? = null
+    var currentConfirmType: WorkflowStepConfirmTypeEnum = WorkflowStepConfirmTypeEnum.AUTO_CONFIRM
+    var currentConfirmRole: String? = null
+    var currentConfirmMember: Long? = null
+    var allUser: List<SysUserVo> = listOf()
+    var allRole: List<SysRole> = listOf()
+    val stepFunction: MutableList<String> = mutableListOf()
+
+
+    /**
+     * 获取流程模式步骤
+     */
+    fun getWorkflowSteps(modeId: Long = this.modeId): LiveData<Boolean> {
+        return liveData(Dispatchers.IO) {
+            workflowSteps = workflowRepository.getStepsByMode(modeId)
+            emit(true)
+        }
+    }
+
+    /**
+     * 获取设置需要的数据比如角色,用户什么的
+     */
+    fun getSettingData(): LiveData<Boolean> {
+        return liveData(Dispatchers.IO) {
+            allUser = userRepository.getAllUsersWithRole()
+            allRole = roleRepository.getRoleData()
+            emit(true)
+        }
+    }
+
+    /**
+     * 检查并设置步骤功能
+     */
+    fun checkAndSetStepFunction(): List<String> {
+        stepFunction.clear()
+        if (currentStep?.enableCancelJob == true) {
+            stepFunction.add(CommonUtils.getStr(R.string.cancel_job).toString())
+        }
+        if (currentStep?.enableSetLocker == true) {
+            stepFunction.add(CommonUtils.getStr(R.string.set_locker).toString())
+        }
+        if (currentStep?.enableSetColocker == true) {
+            stepFunction.add(CommonUtils.getStr(R.string.set_colocker).toString())
+        }
+        if (currentStep?.enableLock == true) {
+            stepFunction.add(CommonUtils.getStr(R.string.lock).toString())
+        }
+        if (currentStep?.enableColock == true) {
+            stepFunction.add(CommonUtils.getStr(R.string.colock).toString())
+        }
+        if (currentStep?.enableAddColocker == true) {
+            val str = SIKCore.getApplication().getString(
+                R.string.add_colocker,
+                if (currentStep?.gotoStepAfterAddingColocker == null) CommonUtils.getStr(R.string.no_goto_step) else SIKCore.getApplication()
+                    .getString(R.string.navigate_to_step, currentStep?.gotoStepAfterAddingColocker)
+            )
+            stepFunction.add(str)
+        }
+        if (currentStep?.enableReduceColocker == true) {
+            val str = SIKCore.getApplication().getString(
+                R.string.reduce_colocker,
+                if (currentStep?.gotoStepAfterAddingColocker == null) CommonUtils.getStr(R.string.no_goto_step) else SIKCore.getApplication()
+                    .getString(R.string.navigate_to_step, currentStep?.gotoStepAfterAddingColocker)
+            )
+            stepFunction.add(str)
+        }
+        if (currentStep?.enableReleaseColock == true) {
+            stepFunction.add(CommonUtils.getStr(R.string.release_colocker).toString())
+        }
+        if (currentStep?.enableUnlock == true) {
+            stepFunction.add(CommonUtils.getStr(R.string.unlock).toString())
+        }
+        if (currentStep?.enableEndJob == true) {
+            stepFunction.add(CommonUtils.getStr(R.string.end_job).toString())
+        }
+        return stepFunction
+    }
+
+    /**
+     * 保存滁州数据
+     */
+    fun saveStepsData(): LiveData<Boolean> {
+        return liveData(Dispatchers.IO) {
+            workflowSteps.forEach {
+                workflowRepository.updateStep(it)
+            }
+            emit(true)
+        }
+    }
+}

+ 50 - 28
app/src/main/java/com/grkj/iscs/features/main/viewmodel/job_manage/JobExecuteViewModel.kt

@@ -3,6 +3,7 @@ package com.grkj.iscs.features.main.viewmodel.job_manage
 import androidx.lifecycle.LiveData
 import androidx.lifecycle.liveData
 import com.grkj.data.enums.RoleEnum
+import com.grkj.data.model.dos.IsJobTicketStep
 import com.grkj.data.model.dos.WorkflowMode
 import com.grkj.data.model.dos.WorkflowStep
 import com.grkj.data.model.local.DeviceTakeUpdate
@@ -26,6 +27,7 @@ import com.grkj.ui_base.utils.event.LoadingEvent
 import com.grkj.ui_base.utils.modbus.DeviceConst
 import com.grkj.ui_base.utils.modbus.ModBusController
 import com.kongzue.dialogx.dialogs.PopTip
+import com.sik.sikcore.data.BeanUtils
 import dagger.hilt.android.lifecycle.HiltViewModel
 import javax.inject.Inject
 import kotlinx.coroutines.Dispatchers
@@ -36,10 +38,8 @@ import java.util.concurrent.atomic.AtomicInteger
  */
 @HiltViewModel
 class JobExecuteViewModel @Inject constructor(
-    val jobTicketRepository: IJobTicketRepository,
-    val workflowRepository: IWorkflowRepository
-) :
-    BaseViewModel() {
+    val jobTicketRepository: IJobTicketRepository, val workflowRepository: IWorkflowRepository
+) : BaseViewModel() {
     var ticketId: Long = 0
     var ticketData: IsJobTicketDataVo? = null
     lateinit var ticketKey: List<IsJobTicketKeyDataVo>
@@ -75,10 +75,7 @@ class JobExecuteViewModel @Inject constructor(
                 tempJobTicketUserId.filter { it.roleKeys.contains(RoleEnum.JTLOCKER.roleKey) }
             selecteColockerData =
                 tempJobTicketUserId.filter { it.roleKeys.contains(RoleEnum.JTCOLOCKER.roleKey) }
-            ticketStep.sortedBy { it.stepId }
-            ticketStep.forEach {
-                it.position = ticketStep.indexOfFirst { stepVo -> it.stepId == stepVo.stepId }
-            }
+            ticketStep.sortedBy { it.stepIndex }
             currentStepData = ticketStep.firstOrNull()
             emit(true)
         }
@@ -94,8 +91,7 @@ class JobExecuteViewModel @Inject constructor(
             )
             ticketStep = jobTicketRepository.getJobTicketStepDataByTicketId(ticketId)
             jobTicketRepository.updateTicketDataStatus(
-                ticketId,
-                (ticketStep.firstOrNull { it.stepStatus == "0" }?.stepIndex ?: -1) + 1
+                ticketId, (ticketStep.firstOrNull { it.stepStatus == "0" }?.stepIndex ?: -1) + 1
             )
             emit(true)
         }
@@ -142,8 +138,7 @@ class JobExecuteViewModel @Inject constructor(
                         },
                         onCancelClick = {
                             LoadingEvent.sendLoadingEvent()
-                        }
-                    )
+                        })
                     return@checkEquipCount
                 }
                 if (keyMap == null) {
@@ -157,8 +152,7 @@ class JobExecuteViewModel @Inject constructor(
                         },
                         onCancelClick = {
                             LoadingEvent.sendLoadingEvent()
-                        }
-                    )
+                        })
                     return@checkEquipCount
                 } else {
                     ModbusBusinessManager.addDeviceTake(
@@ -181,12 +175,10 @@ class JobExecuteViewModel @Inject constructor(
                             if (openedLockDockSize.get() >= waitOpenLockDockSize) {
                                 LoadingEvent.sendLoadingEvent(
                                     CommonUtils.getStr(
-                                        com.grkj.ui_base.R.string.take_out_lock_tip,
-                                        args = listOf(
+                                        com.grkj.ui_base.R.string.take_out_lock_tip, args = listOf(
                                             lockMap.values.flatten().count().toInt()
                                         ).toTypedArray()
-                                    ),
-                                    true
+                                    ), true
                                 )
                             }
                         }
@@ -216,14 +208,10 @@ class JobExecuteViewModel @Inject constructor(
                         return@checkEquipCount
                     }
                     ModbusBusinessManager.addDeviceTake(
-                        DeviceConst.DEVICE_TYPE_KEY,
-                        ticketId,
-                        keyMap.second?.rfid!!
+                        DeviceConst.DEVICE_TYPE_KEY, ticketId, keyMap.second?.rfid!!
                     )
                     val deviceTakeUpdate = DeviceTakeUpdate(
-                        DeviceConst.DEVICE_TYPE_KEY,
-                        ticketId,
-                        keyMap.second?.rfid ?: ""
+                        DeviceConst.DEVICE_TYPE_KEY, ticketId, keyMap.second?.rfid ?: ""
                     )
                     BleBusinessManager.handleGiveKey(deviceTakeUpdate)
                 }
@@ -282,9 +270,25 @@ class JobExecuteViewModel @Inject constructor(
     /**
      * 获取流程步骤列表
      */
-    fun getWorkflowSteps(modeId: Long): LiveData<Boolean>{
-        return liveData(Dispatchers.IO){
+    fun getWorkflowSteps(modeId: Long): LiveData<Boolean> {
+        return liveData(Dispatchers.IO) {
             workflowSteps = workflowRepository.getStepsByMode(modeId)
+            for (stepDataVo in ticketStep) {
+                if (workflowSteps.find { it.stepId == stepDataVo.workflowStepId }?.confirmType != 0) {
+                    stepDataVo.stepStatus = "1"
+                    BeanUtils.copyProperties(
+                        stepDataVo, IsJobTicketStep::class.java
+                    )?.let {
+                        jobTicketRepository.updateTicketStepData(it)
+                        ticketData?.ticketStatus = (stepDataVo.stepIndex + 1).toString()
+                        jobTicketRepository.updateTicketDataStatus(
+                            ticketId, stepDataVo.stepIndex + 1
+                        )
+                    }
+                } else if (workflowSteps.find { it.stepId == stepDataVo.workflowStepId }?.confirmType != 0) {
+                    break
+                }
+            }
             emit(true)
         }
     }
@@ -292,10 +296,28 @@ class JobExecuteViewModel @Inject constructor(
     /**
      * 是否解锁优先
      */
-    fun isUnlockFirst(modeId: Long): LiveData<Boolean>{
-        return liveData(Dispatchers.IO){
+    fun isUnlockFirst(modeId: Long): LiveData<Boolean> {
+        return liveData(Dispatchers.IO) {
             isUnlockFirst = workflowRepository.isUnlockBeforeLock(modeId)
             emit(true)
         }
     }
+
+    /**
+     * 更新步骤状态(点击确认的时候需要)
+     */
+    fun updateStepStatus(jobTicketStepDataVo: IsJobTicketStepDataVo): LiveData<Boolean> {
+        return liveData(Dispatchers.IO) {
+            val ticketStepData = BeanUtils.copyProperties(
+                jobTicketStepDataVo, IsJobTicketStep::class.java
+            )
+            ticketStepData?.let {
+                jobTicketRepository.updateTicketStepData(it)
+                jobTicketRepository.updateTicketDataStatus(
+                    ticketId, ticketData?.ticketStatus?.toInt()!! + 1
+                )
+                emit(true)
+            } ?: emit(false)
+        }
+    }
 }

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

@@ -38,8 +38,10 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() {
         DialogX.titleTextInfo = dialogXTextInfo
         StartModbusEvent.sendStartModbusEvent()
         //todo 测试用,直接进入,不初始化
-        startActivity(Intent(this, LoginActivity::class.java))
-        finish()
+        viewModel.checkSysMenuAndRole().observe(this) {
+            startActivity(Intent(this, LoginActivity::class.java))
+            finish()
+        }
 //        viewModel.checkSysMenuAndRole().observe(this) {
 //            val isAppInit = MMKVConstants.APP_INIT.getMMKVData(false)
 //            if (isAppInit) {

+ 1 - 1
app/src/main/res/drawable-land/bg_job_execute_step.xml

@@ -2,7 +2,7 @@
 <shape xmlns:android="http://schemas.android.com/apk/res/android"
     android:shape="rectangle">
     <corners android:radius="@dimen/common_spacing_2x" />
-    <solid android:color="@color/white" />
+    <solid android:color="@color/color_e9ecf4" />
     <stroke
         android:width="2dp"
         android:color="@color/black" />

+ 1 - 0
app/src/main/res/drawable/bg_common_input_disable.xml

@@ -4,4 +4,5 @@
         android:width="@dimen/divider_line_space"
         android:color="@color/black" />
     <solid android:color="@color/common_light_gray" />
+    <corners android:radius="4dp" />
 </shape>

+ 2 - 0
app/src/main/res/drawable/bg_common_input_normal.xml

@@ -3,4 +3,6 @@
     <stroke
         android:width="@dimen/divider_line_space"
         android:color="@color/black" />
+    <solid android:color="@color/white" />
+    <corners android:radius="4dp" />
 </shape>

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

@@ -2,7 +2,7 @@
 <shape xmlns:android="http://schemas.android.com/apk/res/android"
     android:shape="rectangle">
     <corners android:radius="@dimen/common_spacing_2x" />
-    <solid android:color="@color/white" />
+    <solid android:color="@color/color_e9ecf4" />
     <stroke
         android:width="2dp"
         android:color="@color/black" />

+ 1 - 0
app/src/main/res/drawable/home_card_bg.xml

@@ -5,4 +5,5 @@
         android:width="@dimen/divider_line_space"
         android:color="@color/black" />
     <solid android:color="@color/color_e9ecf4" />
+    <corners android:radius="2dp" />
 </shape>

+ 2 - 2
app/src/main/res/drawable/icon_select_member.xml

@@ -2,10 +2,10 @@
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <!-- 按下(或选中)时 -->
     <item android:state_selected="true">
-        <bitmap android:gravity="center" android:src="@mipmap/icon_data_manage_menu_user_manage" android:tint="@color/black" android:tintMode="src_in" />
+        <bitmap android:gravity="center" android:src="@mipmap/icon_selected_member"/>
     </item>
     <!-- 默认状态 -->
     <item>
-        <bitmap android:gravity="center" android:src="@mipmap/icon_data_manage_menu_user_manage" android:tintMode="src_in" />
+        <bitmap android:gravity="center" android:src="@mipmap/icon_unselect_member" />
     </item>
 </selector>

+ 19 - 21
app/src/main/res/layout-land/fragment_create_job.xml

@@ -14,13 +14,12 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
-                android:src="@mipmap/icon_data_manage_menu_user_manage" />
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
+                android:src="@mipmap/icon_job_manage_create_job" />
 
             <TextView
                 android:layout_width="match_parent"
@@ -29,7 +28,8 @@
                 android:layout_weight="1"
                 android:text="@string/create_job_title"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textStyle="bold"
+                android:textSize="@dimen/normal_text_size_25" />
 
             <TextView
                 android:id="@+id/back"
@@ -217,8 +217,7 @@
                             android:id="@+id/workflow_mode_setting_tv"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:layout_marginLeft="@dimen/common_spacing"
-                            android:layout_marginRight="@dimen/common_spacing"
+                            android:layout_margin="@dimen/common_spacing"
                             android:background="@drawable/common_btn"
                             android:paddingHorizontal="@dimen/common_spacing_2x"
                             android:text="@string/settings"
@@ -239,7 +238,9 @@
                         <androidx.recyclerview.widget.RecyclerView
                             android:id="@+id/workflow_rv"
                             android:layout_width="match_parent"
-                            android:layout_height="match_parent"/>
+                            android:layout_height="match_parent"
+                            android:scrollbars="horizontal"
+                            android:paddingHorizontal="@dimen/common_spacing"/>
 
                         <TextView
                             android:id="@+id/select_workflow_tip"
@@ -291,8 +292,7 @@
                             android:id="@+id/select_point_tv"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:layout_marginLeft="@dimen/common_spacing"
-                            android:layout_marginRight="@dimen/common_spacing"
+                            android:layout_margin="@dimen/common_spacing"
                             android:background="@drawable/common_btn"
                             android:paddingHorizontal="@dimen/common_spacing_2x"
                             android:text="@string/select"
@@ -324,8 +324,8 @@
                             android:orientation="vertical">
 
                             <ImageView
-                                android:layout_width="80dp"
-                                android:layout_height="80dp"
+                                android:layout_width="@dimen/icon_add_point_or_member_size"
+                                android:layout_height="@dimen/icon_add_point_or_member_size"
                                 android:src="@drawable/icon_add_box" />
 
                             <TextView
@@ -371,8 +371,7 @@
                             android:id="@+id/select_member_tv"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:layout_marginLeft="@dimen/common_spacing"
-                            android:layout_marginRight="@dimen/common_spacing"
+                            android:layout_margin="@dimen/common_spacing"
                             android:background="@drawable/common_btn"
                             android:paddingHorizontal="@dimen/common_spacing_2x"
                             android:text="@string/select"
@@ -424,11 +423,10 @@
                                     android:paddingBottom="@dimen/common_spacing">
 
                                     <ImageView
-                                        android:layout_width="50dp"
-                                        android:layout_height="50dp"
+                                        android:layout_width="@dimen/icon_member_size"
+                                        android:layout_height="@dimen/icon_member_size"
                                         android:layout_marginTop="@dimen/common_spacing"
-                                        android:src="@mipmap/icon_data_manage_menu_user_manage"
-                                        android:tint="@color/black" />
+                                        android:src="@mipmap/icon_selected_member" />
 
                                     <TextView
                                         android:id="@+id/locker_name"
@@ -480,8 +478,8 @@
                             android:orientation="vertical">
 
                             <ImageView
-                                android:layout_width="80dp"
-                                android:layout_height="80dp"
+                                android:layout_width="@dimen/icon_add_point_or_member_size"
+                                android:layout_height="@dimen/icon_add_point_or_member_size"
                                 android:src="@drawable/icon_add_box" />
 
                             <TextView

+ 19 - 21
app/src/main/res/layout-land/fragment_create_sop.xml

@@ -14,13 +14,12 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
-                android:src="@mipmap/icon_data_manage_menu_user_manage" />
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
+                android:src="@mipmap/icon_job_manage_create_sop" />
 
             <TextView
                 android:layout_width="match_parent"
@@ -29,7 +28,8 @@
                 android:layout_weight="1"
                 android:text="@string/create_sop_title"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textStyle="bold"
+                android:textSize="@dimen/normal_text_size_25" />
 
             <TextView
                 android:id="@+id/back"
@@ -216,8 +216,7 @@
                             android:id="@+id/workflow_mode_setting_tv"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:layout_marginLeft="@dimen/common_spacing"
-                            android:layout_marginRight="@dimen/common_spacing"
+                            android:layout_margin="@dimen/common_spacing"
                             android:background="@drawable/common_btn"
                             android:paddingHorizontal="@dimen/common_spacing_2x"
                             android:text="@string/settings"
@@ -238,7 +237,9 @@
                         <androidx.recyclerview.widget.RecyclerView
                             android:id="@+id/workflow_rv"
                             android:layout_width="match_parent"
-                            android:layout_height="match_parent" />
+                            android:layout_height="match_parent"
+                            android:scrollbars="horizontal"
+                            android:paddingHorizontal="@dimen/common_spacing" />
 
                         <TextView
                             android:id="@+id/select_workflow_tip"
@@ -291,8 +292,7 @@
                             android:id="@+id/select_point_tv"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:layout_marginLeft="@dimen/common_spacing"
-                            android:layout_marginRight="@dimen/common_spacing"
+                            android:layout_margin="@dimen/common_spacing"
                             android:background="@drawable/common_btn"
                             android:paddingHorizontal="@dimen/common_spacing_2x"
                             android:text="@string/select"
@@ -324,8 +324,8 @@
                             android:orientation="vertical">
 
                             <ImageView
-                                android:layout_width="80dp"
-                                android:layout_height="80dp"
+                                android:layout_width="@dimen/icon_add_point_or_member_size"
+                                android:layout_height="@dimen/icon_add_point_or_member_size"
                                 android:src="@drawable/icon_add_box" />
 
                             <TextView
@@ -371,8 +371,7 @@
                             android:id="@+id/select_member_tv"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:layout_marginLeft="@dimen/common_spacing"
-                            android:layout_marginRight="@dimen/common_spacing"
+                            android:layout_margin="@dimen/common_spacing"
                             android:background="@drawable/common_btn"
                             android:paddingHorizontal="@dimen/common_spacing_2x"
                             android:text="@string/select"
@@ -424,11 +423,10 @@
                                     android:paddingBottom="@dimen/common_spacing">
 
                                     <ImageView
-                                        android:layout_width="50dp"
-                                        android:layout_height="50dp"
+                                        android:layout_width="@dimen/icon_member_size"
+                                        android:layout_height="@dimen/icon_member_size"
                                         android:layout_marginTop="@dimen/common_spacing"
-                                        android:src="@mipmap/icon_data_manage_menu_user_manage"
-                                        android:tint="@color/black" />
+                                        android:src="@mipmap/icon_selected_member"/>
 
                                     <TextView
                                         android:id="@+id/locker_name"
@@ -480,8 +478,8 @@
                             android:orientation="vertical">
 
                             <ImageView
-                                android:layout_width="80dp"
-                                android:layout_height="80dp"
+                                android:layout_width="@dimen/icon_add_point_or_member_size"
+                                android:layout_height="@dimen/icon_add_point_or_member_size"
                                 android:src="@drawable/icon_add_box" />
 
                             <TextView

+ 14 - 15
app/src/main/res/layout-land/fragment_create_sop_job.xml

@@ -14,13 +14,12 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
-                android:src="@mipmap/icon_data_manage_menu_user_manage" />
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
+                android:src="@mipmap/icon_job_manage_create_job" />
 
             <TextView
                 android:layout_width="match_parent"
@@ -29,7 +28,8 @@
                 android:layout_weight="1"
                 android:text="@string/create_sop_job_title"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textStyle="bold"
+                android:textSize="@dimen/normal_text_size_25" />
 
             <TextView
                 android:id="@+id/back"
@@ -217,8 +217,7 @@
                             android:id="@+id/workflow_mode_setting_tv"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:layout_marginLeft="@dimen/common_spacing"
-                            android:layout_marginRight="@dimen/common_spacing"
+                            android:layout_margin="@dimen/common_spacing"
                             android:background="@drawable/common_btn"
                             android:paddingHorizontal="@dimen/common_spacing_2x"
                             android:text="@string/settings"
@@ -239,7 +238,9 @@
                         <androidx.recyclerview.widget.RecyclerView
                             android:id="@+id/workflow_rv"
                             android:layout_width="match_parent"
-                            android:layout_height="match_parent" />
+                            android:layout_height="match_parent"
+                            android:scrollbars="horizontal"
+                            android:paddingHorizontal="@dimen/common_spacing" />
 
                         <TextView
                             android:id="@+id/select_workflow_tip"
@@ -355,8 +356,7 @@
                             android:id="@+id/select_member_tv"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:layout_marginLeft="@dimen/common_spacing"
-                            android:layout_marginRight="@dimen/common_spacing"
+                            android:layout_margin="@dimen/common_spacing"
                             android:background="@drawable/common_btn"
                             android:paddingHorizontal="@dimen/common_spacing_2x"
                             android:text="@string/select"
@@ -408,11 +408,10 @@
                                     android:paddingBottom="@dimen/common_spacing">
 
                                     <ImageView
-                                        android:layout_width="50dp"
-                                        android:layout_height="50dp"
+                                        android:layout_width="@dimen/icon_member_size"
+                                        android:layout_height="@dimen/icon_member_size"
                                         android:layout_marginTop="@dimen/common_spacing"
-                                        android:src="@mipmap/icon_data_manage_menu_user_manage"
-                                        android:tint="@color/black" />
+                                        android:src="@mipmap/icon_selected_member" />
 
                                     <TextView
                                         android:id="@+id/locker_name"

+ 15 - 17
app/src/main/res/layout-land/fragment_edit_job.xml

@@ -14,13 +14,12 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
-                android:src="@mipmap/icon_data_manage_menu_user_manage" />
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
+                android:src="@mipmap/icon_job_manage_create_job" />
 
             <TextView
                 android:layout_width="match_parent"
@@ -29,7 +28,8 @@
                 android:layout_weight="1"
                 android:text="@string/edit_job_title"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textStyle="bold"
+                android:textSize="@dimen/normal_text_size_25" />
 
             <TextView
                 android:id="@+id/back"
@@ -217,8 +217,7 @@
                             android:id="@+id/workflow_mode_setting_tv"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:layout_marginLeft="@dimen/common_spacing"
-                            android:layout_marginRight="@dimen/common_spacing"
+                            android:layout_margin="@dimen/common_spacing"
                             android:background="@drawable/common_btn"
                             android:paddingHorizontal="@dimen/common_spacing_2x"
                             android:text="@string/settings"
@@ -239,7 +238,9 @@
                         <androidx.recyclerview.widget.RecyclerView
                             android:id="@+id/workflow_rv"
                             android:layout_width="match_parent"
-                            android:layout_height="match_parent" />
+                            android:layout_height="match_parent"
+                            android:scrollbars="horizontal"
+                            android:paddingHorizontal="@dimen/common_spacing" />
 
                         <TextView
                             android:id="@+id/select_workflow_tip"
@@ -291,8 +292,7 @@
                             android:id="@+id/select_point_tv"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:layout_marginLeft="@dimen/common_spacing"
-                            android:layout_marginRight="@dimen/common_spacing"
+                            android:layout_margin="@dimen/common_spacing"
                             android:background="@drawable/common_btn"
                             android:paddingHorizontal="@dimen/common_spacing_2x"
                             android:text="@string/select"
@@ -342,8 +342,7 @@
                             android:id="@+id/select_member_tv"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:layout_marginLeft="@dimen/common_spacing"
-                            android:layout_marginRight="@dimen/common_spacing"
+                            android:layout_margin="@dimen/common_spacing"
                             android:background="@drawable/common_btn"
                             android:paddingHorizontal="@dimen/common_spacing_2x"
                             android:text="@string/select"
@@ -392,11 +391,10 @@
                                 android:paddingBottom="@dimen/common_spacing">
 
                                 <ImageView
-                                    android:layout_width="50dp"
-                                    android:layout_height="50dp"
+                                    android:layout_width="@dimen/icon_member_size"
+                                    android:layout_height="@dimen/icon_member_size"
                                     android:layout_marginTop="@dimen/common_spacing"
-                                    android:src="@mipmap/icon_data_manage_menu_user_manage"
-                                    android:tint="@color/black" />
+                                    android:src="@mipmap/icon_selected_member"/>
 
                                 <TextView
                                     android:id="@+id/locker_name"

+ 15 - 17
app/src/main/res/layout-land/fragment_edit_sop.xml

@@ -14,13 +14,12 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
-                android:src="@mipmap/icon_data_manage_menu_user_manage" />
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
+                android:src="@mipmap/icon_job_manage_create_sop" />
 
             <TextView
                 android:layout_width="match_parent"
@@ -29,7 +28,8 @@
                 android:layout_weight="1"
                 android:text="@string/edit_sop_title"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textStyle="bold"
+                android:textSize="@dimen/normal_text_size_25" />
 
             <TextView
                 android:id="@+id/back"
@@ -211,8 +211,7 @@
                             android:id="@+id/workflow_mode_setting_tv"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:layout_marginLeft="@dimen/common_spacing"
-                            android:layout_marginRight="@dimen/common_spacing"
+                            android:layout_margin="@dimen/common_spacing"
                             android:background="@drawable/common_btn"
                             android:paddingHorizontal="@dimen/common_spacing_2x"
                             android:text="@string/settings"
@@ -233,7 +232,9 @@
                         <androidx.recyclerview.widget.RecyclerView
                             android:id="@+id/workflow_rv"
                             android:layout_width="match_parent"
-                            android:layout_height="match_parent" />
+                            android:layout_height="match_parent"
+                            android:scrollbars="horizontal"
+                            android:paddingHorizontal="@dimen/common_spacing" />
 
                         <TextView
                             android:id="@+id/select_workflow_tip"
@@ -285,8 +286,7 @@
                             android:id="@+id/select_point_tv"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:layout_marginLeft="@dimen/common_spacing"
-                            android:layout_marginRight="@dimen/common_spacing"
+                            android:layout_margin="@dimen/common_spacing"
                             android:background="@drawable/common_btn"
                             android:paddingHorizontal="@dimen/common_spacing_2x"
                             android:text="@string/select"
@@ -337,8 +337,7 @@
                             android:id="@+id/select_member_tv"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:layout_marginLeft="@dimen/common_spacing"
-                            android:layout_marginRight="@dimen/common_spacing"
+                            android:layout_margin="@dimen/common_spacing"
                             android:background="@drawable/common_btn"
                             android:paddingHorizontal="@dimen/common_spacing_2x"
                             android:text="@string/select"
@@ -386,11 +385,10 @@
                                 android:paddingBottom="@dimen/common_spacing">
 
                                 <ImageView
-                                    android:layout_width="50dp"
-                                    android:layout_height="50dp"
+                                    android:layout_width="@dimen/icon_member_size"
+                                    android:layout_height="@dimen/icon_member_size"
                                     android:layout_marginTop="@dimen/common_spacing"
-                                    android:src="@mipmap/icon_data_manage_menu_user_manage"
-                                    android:tint="@color/black" />
+                                    android:src="@mipmap/icon_selected_member" />
 
                                 <TextView
                                     android:id="@+id/locker_name"

+ 14 - 15
app/src/main/res/layout-land/fragment_edit_sop_job.xml

@@ -14,13 +14,12 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
-                android:src="@mipmap/icon_data_manage_menu_user_manage" />
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
+                android:src="@mipmap/icon_job_manage_create_job" />
 
             <TextView
                 android:layout_width="match_parent"
@@ -29,7 +28,8 @@
                 android:layout_weight="1"
                 android:text="@string/edit_sop_job_title"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textStyle="bold"
+                android:textSize="@dimen/normal_text_size_25" />
 
             <TextView
                 android:id="@+id/back"
@@ -212,8 +212,7 @@
                             android:id="@+id/workflow_mode_setting_tv"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:layout_marginLeft="@dimen/common_spacing"
-                            android:layout_marginRight="@dimen/common_spacing"
+                            android:layout_margin="@dimen/common_spacing"
                             android:background="@drawable/common_btn"
                             android:paddingHorizontal="@dimen/common_spacing_2x"
                             android:text="@string/settings"
@@ -234,7 +233,9 @@
                         <androidx.recyclerview.widget.RecyclerView
                             android:id="@+id/workflow_rv"
                             android:layout_width="match_parent"
-                            android:layout_height="match_parent" />
+                            android:layout_height="match_parent"
+                            android:scrollbars="horizontal"
+                            android:paddingHorizontal="@dimen/common_spacing" />
 
                         <TextView
                             android:id="@+id/select_workflow_tip"
@@ -325,8 +326,7 @@
                             android:id="@+id/select_member_tv"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:layout_marginLeft="@dimen/common_spacing"
-                            android:layout_marginRight="@dimen/common_spacing"
+                            android:layout_margin="@dimen/common_spacing"
                             android:background="@drawable/common_btn"
                             android:paddingHorizontal="@dimen/common_spacing_2x"
                             android:text="@string/select"
@@ -374,11 +374,10 @@
                                 android:paddingBottom="@dimen/common_spacing">
 
                                 <ImageView
-                                    android:layout_width="50dp"
-                                    android:layout_height="50dp"
+                                    android:layout_width="@dimen/icon_member_size"
+                                    android:layout_height="@dimen/icon_member_size"
                                     android:layout_marginTop="@dimen/common_spacing"
-                                    android:src="@mipmap/icon_data_manage_menu_user_manage"
-                                    android:tint="@color/black" />
+                                    android:src="@mipmap/icon_selected_member" />
 
                                 <TextView
                                     android:id="@+id/locker_name"

+ 313 - 177
app/src/main/res/layout-land/fragment_job_execute.xml

@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <layout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools">
 
     <LinearLayout
         android:layout_width="match_parent"
@@ -15,13 +16,12 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
-                android:src="@mipmap/icon_data_manage_menu_user_manage" />
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
+                android:src="@mipmap/icon_job_execute" />
 
             <TextView
                 android:id="@+id/job_name_tv"
@@ -31,7 +31,8 @@
                 android:layout_weight="1"
                 android:text="@string/job_manage_title"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textSize="@dimen/normal_text_size_25"
+                android:textStyle="bold" />
 
             <TextView
                 android:id="@+id/back"
@@ -55,197 +56,332 @@
             android:layout_height="@dimen/divider_line_space"
             android:background="@color/black" />
 
-        <androidx.recyclerview.widget.RecyclerView
-            android:id="@+id/step_rv"
+        <FrameLayout
+            android:id="@+id/full_screen_root_layout"
             android:layout_width="match_parent"
-            android:layout_height="@dimen/step_rv_height"
-            android:layout_marginHorizontal="@dimen/common_spacing"
-            android:layout_marginTop="@dimen/common_spacing_2x" />
+            android:layout_height="match_parent">
 
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="@dimen/point_header_height"
-            android:layout_marginHorizontal="@dimen/common_spacing_2x"
-            android:layout_marginTop="@dimen/common_spacing"
-            android:background="@drawable/common_card_bg"
-            android:divider="@drawable/divider_table"
-            android:showDividers="middle">
-
-            <TextView
-                android:layout_width="0dp"
+            <LinearLayout
+                android:layout_width="match_parent"
                 android:layout_height="match_parent"
-                android:layout_weight="1"
-                android:gravity="center"
-                android:text="@string/point_name_tv"
-                android:textSize="@dimen/common_text_size" />
+                android:orientation="vertical">
 
-            <TextView
-                android:layout_width="0dp"
-                android:layout_height="match_parent"
-                android:layout_weight="1"
-                android:gravity="center"
-                android:text="@string/point_manage_point_function"
-                android:textSize="@dimen/common_text_size" />
+                <androidx.recyclerview.widget.RecyclerView
+                    android:id="@+id/step_rv"
+                    android:layout_width="match_parent"
+                    android:layout_height="@dimen/step_rv_height"
+                    android:layout_marginHorizontal="@dimen/common_spacing"
+                    android:layout_marginTop="@dimen/common_spacing_2x" />
 
-            <TextView
-                android:layout_width="0dp"
-                android:layout_height="match_parent"
-                android:layout_weight="1"
-                android:gravity="center"
-                android:text="@string/lock_status"
-                android:textSize="@dimen/common_text_size" />
-        </LinearLayout>
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="60dp"
+                    android:layout_marginHorizontal="@dimen/common_spacing_2x"
+                    android:background="@drawable/common_card_bg"
+                    android:divider="@drawable/divider_table"
+                    android:gravity="center"
+                    android:orientation="horizontal"
+                    android:showDividers="middle">
 
-        <com.grkj.iscs.view.MaxHeightRecyclerView
-            android:id="@+id/list_rv"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginHorizontal="@dimen/common_spacing_2x"
-            android:background="@drawable/common_card_bg"
-            app:maxHeight="@dimen/point_rv_height" />
+                    <ImageView
+                        android:layout_width="@dimen/job_execute_info_size"
+                        android:layout_height="@dimen/job_execute_info_size"
+                        android:layout_marginHorizontal="@dimen/common_spacing"
+                        android:src="@mipmap/icon_job_execute_info" />
 
-        <LinearLayout
-            android:id="@+id/colocker_layout"
-            android:layout_width="match_parent"
-            android:layout_height="0dp"
-            android:layout_marginHorizontal="@dimen/common_spacing_2x"
-            android:layout_marginTop="@dimen/common_spacing"
-            android:layout_marginBottom="@dimen/common_spacing"
-            android:layout_weight="1"
-            android:divider="@drawable/divider_table"
-            android:orientation="vertical"
-            android:showDividers="middle"
-            android:visibility="gone">
+                    <RelativeLayout
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1">
 
-            <LinearLayout
-                android:layout_width="match_parent"
-                android:layout_height="@dimen/colocker_layout_height"
-                android:background="@drawable/common_card_bg"
-                android:divider="@drawable/divider_table"
-                android:showDividers="middle">
-
-                <TextView
-                    android:id="@+id/wait_to_colock"
-                    android:layout_width="0dp"
-                    android:layout_height="match_parent"
-                    android:layout_weight="1"
-                    android:gravity="center"
-                    android:text="@string/wait_to_colock"
-                    android:textSize="@dimen/common_text_size" />
+                        <TextView
+                            android:id="@+id/lock_tv"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_centerVertical="true"
+                            android:layout_toLeftOf="@+id/lock_iv"
+                            android:gravity="center"
+                            android:text="@string/job_execute_tab_title_lock"
+                            android:textSize="@dimen/common_text_size" />
 
-                <TextView
-                    android:id="@+id/already_colock"
-                    android:layout_width="0dp"
-                    android:layout_height="match_parent"
-                    android:layout_weight="1"
-                    android:gravity="center"
-                    android:text="@string/already_colock"
-                    android:textSize="@dimen/common_text_size" />
+                        <ImageView
+                            android:id="@+id/lock_iv"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_centerInParent="true"
+                            android:paddingHorizontal="@dimen/common_spacing"
+                            android:src="@mipmap/icon_job_execute_lock" />
+
+                        <TextView
+                            android:id="@+id/lock_info"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_centerVertical="true"
+                            android:layout_toRightOf="@+id/lock_iv"
+                            android:textSize="@dimen/common_text_size" />
+                    </RelativeLayout>
+
+
+                    <RelativeLayout
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1">
+
+                        <TextView
+                            android:id="@+id/colock_tv"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_centerVertical="true"
+                            android:layout_toLeftOf="@+id/colock_iv"
+                            android:gravity="center"
+                            android:text="@string/job_execute_tab_title_colock"
+                            android:textSize="@dimen/common_text_size" />
 
-                <TextView
-                    android:id="@+id/already_uncolock"
-                    android:layout_width="0dp"
+                        <ImageView
+                            android:id="@+id/colock_iv"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_centerInParent="true"
+                            android:paddingHorizontal="@dimen/common_spacing"
+                            android:src="@mipmap/icon_job_execute_colock" />
+
+                        <TextView
+                            android:id="@+id/colock_info"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_centerVertical="true"
+                            android:layout_toRightOf="@+id/colock_iv"
+                            android:textSize="@dimen/common_text_size" />
+                    </RelativeLayout>
+                </LinearLayout>
+
+                <LinearLayout
+                    android:id="@+id/data_layout"
+                    android:layout_width="match_parent"
                     android:layout_height="match_parent"
+                    android:layout_marginHorizontal="@dimen/common_spacing_2x"
+                    android:layout_marginTop="@dimen/common_spacing"
                     android:layout_weight="1"
-                    android:gravity="center"
-                    android:text="@string/already_uncolock"
-                    android:textSize="@dimen/common_text_size" />
-            </LinearLayout>
+                    android:background="@drawable/common_card_bg"
+                    android:divider="@drawable/divider_table"
+                    android:orientation="vertical"
+                    android:showDividers="middle">
 
-            <LinearLayout
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:background="@drawable/common_card_bg"
-                android:divider="@drawable/divider_table"
-                android:orientation="horizontal"
-                android:showDividers="middle">
+                    <RelativeLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="50dp"
+                        android:background="@drawable/common_card_bg">
 
-                <androidx.recyclerview.widget.RecyclerView
-                    android:id="@+id/wait_to_colock_rv"
-                    android:layout_width="0dp"
-                    android:layout_height="match_parent"
-                    android:padding="@dimen/common_spacing"
-                    android:layout_weight="1" />
+                        <TextView
+                            android:id="@+id/data_title_tv"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_centerInParent="true"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/common_text_size" />
 
-                <androidx.recyclerview.widget.RecyclerView
-                    android:id="@+id/already_colock_rv"
-                    android:layout_width="0dp"
-                    android:layout_height="match_parent"
-                    android:padding="@dimen/common_spacing"
-                    android:layout_weight="1" />
+                        <ImageView
+                            android:id="@+id/full_screen"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_alignParentRight="true"
+                            android:layout_centerVertical="true"
+                            android:layout_marginRight="@dimen/common_spacing"
+                            android:src="@mipmap/icon_full_screen" />
+                    </RelativeLayout>
 
-                <androidx.recyclerview.widget.RecyclerView
-                    android:id="@+id/already_uncolock_rv"
-                    android:layout_width="0dp"
-                    android:layout_height="match_parent"
-                    android:padding="@dimen/common_spacing"
-                    android:layout_weight="1" />
-            </LinearLayout>
-        </LinearLayout>
+                    <FrameLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent">
 
-        <View
-            android:id="@+id/space_view"
-            android:layout_width="0dp"
-            android:layout_height="@dimen/divider_line_space"
-            android:layout_weight="1" />
+                        <LinearLayout
+                            android:id="@+id/lock_status_layout"
+                            android:layout_width="match_parent"
+                            android:layout_height="match_parent"
+                            android:orientation="vertical">
 
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:gravity="right"
-            android:minHeight="@dimen/btn_layout_min_height"
-            android:orientation="horizontal"
-            android:padding="@dimen/common_spacing">
+                            <LinearLayout
+                                android:layout_width="match_parent"
+                                android:layout_height="@dimen/point_header_height"
+                                android:background="@drawable/common_card_bg"
+                                android:divider="@drawable/divider_table"
+                                android:showDividers="middle">
 
-            <TextView
-                android:id="@+id/to_lock"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginLeft="@dimen/common_spacing"
-                android:background="@drawable/bg_btn_job_execute_go_locking"
-                android:drawableLeft="@drawable/icon_ticket_lock"
-                android:paddingHorizontal="@dimen/common_spacing"
-                android:text="@string/go_locking"
-                android:textColor="@color/white"
-                android:textSize="@dimen/common_btn_text_size"
-                android:visibility="gone" />
+                                <TextView
+                                    android:layout_width="0dp"
+                                    android:layout_height="match_parent"
+                                    android:layout_weight="1"
+                                    android:gravity="center"
+                                    android:text="@string/point_name_tv"
+                                    android:textSize="@dimen/common_text_size" />
 
-            <TextView
-                android:id="@+id/to_unlock"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginLeft="@dimen/common_spacing"
-                android:background="@drawable/bg_btn_job_execute_go_unlocking"
-                android:drawableLeft="@drawable/icon_ticket_unlock"
-                android:paddingHorizontal="@dimen/common_spacing"
-                android:text="@string/go_unlocking"
-                android:textColor="@color/white"
-                android:textSize="@dimen/common_btn_text_size"
-                android:visibility="gone" />
+                                <TextView
+                                    android:layout_width="0dp"
+                                    android:layout_height="match_parent"
+                                    android:layout_weight="1"
+                                    android:gravity="center"
+                                    android:text="@string/point_manage_point_function"
+                                    android:textSize="@dimen/common_text_size" />
 
-            <TextView
-                android:id="@+id/cancel_job"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginLeft="@dimen/common_spacing"
-                android:background="@drawable/bg_btn_job_execute_normal"
-                android:paddingHorizontal="@dimen/common_spacing"
-                android:text="@string/cancel_the_job"
-                android:textColor="@color/black"
-                android:textSize="@dimen/common_btn_text_size"
-                android:visibility="gone" />
+                                <TextView
+                                    android:layout_width="0dp"
+                                    android:layout_height="match_parent"
+                                    android:layout_weight="1"
+                                    android:gravity="center"
+                                    android:text="@string/lock_status"
+                                    android:textSize="@dimen/common_text_size" />
+                            </LinearLayout>
 
-            <TextView
-                android:id="@+id/finish_job"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginLeft="@dimen/common_spacing"
-                android:background="@drawable/bg_btn_job_execute_normal"
-                android:paddingHorizontal="@dimen/common_spacing"
-                android:text="@string/finish_the_job"
-                android:textColor="@color/black"
-                android:textSize="@dimen/common_btn_text_size"
-                android:visibility="gone" />
-        </LinearLayout>
+                            <androidx.recyclerview.widget.RecyclerView
+                                android:id="@+id/list_rv"
+                                android:layout_width="match_parent"
+                                android:layout_height="match_parent"
+                                android:background="@drawable/common_card_bg" />
+                        </LinearLayout>
+
+                        <LinearLayout
+                            android:id="@+id/colocker_layout"
+                            android:layout_width="match_parent"
+                            android:layout_height="match_parent"
+                            android:divider="@drawable/divider_table"
+                            android:orientation="vertical"
+                            android:showDividers="middle"
+                            android:visibility="gone">
+
+                            <LinearLayout
+                                android:layout_width="match_parent"
+                                android:layout_height="@dimen/colocker_layout_height"
+                                android:background="@drawable/common_card_bg"
+                                android:divider="@drawable/divider_table"
+                                android:showDividers="middle">
+
+                                <TextView
+                                    android:id="@+id/wait_to_colock"
+                                    android:layout_width="0dp"
+                                    android:layout_height="match_parent"
+                                    android:layout_weight="1"
+                                    android:gravity="center"
+                                    android:text="@string/wait_to_colock"
+                                    android:textSize="@dimen/common_text_size" />
+
+                                <TextView
+                                    android:id="@+id/already_colock"
+                                    android:layout_width="0dp"
+                                    android:layout_height="match_parent"
+                                    android:layout_weight="1"
+                                    android:gravity="center"
+                                    android:text="@string/already_colock"
+                                    android:textSize="@dimen/common_text_size" />
+
+                                <TextView
+                                    android:id="@+id/already_uncolock"
+                                    android:layout_width="0dp"
+                                    android:layout_height="match_parent"
+                                    android:layout_weight="1"
+                                    android:gravity="center"
+                                    android:text="@string/already_uncolock"
+                                    android:textSize="@dimen/common_text_size" />
+                            </LinearLayout>
+
+                            <LinearLayout
+                                android:layout_width="match_parent"
+                                android:layout_height="match_parent"
+                                android:background="@drawable/common_card_bg"
+                                android:divider="@drawable/divider_table"
+                                android:orientation="horizontal"
+                                android:showDividers="middle">
+
+                                <androidx.recyclerview.widget.RecyclerView
+                                    android:id="@+id/wait_to_colock_rv"
+                                    android:layout_width="0dp"
+                                    android:layout_height="match_parent"
+                                    android:layout_weight="1"
+                                    android:padding="@dimen/common_spacing" />
+
+                                <androidx.recyclerview.widget.RecyclerView
+                                    android:id="@+id/already_colock_rv"
+                                    android:layout_width="0dp"
+                                    android:layout_height="match_parent"
+                                    android:layout_weight="1"
+                                    android:padding="@dimen/common_spacing" />
+
+                                <androidx.recyclerview.widget.RecyclerView
+                                    android:id="@+id/already_uncolock_rv"
+                                    android:layout_width="0dp"
+                                    android:layout_height="match_parent"
+                                    android:layout_weight="1"
+                                    android:padding="@dimen/common_spacing" />
+                            </LinearLayout>
+                        </LinearLayout>
+
+                        <TextView
+                            android:id="@+id/step_description_tv"
+                            android:layout_width="match_parent"
+                            android:layout_height="match_parent"
+                            android:textSize="@dimen/common_text_size"
+                            android:visibility="gone" />
+                    </FrameLayout>
+                </LinearLayout>
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:gravity="right"
+                    android:minHeight="@dimen/btn_layout_min_height"
+                    android:orientation="horizontal"
+                    android:padding="@dimen/common_spacing">
+
+                    <TextView
+                        android:id="@+id/to_lock"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="@dimen/common_spacing"
+                        android:background="@drawable/bg_btn_job_execute_go_locking"
+                        android:drawableLeft="@drawable/icon_ticket_lock"
+                        android:paddingHorizontal="@dimen/common_spacing"
+                        android:text="@string/go_locking"
+                        android:textColor="@color/white"
+                        android:textSize="@dimen/common_btn_text_size"
+                        android:visibility="gone" />
+
+                    <TextView
+                        android:id="@+id/to_unlock"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="@dimen/common_spacing"
+                        android:background="@drawable/bg_btn_job_execute_go_unlocking"
+                        android:drawableLeft="@drawable/icon_ticket_unlock"
+                        android:paddingHorizontal="@dimen/common_spacing"
+                        android:text="@string/go_unlocking"
+                        android:textColor="@color/white"
+                        android:textSize="@dimen/common_btn_text_size"
+                        android:visibility="gone" />
+
+                    <TextView
+                        android:id="@+id/cancel_job"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="@dimen/common_spacing"
+                        android:background="@drawable/bg_btn_job_execute_normal"
+                        android:paddingHorizontal="@dimen/common_spacing"
+                        android:text="@string/cancel_the_job"
+                        android:textColor="@color/black"
+                        android:textSize="@dimen/common_btn_text_size"
+                        android:visibility="gone" />
+
+                    <TextView
+                        android:id="@+id/finish_job"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="@dimen/common_spacing"
+                        android:background="@drawable/bg_btn_job_execute_normal"
+                        android:paddingHorizontal="@dimen/common_spacing"
+                        android:text="@string/finish_the_job"
+                        android:textColor="@color/black"
+                        android:textSize="@dimen/common_btn_text_size"
+                        android:visibility="gone" />
+                </LinearLayout>
+            </LinearLayout>
+        </FrameLayout>
     </LinearLayout>
 </layout>

+ 5 - 5
app/src/main/res/layout-land/fragment_point_manage.xml

@@ -14,12 +14,11 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
                 android:src="@mipmap/icon_data_manage_menu_user_manage" />
 
             <TextView
@@ -29,7 +28,8 @@
                 android:layout_weight="1"
                 android:text="@string/point_manage_title"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textStyle="bold"
+                android:textSize="@dimen/normal_text_size_25" />
 
             <TextView
                 android:id="@+id/back"

+ 9 - 6
app/src/main/res/layout-land/fragment_select_memeber.xml

@@ -14,13 +14,12 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
                 android:id="@+id/preview_step_iv"
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
                 android:src="@mipmap/icon_data_manage_menu_user_manage" />
 
             <TextView
@@ -30,12 +29,15 @@
                 android:layout_marginLeft="@dimen/common_spacing"
                 android:text="@string/create_sop_title"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textStyle="bold"
+                android:textSize="@dimen/normal_text_size_25" />
 
             <ImageView
                 android:layout_width="wrap_content"
                 android:layout_height="match_parent"
-                android:src="@drawable/icon_arrow_right" />
+                android:scaleType="fitXY"
+                android:paddingHorizontal="@dimen/common_spacing"
+                android:src="@mipmap/icon_title_arrow_divider" />
 
             <ImageView
                 android:layout_width="@dimen/common_spacing_2x"
@@ -48,6 +50,7 @@
                 android:layout_marginLeft="@dimen/common_spacing"
                 android:text="@string/select_member_title"
                 android:textColor="@color/black"
+                android:textStyle="bold"
                 android:textSize="@dimen/normal_text_size_18" />
 
             <View

+ 9 - 6
app/src/main/res/layout-land/fragment_select_point.xml

@@ -14,13 +14,12 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
                 android:id="@+id/preview_step_iv"
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
                 android:src="@mipmap/icon_data_manage_menu_user_manage" />
 
             <TextView
@@ -30,12 +29,15 @@
                 android:layout_marginLeft="@dimen/common_spacing"
                 android:text="@string/create_sop_title"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textStyle="bold"
+                android:textSize="@dimen/normal_text_size_25" />
 
             <ImageView
                 android:layout_width="wrap_content"
                 android:layout_height="match_parent"
-                android:src="@drawable/icon_arrow_right" />
+                android:scaleType="fitXY"
+                android:paddingHorizontal="@dimen/common_spacing"
+                android:src="@mipmap/icon_title_arrow_divider"/>
 
             <ImageView
                 android:layout_width="@dimen/common_spacing_2x"
@@ -48,6 +50,7 @@
                 android:layout_marginLeft="@dimen/common_spacing"
                 android:text="@string/select_point_title"
                 android:textColor="@color/black"
+                android:textStyle="bold"
                 android:textSize="@dimen/normal_text_size_18" />
 
             <View

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

@@ -0,0 +1,364 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_margin="@dimen/common_spacing_2x"
+        android:background="@drawable/home_card_bg"
+        android:orientation="vertical">
+
+        <LinearLayout
+            android:id="@+id/title_layout"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center_vertical"
+            android:orientation="horizontal"
+            android:paddingHorizontal="@dimen/common_spacing">
+
+            <ImageView
+                android:id="@+id/preview_step_iv"
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
+                android:src="@mipmap/icon_data_manage_menu_user_manage" />
+
+            <TextView
+                android:id="@+id/preview_step_title"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/common_spacing"
+                android:text="@string/create_sop_title"
+                android:textColor="@color/black"
+                android:textSize="@dimen/normal_text_size_25"
+                android:textStyle="bold" />
+
+            <ImageView
+                android:layout_width="wrap_content"
+                android:layout_height="match_parent"
+                android:paddingHorizontal="@dimen/common_spacing"
+                android:scaleType="fitXY"
+                android:src="@mipmap/icon_title_arrow_divider" />
+
+            <ImageView
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
+                android:src="@mipmap/icon_workflow_setting" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/common_spacing"
+                android:text="@string/workflow_setting"
+                android:textColor="@color/black"
+                android:textSize="@dimen/normal_text_size_25"
+                android:textStyle="bold" />
+
+            <View
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_weight="1" />
+
+            <TextView
+                android:id="@+id/back"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginVertical="5dp"
+                android:layout_marginLeft="@dimen/common_spacing"
+                android:background="@drawable/common_btn"
+                android:drawableLeft="@mipmap/icon_back"
+                android:drawablePadding="@dimen/common_spacing"
+                android:gravity="center"
+                android:minHeight="@dimen/common_btn_height"
+                android:paddingHorizontal="@dimen/common_spacing_2x"
+                android:text="@string/back"
+                android:textColor="@color/black"
+                android:textSize="@dimen/common_btn_text_size" />
+        </LinearLayout>
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/divider_line_space"
+            android:background="@color/black" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:orientation="vertical">
+
+            <androidx.recyclerview.widget.RecyclerView
+                android:id="@+id/workflow_mode_rv"
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/step_rv_height"
+                android:layout_marginHorizontal="@dimen/common_spacing"
+                android:layout_marginTop="@dimen/common_spacing_2x"
+                android:visibility="gone" />
+
+
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:padding="@dimen/common_spacing">
+
+                <androidx.constraintlayout.widget.Barrier
+                    android:id="@+id/barrier_title_end"
+                    android:layout_width="0dp"
+                    android:layout_height="0dp"
+                    app:barrierDirection="end"
+                    app:constraint_referenced_ids="step_title_tv,step_title_short_tv,step_confirm_type_tv,step_confirm_role_tv,step_confirm_member_tv,step_function_tv,step_description_tv" />
+
+                <com.grkj.ui_base.widget.RequiredTextView
+                    android:id="@+id/step_title_tv"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginVertical="@dimen/common_spacing_2x"
+                    android:text="@string/workflow_step_title"
+                    android:textSize="@dimen/normal_text_size_18"
+                    android:textStyle="bold"
+                    app:layout_constraintEnd_toEndOf="@+id/barrier_title_end"
+                    app:layout_constraintTop_toTopOf="parent"
+                    app:markPosition="end"
+                    app:required="true" />
+
+                <EditText
+                    android:id="@+id/step_title_et"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginHorizontal="@dimen/common_spacing"
+                    android:background="@drawable/bg_common_input"
+                    android:hint="@string/please_input_step_title"
+                    android:maxLines="1"
+                    android:paddingHorizontal="@dimen/common_spacing"
+                    android:paddingVertical="5dp"
+                    android:singleLine="true"
+                    android:textSize="@dimen/normal_text_size_18"
+                    android:textStyle="bold"
+                    app:layout_constraintBottom_toBottomOf="@+id/step_title_tv"
+                    app:layout_constraintStart_toEndOf="@+id/barrier_title_end"
+                    app:layout_constraintTop_toTopOf="@+id/step_title_tv" />
+
+                <com.grkj.ui_base.widget.RequiredTextView
+                    android:id="@+id/step_title_short_tv"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginVertical="@dimen/common_spacing_2x"
+                    android:text="@string/workflow_step_title_short"
+                    android:textSize="@dimen/normal_text_size_18"
+                    android:textStyle="bold"
+                    app:layout_constraintEnd_toEndOf="@+id/barrier_title_end"
+                    app:layout_constraintTop_toBottomOf="@+id/step_title_tv"
+                    app:markPosition="end"
+                    app:required="true" />
+
+                <EditText
+                    android:id="@+id/step_title_short_et"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginHorizontal="@dimen/common_spacing"
+                    android:background="@drawable/bg_common_input"
+                    android:hint="@string/please_input_step_title_short"
+                    android:maxLines="1"
+                    android:paddingHorizontal="@dimen/common_spacing"
+                    android:paddingVertical="5dp"
+                    android:singleLine="true"
+                    android:textSize="@dimen/normal_text_size_18"
+                    android:textStyle="bold"
+                    app:layout_constraintBottom_toBottomOf="@+id/step_title_short_tv"
+                    app:layout_constraintStart_toEndOf="@+id/barrier_title_end"
+                    app:layout_constraintTop_toTopOf="@+id/step_title_short_tv" />
+
+                <com.grkj.ui_base.widget.RequiredTextView
+                    android:id="@+id/step_confirm_type_tv"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginVertical="@dimen/common_spacing_2x"
+                    android:text="@string/workflow_step_confirm_type"
+                    android:textSize="@dimen/normal_text_size_18"
+                    android:textStyle="bold"
+                    app:layout_constraintEnd_toEndOf="@+id/barrier_title_end"
+                    app:layout_constraintTop_toBottomOf="@+id/step_title_short_tv"
+                    app:markPosition="end"
+                    app:required="true" />
+
+                <TextView
+                    android:id="@+id/step_confirm_type"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginHorizontal="@dimen/common_spacing"
+                    android:background="@drawable/bg_common_input"
+                    android:drawableRight="@mipmap/icon_drop_down"
+                    android:hint="@string/please_select_step_confirm_type"
+                    android:maxLines="1"
+                    android:paddingHorizontal="@dimen/common_spacing"
+                    android:paddingVertical="5dp"
+                    android:singleLine="true"
+                    android:textSize="@dimen/normal_text_size_18"
+                    android:textStyle="bold"
+                    app:layout_constraintBottom_toBottomOf="@+id/step_confirm_type_tv"
+                    app:layout_constraintStart_toEndOf="@+id/barrier_title_end"
+                    app:layout_constraintTop_toTopOf="@+id/step_confirm_type_tv" />
+
+                <com.grkj.ui_base.widget.RequiredTextView
+                    android:id="@+id/step_confirm_role_tv"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginVertical="@dimen/common_spacing_2x"
+                    android:text="@string/workflow_step_confirm_role"
+                    android:textSize="@dimen/normal_text_size_18"
+                    android:textStyle="bold"
+                    android:visibility="gone"
+                    app:layout_constraintEnd_toEndOf="@+id/barrier_title_end"
+                    app:layout_constraintTop_toBottomOf="@+id/step_confirm_type_tv"
+                    app:markPosition="end"
+                    app:required="true" />
+
+                <TextView
+                    android:id="@+id/step_confirm_role"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginHorizontal="@dimen/common_spacing"
+                    android:background="@drawable/bg_common_input"
+                    android:drawableRight="@mipmap/icon_drop_down"
+                    android:hint="@string/please_select_step_confirm_role"
+                    android:maxLines="1"
+                    android:paddingHorizontal="@dimen/common_spacing"
+                    android:paddingVertical="5dp"
+                    android:singleLine="true"
+                    android:textSize="@dimen/normal_text_size_18"
+                    android:textStyle="bold"
+                    android:visibility="gone"
+                    app:layout_constraintBottom_toBottomOf="@+id/step_confirm_role_tv"
+                    app:layout_constraintStart_toEndOf="@+id/barrier_title_end"
+                    app:layout_constraintTop_toTopOf="@+id/step_confirm_role_tv" />
+
+                <com.grkj.ui_base.widget.RequiredTextView
+                    android:id="@+id/step_confirm_member_tv"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginVertical="@dimen/common_spacing_2x"
+                    android:text="@string/workflow_step_confirm_member"
+                    android:textSize="@dimen/normal_text_size_18"
+                    android:textStyle="bold"
+                    android:visibility="gone"
+                    app:layout_constraintEnd_toEndOf="@+id/barrier_title_end"
+                    app:layout_constraintTop_toBottomOf="@+id/step_confirm_role_tv"
+                    app:markPosition="end"
+                    app:required="false" />
+
+                <TextView
+                    android:id="@+id/step_confirm_member"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginHorizontal="@dimen/common_spacing"
+                    android:background="@drawable/bg_common_input"
+                    android:drawableRight="@mipmap/icon_drop_down"
+                    android:hint="@string/please_select_step_confirm_member"
+                    android:maxLines="1"
+                    android:paddingHorizontal="@dimen/common_spacing"
+                    android:paddingVertical="5dp"
+                    android:singleLine="true"
+                    android:textSize="@dimen/normal_text_size_18"
+                    android:textStyle="bold"
+                    android:visibility="gone"
+                    app:layout_constraintBottom_toBottomOf="@+id/step_confirm_member_tv"
+                    app:layout_constraintStart_toEndOf="@+id/barrier_title_end"
+                    app:layout_constraintTop_toTopOf="@+id/step_confirm_member_tv" />
+
+                <com.grkj.ui_base.widget.RequiredTextView
+                    android:id="@+id/step_function_tv"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginVertical="@dimen/common_spacing_2x"
+                    android:text="@string/workflow_step_function"
+                    android:textSize="@dimen/normal_text_size_18"
+                    android:textStyle="bold"
+                    app:layout_constraintEnd_toEndOf="@+id/barrier_title_end"
+                    app:layout_constraintTop_toBottomOf="@+id/step_confirm_member_tv"
+                    app:markPosition="end"
+                    app:required="true" />
+
+                <androidx.recyclerview.widget.RecyclerView
+                    android:id="@+id/step_function_rv"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginHorizontal="10dp"
+                    app:layout_constraintBottom_toBottomOf="@+id/step_function_tv"
+                    app:layout_constraintStart_toEndOf="@+id/barrier_title_end"
+                    app:layout_constraintTop_toTopOf="@+id/step_function_tv" />
+
+                <com.grkj.ui_base.widget.RequiredTextView
+                    android:id="@+id/step_description_tv"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginVertical="@dimen/common_spacing_2x"
+                    android:text="@string/workflow_step_description"
+                    android:textSize="@dimen/normal_text_size_18"
+                    android:textStyle="bold"
+                    app:layout_constraintEnd_toEndOf="@+id/barrier_title_end"
+                    app:layout_constraintTop_toBottomOf="@+id/step_function_tv"
+                    app:markPosition="end"
+                    app:required="true" />
+
+                <EditText
+                    android:id="@+id/step_description_et"
+                    android:layout_width="0dp"
+                    android:layout_height="280dp"
+                    android:layout_marginHorizontal="@dimen/common_spacing"
+                    android:background="@drawable/bg_common_input"
+                    android:gravity="top"
+                    android:hint="@string/please_input_step_description"
+                    android:paddingHorizontal="@dimen/common_spacing"
+                    android:paddingVertical="5dp"
+                    android:scrollbars="vertical"
+                    android:textSize="@dimen/normal_text_size_18"
+                    android:textStyle="bold"
+                    app:layout_constraintBottom_toBottomOf="@+id/step_description_tv"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toEndOf="@+id/barrier_title_end"
+                    app:layout_constraintTop_toTopOf="@+id/step_description_tv" />
+
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="right"
+            android:orientation="horizontal"
+            android:padding="@dimen/common_spacing">
+
+            <TextView
+                android:id="@+id/confirm"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/common_spacing"
+                android:background="@drawable/common_btn_confirm"
+                android:drawableLeft="@mipmap/icon_confirm"
+                android:drawablePadding="@dimen/common_spacing"
+                android:gravity="center"
+                android:minHeight="@dimen/common_btn_height"
+                android:paddingHorizontal="@dimen/common_spacing_2x"
+                android:text="@string/confirm"
+                android:textColor="@color/white"
+                android:textSize="@dimen/common_btn_text_size" />
+
+            <TextView
+                android:id="@+id/cancel"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/common_spacing"
+                android:background="@drawable/common_btn_cancel"
+                android:drawableLeft="@mipmap/icon_cancel"
+                android:drawablePadding="@dimen/common_spacing"
+                android:gravity="center"
+                android:minHeight="@dimen/common_btn_height"
+                android:paddingHorizontal="@dimen/common_spacing_2x"
+                android:text="@string/cancel"
+                android:textColor="@color/white"
+                android:textSize="@dimen/common_btn_text_size" />
+        </LinearLayout>
+    </LinearLayout>
+</layout>

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

@@ -13,8 +13,7 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <TextView
                 android:layout_width="match_parent"

+ 5 - 5
app/src/main/res/layout/fragment_card_manage.xml

@@ -14,12 +14,11 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
                 android:src="@mipmap/icon_data_manage_menu_user_manage" />
 
             <TextView
@@ -29,7 +28,8 @@
                 android:layout_weight="1"
                 android:text="@string/card_manage_title"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textStyle="bold"
+                android:textSize="@dimen/normal_text_size_25" />
 
             <TextView
                 android:id="@+id/back"

+ 15 - 14
app/src/main/res/layout/fragment_create_job.xml

@@ -14,12 +14,11 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
                 android:src="@mipmap/icon_job_manage_create_job" />
 
             <TextView
@@ -29,7 +28,8 @@
                 android:layout_weight="1"
                 android:text="@string/create_job_title"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textStyle="bold"
+                android:textSize="@dimen/normal_text_size_25" />
 
             <TextView
                 android:id="@+id/back"
@@ -230,7 +230,9 @@
                     <androidx.recyclerview.widget.RecyclerView
                         android:id="@+id/workflow_rv"
                         android:layout_width="match_parent"
-                        android:layout_height="match_parent" />
+                        android:layout_height="match_parent"
+                        android:scrollbars="horizontal"
+                        android:paddingHorizontal="@dimen/common_spacing"/>
 
                     <TextView
                         android:id="@+id/select_workflow_tip"
@@ -308,8 +310,8 @@
                         android:orientation="vertical">
 
                         <ImageView
-                            android:layout_width="80dp"
-                            android:layout_height="80dp"
+                            android:layout_width="@dimen/icon_add_point_or_member_size"
+                            android:layout_height="@dimen/icon_add_point_or_member_size"
                             android:src="@drawable/icon_add_box" />
 
                         <TextView
@@ -407,11 +409,10 @@
                                 android:paddingBottom="@dimen/common_spacing">
 
                                 <ImageView
-                                    android:layout_width="50dp"
-                                    android:layout_height="50dp"
+                                    android:layout_width="@dimen/icon_member_size"
+                                    android:layout_height="@dimen/icon_member_size"
                                     android:layout_marginTop="@dimen/common_spacing"
-                                    android:src="@mipmap/icon_data_manage_menu_user_manage"
-                                    android:tint="@color/black" />
+                                    android:src="@mipmap/icon_selected_member" />
 
                                 <TextView
                                     android:id="@+id/locker_name"
@@ -463,8 +464,8 @@
                         android:orientation="vertical">
 
                         <ImageView
-                            android:layout_width="80dp"
-                            android:layout_height="80dp"
+                            android:layout_width="@dimen/icon_add_point_or_member_size"
+                            android:layout_height="@dimen/icon_add_point_or_member_size"
                             android:src="@drawable/icon_add_box" />
 
                         <TextView

+ 16 - 15
app/src/main/res/layout/fragment_create_sop.xml

@@ -14,13 +14,12 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
-                android:src="@mipmap/icon_data_manage_menu_user_manage" />
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
+                android:src="@mipmap/icon_job_manage_create_sop" />
 
             <TextView
                 android:layout_width="match_parent"
@@ -29,7 +28,8 @@
                 android:layout_weight="1"
                 android:text="@string/create_sop_title"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textStyle="bold"
+                android:textSize="@dimen/normal_text_size_25" />
 
             <TextView
                 android:id="@+id/back"
@@ -232,7 +232,9 @@
                     <androidx.recyclerview.widget.RecyclerView
                         android:id="@+id/workflow_rv"
                         android:layout_width="match_parent"
-                        android:layout_height="match_parent" />
+                        android:layout_height="match_parent"
+                        android:scrollbars="horizontal"
+                        android:paddingHorizontal="@dimen/common_spacing" />
 
                     <TextView
                         android:id="@+id/select_workflow_tip"
@@ -312,8 +314,8 @@
                         android:orientation="vertical">
 
                         <ImageView
-                            android:layout_width="80dp"
-                            android:layout_height="80dp"
+                            android:layout_width="@dimen/icon_add_point_or_member_size"
+                            android:layout_height="@dimen/icon_add_point_or_member_size"
                             android:src="@drawable/icon_add_box" />
 
                         <TextView
@@ -415,11 +417,10 @@
                                 android:paddingBottom="@dimen/common_spacing">
 
                                 <ImageView
-                                    android:layout_width="50dp"
-                                    android:layout_height="50dp"
+                                    android:layout_width="@dimen/icon_member_size"
+                                    android:layout_height="@dimen/icon_member_size"
                                     android:layout_marginTop="@dimen/common_spacing"
-                                    android:src="@mipmap/icon_data_manage_menu_user_manage"
-                                    android:tint="@color/black" />
+                                    android:src="@mipmap/icon_selected_member" />
 
                                 <TextView
                                     android:id="@+id/locker_name"
@@ -471,8 +472,8 @@
                         android:orientation="vertical">
 
                         <ImageView
-                            android:layout_width="80dp"
-                            android:layout_height="80dp"
+                            android:layout_width="@dimen/icon_add_point_or_member_size"
+                            android:layout_height="@dimen/icon_add_point_or_member_size"
                             android:src="@drawable/icon_add_box" />
 
                         <TextView

+ 12 - 11
app/src/main/res/layout/fragment_create_sop_job.xml

@@ -14,13 +14,12 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
-                android:src="@mipmap/icon_data_manage_menu_user_manage" />
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
+                android:src="@mipmap/icon_job_manage_create_job" />
 
             <TextView
                 android:layout_width="match_parent"
@@ -29,7 +28,8 @@
                 android:layout_weight="1"
                 android:text="@string/create_sop_job_title"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textStyle="bold"
+                android:textSize="@dimen/normal_text_size_25" />
 
             <TextView
                 android:id="@+id/back"
@@ -230,7 +230,9 @@
                     <androidx.recyclerview.widget.RecyclerView
                         android:id="@+id/workflow_rv"
                         android:layout_width="match_parent"
-                        android:layout_height="match_parent" />
+                        android:layout_height="match_parent"
+                        android:scrollbars="horizontal"
+                        android:paddingHorizontal="@dimen/common_spacing" />
 
                     <TextView
                         android:id="@+id/select_workflow_tip"
@@ -391,11 +393,10 @@
                                 android:paddingBottom="@dimen/common_spacing">
 
                                 <ImageView
-                                    android:layout_width="50dp"
-                                    android:layout_height="50dp"
+                                    android:layout_width="@dimen/icon_member_size"
+                                    android:layout_height="@dimen/icon_member_size"
                                     android:layout_marginTop="@dimen/common_spacing"
-                                    android:src="@mipmap/icon_data_manage_menu_user_manage"
-                                    android:tint="@color/black" />
+                                    android:src="@mipmap/icon_selected_member" />
 
                                 <TextView
                                     android:id="@+id/locker_name"

+ 12 - 11
app/src/main/res/layout/fragment_edit_job.xml

@@ -14,13 +14,12 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
-                android:src="@mipmap/icon_data_manage_menu_user_manage" />
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
+                android:src="@mipmap/icon_job_manage_create_job" />
 
             <TextView
                 android:layout_width="match_parent"
@@ -29,7 +28,8 @@
                 android:layout_weight="1"
                 android:text="@string/edit_job_title"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textStyle="bold"
+                android:textSize="@dimen/normal_text_size_25" />
 
             <TextView
                 android:id="@+id/back"
@@ -236,7 +236,9 @@
                         <androidx.recyclerview.widget.RecyclerView
                             android:id="@+id/workflow_rv"
                             android:layout_width="match_parent"
-                            android:layout_height="match_parent" />
+                            android:layout_height="match_parent"
+                            android:scrollbars="horizontal"
+                            android:paddingHorizontal="@dimen/common_spacing" />
                     </FrameLayout>
                 </LinearLayout>
 
@@ -370,11 +372,10 @@
                                 android:paddingBottom="@dimen/common_spacing">
 
                                 <ImageView
-                                    android:layout_width="50dp"
-                                    android:layout_height="50dp"
+                                    android:layout_width="@dimen/icon_member_size"
+                                    android:layout_height="@dimen/icon_member_size"
                                     android:layout_marginTop="@dimen/common_spacing"
-                                    android:src="@mipmap/icon_data_manage_menu_user_manage"
-                                    android:tint="@color/black" />
+                                    android:src="@mipmap/icon_selected_member" />
 
                                 <TextView
                                     android:id="@+id/locker_name"

+ 12 - 11
app/src/main/res/layout/fragment_edit_sop.xml

@@ -14,13 +14,12 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
-                android:src="@mipmap/icon_data_manage_menu_user_manage" />
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
+                android:src="@mipmap/icon_job_manage_create_sop" />
 
             <TextView
                 android:layout_width="match_parent"
@@ -29,7 +28,8 @@
                 android:layout_weight="1"
                 android:text="@string/edit_sop_title"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textStyle="bold"
+                android:textSize="@dimen/normal_text_size_25" />
 
             <TextView
                 android:id="@+id/back"
@@ -230,7 +230,9 @@
                     <androidx.recyclerview.widget.RecyclerView
                         android:id="@+id/workflow_rv"
                         android:layout_width="match_parent"
-                        android:layout_height="match_parent" />
+                        android:layout_height="match_parent"
+                        android:scrollbars="horizontal"
+                        android:paddingHorizontal="@dimen/common_spacing" />
                 </FrameLayout>
             </LinearLayout>
 
@@ -364,11 +366,10 @@
                             android:paddingBottom="@dimen/common_spacing">
 
                             <ImageView
-                                android:layout_width="50dp"
-                                android:layout_height="50dp"
+                                android:layout_width="@dimen/icon_member_size"
+                                android:layout_height="@dimen/icon_member_size"
                                 android:layout_marginTop="@dimen/common_spacing"
-                                android:src="@mipmap/icon_data_manage_menu_user_manage"
-                                android:tint="@color/black" />
+                                android:src="@mipmap/icon_selected_member" />
 
                             <TextView
                                 android:id="@+id/locker_name"

+ 12 - 11
app/src/main/res/layout/fragment_edit_sop_job.xml

@@ -14,13 +14,12 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
-                android:src="@mipmap/icon_data_manage_menu_user_manage" />
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
+                android:src="@mipmap/icon_job_manage_create_job" />
 
             <TextView
                 android:layout_width="match_parent"
@@ -29,7 +28,8 @@
                 android:layout_weight="1"
                 android:text="@string/edit_sop_job_title"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textStyle="bold"
+                android:textSize="@dimen/normal_text_size_25" />
 
             <TextView
                 android:id="@+id/back"
@@ -231,7 +231,9 @@
                     <androidx.recyclerview.widget.RecyclerView
                         android:id="@+id/workflow_rv"
                         android:layout_width="match_parent"
-                        android:layout_height="match_parent" />
+                        android:layout_height="match_parent"
+                        android:scrollbars="horizontal"
+                        android:paddingHorizontal="@dimen/common_spacing" />
                 </FrameLayout>
             </LinearLayout>
 
@@ -353,11 +355,10 @@
                             android:paddingBottom="@dimen/common_spacing">
 
                             <ImageView
-                                android:layout_width="50dp"
-                                android:layout_height="50dp"
+                                android:layout_width="@dimen/icon_member_size"
+                                android:layout_height="@dimen/icon_member_size"
                                 android:layout_marginTop="@dimen/common_spacing"
-                                android:src="@mipmap/icon_data_manage_menu_user_manage"
-                                android:tint="@color/black" />
+                                android:src="@mipmap/icon_selected_member" />
 
                             <TextView
                                 android:id="@+id/locker_name"

+ 5 - 5
app/src/main/res/layout/fragment_exception_job_manage.xml

@@ -14,12 +14,11 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
                 android:src="@mipmap/icon_data_manage_menu_user_manage" />
 
             <TextView
@@ -29,7 +28,8 @@
                 android:layout_weight="1"
                 android:text="@string/exception_job_title"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textStyle="bold"
+                android:textSize="@dimen/normal_text_size_25" />
 
             <TextView
                 android:id="@+id/back"

+ 5 - 5
app/src/main/res/layout/fragment_in_progress_job_manage.xml

@@ -14,12 +14,11 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
                 android:src="@mipmap/icon_data_manage_menu_user_manage" />
 
             <TextView
@@ -29,7 +28,8 @@
                 android:layout_weight="1"
                 android:text="@string/in_progress_job_manage_title"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textStyle="bold"
+                android:textSize="@dimen/normal_text_size_25" />
 
             <TextView
                 android:id="@+id/back"

+ 313 - 177
app/src/main/res/layout/fragment_job_execute.xml

@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <layout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools">
 
     <LinearLayout
         android:layout_width="match_parent"
@@ -15,13 +16,12 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
-                android:src="@mipmap/icon_data_manage_menu_user_manage" />
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
+                android:src="@mipmap/icon_job_execute" />
 
             <TextView
                 android:id="@+id/job_name_tv"
@@ -31,7 +31,8 @@
                 android:layout_weight="1"
                 android:text="@string/job_manage_title"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textSize="@dimen/normal_text_size_25"
+                android:textStyle="bold" />
 
             <TextView
                 android:id="@+id/back"
@@ -55,197 +56,332 @@
             android:layout_height="@dimen/divider_line_space"
             android:background="@color/black" />
 
-        <androidx.recyclerview.widget.RecyclerView
-            android:id="@+id/step_rv"
+        <FrameLayout
+            android:id="@+id/full_screen_root_layout"
             android:layout_width="match_parent"
-            android:layout_height="@dimen/step_rv_height"
-            android:layout_marginHorizontal="@dimen/common_spacing"
-            android:layout_marginTop="@dimen/common_spacing_2x" />
+            android:layout_height="match_parent">
 
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="@dimen/point_header_height"
-            android:layout_marginHorizontal="@dimen/common_spacing_2x"
-            android:layout_marginTop="@dimen/common_spacing"
-            android:background="@drawable/common_card_bg"
-            android:divider="@drawable/divider_table"
-            android:showDividers="middle">
-
-            <TextView
-                android:layout_width="0dp"
+            <LinearLayout
+                android:layout_width="match_parent"
                 android:layout_height="match_parent"
-                android:layout_weight="1"
-                android:gravity="center"
-                android:text="@string/point_name_tv"
-                android:textSize="@dimen/common_text_size" />
+                android:orientation="vertical">
 
-            <TextView
-                android:layout_width="0dp"
-                android:layout_height="match_parent"
-                android:layout_weight="1"
-                android:gravity="center"
-                android:text="@string/point_manage_point_function"
-                android:textSize="@dimen/common_text_size" />
+                <androidx.recyclerview.widget.RecyclerView
+                    android:id="@+id/step_rv"
+                    android:layout_width="match_parent"
+                    android:layout_height="@dimen/step_rv_height"
+                    android:layout_marginHorizontal="@dimen/common_spacing"
+                    android:layout_marginTop="@dimen/common_spacing_2x" />
 
-            <TextView
-                android:layout_width="0dp"
-                android:layout_height="match_parent"
-                android:layout_weight="1"
-                android:gravity="center"
-                android:text="@string/lock_status"
-                android:textSize="@dimen/common_text_size" />
-        </LinearLayout>
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="60dp"
+                    android:layout_marginHorizontal="@dimen/common_spacing_2x"
+                    android:background="@drawable/common_layout_bg"
+                    android:divider="@drawable/divider_table"
+                    android:gravity="center"
+                    android:orientation="horizontal"
+                    android:showDividers="middle">
 
-        <com.grkj.iscs.view.MaxHeightRecyclerView
-            android:id="@+id/list_rv"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginHorizontal="@dimen/common_spacing_2x"
-            android:background="@drawable/common_card_bg"
-            app:maxHeight="@dimen/point_rv_height" />
+                    <ImageView
+                        android:layout_width="@dimen/job_execute_info_size"
+                        android:layout_height="@dimen/job_execute_info_size"
+                        android:layout_marginHorizontal="@dimen/common_spacing"
+                        android:src="@mipmap/icon_job_execute_info" />
 
-        <LinearLayout
-            android:id="@+id/colocker_layout"
-            android:layout_width="match_parent"
-            android:layout_height="0dp"
-            android:layout_marginHorizontal="@dimen/common_spacing_2x"
-            android:layout_marginTop="@dimen/common_spacing"
-            android:layout_marginBottom="@dimen/common_spacing"
-            android:layout_weight="1"
-            android:divider="@drawable/divider_table"
-            android:orientation="vertical"
-            android:showDividers="middle"
-            android:visibility="gone">
+                    <RelativeLayout
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1">
 
-            <LinearLayout
-                android:layout_width="match_parent"
-                android:layout_height="@dimen/colocker_layout_height"
-                android:background="@drawable/common_card_bg"
-                android:divider="@drawable/divider_table"
-                android:showDividers="middle">
-
-                <TextView
-                    android:id="@+id/wait_to_colock"
-                    android:layout_width="0dp"
-                    android:layout_height="match_parent"
-                    android:layout_weight="1"
-                    android:gravity="center"
-                    android:text="@string/wait_to_colock"
-                    android:textSize="@dimen/common_text_size" />
+                        <TextView
+                            android:id="@+id/lock_tv"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_centerVertical="true"
+                            android:layout_toLeftOf="@+id/lock_iv"
+                            android:gravity="center"
+                            android:text="@string/job_execute_tab_title_lock"
+                            android:textSize="@dimen/common_text_size" />
 
-                <TextView
-                    android:id="@+id/already_colock"
-                    android:layout_width="0dp"
-                    android:layout_height="match_parent"
-                    android:layout_weight="1"
-                    android:gravity="center"
-                    android:text="@string/already_colock"
-                    android:textSize="@dimen/common_text_size" />
+                        <ImageView
+                            android:id="@+id/lock_iv"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_centerInParent="true"
+                            android:paddingHorizontal="@dimen/common_spacing"
+                            android:src="@mipmap/icon_job_execute_lock" />
+
+                        <TextView
+                            android:id="@+id/lock_info"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_centerVertical="true"
+                            android:layout_toRightOf="@+id/lock_iv"
+                            android:textSize="@dimen/common_text_size" />
+                    </RelativeLayout>
+
+
+                    <RelativeLayout
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1">
+
+                        <TextView
+                            android:id="@+id/colock_tv"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_centerVertical="true"
+                            android:layout_toLeftOf="@+id/colock_iv"
+                            android:gravity="center"
+                            android:text="@string/job_execute_tab_title_colock"
+                            android:textSize="@dimen/common_text_size" />
 
-                <TextView
-                    android:id="@+id/already_uncolock"
-                    android:layout_width="0dp"
+                        <ImageView
+                            android:id="@+id/colock_iv"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_centerInParent="true"
+                            android:paddingHorizontal="@dimen/common_spacing"
+                            android:src="@mipmap/icon_job_execute_colock" />
+
+                        <TextView
+                            android:id="@+id/colock_info"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_centerVertical="true"
+                            android:layout_toRightOf="@+id/colock_iv"
+                            android:textSize="@dimen/common_text_size" />
+                    </RelativeLayout>
+                </LinearLayout>
+
+                <LinearLayout
+                    android:id="@+id/data_layout"
+                    android:layout_width="match_parent"
                     android:layout_height="match_parent"
+                    android:layout_marginHorizontal="@dimen/common_spacing_2x"
+                    android:layout_marginTop="@dimen/common_spacing"
                     android:layout_weight="1"
-                    android:gravity="center"
-                    android:text="@string/already_uncolock"
-                    android:textSize="@dimen/common_text_size" />
-            </LinearLayout>
+                    android:background="@drawable/common_layout_bg"
+                    android:divider="@drawable/divider_table"
+                    android:orientation="vertical"
+                    android:showDividers="middle">
 
-            <LinearLayout
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:background="@drawable/common_card_bg"
-                android:divider="@drawable/divider_table"
-                android:orientation="horizontal"
-                android:showDividers="middle">
+                    <RelativeLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="50dp"
+                        android:background="@drawable/common_layout_bg">
 
-                <androidx.recyclerview.widget.RecyclerView
-                    android:id="@+id/wait_to_colock_rv"
-                    android:layout_width="0dp"
-                    android:layout_height="match_parent"
-                    android:padding="@dimen/common_spacing"
-                    android:layout_weight="1" />
+                        <TextView
+                            android:id="@+id/data_title_tv"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_centerInParent="true"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/common_text_size" />
 
-                <androidx.recyclerview.widget.RecyclerView
-                    android:id="@+id/already_colock_rv"
-                    android:layout_width="0dp"
-                    android:layout_height="match_parent"
-                    android:padding="@dimen/common_spacing"
-                    android:layout_weight="1" />
+                        <ImageView
+                            android:id="@+id/full_screen"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_alignParentRight="true"
+                            android:layout_centerVertical="true"
+                            android:layout_marginRight="@dimen/common_spacing"
+                            android:src="@mipmap/icon_full_screen" />
+                    </RelativeLayout>
 
-                <androidx.recyclerview.widget.RecyclerView
-                    android:id="@+id/already_uncolock_rv"
-                    android:layout_width="0dp"
-                    android:layout_height="match_parent"
-                    android:padding="@dimen/common_spacing"
-                    android:layout_weight="1" />
-            </LinearLayout>
-        </LinearLayout>
+                    <FrameLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent">
 
-        <View
-            android:id="@+id/space_view"
-            android:layout_width="0dp"
-            android:layout_height="@dimen/divider_line_space"
-            android:layout_weight="1" />
+                        <LinearLayout
+                            android:id="@+id/lock_status_layout"
+                            android:layout_width="match_parent"
+                            android:layout_height="match_parent"
+                            android:orientation="vertical">
 
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:gravity="right"
-            android:minHeight="@dimen/btn_layout_min_height"
-            android:orientation="horizontal"
-            android:padding="@dimen/common_spacing">
+                            <LinearLayout
+                                android:layout_width="match_parent"
+                                android:layout_height="@dimen/point_header_height"
+                                android:background="@drawable/common_layout_bg"
+                                android:divider="@drawable/divider_table"
+                                android:showDividers="middle">
 
-            <TextView
-                android:id="@+id/to_lock"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginLeft="@dimen/common_spacing"
-                android:background="@drawable/bg_btn_job_execute_go_locking"
-                android:drawableLeft="@drawable/icon_ticket_lock"
-                android:paddingHorizontal="@dimen/common_spacing"
-                android:text="@string/go_locking"
-                android:textColor="@color/white"
-                android:textSize="@dimen/common_btn_text_size"
-                android:visibility="gone" />
+                                <TextView
+                                    android:layout_width="0dp"
+                                    android:layout_height="match_parent"
+                                    android:layout_weight="1"
+                                    android:gravity="center"
+                                    android:text="@string/point_name_tv"
+                                    android:textSize="@dimen/common_text_size" />
 
-            <TextView
-                android:id="@+id/to_unlock"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginLeft="@dimen/common_spacing"
-                android:background="@drawable/bg_btn_job_execute_go_unlocking"
-                android:drawableLeft="@drawable/icon_ticket_unlock"
-                android:paddingHorizontal="@dimen/common_spacing"
-                android:text="@string/go_unlocking"
-                android:textColor="@color/white"
-                android:textSize="@dimen/common_btn_text_size"
-                android:visibility="gone" />
+                                <TextView
+                                    android:layout_width="0dp"
+                                    android:layout_height="match_parent"
+                                    android:layout_weight="1"
+                                    android:gravity="center"
+                                    android:text="@string/point_manage_point_function"
+                                    android:textSize="@dimen/common_text_size" />
 
-            <TextView
-                android:id="@+id/cancel_job"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginLeft="@dimen/common_spacing"
-                android:background="@drawable/bg_btn_job_execute_normal"
-                android:paddingHorizontal="@dimen/common_spacing"
-                android:text="@string/cancel_the_job"
-                android:textColor="@color/black"
-                android:textSize="@dimen/common_btn_text_size"
-                android:visibility="gone" />
+                                <TextView
+                                    android:layout_width="0dp"
+                                    android:layout_height="match_parent"
+                                    android:layout_weight="1"
+                                    android:gravity="center"
+                                    android:text="@string/lock_status"
+                                    android:textSize="@dimen/common_text_size" />
+                            </LinearLayout>
 
-            <TextView
-                android:id="@+id/finish_job"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginLeft="@dimen/common_spacing"
-                android:background="@drawable/bg_btn_job_execute_normal"
-                android:paddingHorizontal="@dimen/common_spacing"
-                android:text="@string/finish_the_job"
-                android:textColor="@color/black"
-                android:textSize="@dimen/common_btn_text_size"
-                android:visibility="gone" />
-        </LinearLayout>
+                            <androidx.recyclerview.widget.RecyclerView
+                                android:id="@+id/list_rv"
+                                android:layout_width="match_parent"
+                                android:layout_height="match_parent"
+                                android:background="@drawable/common_layout_bg" />
+                        </LinearLayout>
+
+                        <LinearLayout
+                            android:id="@+id/colocker_layout"
+                            android:layout_width="match_parent"
+                            android:layout_height="match_parent"
+                            android:divider="@drawable/divider_table"
+                            android:orientation="vertical"
+                            android:showDividers="middle"
+                            android:visibility="gone">
+
+                            <LinearLayout
+                                android:layout_width="match_parent"
+                                android:layout_height="@dimen/colocker_layout_height"
+                                android:background="@drawable/common_card_bg"
+                                android:divider="@drawable/divider_table"
+                                android:showDividers="middle">
+
+                                <TextView
+                                    android:id="@+id/wait_to_colock"
+                                    android:layout_width="0dp"
+                                    android:layout_height="match_parent"
+                                    android:layout_weight="1"
+                                    android:gravity="center"
+                                    android:text="@string/wait_to_colock"
+                                    android:textSize="@dimen/common_text_size" />
+
+                                <TextView
+                                    android:id="@+id/already_colock"
+                                    android:layout_width="0dp"
+                                    android:layout_height="match_parent"
+                                    android:layout_weight="1"
+                                    android:gravity="center"
+                                    android:text="@string/already_colock"
+                                    android:textSize="@dimen/common_text_size" />
+
+                                <TextView
+                                    android:id="@+id/already_uncolock"
+                                    android:layout_width="0dp"
+                                    android:layout_height="match_parent"
+                                    android:layout_weight="1"
+                                    android:gravity="center"
+                                    android:text="@string/already_uncolock"
+                                    android:textSize="@dimen/common_text_size" />
+                            </LinearLayout>
+
+                            <LinearLayout
+                                android:layout_width="match_parent"
+                                android:layout_height="match_parent"
+                                android:background="@drawable/common_card_bg"
+                                android:divider="@drawable/divider_table"
+                                android:orientation="horizontal"
+                                android:showDividers="middle">
+
+                                <androidx.recyclerview.widget.RecyclerView
+                                    android:id="@+id/wait_to_colock_rv"
+                                    android:layout_width="0dp"
+                                    android:layout_height="match_parent"
+                                    android:layout_weight="1"
+                                    android:padding="@dimen/common_spacing" />
+
+                                <androidx.recyclerview.widget.RecyclerView
+                                    android:id="@+id/already_colock_rv"
+                                    android:layout_width="0dp"
+                                    android:layout_height="match_parent"
+                                    android:layout_weight="1"
+                                    android:padding="@dimen/common_spacing" />
+
+                                <androidx.recyclerview.widget.RecyclerView
+                                    android:id="@+id/already_uncolock_rv"
+                                    android:layout_width="0dp"
+                                    android:layout_height="match_parent"
+                                    android:layout_weight="1"
+                                    android:padding="@dimen/common_spacing" />
+                            </LinearLayout>
+                        </LinearLayout>
+
+                        <TextView
+                            android:id="@+id/step_description_tv"
+                            android:layout_width="match_parent"
+                            android:layout_height="match_parent"
+                            android:textSize="@dimen/common_text_size"
+                            android:visibility="gone" />
+                    </FrameLayout>
+                </LinearLayout>
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:gravity="right"
+                    android:minHeight="@dimen/btn_layout_min_height"
+                    android:orientation="horizontal"
+                    android:padding="@dimen/common_spacing">
+
+                    <TextView
+                        android:id="@+id/to_lock"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="@dimen/common_spacing"
+                        android:background="@drawable/bg_btn_job_execute_go_locking"
+                        android:drawableLeft="@drawable/icon_ticket_lock"
+                        android:paddingHorizontal="@dimen/common_spacing"
+                        android:text="@string/go_locking"
+                        android:textColor="@color/white"
+                        android:textSize="@dimen/common_btn_text_size"
+                        android:visibility="gone" />
+
+                    <TextView
+                        android:id="@+id/to_unlock"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="@dimen/common_spacing"
+                        android:background="@drawable/bg_btn_job_execute_go_unlocking"
+                        android:drawableLeft="@drawable/icon_ticket_unlock"
+                        android:paddingHorizontal="@dimen/common_spacing"
+                        android:text="@string/go_unlocking"
+                        android:textColor="@color/white"
+                        android:textSize="@dimen/common_btn_text_size"
+                        android:visibility="gone" />
+
+                    <TextView
+                        android:id="@+id/cancel_job"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="@dimen/common_spacing"
+                        android:background="@drawable/bg_btn_job_execute_normal"
+                        android:paddingHorizontal="@dimen/common_spacing"
+                        android:text="@string/cancel_the_job"
+                        android:textColor="@color/black"
+                        android:textSize="@dimen/common_btn_text_size"
+                        android:visibility="gone" />
+
+                    <TextView
+                        android:id="@+id/finish_job"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="@dimen/common_spacing"
+                        android:background="@drawable/bg_btn_job_execute_normal"
+                        android:paddingHorizontal="@dimen/common_spacing"
+                        android:text="@string/finish_the_job"
+                        android:textColor="@color/black"
+                        android:textSize="@dimen/common_btn_text_size"
+                        android:visibility="gone" />
+                </LinearLayout>
+            </LinearLayout>
+        </FrameLayout>
     </LinearLayout>
 </layout>

+ 5 - 5
app/src/main/res/layout/fragment_job_manage.xml

@@ -14,12 +14,11 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
                 android:src="@mipmap/icon_data_manage_menu_user_manage" />
 
             <TextView
@@ -28,8 +27,9 @@
                 android:layout_marginLeft="@dimen/common_spacing"
                 android:layout_weight="1"
                 android:text="@string/job_manage_title"
+                android:textStyle="bold"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textSize="@dimen/normal_text_size_25" />
 
             <TextView
                 android:id="@+id/back"

+ 5 - 5
app/src/main/res/layout/fragment_key_manage.xml

@@ -14,12 +14,11 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
                 android:src="@mipmap/icon_data_manage_menu_user_manage" />
 
             <TextView
@@ -28,8 +27,9 @@
                 android:layout_marginLeft="@dimen/common_spacing"
                 android:layout_weight="1"
                 android:text="@string/key_manage_title"
+                android:textStyle="bold"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textSize="@dimen/normal_text_size_25" />
 
             <TextView
                 android:id="@+id/back"

+ 9 - 9
app/src/main/res/layout/fragment_lock_manage.xml

@@ -14,12 +14,11 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
                 android:src="@mipmap/icon_data_manage_menu_user_manage" />
 
             <TextView
@@ -27,9 +26,10 @@
                 android:layout_height="wrap_content"
                 android:layout_marginLeft="@dimen/common_spacing"
                 android:layout_weight="1"
-                android:text="@string/key_manage_title"
+                android:text="@string/lock_manage_title"
+                android:textStyle="bold"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textSize="@dimen/normal_text_size_25" />
 
             <TextView
                 android:id="@+id/back"
@@ -123,7 +123,7 @@
                 android:layout_height="match_parent"
                 android:layout_weight="1"
                 android:gravity="center"
-                android:text="@string/key_name"
+                android:text="@string/lock_name"
                 android:textSize="@dimen/common_text_size" />
 
             <TextView
@@ -131,7 +131,7 @@
                 android:layout_height="match_parent"
                 android:layout_weight="1"
                 android:gravity="center"
-                android:text="@string/key_nfc"
+                android:text="@string/lock_nfc"
                 android:textSize="@dimen/common_text_size" />
 
             <TextView
@@ -139,7 +139,7 @@
                 android:layout_height="match_parent"
                 android:layout_weight="1"
                 android:gravity="center"
-                android:text="@string/key_mac"
+                android:text="@string/status"
                 android:textSize="@dimen/common_text_size" />
         </LinearLayout>
 

+ 5 - 5
app/src/main/res/layout/fragment_locked_point.xml

@@ -14,12 +14,11 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
                 android:src="@mipmap/icon_data_manage_menu_user_manage" />
 
             <TextView
@@ -28,8 +27,9 @@
                 android:layout_marginLeft="@dimen/common_spacing"
                 android:layout_weight="1"
                 android:text="@string/locked_points_title"
+                android:textStyle="bold"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textSize="@dimen/normal_text_size_25" />
 
             <TextView
                 android:id="@+id/back"

+ 5 - 5
app/src/main/res/layout/fragment_point_manage.xml

@@ -14,12 +14,11 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
                 android:src="@mipmap/icon_data_manage_menu_user_manage" />
 
             <TextView
@@ -28,8 +27,9 @@
                 android:layout_marginLeft="@dimen/common_spacing"
                 android:layout_weight="1"
                 android:text="@string/point_manage_title"
+                android:textStyle="bold"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textSize="@dimen/normal_text_size_25" />
 
             <TextView
                 android:id="@+id/back"

+ 5 - 5
app/src/main/res/layout/fragment_reset_password.xml

@@ -16,12 +16,11 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
                 android:src="@mipmap/icon_data_manage_menu_user_manage" />
 
             <TextView
@@ -31,7 +30,8 @@
                 android:layout_weight="1"
                 android:text="@string/reset_password_title"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textStyle="bold"
+                android:textSize="@dimen/normal_text_size_25" />
 
             <TextView
                 android:id="@+id/back"

+ 9 - 9
app/src/main/res/layout/fragment_rfid_token_manage.xml

@@ -14,12 +14,11 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
                 android:src="@mipmap/icon_data_manage_menu_user_manage" />
 
             <TextView
@@ -27,9 +26,10 @@
                 android:layout_height="wrap_content"
                 android:layout_marginLeft="@dimen/common_spacing"
                 android:layout_weight="1"
-                android:text="@string/key_manage_title"
+                android:text="@string/rfid_token_manage_title"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textStyle="bold"
+                android:textSize="@dimen/normal_text_size_25" />
 
             <TextView
                 android:id="@+id/back"
@@ -123,7 +123,7 @@
                 android:layout_height="match_parent"
                 android:layout_weight="1"
                 android:gravity="center"
-                android:text="@string/key_name"
+                android:text="@string/rfid_name"
                 android:textSize="@dimen/common_text_size" />
 
             <TextView
@@ -131,7 +131,7 @@
                 android:layout_height="match_parent"
                 android:layout_weight="1"
                 android:gravity="center"
-                android:text="@string/key_nfc"
+                android:text="@string/rfid"
                 android:textSize="@dimen/common_text_size" />
 
             <TextView
@@ -139,7 +139,7 @@
                 android:layout_height="match_parent"
                 android:layout_weight="1"
                 android:gravity="center"
-                android:text="@string/key_mac"
+                android:text="@string/status"
                 android:textSize="@dimen/common_text_size" />
         </LinearLayout>
 

+ 5 - 5
app/src/main/res/layout/fragment_role_manage.xml

@@ -14,12 +14,11 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
                 android:src="@mipmap/icon_data_manage_menu_user_manage" />
 
             <TextView
@@ -29,7 +28,8 @@
                 android:layout_weight="1"
                 android:text="@string/role_manage_title"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textStyle="bold"
+                android:textSize="@dimen/normal_text_size_25" />
 
             <TextView
                 android:id="@+id/back"

+ 12 - 9
app/src/main/res/layout/fragment_select_memeber.xml

@@ -14,13 +14,12 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
                 android:id="@+id/preview_step_iv"
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
                 android:src="@mipmap/icon_data_manage_menu_user_manage" />
 
             <TextView
@@ -30,16 +29,19 @@
                 android:layout_marginLeft="@dimen/common_spacing"
                 android:text="@string/create_sop_title"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textStyle="bold"
+                android:textSize="@dimen/normal_text_size_25" />
 
             <ImageView
                 android:layout_width="wrap_content"
                 android:layout_height="match_parent"
-                android:src="@drawable/icon_arrow_right" />
+                android:scaleType="fitXY"
+                android:paddingHorizontal="@dimen/common_spacing"
+                android:src="@mipmap/icon_title_arrow_divider" />
 
             <ImageView
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
                 android:src="@mipmap/icon_data_manage_menu_role_manage" />
 
             <TextView
@@ -48,7 +50,8 @@
                 android:layout_marginLeft="@dimen/common_spacing"
                 android:text="@string/select_member_title"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textStyle="bold"
+                android:textSize="@dimen/normal_text_size_25" />
 
             <View
                 android:layout_width="0dp"

+ 12 - 9
app/src/main/res/layout/fragment_select_point.xml

@@ -14,13 +14,12 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
                 android:id="@+id/preview_step_iv"
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
                 android:src="@mipmap/icon_data_manage_menu_user_manage" />
 
             <TextView
@@ -30,16 +29,19 @@
                 android:layout_marginLeft="@dimen/common_spacing"
                 android:text="@string/create_sop_title"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textStyle="bold"
+                android:textSize="@dimen/normal_text_size_25" />
 
             <ImageView
                 android:layout_width="wrap_content"
                 android:layout_height="match_parent"
-                android:src="@drawable/icon_arrow_right" />
+                android:scaleType="fitXY"
+                android:paddingHorizontal="@dimen/common_spacing"
+                android:src="@mipmap/icon_title_arrow_divider" />
 
             <ImageView
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
                 android:src="@mipmap/icon_data_manage_menu_point_manage" />
 
             <TextView
@@ -48,7 +50,8 @@
                 android:layout_marginLeft="@dimen/common_spacing"
                 android:text="@string/select_point_title"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textStyle="bold"
+                android:textSize="@dimen/normal_text_size_25" />
 
             <View
                 android:layout_width="0dp"

+ 5 - 5
app/src/main/res/layout/fragment_sop_manage.xml

@@ -14,12 +14,11 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
                 android:src="@mipmap/icon_data_manage_menu_user_manage" />
 
             <TextView
@@ -29,7 +28,8 @@
                 android:layout_weight="1"
                 android:text="@string/sop_manage_title"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textStyle="bold"
+                android:textSize="@dimen/normal_text_size_25" />
 
             <TextView
                 android:id="@+id/back"

+ 5 - 5
app/src/main/res/layout/fragment_user_info.xml

@@ -16,12 +16,11 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
                 android:src="@mipmap/icon_data_manage_menu_user_manage" />
 
             <TextView
@@ -31,7 +30,8 @@
                 android:layout_weight="1"
                 android:text="@string/user_info_title"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textStyle="bold"
+                android:textSize="@dimen/normal_text_size_25" />
 
             <TextView
                 android:id="@+id/back"

+ 5 - 5
app/src/main/res/layout/fragment_user_manage.xml

@@ -14,12 +14,11 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
                 android:src="@mipmap/icon_data_manage_menu_user_manage" />
 
             <TextView
@@ -29,7 +28,8 @@
                 android:layout_weight="1"
                 android:text="@string/user_manage_title"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textStyle="bold"
+                android:textSize="@dimen/normal_text_size_25" />
 
             <TextView
                 android:id="@+id/back"

+ 388 - 0
app/src/main/res/layout/fragment_workflow_setting.xml

@@ -0,0 +1,388 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_margin="@dimen/common_spacing_2x"
+        android:background="@drawable/home_card_bg"
+        android:orientation="vertical">
+
+        <LinearLayout
+            android:id="@+id/title_layout"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center_vertical"
+            android:orientation="horizontal"
+            android:paddingHorizontal="@dimen/common_spacing">
+
+            <ImageView
+                android:id="@+id/preview_step_iv"
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
+                android:src="@mipmap/icon_data_manage_menu_user_manage" />
+
+            <TextView
+                android:id="@+id/preview_step_title"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/common_spacing"
+                android:text="@string/create_sop_title"
+                android:textColor="@color/black"
+                android:textSize="@dimen/normal_text_size_25"
+                android:textStyle="bold" />
+
+            <ImageView
+                android:layout_width="wrap_content"
+                android:layout_height="match_parent"
+                android:paddingHorizontal="@dimen/common_spacing"
+                android:scaleType="fitXY"
+                android:src="@mipmap/icon_title_arrow_divider" />
+
+            <ImageView
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
+                android:src="@mipmap/icon_workflow_setting" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/common_spacing"
+                android:text="@string/workflow_setting"
+                android:textColor="@color/black"
+                android:textSize="@dimen/normal_text_size_25"
+                android:textStyle="bold" />
+
+            <View
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_weight="1" />
+
+            <TextView
+                android:id="@+id/back"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginVertical="5dp"
+                android:layout_marginLeft="@dimen/common_spacing"
+                android:background="@drawable/common_btn"
+                android:drawableLeft="@mipmap/icon_back"
+                android:drawablePadding="@dimen/common_spacing"
+                android:gravity="center"
+                android:minHeight="@dimen/common_btn_height"
+                android:paddingHorizontal="@dimen/common_spacing_2x"
+                android:text="@string/back"
+                android:textColor="@color/black"
+                android:textSize="@dimen/common_btn_text_size" />
+        </LinearLayout>
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/divider_line_space"
+            android:background="@color/black" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:orientation="vertical">
+
+            <androidx.recyclerview.widget.RecyclerView
+                android:id="@+id/workflow_mode_rv"
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/step_rv_height"
+                android:layout_marginHorizontal="@dimen/common_spacing"
+                android:layout_marginTop="@dimen/common_spacing_2x" />
+
+            <androidx.core.widget.NestedScrollView
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:fillViewport="true"
+                android:scrollbars="vertical">
+
+                <androidx.constraintlayout.widget.ConstraintLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:padding="@dimen/common_spacing">
+
+                    <androidx.constraintlayout.widget.Barrier
+                        android:id="@+id/barrier_title_end"
+                        android:layout_width="0dp"
+                        android:layout_height="0dp"
+                        app:barrierDirection="end"
+                        app:constraint_referenced_ids="step_title_tv,step_title_short_tv,step_confirm_type_tv,step_confirm_role_tv,step_confirm_member_tv,step_function_tv,step_description_tv" />
+
+                    <com.grkj.ui_base.widget.RequiredTextView
+                        android:id="@+id/step_title_tv"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginVertical="@dimen/common_spacing_2x"
+                        android:text="@string/workflow_step_title"
+                        android:textSize="@dimen/normal_text_size_18"
+                        android:textStyle="bold"
+                        app:layout_constraintEnd_toEndOf="@+id/barrier_title_end"
+                        app:layout_constraintTop_toTopOf="parent"
+                        app:markPosition="end"
+                        app:required="true" />
+
+                    <EditText
+                        android:id="@+id/step_title_et"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginHorizontal="@dimen/common_spacing"
+                        android:background="@drawable/bg_common_input"
+                        android:hint="@string/please_input_step_title"
+                        android:maxLines="1"
+                        android:paddingHorizontal="@dimen/common_spacing"
+                        android:paddingVertical="5dp"
+                        android:singleLine="true"
+                        android:textSize="@dimen/normal_text_size_18"
+                        android:textStyle="bold"
+                        app:layout_constraintBottom_toBottomOf="@+id/step_title_tv"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toEndOf="@+id/barrier_title_end"
+                        app:layout_constraintTop_toTopOf="@+id/step_title_tv" />
+
+                    <com.grkj.ui_base.widget.RequiredTextView
+                        android:id="@+id/step_title_short_tv"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginVertical="@dimen/common_spacing_2x"
+                        android:text="@string/workflow_step_title_short"
+                        android:textSize="@dimen/normal_text_size_18"
+                        android:textStyle="bold"
+                        app:layout_constraintEnd_toEndOf="@+id/barrier_title_end"
+                        app:layout_constraintHorizontal_chainStyle="packed"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toBottomOf="@+id/step_title_tv"
+                        app:markPosition="end"
+                        app:required="true" />
+
+                    <EditText
+                        android:id="@+id/step_title_short_et"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginHorizontal="@dimen/common_spacing"
+                        android:background="@drawable/bg_common_input"
+                        android:hint="@string/please_input_step_title_short"
+                        android:maxLines="1"
+                        android:paddingHorizontal="@dimen/common_spacing"
+                        android:paddingVertical="5dp"
+                        android:singleLine="true"
+                        android:textSize="@dimen/normal_text_size_18"
+                        android:textStyle="bold"
+                        app:layout_constraintBottom_toBottomOf="@+id/step_title_short_tv"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toEndOf="@+id/barrier_title_end"
+                        app:layout_constraintTop_toTopOf="@+id/step_title_short_tv" />
+
+                    <com.grkj.ui_base.widget.RequiredTextView
+                        android:id="@+id/step_confirm_type_tv"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginVertical="@dimen/common_spacing_2x"
+                        android:text="@string/workflow_step_confirm_type"
+                        android:textSize="@dimen/normal_text_size_18"
+                        android:textStyle="bold"
+                        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:required="true" />
+
+                    <TextView
+                        android:id="@+id/step_confirm_type"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginHorizontal="@dimen/common_spacing"
+                        android:background="@drawable/bg_common_input"
+                        android:drawableRight="@mipmap/icon_drop_down"
+                        android:hint="@string/please_select_step_confirm_type"
+                        android:maxLines="1"
+                        android:paddingHorizontal="@dimen/common_spacing"
+                        android:paddingVertical="5dp"
+                        android:singleLine="true"
+                        android:textSize="@dimen/normal_text_size_18"
+                        android:textStyle="bold"
+                        app:layout_constraintBottom_toBottomOf="@+id/step_confirm_type_tv"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toEndOf="@+id/barrier_title_end"
+                        app:layout_constraintTop_toTopOf="@+id/step_confirm_type_tv" />
+
+                    <com.grkj.ui_base.widget.RequiredTextView
+                        android:id="@+id/step_confirm_role_tv"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginVertical="@dimen/common_spacing_2x"
+                        android:text="@string/workflow_step_confirm_role"
+                        android:textSize="@dimen/normal_text_size_18"
+                        android:textStyle="bold"
+                        android:visibility="gone"
+                        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:required="true" />
+
+                    <TextView
+                        android:id="@+id/step_confirm_role"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginHorizontal="@dimen/common_spacing"
+                        android:background="@drawable/bg_common_input"
+                        android:drawableRight="@mipmap/icon_drop_down"
+                        android:hint="@string/please_select_step_confirm_role"
+                        android:maxLines="1"
+                        android:paddingHorizontal="@dimen/common_spacing"
+                        android:paddingVertical="5dp"
+                        android:singleLine="true"
+                        android:textSize="@dimen/normal_text_size_18"
+                        android:textStyle="bold"
+                        android:visibility="gone"
+                        app:layout_constraintBottom_toBottomOf="@+id/step_confirm_role_tv"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toEndOf="@+id/barrier_title_end"
+                        app:layout_constraintTop_toTopOf="@+id/step_confirm_role_tv" />
+
+                    <com.grkj.ui_base.widget.RequiredTextView
+                        android:id="@+id/step_confirm_member_tv"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginVertical="@dimen/common_spacing_2x"
+                        android:text="@string/workflow_step_confirm_member"
+                        android:textSize="@dimen/normal_text_size_18"
+                        android:textStyle="bold"
+                        android:visibility="gone"
+                        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:required="false" />
+
+                    <TextView
+                        android:id="@+id/step_confirm_member"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginHorizontal="@dimen/common_spacing"
+                        android:background="@drawable/bg_common_input"
+                        android:drawableRight="@mipmap/icon_drop_down"
+                        android:hint="@string/please_select_step_confirm_member"
+                        android:maxLines="1"
+                        android:paddingHorizontal="@dimen/common_spacing"
+                        android:paddingVertical="5dp"
+                        android:singleLine="true"
+                        android:textSize="@dimen/normal_text_size_18"
+                        android:textStyle="bold"
+                        android:visibility="gone"
+                        app:layout_constraintBottom_toBottomOf="@+id/step_confirm_member_tv"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toEndOf="@+id/barrier_title_end"
+                        app:layout_constraintTop_toTopOf="@+id/step_confirm_member_tv" />
+
+                    <com.grkj.ui_base.widget.RequiredTextView
+                        android:id="@+id/step_function_tv"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginVertical="@dimen/common_spacing_2x"
+                        android:text="@string/workflow_step_function"
+                        android:textSize="@dimen/normal_text_size_18"
+                        android:textStyle="bold"
+                        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:required="true" />
+
+                    <androidx.recyclerview.widget.RecyclerView
+                        android:id="@+id/step_function_rv"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginHorizontal="10dp"
+                        android:nestedScrollingEnabled="false"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toEndOf="@+id/barrier_title_end"
+                        app:layout_constraintTop_toTopOf="@+id/step_function_tv" />
+
+                    <androidx.constraintlayout.widget.Barrier
+                        android:id="@+id/barrier_step_function_bottom"
+                        android:layout_width="0dp"
+                        android:layout_height="0dp"
+                        app:barrierDirection="bottom"
+                        app:constraint_referenced_ids="step_function_tv,step_function_rv" />
+
+                    <com.grkj.ui_base.widget.RequiredTextView
+                        android:id="@+id/step_description_tv"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginVertical="@dimen/common_spacing_2x"
+                        android:text="@string/workflow_step_description"
+                        android:textSize="@dimen/normal_text_size_18"
+                        android:textStyle="bold"
+                        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:required="true" />
+
+                    <EditText
+                        android:id="@+id/step_description_et"
+                        android:layout_width="0dp"
+                        android:layout_height="280dp"
+                        android:layout_marginHorizontal="@dimen/common_spacing"
+                        android:background="@drawable/bg_common_input"
+                        android:gravity="top"
+                        android:hint="@string/please_input_step_description"
+                        android:paddingHorizontal="@dimen/common_spacing"
+                        android:paddingVertical="5dp"
+                        android:scrollbars="vertical"
+                        android:textSize="@dimen/normal_text_size_18"
+                        android:textStyle="bold"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintStart_toEndOf="@+id/barrier_title_end"
+                        app:layout_constraintTop_toTopOf="@+id/step_description_tv" />
+
+                </androidx.constraintlayout.widget.ConstraintLayout>
+            </androidx.core.widget.NestedScrollView>
+
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="right"
+            android:orientation="horizontal"
+            android:padding="@dimen/common_spacing">
+
+            <TextView
+                android:id="@+id/confirm"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/common_spacing"
+                android:background="@drawable/common_btn_confirm"
+                android:drawableLeft="@mipmap/icon_confirm"
+                android:drawablePadding="@dimen/common_spacing"
+                android:gravity="center"
+                android:minHeight="@dimen/common_btn_height"
+                android:paddingHorizontal="@dimen/common_spacing_2x"
+                android:text="@string/confirm"
+                android:textColor="@color/white"
+                android:textSize="@dimen/common_btn_text_size" />
+
+            <TextView
+                android:id="@+id/cancel"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/common_spacing"
+                android:background="@drawable/common_btn_cancel"
+                android:drawableLeft="@mipmap/icon_cancel"
+                android:drawablePadding="@dimen/common_spacing"
+                android:gravity="center"
+                android:minHeight="@dimen/common_btn_height"
+                android:paddingHorizontal="@dimen/common_spacing_2x"
+                android:text="@string/cancel"
+                android:textColor="@color/white"
+                android:textSize="@dimen/common_btn_text_size" />
+        </LinearLayout>
+    </LinearLayout>
+</layout>

+ 5 - 5
app/src/main/res/layout/fragment_workstation_manage.xml

@@ -14,12 +14,11 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing">
 
             <ImageView
-                android:layout_width="@dimen/common_spacing_2x"
-                android:layout_height="@dimen/common_spacing_2x"
+                android:layout_width="@dimen/title_icon_size"
+                android:layout_height="@dimen/title_icon_size"
                 android:src="@mipmap/icon_data_manage_menu_user_manage" />
 
             <TextView
@@ -29,7 +28,8 @@
                 android:layout_weight="1"
                 android:text="@string/workstation_manage_title"
                 android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
+                android:textStyle="bold"
+                android:textSize="@dimen/normal_text_size_25" />
 
             <TextView
                 android:id="@+id/back"

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

@@ -28,7 +28,7 @@
                 android:layout_centerHorizontal="true"
                 android:layout_marginTop="@dimen/login_method_item_iv_margin"
                 android:adjustViewBounds="false"
-                android:scaleType="center"/>
+                android:scaleType="fitXY"/>
 
             <TextView
                 android:id="@+id/login_method_tv"

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

@@ -10,8 +10,8 @@
 
         <ImageView
             android:id="@+id/locker_icon"
-            android:layout_width="50dp"
-            android:layout_height="50dp"
+            android:layout_width="@dimen/icon_member_size"
+            android:layout_height="@dimen/icon_member_size"
             android:src="@drawable/icon_select_member" />
 
         <TextView

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

@@ -11,8 +11,8 @@
 
         <ImageView
             android:id="@+id/locker_icon"
-            android:layout_width="50dp"
-            android:layout_height="50dp"
+            android:layout_width="@dimen/icon_member_size"
+            android:layout_height="@dimen/icon_member_size"
             android:src="@drawable/icon_select_member" />
 
         <TextView

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

@@ -15,7 +15,7 @@
             android:layout_height="50dp"
             android:background="@drawable/bg_point_select"
             android:padding="@dimen/common_spacing_small"
-            android:src="@drawable/icon_select_member" />
+            android:src="@mipmap/icon_item_point" />
 
         <TextView
             android:id="@+id/point_name"

+ 14 - 0
app/src/main/res/layout/item_work_flow_step_function.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <TextView
+        android:id="@+id/step_function"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="@drawable/bg_common_input"
+        android:textColor="@color/black60"
+        android:paddingHorizontal="@dimen/common_spacing"
+        android:paddingVertical="5dp"
+        android:enabled="false"
+        android:textSize="@dimen/normal_text_size_18" />
+</layout>

BIN
app/src/main/res/mipmap-xhdpi/icon_avatar.png


BIN
app/src/main/res/mipmap-xhdpi/icon_data_manage_menu_point_manage.png


BIN
app/src/main/res/mipmap-xhdpi/icon_full_screen.png


BIN
app/src/main/res/mipmap-xhdpi/icon_item_point.png


BIN
app/src/main/res/mipmap-xhdpi/icon_job_execute.png


BIN
app/src/main/res/mipmap-xhdpi/icon_job_execute_colock.png


BIN
app/src/main/res/mipmap-xhdpi/icon_job_execute_info.png


BIN
app/src/main/res/mipmap-xhdpi/icon_job_execute_lock.png


BIN
app/src/main/res/mipmap-xhdpi/icon_job_manage_create_job.png


BIN
app/src/main/res/mipmap-xhdpi/icon_job_manage_create_sop.png


BIN
app/src/main/res/mipmap-xhdpi/icon_job_manage_in_progress_job.png


BIN
app/src/main/res/mipmap-xhdpi/icon_job_manage_sop_manage.png


BIN
app/src/main/res/mipmap-xhdpi/icon_logo.png


BIN
app/src/main/res/mipmap-xhdpi/icon_loto_step_1.png


BIN
app/src/main/res/mipmap-xhdpi/icon_loto_step_2.png


BIN
app/src/main/res/mipmap-xhdpi/icon_loto_step_4.png


BIN
app/src/main/res/mipmap-xhdpi/icon_loto_step_6.png


BIN
app/src/main/res/mipmap-xhdpi/icon_loto_step_7.png


BIN
app/src/main/res/mipmap-xhdpi/icon_loto_step_8.png


BIN
app/src/main/res/mipmap-xhdpi/icon_selected_member.png


BIN
app/src/main/res/mipmap-xhdpi/icon_step_colock.png


BIN
app/src/main/res/mipmap-xhdpi/icon_step_lock.png


BIN
app/src/main/res/mipmap-xhdpi/icon_step_select_member.png


BIN
app/src/main/res/mipmap-xhdpi/icon_step_unlock.png


BIN
app/src/main/res/mipmap-xhdpi/icon_title_arrow_divider.png


BIN
app/src/main/res/mipmap-xhdpi/icon_unselect_member.png


BIN
app/src/main/res/mipmap-xhdpi/icon_workflow_setting.png


+ 22 - 0
app/src/main/res/navigation/nav_job_manage.xml

@@ -43,6 +43,9 @@
         <action
             android:id="@+id/action_createJobFragment_to_selectMemberFragment"
             app:destination="@id/selectMemberFragment" />
+        <action
+            android:id="@+id/action_createJobFragment_to_workflowSettingFragment"
+            app:destination="@id/workflowSettingFragment" />
     </fragment>
     <fragment
         android:id="@+id/createSopFragment"
@@ -58,6 +61,9 @@
             app:destination="@id/selectMemberFragment"
             app:popUpToSaveState="true"
             app:restoreState="true" />
+        <action
+            android:id="@+id/action_createSopFragment_to_workflowSettingFragment"
+            app:destination="@id/workflowSettingFragment" />
     </fragment>
     <fragment
         android:id="@+id/selectMemberFragment"
@@ -74,6 +80,9 @@
         <action
             android:id="@+id/action_createSopJobFragment_to_selectMemberFragment"
             app:destination="@id/selectMemberFragment" />
+        <action
+            android:id="@+id/action_createSopJobFragment_to_workflowSettingFragment"
+            app:destination="@id/workflowSettingFragment" />
     </fragment>
     <fragment
         android:id="@+id/sopManageFragment"
@@ -93,6 +102,9 @@
         <action
             android:id="@+id/action_editSopFragment_to_selectPointFragment"
             app:destination="@id/selectPointFragment" />
+        <action
+            android:id="@+id/action_editSopFragment_to_workflowSettingFragment"
+            app:destination="@id/workflowSettingFragment" />
     </fragment>
     <fragment
         android:id="@+id/jobManageFragment"
@@ -129,6 +141,9 @@
             app:destination="@id/jobExecuteFragment"
             app:popUpTo="@id/editJobFragment"
             app:popUpToInclusive="true"  />
+        <action
+            android:id="@+id/action_editJobFragment_to_workflowSettingFragment"
+            app:destination="@id/workflowSettingFragment" />
     </fragment>
     <fragment
         android:id="@+id/editSopJobFragment"
@@ -142,6 +157,9 @@
             app:destination="@id/jobExecuteFragment"
             app:popUpTo="@id/editSopJobFragment"
             app:popUpToInclusive="true" />
+        <action
+            android:id="@+id/action_editSopJobFragment_to_workflowSettingFragment"
+            app:destination="@id/workflowSettingFragment" />
     </fragment>
     <fragment
         android:id="@+id/jobExecuteFragment"
@@ -167,4 +185,8 @@
         android:id="@+id/exceptionJobManageFragment"
         android:name="com.grkj.iscs.features.main.fragment.job_manage.ExceptionJobManageFragment"
         android:label="ExceptionJobManageFragment" />
+    <fragment
+        android:id="@+id/workflowSettingFragment"
+        android:name="com.grkj.iscs.features.main.fragment.common.WorkflowSettingFragment"
+        android:label="WorkflowSettingFragment" />
 </navigation>

+ 35 - 0
app/src/main/res/values-en/strings.xml

@@ -337,5 +337,40 @@
     <string name="rfid_already_registration">RFID already registration</string>
     <string name="please_input_username">Please input username</string>
     <string name="please_select_workflow_mode">Please select workflow mode</string>
+    <string name="workflow_setting">Workflow Setting</string>
+    <string name="current_workflow_mode_error">Current workflow mode error</string>
+    <string name="workflow_step_title">Step title</string>
+    <string name="please_input_step_title">Please input step title</string>
+    <string name="workflow_step_title_short">Step title short</string>
+    <string name="please_input_step_title_short">Please input step title short</string>
+    <string name="workflow_step_confirm_type">Execute confirm type</string>
+    <string name="please_select_step_confirm_type">Please select execute confirm type</string>
+    <string name="workflow_step_confirm_role">Execute confirm role</string>
+    <string name="please_select_step_confirm_role">Please select step confirm role</string>
+    <string name="workflow_step_confirm_member">Execute confirm member</string>
+    <string name="please_select_step_confirm_member">Please select step confirm member</string>
+    <string name="workflow_step_function">Step function</string>
+    <string name="workflow_step_description">Step description</string>
+    <string name="please_input_step_description">Please input step description</string>
+    <string name="set_locker">Set locker</string>
+    <string name="end_job">End job</string>
+    <string name="unlock">Unlock</string>
+    <string name="release_colocker">Release colocker</string>
+    <string name="reduce_colocker">Reduce colocker(%1$s)</string>
+    <string name="add_colocker">Add colocker(%1$s)</string>
+    <string name="colock">CoLock</string>
+    <string name="lock">Lock</string>
+    <string name="set_colocker">Set Colocker</string>
+    <string name="cancel_job">Cancel job</string>
+    <string name="no_goto_step">No navigate</string>
+    <string name="navigate_to_step">Navigate to step %1$d</string>
+    <string name="current_role_no_user">Current role have no users</string>
+    <string name="step_confirm_failed">Step Confirm failed</string>
+    <string name="job_execute_tab_title_lock">Lock</string>
+    <string name="job_execute_tab_title_colock">CoLock</string>
+    <string name="lock_manage_title">Lock Manage</string>
+    <string name="lock_name">Lock Code</string>
+    <string name="rfid_token_manage_title">RFID Manage</string>
+    <string name="rfid_name">RFID Code</string>
 
 </resources>

+ 6 - 1
app/src/main/res/values-land/dimens.xml

@@ -85,6 +85,11 @@
     <dimen name="home_menu_item_layout_size">180dp</dimen>
     <dimen name="home_menu_item_iv_layout_size">120dp</dimen>
     <dimen name="home_menu_item_iv_size">80dp</dimen>
-    <dimen name="home_menu_item_tv_text_size">25sp</dimen>
+    <dimen name="home_menu_item_tv_text_size">23sp</dimen>
     <dimen name="common_btn_height">40dp</dimen>
+    <dimen name="title_icon_size">40dp</dimen>
+    <dimen name="normal_text_size_25">25sp</dimen>
+    <dimen name="job_execute_info_size">40dp</dimen>
+    <dimen name="icon_member_size">30dp</dimen>
+    <dimen name="icon_add_point_or_member_size">60dp</dimen>
 </resources>

+ 35 - 0
app/src/main/res/values-zh/strings.xml

@@ -337,5 +337,40 @@
     <string name="rfid_already_registration">RFID标签已录入</string>
     <string name="please_input_username">请输入登录名</string>
     <string name="please_select_workflow_mode">请选择流程模式</string>
+    <string name="workflow_setting">流程设置</string>
+    <string name="current_workflow_mode_error">当前流程模式错误</string>
+    <string name="workflow_step_title">步骤标题</string>
+    <string name="please_input_step_title">请填写步骤标题</string>
+    <string name="workflow_step_title_short">步骤标题缩写</string>
+    <string name="please_input_step_title_short">请输入步骤标题缩写</string>
+    <string name="workflow_step_confirm_type">执行确认方式</string>
+    <string name="please_select_step_confirm_type">请选择执行确认方式</string>
+    <string name="workflow_step_confirm_role">执行确认角色</string>
+    <string name="please_select_step_confirm_role">请选择执行确认角色</string>
+    <string name="workflow_step_confirm_member">执行确认人员</string>
+    <string name="please_select_step_confirm_member">请选择执行确认人员</string>
+    <string name="workflow_step_function">步骤功能</string>
+    <string name="workflow_step_description">步骤操作说明</string>
+    <string name="please_input_step_description">请输入步骤操作说明</string>
+    <string name="set_locker">设置上锁人</string>
+    <string name="end_job">结束作业</string>
+    <string name="unlock">解锁</string>
+    <string name="release_colocker">解除共锁</string>
+    <string name="reduce_colocker">减少共锁人(%1$s)</string>
+    <string name="add_colocker">添加共锁人(%1$s)</string>
+    <string name="colock">共锁</string>
+    <string name="lock">上锁</string>
+    <string name="set_colocker">设置共锁人</string>
+    <string name="cancel_job">取消作业</string>
+    <string name="no_goto_step">无跳转</string>
+    <string name="navigate_to_step">跳转到第%1$d步</string>
+    <string name="current_role_no_user">当前角色暂无用户</string>
+    <string name="step_confirm_failed">步骤确认失败</string>
+    <string name="job_execute_tab_title_lock">锁定</string>
+    <string name="job_execute_tab_title_colock">共锁</string>
+    <string name="lock_manage_title">挂锁管理</string>
+    <string name="lock_name">挂锁名称</string>
+    <string name="rfid_token_manage_title">RFID管理</string>
+    <string name="rfid_name">RFID编号</string>
 
 </resources>

+ 6 - 1
app/src/main/res/values/dimens.xml

@@ -88,6 +88,11 @@
     <dimen name="home_menu_item_layout_size">180dp</dimen>
     <dimen name="home_menu_item_iv_layout_size">120dp</dimen>
     <dimen name="home_menu_item_iv_size">80dp</dimen>
-    <dimen name="home_menu_item_tv_text_size">25sp</dimen>
+    <dimen name="home_menu_item_tv_text_size">23sp</dimen>
     <dimen name="common_btn_height">40dp</dimen>
+    <dimen name="title_icon_size">40dp</dimen>
+    <dimen name="normal_text_size_25">25sp</dimen>
+    <dimen name="job_execute_info_size">40dp</dimen>
+    <dimen name="icon_member_size">30dp</dimen>
+    <dimen name="icon_add_point_or_member_size">60dp</dimen>
 </resources>

+ 35 - 0
app/src/main/res/values/strings.xml

@@ -340,5 +340,40 @@
     <string name="rfid_already_registration">RFID标签已录入</string>
     <string name="please_input_username">请输入登录名</string>
     <string name="please_select_workflow_mode">请选择流程模式</string>
+    <string name="workflow_setting">流程设置</string>
+    <string name="current_workflow_mode_error">当前流程模式错误</string>
+    <string name="workflow_step_title">步骤标题</string>
+    <string name="please_input_step_title">请填写步骤标题</string>
+    <string name="workflow_step_title_short">步骤标题缩写</string>
+    <string name="please_input_step_title_short">请输入步骤标题缩写</string>
+    <string name="workflow_step_confirm_type">执行确认方式</string>
+    <string name="please_select_step_confirm_type">请选择执行确认方式</string>
+    <string name="workflow_step_confirm_role">执行确认角色</string>
+    <string name="please_select_step_confirm_role">请选择执行确认角色</string>
+    <string name="workflow_step_confirm_member">执行确认人员</string>
+    <string name="please_select_step_confirm_member">请选择执行确认人员</string>
+    <string name="workflow_step_function">步骤功能</string>
+    <string name="workflow_step_description">步骤操作说明</string>
+    <string name="please_input_step_description">请输入步骤操作说明</string>
+    <string name="set_locker">设置上锁人</string>
+    <string name="end_job">结束作业</string>
+    <string name="unlock">解锁</string>
+    <string name="release_colocker">解除共锁</string>
+    <string name="reduce_colocker">减少共锁人(%1$s)</string>
+    <string name="add_colocker">添加共锁人(%1$s)</string>
+    <string name="colock">共锁</string>
+    <string name="lock">上锁</string>
+    <string name="set_colocker">设置共锁人</string>
+    <string name="cancel_job">取消作业</string>
+    <string name="no_goto_step">无跳转</string>
+    <string name="navigate_to_step">跳转到第%1$d步</string>
+    <string name="current_role_no_user">当前角色暂无用户</string>
+    <string name="step_confirm_failed">步骤确认失败</string>
+    <string name="job_execute_tab_title_lock">锁定</string>
+    <string name="job_execute_tab_title_colock">共锁</string>
+    <string name="lock_manage_title">挂锁管理</string>
+    <string name="lock_name">挂锁名称</string>
+    <string name="rfid_token_manage_title">RFID管理</string>
+    <string name="rfid_name">RFID编号</string>
 
 </resources>

+ 5 - 0
app/src/main/res/xml/badge_style.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<badge xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    app:badgeHeight="30dp"
+    app:badgeWidth="30dp" />

+ 8 - 5
data/src/main/java/com/grkj/data/dao/JobTicketDao.kt

@@ -4,6 +4,7 @@ import androidx.room.Dao
 import androidx.room.Insert
 import androidx.room.OnConflictStrategy
 import androidx.room.Query
+import androidx.room.Transaction
 import androidx.room.TypeConverters
 import androidx.room.Update
 import com.grkj.data.converters.Converters
@@ -106,6 +107,7 @@ interface JobTicketDao {
     /**
      * 获取作业票分页
      */
+    @Transaction
     @Query(
         """
         select ticket_id as ticketId,
@@ -113,8 +115,8 @@ interface JobTicketDao {
         ticket_status as ticketStatus,
         workstation_id as workstationId,
         sop_id as sopId,
-        mode_id as modeId
-        from is_job_ticket
+        mode_id
+        from is_job_ticket ijt
         order by update_time desc 
         limit :size offset :offset
     """
@@ -170,6 +172,7 @@ interface JobTicketDao {
     /**
      * 根据作业id获取作业数据
      */
+    @Transaction
     @Query(
         """
         select ticket_id as ticketId,
@@ -177,8 +180,8 @@ interface JobTicketDao {
         ticket_status as ticketStatus,
         workstation_id as workstationId,
         sop_id as sopId,
-        mode_id as modeId
-        from is_job_ticket
+        mode_id
+        from is_job_ticket ijt
         where ticket_id = :ticketId
     """
     )
@@ -377,7 +380,7 @@ interface JobTicketDao {
         j.ticket_id
     """
     )
-    fun getLockingTicketByPointId(ticketId: Long,pointIds: List<Long>): List<IsJobTicketDataVo>
+    fun getLockingTicketByPointId(ticketId: Long, pointIds: List<Long>): List<IsJobTicketDataVo>
 
     /**
      * 更新点位信息

+ 26 - 2
data/src/main/java/com/grkj/data/dao/UserDao.kt

@@ -9,6 +9,7 @@ import androidx.room.Update
 import com.grkj.data.converters.Converters
 import com.grkj.data.model.dos.SysUserCharacteristicDo
 import com.grkj.data.model.dos.SysUserDo
+import com.grkj.data.model.vo.SysUserVo
 import com.grkj.data.model.vo.UserManageVo
 
 /**
@@ -156,13 +157,15 @@ interface UserDao {
     /**
      * 获取指定角色的用户id
      */
-    @Query("""
+    @Query(
+        """
         SELECT u.user_id
             FROM sys_user AS u
             JOIN sys_user_role AS ur ON u.user_id = ur.user_id
             JOIN sys_role       AS r  ON ur.role_id  = r.role_id
             WHERE r.role_key = :roleKey;
-    """)
+    """
+    )
     fun getUsersByRoleKey(roleKey: String): List<Long>
 
     /**
@@ -170,4 +173,25 @@ interface UserDao {
      */
     @Query("select * from sys_user where del_flag = 0")
     fun getAllUsers(): List<SysUserDo>
+
+    /**
+     * 获取角色带权限
+     */
+    @Query("""
+        SELECT
+          su.*,
+          t.roleKeys
+        FROM sys_user su
+        LEFT JOIN (
+          SELECT
+            sur.user_id,
+            GROUP_CONCAT(DISTINCT sr.role_key) AS roleKeys
+          FROM sys_user_role sur
+          LEFT JOIN sys_role sr ON sur.role_id = sr.role_id
+          WHERE sr.del_flag = 0
+          GROUP BY sur.user_id
+        ) t ON su.user_id = t.user_id
+        WHERE su.del_flag = 0;
+    """)
+    fun getAllUsersWithRole(): List<SysUserVo>
 }

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä