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,6 +20,9 @@ public class BpmActivityRespVO { | ||
| 20 | @ApiModelProperty(value = "流程活动的结束时间", required = true) | 20 | @ApiModelProperty(value = "流程活动的结束时间", required = true) |
| 21 | private Date endTime; | 21 | private Date endTime; |
| 22 | 22 | ||
| 23 | + @ApiModelProperty(value = "关联的流程任务的编号", example = "2048", notes = "关联的流程任务,只有 UserTask 等类型才有") | ||
| 24 | + private String taskId; | ||
| 25 | + | ||
| 23 | /** | 26 | /** |
| 24 | * 关联的流程任务,只有 UserTask 类型才有 | 27 | * 关联的流程任务,只有 UserTask 类型才有 |
| 25 | */ | 28 | */ |
yudao-admin-ui/src/components/bpmnProcessDesigner/package/designer/ProcessViewer.vue
| @@ -37,6 +37,8 @@ export default { | @@ -37,6 +37,8 @@ export default { | ||
| 37 | return { | 37 | return { |
| 38 | xml: '', | 38 | xml: '', |
| 39 | activityList: [], | 39 | activityList: [], |
| 40 | + processInstance: undefined, | ||
| 41 | + taskList: [], | ||
| 40 | }; | 42 | }; |
| 41 | }, | 43 | }, |
| 42 | mounted() { | 44 | mounted() { |
| @@ -61,6 +63,14 @@ export default { | @@ -61,6 +63,14 @@ export default { | ||
| 61 | activityData: function (newActivityData) { | 63 | activityData: function (newActivityData) { |
| 62 | this.activityList = newActivityData; | 64 | this.activityList = newActivityData; |
| 63 | this.createNewDiagram(this.xml); | 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 | methods: { | 76 | methods: { |
| @@ -94,6 +104,11 @@ export default { | @@ -94,6 +104,11 @@ export default { | ||
| 94 | /* 高亮流程图 */ | 104 | /* 高亮流程图 */ |
| 95 | // TODO 芋艿:如果多个 endActivity 的话,目前的逻辑可能有一定的问题。https://www.jdon.com/workflow/multi-events.html | 105 | // TODO 芋艿:如果多个 endActivity 的话,目前的逻辑可能有一定的问题。https://www.jdon.com/workflow/multi-events.html |
| 96 | async highlightDiagram() { | 106 | async highlightDiagram() { |
| 107 | + // let activityList = this.activityList.filter(task => { | ||
| 108 | + // if (task.type !== 'sequenceFlow') { // 去除连线元素 | ||
| 109 | + // return true; | ||
| 110 | + // } | ||
| 111 | + // }); | ||
| 97 | let activityList = this.activityList; | 112 | let activityList = this.activityList; |
| 98 | if (activityList.length === 0) { | 113 | if (activityList.length === 0) { |
| 99 | return; | 114 | return; |
| @@ -109,20 +124,15 @@ export default { | @@ -109,20 +124,15 @@ export default { | ||
| 109 | if (!activity) { | 124 | if (!activity) { |
| 110 | return; | 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 | n.outgoing?.forEach(nn => { | 134 | n.outgoing?.forEach(nn => { |
| 135 | + debugger | ||
| 126 | let targetActivity = activityList.find(m => m.key === nn.targetRef.id) | 136 | let targetActivity = activityList.find(m => m.key === nn.targetRef.id) |
| 127 | if (targetActivity) { | 137 | if (targetActivity) { |
| 128 | debugger | 138 | debugger |
| @@ -190,8 +200,15 @@ export default { | @@ -190,8 +200,15 @@ export default { | ||
| 190 | return activity.endTime ? 'highlight' : 'highlight-todo'; | 200 | return activity.endTime ? 'highlight' : 'highlight-todo'; |
| 191 | }, | 201 | }, |
| 192 | getTaskHighlightCss(task) { | 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 | return ''; | 213 | return ''; |
| 197 | }, | 214 | }, |
yudao-admin-ui/src/views/bpm/processInstance/detail.vue
| @@ -74,7 +74,8 @@ | @@ -74,7 +74,8 @@ | ||
| 74 | <div slot="header" class="clearfix"> | 74 | <div slot="header" class="clearfix"> |
| 75 | <span class="el-icon-picture-outline">流程图</span> | 75 | <span class="el-icon-picture-outline">流程图</span> |
| 76 | </div> | 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 | </el-card> | 79 | </el-card> |
| 79 | 80 | ||
| 80 | <!-- 对话框(转派审批人) --> | 81 | <!-- 对话框(转派审批人) --> |