Commit 72c465be86639d3d91b9efdbcd63867c7d0aa824

Authored by YunaiV
1 parent 5332e543

优化 bpm 高亮流程图的前端

yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/task/vo/activity/BpmActivityRespVO.java
... ... @@ -20,6 +20,9 @@ public class BpmActivityRespVO {
20 20 @ApiModelProperty(value = "流程活动的结束时间", required = true)
21 21 private Date endTime;
22 22  
  23 + @ApiModelProperty(value = "关联的流程任务的编号", example = "2048", notes = "关联的流程任务,只有 UserTask 等类型才有")
  24 + private String taskId;
  25 +
23 26 /**
24 27 * 关联的流程任务,只有 UserTask 类型才有
25 28 */
... ...
yudao-admin-ui/src/components/bpmnProcessDesigner/package/designer/ProcessViewer.vue
... ... @@ -37,6 +37,8 @@ export default {
37 37 return {
38 38 xml: '',
39 39 activityList: [],
  40 + processInstance: undefined,
  41 + taskList: [],
40 42 };
41 43 },
42 44 mounted() {
... ... @@ -61,6 +63,14 @@ export default {
61 63 activityData: function (newActivityData) {
62 64 this.activityList = newActivityData;
63 65 this.createNewDiagram(this.xml);
  66 + },
  67 + processInstanceData: function (newProcessInstanceData) {
  68 + this.processInstance = newProcessInstanceData;
  69 + this.createNewDiagram(this.xml);
  70 + },
  71 + taskData: function (newTaskListData) {
  72 + this.taskList = newTaskListData;
  73 + this.createNewDiagram(this.xml);
64 74 }
65 75 },
66 76 methods: {
... ... @@ -94,6 +104,11 @@ export default {
94 104 /* 高亮流程图 */
95 105 // TODO 芋艿:如果多个 endActivity 的话,目前的逻辑可能有一定的问题。https://www.jdon.com/workflow/multi-events.html
96 106 async highlightDiagram() {
  107 + // let activityList = this.activityList.filter(task => {
  108 + // if (task.type !== 'sequenceFlow') { // 去除连线元素
  109 + // return true;
  110 + // }
  111 + // });
97 112 let activityList = this.activityList;
98 113 if (activityList.length === 0) {
99 114 return;
... ... @@ -109,20 +124,15 @@ export default {
109 124 if (!activity) {
110 125 return;
111 126 }
112   - // TODO 芋艿:
113   - if (activity.task) {
114   - const result = activity.task.result;
115   - if (result === 1) {
116   - canvas.addMarker(n.id, 'highlight-todo');
117   - } else if (result === 2) {
118   - canvas.addMarker(n.id, 'highlight');
119   - } else if (result === 3) {
120   - canvas.addMarker(n.id, 'highlight-reject');
121   - } else if (result === 4) {
122   - canvas.addMarker(n.id, 'highlight-cancel');
123   - }
  127 + // 处理用户任务的高亮
  128 + const task = this.taskList.find(m => m.id === activity.taskId); // 找到活动对应的 taskId
  129 + if (task) {
  130 + canvas.addMarker(n.id, this.getTaskHighlightCss(task));
124 131 }
  132 +
  133 + debugger
125 134 n.outgoing?.forEach(nn => {
  135 + debugger
126 136 let targetActivity = activityList.find(m => m.key === nn.targetRef.id)
127 137 if (targetActivity) {
128 138 debugger
... ... @@ -190,8 +200,15 @@ export default {
190 200 return activity.endTime ? 'highlight' : 'highlight-todo';
191 201 },
192 202 getTaskHighlightCss(task) {
193   - if (!task) {
194   - return '';
  203 + const result = task.result;
  204 + if (result === 1) {
  205 + return 'highlight-todo';
  206 + } else if (result === 2) {
  207 + return 'highlight';
  208 + } else if (result === 3) {
  209 + return 'highlight-reject';
  210 + } else if (result === 4) {
  211 + return 'highlight-cancel';
195 212 }
196 213 return '';
197 214 },
... ...
yudao-admin-ui/src/views/bpm/processInstance/detail.vue
... ... @@ -74,7 +74,8 @@
74 74 <div slot="header" class="clearfix">
75 75 <span class="el-icon-picture-outline">流程图</span>
76 76 </div>
77   - <my-process-viewer key="designer" v-model="bpmnXML" v-bind="bpmnControlForm" :activityData="activityList"/>
  77 + <my-process-viewer key="designer" v-model="bpmnXML" v-bind="bpmnControlForm" :activityData="activityList"
  78 + :processInstanceData="processInstance" :taskData="tasks" />
78 79 </el-card>
79 80  
80 81 <!-- 对话框(转派审批人) -->
... ...