nodeAndApprover.js
2.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import { getTaskInfo, getCandidatesListByTaskId } from '@/api/process'
import { uniqueArrayObject } from '@/utils/array'
export default {
data() {
return {
extraField: {},
}
},
methods: {
loadTaskInfo(rows, key = 'id') {
//草稿、结束、人工结束状态不显示审批人、当前节点(没有)
const unLoadStatus = ['draft', 'end', 'manualend']
const ids = rows
.filter((item) => !unLoadStatus.includes(item.status))
?.map((item) => item[key])
.filter(Boolean)
const isDone = key !== 'procInstId'
if (ids.length !== 0) {
getTaskInfo(ids).then((resp) => {
const data = resp.value
for (let key in data) {
if (!this.extraField[key]) {
this.$set(this.extraField, key, {})
}
this.setTaskInfo(key, data[key], isDone)
}
})
}
},
async setTaskInfo(id, tasks, isDone) {
if (tasks?.length < 1) return
const taskNames = tasks.map((item) => item.name).unique()
this.$set(this.extraField[id], 'nodeName', taskNames)
this.$set(this.extraField[id], 'taskId', tasks[0].taskId)
let assignee = []
let promises = []
tasks.forEach((item) => {
promises.push(this.getAssigneeUser(item))
})
Promise.all(promises).then((resultArr) => {
resultArr.forEach((item) => {
assignee = assignee.concat(item)
})
this.$set(
this.extraField[id],
'nodeApprover',
isDone ? uniqueArrayObject(assignee, 'id') : assignee
)
})
},
//获取任务的审批人,返回promise,如果候选人有多个,就要调接口取出来
getAssigneeUser(task) {
return new Promise((resolve, reject) => {
if (task.assigneeId === '0') {
getCandidatesListByTaskId(task.id).then((response) => {
resolve(response)
})
} else {
resolve([
{
type: 'user',
name: task.assigneeName,
id: task.assigneeId,
taskId: task.id,
},
])
}
})
},
},
}