From e5fdf8249f325594579224d48477d0ab849e7d88 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期一, 17 三月 2025 11:50:47 +0800
Subject: [PATCH] 流程图查看,容缺、跳过显示

---
 src/components/Process/style/flow-viewer.scss |   65 ++++++++++++++++-----
 src/components/Process/viewer/index.vue       |   80 +++++++++++++++++---------
 2 files changed, 101 insertions(+), 44 deletions(-)

diff --git a/src/components/Process/style/flow-viewer.scss b/src/components/Process/style/flow-viewer.scss
index 76fb85c..15c6b67 100644
--- a/src/components/Process/style/flow-viewer.scss
+++ b/src/components/Process/style/flow-viewer.scss
@@ -99,7 +99,7 @@
     right: 10px;
   }
 
-  // 瀹屾垚娴佺▼绾�
+  /* ---------瀹屾垚棰滆壊---------- */
   .highlight.djs-shape .djs-visual > :nth-child(1) {
     fill: #56bb56 !important;
     stroke: #56bb56 !important;
@@ -120,7 +120,7 @@
     stroke: #56bb56 !important;
   }
 
-  // 浠e姙娴佺▼绾�
+  /* ----------浠e姙棰滆壊---------- */
   .highlight-todo.djs-shape .djs-visual > :nth-child(1) {
     fill: #559db0 !important;
     stroke: #559db0 !important;
@@ -141,29 +141,51 @@
     stroke: #559db0 !important;
   }
 
-  // 宸茶秴鏃舵祦绋嬬嚎
+  /* --------瀹圭己棰滆壊-------- */
   //鏂瑰潡鍐呴儴棰滆壊
-  .highlight-overtime.djs-shape .djs-visual > :nth-child(1) {
-    fill: #ff5353 !important;
-    stroke: #ff5353 !important;
+  .highlight-wait.djs-shape .djs-visual > :nth-child(1) {
+    fill: #F56C6C !important;
+    stroke: #F56C6C !important;
     fill-opacity: 0.2 !important;
   }
   //鏂囧瓧棰滆壊
-  .highlight-overtime.djs-shape .djs-visual > :nth-child(2) {
-    fill: #ff5353 !important;
+  .highlight-wait.djs-shape .djs-visual > :nth-child(2) {
+    fill: #F56C6C !important;
   }
   //浜虹墿ui棰滆壊
-  .highlight-overtime.djs-shape .djs-visual > path {
-    fill: #ff5353 !important;
+  .highlight-wait.djs-shape .djs-visual > path {
+    fill: #F56C6C !important;
     fill-opacity: 0.2 !important;
-    stroke: #ff5353 !important;
+    stroke: #F56C6C !important;
   }
   //鍓嶉潰閭f潯绾跨殑棰滆壊
-  .highlight-overtime.djs-connection > .djs-visual > path {
-    stroke: #ff5353 !important;
+  .highlight-wait.djs-connection > .djs-visual > path {
+    stroke: #F56C6C !important;
 }
 
-  // 鍗冲皢瓒呮椂娴佺▼绾�
+  /* --------璺宠繃棰滆壊--------- */
+  .highlight-jump.djs-shape .djs-visual > :nth-child(1) {
+    fill: #909399 !important;
+    stroke: #909399 !important;
+    fill-opacity: 0.2 !important;
+  }
+  //鏂囧瓧棰滆壊
+  .highlight-jump.djs-shape .djs-visual > :nth-child(2) {
+    fill: #909399 !important;
+  }
+  //浜虹墿ui棰滆壊
+  .highlight-jump.djs-shape .djs-visual > path {
+    fill: #909399 !important;
+    fill-opacity: 0.2 !important;
+    stroke: #909399 !important;
+  }
+  //鍓嶉潰閭f潯绾跨殑棰滆壊
+  .highlight-jump.djs-connection > .djs-visual > path {
+    stroke: #909399 !important;
+  }
+
+
+  /* --------瓒呮椂棰滆壊 */
   .highlight-willOvertime.djs-shape .djs-visual > :nth-child(1) {
     fill: #eab24a !important;
     stroke: #eab24a !important;
@@ -234,12 +256,21 @@
       margin-right: 8px;
     }
 
-    .todo {
+    .jump {
       padding: 4px;
-      background: #ECEDEE;
+      background: #909399;
       border: 1px solid rgba(204, 204, 204, 0.1);
       border-radius: 3px;
-      color: #666666;
+      color: #4f4f4f;
+      margin-right: 5px;
+    }
+
+    .wait {
+      padding: 4px;
+      background: #F56C6C;
+      border: 1px solid rgba(204, 204, 204, 0.1);
+      border-radius: 3px;
+      color: #eae9e9;
       margin-right: 5px;
     }
 
diff --git a/src/components/Process/viewer/index.vue b/src/components/Process/viewer/index.vue
index ed21bd3..5558f6b 100644
--- a/src/components/Process/viewer/index.vue
+++ b/src/components/Process/viewer/index.vue
@@ -6,9 +6,9 @@
           <span class="intro">鐘舵�侊細</span>
           <div class="finish">宸插姙鐞�</div>
           <div class="processing">澶勭悊涓�</div>
-          <div class="todo">鏈繘琛�</div>
           <div class="overtime">宸茶秴鏃�</div>
-<!--          <div class="overtime">宸茶秴鏃�</div>-->
+          <div class="jump">璺� 杩�</div>
+          <div class="wait">瀹� 缂�</div>
         </div>
         <!-- 娴佺▼鍥炬樉绀� -->
         <div v-loading="loading" class="canvas" ref="flowCanvas"></div>
@@ -110,25 +110,34 @@
         const endTask = nodeData[nodeData.length - 1]
         if (n.$type === 'bpmn:UserTask') {
           if (completeTask) {
-            canvas.addMarker(n.id, completeTask.completed ? 'highlight' : 'highlight-todo')
-            if(completeTask.overtime && completeTask.overtime==='red'){
-              canvas.addMarker(n.id,  'highlight-willOvertime')
-            }
-          // else if(completeTask.overtime && completeTask.overtime==='yellow'){
-          //     canvas.addMarker(n.id,  'highlight-willOvertime')
-          //   }
-            n.outgoing?.forEach(nn => {
-              const targetTask = nodeData.find(m => m.key === nn.targetRef.id)
-              if (targetTask) {
-                if (todoTask && completeTask.key === todoTask.key && !todoTask.completed) {
-                  canvas.addMarker(nn.id, todoTask.completed ? 'highlight' : 'highlight-todo')
-                  canvas.addMarker(nn.targetRef.id, todoTask.completed ? 'highlight' : 'highlight-todo')
-                } else {
-                  canvas.addMarker(nn.id, targetTask.completed ? 'highlight' : 'highlight-todo')
-                  canvas.addMarker(nn.targetRef.id, targetTask.completed ? 'highlight' : 'highlight-todo')
-                }
-
+            if (completeTask.hasJump) {
+              canvas.addMarker(n.id,  'highlight-jump')
+            } else if (completeTask.hasWait) {
+              canvas.addMarker(n.id,  'highlight-wait')
+            } else {
+              canvas.addMarker(n.id, completeTask.completed ? 'highlight' : 'highlight-todo')
+              if(completeTask.overtime && completeTask.overtime==='red' || completeTask.overtime==='yellow'){
+                canvas.addMarker(n.id,  'highlight-willOvertime')
               }
+            }
+            n.outgoing?.forEach(nn => {
+              if (completeTask.hasJump) {
+                canvas.addMarker(nn.id,  'highlight-jump')
+              } else if (completeTask.hasWait) {
+                canvas.addMarker(nn.id,  'highlight-wait')
+              } else {
+                const targetTask = nodeData.find(m => m.key === nn.targetRef.id)
+                if (targetTask) {
+                  if (todoTask && completeTask.key === todoTask.key && !todoTask.completed) {
+                    canvas.addMarker(nn.id, todoTask.completed ? 'highlight' : 'highlight-todo')
+                    canvas.addMarker(nn.targetRef.id, todoTask.completed ? 'highlight' : 'highlight-todo')
+                  } else {
+                    canvas.addMarker(nn.id, targetTask.completed ? 'highlight' : 'highlight-todo')
+                    canvas.addMarker(nn.targetRef.id, targetTask.completed ? 'highlight' : 'highlight-todo')
+                  }
+                }
+              }
+
             })
           }
         }
@@ -139,9 +148,14 @@
             n.outgoing?.forEach(nn => {
               const targetTask = nodeData.find(m => m.key === nn.targetRef.id)
               if (targetTask) {
-
-                canvas.addMarker(nn.id, targetTask.completed ? 'highlight' : 'highlight-todo')
-                canvas.addMarker(nn.targetRef.id, targetTask.completed ? 'highlight' : 'highlight-todo')
+                if (targetTask.hasJump) {
+                  canvas.addMarker(nn.id,  'highlight-jump')
+                } else if (targetTask.hasWait) {
+                  canvas.addMarker(nn.id,  'highlight-wait')
+                } else {
+                  canvas.addMarker(nn.id, targetTask.completed ? 'highlight' : 'highlight-todo')
+                  canvas.addMarker(nn.targetRef.id, targetTask.completed ? 'highlight' : 'highlight-todo')
+                }
               }
             })
           }
@@ -153,8 +167,14 @@
             n.outgoing?.forEach(nn => {
               const targetTask = nodeData.find(m => m.key === nn.targetRef.id)
               if (targetTask) {
-                canvas.addMarker(nn.id, targetTask.completed ? 'highlight' : 'highlight-todo')
-                canvas.addMarker(nn.targetRef.id, targetTask.completed ? 'highlight' : 'highlight-todo')
+                if (targetTask.hasJump) {
+                  canvas.addMarker(nn.id,  'highlight-jump')
+                } else if (targetTask.hasWait) {
+                  canvas.addMarker(nn.id,  'highlight-wait')
+                }  else {
+                  canvas.addMarker(nn.id, targetTask.completed ? 'highlight' : 'highlight-todo')
+                  canvas.addMarker(nn.targetRef.id, targetTask.completed ? 'highlight' : 'highlight-todo')
+                }
               }
             })
           }
@@ -162,8 +182,14 @@
           n.outgoing.forEach(nn => {
             const completeTask = nodeData.find(m => m.key === nn.targetRef.id)
             if (completeTask) {
-              canvas.addMarker(nn.id, 'highlight')
-              canvas.addMarker(n.id, 'highlight')
+              if (completeTask.hasJump) {
+                canvas.addMarker(nn.id,  'highlight-jump')
+              } else if (completeTask.hasWait) {
+                canvas.addMarker(nn.id,  'highlight-wait')
+              } else {
+                canvas.addMarker(nn.id, 'highlight')
+                canvas.addMarker(n.id, 'highlight')
+              }
               return;
             }
           })

--
Gitblit v1.8.0