import http from '@/api' import { ProcessStatus } from '@/api/modules/flow/instance' import { cloneDeep } from 'lodash-es' export interface FlowActivity { id: string defineId: string multi: 'sequential' | 'joint' | 'single' taskId: string instanceId: string executionId: string activityId: string activityName: string activityType: string assignee: string startTime: string endTime: string duration: number deleteReason?: string status: ProcessStatus | -1 records?: FlowActivity[] } export const records = (instanceId: string) => { return http.get(`/activity/records/${instanceId}`) } export const buildRecords = (data: FlowActivity[]) => { const activities = cloneDeep(data) const length = activities.length for (let i = 0; i < length; i++) { const item = activities[i] const next = activities[i + 1] if ( next && next.multi !== 'sequential' && item.multi !== 'sequential' && next.activityId === item.activityId ) { if (!Array.isArray(item.records)) { item.records = [] } if (item.activityType === 'userTask') { item.activityType = 'multiUser' } item.records.push(next) activities.splice(i + 1, 1) i-- } } activities.forEach((item) => { if (item.multi !== 'sequential') { if (!Array.isArray(item.records)) { item.records = [] } item.records.unshift(cloneDeep(item)) } }) return activities }