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

fix(作业管理):
- 待办筛选完成

周文健 3 сар өмнө
parent
commit
94b200a083
35 өөрчлөгдсөн 2822 нэмэгдсэн , 2143 устгасан
  1. 1 1
      app/src/main/java/com/grkj/iscs/features/login/activity/LoginActivity.kt
  2. 40 4
      app/src/main/java/com/grkj/iscs/features/main/dialog/QuickEntranceConfigDialog.kt
  3. 93 0
      app/src/main/java/com/grkj/iscs/features/main/dialog/job_manage/TodoPointDetailDialog.kt
  4. 19 42
      app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/JobExecuteFragment.kt
  5. 50 14
      app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/MyTodoListFragment.kt
  6. 33 13
      app/src/main/java/com/grkj/iscs/features/main/viewmodel/job_manage/MyTodoViewModel.kt
  7. 12 12
      app/src/main/java/com/grkj/iscs/features/splash/activity/SplashActivity.kt
  8. 19 7
      app/src/main/res/layout-land/fragment_create_job.xml
  9. 19 7
      app/src/main/res/layout-land/fragment_create_sop_job.xml
  10. 19 7
      app/src/main/res/layout-land/fragment_edit_job.xml
  11. 19 7
      app/src/main/res/layout-land/fragment_edit_sop_job.xml
  12. 50 0
      app/src/main/res/layout-land/item_quick_entrance_not_config.xml
  13. 93 0
      app/src/main/res/layout/dialog_todo_point_detail.xml
  14. 369 344
      app/src/main/res/layout/fragment_create_job.xml
  15. 358 345
      app/src/main/res/layout/fragment_create_sop.xml
  16. 356 331
      app/src/main/res/layout/fragment_create_sop_job.xml
  17. 282 264
      app/src/main/res/layout/fragment_edit_job.xml
  18. 288 275
      app/src/main/res/layout/fragment_edit_sop.xml
  19. 300 275
      app/src/main/res/layout/fragment_edit_sop_job.xml
  20. 2 2
      app/src/main/res/layout/fragment_home.xml
  21. 8 5
      app/src/main/res/layout/fragment_select_memeber.xml
  22. 136 25
      app/src/main/res/layout/item_my_todo.xml
  23. 50 0
      app/src/main/res/layout/item_quick_entrance_not_config.xml
  24. 6 0
      app/src/main/res/values-en/strings.xml
  25. 6 0
      app/src/main/res/values-zh/strings.xml
  26. 1 1
      app/src/main/res/values/dimens.xml
  27. 6 0
      app/src/main/res/values/strings.xml
  28. 15 44
      data/src/main/java/com/grkj/data/dao/JobTicketDao.kt
  29. 32 29
      data/src/main/java/com/grkj/data/model/local/TodoStepJoin.kt
  30. 10 10
      data/src/main/java/com/grkj/data/model/vo/TodoItemVo.kt
  31. 1 2
      data/src/main/java/com/grkj/data/repository/IJobTicketRepository.kt
  32. 1 1
      data/src/main/java/com/grkj/data/repository/impl/network/NetworkJobTicketRepository.kt
  33. 126 74
      data/src/main/java/com/grkj/data/repository/impl/standard/JobTicketRepository.kt
  34. 1 1
      gradle/libs.versions.toml
  35. 1 1
      ui-base/src/main/res/drawable/common_layout_bg.xml

+ 1 - 1
app/src/main/java/com/grkj/iscs/features/login/activity/LoginActivity.kt

@@ -101,7 +101,7 @@ class LoginActivity : BaseActivity<ActivityLoginBinding>() {
         super.initData()
         viewModel.registerFaceFeature().observe(this) {}
         //todo 测试用,直接创建管理员账号
-//        viewModel.insertAdminAccount().observe(this){}
+        viewModel.insertAdminAccount().observe(this){}
         requestPermissionsIfNeeded(*Constants.needPermission) {
             if (it) {
                 logger.info("权限获取成功")

+ 40 - 4
app/src/main/java/com/grkj/iscs/features/main/dialog/QuickEntranceConfigDialog.kt

@@ -8,13 +8,17 @@ import com.drake.brv.BindingAdapter
 import com.drake.brv.annotaion.ItemOrientation
 import com.drake.brv.listener.DefaultItemTouchCallback
 import com.drake.brv.utils.setup
+import com.google.android.flexbox.AlignItems
+import com.google.android.flexbox.FlexDirection
 import com.google.android.flexbox.FlexboxLayoutManager
+import com.google.android.flexbox.JustifyContent
 import com.grkj.data.data.MMKVConstants
 import com.grkj.data.data.MainDomainData
 import com.grkj.data.enums.RoleFunctionalPermissionsEnum
 import com.grkj.iscs.R
 import com.grkj.iscs.databinding.DialogQuickEntranceConfigBinding
 import com.grkj.iscs.databinding.ItemQuickEntranceConfigBinding
+import com.grkj.iscs.databinding.ItemQuickEntranceNotConfigBinding
 import com.grkj.iscs.features.main.entity.QuickEntranceMenuItemEntity
 import com.grkj.ui_base.utils.extension.tip
 import com.kongzue.dialogx.dialogs.FullScreenDialog
@@ -76,8 +80,8 @@ class QuickEntranceConfigDialog(private val save: (String) -> Unit) :
     private lateinit var binding: DialogQuickEntranceConfigBinding
     override fun onBind(dialog: FullScreenDialog, contentView: View) {
         dialog.setMaskColor(Color.parseColor("#4D000000"))
-        binding = DialogQuickEntranceConfigBinding.bind(contentView)
         ActivityScreenShotImageView.hideContentView = true
+        binding = DialogQuickEntranceConfigBinding.bind(contentView)
         selectedQuickEntranceConfig = quickEntranceList.onEach {
             it.itemOrientationDrag = ItemOrientation.ALL
         }
@@ -101,11 +105,15 @@ class QuickEntranceConfigDialog(private val save: (String) -> Unit) :
             }
         }.models = selectedQuickEntranceConfig
         binding.allRvList.apply {
-            layoutManager = FlexboxLayoutManager(context)
+            layoutManager = FlexboxLayoutManager(context).apply {
+                flexDirection = FlexDirection.ROW        // 横向布局
+                justifyContent = JustifyContent.CENTER   // 主轴居中
+                alignItems = AlignItems.CENTER           // 交叉轴居中
+            }
         }.setup {
-            addType<QuickEntranceMenuItemEntity>(R.layout.item_quick_entrance_config)
+            addType<QuickEntranceMenuItemEntity>(R.layout.item_quick_entrance_not_config)
             onBind {
-                onQuickEntranceBinding(this, true)
+                onQuickEntranceNotConfigBinding(this, true)
             }
         }.models = allQuickEntranceConfig
         binding.save.setDebouncedClickListener {
@@ -146,6 +154,34 @@ class QuickEntranceConfigDialog(private val save: (String) -> Unit) :
         }
     }
 
+    private fun BindingAdapter.BindingViewHolder.onQuickEntranceNotConfigBinding(
+        holder: BindingAdapter.BindingViewHolder, showAdd: Boolean = false
+    ) {
+        val itemBinding = holder.getBinding<ItemQuickEntranceNotConfigBinding>()
+        val item = holder.getModel<QuickEntranceMenuItemEntity>()
+        itemBinding.homeMenuIv.setImageResource(item.menuIconId)
+        itemBinding.homeMenuTv.text = item.menuText
+        itemBinding.add.isVisible =
+            showAdd && !selectedQuickEntranceConfig.map { it.permission.functionalPermission }
+                .contains(item.permission.functionalPermission)
+        itemBinding.remove.isVisible = !showAdd
+        itemBinding.root.setDebouncedClickListener {
+            if (showAdd) {
+                if (selectedQuickEntranceConfig.size == 8) {
+                    PopTip.build().tip(R.string.quick_entrance_most_set_tip)
+                    return@setDebouncedClickListener
+                }
+                item.itemOrientationDrag = ItemOrientation.ALL
+                selectedQuickEntranceConfig.add(item)
+            } else {
+                item.itemOrientationDrag = ItemOrientation.NONE
+                selectedQuickEntranceConfig.removeIf { it.type == item.type }
+            }
+            binding.selectedRvList.adapter?.notifyDataSetChanged()
+            binding.allRvList.adapter?.notifyDataSetChanged()
+        }
+    }
+
 
     companion object {
         /**

+ 93 - 0
app/src/main/java/com/grkj/iscs/features/main/dialog/job_manage/TodoPointDetailDialog.kt

@@ -0,0 +1,93 @@
+package com.grkj.iscs.features.main.dialog.job_manage
+
+import android.graphics.Color
+import android.view.View
+import androidx.core.content.ContextCompat
+import androidx.core.view.isVisible
+import com.drake.brv.BindingAdapter
+import com.drake.brv.utils.linear
+import com.drake.brv.utils.setup
+import com.grkj.data.model.vo.IsJobTicketPointsDataVo
+import com.grkj.iscs.R
+import com.grkj.iscs.databinding.DialogTodoPointDetailBinding
+import com.grkj.iscs.databinding.ItemJobExecutePointBinding
+import com.kongzue.dialogx.dialogs.FullScreenDialog
+import com.kongzue.dialogx.interfaces.OnBindView
+import com.kongzue.dialogx.util.views.ActivityScreenShotImageView
+import com.sik.sikcore.extension.setDebouncedClickListener
+
+/**
+ * 待办点位明细
+ */
+class TodoPointDetailDialog(var ticketPoints: List<IsJobTicketPointsDataVo>) :
+    OnBindView<FullScreenDialog>(R.layout.dialog_todo_point_detail) {
+    private lateinit var binding: DialogTodoPointDetailBinding
+    override fun onBind(dialog: FullScreenDialog, v: View) {
+        dialog.setMaskColor(Color.parseColor("#4D000000"))
+        ActivityScreenShotImageView.hideContentView = true
+        binding = DialogTodoPointDetailBinding.bind(v)
+        binding.close.setDebouncedClickListener {
+            dialog.dismiss()
+        }
+        binding.listRv.linear().setup {
+            addType<IsJobTicketPointsDataVo>(R.layout.item_job_execute_point)
+            onBind {
+                onPointsRVListBinding(this)
+            }
+        }.models = ticketPoints
+    }
+
+    private fun BindingAdapter.BindingViewHolder.onPointsRVListBinding(holder: BindingAdapter.BindingViewHolder) {
+        val itemBinding = holder.getBinding<ItemJobExecutePointBinding>()
+        val item = holder.getModel<IsJobTicketPointsDataVo>()
+        itemBinding.pointName.text = item.pointName
+        itemBinding.pointGroup.text = item.groupName
+        itemBinding.pointFunction.text = item.pointFunction
+        itemBinding.lockStatusLayout.isVisible = item.pointStatus != "0"
+        when (item.pointStatus) {
+            "1" -> {
+                itemBinding.lockStatusTv.setTextColor(
+                    ContextCompat.getColor(
+                        context,
+                        R.color.white
+                    )
+                )
+                itemBinding.lockStatusLayout.setBackgroundResource(R.drawable.bg_btn_job_execute_go_locking)
+                itemBinding.lockStatusIv.setImageResource(R.drawable.icon_ticket_lock)
+            }
+
+            "2" -> {
+                itemBinding.lockStatusTv.setTextColor(
+                    ContextCompat.getColor(
+                        context,
+                        R.color.white
+                    )
+                )
+                itemBinding.lockStatusLayout.setBackgroundResource(R.drawable.bg_btn_job_execute_go_unlocking)
+                itemBinding.lockStatusIv.setImageResource(R.drawable.icon_ticket_unlock)
+            }
+
+            else -> {
+                itemBinding.lockStatusTv.setTextColor(
+                    ContextCompat.getColor(
+                        context,
+                        R.color.black
+                    )
+                )
+                itemBinding.lockStatusLayout.setBackgroundColor(context.getColor(R.color.white))
+                itemBinding.lockStatusIv.setImageResource(0)
+            }
+        }
+        itemBinding.lockStatusTv.text = item.lockerName
+    }
+
+    companion object {
+        /**
+         * 显示
+         */
+        @JvmStatic
+        fun show(ticketPoints: List<IsJobTicketPointsDataVo>) {
+            FullScreenDialog.show(TodoPointDetailDialog(ticketPoints))
+        }
+    }
+}

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

@@ -109,8 +109,7 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
                     popMenu.dismiss()
                     toLock(viewModel.groupInfo[position].groupId)
                     true
-                }
-                .show(requireActivity())
+                }.show(requireActivity())
         }
         binding.toUnlock.setDebouncedClickListener {
             if (viewModel.groupInfo.isEmpty()) {
@@ -123,8 +122,7 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
                     popMenu.dismiss()
                     toUnLock(viewModel.groupInfo[position].groupId)
                     true
-                }
-                .show(requireActivity())
+                }.show(requireActivity())
         }
         binding.waitToColockRv.grid(3).dividerSpace(10, DividerOrientation.GRID).setup {
             addType<IsJobTicketUserDataVo>(R.layout.item_job_execute_colock)
@@ -273,19 +271,10 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
                         )
                         return@observe
                     }
+                    //自动确认并且是设置上锁人或者共锁人
                     if (workflowStep?.confirmType != 0 && (workflowStep?.enableSetLocker == true || workflowStep?.enableSetColocker == true)) {
                         stepClickConfirm(adapter, item, workflowStep)
-                    } else if (workflowStep?.confirmType == 0 && workflowStep.confirmRoleCode == null && workflowStep.confirmUser == null) {
-                        stepClickConfirm(adapter, item, workflowStep)
-                    } else if (workflowStep?.confirmType == 0 && (workflowStep.confirmRoleCode != null && MainDomainData.roleKeys?.contains(
-                            workflowStep.confirmRoleCode!!
-                        ) == true) && workflowStep.confirmUser == null
-                    ) {
-                        stepClickConfirm(adapter, item, workflowStep)
-                    } else if (workflowStep?.confirmType == 0 && (workflowStep.confirmRoleCode != null && MainDomainData.roleKeys?.contains(
-                            workflowStep.confirmRoleCode!!
-                        ) == true) && (workflowStep.confirmUser != null && MainDomainData.userInfo?.userId == workflowStep.confirmUser)
-                    ) {
+                    } else if (workflowStep?.confirmType == 0 && (viewModel.ticketData?.createBy == MainDomainData.userInfo?.userName || workflowStep.currentUserCanConfirm())) {//手动确认 需要时创建者或者指定人员
                         stepClickConfirm(adapter, item, workflowStep)
                     } else {
                         val errorTipData = viewModel.getStepErrorTip(workflowStep)
@@ -351,16 +340,14 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
                 viewModel.ticketData!!.workstationId
             )
             GlobalDataTempStore.getInstance().saveData(
-                DataTransferConstants.KEY_SELECTED_MEMBER_LOCKER_DATA,
-                viewModel.selectedLockerData
+                DataTransferConstants.KEY_SELECTED_MEMBER_LOCKER_DATA, viewModel.selectedLockerData
             )
             GlobalDataTempStore.getInstance().saveData(
                 DataTransferConstants.KEY_SELECTED_MEMBER_COLOCKER_DATA,
                 viewModel.selecteColockerData
             )
             GlobalDataTempStore.getInstance().saveData(
-                DataTransferConstants.KEY_PREVIEW_STEP_TITLE_DATA,
-                viewModel.ticketData!!.ticketName
+                DataTransferConstants.KEY_PREVIEW_STEP_TITLE_DATA, viewModel.ticketData!!.ticketName
             )
             GlobalDataTempStore.getInstance().saveData(
                 DataTransferConstants.KEY_PREVIEW_STEP_ICON_DATA,
@@ -428,8 +415,7 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
             "1" -> {
                 itemBinding.lockStatusTv.setTextColor(
                     ContextCompat.getColor(
-                        requireContext(),
-                        R.color.white
+                        requireContext(), R.color.white
                     )
                 )
                 itemBinding.lockStatusLayout.setBackgroundResource(R.drawable.bg_btn_job_execute_go_locking)
@@ -439,8 +425,7 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
             "2" -> {
                 itemBinding.lockStatusTv.setTextColor(
                     ContextCompat.getColor(
-                        requireContext(),
-                        R.color.white
+                        requireContext(), R.color.white
                     )
                 )
                 itemBinding.lockStatusLayout.setBackgroundResource(R.drawable.bg_btn_job_execute_go_unlocking)
@@ -450,8 +435,7 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
             else -> {
                 itemBinding.lockStatusTv.setTextColor(
                     ContextCompat.getColor(
-                        requireContext(),
-                        R.color.black
+                        requireContext(), R.color.black
                     )
                 )
                 itemBinding.lockStatusLayout.setBackgroundColor(requireContext().getColor(R.color.white))
@@ -624,22 +608,16 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
                 viewModel.workflowSteps.find { it.stepId == viewModel.currentStepData?.workflowStepId }
             //步骤开启取消作业,并且点位还没有上锁,显示取消作业按钮
             binding.cancelJob.isVisible =
-                currentStep?.enableCancelJob == true && viewModel.ticketPoints.all { it.pointStatus == "0" } ||
-                        (viewModel.isUnlockFirst && currentStep?.enableCancelJob == true && viewModel.ticketPoints.all { it.pointStatus == "1" })
+                currentStep?.enableCancelJob == true && viewModel.ticketPoints.all { it.pointStatus == "0" } || (viewModel.isUnlockFirst && currentStep?.enableCancelJob == true && viewModel.ticketPoints.all { it.pointStatus == "1" })
             binding.toLock.isVisible =
                     //步骤开启上锁,并且点位都还没有上锁
                 (currentStep?.enableLock == true && viewModel.ticketPoints.any { it.pointStatus == "0" }) ||
                         //步骤开启共锁,并且点位都不存在没有上锁的
-                        (currentStep?.enableColock == true && viewModel.ticketPoints.all { it.pointStatus == "1" }) ||
-                        (currentStep?.enableLock == true && viewModel.isUnlockFirst && viewModel.ticketPoints.all { it.pointStatus == "2" })
+                        (currentStep?.enableColock == true && viewModel.ticketPoints.all { it.pointStatus == "1" }) || (currentStep?.enableLock == true && viewModel.isUnlockFirst && viewModel.ticketPoints.all { it.pointStatus == "2" })
             //步骤开启解锁,并且点位都已经上锁,并且如果支持共锁都已经解除
             binding.toUnlock.isVisible =
-                currentStep?.enableUnlock == true &&
-                        viewModel.ticketPoints.any { it.pointStatus == "1" } &&
-                        (viewModel.workflowModes.find { it.modeId == viewModel.ticketData?.modeId }?.isColockSupport == false ||
-                                (viewModel.workflowModes.find { it.modeId == viewModel.ticketData?.modeId }?.isColockSupport == true &&
-                                        viewModel.ticketUser.filter { it.userRole == RoleEnum.JTCOLOCKER.roleKey }
-                                            .all { it.jobStatus == "2" }))
+                currentStep?.enableUnlock == true && viewModel.ticketPoints.any { it.pointStatus == "1" } && (viewModel.workflowModes.find { it.modeId == viewModel.ticketData?.modeId }?.isColockSupport == false || (viewModel.workflowModes.find { it.modeId == viewModel.ticketData?.modeId }?.isColockSupport == true && viewModel.ticketUser.filter { it.userRole == RoleEnum.JTCOLOCKER.roleKey }
+                    .all { it.jobStatus == "2" }))
         }
     }
 
@@ -651,8 +629,9 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
             return
         }
         viewModel.getWorkflowModes().observe(this) {
-            viewModel.ticketId = GlobalDataTempStore.getInstance()
-                .getData(DataTransferConstants.KEY_JOB_TICKET_ID) ?: 0L
+            viewModel.ticketId =
+                GlobalDataTempStore.getInstance().getData(DataTransferConstants.KEY_JOB_TICKET_ID)
+                    ?: 0L
             getData()
         }
     }
@@ -711,11 +690,9 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
         if (GlobalDataTempStore.getInstance()
                 .hasData(DataTransferConstants.KEY_SELECTED_MEMBER_LOCKER_DATA)
         ) {
-            viewModel.selectedLockerData = GlobalDataTempStore.getInstance()
-                .getData(
-                    DataTransferConstants.KEY_SELECTED_MEMBER_LOCKER_DATA,
-                    Type.lockerGroupType
-                ) ?: listOf()
+            viewModel.selectedLockerData = GlobalDataTempStore.getInstance().getData(
+                DataTransferConstants.KEY_SELECTED_MEMBER_LOCKER_DATA, Type.lockerGroupType
+            ) ?: listOf()
             viewModel.checkMemberFinish = true
         }
         if (GlobalDataTempStore.getInstance()

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

@@ -14,6 +14,7 @@ import com.grkj.iscs.R
 import com.grkj.iscs.common.DataTransferConstants
 import com.grkj.iscs.databinding.FragmentMyTodoListBinding
 import com.grkj.iscs.databinding.ItemMyTodoBinding
+import com.grkj.iscs.features.main.dialog.job_manage.TodoPointDetailDialog
 import com.grkj.iscs.features.main.viewmodel.job_manage.MyTodoViewModel
 import com.grkj.ui_base.base.BaseFragment
 import com.grkj.ui_base.dialog.TipDialog
@@ -27,6 +28,14 @@ import dagger.hilt.android.AndroidEntryPoint
 @AndroidEntryPoint
 class MyTodoListFragment : BaseFragment<FragmentMyTodoListBinding>() {
     private val viewModel: MyTodoViewModel by viewModels()
+    private var isFirstEnter: Boolean = true
+    private val tabKey: List<String> by lazy {
+        listOf(
+            getString(R.string.wait_header),
+            getString(R.string.todo_header),
+            getString(R.string.done_header)
+        )
+    }
 
     override fun getLayoutId(): Int {
         return R.layout.fragment_my_todo_list
@@ -89,12 +98,7 @@ class MyTodoListFragment : BaseFragment<FragmentMyTodoListBinding>() {
             }
 
             else -> {
-                // 优先级判断:todo > wait > done
-                when {
-                    viewModel.todoData.isNotEmpty() -> viewModel.todoData to 1
-                    viewModel.waitData.isNotEmpty() -> viewModel.waitData to 0
-                    else -> viewModel.doneData to 2
-                }
+                viewModel.todoData to 1
             }
         }
 
@@ -111,16 +115,45 @@ class MyTodoListFragment : BaseFragment<FragmentMyTodoListBinding>() {
     }
 
 
+    private fun getTodoTitlePrefix(item: TodoItemVo): String {
+        return when {
+            !item.isCurrentStep && item.stepStatus == "0" -> "等待:"
+            else -> ""
+        }
+    }
+
     private fun onListDataBinding(holder: BindingAdapter.BindingViewHolder) {
         val itemBinding = holder.getBinding<ItemMyTodoBinding>()
         val item = holder.getModel<TodoItemVo>()
+        itemBinding.todoTitle.text =
+            "${getTodoTitlePrefix(item)}${item.todoType.todoTitle}${item.groupName?.let { if (it.isEmpty()) "(${item.todoContent})" else "(${it})" }}"
+        if (item.isCurrentStep) {
+            itemBinding.todoTitle.setTextColor(requireContext().getColor(R.color.tag_error))
+        } else {
+            itemBinding.todoTitle.setTextColor(requireContext().getColor(R.color.text_primary))
+        }
         itemBinding.jobName.text = item.ticketName
-        itemBinding.todoTitle.text = getString(R.string.todo_title, item.todoTitle)
-        itemBinding.todoContent.text = getString(R.string.todo_content, item.todoType.desc)
+        itemBinding.currentStep.isVisible = item.stepStatus == "0"
+        itemBinding.currentStepTv.isVisible = item.stepStatus == "0"
+        itemBinding.completeTime.isVisible = item.stepStatus == "1"
+        itemBinding.completeTimeTv.isVisible = item.stepStatus == "1"
+        itemBinding.completeTime.text = item.stepUpdateTime
+        itemBinding.currentStep.text = "${item.stepIndex}-${item.todoTitle}"
+        itemBinding.currentOperationTv.isVisible = !item.isCurrentStep && item.stepStatus == "0"
+        itemBinding.currentOperation.isVisible = !item.isCurrentStep && item.stepStatus == "0"
+        itemBinding.currentOperation.text =
+            item.previousTodoItem?.joinToString(",") { itemData -> "${itemData.todoType.todoTitle}${itemData.groupName?.let { if (it.isEmpty()) "(${itemData.todoContent})" else "(${it})" }}" }
+        itemBinding.btnPointDetail.isVisible =
+            item.todoType == OperationTypeEnum.LOCK_TAKE_KEY || item.todoType == OperationTypeEnum.UNLOCK_TAKE_KEY || item.todoType == OperationTypeEnum.LOCK_RETURN_KEY || item.todoType == OperationTypeEnum.UNLOCK_RETURN_KEY
         itemBinding.btnHandle.isVisible =
             item.isCurrentStep && item.todoType != OperationTypeEnum.LOCK_RETURN_KEY && item.todoType != OperationTypeEnum.UNLOCK_RETURN_KEY
+        itemBinding.btnPointDetail.setDebouncedClickListener {
+            viewModel.getTicketPointsData(item.ticketId).observe(this) {
+                TodoPointDetailDialog.show(it)
+            }
+        }
         itemBinding.btnHandle.setDebouncedClickListener {
-            if (item.todoType== OperationTypeEnum.UNKNOWN){
+            if (item.todoType == OperationTypeEnum.UNKNOWN) {
                 TipDialog.showError(getString(R.string.handle_unknown))
                 return@setDebouncedClickListener
             }
@@ -145,15 +178,18 @@ class MyTodoListFragment : BaseFragment<FragmentMyTodoListBinding>() {
     private fun getData() {
         viewModel.getMyTodoList().observe(this) {
             for (tabPosition in 0 until binding.tabLayout.tabCount) {
-                binding.tabLayout.getTabAt(tabPosition)?.badge?.text = "${
+                binding.tabLayout.getTabAt(tabPosition)?.text = "${tabKey[tabPosition]}${
                     when (tabPosition) {
-                        0 -> viewModel.waitData.size
-                        1 -> viewModel.todoData.size
-                        else -> viewModel.doneData.size
+                        0 -> "(${viewModel.waitData.size})"
+                        1 -> "(${viewModel.todoData.size})"
+                        else -> ""
                     }
                 }"
             }
-            filterAndUpdate()
+            if (isFirstEnter) {
+                isFirstEnter = false
+                filterAndUpdate()
+            }
         }
     }
 }

+ 33 - 13
app/src/main/java/com/grkj/iscs/features/main/viewmodel/job_manage/MyTodoViewModel.kt

@@ -5,8 +5,11 @@ import androidx.lifecycle.liveData
 import com.grkj.data.data.DictConstants
 import com.grkj.data.data.MainDomainData
 import com.grkj.data.enums.OperationTypeEnum
+import com.grkj.data.model.dos.IsJobTicketPoints
 import com.grkj.data.model.local.TodoStepJoin
+import com.grkj.data.model.local.isMyTodo
 import com.grkj.data.model.res.CommonDictRes
+import com.grkj.data.model.vo.IsJobTicketPointsDataVo
 import com.grkj.data.model.vo.TodoItemVo
 import com.grkj.data.repository.IJobTicketRepository
 import com.grkj.iscs.R
@@ -31,25 +34,26 @@ class MyTodoViewModel @Inject constructor(
     var doneData: MutableList<TodoItemVo> = mutableListOf()
     var todoStatus: List<CommonDictRes> = mutableListOf()
 
-    val tabKeys by lazy {
-        listOf(
-            CommonUtils.getStr(R.string.wait_header).toString(),
-            CommonUtils.getStr(R.string.todo_header).toString(),
-            CommonUtils.getStr(R.string.done_header).toString()
-        )
-    }
-
     /**
      * 获取待办列表
      */
     fun getMyTodoList(): LiveData<Boolean> {
         return liveData(Dispatchers.IO) {
+            val userInfo = MainDomainData.userInfo
+            if (userInfo == null) {
+                emit(true) // or emit(false) 根据语义定义
+                return@liveData
+            }
+
+            val userId = userInfo.userId
+            val userName = userInfo.userName
             todoItemVos.clear()
             todoStatus = DataBusiness.fetchDict(DictConstants.KEY_TODO_STATUS)
             jobTicketStatus = DataBusiness.fetchDict(DictConstants.KEY_JOB_TICKET_STATUS)
             val todoItemData = jobTicketRepository.getMyTodoList()
+            val myTodoStepJoin = todoItemData.filter { it.isMyTodo(userId, userName) }
             todoItemVos =
-                todoItemData.map { it.toTodoVo(todoItemData.filter { temp -> it.ticketId == temp.ticketId }) }
+                myTodoStepJoin.map { it.toTodoVo(todoItemData.filter { temp -> it.ticketId == temp.ticketId }) }
                     .toMutableList()
             splitTodoSteps(todoItemVos, 1)
             emit(true)
@@ -73,11 +77,13 @@ class MyTodoViewModel @Inject constructor(
             val pendingSteps = steps.filter { it.stepStatus == "0" }
 
             // 当前步骤 = 最小 stepIndex 的 pending
-            val todoStep = pendingSteps.minByOrNull { it.stepIndex }
-            todoStep?.let { tempTodo.add(it) }
+            val todoStep = pendingSteps.filter { it.isCurrentStep }
+            todoStep.let { tempTodo.addAll(it) }
 
             // 剩下的就是 wait
-            pendingSteps.filter { it != todoStep }.let { tempWait.addAll(it) }
+            pendingSteps.filter { it !in todoStep }.let {
+                tempWait.addAll(it)
+            }
 
             tempDone.addAll(doneSteps)
         }
@@ -113,8 +119,12 @@ class MyTodoViewModel @Inject constructor(
             this.todoContent = temp.stepDescription
             this.todoType = type
             this.groupId = temp.groupId
+            this.groupName = temp.groupName
             this.stepStatus = temp.stepStatus
+            this.stepUpdateTime = temp.stepUpdateTime
             this.createTime = temp.ticketStartTime
+            this.previousTodoItem =
+                temp.previousTodoStepJoin?.map { it.toTodoVo(sameTicketStepJoinData) }
         }
     }
 
@@ -138,7 +148,7 @@ class MyTodoViewModel @Inject constructor(
 
             OperationTypeEnum.CONFIRM -> CommonUtils.getStr(
                 R.string.handle_step_confirm,
-                listOf(item.todoTitle)
+                item.todoTitle.toString()
             ).toString()
 
             OperationTypeEnum.END -> CommonUtils.getStr(R.string.finish_job_tip).toString()
@@ -154,4 +164,14 @@ class MyTodoViewModel @Inject constructor(
 
         }
     }
+
+    /**
+     * 获取点位数据
+     */
+    fun getTicketPointsData(ticketId: Long): LiveData<List<IsJobTicketPointsDataVo>> {
+        return liveData(Dispatchers.IO) {
+            val ticketPoints = jobTicketRepository.getJobTicketPointsDataByTicketId(ticketId)
+            emit(ticketPoints)
+        }
+    }
 }

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

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

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

@@ -510,31 +510,43 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_marginRight="@dimen/common_spacing"
-                android:background="@drawable/common_btn"
+                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/save_and_execute"
-                android:textColor="@color/black"
+                android:textColor="@color/white"
                 android:textSize="@dimen/common_btn_text_size" />
 
             <TextView
                 android:id="@+id/save"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:background="@drawable/common_btn"
+                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/save"
-                android:textColor="@color/black"
+                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_marginHorizontal="@dimen/common_spacing"
-                android:background="@drawable/common_btn"
+                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/black"
+                android:textColor="@color/white"
                 android:textSize="@dimen/common_btn_text_size" />
         </LinearLayout>
     </LinearLayout>

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

@@ -476,31 +476,43 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_marginRight="@dimen/common_spacing"
-                android:background="@drawable/common_btn"
+                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/save_and_execute"
-                android:textColor="@color/black"
+                android:textColor="@color/white"
                 android:textSize="@dimen/common_btn_text_size" />
 
             <TextView
                 android:id="@+id/save"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:background="@drawable/common_btn"
+                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/save"
-                android:textColor="@color/black"
+                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_marginHorizontal="@dimen/common_spacing"
-                android:background="@drawable/common_btn"
+                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/black"
+                android:textColor="@color/white"
                 android:textSize="@dimen/common_btn_text_size" />
         </LinearLayout>
     </LinearLayout>

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

@@ -433,31 +433,43 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_marginRight="@dimen/common_spacing"
-                android:background="@drawable/common_btn"
+                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/save_and_execute"
-                android:textColor="@color/black"
+                android:textColor="@color/white"
                 android:textSize="@dimen/common_btn_text_size" />
 
             <TextView
                 android:id="@+id/save"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:background="@drawable/common_btn"
+                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/save"
-                android:textColor="@color/black"
+                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_marginHorizontal="@dimen/common_spacing"
-                android:background="@drawable/common_btn"
+                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/black"
+                android:textColor="@color/white"
                 android:textSize="@dimen/common_btn_text_size" />
         </LinearLayout>
     </LinearLayout>

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

@@ -416,31 +416,43 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_marginRight="@dimen/common_spacing"
-                android:background="@drawable/common_btn"
+                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/save_and_execute"
-                android:textColor="@color/black"
+                android:textColor="@color/white"
                 android:textSize="@dimen/common_btn_text_size" />
 
             <TextView
                 android:id="@+id/save"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:background="@drawable/common_btn"
+                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/save"
-                android:textColor="@color/black"
+                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_marginHorizontal="@dimen/common_spacing"
-                android:background="@drawable/common_btn"
+                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/black"
+                android:textColor="@color/white"
                 android:textSize="@dimen/common_btn_text_size" />
         </LinearLayout>
     </LinearLayout>

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

@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools">
+
+    <LinearLayout
+        android:layout_width="@dimen/home_item_quick_entrance_layout"
+        android:layout_height="@dimen/home_item_quick_entrance_layout"
+        android:layout_margin="@dimen/common_spacing"
+        android:gravity="center_horizontal"
+        android:orientation="vertical">
+
+        <FrameLayout
+            android:layout_width="@dimen/home_item_quick_entrance_iv_layout"
+            android:layout_height="@dimen/home_item_quick_entrance_iv_layout"
+            android:background="@drawable/bg_home_menu_item">
+
+            <ImageView
+                android:id="@+id/home_menu_iv"
+                android:layout_width="@dimen/home_item_quick_entrance_iv"
+                android:layout_height="@dimen/home_item_quick_entrance_iv"
+                android:layout_gravity="center" />
+
+            <ImageView
+                android:id="@+id/add"
+                android:layout_width="@dimen/common_badge_icon_size"
+                android:layout_height="@dimen/common_badge_icon_size"
+                android:layout_gravity="right|top"
+                android:src="@drawable/icon_add"
+                android:visibility="gone" />
+
+            <ImageView
+                android:id="@+id/remove"
+                android:layout_width="@dimen/common_badge_icon_size"
+                android:layout_height="@dimen/common_badge_icon_size"
+                android:layout_gravity="right|top"
+                android:src="@drawable/icon_remove"
+                android:visibility="gone" />
+        </FrameLayout>
+
+        <TextView
+            android:id="@+id/home_menu_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="@dimen/common_spacing_small"
+            android:textColor="@color/black"
+            android:textSize="@dimen/home_item_quick_entrace_text_size"
+            tools:text="创建作业" />
+    </LinearLayout>
+</layout>

+ 93 - 0
app/src/main/res/layout/dialog_todo_point_detail.xml

@@ -0,0 +1,93 @@
+<?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">
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@color/white">
+
+        <TextView
+            android:id="@+id/close"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:padding="@dimen/common_spacing_2x"
+            android:text="@string/close"
+            android:textColor="@color/tag_lock"
+            android:textSize="@dimen/common_text_size"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:padding="@dimen/common_spacing_2x"
+            android:text="@string/point_detail"
+            android:textColor="@color/black"
+            android:textSize="@dimen/common_text_size"
+            android:textStyle="bold"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <LinearLayout
+            android:id="@+id/lock_status_layout"
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:layout_margin="@dimen/common_spacing_2x"
+            android:orientation="vertical"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/close">
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:background="@drawable/common_layout_bg"
+                android:divider="@drawable/divider_table"
+                android:showDividers="middle">
+
+                <TextView
+                    android:layout_width="0dp"
+                    android:layout_height="match_parent"
+                    android:layout_weight="1"
+                    android:gravity="center"
+                    android:paddingVertical="@dimen/common_spacing"
+                    android:text="@string/point_name_tv"
+                    android:textSize="@dimen/common_text_size" />
+
+                <TextView
+                    android:layout_width="0dp"
+                    android:layout_height="match_parent"
+                    android:layout_weight="1"
+                    android:gravity="center"
+                    android:paddingVertical="@dimen/common_spacing"
+                    android:text="@string/point_manage_point_group"
+                    android:textSize="@dimen/common_text_size" />
+
+                <TextView
+                    android:layout_width="0dp"
+                    android:layout_height="match_parent"
+                    android:layout_weight="1"
+                    android:gravity="center"
+                    android:paddingVertical="@dimen/common_spacing"
+                    android:text="@string/point_manage_point_function"
+                    android:textSize="@dimen/common_text_size" />
+
+                <TextView
+                    android:layout_width="0dp"
+                    android:layout_height="match_parent"
+                    android:layout_weight="1"
+                    android:gravity="center"
+                    android:paddingVertical="@dimen/common_spacing"
+                    android:text="@string/lock_status"
+                    android:textSize="@dimen/common_text_size" />
+            </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>
+    </androidx.constraintlayout.widget.ConstraintLayout>
+</layout>

+ 369 - 344
app/src/main/res/layout/fragment_create_job.xml

@@ -53,422 +53,435 @@
             android:layout_height="@dimen/divider_line_space"
             android:background="@color/black" />
 
-        <LinearLayout
-            android:id="@+id/base_info_layout"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginHorizontal="@dimen/common_spacing_2x"
-            android:layout_marginTop="@dimen/common_spacing_2x"
-            android:layout_marginBottom="@dimen/common_spacing"
-            android:background="@drawable/home_card_bg"
-            android:gravity="center_vertical"
-            android:orientation="vertical">
-
-            <TextView
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginLeft="@dimen/common_spacing"
-                android:layout_weight="1"
-                android:text="@string/base_info_title"
-                android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
-
-            <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="wrap_content"
-                android:layout_marginTop="@dimen/common_spacing_2x"
-                android:gravity="center_vertical"
-                android:orientation="horizontal"
-                android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal">
-
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="@string/job_workstation"
-                    android:textColor="@color/black"
-                    android:textSize="@dimen/common_text_size" />
-
-                <TextView
-                    android:id="@+id/workstation_tv"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_marginLeft="@dimen/common_spacing"
-                    android:background="@drawable/bg_common_input"
-                    android:drawableRight="@mipmap/icon_drop_down"
-                    android:hint="@string/please_select_job_workstation"
-                    android:maxLines="1"
-                    android:paddingHorizontal="@dimen/common_spacing"
-                    android:paddingVertical="2dp"
-                    android:singleLine="true"
-                    android:textColor="@color/black"
-                    android:textSize="@dimen/common_text_size" />
-            </LinearLayout>
-
-            <LinearLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="@dimen/common_spacing_2x"
-                android:gravity="center_vertical"
-                android:orientation="horizontal"
-                android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal">
-
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="@string/workflow_mode"
-                    android:textColor="@color/black"
-                    android:textSize="@dimen/common_text_size" />
-
-                <TextView
-                    android:id="@+id/lock_mode_tv"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_marginLeft="@dimen/common_spacing"
-                    android:background="@drawable/bg_common_input"
-                    android:drawableRight="@mipmap/icon_drop_down"
-                    android:hint="@string/please_select_flow_mode"
-                    android:maxLines="1"
-                    android:paddingHorizontal="@dimen/common_spacing"
-                    android:paddingVertical="2dp"
-                    android:singleLine="true"
-                    android:textColor="@color/black"
-                    android:textSize="@dimen/common_text_size" />
-            </LinearLayout>
-
-            <LinearLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="@dimen/common_spacing_2x"
-                android:layout_marginBottom="@dimen/common_spacing_2x"
-                android:gravity="center_vertical"
-                android:orientation="horizontal"
-                android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal">
-
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="@string/create_job_name"
-                    android:textColor="@color/black"
-                    android:textSize="@dimen/common_text_size" />
-
-                <EditText
-                    android:id="@+id/job_name_et"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_marginLeft="@dimen/common_spacing"
-                    android:background="@drawable/bg_common_input"
-                    android:hint="@string/please_input_job_name"
-                    android:maxLines="1"
-                    android:paddingHorizontal="@dimen/common_spacing"
-                    android:paddingVertical="2dp"
-                    android:singleLine="true"
-                    android:textColor="@color/black"
-                    android:textSize="@dimen/common_text_size" />
-            </LinearLayout>
-        </LinearLayout>
-
-        <LinearLayout
+        <androidx.core.widget.NestedScrollView
             android:layout_width="match_parent"
-            android:layout_height="0dp"
+            android:layout_height="match_parent"
             android:layout_weight="1"
-            android:orientation="vertical">
+            android:fillViewport="true">
 
             <LinearLayout
-                android:id="@+id/workflow_mode_layout"
                 android:layout_width="match_parent"
-                android:layout_height="0dp"
-                android:layout_marginHorizontal="@dimen/common_spacing_2x"
-                android:layout_marginVertical="@dimen/common_spacing"
-                android:layout_weight="1"
-                android:background="@drawable/home_card_bg"
-                android:gravity="center_vertical"
+                android:layout_height="match_parent"
                 android:orientation="vertical">
 
                 <LinearLayout
+                    android:id="@+id/base_info_layout"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:orientation="horizontal">
+                    android:layout_marginHorizontal="@dimen/common_spacing_2x"
+                    android:layout_marginTop="@dimen/common_spacing_2x"
+                    android:layout_marginBottom="@dimen/common_spacing"
+                    android:background="@drawable/home_card_bg"
+                    android:gravity="center_vertical"
+                    android:orientation="vertical">
 
                     <TextView
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
-                        android:layout_gravity="center_vertical"
                         android:layout_marginLeft="@dimen/common_spacing"
                         android:layout_weight="1"
-                        android:text="@string/workflow_mode"
+                        android:text="@string/base_info_title"
                         android:textColor="@color/black"
                         android:textSize="@dimen/normal_text_size_18" />
 
-                    <TextView
-                        android:id="@+id/workflow_mode_setting_tv"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_margin="@dimen/common_spacing"
-                        android:background="@drawable/common_btn"
-                        android:paddingHorizontal="@dimen/common_spacing_2x"
-                        android:text="@string/settings"
-                        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" />
-
-                <FrameLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="match_parent"
-                    android:background="@drawable/card_white_bg">
-
-                    <androidx.recyclerview.widget.RecyclerView
-                        android:id="@+id/workflow_rv"
+                    <View
                         android:layout_width="match_parent"
-                        android:layout_height="match_parent"
-                        android:paddingHorizontal="@dimen/common_spacing"
-                        android:scrollbars="horizontal" />
-
-                    <TextView
-                        android:id="@+id/select_workflow_tip"
-                        android:layout_width="match_parent"
-                        android:layout_height="match_parent"
-                        android:background="@drawable/card_white_bg"
-                        android:gravity="center"
-                        android:paddingHorizontal="@dimen/common_spacing_2x"
-                        android:paddingVertical="@dimen/common_spacing"
-                        android:text="@string/please_select_workflow_mode"
-                        android:textColor="@color/color_black50"
-                        android:textSize="@dimen/normal_text_size_18" />
-                </FrameLayout>
-            </LinearLayout>
+                        android:layout_height="@dimen/divider_line_space"
+                        android:background="@color/black" />
 
-            <LinearLayout
-                android:id="@+id/point_info_layout"
-                android:layout_width="match_parent"
-                android:layout_height="0dp"
-                android:layout_marginHorizontal="@dimen/common_spacing_2x"
-                android:layout_marginVertical="@dimen/common_spacing"
-                android:layout_weight="1"
-                android:background="@drawable/home_card_bg"
-                android:gravity="center_vertical"
-                android:orientation="vertical">
-
-                <LinearLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:orientation="horizontal">
 
-                    <TextView
+                    <LinearLayout
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
-                        android:layout_gravity="center_vertical"
-                        android:layout_marginLeft="@dimen/common_spacing"
-                        android:layout_weight="1"
-                        android:text="@string/point_info_title"
-                        android:textColor="@color/black"
-                        android:textSize="@dimen/normal_text_size_18" />
-
-                    <TextView
-                        android:id="@+id/select_point_tv"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_margin="@dimen/common_spacing"
-                        android:background="@drawable/common_btn"
-                        android:paddingHorizontal="@dimen/common_spacing_2x"
-                        android:text="@string/select"
-                        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" />
+                        android:layout_marginTop="@dimen/common_spacing_2x"
+                        android:gravity="center_vertical"
+                        android:orientation="horizontal"
+                        android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal">
 
-                <FrameLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="match_parent">
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@string/job_workstation"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/common_text_size" />
 
-                    <androidx.recyclerview.widget.RecyclerView
-                        android:id="@+id/point_rv"
-                        android:layout_width="match_parent"
-                        android:layout_height="match_parent"
-                        android:paddingBottom="@dimen/common_spacing" />
+                        <TextView
+                            android:id="@+id/workstation_tv"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="@dimen/common_spacing"
+                            android:background="@drawable/bg_common_input"
+                            android:drawableRight="@mipmap/icon_drop_down"
+                            android:hint="@string/please_select_job_workstation"
+                            android:maxLines="1"
+                            android:paddingHorizontal="@dimen/common_spacing"
+                            android:paddingVertical="2dp"
+                            android:singleLine="true"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/common_text_size" />
+                    </LinearLayout>
 
                     <LinearLayout
-                        android:id="@+id/no_selected_point_layout"
                         android:layout_width="match_parent"
-                        android:layout_height="match_parent"
-                        android:background="@drawable/card_white_bg"
-                        android:gravity="center"
-                        android:orientation="vertical">
-
-                        <ImageView
-                            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" />
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="@dimen/common_spacing_2x"
+                        android:gravity="center_vertical"
+                        android:orientation="horizontal"
+                        android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal">
 
                         <TextView
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:gravity="center"
-                            android:paddingHorizontal="@dimen/common_spacing_2x"
-                            android:paddingVertical="@dimen/common_spacing"
-                            android:text="@string/please_must_select_at_least_one_point"
-                            android:textColor="@color/color_black50"
-                            android:textSize="@dimen/normal_text_size_18" />
-                    </LinearLayout>
-                </FrameLayout>
-            </LinearLayout>
-
-            <LinearLayout
-                android:id="@+id/member_info_layout"
-                android:layout_width="match_parent"
-                android:layout_height="0dp"
-                android:layout_marginHorizontal="@dimen/common_spacing_2x"
-                android:layout_marginVertical="@dimen/common_spacing"
-                android:layout_weight="1"
-                android:background="@drawable/home_card_bg"
-                android:gravity="center_vertical"
-                android:orientation="vertical">
+                            android:text="@string/workflow_mode"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/common_text_size" />
 
-                <LinearLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:orientation="horizontal">
+                        <TextView
+                            android:id="@+id/lock_mode_tv"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="@dimen/common_spacing"
+                            android:background="@drawable/bg_common_input"
+                            android:drawableRight="@mipmap/icon_drop_down"
+                            android:hint="@string/please_select_flow_mode"
+                            android:maxLines="1"
+                            android:paddingHorizontal="@dimen/common_spacing"
+                            android:paddingVertical="2dp"
+                            android:singleLine="true"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/common_text_size" />
+                    </LinearLayout>
 
-                    <TextView
+                    <LinearLayout
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
-                        android:layout_gravity="center_vertical"
-                        android:layout_marginLeft="@dimen/common_spacing"
-                        android:layout_weight="1"
-                        android:text="@string/member_info_title"
-                        android:textColor="@color/black"
-                        android:textSize="@dimen/normal_text_size_18" />
+                        android:layout_marginTop="@dimen/common_spacing_2x"
+                        android:layout_marginBottom="@dimen/common_spacing_2x"
+                        android:gravity="center_vertical"
+                        android:orientation="horizontal"
+                        android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal">
 
-                    <TextView
-                        android:id="@+id/select_member_tv"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_margin="@dimen/common_spacing"
-                        android:background="@drawable/common_btn"
-                        android:paddingHorizontal="@dimen/common_spacing_2x"
-                        android:text="@string/select"
-                        android:textColor="@color/black"
-                        android:textSize="@dimen/common_btn_text_size" />
-                </LinearLayout>
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@string/create_job_name"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/common_text_size" />
 
-                <View
-                    android:layout_width="match_parent"
-                    android:layout_height="@dimen/divider_line_space"
-                    android:background="@color/black" />
+                        <EditText
+                            android:id="@+id/job_name_et"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="@dimen/common_spacing"
+                            android:background="@drawable/bg_common_input"
+                            android:hint="@string/please_input_job_name"
+                            android:maxLines="1"
+                            android:paddingHorizontal="@dimen/common_spacing"
+                            android:paddingVertical="2dp"
+                            android:singleLine="true"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/common_text_size" />
+                    </LinearLayout>
+                </LinearLayout>
 
-                <FrameLayout
+                <LinearLayout
                     android:layout_width="match_parent"
-                    android:layout_height="match_parent">
+                    android:layout_height="0dp"
+                    android:layout_weight="1"
+                    android:orientation="vertical">
 
                     <LinearLayout
+                        android:id="@+id/workflow_mode_layout"
                         android:layout_width="match_parent"
-                        android:layout_height="match_parent"
-                        android:gravity="center"
-                        android:orientation="horizontal">
+                        android:layout_height="0dp"
+                        android:layout_marginHorizontal="@dimen/common_spacing_2x"
+                        android:layout_marginVertical="@dimen/common_spacing"
+                        android:layout_weight="1"
+                        android:background="@drawable/home_card_bg"
+                        android:gravity="center_vertical"
+                        android:orientation="vertical">
 
                         <LinearLayout
-                            android:layout_width="0dp"
-                            android:layout_height="match_parent"
-                            android:layout_weight="1"
-                            android:background="@drawable/home_card_bg"
-                            android:orientation="vertical">
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:orientation="horizontal">
+
+                            <TextView
+                                android:layout_width="match_parent"
+                                android:layout_height="wrap_content"
+                                android:layout_gravity="center_vertical"
+                                android:layout_marginLeft="@dimen/common_spacing"
+                                android:layout_weight="1"
+                                android:text="@string/workflow_mode"
+                                android:textColor="@color/black"
+                                android:textSize="@dimen/normal_text_size_18" />
 
                             <TextView
+                                android:id="@+id/workflow_mode_setting_tv"
                                 android:layout_width="wrap_content"
                                 android:layout_height="wrap_content"
-                                android:layout_gravity="center"
-                                android:gravity="center"
+                                android:layout_margin="@dimen/common_spacing"
+                                android:background="@drawable/common_btn"
                                 android:paddingHorizontal="@dimen/common_spacing_2x"
-                                android:paddingVertical="@dimen/common_spacing"
-                                android:text="@string/locker"
+                                android:text="@string/settings"
                                 android:textColor="@color/black"
-                                android:textSize="@dimen/normal_text_size_18" />
+                                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" />
+                        <View
+                            android:layout_width="match_parent"
+                            android:layout_height="@dimen/divider_line_space"
+                            android:background="@color/black" />
 
+                        <FrameLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="match_parent"
+                            android:background="@drawable/card_white_bg">
 
                             <androidx.recyclerview.widget.RecyclerView
-                                android:id="@+id/locker_rv"
-                                android:layout_width="wrap_content"
+                                android:id="@+id/workflow_rv"
+                                android:layout_width="match_parent"
                                 android:layout_height="match_parent"
-                                android:layout_gravity="center" />
-                        </LinearLayout>
-
-                        <LinearLayout
-                            android:id="@+id/select_colocker_layout"
-                            android:layout_width="0dp"
-                            android:layout_height="match_parent"
-                            android:layout_weight="1"
-                            android:background="@drawable/home_card_bg"
-                            android:orientation="vertical">
+                                android:paddingHorizontal="@dimen/common_spacing"
+                                android:scrollbars="horizontal" />
 
                             <TextView
+                                android:id="@+id/select_workflow_tip"
                                 android:layout_width="match_parent"
-                                android:layout_height="wrap_content"
+                                android:layout_height="match_parent"
+                                android:background="@drawable/card_white_bg"
                                 android:gravity="center"
                                 android:paddingHorizontal="@dimen/common_spacing_2x"
                                 android:paddingVertical="@dimen/common_spacing"
-                                android:text="@string/colocker"
-                                android:layout_gravity="center"
-                                android:textColor="@color/black"
+                                android:text="@string/please_select_workflow_mode"
+                                android:textColor="@color/color_black50"
                                 android:textSize="@dimen/normal_text_size_18" />
+                        </FrameLayout>
+                    </LinearLayout>
+
+                    <LinearLayout
+                        android:id="@+id/point_info_layout"
+                        android:layout_width="match_parent"
+                        android:layout_height="0dp"
+                        android:layout_marginHorizontal="@dimen/common_spacing_2x"
+                        android:layout_marginVertical="@dimen/common_spacing"
+                        android:layout_weight="1"
+                        android:background="@drawable/home_card_bg"
+                        android:gravity="center_vertical"
+                        android:orientation="vertical">
 
-                            <View
+                        <LinearLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:orientation="horizontal">
+
+                            <TextView
                                 android:layout_width="match_parent"
-                                android:layout_height="@dimen/divider_line_space"
-                                android:background="@color/black" />
+                                android:layout_height="wrap_content"
+                                android:layout_gravity="center_vertical"
+                                android:layout_marginLeft="@dimen/common_spacing"
+                                android:layout_weight="1"
+                                android:text="@string/point_info_title"
+                                android:textColor="@color/black"
+                                android:textSize="@dimen/normal_text_size_18" />
 
-                            <androidx.recyclerview.widget.RecyclerView
-                                android:id="@+id/colocker_rv"
+                            <TextView
+                                android:id="@+id/select_point_tv"
                                 android:layout_width="wrap_content"
-                                android:layout_height="match_parent" />
+                                android:layout_height="wrap_content"
+                                android:layout_margin="@dimen/common_spacing"
+                                android:background="@drawable/common_btn"
+                                android:paddingHorizontal="@dimen/common_spacing_2x"
+                                android:text="@string/select"
+                                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" />
+
+                        <FrameLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="match_parent">
+
+                            <androidx.recyclerview.widget.RecyclerView
+                                android:id="@+id/point_rv"
+                                android:layout_width="match_parent"
+                                android:layout_height="match_parent"
+                                android:paddingBottom="@dimen/common_spacing" />
+
+                            <LinearLayout
+                                android:id="@+id/no_selected_point_layout"
+                                android:layout_width="match_parent"
+                                android:layout_height="match_parent"
+                                android:background="@drawable/card_white_bg"
+                                android:gravity="center"
+                                android:orientation="vertical">
+
+                                <ImageView
+                                    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
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="wrap_content"
+                                    android:gravity="center"
+                                    android:paddingHorizontal="@dimen/common_spacing_2x"
+                                    android:paddingVertical="@dimen/common_spacing"
+                                    android:text="@string/please_must_select_at_least_one_point"
+                                    android:textColor="@color/color_black50"
+                                    android:textSize="@dimen/normal_text_size_18" />
+                            </LinearLayout>
+                        </FrameLayout>
                     </LinearLayout>
 
                     <LinearLayout
-                        android:id="@+id/no_selected_member_layout"
+                        android:id="@+id/member_info_layout"
                         android:layout_width="match_parent"
-                        android:layout_height="match_parent"
-                        android:background="@drawable/card_white_bg"
-                        android:gravity="center"
+                        android:layout_height="0dp"
+                        android:layout_marginHorizontal="@dimen/common_spacing_2x"
+                        android:layout_marginVertical="@dimen/common_spacing"
+                        android:layout_weight="1"
+                        android:background="@drawable/home_card_bg"
+                        android:gravity="center_vertical"
                         android:orientation="vertical">
 
-                        <ImageView
-                            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
-                            android:layout_width="wrap_content"
+                        <LinearLayout
+                            android:layout_width="match_parent"
                             android:layout_height="wrap_content"
-                            android:gravity="center"
-                            android:paddingHorizontal="@dimen/common_spacing_2x"
-                            android:paddingVertical="@dimen/common_spacing"
-                            android:text="@string/please_select_member"
-                            android:textColor="@color/color_black50"
-                            android:textSize="@dimen/normal_text_size_18" />
+                            android:orientation="horizontal">
+
+                            <TextView
+                                android:layout_width="match_parent"
+                                android:layout_height="wrap_content"
+                                android:layout_gravity="center_vertical"
+                                android:layout_marginLeft="@dimen/common_spacing"
+                                android:layout_weight="1"
+                                android:text="@string/member_info_title"
+                                android:textColor="@color/black"
+                                android:textSize="@dimen/normal_text_size_18" />
+
+                            <TextView
+                                android:id="@+id/select_member_tv"
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:layout_margin="@dimen/common_spacing"
+                                android:background="@drawable/common_btn"
+                                android:paddingHorizontal="@dimen/common_spacing_2x"
+                                android:text="@string/select"
+                                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" />
+
+                        <FrameLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="match_parent">
+
+                            <LinearLayout
+                                android:layout_width="match_parent"
+                                android:layout_height="match_parent"
+                                android:gravity="center"
+                                android:orientation="horizontal">
+
+                                <LinearLayout
+                                    android:layout_width="0dp"
+                                    android:layout_height="match_parent"
+                                    android:layout_weight="1"
+                                    android:background="@drawable/home_card_bg"
+                                    android:orientation="vertical">
+
+                                    <TextView
+                                        android:layout_width="wrap_content"
+                                        android:layout_height="wrap_content"
+                                        android:layout_gravity="center"
+                                        android:gravity="center"
+                                        android:paddingHorizontal="@dimen/common_spacing_2x"
+                                        android:paddingVertical="@dimen/common_spacing"
+                                        android:text="@string/locker"
+                                        android:textColor="@color/black"
+                                        android:textSize="@dimen/normal_text_size_18" />
+
+                                    <View
+                                        android:layout_width="match_parent"
+                                        android:layout_height="@dimen/divider_line_space"
+                                        android:background="@color/black" />
+
+
+                                    <androidx.recyclerview.widget.RecyclerView
+                                        android:id="@+id/locker_rv"
+                                        android:layout_width="wrap_content"
+                                        android:layout_height="match_parent"
+                                        android:layout_gravity="center" />
+                                </LinearLayout>
+
+                                <LinearLayout
+                                    android:id="@+id/select_colocker_layout"
+                                    android:layout_width="0dp"
+                                    android:layout_height="match_parent"
+                                    android:layout_weight="1"
+                                    android:background="@drawable/home_card_bg"
+                                    android:orientation="vertical">
+
+                                    <TextView
+                                        android:layout_width="match_parent"
+                                        android:layout_height="wrap_content"
+                                        android:layout_gravity="center"
+                                        android:gravity="center"
+                                        android:paddingHorizontal="@dimen/common_spacing_2x"
+                                        android:paddingVertical="@dimen/common_spacing"
+                                        android:text="@string/colocker"
+                                        android:textColor="@color/black"
+                                        android:textSize="@dimen/normal_text_size_18" />
+
+                                    <View
+                                        android:layout_width="match_parent"
+                                        android:layout_height="@dimen/divider_line_space"
+                                        android:background="@color/black" />
+
+                                    <androidx.recyclerview.widget.RecyclerView
+                                        android:id="@+id/colocker_rv"
+                                        android:layout_width="wrap_content"
+                                        android:layout_height="match_parent" />
+                                </LinearLayout>
+
+                            </LinearLayout>
+
+                            <LinearLayout
+                                android:id="@+id/no_selected_member_layout"
+                                android:layout_width="match_parent"
+                                android:layout_height="match_parent"
+                                android:background="@drawable/card_white_bg"
+                                android:gravity="center"
+                                android:orientation="vertical">
+
+                                <ImageView
+                                    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
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="wrap_content"
+                                    android:gravity="center"
+                                    android:paddingHorizontal="@dimen/common_spacing_2x"
+                                    android:paddingVertical="@dimen/common_spacing"
+                                    android:text="@string/please_select_member"
+                                    android:textColor="@color/color_black50"
+                                    android:textSize="@dimen/normal_text_size_18" />
+                            </LinearLayout>
+                        </FrameLayout>
                     </LinearLayout>
-                </FrameLayout>
+                </LinearLayout>
             </LinearLayout>
-        </LinearLayout>
+        </androidx.core.widget.NestedScrollView>
 
         <LinearLayout
             android:layout_width="match_parent"
@@ -495,31 +508,43 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_marginRight="@dimen/common_spacing"
-                android:background="@drawable/common_btn"
+                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/save_and_execute"
-                android:textColor="@color/black"
+                android:textColor="@color/white"
                 android:textSize="@dimen/common_btn_text_size" />
 
             <TextView
                 android:id="@+id/save"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:background="@drawable/common_btn"
+                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/save"
-                android:textColor="@color/black"
+                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_marginHorizontal="@dimen/common_spacing"
-                android:background="@drawable/common_btn"
+                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/black"
+                android:textColor="@color/white"
                 android:textSize="@dimen/common_btn_text_size" />
         </LinearLayout>
     </LinearLayout>

+ 358 - 345
app/src/main/res/layout/fragment_create_sop.xml

@@ -53,431 +53,444 @@
             android:layout_height="@dimen/divider_line_space"
             android:background="@color/black" />
 
-        <LinearLayout
-            android:id="@+id/base_info_layout"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginHorizontal="@dimen/common_spacing_2x"
-            android:layout_marginTop="@dimen/common_spacing_2x"
-            android:layout_marginBottom="@dimen/common_spacing"
-            android:background="@drawable/home_card_bg"
-            android:gravity="center_vertical"
-            android:orientation="vertical">
-
-            <TextView
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginLeft="@dimen/common_spacing"
-                android:layout_weight="1"
-                android:text="@string/base_info_title"
-                android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
-
-            <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="wrap_content"
-                android:layout_marginTop="@dimen/common_spacing_2x"
-                android:gravity="center_vertical"
-                android:orientation="horizontal"
-                android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal">
-
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="@string/sop_workstation"
-                    android:textColor="@color/black"
-                    android:textSize="@dimen/common_text_size" />
-
-                <TextView
-                    android:id="@+id/workstation_tv"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_marginLeft="@dimen/common_spacing"
-                    android:background="@drawable/bg_common_input"
-                    android:drawableRight="@mipmap/icon_drop_down"
-                    android:hint="@string/please_select_sop_workstation"
-                    android:maxLines="1"
-                    android:paddingHorizontal="@dimen/common_spacing"
-                    android:paddingVertical="2dp"
-                    android:singleLine="true"
-                    android:textColor="@color/black"
-                    android:textSize="@dimen/common_text_size" />
-            </LinearLayout>
-
-            <LinearLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="@dimen/common_spacing_2x"
-                android:gravity="center_vertical"
-                android:orientation="horizontal"
-                android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal">
-
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="@string/workflow_mode"
-                    android:textColor="@color/black"
-                    android:textSize="@dimen/common_text_size" />
-
-                <TextView
-                    android:id="@+id/lock_mode_tv"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_marginLeft="@dimen/common_spacing"
-                    android:background="@drawable/bg_common_input"
-                    android:drawableRight="@mipmap/icon_drop_down"
-                    android:hint="@string/please_select_flow_mode"
-                    android:maxLines="1"
-                    android:paddingHorizontal="@dimen/common_spacing"
-                    android:paddingVertical="2dp"
-                    android:singleLine="true"
-                    android:textColor="@color/black"
-                    android:textSize="@dimen/common_text_size" />
-            </LinearLayout>
-
-            <LinearLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="@dimen/common_spacing_2x"
-                android:layout_marginBottom="@dimen/common_spacing_2x"
-                android:gravity="center_vertical"
-                android:orientation="horizontal"
-                android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal">
-
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="@string/create_sop_name"
-                    android:textColor="@color/black"
-                    android:textSize="@dimen/common_text_size" />
-
-                <EditText
-                    android:id="@+id/sop_name_et"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_marginLeft="@dimen/common_spacing"
-                    android:background="@drawable/bg_common_input"
-                    android:hint="@string/please_input_sop_name"
-                    android:maxLines="1"
-                    android:paddingHorizontal="@dimen/common_spacing"
-                    android:paddingVertical="2dp"
-                    android:singleLine="true"
-                    android:textColor="@color/black"
-                    android:textSize="@dimen/common_text_size" />
-            </LinearLayout>
-        </LinearLayout>
-
-        <LinearLayout
+        <androidx.core.widget.NestedScrollView
             android:layout_width="match_parent"
-            android:layout_height="0dp"
+            android:layout_height="match_parent"
             android:layout_weight="1"
-            android:orientation="vertical">
+            android:fillViewport="true">
 
             <LinearLayout
-                android:id="@+id/workflow_mode_layout"
                 android:layout_width="match_parent"
-                android:layout_height="0dp"
-                android:layout_marginHorizontal="@dimen/common_spacing_2x"
-                android:layout_marginVertical="@dimen/common_spacing"
-                android:layout_weight="1"
-                android:background="@drawable/home_card_bg"
-                android:gravity="center_vertical"
+                android:layout_height="match_parent"
                 android:orientation="vertical">
 
                 <LinearLayout
+                    android:id="@+id/base_info_layout"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:orientation="horizontal">
+                    android:layout_marginHorizontal="@dimen/common_spacing_2x"
+                    android:layout_marginTop="@dimen/common_spacing_2x"
+                    android:layout_marginBottom="@dimen/common_spacing"
+                    android:background="@drawable/home_card_bg"
+                    android:gravity="center_vertical"
+                    android:orientation="vertical">
 
                     <TextView
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
-                        android:layout_gravity="center_vertical"
                         android:layout_marginLeft="@dimen/common_spacing"
                         android:layout_weight="1"
-                        android:text="@string/workflow_mode"
+                        android:text="@string/base_info_title"
                         android:textColor="@color/black"
                         android:textSize="@dimen/normal_text_size_18" />
 
-                    <TextView
-                        android:id="@+id/workflow_mode_setting_tv"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_marginVertical="5dp"
-                        android:layout_marginLeft="@dimen/common_spacing"
-                        android:layout_marginRight="@dimen/common_spacing"
-                        android:background="@drawable/common_btn"
-                        android:paddingHorizontal="@dimen/common_spacing_2x"
-                        android:text="@string/settings"
-                        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" />
-
-                <FrameLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="match_parent"
-                    android:background="@drawable/card_white_bg">
-
-                    <androidx.recyclerview.widget.RecyclerView
-                        android:id="@+id/workflow_rv"
+                    <View
                         android:layout_width="match_parent"
-                        android:layout_height="match_parent"
-                        android:paddingHorizontal="@dimen/common_spacing"
-                        android:scrollbars="horizontal" />
-
-                    <TextView
-                        android:id="@+id/select_workflow_tip"
-                        android:layout_width="match_parent"
-                        android:layout_height="match_parent"
-                        android:background="@drawable/card_white_bg"
-                        android:gravity="center"
-                        android:paddingHorizontal="@dimen/common_spacing_2x"
-                        android:paddingVertical="@dimen/common_spacing"
-                        android:text="@string/please_select_workflow_mode"
-                        android:textColor="@color/black"
-                        android:textSize="@dimen/normal_text_size_18" />
-                </FrameLayout>
-            </LinearLayout>
+                        android:layout_height="@dimen/divider_line_space"
+                        android:background="@color/black" />
 
-            <LinearLayout
-                android:id="@+id/point_info_layout"
-                android:layout_width="match_parent"
-                android:layout_height="0dp"
-                android:layout_marginHorizontal="@dimen/common_spacing_2x"
-                android:layout_marginVertical="@dimen/common_spacing"
-                android:layout_weight="1"
-                android:background="@drawable/home_card_bg"
-                android:gravity="center_vertical"
-                android:orientation="vertical">
 
-                <LinearLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:orientation="horizontal">
-
-                    <TextView
+                    <LinearLayout
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
-                        android:layout_gravity="center_vertical"
-                        android:layout_marginLeft="@dimen/common_spacing"
-                        android:layout_weight="1"
-                        android:text="@string/point_info_title"
-                        android:textColor="@color/black"
-                        android:textSize="@dimen/normal_text_size_18" />
+                        android:layout_marginTop="@dimen/common_spacing_2x"
+                        android:gravity="center_vertical"
+                        android:orientation="horizontal"
+                        android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal">
 
-                    <TextView
-                        android:id="@+id/select_point_tv"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_marginVertical="5dp"
-                        android:layout_marginLeft="@dimen/common_spacing"
-                        android:layout_marginRight="@dimen/common_spacing"
-                        android:background="@drawable/common_btn"
-                        android:paddingHorizontal="@dimen/common_spacing_2x"
-                        android:text="@string/select"
-                        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" />
-
-                <FrameLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="match_parent">
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@string/sop_workstation"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/common_text_size" />
 
-                    <androidx.recyclerview.widget.RecyclerView
-                        android:id="@+id/point_rv"
-                        android:layout_width="match_parent"
-                        android:layout_height="match_parent"
-                        android:paddingBottom="@dimen/common_spacing" />
+                        <TextView
+                            android:id="@+id/workstation_tv"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="@dimen/common_spacing"
+                            android:background="@drawable/bg_common_input"
+                            android:drawableRight="@mipmap/icon_drop_down"
+                            android:hint="@string/please_select_sop_workstation"
+                            android:maxLines="1"
+                            android:paddingHorizontal="@dimen/common_spacing"
+                            android:paddingVertical="2dp"
+                            android:singleLine="true"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/common_text_size" />
+                    </LinearLayout>
 
                     <LinearLayout
-                        android:id="@+id/no_selected_point_layout"
                         android:layout_width="match_parent"
-                        android:layout_height="match_parent"
-                        android:background="@drawable/card_white_bg"
-                        android:gravity="center"
-                        android:orientation="vertical">
-
-                        <ImageView
-                            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" />
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="@dimen/common_spacing_2x"
+                        android:gravity="center_vertical"
+                        android:orientation="horizontal"
+                        android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal">
 
                         <TextView
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:gravity="center"
-                            android:paddingHorizontal="@dimen/common_spacing_2x"
-                            android:paddingVertical="@dimen/common_spacing"
-                            android:text="@string/please_must_select_at_least_one_point"
-                            android:textColor="@color/black50"
-                            android:textSize="@dimen/normal_text_size_18" />
-                    </LinearLayout>
-                </FrameLayout>
+                            android:text="@string/workflow_mode"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/common_text_size" />
 
-            </LinearLayout>
-
-            <LinearLayout
-                android:id="@+id/member_info_layout"
-                android:layout_width="match_parent"
-                android:layout_height="0dp"
-                android:layout_marginHorizontal="@dimen/common_spacing_2x"
-
-                android:layout_marginVertical="@dimen/common_spacing"
-                android:layout_weight="1"
-                android:background="@drawable/home_card_bg"
-                android:gravity="center_vertical"
-                android:orientation="vertical">
-
-                <LinearLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:orientation="horizontal">
+                        <TextView
+                            android:id="@+id/lock_mode_tv"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="@dimen/common_spacing"
+                            android:background="@drawable/bg_common_input"
+                            android:drawableRight="@mipmap/icon_drop_down"
+                            android:hint="@string/please_select_flow_mode"
+                            android:maxLines="1"
+                            android:paddingHorizontal="@dimen/common_spacing"
+                            android:paddingVertical="2dp"
+                            android:singleLine="true"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/common_text_size" />
+                    </LinearLayout>
 
-                    <TextView
+                    <LinearLayout
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
-                        android:layout_gravity="center_vertical"
-                        android:layout_marginLeft="@dimen/common_spacing"
-                        android:layout_weight="1"
-                        android:text="@string/member_info_title"
-                        android:textColor="@color/black"
-                        android:textSize="@dimen/normal_text_size_18" />
+                        android:layout_marginTop="@dimen/common_spacing_2x"
+                        android:layout_marginBottom="@dimen/common_spacing_2x"
+                        android:gravity="center_vertical"
+                        android:orientation="horizontal"
+                        android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal">
 
-                    <TextView
-                        android:id="@+id/select_member_tv"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_marginVertical="5dp"
-                        android:layout_marginLeft="@dimen/common_spacing"
-                        android:layout_marginRight="@dimen/common_spacing"
-                        android:background="@drawable/common_btn"
-                        android:paddingHorizontal="@dimen/common_spacing_2x"
-                        android:text="@string/select"
-                        android:textColor="@color/black"
-                        android:textSize="@dimen/common_btn_text_size" />
-                </LinearLayout>
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@string/create_sop_name"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/common_text_size" />
 
-                <View
-                    android:layout_width="match_parent"
-                    android:layout_height="@dimen/divider_line_space"
-                    android:background="@color/black" />
+                        <EditText
+                            android:id="@+id/sop_name_et"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="@dimen/common_spacing"
+                            android:background="@drawable/bg_common_input"
+                            android:hint="@string/please_input_sop_name"
+                            android:maxLines="1"
+                            android:paddingHorizontal="@dimen/common_spacing"
+                            android:paddingVertical="2dp"
+                            android:singleLine="true"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/common_text_size" />
+                    </LinearLayout>
+                </LinearLayout>
 
-                <FrameLayout
+                <LinearLayout
                     android:layout_width="match_parent"
-                    android:layout_height="match_parent">
+                    android:layout_height="0dp"
+                    android:layout_weight="1"
+                    android:orientation="vertical">
 
                     <LinearLayout
+                        android:id="@+id/workflow_mode_layout"
                         android:layout_width="match_parent"
-                        android:layout_height="match_parent"
-                        android:gravity="center"
-                        android:orientation="horizontal">
+                        android:layout_height="0dp"
+                        android:layout_marginHorizontal="@dimen/common_spacing_2x"
+                        android:layout_marginVertical="@dimen/common_spacing"
+                        android:layout_weight="1"
+                        android:background="@drawable/home_card_bg"
+                        android:gravity="center_vertical"
+                        android:orientation="vertical">
 
                         <LinearLayout
-                            android:layout_width="0dp"
-                            android:layout_height="match_parent"
-                            android:layout_weight="1"
-                            android:background="@drawable/home_card_bg"
-                            android:orientation="vertical">
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:orientation="horizontal">
 
                             <TextView
+                                android:layout_width="match_parent"
+                                android:layout_height="wrap_content"
+                                android:layout_gravity="center_vertical"
+                                android:layout_marginLeft="@dimen/common_spacing"
+                                android:layout_weight="1"
+                                android:text="@string/workflow_mode"
+                                android:textColor="@color/black"
+                                android:textSize="@dimen/normal_text_size_18" />
+
+                            <TextView
+                                android:id="@+id/workflow_mode_setting_tv"
                                 android:layout_width="wrap_content"
                                 android:layout_height="wrap_content"
-                                android:gravity="center"
-                                android:layout_gravity="center"
+                                android:layout_marginVertical="5dp"
+                                android:layout_marginLeft="@dimen/common_spacing"
+                                android:layout_marginRight="@dimen/common_spacing"
+                                android:background="@drawable/common_btn"
                                 android:paddingHorizontal="@dimen/common_spacing_2x"
-                                android:paddingVertical="@dimen/common_spacing"
-                                android:text="@string/locker"
+                                android:text="@string/settings"
                                 android:textColor="@color/black"
-                                android:textSize="@dimen/normal_text_size_18" />
+                                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" />
+                        <View
+                            android:layout_width="match_parent"
+                            android:layout_height="@dimen/divider_line_space"
+                            android:background="@color/black" />
 
+                        <FrameLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="match_parent"
+                            android:background="@drawable/card_white_bg">
 
                             <androidx.recyclerview.widget.RecyclerView
-                                android:id="@+id/locker_rv"
-                                android:layout_width="wrap_content"
+                                android:id="@+id/workflow_rv"
+                                android:layout_width="match_parent"
                                 android:layout_height="match_parent"
-                                android:layout_gravity="center" />
-                        </LinearLayout>
-
-                        <LinearLayout
-                            android:id="@+id/select_colocker_layout"
-                            android:layout_width="0dp"
-                            android:layout_height="match_parent"
-                            android:layout_weight="1"
-                            android:background="@drawable/home_card_bg"
-                            android:orientation="vertical">
+                                android:paddingHorizontal="@dimen/common_spacing"
+                                android:scrollbars="horizontal" />
 
                             <TextView
+                                android:id="@+id/select_workflow_tip"
                                 android:layout_width="match_parent"
-                                android:layout_height="wrap_content"
+                                android:layout_height="match_parent"
+                                android:background="@drawable/card_white_bg"
                                 android:gravity="center"
                                 android:paddingHorizontal="@dimen/common_spacing_2x"
                                 android:paddingVertical="@dimen/common_spacing"
-                                android:text="@string/colocker"
+                                android:text="@string/please_select_workflow_mode"
                                 android:textColor="@color/black"
-                                android:layout_gravity="center"
                                 android:textSize="@dimen/normal_text_size_18" />
+                        </FrameLayout>
+                    </LinearLayout>
 
-                            <View
+                    <LinearLayout
+                        android:id="@+id/point_info_layout"
+                        android:layout_width="match_parent"
+                        android:layout_height="0dp"
+                        android:layout_marginHorizontal="@dimen/common_spacing_2x"
+                        android:layout_marginVertical="@dimen/common_spacing"
+                        android:layout_weight="1"
+                        android:background="@drawable/home_card_bg"
+                        android:gravity="center_vertical"
+                        android:orientation="vertical">
+
+                        <LinearLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:orientation="horizontal">
+
+                            <TextView
                                 android:layout_width="match_parent"
-                                android:layout_height="@dimen/divider_line_space"
-                                android:background="@color/black" />
+                                android:layout_height="wrap_content"
+                                android:layout_gravity="center_vertical"
+                                android:layout_marginLeft="@dimen/common_spacing"
+                                android:layout_weight="1"
+                                android:text="@string/point_info_title"
+                                android:textColor="@color/black"
+                                android:textSize="@dimen/normal_text_size_18" />
 
-                            <androidx.recyclerview.widget.RecyclerView
-                                android:id="@+id/colocker_rv"
+                            <TextView
+                                android:id="@+id/select_point_tv"
                                 android:layout_width="wrap_content"
-                                android:layout_height="match_parent" />
+                                android:layout_height="wrap_content"
+                                android:layout_marginVertical="5dp"
+                                android:layout_marginLeft="@dimen/common_spacing"
+                                android:layout_marginRight="@dimen/common_spacing"
+                                android:background="@drawable/common_btn"
+                                android:paddingHorizontal="@dimen/common_spacing_2x"
+                                android:text="@string/select"
+                                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" />
+
+                        <FrameLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="match_parent">
+
+                            <androidx.recyclerview.widget.RecyclerView
+                                android:id="@+id/point_rv"
+                                android:layout_width="match_parent"
+                                android:layout_height="match_parent"
+                                android:paddingBottom="@dimen/common_spacing" />
+
+                            <LinearLayout
+                                android:id="@+id/no_selected_point_layout"
+                                android:layout_width="match_parent"
+                                android:layout_height="match_parent"
+                                android:background="@drawable/card_white_bg"
+                                android:gravity="center"
+                                android:orientation="vertical">
+
+                                <ImageView
+                                    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
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="wrap_content"
+                                    android:gravity="center"
+                                    android:paddingHorizontal="@dimen/common_spacing_2x"
+                                    android:paddingVertical="@dimen/common_spacing"
+                                    android:text="@string/please_must_select_at_least_one_point"
+                                    android:textColor="@color/black50"
+                                    android:textSize="@dimen/normal_text_size_18" />
+                            </LinearLayout>
+                        </FrameLayout>
+
                     </LinearLayout>
 
                     <LinearLayout
-                        android:id="@+id/no_selected_member_layout"
+                        android:id="@+id/member_info_layout"
                         android:layout_width="match_parent"
-                        android:layout_height="match_parent"
-                        android:background="@drawable/card_white_bg"
-                        android:gravity="center"
-                        android:orientation="vertical">
+                        android:layout_height="0dp"
+                        android:layout_marginHorizontal="@dimen/common_spacing_2x"
 
-                        <ImageView
-                            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" />
+                        android:layout_marginVertical="@dimen/common_spacing"
+                        android:layout_weight="1"
+                        android:background="@drawable/home_card_bg"
+                        android:gravity="center_vertical"
+                        android:orientation="vertical">
 
-                        <TextView
-                            android:layout_width="wrap_content"
+                        <LinearLayout
+                            android:layout_width="match_parent"
                             android:layout_height="wrap_content"
-                            android:gravity="center"
-                            android:paddingHorizontal="@dimen/common_spacing_2x"
-                            android:paddingVertical="@dimen/common_spacing"
-                            android:text="@string/please_select_member"
-                            android:textColor="@color/black50"
-                            android:textSize="@dimen/normal_text_size_18" />
+                            android:orientation="horizontal">
+
+                            <TextView
+                                android:layout_width="match_parent"
+                                android:layout_height="wrap_content"
+                                android:layout_gravity="center_vertical"
+                                android:layout_marginLeft="@dimen/common_spacing"
+                                android:layout_weight="1"
+                                android:text="@string/member_info_title"
+                                android:textColor="@color/black"
+                                android:textSize="@dimen/normal_text_size_18" />
+
+                            <TextView
+                                android:id="@+id/select_member_tv"
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:layout_marginVertical="5dp"
+                                android:layout_marginLeft="@dimen/common_spacing"
+                                android:layout_marginRight="@dimen/common_spacing"
+                                android:background="@drawable/common_btn"
+                                android:paddingHorizontal="@dimen/common_spacing_2x"
+                                android:text="@string/select"
+                                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" />
+
+                        <FrameLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="match_parent">
+
+                            <LinearLayout
+                                android:layout_width="match_parent"
+                                android:layout_height="match_parent"
+                                android:gravity="center"
+                                android:orientation="horizontal">
+
+                                <LinearLayout
+                                    android:layout_width="0dp"
+                                    android:layout_height="match_parent"
+                                    android:layout_weight="1"
+                                    android:background="@drawable/home_card_bg"
+                                    android:orientation="vertical">
+
+                                    <TextView
+                                        android:layout_width="wrap_content"
+                                        android:layout_height="wrap_content"
+                                        android:layout_gravity="center"
+                                        android:gravity="center"
+                                        android:paddingHorizontal="@dimen/common_spacing_2x"
+                                        android:paddingVertical="@dimen/common_spacing"
+                                        android:text="@string/locker"
+                                        android:textColor="@color/black"
+                                        android:textSize="@dimen/normal_text_size_18" />
+
+                                    <View
+                                        android:layout_width="match_parent"
+                                        android:layout_height="@dimen/divider_line_space"
+                                        android:background="@color/black" />
+
+
+                                    <androidx.recyclerview.widget.RecyclerView
+                                        android:id="@+id/locker_rv"
+                                        android:layout_width="wrap_content"
+                                        android:layout_height="match_parent"
+                                        android:layout_gravity="center" />
+                                </LinearLayout>
+
+                                <LinearLayout
+                                    android:id="@+id/select_colocker_layout"
+                                    android:layout_width="0dp"
+                                    android:layout_height="match_parent"
+                                    android:layout_weight="1"
+                                    android:background="@drawable/home_card_bg"
+                                    android:orientation="vertical">
+
+                                    <TextView
+                                        android:layout_width="match_parent"
+                                        android:layout_height="wrap_content"
+                                        android:layout_gravity="center"
+                                        android:gravity="center"
+                                        android:paddingHorizontal="@dimen/common_spacing_2x"
+                                        android:paddingVertical="@dimen/common_spacing"
+                                        android:text="@string/colocker"
+                                        android:textColor="@color/black"
+                                        android:textSize="@dimen/normal_text_size_18" />
+
+                                    <View
+                                        android:layout_width="match_parent"
+                                        android:layout_height="@dimen/divider_line_space"
+                                        android:background="@color/black" />
+
+                                    <androidx.recyclerview.widget.RecyclerView
+                                        android:id="@+id/colocker_rv"
+                                        android:layout_width="wrap_content"
+                                        android:layout_height="match_parent" />
+                                </LinearLayout>
+
+                            </LinearLayout>
+
+                            <LinearLayout
+                                android:id="@+id/no_selected_member_layout"
+                                android:layout_width="match_parent"
+                                android:layout_height="match_parent"
+                                android:background="@drawable/card_white_bg"
+                                android:gravity="center"
+                                android:orientation="vertical">
+
+                                <ImageView
+                                    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
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="wrap_content"
+                                    android:gravity="center"
+                                    android:paddingHorizontal="@dimen/common_spacing_2x"
+                                    android:paddingVertical="@dimen/common_spacing"
+                                    android:text="@string/please_select_member"
+                                    android:textColor="@color/black50"
+                                    android:textSize="@dimen/normal_text_size_18" />
+                            </LinearLayout>
+                        </FrameLayout>
                     </LinearLayout>
-                </FrameLayout>
-            </LinearLayout>
 
-        </LinearLayout>
+                </LinearLayout>
+            </LinearLayout>
+        </androidx.core.widget.NestedScrollView>
 
         <LinearLayout
             android:layout_width="match_parent"

+ 356 - 331
app/src/main/res/layout/fragment_create_sop_job.xml

@@ -54,404 +54,417 @@
             android:layout_height="@dimen/divider_line_space"
             android:background="@color/black" />
 
-        <LinearLayout
-            android:id="@+id/base_info_layout"
+        <androidx.core.widget.NestedScrollView
             android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginHorizontal="@dimen/common_spacing_2x"
-            android:layout_marginTop="@dimen/common_spacing_2x"
-            android:layout_marginBottom="@dimen/common_spacing"
-            android:background="@drawable/home_card_bg"
-            android:gravity="center_vertical"
-            android:orientation="vertical">
-
-            <TextView
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginLeft="@dimen/common_spacing"
-                android:text="@string/base_info_title"
-                android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
-
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="@dimen/divider_line_space"
-                android:background="@color/black" />
-
-            <androidx.constraintlayout.widget.ConstraintLayout
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal"
-                android:paddingBottom="@dimen/common_spacing_2x">
-
-                <TextView
-                    android:id="@+id/sop_workstation_tv"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="@dimen/common_spacing_2x"
-                    android:text="@string/sop_workstation"
-                    android:textColor="@color/black"
-                    android:textSize="@dimen/common_text_size"
-                    app:layout_constraintStart_toStartOf="parent"
-                    app:layout_constraintTop_toTopOf="parent" />
-
-                <TextView
-                    android:id="@+id/workstation_tv"
-                    android:layout_width="0dp"
-                    android:layout_height="wrap_content"
-                    android:layout_marginLeft="@dimen/common_spacing"
-                    android:background="@drawable/bg_common_input"
-                    android:drawableRight="@mipmap/icon_drop_down"
-                    android:hint="@string/please_select_sop_workstation"
-                    android:maxLines="1"
-                    android:paddingHorizontal="@dimen/common_spacing"
-                    android:paddingVertical="2dp"
-                    android:singleLine="true"
-                    android:textColor="@color/black"
-                    android:textSize="@dimen/common_text_size"
-                    app:layout_constraintBottom_toBottomOf="@+id/sop_workstation_tv"
-                    app:layout_constraintEnd_toEndOf="parent"
-                    app:layout_constraintStart_toEndOf="@+id/sop_workstation_tv"
-                    app:layout_constraintTop_toTopOf="@+id/sop_workstation_tv" />
-
-                <TextView
-                    android:id="@+id/sop_title"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="@dimen/common_spacing_2x"
-                    android:text="@string/create_sop_job_sop"
-                    android:textColor="@color/black"
-                    android:textSize="@dimen/common_text_size"
-                    app:layout_constraintEnd_toEndOf="@+id/sop_workstation_tv"
-                    app:layout_constraintTop_toBottomOf="@+id/sop_workstation_tv" />
-
-                <TextView
-                    android:id="@+id/sop_tv"
-                    android:layout_width="0dp"
-                    android:layout_height="wrap_content"
-                    android:layout_marginLeft="@dimen/common_spacing"
-                    android:background="@drawable/bg_common_input"
-                    android:drawableRight="@mipmap/icon_drop_down"
-                    android:hint="@string/please_select_sop"
-                    android:maxLines="1"
-                    android:paddingHorizontal="@dimen/common_spacing"
-                    android:paddingVertical="2dp"
-                    android:singleLine="true"
-                    android:textColor="@color/black"
-                    android:textSize="@dimen/common_text_size"
-                    app:layout_constraintBottom_toBottomOf="@+id/sop_title"
-                    app:layout_constraintEnd_toEndOf="parent"
-                    app:layout_constraintStart_toEndOf="@+id/sop_title"
-                    app:layout_constraintTop_toTopOf="@+id/sop_title" />
-
-                <TextView
-                    android:id="@+id/job_name_tv"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="@dimen/common_spacing_2x"
-                    android:text="@string/job_name"
-                    android:textColor="@color/black"
-                    android:textSize="@dimen/common_text_size"
-                    app:layout_constraintEnd_toEndOf="@+id/sop_title"
-                    app:layout_constraintTop_toBottomOf="@+id/sop_title" />
-
-                <EditText
-                    android:id="@+id/job_name_et"
-                    android:layout_width="0dp"
-                    android:layout_height="wrap_content"
-                    android:layout_marginLeft="@dimen/common_spacing"
-                    android:background="@drawable/bg_common_input"
-                    android:hint="@string/please_input_job_name"
-                    android:maxLines="1"
-                    android:paddingHorizontal="@dimen/common_spacing"
-                    android:paddingVertical="2dp"
-                    android:singleLine="true"
-                    android:textColor="@color/black"
-                    android:textSize="@dimen/common_text_size"
-                    app:layout_constraintBottom_toBottomOf="@+id/job_name_tv"
-                    app:layout_constraintEnd_toEndOf="parent"
-                    app:layout_constraintStart_toEndOf="@+id/job_name_tv"
-                    app:layout_constraintTop_toTopOf="@+id/job_name_tv" />
-            </androidx.constraintlayout.widget.ConstraintLayout>
-
-        </LinearLayout>
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="0dp"
+            android:layout_height="match_parent"
             android:layout_weight="1"
-            android:orientation="vertical">
+            android:fillViewport="true">
 
             <LinearLayout
-                android:id="@+id/workflow_mode_layout"
                 android:layout_width="match_parent"
-                android:layout_height="0dp"
-                android:layout_marginHorizontal="@dimen/common_spacing_2x"
-                android:layout_marginVertical="@dimen/common_spacing"
-                android:layout_weight="1"
-                android:background="@drawable/home_card_bg"
-                android:gravity="center_vertical"
+                android:layout_height="match_parent"
                 android:orientation="vertical">
 
                 <LinearLayout
+                    android:id="@+id/base_info_layout"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:orientation="horizontal">
+                    android:layout_marginHorizontal="@dimen/common_spacing_2x"
+                    android:layout_marginTop="@dimen/common_spacing_2x"
+                    android:layout_marginBottom="@dimen/common_spacing"
+                    android:background="@drawable/home_card_bg"
+                    android:gravity="center_vertical"
+                    android:orientation="vertical">
 
                     <TextView
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
                         android:layout_marginLeft="@dimen/common_spacing"
-                        android:layout_weight="1"
-                        android:text="@string/workflow_mode"
+                        android:text="@string/base_info_title"
                         android:textColor="@color/black"
                         android:textSize="@dimen/normal_text_size_18" />
 
-                    <TextView
-                        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:background="@drawable/common_btn"
-                        android:paddingHorizontal="@dimen/common_spacing_2x"
-                        android:text="@string/settings"
-                        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" />
-
-                <FrameLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="match_parent"
-                    android:background="@drawable/card_white_bg">
-
-                    <androidx.recyclerview.widget.RecyclerView
-                        android:id="@+id/workflow_rv"
+                    <View
                         android:layout_width="match_parent"
-                        android:layout_height="match_parent"
-                        android:paddingHorizontal="@dimen/common_spacing"
-                        android:scrollbars="horizontal" />
+                        android:layout_height="@dimen/divider_line_space"
+                        android:background="@color/black" />
 
-                    <TextView
-                        android:id="@+id/select_workflow_tip"
+                    <androidx.constraintlayout.widget.ConstraintLayout
                         android:layout_width="match_parent"
                         android:layout_height="match_parent"
-                        android:background="@drawable/card_white_bg"
-                        android:gravity="center"
-                        android:paddingHorizontal="@dimen/common_spacing_2x"
-                        android:paddingVertical="@dimen/common_spacing"
-                        android:text="@string/please_select_workflow_mode"
-                        android:textColor="@color/black"
-                        android:textSize="@dimen/normal_text_size_18" />
-                </FrameLayout>
-            </LinearLayout>
+                        android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal"
+                        android:paddingBottom="@dimen/common_spacing_2x">
 
-            <LinearLayout
-                android:id="@+id/point_info_layout"
-                android:layout_width="match_parent"
-                android:layout_height="0dp"
-                android:layout_marginHorizontal="@dimen/common_spacing_2x"
-                android:layout_marginVertical="@dimen/common_spacing"
-                android:layout_weight="1"
-                android:background="@drawable/home_card_bg"
-                android:gravity="center_vertical"
-                android:orientation="vertical">
-
-                <LinearLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:orientation="horizontal">
-
-                    <TextView
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:layout_marginLeft="@dimen/common_spacing"
-                        android:layout_weight="1"
-                        android:text="@string/point_info_title"
-                        android:textColor="@color/black"
-                        android:textSize="@dimen/normal_text_size_18" />
-
-                </LinearLayout>
-
-                <View
-                    android:layout_width="match_parent"
-                    android:layout_height="@dimen/divider_line_space"
-                    android:background="@color/black" />
-
-                <FrameLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="match_parent">
-
-                    <androidx.recyclerview.widget.RecyclerView
-                        android:id="@+id/point_rv"
-                        android:layout_width="match_parent"
-                        android:layout_height="match_parent"
-                        android:paddingBottom="@dimen/common_spacing" />
+                        <TextView
+                            android:id="@+id/sop_workstation_tv"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginTop="@dimen/common_spacing_2x"
+                            android:text="@string/sop_workstation"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/common_text_size"
+                            app:layout_constraintStart_toStartOf="parent"
+                            app:layout_constraintTop_toTopOf="parent" />
 
-                    <LinearLayout
-                        android:id="@+id/no_selected_point_layout"
-                        android:layout_width="match_parent"
-                        android:layout_height="match_parent"
-                        android:background="@drawable/card_white_bg"
-                        android:gravity="center"
-                        android:orientation="vertical">
+                        <TextView
+                            android:id="@+id/workstation_tv"
+                            android:layout_width="0dp"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="@dimen/common_spacing"
+                            android:background="@drawable/bg_common_input"
+                            android:drawableRight="@mipmap/icon_drop_down"
+                            android:hint="@string/please_select_sop_workstation"
+                            android:maxLines="1"
+                            android:paddingHorizontal="@dimen/common_spacing"
+                            android:paddingVertical="2dp"
+                            android:singleLine="true"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/common_text_size"
+                            app:layout_constraintBottom_toBottomOf="@+id/sop_workstation_tv"
+                            app:layout_constraintEnd_toEndOf="parent"
+                            app:layout_constraintStart_toEndOf="@+id/sop_workstation_tv"
+                            app:layout_constraintTop_toTopOf="@+id/sop_workstation_tv" />
 
                         <TextView
+                            android:id="@+id/sop_title"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:gravity="center"
-                            android:paddingHorizontal="@dimen/common_spacing_2x"
-                            android:paddingVertical="@dimen/common_spacing"
-                            android:text="@string/show_points_when_selected_sop"
+                            android:layout_marginTop="@dimen/common_spacing_2x"
+                            android:text="@string/create_sop_job_sop"
                             android:textColor="@color/black"
-                            android:textSize="@dimen/common_btn_text_size" />
-                    </LinearLayout>
-                </FrameLayout>
+                            android:textSize="@dimen/common_text_size"
+                            app:layout_constraintEnd_toEndOf="@+id/sop_workstation_tv"
+                            app:layout_constraintTop_toBottomOf="@+id/sop_workstation_tv" />
 
-            </LinearLayout>
-
-            <LinearLayout
-                android:id="@+id/member_info_layout"
-                android:layout_width="match_parent"
-                android:layout_height="0dp"
-                android:layout_marginHorizontal="@dimen/common_spacing_2x"
-                android:layout_marginVertical="@dimen/common_spacing"
-                android:layout_weight="1"
-                android:background="@drawable/home_card_bg"
-                android:gravity="center_vertical"
-                android:orientation="vertical">
+                        <TextView
+                            android:id="@+id/sop_tv"
+                            android:layout_width="0dp"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="@dimen/common_spacing"
+                            android:background="@drawable/bg_common_input"
+                            android:drawableRight="@mipmap/icon_drop_down"
+                            android:hint="@string/please_select_sop"
+                            android:maxLines="1"
+                            android:paddingHorizontal="@dimen/common_spacing"
+                            android:paddingVertical="2dp"
+                            android:singleLine="true"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/common_text_size"
+                            app:layout_constraintBottom_toBottomOf="@+id/sop_title"
+                            app:layout_constraintEnd_toEndOf="parent"
+                            app:layout_constraintStart_toEndOf="@+id/sop_title"
+                            app:layout_constraintTop_toTopOf="@+id/sop_title" />
 
-                <LinearLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:orientation="horizontal">
+                        <TextView
+                            android:id="@+id/job_name_tv"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginTop="@dimen/common_spacing_2x"
+                            android:text="@string/job_name"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/common_text_size"
+                            app:layout_constraintEnd_toEndOf="@+id/sop_title"
+                            app:layout_constraintTop_toBottomOf="@+id/sop_title" />
 
-                    <TextView
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:layout_marginLeft="@dimen/common_spacing"
-                        android:layout_weight="1"
-                        android:text="@string/member_info_title"
-                        android:textColor="@color/black"
-                        android:textSize="@dimen/normal_text_size_18" />
+                        <EditText
+                            android:id="@+id/job_name_et"
+                            android:layout_width="0dp"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="@dimen/common_spacing"
+                            android:background="@drawable/bg_common_input"
+                            android:hint="@string/please_input_job_name"
+                            android:maxLines="1"
+                            android:paddingHorizontal="@dimen/common_spacing"
+                            android:paddingVertical="2dp"
+                            android:singleLine="true"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/common_text_size"
+                            app:layout_constraintBottom_toBottomOf="@+id/job_name_tv"
+                            app:layout_constraintEnd_toEndOf="parent"
+                            app:layout_constraintStart_toEndOf="@+id/job_name_tv"
+                            app:layout_constraintTop_toTopOf="@+id/job_name_tv" />
+                    </androidx.constraintlayout.widget.ConstraintLayout>
 
-                    <TextView
-                        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:background="@drawable/common_btn"
-                        android:paddingHorizontal="@dimen/common_spacing_2x"
-                        android:text="@string/select"
-                        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" />
-
-                <FrameLayout
+                <LinearLayout
                     android:layout_width="match_parent"
-                    android:layout_height="match_parent">
+                    android:layout_height="0dp"
+                    android:layout_weight="1"
+                    android:orientation="vertical">
 
                     <LinearLayout
+                        android:id="@+id/workflow_mode_layout"
                         android:layout_width="match_parent"
-                        android:layout_height="match_parent"
-                        android:gravity="center"
-                        android:orientation="horizontal">
+                        android:layout_height="0dp"
+                        android:layout_marginHorizontal="@dimen/common_spacing_2x"
+                        android:layout_marginVertical="@dimen/common_spacing"
+                        android:layout_weight="1"
+                        android:background="@drawable/home_card_bg"
+                        android:gravity="center_vertical"
+                        android:orientation="vertical">
 
                         <LinearLayout
-                            android:layout_width="0dp"
-                            android:layout_weight="1"
-                            android:layout_height="match_parent"
-                            android:background="@drawable/home_card_bg"
-                            android:orientation="vertical">
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:orientation="horizontal">
+
+                            <TextView
+                                android:layout_width="match_parent"
+                                android:layout_height="wrap_content"
+                                android:layout_marginLeft="@dimen/common_spacing"
+                                android:layout_weight="1"
+                                android:text="@string/workflow_mode"
+                                android:textColor="@color/black"
+                                android:textSize="@dimen/normal_text_size_18" />
 
                             <TextView
+                                android:id="@+id/workflow_mode_setting_tv"
                                 android:layout_width="wrap_content"
                                 android:layout_height="wrap_content"
-                                android:gravity="center"
+                                android:layout_marginLeft="@dimen/common_spacing"
+                                android:layout_marginRight="@dimen/common_spacing"
+                                android:background="@drawable/common_btn"
                                 android:paddingHorizontal="@dimen/common_spacing_2x"
-                                android:paddingVertical="@dimen/common_spacing"
-                                android:text="@string/locker"
-                                android:layout_gravity="center"
+                                android:text="@string/settings"
                                 android:textColor="@color/black"
-                                android:textSize="@dimen/normal_text_size_18" />
+                                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" />
+                        <View
+                            android:layout_width="match_parent"
+                            android:layout_height="@dimen/divider_line_space"
+                            android:background="@color/black" />
 
+                        <FrameLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="match_parent"
+                            android:background="@drawable/card_white_bg">
 
                             <androidx.recyclerview.widget.RecyclerView
-                                android:id="@+id/locker_rv"
-                                android:layout_width="wrap_content"
+                                android:id="@+id/workflow_rv"
+                                android:layout_width="match_parent"
                                 android:layout_height="match_parent"
-                                android:layout_gravity="center" />
-                        </LinearLayout>
-
-                        <LinearLayout
-                            android:id="@+id/select_colocker_layout"
-                            android:layout_width="0dp"
-                            android:layout_height="match_parent"
-                            android:layout_weight="1"
-                            android:background="@drawable/home_card_bg"
-                            android:orientation="vertical">
+                                android:paddingHorizontal="@dimen/common_spacing"
+                                android:scrollbars="horizontal" />
 
                             <TextView
+                                android:id="@+id/select_workflow_tip"
                                 android:layout_width="match_parent"
-                                android:layout_height="wrap_content"
+                                android:layout_height="match_parent"
+                                android:background="@drawable/card_white_bg"
                                 android:gravity="center"
                                 android:paddingHorizontal="@dimen/common_spacing_2x"
                                 android:paddingVertical="@dimen/common_spacing"
-                                android:text="@string/colocker"
+                                android:text="@string/please_select_workflow_mode"
                                 android:textColor="@color/black"
-                                android:layout_gravity="center"
                                 android:textSize="@dimen/normal_text_size_18" />
+                        </FrameLayout>
+                    </LinearLayout>
 
-                            <View
+                    <LinearLayout
+                        android:id="@+id/point_info_layout"
+                        android:layout_width="match_parent"
+                        android:layout_height="0dp"
+                        android:layout_marginHorizontal="@dimen/common_spacing_2x"
+                        android:layout_marginVertical="@dimen/common_spacing"
+                        android:layout_weight="1"
+                        android:background="@drawable/home_card_bg"
+                        android:gravity="center_vertical"
+                        android:orientation="vertical">
+
+                        <LinearLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:orientation="horizontal">
+
+                            <TextView
                                 android:layout_width="match_parent"
-                                android:layout_height="@dimen/divider_line_space"
-                                android:background="@color/black" />
+                                android:layout_height="wrap_content"
+                                android:layout_marginLeft="@dimen/common_spacing"
+                                android:layout_weight="1"
+                                android:text="@string/point_info_title"
+                                android:textColor="@color/black"
+                                android:textSize="@dimen/normal_text_size_18" />
 
-                            <androidx.recyclerview.widget.RecyclerView
-                                android:id="@+id/colocker_rv"
-                                android:layout_width="wrap_content"
-                                android:layout_height="match_parent" />
                         </LinearLayout>
 
+                        <View
+                            android:layout_width="match_parent"
+                            android:layout_height="@dimen/divider_line_space"
+                            android:background="@color/black" />
+
+                        <FrameLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="match_parent">
+
+                            <androidx.recyclerview.widget.RecyclerView
+                                android:id="@+id/point_rv"
+                                android:layout_width="match_parent"
+                                android:layout_height="match_parent"
+                                android:paddingBottom="@dimen/common_spacing" />
+
+                            <LinearLayout
+                                android:id="@+id/no_selected_point_layout"
+                                android:layout_width="match_parent"
+                                android:layout_height="match_parent"
+                                android:background="@drawable/card_white_bg"
+                                android:gravity="center"
+                                android:orientation="vertical">
+
+                                <TextView
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="wrap_content"
+                                    android:gravity="center"
+                                    android:paddingHorizontal="@dimen/common_spacing_2x"
+                                    android:paddingVertical="@dimen/common_spacing"
+                                    android:text="@string/show_points_when_selected_sop"
+                                    android:textColor="@color/black"
+                                    android:textSize="@dimen/common_btn_text_size" />
+                            </LinearLayout>
+                        </FrameLayout>
+
                     </LinearLayout>
 
                     <LinearLayout
-                        android:id="@+id/no_selected_member_layout"
+                        android:id="@+id/member_info_layout"
                         android:layout_width="match_parent"
-                        android:layout_height="match_parent"
-                        android:background="@drawable/card_white_bg"
-                        android:gravity="center"
+                        android:layout_height="0dp"
+                        android:layout_marginHorizontal="@dimen/common_spacing_2x"
+                        android:layout_marginVertical="@dimen/common_spacing"
+                        android:layout_weight="1"
+                        android:background="@drawable/home_card_bg"
+                        android:gravity="center_vertical"
                         android:orientation="vertical">
 
-                        <TextView
-                            android:layout_width="wrap_content"
+                        <LinearLayout
+                            android:layout_width="match_parent"
                             android:layout_height="wrap_content"
-                            android:gravity="center"
-                            android:paddingHorizontal="@dimen/common_spacing_2x"
-                            android:paddingVertical="@dimen/common_spacing"
-                            android:text="@string/show_member_when_selected_sop"
-                            android:textColor="@color/black"
-                            android:textSize="@dimen/common_btn_text_size" />
+                            android:orientation="horizontal">
+
+                            <TextView
+                                android:layout_width="match_parent"
+                                android:layout_height="wrap_content"
+                                android:layout_marginLeft="@dimen/common_spacing"
+                                android:layout_weight="1"
+                                android:text="@string/member_info_title"
+                                android:textColor="@color/black"
+                                android:textSize="@dimen/normal_text_size_18" />
+
+                            <TextView
+                                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:background="@drawable/common_btn"
+                                android:paddingHorizontal="@dimen/common_spacing_2x"
+                                android:text="@string/select"
+                                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" />
+
+                        <FrameLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="match_parent">
+
+                            <LinearLayout
+                                android:layout_width="match_parent"
+                                android:layout_height="match_parent"
+                                android:gravity="center"
+                                android:orientation="horizontal">
+
+                                <LinearLayout
+                                    android:layout_width="0dp"
+                                    android:layout_height="match_parent"
+                                    android:layout_weight="1"
+                                    android:background="@drawable/home_card_bg"
+                                    android:orientation="vertical">
+
+                                    <TextView
+                                        android:layout_width="wrap_content"
+                                        android:layout_height="wrap_content"
+                                        android:layout_gravity="center"
+                                        android:gravity="center"
+                                        android:paddingHorizontal="@dimen/common_spacing_2x"
+                                        android:paddingVertical="@dimen/common_spacing"
+                                        android:text="@string/locker"
+                                        android:textColor="@color/black"
+                                        android:textSize="@dimen/normal_text_size_18" />
+
+                                    <View
+                                        android:layout_width="match_parent"
+                                        android:layout_height="@dimen/divider_line_space"
+                                        android:background="@color/black" />
+
+
+                                    <androidx.recyclerview.widget.RecyclerView
+                                        android:id="@+id/locker_rv"
+                                        android:layout_width="wrap_content"
+                                        android:layout_height="match_parent"
+                                        android:layout_gravity="center" />
+                                </LinearLayout>
+
+                                <LinearLayout
+                                    android:id="@+id/select_colocker_layout"
+                                    android:layout_width="0dp"
+                                    android:layout_height="match_parent"
+                                    android:layout_weight="1"
+                                    android:background="@drawable/home_card_bg"
+                                    android:orientation="vertical">
+
+                                    <TextView
+                                        android:layout_width="match_parent"
+                                        android:layout_height="wrap_content"
+                                        android:layout_gravity="center"
+                                        android:gravity="center"
+                                        android:paddingHorizontal="@dimen/common_spacing_2x"
+                                        android:paddingVertical="@dimen/common_spacing"
+                                        android:text="@string/colocker"
+                                        android:textColor="@color/black"
+                                        android:textSize="@dimen/normal_text_size_18" />
+
+                                    <View
+                                        android:layout_width="match_parent"
+                                        android:layout_height="@dimen/divider_line_space"
+                                        android:background="@color/black" />
+
+                                    <androidx.recyclerview.widget.RecyclerView
+                                        android:id="@+id/colocker_rv"
+                                        android:layout_width="wrap_content"
+                                        android:layout_height="match_parent" />
+                                </LinearLayout>
+
+                            </LinearLayout>
+
+                            <LinearLayout
+                                android:id="@+id/no_selected_member_layout"
+                                android:layout_width="match_parent"
+                                android:layout_height="match_parent"
+                                android:background="@drawable/card_white_bg"
+                                android:gravity="center"
+                                android:orientation="vertical">
+
+                                <TextView
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="wrap_content"
+                                    android:gravity="center"
+                                    android:paddingHorizontal="@dimen/common_spacing_2x"
+                                    android:paddingVertical="@dimen/common_spacing"
+                                    android:text="@string/show_member_when_selected_sop"
+                                    android:textColor="@color/black"
+                                    android:textSize="@dimen/common_btn_text_size" />
+                            </LinearLayout>
+                        </FrameLayout>
                     </LinearLayout>
-                </FrameLayout>
+                </LinearLayout>
             </LinearLayout>
-        </LinearLayout>
+        </androidx.core.widget.NestedScrollView>
 
         <LinearLayout
             android:layout_width="match_parent"
@@ -466,31 +479,43 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_marginRight="@dimen/common_spacing"
-                android:background="@drawable/common_btn"
+                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/save_and_execute"
-                android:textColor="@color/black"
+                android:textColor="@color/white"
                 android:textSize="@dimen/common_btn_text_size" />
 
             <TextView
                 android:id="@+id/save"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:background="@drawable/common_btn"
+                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/save"
-                android:textColor="@color/black"
+                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_marginHorizontal="@dimen/common_spacing"
-                android:background="@drawable/common_btn"
+                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/black"
+                android:textColor="@color/white"
                 android:textSize="@dimen/common_btn_text_size" />
         </LinearLayout>
     </LinearLayout>

+ 282 - 264
app/src/main/res/layout/fragment_edit_job.xml

@@ -28,8 +28,8 @@
                 android:layout_weight="1"
                 android:text="@string/edit_job_title"
                 android:textColor="@color/black"
-                android:textStyle="bold"
-                android:textSize="@dimen/normal_text_size_25" />
+                android:textSize="@dimen/normal_text_size_25"
+                android:textStyle="bold" />
 
             <TextView
                 android:id="@+id/back"
@@ -53,361 +53,367 @@
             android:layout_height="@dimen/divider_line_space"
             android:background="@color/black" />
 
-        <LinearLayout
+        <androidx.core.widget.NestedScrollView
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:layout_weight="1"
-            android:orientation="vertical">
+            android:fillViewport="true">
 
             <LinearLayout
-                android:id="@+id/base_info_layout"
                 android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginHorizontal="@dimen/common_spacing_2x"
-                android:layout_marginTop="@dimen/common_spacing_2x"
-                android:layout_marginBottom="@dimen/common_spacing"
-                android:background="@drawable/home_card_bg"
-                android:gravity="center_vertical"
+                android:layout_height="match_parent"
                 android:orientation="vertical">
 
-                <TextView
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_marginLeft="@dimen/common_spacing"
-                    android:layout_weight="1"
-                    android:text="@string/base_info_title"
-                    android:textColor="@color/black"
-                    android:textSize="@dimen/normal_text_size_18" />
-
-                <View
-                    android:layout_width="match_parent"
-                    android:layout_height="@dimen/divider_line_space"
-                    android:background="@color/black" />
-
-
                 <LinearLayout
+                    android:id="@+id/base_info_layout"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
+                    android:layout_marginHorizontal="@dimen/common_spacing_2x"
                     android:layout_marginTop="@dimen/common_spacing_2x"
+                    android:layout_marginBottom="@dimen/common_spacing"
+                    android:background="@drawable/home_card_bg"
                     android:gravity="center_vertical"
-                    android:orientation="horizontal"
-                    android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal">
-
-                    <TextView
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:text="@string/job_workstation"
-                        android:textColor="@color/black"
-                        android:textSize="@dimen/common_text_size" />
+                    android:orientation="vertical">
 
                     <TextView
-                        android:id="@+id/workstation_tv"
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
                         android:layout_marginLeft="@dimen/common_spacing"
-                        android:background="@drawable/bg_common_input"
-                        android:drawableRight="@mipmap/icon_drop_down"
-                        android:hint="@string/please_select_job_workstation"
-                        android:maxLines="1"
-                        android:paddingHorizontal="@dimen/common_spacing"
-                        android:paddingVertical="2dp"
-                        android:singleLine="true"
-                        android:textColor="@color/black"
-                        android:textSize="@dimen/common_text_size" />
-                </LinearLayout>
-
-                <LinearLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="@dimen/common_spacing_2x"
-                    android:gravity="center_vertical"
-                    android:orientation="horizontal"
-                    android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal">
-
-                    <TextView
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:text="@string/workflow_mode"
+                        android:layout_weight="1"
+                        android:text="@string/base_info_title"
                         android:textColor="@color/black"
-                        android:textSize="@dimen/common_text_size" />
+                        android:textSize="@dimen/normal_text_size_18" />
 
-                    <TextView
-                        android:id="@+id/lock_mode_tv"
+                    <View
                         android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:layout_marginLeft="@dimen/common_spacing"
-                        android:background="@drawable/bg_common_input"
-                        android:drawableRight="@mipmap/icon_drop_down"
-                        android:hint="@string/please_select_flow_mode"
-                        android:maxLines="1"
-                        android:paddingHorizontal="@dimen/common_spacing"
-                        android:paddingVertical="2dp"
-                        android:singleLine="true"
-                        android:textColor="@color/black"
-                        android:textSize="@dimen/common_text_size" />
-                </LinearLayout>
-
-                <LinearLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="@dimen/common_spacing_2x"
-                    android:layout_marginBottom="@dimen/common_spacing_2x"
-                    android:gravity="center_vertical"
-                    android:orientation="horizontal"
-                    android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal">
+                        android:layout_height="@dimen/divider_line_space"
+                        android:background="@color/black" />
 
-                    <TextView
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:text="@string/create_job_name"
-                        android:textColor="@color/black"
-                        android:textSize="@dimen/common_text_size" />
 
-                    <EditText
-                        android:id="@+id/job_name_et"
+                    <LinearLayout
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
-                        android:layout_marginLeft="@dimen/common_spacing"
-                        android:background="@drawable/bg_common_input"
-                        android:hint="@string/please_input_job_name"
-                        android:maxLines="1"
-                        android:paddingHorizontal="@dimen/common_spacing"
-                        android:paddingVertical="2dp"
-                        android:singleLine="true"
-                        android:textColor="@color/black"
-                        android:textSize="@dimen/common_text_size" />
-                </LinearLayout>
-            </LinearLayout>
+                        android:layout_marginTop="@dimen/common_spacing_2x"
+                        android:gravity="center_vertical"
+                        android:orientation="horizontal"
+                        android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal">
 
-            <LinearLayout
-                android:layout_width="match_parent"
-                android:layout_height="0dp"
-                android:layout_weight="1"
-                android:orientation="vertical">
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@string/job_workstation"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/common_text_size" />
 
-                <LinearLayout
-                    android:id="@+id/workflow_mode_layout"
-                    android:layout_width="match_parent"
-                    android:layout_height="0dp"
-                    android:layout_marginHorizontal="@dimen/common_spacing_2x"
-                    android:layout_marginVertical="@dimen/common_spacing"
-                    android:layout_weight="1"
-                    android:background="@drawable/home_card_bg"
-                    android:gravity="center_vertical"
-                    android:orientation="vertical">
+                        <TextView
+                            android:id="@+id/workstation_tv"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="@dimen/common_spacing"
+                            android:background="@drawable/bg_common_input"
+                            android:drawableRight="@mipmap/icon_drop_down"
+                            android:hint="@string/please_select_job_workstation"
+                            android:maxLines="1"
+                            android:paddingHorizontal="@dimen/common_spacing"
+                            android:paddingVertical="2dp"
+                            android:singleLine="true"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/common_text_size" />
+                    </LinearLayout>
 
                     <LinearLayout
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
-                        android:orientation="horizontal">
+                        android:layout_marginTop="@dimen/common_spacing_2x"
+                        android:gravity="center_vertical"
+                        android:orientation="horizontal"
+                        android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal">
 
                         <TextView
-                            android:layout_width="match_parent"
+                            android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:layout_marginLeft="@dimen/common_spacing"
-                            android:layout_weight="1"
                             android:text="@string/workflow_mode"
                             android:textColor="@color/black"
-                            android:textSize="@dimen/normal_text_size_18" />
+                            android:textSize="@dimen/common_text_size" />
 
                         <TextView
-                            android:id="@+id/workflow_mode_setting_tv"
-                            android:layout_width="wrap_content"
+                            android:id="@+id/lock_mode_tv"
+                            android:layout_width="match_parent"
                             android:layout_height="wrap_content"
                             android:layout_marginLeft="@dimen/common_spacing"
-                            android:layout_marginRight="@dimen/common_spacing"
-                            android:background="@drawable/common_btn"
-                            android:paddingHorizontal="@dimen/common_spacing_2x"
-                            android:text="@string/settings"
+                            android:background="@drawable/bg_common_input"
+                            android:drawableRight="@mipmap/icon_drop_down"
+                            android:hint="@string/please_select_flow_mode"
+                            android:maxLines="1"
+                            android:paddingHorizontal="@dimen/common_spacing"
+                            android:paddingVertical="2dp"
+                            android:singleLine="true"
                             android:textColor="@color/black"
-                            android:textSize="@dimen/common_btn_text_size" />
+                            android:textSize="@dimen/common_text_size" />
                     </LinearLayout>
 
-                    <View
-                        android:layout_width="match_parent"
-                        android:layout_height="@dimen/divider_line_space"
-                        android:background="@color/black" />
-
-                    <FrameLayout
-                        android:layout_width="match_parent"
-                        android:layout_height="match_parent"
-                        android:background="@drawable/card_white_bg">
-
-                        <androidx.recyclerview.widget.RecyclerView
-                            android:id="@+id/workflow_rv"
-                            android:layout_width="match_parent"
-                            android:layout_height="match_parent"
-                            android:scrollbars="horizontal"
-                            android:paddingHorizontal="@dimen/common_spacing" />
-                    </FrameLayout>
-                </LinearLayout>
-
-                <LinearLayout
-                    android:id="@+id/point_info_layout"
-                    android:layout_width="match_parent"
-                    android:layout_height="0dp"
-                    android:layout_marginHorizontal="@dimen/common_spacing_2x"
-                    android:layout_marginVertical="@dimen/common_spacing"
-                    android:layout_weight="1"
-                    android:background="@drawable/home_card_bg"
-                    android:gravity="center_vertical"
-                    android:orientation="vertical">
-
                     <LinearLayout
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
-                        android:orientation="horizontal">
+                        android:layout_marginTop="@dimen/common_spacing_2x"
+                        android:layout_marginBottom="@dimen/common_spacing_2x"
+                        android:gravity="center_vertical"
+                        android:orientation="horizontal"
+                        android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal">
 
                         <TextView
-                            android:layout_width="match_parent"
+                            android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:layout_marginLeft="@dimen/common_spacing"
-                            android:layout_weight="1"
-                            android:text="@string/point_info_title"
+                            android:text="@string/create_job_name"
                             android:textColor="@color/black"
-                            android:textSize="@dimen/normal_text_size_18" />
+                            android:textSize="@dimen/common_text_size" />
 
-                        <TextView
-                            android:id="@+id/select_point_tv"
-                            android:layout_width="wrap_content"
+                        <EditText
+                            android:id="@+id/job_name_et"
+                            android:layout_width="match_parent"
                             android:layout_height="wrap_content"
                             android:layout_marginLeft="@dimen/common_spacing"
-                            android:layout_marginRight="@dimen/common_spacing"
-                            android:background="@drawable/common_btn"
-                            android:paddingHorizontal="@dimen/common_spacing_2x"
-                            android:text="@string/select"
+                            android:background="@drawable/bg_common_input"
+                            android:hint="@string/please_input_job_name"
+                            android:maxLines="1"
+                            android:paddingHorizontal="@dimen/common_spacing"
+                            android:paddingVertical="2dp"
+                            android:singleLine="true"
                             android:textColor="@color/black"
-                            android:textSize="@dimen/common_btn_text_size" />
+                            android:textSize="@dimen/common_text_size" />
                     </LinearLayout>
-
-                    <View
-                        android:layout_width="match_parent"
-                        android:layout_height="@dimen/divider_line_space"
-                        android:background="@color/black" />
-
-                    <androidx.recyclerview.widget.RecyclerView
-                        android:id="@+id/point_rv"
-                        android:layout_width="match_parent"
-                        android:layout_height="match_parent"
-                        android:paddingBottom="@dimen/common_spacing" />
-
                 </LinearLayout>
 
                 <LinearLayout
-                    android:id="@+id/member_info_layout"
                     android:layout_width="match_parent"
                     android:layout_height="0dp"
-                    android:layout_marginHorizontal="@dimen/common_spacing_2x"
-                    android:layout_marginVertical="@dimen/common_spacing"
                     android:layout_weight="1"
-                    android:background="@drawable/home_card_bg"
-                    android:gravity="center_vertical"
                     android:orientation="vertical">
 
                     <LinearLayout
+                        android:id="@+id/workflow_mode_layout"
                         android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:orientation="horizontal">
+                        android:layout_height="0dp"
+                        android:layout_marginHorizontal="@dimen/common_spacing_2x"
+                        android:layout_marginVertical="@dimen/common_spacing"
+                        android:layout_weight="1"
+                        android:background="@drawable/home_card_bg"
+                        android:gravity="center_vertical"
+                        android:orientation="vertical">
 
-                        <TextView
+                        <LinearLayout
                             android:layout_width="match_parent"
                             android:layout_height="wrap_content"
-                            android:layout_marginLeft="@dimen/common_spacing"
-                            android:layout_weight="1"
-                            android:text="@string/member_info_title"
-                            android:textColor="@color/black"
-                            android:textSize="@dimen/normal_text_size_18" />
+                            android:orientation="horizontal">
 
-                        <TextView
-                            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:background="@drawable/common_btn"
-                            android:paddingHorizontal="@dimen/common_spacing_2x"
-                            android:text="@string/select"
-                            android:textColor="@color/black"
-                            android:textSize="@dimen/common_btn_text_size" />
-                    </LinearLayout>
+                            <TextView
+                                android:layout_width="match_parent"
+                                android:layout_height="wrap_content"
+                                android:layout_marginLeft="@dimen/common_spacing"
+                                android:layout_weight="1"
+                                android:text="@string/workflow_mode"
+                                android:textColor="@color/black"
+                                android:textSize="@dimen/normal_text_size_18" />
 
-                    <View
-                        android:layout_width="match_parent"
-                        android:layout_height="@dimen/divider_line_space"
-                        android:background="@color/black" />
+                            <TextView
+                                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:background="@drawable/common_btn"
+                                android:paddingHorizontal="@dimen/common_spacing_2x"
+                                android:text="@string/settings"
+                                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" />
+
+                        <FrameLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="match_parent"
+                            android:background="@drawable/card_white_bg">
+
+                            <androidx.recyclerview.widget.RecyclerView
+                                android:id="@+id/workflow_rv"
+                                android:layout_width="match_parent"
+                                android:layout_height="match_parent"
+                                android:paddingHorizontal="@dimen/common_spacing"
+                                android:scrollbars="horizontal" />
+                        </FrameLayout>
+                    </LinearLayout>
 
                     <LinearLayout
+                        android:id="@+id/point_info_layout"
                         android:layout_width="match_parent"
-                        android:layout_height="match_parent"
-                        android:gravity="center"
-                        android:orientation="horizontal">
+                        android:layout_height="0dp"
+                        android:layout_marginHorizontal="@dimen/common_spacing_2x"
+                        android:layout_marginVertical="@dimen/common_spacing"
+                        android:layout_weight="1"
+                        android:background="@drawable/home_card_bg"
+                        android:gravity="center_vertical"
+                        android:orientation="vertical">
 
                         <LinearLayout
-                            android:layout_width="0dp"
-                            android:layout_weight="1"
-                            android:layout_height="match_parent"
-                            android:background="@drawable/home_card_bg"
-                            android:orientation="vertical">
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:orientation="horizontal">
 
                             <TextView
+                                android:layout_width="match_parent"
+                                android:layout_height="wrap_content"
+                                android:layout_marginLeft="@dimen/common_spacing"
+                                android:layout_weight="1"
+                                android:text="@string/point_info_title"
+                                android:textColor="@color/black"
+                                android:textSize="@dimen/normal_text_size_18" />
+
+                            <TextView
+                                android:id="@+id/select_point_tv"
                                 android:layout_width="wrap_content"
                                 android:layout_height="wrap_content"
-                                android:gravity="center"
-                                android:layout_gravity="center"
+                                android:layout_marginLeft="@dimen/common_spacing"
+                                android:layout_marginRight="@dimen/common_spacing"
+                                android:background="@drawable/common_btn"
                                 android:paddingHorizontal="@dimen/common_spacing_2x"
-                                android:paddingVertical="@dimen/common_spacing"
-                                android:text="@string/locker"
+                                android:text="@string/select"
                                 android:textColor="@color/black"
-                                android:textSize="@dimen/normal_text_size_18" />
+                                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" />
+                        <View
+                            android:layout_width="match_parent"
+                            android:layout_height="@dimen/divider_line_space"
+                            android:background="@color/black" />
 
+                        <androidx.recyclerview.widget.RecyclerView
+                            android:id="@+id/point_rv"
+                            android:layout_width="match_parent"
+                            android:layout_height="match_parent"
+                            android:paddingBottom="@dimen/common_spacing" />
 
-                            <androidx.recyclerview.widget.RecyclerView
-                                android:id="@+id/locker_rv"
-                                android:layout_width="wrap_content"
-                                android:layout_height="match_parent"
-                                android:layout_gravity="center" />
-                        </LinearLayout>
+                    </LinearLayout>
+
+                    <LinearLayout
+                        android:id="@+id/member_info_layout"
+                        android:layout_width="match_parent"
+                        android:layout_height="0dp"
+                        android:layout_marginHorizontal="@dimen/common_spacing_2x"
+                        android:layout_marginVertical="@dimen/common_spacing"
+                        android:layout_weight="1"
+                        android:background="@drawable/home_card_bg"
+                        android:gravity="center_vertical"
+                        android:orientation="vertical">
 
                         <LinearLayout
-                            android:id="@+id/select_colocker_layout"
-                            android:layout_width="0dp"
-                            android:layout_height="match_parent"
-                            android:layout_weight="1"
-                            android:background="@drawable/home_card_bg"
-                            android:orientation="vertical">
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:orientation="horizontal">
 
                             <TextView
                                 android:layout_width="match_parent"
                                 android:layout_height="wrap_content"
-                                android:gravity="center"
-                                android:paddingHorizontal="@dimen/common_spacing_2x"
-                                android:paddingVertical="@dimen/common_spacing"
-                                android:text="@string/colocker"
+                                android:layout_marginLeft="@dimen/common_spacing"
+                                android:layout_weight="1"
+                                android:text="@string/member_info_title"
                                 android:textColor="@color/black"
-                                android:layout_gravity="center"
                                 android:textSize="@dimen/normal_text_size_18" />
 
-                            <View
-                                android:layout_width="match_parent"
-                                android:layout_height="@dimen/divider_line_space"
-                                android:background="@color/black" />
-
-                            <androidx.recyclerview.widget.RecyclerView
-                                android:id="@+id/colocker_rv"
+                            <TextView
+                                android:id="@+id/select_member_tv"
                                 android:layout_width="wrap_content"
-                                android:layout_height="match_parent" />
+                                android:layout_height="wrap_content"
+                                android:layout_marginLeft="@dimen/common_spacing"
+                                android:layout_marginRight="@dimen/common_spacing"
+                                android:background="@drawable/common_btn"
+                                android:paddingHorizontal="@dimen/common_spacing_2x"
+                                android:text="@string/select"
+                                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:gravity="center"
+                            android:orientation="horizontal">
+
+                            <LinearLayout
+                                android:layout_width="0dp"
+                                android:layout_height="match_parent"
+                                android:layout_weight="1"
+                                android:background="@drawable/home_card_bg"
+                                android:orientation="vertical">
+
+                                <TextView
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="wrap_content"
+                                    android:layout_gravity="center"
+                                    android:gravity="center"
+                                    android:paddingHorizontal="@dimen/common_spacing_2x"
+                                    android:paddingVertical="@dimen/common_spacing"
+                                    android:text="@string/locker"
+                                    android:textColor="@color/black"
+                                    android:textSize="@dimen/normal_text_size_18" />
+
+                                <View
+                                    android:layout_width="match_parent"
+                                    android:layout_height="@dimen/divider_line_space"
+                                    android:background="@color/black" />
+
+
+                                <androidx.recyclerview.widget.RecyclerView
+                                    android:id="@+id/locker_rv"
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="match_parent"
+                                    android:layout_gravity="center" />
+                            </LinearLayout>
+
+                            <LinearLayout
+                                android:id="@+id/select_colocker_layout"
+                                android:layout_width="0dp"
+                                android:layout_height="match_parent"
+                                android:layout_weight="1"
+                                android:background="@drawable/home_card_bg"
+                                android:orientation="vertical">
+
+                                <TextView
+                                    android:layout_width="match_parent"
+                                    android:layout_height="wrap_content"
+                                    android:layout_gravity="center"
+                                    android:gravity="center"
+                                    android:paddingHorizontal="@dimen/common_spacing_2x"
+                                    android:paddingVertical="@dimen/common_spacing"
+                                    android:text="@string/colocker"
+                                    android:textColor="@color/black"
+                                    android:textSize="@dimen/normal_text_size_18" />
+
+                                <View
+                                    android:layout_width="match_parent"
+                                    android:layout_height="@dimen/divider_line_space"
+                                    android:background="@color/black" />
+
+                                <androidx.recyclerview.widget.RecyclerView
+                                    android:id="@+id/colocker_rv"
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="match_parent" />
+                            </LinearLayout>
+
+                        </LinearLayout>
                     </LinearLayout>
                 </LinearLayout>
             </LinearLayout>
-        </LinearLayout>
+        </androidx.core.widget.NestedScrollView>
 
 
         <LinearLayout
@@ -426,31 +432,43 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_marginRight="@dimen/common_spacing"
-                android:background="@drawable/common_btn"
+                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/save_and_execute"
-                android:textColor="@color/black"
+                android:textColor="@color/white"
                 android:textSize="@dimen/common_btn_text_size" />
 
             <TextView
                 android:id="@+id/save"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:background="@drawable/common_btn"
+                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/save"
-                android:textColor="@color/black"
+                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_marginHorizontal="@dimen/common_spacing"
-                android:background="@drawable/common_btn"
+                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/black"
+                android:textColor="@color/white"
                 android:textSize="@dimen/common_btn_text_size" />
         </LinearLayout>
     </LinearLayout>

+ 288 - 275
app/src/main/res/layout/fragment_edit_sop.xml

@@ -28,8 +28,8 @@
                 android:layout_weight="1"
                 android:text="@string/edit_sop_title"
                 android:textColor="@color/black"
-                android:textStyle="bold"
-                android:textSize="@dimen/normal_text_size_25" />
+                android:textSize="@dimen/normal_text_size_25"
+                android:textStyle="bold" />
 
             <TextView
                 android:id="@+id/back"
@@ -53,307 +53,237 @@
             android:layout_height="@dimen/divider_line_space"
             android:background="@color/black" />
 
-        <LinearLayout
-            android:id="@+id/base_info_layout"
+        <androidx.core.widget.NestedScrollView
             android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginHorizontal="@dimen/common_spacing_2x"
-            android:layout_marginTop="@dimen/common_spacing_2x"
-            android:layout_marginBottom="@dimen/common_spacing"
-            android:background="@drawable/home_card_bg"
-            android:gravity="center_vertical"
-            android:orientation="vertical">
-
-            <TextView
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginLeft="@dimen/common_spacing"
-                android:layout_weight="1"
-                android:text="@string/base_info_title"
-                android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
-
-            <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="wrap_content"
-                android:layout_marginTop="@dimen/common_spacing_2x"
-                android:gravity="center_vertical"
-                android:orientation="horizontal"
-                android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal">
-
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="@string/sop_workstation"
-                    android:textColor="@color/black"
-                    android:textSize="@dimen/common_text_size" />
-
-                <TextView
-                    android:id="@+id/workstation_tv"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_marginLeft="@dimen/common_spacing"
-                    android:background="@drawable/bg_common_input"
-                    android:drawableRight="@mipmap/icon_drop_down"
-                    android:hint="@string/please_select_sop_workstation"
-                    android:maxLines="1"
-                    android:paddingHorizontal="@dimen/common_spacing"
-                    android:paddingVertical="2dp"
-                    android:singleLine="true"
-                    android:textColor="@color/black"
-                    android:textSize="@dimen/common_text_size" />
-            </LinearLayout>
-
-            <LinearLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="@dimen/common_spacing_2x"
-                android:gravity="center_vertical"
-                android:orientation="horizontal"
-                android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal">
-
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="@string/workflow_mode"
-                    android:textColor="@color/black"
-                    android:textSize="@dimen/common_text_size" />
-
-                <TextView
-                    android:id="@+id/lock_mode_tv"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_marginLeft="@dimen/common_spacing"
-                    android:background="@drawable/bg_common_input"
-                    android:drawableRight="@mipmap/icon_drop_down"
-                    android:hint="@string/please_select_flow_mode"
-                    android:maxLines="1"
-                    android:paddingHorizontal="@dimen/common_spacing"
-                    android:paddingVertical="2dp"
-                    android:singleLine="true"
-                    android:textColor="@color/black"
-                    android:textSize="@dimen/common_text_size" />
-            </LinearLayout>
-
-            <LinearLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="@dimen/common_spacing_2x"
-                android:layout_marginBottom="@dimen/common_spacing_2x"
-                android:gravity="center_vertical"
-                android:orientation="horizontal"
-                android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal">
-
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="@string/create_sop_name"
-                    android:textColor="@color/black"
-                    android:textSize="@dimen/common_text_size" />
-
-                <EditText
-                    android:id="@+id/sop_name_et"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_marginLeft="@dimen/common_spacing"
-                    android:background="@drawable/bg_common_input"
-                    android:hint="@string/please_input_sop_name"
-                    android:maxLines="1"
-                    android:paddingHorizontal="@dimen/common_spacing"
-                    android:paddingVertical="2dp"
-                    android:singleLine="true"
-                    android:textColor="@color/black"
-                    android:textSize="@dimen/common_text_size" />
-            </LinearLayout>
-        </LinearLayout>
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="0dp"
+            android:layout_height="match_parent"
             android:layout_weight="1"
-            android:orientation="vertical">
+            android:fillViewport="true">
 
             <LinearLayout
-                android:id="@+id/workflow_mode_layout"
                 android:layout_width="match_parent"
-                android:layout_height="0dp"
-                android:layout_marginHorizontal="@dimen/common_spacing_2x"
-                android:layout_marginVertical="@dimen/common_spacing"
-                android:layout_weight="1"
-                android:background="@drawable/home_card_bg"
-                android:gravity="center_vertical"
+                android:layout_height="match_parent"
                 android:orientation="vertical">
 
                 <LinearLayout
+                    android:id="@+id/base_info_layout"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:orientation="horizontal">
+                    android:layout_marginHorizontal="@dimen/common_spacing_2x"
+                    android:layout_marginTop="@dimen/common_spacing_2x"
+                    android:layout_marginBottom="@dimen/common_spacing"
+                    android:background="@drawable/home_card_bg"
+                    android:gravity="center_vertical"
+                    android:orientation="vertical">
 
                     <TextView
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
                         android:layout_marginLeft="@dimen/common_spacing"
                         android:layout_weight="1"
-                        android:text="@string/workflow_mode"
+                        android:text="@string/base_info_title"
                         android:textColor="@color/black"
                         android:textSize="@dimen/normal_text_size_18" />
 
-                    <TextView
-                        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:background="@drawable/common_btn"
-                        android:paddingHorizontal="@dimen/common_spacing_2x"
-                        android:text="@string/settings"
-                        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" />
+                    <View
+                        android:layout_width="match_parent"
+                        android:layout_height="@dimen/divider_line_space"
+                        android:background="@color/black" />
 
-                <FrameLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="match_parent"
-                    android:background="@drawable/card_white_bg">
 
-                    <androidx.recyclerview.widget.RecyclerView
-                        android:id="@+id/workflow_rv"
+                    <LinearLayout
                         android:layout_width="match_parent"
-                        android:layout_height="match_parent"
-                        android:scrollbars="horizontal"
-                        android:paddingHorizontal="@dimen/common_spacing" />
-                </FrameLayout>
-            </LinearLayout>
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="@dimen/common_spacing_2x"
+                        android:gravity="center_vertical"
+                        android:orientation="horizontal"
+                        android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal">
 
-            <LinearLayout
-                android:id="@+id/point_info_layout"
-                android:layout_width="match_parent"
-                android:layout_height="0dp"
-                android:layout_marginHorizontal="@dimen/common_spacing_2x"
-                android:layout_marginVertical="@dimen/common_spacing"
-                android:layout_weight="1"
-                android:background="@drawable/home_card_bg"
-                android:gravity="center_vertical"
-                android:orientation="vertical">
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@string/sop_workstation"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/common_text_size" />
 
-                <LinearLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:orientation="horizontal">
+                        <TextView
+                            android:id="@+id/workstation_tv"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="@dimen/common_spacing"
+                            android:background="@drawable/bg_common_input"
+                            android:drawableRight="@mipmap/icon_drop_down"
+                            android:hint="@string/please_select_sop_workstation"
+                            android:maxLines="1"
+                            android:paddingHorizontal="@dimen/common_spacing"
+                            android:paddingVertical="2dp"
+                            android:singleLine="true"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/common_text_size" />
+                    </LinearLayout>
 
-                    <TextView
+                    <LinearLayout
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
-                        android:layout_marginLeft="@dimen/common_spacing"
-                        android:layout_weight="1"
-                        android:text="@string/point_info_title"
-                        android:textColor="@color/black"
-                        android:textSize="@dimen/normal_text_size_18" />
+                        android:layout_marginTop="@dimen/common_spacing_2x"
+                        android:gravity="center_vertical"
+                        android:orientation="horizontal"
+                        android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal">
 
-                    <TextView
-                        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:background="@drawable/common_btn"
-                        android:paddingHorizontal="@dimen/common_spacing_2x"
-                        android:text="@string/select"
-                        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" />
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@string/workflow_mode"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/common_text_size" />
 
+                        <TextView
+                            android:id="@+id/lock_mode_tv"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="@dimen/common_spacing"
+                            android:background="@drawable/bg_common_input"
+                            android:drawableRight="@mipmap/icon_drop_down"
+                            android:hint="@string/please_select_flow_mode"
+                            android:maxLines="1"
+                            android:paddingHorizontal="@dimen/common_spacing"
+                            android:paddingVertical="2dp"
+                            android:singleLine="true"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/common_text_size" />
+                    </LinearLayout>
 
-                <androidx.recyclerview.widget.RecyclerView
-                    android:id="@+id/point_rv"
-                    android:layout_width="match_parent"
-                    android:layout_height="match_parent"
-                    android:paddingBottom="@dimen/common_spacing" />
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="@dimen/common_spacing_2x"
+                        android:layout_marginBottom="@dimen/common_spacing_2x"
+                        android:gravity="center_vertical"
+                        android:orientation="horizontal"
+                        android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal">
 
-            </LinearLayout>
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@string/create_sop_name"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/common_text_size" />
 
-            <LinearLayout
-                android:id="@+id/member_info_layout"
-                android:layout_width="match_parent"
-                android:layout_height="0dp"
-                android:layout_marginHorizontal="@dimen/common_spacing_2x"
-                android:layout_marginVertical="@dimen/common_spacing"
-                android:layout_weight="1"
-                android:background="@drawable/home_card_bg"
-                android:gravity="center_vertical"
-                android:orientation="vertical">
+                        <EditText
+                            android:id="@+id/sop_name_et"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="@dimen/common_spacing"
+                            android:background="@drawable/bg_common_input"
+                            android:hint="@string/please_input_sop_name"
+                            android:maxLines="1"
+                            android:paddingHorizontal="@dimen/common_spacing"
+                            android:paddingVertical="2dp"
+                            android:singleLine="true"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/common_text_size" />
+                    </LinearLayout>
+                </LinearLayout>
 
                 <LinearLayout
                     android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:orientation="horizontal">
+                    android:layout_height="0dp"
+                    android:layout_weight="1"
+                    android:orientation="vertical">
 
-                    <TextView
+                    <LinearLayout
+                        android:id="@+id/workflow_mode_layout"
                         android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:layout_marginLeft="@dimen/common_spacing"
+                        android:layout_height="0dp"
+                        android:layout_marginHorizontal="@dimen/common_spacing_2x"
+                        android:layout_marginVertical="@dimen/common_spacing"
                         android:layout_weight="1"
-                        android:text="@string/member_info_title"
-                        android:textColor="@color/black"
-                        android:textSize="@dimen/normal_text_size_18" />
+                        android:background="@drawable/home_card_bg"
+                        android:gravity="center_vertical"
+                        android:orientation="vertical">
 
-                    <TextView
-                        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:background="@drawable/common_btn"
-                        android:paddingHorizontal="@dimen/common_spacing_2x"
-                        android:text="@string/select"
-                        android:textColor="@color/black"
-                        android:textSize="@dimen/common_btn_text_size" />
-                </LinearLayout>
+                        <LinearLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:orientation="horizontal">
+
+                            <TextView
+                                android:layout_width="match_parent"
+                                android:layout_height="wrap_content"
+                                android:layout_marginLeft="@dimen/common_spacing"
+                                android:layout_weight="1"
+                                android:text="@string/workflow_mode"
+                                android:textColor="@color/black"
+                                android:textSize="@dimen/normal_text_size_18" />
+
+                            <TextView
+                                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:background="@drawable/common_btn"
+                                android:paddingHorizontal="@dimen/common_spacing_2x"
+                                android:text="@string/settings"
+                                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" />
+                        <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:gravity="center"
-                    android:orientation="horizontal">
+                        <FrameLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="match_parent"
+                            android:background="@drawable/card_white_bg">
+
+                            <androidx.recyclerview.widget.RecyclerView
+                                android:id="@+id/workflow_rv"
+                                android:layout_width="match_parent"
+                                android:layout_height="match_parent"
+                                android:paddingHorizontal="@dimen/common_spacing"
+                                android:scrollbars="horizontal" />
+                        </FrameLayout>
+                    </LinearLayout>
 
                     <LinearLayout
-                        android:layout_width="0dp"
+                        android:id="@+id/point_info_layout"
+                        android:layout_width="match_parent"
+                        android:layout_height="0dp"
+                        android:layout_marginHorizontal="@dimen/common_spacing_2x"
+                        android:layout_marginVertical="@dimen/common_spacing"
                         android:layout_weight="1"
-                        android:layout_height="match_parent"
                         android:background="@drawable/home_card_bg"
+                        android:gravity="center_vertical"
                         android:orientation="vertical">
 
-                        <TextView
-                            android:layout_width="wrap_content"
+                        <LinearLayout
+                            android:layout_width="match_parent"
                             android:layout_height="wrap_content"
-                            android:gravity="center"
-                            android:paddingHorizontal="@dimen/common_spacing_2x"
-                            android:paddingVertical="@dimen/common_spacing"
-                            android:text="@string/locker"
-                            android:layout_gravity="center"
-                            android:textColor="@color/black"
-                            android:textSize="@dimen/normal_text_size_18" />
+                            android:orientation="horizontal">
+
+                            <TextView
+                                android:layout_width="match_parent"
+                                android:layout_height="wrap_content"
+                                android:layout_marginLeft="@dimen/common_spacing"
+                                android:layout_weight="1"
+                                android:text="@string/point_info_title"
+                                android:textColor="@color/black"
+                                android:textSize="@dimen/normal_text_size_18" />
+
+                            <TextView
+                                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:background="@drawable/common_btn"
+                                android:paddingHorizontal="@dimen/common_spacing_2x"
+                                android:text="@string/select"
+                                android:textColor="@color/black"
+                                android:textSize="@dimen/common_btn_text_size" />
+                        </LinearLayout>
 
                         <View
                             android:layout_width="match_parent"
@@ -362,45 +292,128 @@
 
 
                         <androidx.recyclerview.widget.RecyclerView
-                            android:id="@+id/locker_rv"
-                            android:layout_width="wrap_content"
+                            android:id="@+id/point_rv"
+                            android:layout_width="match_parent"
                             android:layout_height="match_parent"
-                            android:layout_gravity="center" />
+                            android:paddingBottom="@dimen/common_spacing" />
+
                     </LinearLayout>
 
                     <LinearLayout
-                        android:id="@+id/select_colocker_layout"
-                        android:layout_width="0dp"
-                        android:layout_height="match_parent"
+                        android:id="@+id/member_info_layout"
+                        android:layout_width="match_parent"
+                        android:layout_height="0dp"
+                        android:layout_marginHorizontal="@dimen/common_spacing_2x"
+                        android:layout_marginVertical="@dimen/common_spacing"
                         android:layout_weight="1"
                         android:background="@drawable/home_card_bg"
+                        android:gravity="center_vertical"
                         android:orientation="vertical">
 
-                        <TextView
+                        <LinearLayout
                             android:layout_width="match_parent"
                             android:layout_height="wrap_content"
-                            android:gravity="center"
-                            android:paddingHorizontal="@dimen/common_spacing_2x"
-                            android:paddingVertical="@dimen/common_spacing"
-                            android:text="@string/colocker"
-                            android:textColor="@color/black"
-                            android:layout_gravity="center"
-                            android:textSize="@dimen/normal_text_size_18" />
+                            android:orientation="horizontal">
+
+                            <TextView
+                                android:layout_width="match_parent"
+                                android:layout_height="wrap_content"
+                                android:layout_marginLeft="@dimen/common_spacing"
+                                android:layout_weight="1"
+                                android:text="@string/member_info_title"
+                                android:textColor="@color/black"
+                                android:textSize="@dimen/normal_text_size_18" />
+
+                            <TextView
+                                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:background="@drawable/common_btn"
+                                android:paddingHorizontal="@dimen/common_spacing_2x"
+                                android:text="@string/select"
+                                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" />
 
-                        <androidx.recyclerview.widget.RecyclerView
-                            android:id="@+id/colocker_rv"
-                            android:layout_width="wrap_content"
-                            android:layout_height="match_parent" />
+                        <LinearLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="match_parent"
+                            android:gravity="center"
+                            android:orientation="horizontal">
+
+                            <LinearLayout
+                                android:layout_width="0dp"
+                                android:layout_height="match_parent"
+                                android:layout_weight="1"
+                                android:background="@drawable/home_card_bg"
+                                android:orientation="vertical">
+
+                                <TextView
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="wrap_content"
+                                    android:layout_gravity="center"
+                                    android:gravity="center"
+                                    android:paddingHorizontal="@dimen/common_spacing_2x"
+                                    android:paddingVertical="@dimen/common_spacing"
+                                    android:text="@string/locker"
+                                    android:textColor="@color/black"
+                                    android:textSize="@dimen/normal_text_size_18" />
+
+                                <View
+                                    android:layout_width="match_parent"
+                                    android:layout_height="@dimen/divider_line_space"
+                                    android:background="@color/black" />
+
+
+                                <androidx.recyclerview.widget.RecyclerView
+                                    android:id="@+id/locker_rv"
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="match_parent"
+                                    android:layout_gravity="center" />
+                            </LinearLayout>
+
+                            <LinearLayout
+                                android:id="@+id/select_colocker_layout"
+                                android:layout_width="0dp"
+                                android:layout_height="match_parent"
+                                android:layout_weight="1"
+                                android:background="@drawable/home_card_bg"
+                                android:orientation="vertical">
+
+                                <TextView
+                                    android:layout_width="match_parent"
+                                    android:layout_height="wrap_content"
+                                    android:layout_gravity="center"
+                                    android:gravity="center"
+                                    android:paddingHorizontal="@dimen/common_spacing_2x"
+                                    android:paddingVertical="@dimen/common_spacing"
+                                    android:text="@string/colocker"
+                                    android:textColor="@color/black"
+                                    android:textSize="@dimen/normal_text_size_18" />
+
+                                <View
+                                    android:layout_width="match_parent"
+                                    android:layout_height="@dimen/divider_line_space"
+                                    android:background="@color/black" />
+
+                                <androidx.recyclerview.widget.RecyclerView
+                                    android:id="@+id/colocker_rv"
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="match_parent" />
+                            </LinearLayout>
+
+                        </LinearLayout>
                     </LinearLayout>
-
                 </LinearLayout>
             </LinearLayout>
-        </LinearLayout>
+        </androidx.core.widget.NestedScrollView>
 
         <LinearLayout
             android:layout_width="match_parent"

+ 300 - 275
app/src/main/res/layout/fragment_edit_sop_job.xml

@@ -54,345 +54,358 @@
             android:layout_height="@dimen/divider_line_space"
             android:background="@color/black" />
 
-        <LinearLayout
-            android:id="@+id/base_info_layout"
+        <androidx.core.widget.NestedScrollView
             android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginHorizontal="@dimen/common_spacing_2x"
-            android:layout_marginTop="@dimen/common_spacing_2x"
-            android:layout_marginBottom="@dimen/common_spacing"
-            android:background="@drawable/home_card_bg"
-            android:gravity="center_vertical"
-            android:orientation="vertical">
-
-            <TextView
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginLeft="@dimen/common_spacing"
-                android:layout_weight="1"
-                android:text="@string/base_info_title"
-                android:textColor="@color/black"
-                android:textSize="@dimen/normal_text_size_18" />
-
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="@dimen/divider_line_space"
-                android:background="@color/black" />
-
-
-            <androidx.constraintlayout.widget.ConstraintLayout
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal"
-                android:paddingBottom="@dimen/common_spacing_2x">
-
-                <TextView
-                    android:id="@+id/sop_workstation_tv"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="@dimen/common_spacing_2x"
-                    android:text="@string/sop_workstation"
-                    android:textColor="@color/black"
-                    android:textSize="@dimen/common_text_size"
-                    app:layout_constraintStart_toStartOf="parent"
-                    app:layout_constraintTop_toTopOf="parent" />
-
-                <TextView
-                    android:id="@+id/workstation_tv"
-                    android:layout_width="0dp"
-                    android:layout_height="wrap_content"
-                    android:layout_marginLeft="@dimen/common_spacing"
-                    android:background="@drawable/bg_common_input"
-                    android:drawableRight="@mipmap/icon_drop_down"
-                    android:hint="@string/please_select_sop_workstation"
-                    android:maxLines="1"
-                    android:paddingHorizontal="@dimen/common_spacing"
-                    android:paddingVertical="2dp"
-                    android:singleLine="true"
-                    android:textColor="@color/black"
-                    android:textSize="@dimen/common_text_size"
-                    app:layout_constraintBottom_toBottomOf="@+id/sop_workstation_tv"
-                    app:layout_constraintEnd_toEndOf="parent"
-                    app:layout_constraintStart_toEndOf="@+id/sop_workstation_tv"
-                    app:layout_constraintTop_toTopOf="@+id/sop_workstation_tv" />
-
-                <TextView
-                    android:id="@+id/sop_title"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="@dimen/common_spacing_2x"
-                    android:text="@string/create_sop_job_sop"
-                    android:textColor="@color/black"
-                    android:textSize="@dimen/common_text_size"
-                    app:layout_constraintEnd_toEndOf="@+id/sop_workstation_tv"
-                    app:layout_constraintTop_toBottomOf="@+id/sop_workstation_tv" />
-
-                <TextView
-                    android:id="@+id/sop_tv"
-                    android:layout_width="0dp"
-                    android:layout_height="wrap_content"
-                    android:layout_marginLeft="@dimen/common_spacing"
-                    android:background="@drawable/bg_common_input"
-                    android:drawableRight="@mipmap/icon_drop_down"
-                    android:hint="@string/please_select_sop"
-                    android:maxLines="1"
-                    android:paddingHorizontal="@dimen/common_spacing"
-                    android:paddingVertical="2dp"
-                    android:singleLine="true"
-                    android:textColor="@color/black"
-                    android:textSize="@dimen/common_text_size"
-                    app:layout_constraintBottom_toBottomOf="@+id/sop_title"
-                    app:layout_constraintEnd_toEndOf="parent"
-                    app:layout_constraintStart_toEndOf="@+id/sop_title"
-                    app:layout_constraintTop_toTopOf="@+id/sop_title" />
-
-                <TextView
-                    android:id="@+id/job_name_tv"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="@dimen/common_spacing_2x"
-                    android:text="@string/job_name"
-                    android:textColor="@color/black"
-                    android:textSize="@dimen/common_text_size"
-                    app:layout_constraintEnd_toEndOf="@+id/sop_title"
-                    app:layout_constraintTop_toBottomOf="@+id/sop_title" />
-
-                <EditText
-                    android:id="@+id/job_name_et"
-                    android:layout_width="0dp"
-                    android:layout_height="wrap_content"
-                    android:layout_marginLeft="@dimen/common_spacing"
-                    android:background="@drawable/bg_common_input"
-                    android:hint="@string/please_input_job_name"
-                    android:maxLines="1"
-                    android:paddingHorizontal="@dimen/common_spacing"
-                    android:paddingVertical="2dp"
-                    android:singleLine="true"
-                    android:textColor="@color/black"
-                    android:textSize="@dimen/common_text_size"
-                    app:layout_constraintBottom_toBottomOf="@+id/job_name_tv"
-                    app:layout_constraintEnd_toEndOf="parent"
-                    app:layout_constraintStart_toEndOf="@+id/job_name_tv"
-                    app:layout_constraintTop_toTopOf="@+id/job_name_tv" />
-            </androidx.constraintlayout.widget.ConstraintLayout>
-        </LinearLayout>
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="0dp"
+            android:layout_height="match_parent"
             android:layout_weight="1"
-            android:orientation="vertical">
+            android:fillViewport="true">
 
             <LinearLayout
-                android:id="@+id/workflow_mode_layout"
                 android:layout_width="match_parent"
-                android:layout_height="0dp"
-                android:layout_marginHorizontal="@dimen/common_spacing_2x"
-                android:layout_marginVertical="@dimen/common_spacing"
-                android:layout_weight="1"
-                android:background="@drawable/home_card_bg"
-                android:gravity="center_vertical"
+                android:layout_height="match_parent"
                 android:orientation="vertical">
 
                 <LinearLayout
+                    android:id="@+id/base_info_layout"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:orientation="horizontal">
+                    android:layout_marginHorizontal="@dimen/common_spacing_2x"
+                    android:layout_marginTop="@dimen/common_spacing_2x"
+                    android:layout_marginBottom="@dimen/common_spacing"
+                    android:background="@drawable/home_card_bg"
+                    android:gravity="center_vertical"
+                    android:orientation="vertical">
 
                     <TextView
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
                         android:layout_marginLeft="@dimen/common_spacing"
                         android:layout_weight="1"
-                        android:text="@string/workflow_mode"
+                        android:text="@string/base_info_title"
                         android:textColor="@color/black"
                         android:textSize="@dimen/normal_text_size_18" />
 
-                    <TextView
-                        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:background="@drawable/common_btn"
-                        android:paddingHorizontal="@dimen/common_spacing_2x"
-                        android:text="@string/settings"
-                        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" />
+                    <View
+                        android:layout_width="match_parent"
+                        android:layout_height="@dimen/divider_line_space"
+                        android:background="@color/black" />
 
-                <FrameLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="match_parent"
-                    android:background="@drawable/card_white_bg">
 
-                    <androidx.recyclerview.widget.RecyclerView
-                        android:id="@+id/workflow_rv"
+                    <androidx.constraintlayout.widget.ConstraintLayout
                         android:layout_width="match_parent"
                         android:layout_height="match_parent"
-                        android:paddingHorizontal="@dimen/common_spacing"
-                        android:scrollbars="horizontal" />
-                </FrameLayout>
-            </LinearLayout>
-
-            <LinearLayout
-                android:id="@+id/point_info_layout"
-                android:layout_width="match_parent"
-                android:layout_height="0dp"
-                android:layout_marginHorizontal="@dimen/common_spacing_2x"
-                android:layout_marginVertical="@dimen/common_spacing"
-                android:layout_weight="1"
-                android:background="@drawable/home_card_bg"
-                android:gravity="center_vertical"
-                android:orientation="vertical">
-
-                <LinearLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:orientation="horizontal">
+                        android:paddingHorizontal="@dimen/dialog_content_normal_padding_horizontal"
+                        android:paddingBottom="@dimen/common_spacing_2x">
 
-                    <TextView
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:layout_marginLeft="@dimen/common_spacing"
-                        android:layout_weight="1"
-                        android:text="@string/point_info_title"
-                        android:textColor="@color/black"
-                        android:textSize="@dimen/normal_text_size_18" />
+                        <TextView
+                            android:id="@+id/sop_workstation_tv"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginTop="@dimen/common_spacing_2x"
+                            android:text="@string/sop_workstation"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/common_text_size"
+                            app:layout_constraintStart_toStartOf="parent"
+                            app:layout_constraintTop_toTopOf="parent" />
 
-                </LinearLayout>
+                        <TextView
+                            android:id="@+id/workstation_tv"
+                            android:layout_width="0dp"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="@dimen/common_spacing"
+                            android:background="@drawable/bg_common_input"
+                            android:drawableRight="@mipmap/icon_drop_down"
+                            android:hint="@string/please_select_sop_workstation"
+                            android:maxLines="1"
+                            android:paddingHorizontal="@dimen/common_spacing"
+                            android:paddingVertical="2dp"
+                            android:singleLine="true"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/common_text_size"
+                            app:layout_constraintBottom_toBottomOf="@+id/sop_workstation_tv"
+                            app:layout_constraintEnd_toEndOf="parent"
+                            app:layout_constraintStart_toEndOf="@+id/sop_workstation_tv"
+                            app:layout_constraintTop_toTopOf="@+id/sop_workstation_tv" />
 
-                <View
-                    android:layout_width="match_parent"
-                    android:layout_height="@dimen/divider_line_space"
-                    android:background="@color/black" />
+                        <TextView
+                            android:id="@+id/sop_title"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginTop="@dimen/common_spacing_2x"
+                            android:text="@string/create_sop_job_sop"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/common_text_size"
+                            app:layout_constraintEnd_toEndOf="@+id/sop_workstation_tv"
+                            app:layout_constraintTop_toBottomOf="@+id/sop_workstation_tv" />
 
-                <androidx.recyclerview.widget.RecyclerView
-                    android:id="@+id/point_rv"
-                    android:layout_width="match_parent"
-                    android:layout_height="match_parent"
-                    android:paddingBottom="@dimen/common_spacing" />
+                        <TextView
+                            android:id="@+id/sop_tv"
+                            android:layout_width="0dp"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="@dimen/common_spacing"
+                            android:background="@drawable/bg_common_input"
+                            android:drawableRight="@mipmap/icon_drop_down"
+                            android:hint="@string/please_select_sop"
+                            android:maxLines="1"
+                            android:paddingHorizontal="@dimen/common_spacing"
+                            android:paddingVertical="2dp"
+                            android:singleLine="true"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/common_text_size"
+                            app:layout_constraintBottom_toBottomOf="@+id/sop_title"
+                            app:layout_constraintEnd_toEndOf="parent"
+                            app:layout_constraintStart_toEndOf="@+id/sop_title"
+                            app:layout_constraintTop_toTopOf="@+id/sop_title" />
 
-            </LinearLayout>
+                        <TextView
+                            android:id="@+id/job_name_tv"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginTop="@dimen/common_spacing_2x"
+                            android:text="@string/job_name"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/common_text_size"
+                            app:layout_constraintEnd_toEndOf="@+id/sop_title"
+                            app:layout_constraintTop_toBottomOf="@+id/sop_title" />
 
-            <LinearLayout
-                android:id="@+id/member_info_layout"
-                android:layout_width="match_parent"
-                android:layout_height="0dp"
-                android:layout_marginHorizontal="@dimen/common_spacing_2x"
-                android:layout_marginVertical="@dimen/common_spacing"
-                android:layout_weight="1"
-                android:background="@drawable/home_card_bg"
-                android:gravity="center_vertical"
-                android:orientation="vertical">
+                        <EditText
+                            android:id="@+id/job_name_et"
+                            android:layout_width="0dp"
+                            android:layout_height="wrap_content"
+                            android:layout_marginLeft="@dimen/common_spacing"
+                            android:background="@drawable/bg_common_input"
+                            android:hint="@string/please_input_job_name"
+                            android:maxLines="1"
+                            android:paddingHorizontal="@dimen/common_spacing"
+                            android:paddingVertical="2dp"
+                            android:singleLine="true"
+                            android:textColor="@color/black"
+                            android:textSize="@dimen/common_text_size"
+                            app:layout_constraintBottom_toBottomOf="@+id/job_name_tv"
+                            app:layout_constraintEnd_toEndOf="parent"
+                            app:layout_constraintStart_toEndOf="@+id/job_name_tv"
+                            app:layout_constraintTop_toTopOf="@+id/job_name_tv" />
+                    </androidx.constraintlayout.widget.ConstraintLayout>
+                </LinearLayout>
 
                 <LinearLayout
                     android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:orientation="horizontal">
+                    android:layout_height="0dp"
+                    android:layout_weight="1"
+                    android:orientation="vertical">
 
-                    <TextView
+                    <LinearLayout
+                        android:id="@+id/workflow_mode_layout"
                         android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:layout_marginLeft="@dimen/common_spacing"
+                        android:layout_height="0dp"
+                        android:layout_marginHorizontal="@dimen/common_spacing_2x"
+                        android:layout_marginVertical="@dimen/common_spacing"
                         android:layout_weight="1"
-                        android:text="@string/member_info_title"
-                        android:textColor="@color/black"
-                        android:textSize="@dimen/normal_text_size_18" />
+                        android:background="@drawable/home_card_bg"
+                        android:gravity="center_vertical"
+                        android:orientation="vertical">
 
-                    <TextView
-                        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:background="@drawable/common_btn"
-                        android:paddingHorizontal="@dimen/common_spacing_2x"
-                        android:text="@string/select"
-                        android:textColor="@color/black"
-                        android:textSize="@dimen/common_btn_text_size" />
-                </LinearLayout>
+                        <LinearLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:orientation="horizontal">
+
+                            <TextView
+                                android:layout_width="match_parent"
+                                android:layout_height="wrap_content"
+                                android:layout_marginLeft="@dimen/common_spacing"
+                                android:layout_weight="1"
+                                android:text="@string/workflow_mode"
+                                android:textColor="@color/black"
+                                android:textSize="@dimen/normal_text_size_18" />
+
+                            <TextView
+                                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:background="@drawable/common_btn"
+                                android:paddingHorizontal="@dimen/common_spacing_2x"
+                                android:text="@string/settings"
+                                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" />
+                        <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:gravity="center"
-                    android:orientation="horizontal">
+                        <FrameLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="match_parent"
+                            android:background="@drawable/card_white_bg">
+
+                            <androidx.recyclerview.widget.RecyclerView
+                                android:id="@+id/workflow_rv"
+                                android:layout_width="match_parent"
+                                android:layout_height="match_parent"
+                                android:paddingHorizontal="@dimen/common_spacing"
+                                android:scrollbars="horizontal" />
+                        </FrameLayout>
+                    </LinearLayout>
 
                     <LinearLayout
-                        android:layout_width="0dp"
-                        android:layout_height="match_parent"
+                        android:id="@+id/point_info_layout"
+                        android:layout_width="match_parent"
+                        android:layout_height="0dp"
+                        android:layout_marginHorizontal="@dimen/common_spacing_2x"
+                        android:layout_marginVertical="@dimen/common_spacing"
                         android:layout_weight="1"
                         android:background="@drawable/home_card_bg"
+                        android:gravity="center_vertical"
                         android:orientation="vertical">
 
-                        <TextView
-                            android:layout_width="wrap_content"
+                        <LinearLayout
+                            android:layout_width="match_parent"
                             android:layout_height="wrap_content"
-                            android:layout_gravity="center"
-                            android:gravity="center"
-                            android:paddingHorizontal="@dimen/common_spacing_2x"
-                            android:paddingVertical="@dimen/common_spacing"
-                            android:text="@string/locker"
-                            android:textColor="@color/black"
-                            android:textSize="@dimen/normal_text_size_18" />
+                            android:orientation="horizontal">
+
+                            <TextView
+                                android:layout_width="match_parent"
+                                android:layout_height="wrap_content"
+                                android:layout_marginLeft="@dimen/common_spacing"
+                                android:layout_weight="1"
+                                android:text="@string/point_info_title"
+                                android:textColor="@color/black"
+                                android:textSize="@dimen/normal_text_size_18" />
+
+                        </LinearLayout>
 
                         <View
                             android:layout_width="match_parent"
                             android:layout_height="@dimen/divider_line_space"
                             android:background="@color/black" />
 
-
                         <androidx.recyclerview.widget.RecyclerView
-                            android:id="@+id/locker_rv"
-                            android:layout_width="wrap_content"
+                            android:id="@+id/point_rv"
+                            android:layout_width="match_parent"
                             android:layout_height="match_parent"
-                            android:layout_gravity="center" />
+                            android:paddingBottom="@dimen/common_spacing" />
+
                     </LinearLayout>
 
                     <LinearLayout
-                        android:id="@+id/select_colocker_layout"
-                        android:layout_width="0dp"
-                        android:layout_height="match_parent"
+                        android:id="@+id/member_info_layout"
+                        android:layout_width="match_parent"
+                        android:layout_height="0dp"
+                        android:layout_marginHorizontal="@dimen/common_spacing_2x"
+                        android:layout_marginVertical="@dimen/common_spacing"
                         android:layout_weight="1"
                         android:background="@drawable/home_card_bg"
+                        android:gravity="center_vertical"
                         android:orientation="vertical">
 
-                        <TextView
+                        <LinearLayout
                             android:layout_width="match_parent"
                             android:layout_height="wrap_content"
-                            android:gravity="center"
-                            android:paddingHorizontal="@dimen/common_spacing_2x"
-                            android:paddingVertical="@dimen/common_spacing"
-                            android:text="@string/colocker"
-                            android:textColor="@color/black"
-                            android:layout_gravity="center"
-                            android:textSize="@dimen/normal_text_size_18" />
+                            android:orientation="horizontal">
+
+                            <TextView
+                                android:layout_width="match_parent"
+                                android:layout_height="wrap_content"
+                                android:layout_marginLeft="@dimen/common_spacing"
+                                android:layout_weight="1"
+                                android:text="@string/member_info_title"
+                                android:textColor="@color/black"
+                                android:textSize="@dimen/normal_text_size_18" />
+
+                            <TextView
+                                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:background="@drawable/common_btn"
+                                android:paddingHorizontal="@dimen/common_spacing_2x"
+                                android:text="@string/select"
+                                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" />
 
-                        <androidx.recyclerview.widget.RecyclerView
-                            android:id="@+id/colocker_rv"
-                            android:layout_width="wrap_content"
-                            android:layout_height="match_parent" />
+                        <LinearLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="match_parent"
+                            android:gravity="center"
+                            android:orientation="horizontal">
+
+                            <LinearLayout
+                                android:layout_width="0dp"
+                                android:layout_height="match_parent"
+                                android:layout_weight="1"
+                                android:background="@drawable/home_card_bg"
+                                android:orientation="vertical">
+
+                                <TextView
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="wrap_content"
+                                    android:layout_gravity="center"
+                                    android:gravity="center"
+                                    android:paddingHorizontal="@dimen/common_spacing_2x"
+                                    android:paddingVertical="@dimen/common_spacing"
+                                    android:text="@string/locker"
+                                    android:textColor="@color/black"
+                                    android:textSize="@dimen/normal_text_size_18" />
+
+                                <View
+                                    android:layout_width="match_parent"
+                                    android:layout_height="@dimen/divider_line_space"
+                                    android:background="@color/black" />
+
+
+                                <androidx.recyclerview.widget.RecyclerView
+                                    android:id="@+id/locker_rv"
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="match_parent"
+                                    android:layout_gravity="center" />
+                            </LinearLayout>
+
+                            <LinearLayout
+                                android:id="@+id/select_colocker_layout"
+                                android:layout_width="0dp"
+                                android:layout_height="match_parent"
+                                android:layout_weight="1"
+                                android:background="@drawable/home_card_bg"
+                                android:orientation="vertical">
+
+                                <TextView
+                                    android:layout_width="match_parent"
+                                    android:layout_height="wrap_content"
+                                    android:layout_gravity="center"
+                                    android:gravity="center"
+                                    android:paddingHorizontal="@dimen/common_spacing_2x"
+                                    android:paddingVertical="@dimen/common_spacing"
+                                    android:text="@string/colocker"
+                                    android:textColor="@color/black"
+                                    android:textSize="@dimen/normal_text_size_18" />
+
+                                <View
+                                    android:layout_width="match_parent"
+                                    android:layout_height="@dimen/divider_line_space"
+                                    android:background="@color/black" />
+
+                                <androidx.recyclerview.widget.RecyclerView
+                                    android:id="@+id/colocker_rv"
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="match_parent" />
+                            </LinearLayout>
+
+                        </LinearLayout>
                     </LinearLayout>
-
                 </LinearLayout>
             </LinearLayout>
-        </LinearLayout>
+        </androidx.core.widget.NestedScrollView>
 
         <LinearLayout
             android:layout_width="match_parent"
@@ -406,31 +419,43 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_marginRight="@dimen/common_spacing"
-                android:background="@drawable/common_btn"
+                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/save_and_execute"
-                android:textColor="@color/black"
+                android:textColor="@color/white"
                 android:textSize="@dimen/common_btn_text_size" />
 
             <TextView
                 android:id="@+id/save"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:background="@drawable/common_btn"
+                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/save"
-                android:textColor="@color/black"
+                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_marginHorizontal="@dimen/common_spacing"
-                android:background="@drawable/common_btn"
+                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/black"
+                android:textColor="@color/white"
                 android:textSize="@dimen/common_btn_text_size" />
         </LinearLayout>
     </LinearLayout>

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

@@ -140,7 +140,7 @@
                 <LinearLayout
                     android:layout_width="match_parent"
                     android:layout_height="80dp"
-                    android:layout_marginTop="@dimen/common_spacing_2x"
+                    android:layout_marginTop="@dimen/common_spacing"
                     android:layout_marginBottom="@dimen/common_spacing"
                     android:divider="@drawable/common_divider_normal_space_horizontal"
                     android:orientation="horizontal"
@@ -349,7 +349,7 @@
                     android:layout_width="match_parent"
                     android:layout_height="80dp"
                     android:layout_below="@+id/overview_data_filter_layout"
-                    android:layout_marginTop="@dimen/common_spacing_2x"
+                    android:layout_marginTop="@dimen/common_spacing"
                     android:layout_marginBottom="@dimen/common_spacing"
                     android:divider="@drawable/common_divider_normal_space_horizontal"
                     android:orientation="horizontal"

+ 8 - 5
app/src/main/res/layout/fragment_select_memeber.xml

@@ -88,15 +88,17 @@
 
             <LinearLayout
                 android:layout_width="match_parent"
-                android:layout_height="wrap_content"
+                android:layout_height="0dp"
                 android:layout_marginHorizontal="@dimen/common_spacing_2x"
                 android:layout_marginTop="@dimen/common_spacing_2x"
+                android:layout_weight="1"
                 android:background="@drawable/home_card_bg"
                 android:orientation="vertical">
 
                 <LinearLayout
                     android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
+                    android:layout_height="0dp"
+                    android:layout_weight="1"
                     android:background="@drawable/home_card_bg"
                     android:divider="@drawable/divider_table"
                     android:orientation="horizontal"
@@ -112,8 +114,8 @@
                             android:id="@+id/locker_title_tv"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:gravity="center"
                             android:layout_marginVertical="@dimen/common_spacing"
+                            android:gravity="center"
                             android:paddingHorizontal="@dimen/common_spacing_2x"
                             android:paddingVertical="@dimen/common_spacing"
                             android:text="@string/locker"
@@ -132,7 +134,8 @@
                 <LinearLayout
                     android:id="@+id/select_colocker_layout"
                     android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
+                    android:layout_height="0dp"
+                    android:layout_weight="1"
                     android:background="@drawable/home_card_bg"
                     android:divider="@drawable/divider_table"
                     android:orientation="horizontal"
@@ -148,8 +151,8 @@
                             android:id="@+id/colocker_title_tv"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:gravity="center"
                             android:layout_marginVertical="@dimen/common_spacing"
+                            android:gravity="center"
                             android:paddingHorizontal="@dimen/common_spacing_2x"
                             android:paddingVertical="@dimen/common_spacing"
                             android:text="@string/colocker"

+ 136 - 25
app/src/main/res/layout/item_my_todo.xml

@@ -20,64 +20,175 @@
             android:padding="12dp">
 
             <TextView
-                android:id="@+id/job_name"
+                android:id="@+id/todo_title"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_marginRight="@dimen/common_spacing"
                 android:ellipsize="end"
                 android:maxLines="1"
                 android:paddingVertical="@dimen/common_spacing"
-                android:textColor="@color/text_primary"
                 android:textSize="@dimen/common_text_size"
                 android:textStyle="bold"
-                app:layout_constraintEnd_toStartOf="@id/btn_handle"
+                app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toTopOf="parent" />
 
-            <!-- 蓝色圆角确认按钮 -->
+            <View
+                android:id="@+id/line"
+                android:layout_width="match_parent"
+                android:layout_height="1dp"
+                android:layout_marginVertical="@dimen/common_spacing"
+                android:background="@color/black"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@id/todo_title" />
+
             <TextView
-                android:id="@+id/btn_handle"
+                android:id="@+id/job_name_tv"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:background="@drawable/bg_status_chip"
-                android:paddingHorizontal="@dimen/common_spacing_2x"
+                android:layout_marginRight="@dimen/common_spacing"
+                android:ellipsize="end"
+                android:maxLines="1"
                 android:paddingVertical="@dimen/common_spacing"
-                android:text="@string/handle"
-                android:textColor="@color/white"
-                android:textSize="@dimen/common_text_size_small"
-                app:layout_constraintBottom_toBottomOf="@+id/job_name"
+                android:text="@string/item_my_todo_job_name_title"
+                android:textColor="@color/black"
+                android:textSize="@dimen/common_text_size"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/line" />
+
+            <TextView
+                android:id="@+id/job_name"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_marginRight="@dimen/common_spacing"
+                android:ellipsize="end"
+                android:maxLines="1"
+                android:paddingVertical="@dimen/common_spacing"
+                android:textColor="@color/black"
+                android:textSize="@dimen/common_text_size"
+                app:layout_constraintBottom_toBottomOf="@+id/job_name_tv"
                 app:layout_constraintEnd_toEndOf="parent"
-                app:layout_constraintTop_toTopOf="@+id/job_name"
-                app:rippleColor="@color/brand_blue_dark" />
+                app:layout_constraintStart_toEndOf="@+id/job_name_tv"
+                app:layout_constraintTop_toTopOf="@+id/job_name_tv" />
 
             <TextView
-                android:id="@+id/todo_title"
+                android:id="@+id/current_step_tv"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:ellipsize="end"
+                android:maxLines="1"
+                android:paddingVertical="@dimen/common_spacing"
+                android:text="@string/item_my_todo_current_step_title"
+                android:textColor="@color/black"
+                android:textSize="@dimen/common_text_size"
+                app:layout_constraintEnd_toEndOf="@+id/job_name_tv"
+                app:layout_constraintTop_toBottomOf="@+id/job_name_tv" />
+
+            <TextView
+                android:id="@+id/current_step"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
-                android:layout_marginTop="6dp"
                 android:ellipsize="end"
                 android:maxLines="2"
                 android:paddingVertical="@dimen/common_spacing"
-                android:textColor="@color/text_secondary"
-                android:textSize="@dimen/common_text_size_small"
+                android:textColor="@color/black"
+                android:textSize="@dimen/common_text_size"
+                app:layout_constraintBottom_toBottomOf="@+id/current_step_tv"
                 app:layout_constraintEnd_toEndOf="parent"
-                app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toBottomOf="@id/job_name" />
+                app:layout_constraintStart_toEndOf="@+id/current_step_tv"
+                app:layout_constraintTop_toTopOf="@+id/current_step_tv" />
 
             <TextView
-                android:id="@+id/todo_content"
+                android:id="@+id/complete_time_tv"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:ellipsize="end"
+                android:maxLines="1"
+                android:paddingVertical="@dimen/common_spacing"
+                android:text="@string/item_my_todo_complete_time_title"
+                android:textColor="@color/black"
+                android:textSize="@dimen/common_text_size"
+                android:visibility="gone"
+                app:layout_constraintEnd_toEndOf="@+id/job_name_tv"
+                app:layout_constraintTop_toBottomOf="@+id/job_name_tv" />
+
+            <TextView
+                android:id="@+id/complete_time"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
-                android:layout_marginTop="6dp"
                 android:ellipsize="end"
                 android:maxLines="2"
                 android:paddingVertical="@dimen/common_spacing"
-                android:textColor="@color/text_secondary"
-                android:textSize="@dimen/common_text_size_small"
+                android:textColor="@color/black"
+                android:textSize="@dimen/common_text_size"
+                android:visibility="gone"
+                app:layout_constraintBottom_toBottomOf="@+id/complete_time_tv"
                 app:layout_constraintEnd_toEndOf="parent"
-                app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toBottomOf="@id/todo_title" />
+                app:layout_constraintStart_toEndOf="@+id/complete_time_tv"
+                app:layout_constraintTop_toTopOf="@+id/complete_time_tv" />
 
+            <TextView
+                android:id="@+id/current_operation_tv"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:ellipsize="end"
+                android:maxLines="1"
+                android:paddingVertical="@dimen/common_spacing"
+                android:text="@string/item_my_todo_current_operation_title"
+                android:textColor="@color/black"
+                android:textSize="@dimen/common_text_size"
+                app:layout_constraintEnd_toEndOf="@+id/current_step_tv"
+                app:layout_constraintTop_toBottomOf="@+id/current_step_tv" />
+
+            <TextView
+                android:id="@+id/current_operation"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:ellipsize="end"
+                android:maxLines="2"
+                android:paddingVertical="@dimen/common_spacing"
+                android:textColor="@color/tag_error"
+                android:textSize="@dimen/common_text_size"
+                app:layout_constraintBottom_toBottomOf="@+id/current_operation_tv"
+                app:layout_constraintEnd_toStartOf="@+id/btn_handle"
+                app:layout_constraintStart_toEndOf="@+id/current_operation_tv"
+                app:layout_constraintTop_toBottomOf="@id/current_step" />
+
+            <!-- 蓝色圆角确认按钮 -->
+            <TextView
+                android:id="@+id/btn_handle"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:background="@drawable/bg_status_chip"
+                android:drawableLeft="@mipmap/icon_confirm"
+                android:drawablePadding="@dimen/common_spacing"
+                android:paddingHorizontal="@dimen/common_spacing_2x"
+                android:paddingVertical="@dimen/common_spacing"
+                android:text="@string/handle"
+                android:textColor="@color/white"
+                android:textSize="@dimen/common_text_size"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/current_step_tv"
+                app:rippleColor="@color/brand_blue_dark" />
+
+            <TextView
+                android:id="@+id/btn_point_detail"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginRight="@dimen/common_spacing"
+                android:background="@drawable/bg_status_chip"
+                android:paddingHorizontal="@dimen/common_spacing_2x"
+                android:paddingVertical="@dimen/common_spacing"
+                android:text="@string/point_detail"
+                android:textColor="@color/white"
+                android:textSize="@dimen/common_text_size"
+                android:visibility="gone"
+                app:layout_constraintBottom_toBottomOf="@+id/btn_handle"
+                app:layout_constraintEnd_toStartOf="@+id/btn_handle"
+                app:layout_constraintTop_toTopOf="@+id/btn_handle"
+                app:rippleColor="@color/brand_blue_dark" />
         </androidx.constraintlayout.widget.ConstraintLayout>
     </com.google.android.material.card.MaterialCardView>
 

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

@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools">
+
+    <LinearLayout
+        android:layout_width="@dimen/home_item_quick_entrance_layout"
+        android:layout_height="@dimen/home_item_quick_entrance_layout"
+        android:layout_margin="@dimen/common_spacing"
+        android:gravity="center_horizontal"
+        android:orientation="vertical">
+
+        <FrameLayout
+            android:layout_width="@dimen/home_item_quick_entrance_iv_layout"
+            android:layout_height="@dimen/home_item_quick_entrance_iv_layout"
+            android:background="@drawable/bg_home_menu_item">
+
+            <ImageView
+                android:id="@+id/home_menu_iv"
+                android:layout_width="@dimen/home_item_quick_entrance_iv"
+                android:layout_height="@dimen/home_item_quick_entrance_iv"
+                android:layout_gravity="center" />
+
+            <ImageView
+                android:id="@+id/add"
+                android:layout_width="@dimen/common_badge_icon_size"
+                android:layout_height="@dimen/common_badge_icon_size"
+                android:layout_gravity="right|top"
+                android:src="@drawable/icon_add"
+                android:visibility="gone" />
+
+            <ImageView
+                android:id="@+id/remove"
+                android:layout_width="@dimen/common_badge_icon_size"
+                android:layout_height="@dimen/common_badge_icon_size"
+                android:layout_gravity="right|top"
+                android:src="@drawable/icon_remove"
+                android:visibility="gone" />
+        </FrameLayout>
+
+        <TextView
+            android:id="@+id/home_menu_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="@dimen/common_spacing_small"
+            android:textColor="@color/black"
+            android:textSize="@dimen/home_item_quick_entrace_text_size"
+            tools:text="创建作业" />
+    </LinearLayout>
+</layout>

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

@@ -496,5 +496,11 @@
     <string name="handle_step_confirm">Please confirm if you have completed [%s]</string>
     <string name="handle_lock_take_key">Are you sure to obtain the key for locking?</string>
     <string name="handle_unlock_take_key">Are you sure to obtain the key for unlocking?</string>
+    <string name="item_my_todo_job_name_title">relevant Job:</string>
+    <string name="item_my_todo_current_step_title">Current Step:</string>
+    <string name="item_my_todo_current_operation_title">Current Operation:</string>
+    <string name="item_my_todo_complete_time_title">Completion time:</string>
+    <string name="point_detail">Point Detail</string>
+    <string name="close">Close</string>
 
 </resources>

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

@@ -496,5 +496,11 @@
     <string name="handle_step_confirm">请确认是否完成[%s]</string>
     <string name="handle_lock_take_key">确认获取钥匙进行上锁吗?</string>
     <string name="handle_unlock_take_key">确认获取钥匙进行解锁吗?</string>
+    <string name="item_my_todo_job_name_title">相关作业:</string>
+    <string name="item_my_todo_current_step_title">当前步骤:</string>
+    <string name="item_my_todo_current_operation_title">当前操作:</string>
+    <string name="item_my_todo_complete_time_title">完成时间:</string>
+    <string name="point_detail">点位明细</string>
+    <string name="close">关闭</string>
 
 </resources>

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

@@ -99,7 +99,7 @@
     <dimen name="job_execute_tab_icon_size">30dp</dimen>
     <dimen name="slots_exception_report_width">500dp</dimen>
     <dimen name="slots_exception_report_dialog_content_height">200dp</dimen>
-    <dimen name="avatar_size">80dp</dimen>
+    <dimen name="avatar_size">60dp</dimen>
     <dimen name="dialog_check_face_close_size">60dp</dimen>
     <dimen name="badge_text_size">18sp</dimen>
     <dimen name="selected_point_info_layout_width">400dp</dimen>

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

@@ -499,5 +499,11 @@
     <string name="handle_step_confirm">请确认是否完成[%s]</string>
     <string name="handle_lock_take_key">确认获取钥匙进行上锁吗?</string>
     <string name="handle_unlock_take_key">确认获取钥匙进行解锁吗?</string>
+    <string name="item_my_todo_job_name_title">相关作业:</string>
+    <string name="item_my_todo_current_step_title">当前步骤:</string>
+    <string name="item_my_todo_current_operation_title">当前操作:</string>
+    <string name="item_my_todo_complete_time_title">完成时间:</string>
+    <string name="point_detail">点位明细</string>
+    <string name="close">关闭</string>
 
 </resources>

+ 15 - 44
data/src/main/java/com/grkj/data/dao/JobTicketDao.kt

@@ -15,7 +15,6 @@ import com.grkj.data.model.dos.IsJobTicketLock
 import com.grkj.data.model.dos.IsJobTicketPoints
 import com.grkj.data.model.dos.IsJobTicketStep
 import com.grkj.data.model.dos.IsJobTicketUser
-import com.grkj.data.model.local.TodoStepJoin
 import com.grkj.data.model.vo.IsJobTicketDataVo
 import com.grkj.data.model.vo.IsJobTicketKeyDataVo
 import com.grkj.data.model.vo.IsJobTicketLockDataVo
@@ -27,7 +26,6 @@ import com.grkj.data.model.vo.JobPointVo
 import com.grkj.data.model.vo.JobTicketManageVo
 import com.grkj.data.model.vo.JobUserVo
 import com.grkj.data.model.vo.LockedPointVo
-import com.grkj.data.model.vo.TodoItemVo
 import com.sik.sikcore.date.TimeUtils
 
 /**
@@ -658,46 +656,6 @@ interface JobTicketDao {
     @Query("select group_id from is_job_ticket_points where point_id = :pointId and ticket_id = :ticketId")
     fun getGroupIdByPointIdAndTicketId(pointId: Long, ticketId: Long): Long
 
-    /**
-     * 我的待办列表
-     */
-    @Query(
-        """
-            SELECT
-            js.step_id,
-            js.ticket_id,
-            js.step_index,
-            js.step_status,
-            js.workflow_step_id,
-            jt.ticket_name,
-            jt.create_by,
-            jt.ticket_start_time,
-            ws.enable_set_locker,
-            ws.enable_set_colocker,
-            ws.enable_lock,
-            ws.enable_colock,
-            ws.enable_release_colock,
-            ws.enable_unlock,
-            ws.enable_end_job,
-            ws.confirm_user,
-            ws.confirm_role_code,
-            ws.step_title,
-            ws.step_title_short,
-            ws.step_description,
-            ju.user_role,
-            ju.job_status
-        FROM is_job_ticket_step js
-        JOIN is_job_ticket jt  ON js.ticket_id = jt.ticket_id
-        JOIN is_workflow_step ws ON js.workflow_step_id = ws.step_id
-        LEFT JOIN is_job_ticket_user ju ON js.ticket_id = ju.ticket_id
-                                       AND ju.user_id  = :currentUserId
-                                       AND ju.del_flag = '0'
-        WHERE js.del_flag   = '0'
-          AND jt.del_flag   = '0'
-    """
-    )
-    fun getMyTodoList(currentUserId: Long): List<TodoStepJoin>
-
     /**
      * 获取所有用户参与的作业票
      */
@@ -731,6 +689,19 @@ interface JobTicketDao {
     /**
      * 根据作业票id获取分组
      */
-    @Query("select * from is_job_ticket_group where ticket_id in (:ticketId)")
-    fun getGroupsByTicketIds(ticketId: List<Long>): List<IsJobTicketGroup>
+    @Query("select * from is_job_ticket_group where ticket_id in (:ticketIds)")
+    fun getGroupsByTicketIds(ticketIds: List<Long>): List<IsJobTicketGroup>
+
+    /**
+     * 根据作业票id获取用户数据
+     */
+    @Query("""
+        select ijtu.*,
+        su.nick_name as nickName,
+        ijtg.group_name
+        from is_job_ticket_user ijtu 
+        left join sys_user su on ijtu.user_id = su.user_id 
+        left join is_job_ticket_group ijtg on ijtg.id = ijtu.group_id 
+        where ijtu.ticket_id in (:ticketIds)""")
+    fun getTicketUsersByTicketIds(ticketIds: List<Long>): List<IsJobTicketUserDataVo>
 }

+ 32 - 29
data/src/main/java/com/grkj/data/model/local/TodoStepJoin.kt

@@ -1,42 +1,44 @@
 package com.grkj.data.model.local
 
-import androidx.room.ColumnInfo
 import com.grkj.data.enums.RoleEnum
 
 data class TodoStepJoin(
     // ----- 基础定位字段 -----
-    @ColumnInfo(name = "step_id") val stepId: Long,
-    @ColumnInfo(name = "ticket_id") val ticketId: Long,
-    @ColumnInfo(name = "step_index") val stepIndex: Int,
-    @ColumnInfo(name = "step_status") val stepStatus: String,
-    @ColumnInfo(name = "workflow_step_id") val workflowStepId: Long,
+    val stepId: Long,
+    val ticketId: Long,
+    val stepIndex: Int,
+    val stepStatus: String,
+    val stepUpdateTime: String,
+    val workflowStepId: Long,
 
     // ----- Ticket 信息 -----
-    @ColumnInfo(name = "ticket_name") val ticketName: String?,
-    @ColumnInfo(name = "create_by") val createBy: String?,
-    @ColumnInfo(name = "ticket_start_time") val ticketStartTime: String?,
+    val ticketName: String?,
+    val createBy: String?,
+    val ticketStartTime: String?,
 
     // ----- WorkflowStep 信息(判定动作) -----
-    @ColumnInfo(name = "enable_set_locker") val enableSetLocker: Boolean,
-    @ColumnInfo(name = "enable_set_colocker") val enableSetColocker: Boolean,
-    @ColumnInfo(name = "enable_lock") val enableLock: Boolean,
-    @ColumnInfo(name = "enable_colock") val enableColock: Boolean,
-    @ColumnInfo(name = "enable_release_colock") val enableReleaseColock: Boolean,
-    @ColumnInfo(name = "enable_unlock") val enableUnlock: Boolean,
-    @ColumnInfo(name = "enable_end_job") val enableEndJob: Boolean,
-    @ColumnInfo(name = "confirm_user") val confirmUser: Long?,
-    @ColumnInfo(name = "confirm_role_code") val confirmRoleCode: String?,
-    @ColumnInfo(name = "step_title") val stepTitle: String?,
-    @ColumnInfo(name = "step_title_short") val stepTitleShort: String?,
-    @ColumnInfo(name = "step_description") val stepDescription: String?,
+    val enableSetLocker: Boolean,
+    val enableSetColocker: Boolean,
+    val enableLock: Boolean,
+    val enableColock: Boolean,
+    val enableReleaseColock: Boolean,
+    val enableUnlock: Boolean,
+    val enableEndJob: Boolean,
+    val confirmUser: Long?,
+    val confirmRoleCode: String?,
+    val stepTitle: String?,
+    val stepTitleShort: String?,
+    val stepDescription: String?,
 
     // ----- User 表(锁/共锁人员) -----
-    @ColumnInfo(name = "user_role") val userRole: String?,   // JTLOCKER/JTCOLOCKER
-    @ColumnInfo(name = "job_status") val jobStatus: String?,   // 0/1/2
-    @ColumnInfo(name = "key_status") val keyStatus: String?,   // 0/1/2 未取 已取 已还
+    val userRole: String?,   // JTLOCKER/JTCOLOCKER
+    val lockerUserId: Long?, //上锁人id
+    val keyStatus: String?,   // 0/1/2 未取 已取 已还
 
-    @ColumnInfo(name = "group_id") var groupId: Long? = null,
-    @ColumnInfo(name = "group_name") var groupName: String? = null
+    var groupId: Long? = null,
+    var groupName: String? = null,
+
+    var previousTodoStepJoin: List<TodoStepJoin>? = null,
 )
 
 // ============== 4️⃣ 权责判断 ==============
@@ -44,8 +46,8 @@ fun TodoStepJoin.isMyTodo(currentUserId: Long, currentUserName: String): Boolean
     val isCreator = createBy == currentUserName
 
     // ---- 判定锁/解锁 ----
-    if (enableLock && userRole == RoleEnum.JTLOCKER.roleKey && jobStatus == "0") return true
-    if (enableUnlock && userRole == RoleEnum.JTLOCKER.roleKey && jobStatus == "1") return true
+    if (enableLock && userRole == RoleEnum.JTLOCKER.roleKey && lockerUserId == currentUserId) return true
+    if (enableUnlock && userRole == RoleEnum.JTLOCKER.roleKey && lockerUserId == currentUserId) return true
 
     // ---- 判定共锁/解除共锁(由创建者) ----
     if (enableColock && isCreator) return true
@@ -56,7 +58,8 @@ fun TodoStepJoin.isMyTodo(currentUserId: Long, currentUserName: String): Boolean
 
     // ---- 普通步骤确认 ----
     val confirmToCurrentUser =
-        (confirmUser == currentUserId) || (confirmUser == null && confirmRoleCode == null && isCreator)
+        confirmUser == currentUserId || isCreator
+
     return !hasAnyHardwareOperationFunction() && confirmToCurrentUser
 }
 

+ 10 - 10
data/src/main/java/com/grkj/data/model/vo/TodoItemVo.kt

@@ -63,24 +63,24 @@ class TodoItemVo {
     var stepStatus: String = "0"
 
     /**
-     * 分组id
+     * 步骤更新时间
      */
-    var groupId: Long? = null
+    var stepUpdateTime: String = ""
 
     /**
-     * 待办状态(待处理 待执行 已处理)
+     * 分组id
      */
-    var todoStatus: String = ""
+    var groupId: Long? = null
 
     /**
-     * 是否已读
+     * 分组名称
      */
-    var isRead: Boolean = false
+    var groupName: String? = null
 
     /**
-     * 是否置顶
+     * 待办状态(待处理 待执行 已处理)
      */
-    var isPinned: Boolean = false
+    var todoStatus: String = ""
 
     /**
      * 创建时间(用于排序)
@@ -88,7 +88,7 @@ class TodoItemVo {
     var createTime: String? = ""
 
     /**
-     * 截止时间(当前业务暂不用,预留字段)
+     * 上一步待办
      */
-    var dueTime: Long? = null
+    var previousTodoItem: List<TodoItemVo>? = null
 }

+ 1 - 2
data/src/main/java/com/grkj/data/repository/IJobTicketRepository.kt

@@ -18,7 +18,6 @@ import com.grkj.data.model.vo.JobTicketGroupDataVo
 import com.grkj.data.model.vo.JobTicketManageVo
 import com.grkj.data.model.vo.JobUserVo
 import com.grkj.data.model.vo.LockedPointVo
-import com.grkj.data.model.vo.TodoItemVo
 
 /**
  * 作业票仓储
@@ -309,7 +308,7 @@ interface IJobTicketRepository {
     /**
      * 获取我的待办数量
      */
-    fun getMyToDoListJobCount(): Int
+    fun getMyToDoListJobCount(waitLimit: Int = 1): Int
 
     /**
      * 获取我的待办列表

+ 1 - 1
data/src/main/java/com/grkj/data/repository/impl/network/NetworkJobTicketRepository.kt

@@ -251,7 +251,7 @@ class NetworkJobTicketRepository  @Inject constructor() : BaseRepository(), IJob
         TODO("Not yet implemented")
     }
 
-    override fun getMyToDoListJobCount(): Int {
+    override fun getMyToDoListJobCount(waitLimit: Int): Int {
         TODO("Not yet implemented")
     }
 

+ 126 - 74
data/src/main/java/com/grkj/data/repository/impl/standard/JobTicketRepository.kt

@@ -249,12 +249,14 @@ class JobTicketRepository @Inject constructor(
         val keyRecords = jobTicketDao.getKeysByTicketIds(tickets.map { it.ticketId })
         // 5. 获取 ticket 所属分组
         val groups = jobTicketDao.getGroupsByTicketIds(tickets.map { it.ticketId })
-        // 6. 构建待办项 TodoStepJoin
+        // 6. 获取作业票的上锁人数据
+        val lockers = jobTicketDao.getTicketUsersByTicketIds(tickets.map { it.ticketId })
+        // 7. 构建待办项 TodoStepJoin
         val todoList = assembleTodoStepJoins(
-            tickets, modeIdToSteps, stepInstances, keyRecords, groups, userId, userName
+            tickets, modeIdToSteps, stepInstances, keyRecords, groups, lockers, userId, userName
         )
         // 7. 当前用户真正需要处理的
-        return todoList.filter { it.isMyTodo(userId, userName) }
+        return todoList
     }
 
     /**
@@ -266,6 +268,7 @@ class JobTicketRepository @Inject constructor(
         stepInstances: List<IsJobTicketStep>,
         keyRecords: List<IsJobTicketKey>,
         groups: List<IsJobTicketGroup>,
+        lockers: List<IsJobTicketUserDataVo>,
         userId: Long,
         userName: String
     ): List<TodoStepJoin> {
@@ -274,10 +277,11 @@ class JobTicketRepository @Inject constructor(
         tickets.forEach { ticket ->
             val ticketId = ticket.ticketId
             val groupList = groups.filter { it.ticketId == ticketId }
+            val lockerList = lockers.filter { it.ticketId == ticketId }
             val ticketSteps = stepInstances.filter { it.ticketId == ticketId }
             val workflowSteps = modeSteps[ticket.modeId] ?: emptyList()
-
-            ticketSteps.forEach { step ->
+            val previousStepJoin: MutableList<TodoStepJoin> = mutableListOf()
+            ticketSteps.sortedBy { it.stepIndex }.forEach { step ->
                 val workflowStep =
                     workflowSteps.firstOrNull { it.stepId == step.workflowStepId } ?: return@forEach
 
@@ -291,42 +295,76 @@ class JobTicketRepository @Inject constructor(
 
                         // 如果 key 记录没有,说明尚未开始取钥匙,按 groupId 拆分一条占位待办
                         if (keys.isEmpty()) {
-                            groupList.forEach { group ->
-                                result += buildTodoStepJoin(
+                            val groupStepJoin = groupList.map {
+                                buildTodoStepJoin(
                                     step,
                                     ticket,
                                     workflowStep,
-                                    group.id,
-                                    group.groupName,
+                                    lockerList,
+                                    it.id,
+                                    it.groupName,
                                     null
                                 )
                             }
+                            groupStepJoin.forEach {
+                                if (!previousStepJoin.isEmpty()) {
+                                    it.previousTodoStepJoin = previousStepJoin.toList()
+                                }
+                            }
+                            previousStepJoin.clear()
+                            result += groupStepJoin
+                            previousStepJoin.addAll(groupStepJoin)
                         } else {
-                            keys.forEach { key ->
-                                result += buildTodoStepJoin(
+                            val keysStepJoin = keys.map { key ->
+                                buildTodoStepJoin(
                                     step,
                                     ticket,
-                                    workflowStep,
+                                    workflowStep, lockerList,
                                     key.groupId,
+                                    groupList.find { group -> group.id == key.groupId }?.groupName,
                                     key
                                 )
                             }
+                            keysStepJoin.forEach {
+                                if (!previousStepJoin.isEmpty()) {
+                                    it.previousTodoStepJoin = previousStepJoin.toList()
+                                }
+                            }
+                            previousStepJoin.clear()
+                            result += keysStepJoin
+                            previousStepJoin.addAll(keysStepJoin)
                         }
                     }
 
                     // 🤝 JTCOLOCKER / RELEASE_COLOCK(不拆 group) todo 目前不需要添加共锁
                     workflowStep.enableColock || workflowStep.enableReleaseColock -> {
-//                        result += buildTodoStepJoin(step, ticket, workflowStep, null, null)
-                    }
+//                        val temp =buildTodoStepJoin(step, ticket, workflowStep, lockerList,null, null)
+//                        if (!previousStepJoin.isEmpty()) {
+//                            temp.previousTodoStepJoin = previousStepJoin.toList()
+//                        }
+//                        previousStepJoin.clear()
+//                        result +=temp
+//                        previousStepJoin.add(temp)
 
-                    // ✅ 步骤确认 / 结束作业(不拆 group)
-                    workflowStep.enableEndJob || workflowStep.currentUserCanConfirm() -> {
-                        result += buildTodoStepJoin(step, ticket, workflowStep, null, null)
                     }
 
-                    // 🚫 其他无效步骤忽略(或不在权限范围)
+                    // 除了特殊的剩下的都是步骤确认
                     else -> {
-                        // Do nothing
+                        val temp = buildTodoStepJoin(
+                            step,
+                            ticket,
+                            workflowStep,
+                            lockerList,
+                            null,
+                            "",
+                            null
+                        )
+                        if (!previousStepJoin.isEmpty()) {
+                            temp.previousTodoStepJoin = previousStepJoin.toList()
+                        }
+                        previousStepJoin.clear()
+                        result += temp
+                        previousStepJoin.add(temp)
                     }
                 }
             }
@@ -343,15 +381,18 @@ class JobTicketRepository @Inject constructor(
         step: IsJobTicketStep,
         ticket: IsJobTicket,
         workflowStep: WorkflowStep,
+        lockers: List<IsJobTicketUserDataVo>,
         groupId: Long?,
-        groupName: Long?,
-        key: IsJobTicketKey?
+        groupName: String?,
+        key: IsJobTicketKey?,
+        previousTodoStepJoin: List<TodoStepJoin>? = null
     ): TodoStepJoin {
         return TodoStepJoin(
             stepId = step.stepId,
             ticketId = ticket.ticketId,
             stepIndex = step.stepIndex,
             stepStatus = step.stepStatus,
+            stepUpdateTime = step.updateTime ?: "",
             workflowStepId = workflowStep.stepId,
 
             ticketName = ticket.ticketName,
@@ -372,12 +413,13 @@ class JobTicketRepository @Inject constructor(
             stepDescription = workflowStep.stepDescription,
 
             userRole = getUserRole(workflowStep),
-            jobStatus = ticket.ticketStatus,
+            lockerUserId = lockers.find { it.groupId == groupId }?.userId,
             keyStatus = getKeyStatusFromKey(key),
+            previousTodoStepJoin = previousTodoStepJoin
         ).also {
             // 将 groupId 写入(你如果实体字段没写,需要自己加上)
             it.groupId = groupId
-            it.groupId = groupId
+            it.groupName = groupName
         }
     }
 
@@ -405,12 +447,42 @@ class JobTicketRepository @Inject constructor(
         }
     }
 
-    override fun getMyToDoListJobCount(): Int {
-        return jobTicketDao.getMyTodoList(MainDomainData.userInfo?.userId ?: 0L).count {
-            it.isMyTodo(
-                MainDomainData.userInfo?.userId ?: 0L, MainDomainData.userInfo?.userName ?: ""
-            )
+    override fun getMyToDoListJobCount(waitLimit: Int): Int {
+        val userInfo = MainDomainData.userInfo
+        if (userInfo == null) {
+            return 0
         }
+
+        val userId = userInfo.userId
+        val userName = userInfo.userName
+        val todoList = getMyTodoList()
+        // 初始化容器
+        val tempTodo = mutableListOf<TodoStepJoin>()
+        val tempWait = mutableListOf<TodoStepJoin>()
+        val tempDone = mutableListOf<TodoStepJoin>()
+
+        // 1. 先按 ticketId 分组
+        val grouped = todoList.filter { it.isMyTodo(userId, userName) }.groupBy { it.ticketId }
+
+        grouped.forEach { (_, steps) ->
+            val doneSteps = steps.filter { it.stepStatus == "1" }
+            val pendingSteps = steps.filter { it.stepStatus == "0" }
+
+            // 当前步骤 = 最小 stepIndex 的 pending
+            val todoStep = pendingSteps.filter { pendingStep ->
+                todoList.filter { it.stepStatus == "0" }
+                    .minByOrNull { it.stepIndex }?.stepIndex == pendingStep.stepIndex
+            }
+            todoStep.let { tempTodo.addAll(it) }
+
+            // 剩下的就是 wait
+            pendingSteps.filter { it !in todoStep }.let {
+                tempWait.addAll(it)
+            }
+
+            tempDone.addAll(doneSteps)
+        }
+        return tempTodo.size + tempWait.take(waitLimit).toMutableList().size
     }
 
     override fun updateCoincideToUnLock(ticketDetail: TicketDetailRes, groupId: Long) {
@@ -422,9 +494,7 @@ class JobTicketRepository @Inject constructor(
                     ), "2", jobTicketPointsVO.recordId
                 )
                 jobTicketDao.updateJobTicketLockData(
-                    jobTicketPointsVO.ticketId,
-                    jobTicketPointsVO.lockId ?: 0,
-                    "2"
+                    jobTicketPointsVO.ticketId, jobTicketPointsVO.lockId ?: 0, "2"
                 )
             }
     }
@@ -498,20 +568,18 @@ class JobTicketRepository @Inject constructor(
         ticketDetailRes?.ticketPointsVOList =
             jobTicketPointDataList?.filterNotNull() as MutableList<TicketDetailRes.JobTicketPointsVO>
         //填充不可解锁点位
-        ticketDetailRes?.noUnlockTicketPointsVOSet =
-            ticketDetailRes.ticketPointsVOList?.filter {
-                val conflictPoint =
-                    jobTicketDao.getVirtualLockConflictPoint(it.pointId, it.lockId, ticketId)
-                conflictPoint.isNotEmpty()
-            }?.toMutableList()
+        ticketDetailRes?.noUnlockTicketPointsVOSet = ticketDetailRes.ticketPointsVOList?.filter {
+            val conflictPoint =
+                jobTicketDao.getVirtualLockConflictPoint(it.pointId, it.lockId, ticketId)
+            conflictPoint.isNotEmpty()
+        }?.toMutableList()
         return ticketDetailRes
     }
 
     override fun hasJobCross(ticketId: Long): Boolean {
         val points = jobTicketDao.getJobTicketPointsDataByTicketId(ticketId)
         val ticketIds = jobTicketDao.getProgressTicketIdsByPointsAndExceptTicketId(
-            ticketId,
-            points.map { it.pointId })
+            ticketId, points.map { it.pointId })
         return ticketIds.size > 1
     }
 
@@ -528,21 +596,15 @@ class JobTicketRepository @Inject constructor(
     override fun getJobDataPage(
         current: Int, size: Int
     ): List<JobTicketManageVo> {
-        val isAdmin = MainDomainData.roleKeys.orEmpty()
-            .contains(RoleEnum.ADMIN.roleKey)
+        val isAdmin = MainDomainData.roleKeys.orEmpty().contains(RoleEnum.ADMIN.roleKey)
 
         // 普通用户要排除 "异常" 状态
-        val exStatusList = CommonDictDataEnum.JOB_TICKET_STATUS
-            .commonDictRes
-            .filter { it.dictLabel == "异常" }
-            .mapNotNull { it.dictValue }
-            .ifEmpty { listOf("") }  // 管理员也能传,但不会被用到
+        val exStatusList =
+            CommonDictDataEnum.JOB_TICKET_STATUS.commonDictRes.filter { it.dictLabel == "异常" }
+                .mapNotNull { it.dictValue }.ifEmpty { listOf("") }  // 管理员也能传,但不会被用到
 
         return jobTicketDao.getTicketDataPage(
-            size = size,
-            offset = current * size,
-            isAdmin = isAdmin,
-            exStatusList = exStatusList
+            size = size, offset = current * size, isAdmin = isAdmin, exStatusList = exStatusList
         )
     }
 
@@ -603,8 +665,7 @@ class JobTicketRepository @Inject constructor(
         jobTicketDao.deleteJobTicketUserByUserIds(existsUsers.filter {
             it.userId !in (selectedLockerData.map { it.jobTicketGroupMemberList }
                 .flatten() + selectedColockerData).map { it.userId }
-        }
-            .map { it.userId })
+        }.map { it.userId })
         val newLockUser = selectedLockerData.map { it.jobTicketGroupMemberList }.flatten()
             .filter { it.userId !in existsUsers.map { it.userId } }
         val newCoLockUser =
@@ -661,27 +722,21 @@ class JobTicketRepository @Inject constructor(
 
     override fun getInProgressJobSize(workstationId: Long?, modeId: Long?): Int {
         // 普通用户要排除 "异常" 状态
-        val exStatusList = CommonDictDataEnum.JOB_TICKET_STATUS
-            .commonDictRes
-            .filter { it.dictLabel == "异常" }
-            .mapNotNull { it.dictValue }
-            .ifEmpty { listOf("") }  // 管理员也能传,但不会被用到
+        val exStatusList =
+            CommonDictDataEnum.JOB_TICKET_STATUS.commonDictRes.filter { it.dictLabel == "异常" }
+                .mapNotNull { it.dictValue }.ifEmpty { listOf("") }  // 管理员也能传,但不会被用到
         return jobTicketDao.getInProgressJobSize(workstationId, modeId, exStatusList)
     }
 
     override fun getInProgressJobSize(): Int {
-        val isAdmin = MainDomainData.roleKeys.orEmpty()
-            .contains(RoleEnum.ADMIN.roleKey)
+        val isAdmin = MainDomainData.roleKeys.orEmpty().contains(RoleEnum.ADMIN.roleKey)
 
         // 普通用户要排除 "异常" 状态
-        val exStatusList = CommonDictDataEnum.JOB_TICKET_STATUS
-            .commonDictRes
-            .filter { it.dictLabel == "异常" }
-            .mapNotNull { it.dictValue }
-            .ifEmpty { listOf("") }  // 管理员也能传,但不会被用到
+        val exStatusList =
+            CommonDictDataEnum.JOB_TICKET_STATUS.commonDictRes.filter { it.dictLabel == "异常" }
+                .mapNotNull { it.dictValue }.ifEmpty { listOf("") }  // 管理员也能传,但不会被用到
         return jobTicketDao.getInProgressJobSize(
-            isAdmin = isAdmin,
-            exStatusList = exStatusList
+            isAdmin = isAdmin, exStatusList = exStatusList
         )
     }
 
@@ -856,10 +911,8 @@ class JobTicketRepository @Inject constructor(
             workflowSteps.find { it.stepId == ticketSteps.firstOrNull { it.stepStatus == "0" }?.workflowStepId }
         val isJobTicketKey = BeanUtils.copyProperties(
             isJobTicketKeys.firstOrNull {
-                it.keyId == keyId && it.groupId == groupId && ((currentStep?.enableLock == true && it.ticketType == 0) ||
-                        (currentStep?.enableUnlock == true && it.ticketType == 1))
-            },
-            IsJobTicketKey::class.java
+                it.keyId == keyId && it.groupId == groupId && ((currentStep?.enableLock == true && it.ticketType == 0) || (currentStep?.enableUnlock == true && it.ticketType == 1))
+            }, IsJobTicketKey::class.java
         )
         if (isJobTicketKey == null) {
             logger.info("作业的钥匙信息不存在")
@@ -904,10 +957,9 @@ class JobTicketRepository @Inject constructor(
         if (points.isEmpty()) return NextJobPrompt.NO_NEW_JOB
 
         // 4. 取已完成的步骤(stepStatus == "1" 表示已做过)
-        val doneStepIds = jobTicketDao.getJobTicketStepDataByTicketId(ticketId)
-            .filter { it.stepStatus == "1" }
-            .map { it.workflowStepId }
-            .toSet()
+        val doneStepIds =
+            jobTicketDao.getJobTicketStepDataByTicketId(ticketId).filter { it.stepStatus == "1" }
+                .map { it.workflowStepId }.toSet()
         logger.info("当前已经完成的步骤:${doneStepIds}")
         // 5. 判断“上锁”/“解锁”哪一步已执行过
         val hasDoneLock = stepDefs.any { it.enableLock && doneStepIds.contains(it.stepId) }

+ 1 - 1
gradle/libs.versions.toml

@@ -11,7 +11,7 @@ material = "1.10.0"
 activity = "1.8.0"
 constraintlayout = "2.1.4"
 jetbrainsKotlinJvm = "2.0.21"
-sikextension = "1.1.60"
+sikextension = "1.1.61"
 sikcamera = "1.0.11"
 sikcronjob = "1.0.3"
 sikfontmanager = "1.0.2"

+ 1 - 1
ui-base/src/main/res/drawable/common_layout_bg.xml

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