tengmingxue hai 1 ano
pai
achega
6f1a815a68

+ 53 - 13
src/views/dataAdmin/dataAdmin/configProcess/AddProcess.vue

@@ -208,7 +208,7 @@ export default defineComponent({
         dicBusiness.value = selectItem;
       }
     };
-    setSeleteItem()
+    setSeleteItem();
 
     /**
      * 根据查询的接口数据设置表单数据
@@ -225,29 +225,61 @@ export default defineComponent({
         formState.steps = [
           { xh: 1, name: flowInfo['FLOWNAME'], model: '1', dept: [], user: [], userList: [] },
         ];
+        // flowNode.map((item, index) => {
+        //   const user = flowNodePerson.filter((fp) => item['ID'] === fp['FLOWNODEID']);
+        //   let model = '2'; //并行
+        //   //判断是串行还是并行,如果存在生一个审核人或者下一个审核人则为逐级,否则就是并行
+        //   user.map((item) => {
+        //     if (item['NEXTUSERID'] !== '' || item['PREUSERID'] != '') model = '1';
+        //   });
 
-        flowNode.map((item, index) => {
-          const user = flowNodePerson.filter((fp) => item['ID'] === fp['FLOWNODEID']);
+        //   formState.steps.push({
+        //     xh: index + 2,
+        //     name: item['NODENAME'],
+        //     model: user[0]['NODETYPE'] || model,
+        //     dept: item['DEPTS'].split(','),
+        //     user: user
+        //       ? user.map((u) => {
+        //           return u['USERID'];
+        //         })
+        //       : [],
+        //     userList: [],
+        //   });
+        // });
+
+        /***2024-02-04 编辑 修改步骤错位问题 ---开始**/
+        function recursionByTreeData(id) {
+          return flowNode.find((fd) => fd.PRENODEID === id);
+        }
+        let node = null,
+          index = 2,
+          id = '';
+        while ((node = recursionByTreeData(id))) {
+          const user = flowNodePerson.filter((fp) => node['ID'] === fp['FLOWNODEID']);
+          let userList = user.map(item=>{
+            return {...item,userId:item.USERID}
+          })
           let model = '2'; //并行
           //判断是串行还是并行,如果存在生一个审核人或者下一个审核人则为逐级,否则就是并行
           user.map((item) => {
             if (item['NEXTUSERID'] !== '' || item['PREUSERID'] != '') model = '1';
           });
-
           formState.steps.push({
-            xh: index + 2,
-            name: item['NODENAME'],
+            xh: index,
+            name: node['NODENAME'],
             model: user[0]['NODETYPE'] || model,
-            dept: item['DEPTS'].split(','),
+            dept: node['DEPTS'].split(','),
             user: user
               ? user.map((u) => {
                   return u['USERID'];
                 })
               : [],
-            userList: [],
+            userList: userList,//[],
           });
-        });
-
+          id = node['ID']
+          index++;
+        }
+        /***2024-02-04 编辑 ---结束**/
         currStep.value = formState.steps[0];
       }
     };
@@ -353,8 +385,11 @@ export default defineComponent({
      * 新增流程
      */
     const addProcess = async (fdata) => {
+      //console.log('原始数据', fdata);
+      if (optType.value === 3) return closeModal();
       const processInfo = formDataHandle(fdata) as any;
-      //console.log('提交数据', processInfo);
+      console.log('提交数据', processInfo);
+
       const res = (await addFlowInfoAll(processInfo)) as any;
       if (res && res.resp_code === 0) {
         closeModal();
@@ -422,6 +457,7 @@ export default defineComponent({
         });
       });
 
+      console.log('步骤信息steps',steps)
       //生成审核数据
       for (let i = 0; i < steps.length; i++) {
         const step = steps[i];
@@ -445,7 +481,9 @@ export default defineComponent({
               preuserid = '';
             } else {
               //步骤结点的非第一个审核人
-              preuserid = step.userList[j - 1].userId;
+              // preuserid = step.userList[j - 1].userId;
+              //2024-02-04 修改
+              preuserid = step.userList[j - 1].id;
             }
             //步骤结点的最后一个审核人
             if (j === step.userList.length - 1) {
@@ -460,7 +498,9 @@ export default defineComponent({
             }
             //不是步骤的最后一个审核人
             else {
-              nextuserid = steps[i].userList[j + 1].userId; //下一个审核步骤结点的第一个审核人
+              //nextuserid = steps[i].userList[j + 1].userId; //下一个审核步骤结点的第一个审核人
+              //2024-02-04 修改
+              nextuserid = steps[i].userList[j + 1].id;
             }
           }
           //model 1:逐级   2:并行

+ 1 - 1
src/views/dataAdmin/dataAdmin/configProcess/addStepForm.vue

@@ -2,7 +2,7 @@
  * @Author: tengmingxue 1473375109@qq.com
  * @Date: 2023-08-29 16:44:32
  * @LastEditors: tengmingxue 1473375109@qq.com
- * @LastEditTime: 2023-09-21 17:21:11
+ * @LastEditTime: 2024-02-04 14:14:12
  * @FilePath: \xld-gis-admin\src\views\dataAdmin\dataAdmin\configProcess\addStepForm.vue
  * @Description: 流程步骤配置表单
 -->

+ 13 - 3
src/views/dataAdmin/dataAdmin/flowStep/handleLog.vue

@@ -2,7 +2,7 @@
  * @Author: tengmingxue 1473375109@qq.com
  * @Date: 2023-08-31 15:17:20
  * @LastEditors: tengmingxue 1473375109@qq.com
- * @LastEditTime: 2024-01-26 11:05:02
+ * @LastEditTime: 2024-02-05 14:51:01
  * @FilePath: \xld-gis-admin\src\views\dataAdmin\dataAdmin\flowStep\handleLog.vue
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 -->
@@ -10,8 +10,8 @@
   <div class="handle-log-table">
     <BasicTable @register="registerTable" :clickToRowSelect="false">
       <template #ISPASS="{ record }">
-        <Tag :style="`color:${record.ISPASS === 0 ? 'red' : '#05B069'};`">
-          {{ record.ISPASS == 0 ? '不通过' : '通过' }}
+        <Tag :style="`color:${setStatusName(record) === '通过' ? '#05B069' :(setStatusName(record) === '进行中' ? 'rgb(240, 135, 24)' : 'red') };`">
+          {{ setStatusName(record) }}
         </Tag>
       </template>
 
@@ -76,6 +76,15 @@ export default defineComponent({
     onMounted(async () => {
       checkList.value = flowStatus.value === '1' ? [] : checkInfo as any;
     });
+    
+    const setStatusName = (record)=> {
+      let statusName = '通过'
+      if(!record.ISPASS) statusName='进行中'
+      else if(record.ISPASS === '1') statusName = '通过'
+      else if(record.ISPASS === '0') statusName = '不通过'
+      return statusName;
+    }
+
     onBeforeMount(async () => { });
 
 
@@ -87,6 +96,7 @@ export default defineComponent({
       createMessage,
       registerTable,
       RoleEnum,
+      setStatusName,
     };
   },
 });

+ 91 - 100
src/views/dataAdmin/dataAdmin/flowStep/index.vue

@@ -2,7 +2,7 @@
  * @Author: tengmingxue 1473375109@qq.com
  * @Date: 2023-08-30 17:25:03
  * @LastEditors: tengmingxue 1473375109@qq.com
- * @LastEditTime: 2024-01-26 10:59:29
+ * @LastEditTime: 2024-02-05 14:45:26
  * @FilePath: \xld-gis-admin\src\views\dataAdmin\dataAdmin\flowStep\index.vue
  * @Description: 流程图表
 -->
@@ -159,6 +159,9 @@ export default defineComponent({
       }
     };
 
+    /**
+     * 设置流程结点
+     */
     const setFlowNodes = async (flow) => {
       if (!flow?.flowInfo || !flow?.flowNode || !flow?.flowNodePerson) {
         createMessage.error(`3、获取流程【${data.flowName}】配置信息异常!请联系管理员检查!`);
@@ -177,41 +180,75 @@ export default defineComponent({
             { handler: user['EMPLOYEE']['NAME'], id: user['EMPLOYEE']['EMPLOYEE_ID'], status: '1' },
           ],
           status: '1', //status 1:已完成,2:进行中,3:驳回,0:未开始
+          model: '1',
         },
       ];
-      const step = getFlowNodes(flow.flowNode, flow.flowNodePerson);
-      // step.map(i => {
-      //   i.status = "1";
-      //   i.handlers.map(j => j.status = "1");
-      // })
+      let step = getFlowNodes(flow.flowNode, flow.flowNodePerson);
 
       if (step) data.steps.push(...step);
       const length = step.length;
       //最后一步默认完成
-      data.steps.push({ xh: length + 2, stepName: '完成', handlers: [], status: '0' });
+      data.steps.push({ xh: length + 2, stepName: '完成', handlers: [], status: '0', model: '1' });
       getSelectFlowRecord();
     };
 
+    /**
+     * 更具审核人设置流程结点状态
+     */
     const getFlowNodes = (flowNode, flowNodePerson) => {
       let index = 1;
       let steps = [];
       function getNextNode(nodes, id) {
         const node = flowNode.find((item) => item['PRENODEID'] === id);
         if (node) {
-          const eximPersons = flowNodePerson.filter((item) => item['FLOWNODEID'] === node['ID']);
+          let eximPersons = flowNodePerson.filter((item) => item['FLOWNODEID'] === node['ID']);
+          //更具审核人判断当前结点是逐级(1)还是并行(2)
+          let model = '1';
+          //只有一个结点默认为逐级(1)
+          if (eximPersons.length <= 1) {
+            model = '1';
+            eximPersons[0]['xh'] = 0;
+          } else {
+            //更具审核人的前后顺序进行排序和判断结点是逐级(1)还是并行(2
+            const list = eximPersons.filter((xp) => xp.NEXTUSERID !== '');
+            //并行
+            if (list.length === 0) {
+              model = '2';
+              eximPersons.map((xp, i) => (eximPersons[i]['xh'] = i));
+            } else {
+              //逐级
+              model = '1';
+              let sIndex = 0;
+              let oid = '';
+              let obj = eximPersons.find((xp) => xp.PREUSERID === oid);
+              let olist = [];
+              while (obj) {
+                oid = obj['ID'];
+                olist.push({ ...obj, xh: sIndex });
+                sIndex++;
+                obj = eximPersons.find((xp) => xp.PREUSERID === oid);
+              }
+
+              eximPersons = olist;
+            }
+          }
           let handlers = [];
           eximPersons.map((item) => {
             handlers.push({
               handler: data.sysUserInfo[item['USERID']],
-              id: item['USERID'],
+              id: item['USERID'], //用户id
               status: '0',
+              uid: item['ID'], //记录id
+              xh: item.xh,
             });
           });
+
           steps.push({
             xh: (index = index + 1),
             stepName: node['NODENAME'],
             handlers: handlers,
             status: '0',
+            model: model, //逐级1还是并行2
           });
           getNextNode(nodes, node['ID']); //递归
         } else return false;
@@ -246,7 +283,7 @@ export default defineComponent({
           var num = 0;
           var allType = true;
           if (res.resp_code == 0 && res?.datas?.pageData?.length) {
-            console.log('审核记录', res?.datas?.pageData);
+            console.log('记录信息',res.datas.pageData)
             res.datas.pageData.map((i, index) => {
               if (!i.NODEDISCRIPTION) {
                 i.NODEDISCRIPTION =
@@ -260,109 +297,63 @@ export default defineComponent({
                 i.CHECKINFO = '';
                 data.steps[index].handlers.map((j) => (j.handler = i.CHECKUSERNAEM));
               }
-              if (i.ISPASS != null && i.ISPASS != undefined) {
-                // if (!i.NODEDISCRIPTION) {
-                //   i.NODEDISCRIPTION =
-                //     i.CHECKINFO == '起件'
-                //       ? i.BUSSNAME
-                //       : i.CHECKINFO == '归档'
-                //       ? '审核结束'
-                //       : i.NODEDISCRIPTION;
-                // }
-                // if (!index) {
-                //   i.CHECKINFO = '';
-                //   data.steps[index].handlers.map((j) => (j.handler = i.CHECKUSERNAEM));
-                // }
-                var type = i.ISPASS == '1' ? '1' : i.ISPASS == '0' ? '1' : '0';
-                // if (i.CHECKINFO != '归档') {
-                //   data.steps[index].status = type;
-                //   data.steps[index].handlers.map((j) => {
-                //     (j.status = type), (i.handler = j.handler);
-                //   });
-                // } else if (i.CHECKINFO == '归档' && i.ISPASS == '1') {
-                //   data.steps[index].status = type;
-                //   data.steps[index].handlers.map((j) => {
-                //     (j.status = type), (i.handler = j.handler);
-                //   });
-                // }
-                // if (i.CHECKINFO != '归档') objList.unshift(i);
-                data.steps[index].status = type;
-                data.steps[index].handlers.map((j) => {
-                  (j.status = type), (i.handler = j.handler);
-                });
-                if (i.ISPASS == '1') {
-                  data.steps[index].status = type;
-                  data.steps[index].handlers.map((j) => {
-                    (j.status = type), (i.handler = j.handler);
-                  });
-                }
 
-                if (i.ISPASS == '0') {
-                  allType = false;
+              var type = i.ISPASS === '1' ? '1' : '0';
+              data.steps.map((sp, s) => {
+                //跳过第一步默认步骤
+                if (s !== 0 && sp.stepName === i.NODENAME) {
+                  data.steps[s].handlers.map((hd) => {
+                    if (hd.uid && hd.uid === i.FLOWNODEPERSONID) {
+                      (hd.status = type), (i.handler = hd.handler); //修改状态,并且获取审核记录审核人名称
+                    }
+                  });
                 }
-                num++;
-              }
-
+              });
               objList.unshift(i);
             });
-
-            if (num < len && allType) {
-              data.steps[num].status = '2';
-              data.steps[num].handlers.map((j) => {
-                j.status = '2';
-              });
-            }
-            pageData.value = objList;
-
-            //重新更新审核状态
-            data.steps.map((item, index) => {
-              //(1)根据步骤名称获取审核情况
-              const obj = res.datas.pageData.filter((pd) =>
-                pd.NODENAME ? pd.NODENAME === item.stepName : pd.FLOWNAME === item.stepName
-              );
-              if (obj.length > 0) {
-                //存在生审核日志
-                //第一个审核步骤,审核状态设置为已审核
-                if (index === 0) {
-                  data.steps[index].status = '1';
-                  data.steps[index].handlers.map((h, i) => {
-                    data.steps[index].handlers[i].status = '1';
-                  });
-                } else {
-                  //非第一个审核步骤,则根据审核人情况就判断状态
-                  //如果当前结点的审核记录数小于结点配置审核人数,则表示当前结点处于审核中状态
-                  if (obj.length < data.steps[index].handlers.length) {
-                    data.steps[index].status = '2';
-                    //设置结点状态
-                    data.steps[index].handlers.map((hd, i) => {
-                      if (obj.find((o) => o.CHECKUSERID === hd.id))
-                        data.steps[index].handlers[i].status = '1';
-                      else data.steps[index].handlers[i].status = '2';
-                    });
-                    return false;
-                  } else {
-                    //否则表示当前步骤结点已经全部审核完成
-                    data.steps[index].status = '1';
-                    data.steps[index].handlers.map((hd, i) => {
-                      data.steps[index].handlers[i].status = '1';
-                    });
+            let preStatus = '1'; //前一个状态默认为1=已完成
+            let currNodeFinish = false;
+            //更具步骤更新状态
+            data.steps.map((sp, s) => {
+              //跳过第一步默认步骤
+              if (s !== 0) {
+                data.steps[s].handlers.map((sh, h) => {
+                  //status 1:已完成,2:进行中,3:驳回,0:未开始
+                  if (sh.status === '0') {
+                    //如果当前状态未开始0,并且上一个状态是1=已完成,此时当前状态要改为2=进行中
+                    if (preStatus === '1') {
+                      data.steps[s].handlers[h].status = '2';
+                      //逐级的话要改变当前状态标记
+                      if (sp.model === '1') preStatus = '0';
+                      else {
+                        //并行的话到最后一个改变当前状态标记
+                        if (data.steps[s].handlers.length - 1 <= h) preStatus = '0';
+                      }
+                    }
                   }
-                }
-              } else {
-                //没有任何审核,此时状态改为未开始
-                data.steps[index].status = '0';
-                data.steps[index].handlers.map((h, i) => {
-                  data.steps[index].handlers[i].status = '0';
                 });
+                //当前结点是否审核完成
+                let exList = data.steps[s].handlers.filter((shd) => shd.status === '1');
+                currNodeFinish = exList.length === data.steps[s].handlers.length;
+                if (currNodeFinish) data.steps[s].status = '1';
+              }
+
+              //判断是否所有的已完成
+              if (data.steps.length - 1 === s && data.steps[s - 1].status !== '1'){
+                data.steps[s].status = '0';
               }
             });
-            console.log('步骤', data.steps);
+            pageData.value = objList;
+
             //排序
             data.steps.map((step, i) => {
               data.steps[i].handlers.sort((a, b) => {
-                return parseInt(a.status) - parseInt(b.status);
+                return parseInt(a.xh) - parseInt(b.xh);
               });
             });
+
+            console.log('步骤信息',data.steps)
+            
           }
         });
       }