From 6b988bd582bfcd17fee48c476a5a6e5cc172b0d5 Mon Sep 17 00:00:00 2001
From: baoshiwei <baoshiwei@shlanbao.cn>
Date: 星期三, 12 三月 2025 10:08:33 +0800
Subject: [PATCH] dev-2

---
 src/components/BpmnView/index.vue |   74 ++++++++++++++++++++++++++++--------
 1 files changed, 57 insertions(+), 17 deletions(-)

diff --git a/src/components/BpmnView/index.vue b/src/components/BpmnView/index.vue
index 75a89cd..c5e0c7b 100644
--- a/src/components/BpmnView/index.vue
+++ b/src/components/BpmnView/index.vue
@@ -37,8 +37,7 @@
 import MoveCanvasModule from 'diagram-js/lib/navigation/movecanvas';
 import ZoomScrollModule from 'diagram-js/lib/navigation/zoomscroll';
 import { ModuleDeclaration } from 'didi';
-import { Canvas, ModdleElement } from 'bpmn';
-import defaultXML from '@/components/BpmnDesign/assets/defaultXML';
+import type { Canvas, ModdleElement } from 'bpmn';
 import EventBus from 'diagram-js/lib/core/EventBus';
 import Overlays from 'diagram-js/lib/features/overlays/Overlays';
 import processApi from '@/api/workflow/processInstance/index';
@@ -52,7 +51,7 @@
 const bpmnVisible = ref(true);
 const historyList = ref([]);
 
-const init = (instanceId) => {
+const init = (businessKey) => {
   loading.value = true;
   bpmnVisible.value = true;
   nextTick(async () => {
@@ -68,10 +67,32 @@
         MoveCanvasModule
       ] as ModuleDeclaration[]
     });
-    const resp = await processApi.getHistoryList(instanceId);
+    const resp = await processApi.getHistoryList(businessKey);
     xml.value = resp.data.xml;
     taskList.value = resp.data.taskList;
     historyList.value = resp.data.historyList;
+    await createDiagram(xml.value);
+    loading.value = false;
+  });
+};
+
+const initXml = (xmlStr: string) => {
+  loading.value = true;
+  bpmnVisible.value = true;
+  nextTick(async () => {
+    if (modeler.value) modeler.value.destroy();
+    modeler.value = new BpmnViewer({
+      container: canvas.value,
+      additionalModules: [
+        {
+          //绂佹婊氳疆婊氬姩
+          zoomScroll: ['value', '']
+        },
+        ZoomScrollModule,
+        MoveCanvasModule
+      ] as ModuleDeclaration[]
+    });
+    xml.value = xmlStr;
     await createDiagram(xml.value);
     loading.value = false;
   });
@@ -112,6 +133,7 @@
                     <p>寮�濮嬫椂闂达細${data.startTime || ''}</p>
                     <p>缁撴潫鏃堕棿锛�${data.endTime || ''}</p>
                     <p>瀹℃壒鑰楁椂锛�${data.runDuration || ''}</p>
+                    <p>娴佺▼鐗堟湰锛歷${data.version || ''}</p>
                    </div>`
   });
 };
@@ -146,10 +168,8 @@
 //閫掑綊涓婅壊
 const bpmnNodeList = (flowElements, canvas) => {
   flowElements.forEach((n) => {
-    console.log(n);
     if (n.$type === 'bpmn:UserTask') {
       const completeTask = taskList.value.find((m) => m.key === n.id);
-      console.log(completeTask);
       if (completeTask) {
         canvas.addMarker(n.id, completeTask.completed ? 'highlight' : 'highlight-todo');
         n.outgoing?.forEach((nn) => {
@@ -212,7 +232,6 @@
           if (completeTask) {
             canvas.addMarker(nn.id, 'highlight');
             canvas.addMarker(n.id, 'highlight');
-            // return;
           }
         });
       }
@@ -242,7 +261,8 @@
   }
 };
 defineExpose({
-  init
+  init,
+  initXml
 });
 </script>
 
@@ -293,7 +313,7 @@
   }
 }
 .bpmn-el-container {
-  height: 500px;
+  height: calc(100vh - 350px);
 }
 .flow-containers {
   width: 100%;
@@ -342,16 +362,35 @@
   :deep(.highlight.djs-connection > .djs-visual > path) {
     stroke: green !important;
   }
-  :deep(.highlight-todo.djs-connection > .djs-visual > path) {
-    stroke: orange !important;
-    stroke-dasharray: 4px !important;
-    fill-opacity: 0.2 !important;
-    marker-end: url(#sequenceflow-end-_E7DFDF-_E7DFDF-803g1kf6zwzmcig1y2ulm5egr);
+
+  // 杈规婊氬姩鍔ㄧ敾
+  @keyframes path-animation {
+    from {
+      stroke-dashoffset: 100%;
+    }
+
+    to {
+      stroke-dashoffset: 0%;
+    }
   }
-  :deep(.highlight-todo.djs-shape .djs-visual > :nth-child(1)) {
-    fill: orange !important;
-    stroke: orange !important;
+
+  :deep(.highlight-todo.djs-connection > .djs-visual > path) {
+    animation: path-animation 60s;
+    animation-timing-function: linear;
+    animation-iteration-count: infinite;
     stroke-dasharray: 4px !important;
+    stroke: orange !important;
+    fill-opacity: 0.2 !important;
+    marker-end: url('#sequenceflow-end-_E7DFDF-_E7DFDF-803g1kf6zwzmcig1y2ulm5egr');
+  }
+
+  :deep(.highlight-todo.djs-shape .djs-visual > :nth-child(1)) {
+    animation: path-animation 60s;
+    animation-timing-function: linear;
+    animation-iteration-count: infinite;
+    stroke-dasharray: 4px !important;
+    stroke: orange !important;
+    fill: orange !important;
     fill-opacity: 0.2 !important;
   }
 }
@@ -367,5 +406,6 @@
     margin: 0;
     padding: 0;
   }
+  cursor: pointer;
 }
 </style>

--
Gitblit v1.9.3