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]) 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, }, ]) } }) }, }, }