兰宝车间质量管理系统-前端
dap
2024-04-04 b117a6f198dec7b739aae9873ff9cfa179ec4117
src/components/BpmnView/index.vue
@@ -38,7 +38,6 @@
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 EventBus from 'diagram-js/lib/core/EventBus';
import Overlays from 'diagram-js/lib/features/overlays/Overlays';
import processApi from '@/api/workflow/processInstance/index';
@@ -146,10 +145,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 +209,6 @@
          if (completeTask) {
            canvas.addMarker(nn.id, 'highlight');
            canvas.addMarker(n.id, 'highlight');
            // return;
          }
        });
      }
@@ -293,7 +289,7 @@
  }
}
.bpmn-el-container {
  height: 500px;
  height: calc(100vh - 350px);
}
.flow-containers {
  width: 100%;
@@ -342,16 +338,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;
  }
}