فهرست منبع

新增发起人自选流程

zhangjie 3 سال پیش
والد
کامیت
d2c0ac74f9

+ 0 - 16
src/modules/base/components/ModifyFlowDetail.vue

@@ -202,7 +202,6 @@
                     v-model="curNode.property.approveUserCountType"
                     class="width-full"
                     placeholder="请选择方式"
-                    :disabled="curNodeIsLast"
                     @change="curNodeChange"
                   >
                     <el-option
@@ -218,7 +217,6 @@
                     v-model="curNode.property.approveUserSelectRange"
                     class="width-full"
                     placeholder="请选择范围"
-                    :disabled="curNodeIsLast"
                     @change="curNodeChange"
                   >
                     <el-option
@@ -450,7 +448,6 @@ export default {
       flowInfo: { ...initFlowInfo },
       nodes: [],
       curNode: {},
-      curNodeIsLast: false,
       curAddUsers: [],
       curAddUserType: "",
       curAddRoles: [],
@@ -506,8 +503,6 @@ export default {
         this.nodes = deepCopy(this.initNodes);
         // this.toSelectNode(this.nodes[1]);
         this.toAddNode(this.nodes[0].id);
-        // 发起人自选模式,默认新增两个节点
-        if (this.IS_APPROVE_SET) this.toAddNode(this.nodes[0].id);
       }
     },
     visibleChange() {
@@ -551,17 +546,6 @@ export default {
         return;
       }
       this.curNode = node ? deepCopy(node) : {};
-      if (!this.IS_APPROVE_SET) return;
-
-      // 发起人自选模式,最后一个节点禁止编辑审批人
-      const pos = this.nodes.findIndex(item => item.id === node.id);
-      this.curNodeIsLast = pos === this.nodes.length - 2;
-      if (this.curNodeIsLast) {
-        this.curNode.property.approveUserCountType = null;
-        this.curNode.property.approveUserSelectRange = null;
-        this.curNode.property.approveUserSelectRoles = [];
-        this.curNodeChange();
-      }
     },
     curNodeChange() {
       const pos = this.nodes.findIndex(node => node.id === this.curNode.id);

+ 59 - 5
src/modules/exam/components/ApplyContent.vue

@@ -177,6 +177,7 @@
         <p v-else>暂无</p>
       </div>
 
+      <!-- 入库申请-审核阶段 -->
       <!-- audit history -->
       <div
         v-if="flowHistoryList.length && curTaskApply.flowStatus !== 'START'"
@@ -260,6 +261,7 @@
           </el-timeline-item>
         </el-timeline>
       </div>
+      <!-- 入库申请-申请阶段 -->
       <div
         v-if="flowList.length && curTaskApply.flowStatus === 'START'"
         class="task-audit-history flow-timeline"
@@ -274,7 +276,36 @@
             <div class="flow-item">
               <div class="flow-item-content">
                 <h4 class="flow-item-title">{{ flow.taskName }}</h4>
-                <p class="flow-item-desc">{{ flow.approveUserNames }}</p>
+                <p v-if="flow.approveUserNames" class="flow-item-desc">
+                  {{ flow.approveUserNames }}
+                </p>
+                <div
+                  v-if="flow.isApproveSetFlowNextNode && approveUsers.length"
+                  class="flow-item-users"
+                >
+                  <span>审批人:</span>
+                  <el-tag
+                    v-for="user in approveUsers"
+                    :key="user.id"
+                    size="small"
+                    :disable-transitions="false"
+                  >
+                    {{ user.name }}
+                  </el-tag>
+                </div>
+              </div>
+              <div
+                v-if="flow.isApproveSetFlowNextNode"
+                class="flow-item-action"
+              >
+                <el-button
+                  class="user-select"
+                  icon="el-icon-plus"
+                  @click="toSelectNextFlowUser"
+                ></el-button>
+                <p v-if="!approveUsers.length" class="tips-info tips-error">
+                  请选择用户
+                </p>
               </div>
             </div>
           </el-timeline-item>
@@ -419,7 +450,7 @@
     ></simple-image-preview>
     <!-- select-user-dialog -->
     <select-user-dialog
-      v-if="IS_AUDIT"
+      v-if="IS_AUDIT || IS_NEED_SELECT_APPROVE_USER"
       ref="SelectUserDialog"
       :user-limit-count="userLimitCount"
       :filter-roles="userFilterRoles"
@@ -574,6 +605,7 @@ export default {
       rejectSetupList: [], // 可以驳回的节点
       exchangeUsers: [],
       selectUserType: "exchange", // exchange:转审,approve:下一节点审核
+      curSelectedUsers: [],
       // 选择下一节点审批人
       IS_NEED_SELECT_APPROVE_USER: false,
       nextFlowTaskResult: {}, //下一节点信息
@@ -724,14 +756,27 @@ export default {
       if (!this.curTaskApply.flowId) return;
       const data = await flowDetailByFlowId(this.curTaskApply.flowId);
       if (!data) return;
+
+      const modelType =
+        data.flowTaskResultList[0] && data.flowTaskResultList[0].modelType;
       this.flowInfo = {
         customFlowId: data.id,
         version: data.version
       };
-      this.flowList = data.flowTaskResultList || [];
+      const nextFlowNodeIndex = 1;
+      this.IS_NEED_SELECT_APPROVE_USER = modelType === "APPROVE_SET";
+      const flowList = data.flowTaskResultList || [];
+      this.flowList = flowList.map((flow, index) => {
+        flow.isApproveSetFlowNextNode =
+          this.IS_NEED_SELECT_APPROVE_USER && index === nextFlowNodeIndex;
+        return flow;
+      });
+
       if (this.flowList.length) {
         this.flowList[0].type = "success";
       }
+
+      this.nextFlowTaskResult = this.flowList[nextFlowNodeIndex];
     },
     async getCurFlowNodeInfo() {
       const data = await taskFlowNodeInfo(this.curTaskApply.flowTaskId);
@@ -741,9 +786,11 @@ export default {
       });
       this.nextFlowTaskResult = data.nextFlowTaskResult;
       // 判断发起人自选,是否需要选择下个审核人员
+      const { modelType, approveUserNames, taskKey } = this.nextFlowTaskResult;
       this.IS_NEED_SELECT_APPROVE_USER =
-        this.nextFlowTaskResult.modelType === "APPROVE_SET" &&
-        !this.nextFlowTaskResult.approveUserNames;
+        modelType === "APPROVE_SET" &&
+        taskKey.toLowerCase() !== "end" &&
+        !approveUserNames;
       this.flowHistoryList[
         this.flowHistoryList.length - 1
       ].isApproveSetFlowNextNode = this.IS_NEED_SELECT_APPROVE_USER;
@@ -950,6 +997,8 @@ export default {
       data.paperConfirmAttachmentIds = JSON.stringify(
         this.paperConfirmAttachments
       );
+      if (this.IS_NEED_SELECT_APPROVE_USER)
+        data.approveUserIds = this.approveUsers.map(item => item.id);
       return data;
     },
     checkDataValid() {
@@ -979,6 +1028,11 @@ export default {
         return;
       }
 
+      if (this.IS_NEED_SELECT_APPROVE_USER && !this.approveUsers.length) {
+        this.$message.error("请设置审核人员!");
+        return;
+      }
+
       return true;
     },
     async toSave() {

+ 26 - 21
src/modules/exam/components/createExamAndPrintTask/CreateExamAndPrintTask.vue

@@ -60,7 +60,7 @@
                   <el-button
                     class="user-select"
                     icon="el-icon-plus"
-                    @click="toSelectUser"
+                    @click="toSelectNextFlowUser"
                   ></el-button>
                   <p v-if="!approveUsers.length" class="tips-info tips-error">
                     请选择用户
@@ -83,12 +83,12 @@
 
     <!-- SelectUserDialog -->
     <select-user-dialog
-      v-if="IS_APPROVE_SET"
+      v-if="IS_NEED_SELECT_APPROVE_USER"
       ref="SelectUserDialog"
       :users="approveUsers"
       :user-limit-count="userLimitCount"
       :filter-roles="userFilterRoles"
-      @modified="userModified"
+      @modified="userSelected"
     ></select-user-dialog>
   </div>
 </template>
@@ -185,11 +185,14 @@ export default {
       examRule: {},
       flowList: [],
       flowInfo: {},
+      loading: false,
+      dataReady: false,
+      // 选择下一节点审批人
+      IS_NEED_SELECT_APPROVE_USER: false,
+      nextFlowTaskResult: {}, //下一节点信息
       approveUsers: [],
       userLimitCount: 1,
-      userFilterRoles: [],
-      loading: false,
-      dataReady: false
+      userFilterRoles: []
     };
   },
   computed: {
@@ -201,9 +204,6 @@ export default {
     ]),
     IS_MODEL3() {
       return this.infoExamTask.examModel === "MODEL3";
-    },
-    IS_APPROVE_SET() {
-      return this.flowInfo.modelType === "APPROVE_SET";
     }
   },
   mounted() {
@@ -224,24 +224,21 @@ export default {
         data.flowTaskResultList[0] && data.flowTaskResultList[0].modelType;
       this.flowInfo = {
         customFlowId: data.id,
-        version: data.version,
-        modelType
+        version: data.version
       };
+      const nextFlowNodeIndex = 1;
+      this.IS_NEED_SELECT_APPROVE_USER = modelType === "APPROVE_SET";
       const flowList = data.flowTaskResultList || [];
       this.flowList = flowList.map((flow, index) => {
         flow.isApproveSetFlowNextNode =
-          modelType === "APPROVE_SET" && index === 1;
+          this.IS_NEED_SELECT_APPROVE_USER && index === nextFlowNodeIndex;
         return flow;
       });
       if (this.flowList.length) {
         this.flowList[0].type = "success";
       }
-      const nextFlowNode = this.flowList[1];
-      this.userLimitCount = nextFlowNode.approveUserCountType === "ONE" ? 1 : 0;
-      this.userFilterRoles =
-        nextFlowNode.approveUserSelectRange === "ROLE"
-          ? nextFlowNode.approveUserSelectRoles.map(item => item.id)
-          : [];
+
+      this.nextFlowTaskResult = this.flowList[nextFlowNodeIndex];
     },
     initData() {
       const infoExamTaskDetail = Object.assign({}, initExamTaskDetail, {
@@ -283,10 +280,18 @@ export default {
     open() {
       this.modalIsShow = true;
     },
-    toSelectUser() {
+    toSelectNextFlowUser() {
+      if (!this.IS_NEED_SELECT_APPROVE_USER) return;
+
+      this.userLimitCount =
+        this.nextFlowTaskResult.approveUserCountType === "ONE" ? 1 : 0;
+      this.userFilterRoles =
+        this.nextFlowTaskResult.approveUserSelectRange === "ROLE"
+          ? this.nextFlowTaskResult.approveUserSelectRoles.map(item => item.id)
+          : [];
       this.$refs.SelectUserDialog.open();
     },
-    userModified(users) {
+    userSelected(users) {
       this.approveUsers = users;
     },
     async submit() {
@@ -317,7 +322,7 @@ export default {
         examTaskContent: JSON.stringify(examTaskContent),
         ...this.flowInfo
       };
-      if (this.IS_APPROVE_SET)
+      if (this.IS_NEED_SELECT_APPROVE_USER)
         datas.approveUserIds = this.approveUsers.map(item => item.id);
 
       const data = await teacherSubmitTaskApply(datas).catch(() => {});