import { http } from '@/api/request' import type { Attachment, FlowInstance, ProcessProgress } from '@/types/flow' import type { PageQuery, PageResult } from '@/types/api' import type { AxiosRequestConfig } from 'axios' export function listMyInstance(params?: PageQuery): Promise> { return http.get('/flow/instance/mine', { params }) } export function listInstance( params?: PageQuery & { applicantName?: string; processName?: string; definitionName?: string; currentNodeName?: string } ): Promise> { return http.get('/flow/instance/page', { params }) } export function startInstance( processDefinitionId: number, title?: string, formData?: Record, attachmentUrls?: string ): Promise { return http.post('/flow/instance/start', { processDefinitionId, title, formData: formData ? JSON.stringify(formData) : undefined, attachmentUrls, }) } export function getInstance(id: number): Promise { return http.get(`/flow/instance/${id}`) } export function getProgress(id: number, config?: AxiosRequestConfig): Promise { return http.get(`/flow/instance/${id}/progress`, config) } export function participatedList(params?: PageQuery): Promise> { return http.get('/flow/instance/participated', { params }) } export function revokeInstance(id: number): Promise { return http.post(`/flow/instance/${id}/revoke`) } export function batchRevokeInstance(ids: number[]): Promise { return http.post('/flow/instance/batch-revoke', ids) } export function deleteInstance(id: number): Promise { return http.delete(`/flow/instance/${id}`) } export function batchDeleteInstance(ids: number[]): Promise { return http.post('/flow/instance/batch-delete', ids) } export function getInstanceAttachments(id: number): Promise { return http.get(`/flow/instance/${id}/attachments`) } export function updateInstanceFormData(id: number, formData: Record): Promise { return http.post(`/flow/instance/${id}/form-data`, { formData: JSON.stringify(formData), }) } export function migrateInstances(fromDefinitionId: number, toDefinitionId: number): Promise<{ migratedCount: number }> { return http.post('/flow/instance/migrate-all', null, { params: { fromDefinitionId, toDefinitionId } }) }