Commit 72c465be86639d3d91b9efdbcd63867c7d0aa824
1 parent
5332e543
优化 bpm 高亮流程图的前端
Showing
3 changed files
with
36 additions
and
15 deletions
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 | <!-- 对话框(转派审批人) --> | ... | ... |