|
|
|
|
@ -37,6 +37,8 @@ export default {
|
|
|
|
|
return {
|
|
|
|
|
xml: '',
|
|
|
|
|
activityList: [],
|
|
|
|
|
processInstance: undefined,
|
|
|
|
|
taskList: [],
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
mounted() {
|
|
|
|
|
@ -61,6 +63,14 @@ export default {
|
|
|
|
|
activityData: function (newActivityData) {
|
|
|
|
|
this.activityList = newActivityData;
|
|
|
|
|
this.createNewDiagram(this.xml);
|
|
|
|
|
},
|
|
|
|
|
processInstanceData: function (newProcessInstanceData) {
|
|
|
|
|
this.processInstance = newProcessInstanceData;
|
|
|
|
|
this.createNewDiagram(this.xml);
|
|
|
|
|
},
|
|
|
|
|
taskData: function (newTaskListData) {
|
|
|
|
|
this.taskList = newTaskListData;
|
|
|
|
|
this.createNewDiagram(this.xml);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
methods: {
|
|
|
|
|
@ -94,6 +104,11 @@ export default {
|
|
|
|
|
/* 高亮流程图 */
|
|
|
|
|
// TODO 芋艿:如果多个 endActivity 的话,目前的逻辑可能有一定的问题。https://www.jdon.com/workflow/multi-events.html
|
|
|
|
|
async highlightDiagram() {
|
|
|
|
|
// let activityList = this.activityList.filter(task => {
|
|
|
|
|
// if (task.type !== 'sequenceFlow') { // 去除连线元素
|
|
|
|
|
// return true;
|
|
|
|
|
// }
|
|
|
|
|
// });
|
|
|
|
|
let activityList = this.activityList;
|
|
|
|
|
if (activityList.length === 0) {
|
|
|
|
|
return;
|
|
|
|
|
@ -109,20 +124,15 @@ export default {
|
|
|
|
|
if (!activity) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
// TODO 芋艿:
|
|
|
|
|
if (activity.task) {
|
|
|
|
|
const result = activity.task.result;
|
|
|
|
|
if (result === 1) {
|
|
|
|
|
canvas.addMarker(n.id, 'highlight-todo');
|
|
|
|
|
} else if (result === 2) {
|
|
|
|
|
canvas.addMarker(n.id, 'highlight');
|
|
|
|
|
} else if (result === 3) {
|
|
|
|
|
canvas.addMarker(n.id, 'highlight-reject');
|
|
|
|
|
} else if (result === 4) {
|
|
|
|
|
canvas.addMarker(n.id, 'highlight-cancel');
|
|
|
|
|
}
|
|
|
|
|
// 处理用户任务的高亮
|
|
|
|
|
const task = this.taskList.find(m => m.id === activity.taskId); // 找到活动对应的 taskId
|
|
|
|
|
if (task) {
|
|
|
|
|
canvas.addMarker(n.id, this.getTaskHighlightCss(task));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
debugger
|
|
|
|
|
n.outgoing?.forEach(nn => {
|
|
|
|
|
debugger
|
|
|
|
|
let targetActivity = activityList.find(m => m.key === nn.targetRef.id)
|
|
|
|
|
if (targetActivity) {
|
|
|
|
|
debugger
|
|
|
|
|
@ -190,8 +200,15 @@ export default {
|
|
|
|
|
return activity.endTime ? 'highlight' : 'highlight-todo';
|
|
|
|
|
},
|
|
|
|
|
getTaskHighlightCss(task) {
|
|
|
|
|
if (!task) {
|
|
|
|
|
return '';
|
|
|
|
|
const result = task.result;
|
|
|
|
|
if (result === 1) {
|
|
|
|
|
return 'highlight-todo';
|
|
|
|
|
} else if (result === 2) {
|
|
|
|
|
return 'highlight';
|
|
|
|
|
} else if (result === 3) {
|
|
|
|
|
return 'highlight-reject';
|
|
|
|
|
} else if (result === 4) {
|
|
|
|
|
return 'highlight-cancel';
|
|
|
|
|
}
|
|
|
|
|
return '';
|
|
|
|
|
},
|
|
|
|
|
|