Procházet zdrojové kódy

feat: 优化作业票编辑逻辑,支持已驳回状态的作业票编辑,调整相关提示信息

xieyong před 3 dny
rodič
revize
c3b65ef47a

+ 16 - 11
src/views/DangerousWorkList/add.vue

@@ -240,6 +240,7 @@
   import {
     FULL_CHECK_ENABLED,
     FULL_CHECK_KEY,
+    REJECTED_STATUS,
     canSubmitStatus,
     getProcessDefinitionKey,
     getProcessInstanceId
@@ -838,21 +839,25 @@
             );
             return;
           }
-          this.$confirm(
-            this.isEdit
-              ? '提交前将自动保存作业票内容,提交后作业票不可再修改,确认提交吗?'
-              : '提交后将保存作业票并发起审批流,提交后不可再修改,确认提交吗?',
-            '提示',
-            {
-              confirmButtonText: '确定',
-              cancelButtonText: '取消',
-              type: 'warning'
-            }
-          )
+          this.$confirm(this.getSubmitTip(), '提示', {
+            confirmButtonText: '确定',
+            cancelButtonText: '取消',
+            type: 'warning'
+          })
             .then(() => this.submitTicket(params, processDefinitionKey))
             .catch(() => {});
         });
       },
+      // 提交确认文案:已驳回的作业票重新提交会重新发起一轮审批流
+      getSubmitTip() {
+        if (Number(this.form.status) === REJECTED_STATUS) {
+          return '该作业票已被驳回,重新提交后将重新发起审批流,确认提交吗?';
+        }
+        if (this.isEdit) {
+          return '提交前将自动保存作业票内容,提交后作业票不可再修改,确认提交吗?';
+        }
+        return '提交后将保存作业票并发起审批流,提交后不可再修改,确认提交吗?';
+      },
       // 保存作业票并发起审批流
       async submitTicket(params, processDefinitionKey) {
         this.submitLoading = true;

+ 24 - 17
src/views/DangerousWorkList/constants.js

@@ -14,10 +14,10 @@ export const TICKET_STATUS = {
   4: '已驳回'
 };
 
-// 草稿(待提交)状态,只有该状态允许编辑、删除
+// 草稿(待提交)状态
 export const DRAFT_STATUS = 1;
 
-// 已驳回状态:允许重新提交审批
+// 已驳回状态:允许编辑、重新提交审批、删除
 export const REJECTED_STATUS = 4;
 
 /**
@@ -53,21 +53,20 @@ export function canDeleteStatus(status) {
 }
 
 /**
- * 受限空间作业的审批流编码
- *
- * 流程定义 key 由平台「流程设计器」中的流程模型决定,不同部署环境可能不同,
- * 因此允许用环境变量覆盖(.env 里配置 VUE_APP_EHS_CONFINED_SPACE_PROCESS_KEY)。
- *
- * 该 key 对应的流程模型需要配置:
- *   表单路由 formCustomCreatePath =
- *     {"pcView":"/bpm/handleTask/components/dangerousWorkTicket/detail.vue",
- *      "pcHandle":"/bpm/handleTask/components/dangerousWorkTicket/submit.vue"}
- *   节点(任务)key 与源系统 HO_PERMIT_CONFINED_SPACE_TWOTH ~ _EIGHTTH 对应,
- *   或直接用节点名称(风险辨识、气体分析、现场安全措施确认、安全交底、
- *   所在单位意见、作业实施、完工验收),前端按「key / 别名 / 名称 / 双向包含」多级匹配。
+ * 允许编辑的作业票状态
+ *  - 待提交(草稿):未提交的可直接编辑
+ *  - 已驳回:审批驳回后允许修改作业票内容,改完可重新提交,重新走审批流
+ */
+export const EDITABLE_STATUSES = [DRAFT_STATUS, REJECTED_STATUS];
+
+/**
+ * 判断作业票状态是否允许编辑
+ * @param status 作业票状态
+ * @returns true-允许编辑
  */
-const CONFINED_SPACE_PROCESS_KEY =
-  process.env.VUE_APP_EHS_CONFINED_SPACE_PROCESS_KEY || 'ehs_confined_space';
+export function canEditStatus(status) {
+  return EDITABLE_STATUSES.includes(Number(status));
+}
 
 /**
  * 作业票审批流配置
@@ -80,6 +79,14 @@ const CONFINED_SPACE_PROCESS_KEY =
  * sourceCode:源系统作业票流程编码(HO_PERMIT_*)
  * name:作业类型名称
  * processDefinitionKey:流程定义 key,即提交接口的 processDefinitionKey
+ *
+ * 受限空间作业对应的流程模型需要配置:
+ *   表单路由 formCustomCreatePath =
+ *     {"pcView":"/bpm/handleTask/components/dangerousWorkTicket/detail.vue",
+ *      "pcHandle":"/bpm/handleTask/components/dangerousWorkTicket/submit.vue"}
+ *   节点(任务)key 与源系统 HO_PERMIT_CONFINED_SPACE_TWOTH ~ _EIGHTTH 对应,
+ *   或直接用节点名称(风险辨识、气体分析、现场安全措施确认、安全交底、
+ *   所在单位意见、作业实施、完工验收),前端按「key / 别名 / 名称 / 双向包含」多级匹配。
  */
 export const WORK_TICKET_PROCESS_MAPPING = [
   {
@@ -92,7 +99,7 @@ export const WORK_TICKET_PROCESS_MAPPING = [
     code: '2',
     sourceCode: 'HO_PERMIT_CONFINED_SPACE',
     name: '受限空间作业',
-    processDefinitionKey: CONFINED_SPACE_PROCESS_KEY
+    processDefinitionKey: 'ehs_test2'
   }
 ];
 

+ 10 - 4
src/views/DangerousWorkList/workTicketDialog.vue

@@ -138,6 +138,7 @@
     REJECTED_STATUS,
     canSubmitStatus,
     canDeleteStatus,
+    canEditStatus,
     getProcessDefinitionKey,
     getProcessInstanceId
   } from './constants';
@@ -313,10 +314,10 @@
       handleView(row) {
         this.$refs.addRef.openTicket(row, this.work, 'view');
       },
-      // 编辑作业票:仅草稿(待提交)状态允许编辑
+      // 编辑作业票:待提交(草稿)与已驳回状态允许编辑
       handleEdit(row) {
-        if (!this.isDraft(row)) {
-          this.$message.warning('仅草稿(待提交)状态的作业票可以编辑');
+        if (!this.canEdit(row)) {
+          this.$message.warning('仅待提交(草稿)或已驳回状态的作业票可以编辑');
           return;
         }
         this.$refs.addRef.openTicket(row, this.work, 'edit');
@@ -493,11 +494,16 @@
           .catch(() => {});
       },
 
-      // 是否草稿(待提交)状态,只有该状态允许编辑
+      // 是否草稿(待提交)状态:草稿没有审批流实例,因此不展示「流程」入口
       isDraft(row) {
         return Number(row?.status) === DRAFT_STATUS;
       },
 
+      // 是否允许编辑:待提交(草稿)与已驳回都允许
+      canEdit(row) {
+        return canEditStatus(row?.status);
+      },
+
       // 是否允许提交(发起审批):待提交(草稿)与已驳回都允许
       canSubmit(row) {
         return canSubmitStatus(row?.status);