diff --git a/apps/web-antd/src/api/workflow/instance/index.ts b/apps/web-antd/src/api/workflow/instance/index.ts index caf8abc8..748742e7 100644 --- a/apps/web-antd/src/api/workflow/instance/index.ts +++ b/apps/web-antd/src/api/workflow/instance/index.ts @@ -1,7 +1,78 @@ import type { FlowInfoResponse } from './model'; +import type { ID, IDS, PageQuery } from '#/api/common'; + import { requestClient } from '#/api/request'; +/** + * 分页查询正在运行的流程实例 + * @param params + * @returns + */ +export function pageByRunning(params?: PageQuery) { + return requestClient.get('/workflow/instance/pageByRunning', { params }); +} + +/** + * pageByFinish + * @param params + * @returns + */ +export function pageByFinish(params?: PageQuery) { + return requestClient.get('/workflow/instance/pageByFinish', { params }); +} + +/** + * 按照业务id删除流程实例 + * @param businessIds 业务id + */ +export function deleteByBusinessIds(businessIds: IDS) { + return requestClient.deleteWithMsg( + `/workflow/instance/deleteByBusinessIds${businessIds}`, + ); +} + +/** + * 按照实例id删除流程实例 + * @param instanceIds 实例id + */ +export function deleteByInstanceIds(instanceIds: IDS) { + return requestClient.deleteWithMsg( + `/workflow/instance/deleteByInstanceIds${instanceIds}`, + ); +} + +/** + * 撤销流程 + * @param data + */ +export function cancelProcessApply(data: any) { + return requestClient.putWithMsg( + '/workflow/instance/cancelProcessApply', + data, + ); +} + +/** + * 激活/挂起流程实例 + * @param instanceId + * @param active + */ +export function workflowInstanceActive(instanceId: ID, active: boolean) { + return requestClient.putWithMsg( + `/workflow/instance/active/${instanceId}?active=${active}`, + ); +} + +/** + * 获取当前登录人发起的流程实例 + * @param params + * @returns + */ +export function pageByCurrent(params?: PageQuery) { + return requestClient.get('/workflow/instance/current', { params }); +} + /** * 获取流程图,流程记录 * @param businessId 业务标识 @@ -12,3 +83,24 @@ export function flowInfo(businessId: string) { `/workflow/instance/flowImage/${businessId}`, ); } + +/** + * 获取流程变量 + * @param instanceId + * @returns Map + */ +export function instanceVariable(instanceId: string) { + return requestClient.get>( + `/workflow/instance/variable/${instanceId}`, + ); +} + +/** + * 作废流程 + */ +export function workflowInstanceInvalid(data: { + comment?: string; + id: string; +}) { + return requestClient.postWithMsg('/workflow/instance/invalid', data); +} diff --git a/apps/web-antd/src/views/workflow/processInstance/data.tsx b/apps/web-antd/src/views/workflow/processInstance/data.tsx new file mode 100644 index 00000000..3183ca39 --- /dev/null +++ b/apps/web-antd/src/views/workflow/processInstance/data.tsx @@ -0,0 +1,91 @@ +import type { FormSchemaGetter } from '#/adapter/form'; +import type { VxeGridProps } from '#/adapter/vxe-table'; + +import { DictEnum } from '@vben/constants'; + +import { OptionsTag } from '#/components/table'; +import { renderDict } from '#/utils/render'; + +import { activityStatusOptions } from '../processDefinition/constant'; + +export const querySchema: FormSchemaGetter = () => [ + { + component: 'Input', + label: '任务名称', + fieldName: 'nodeName', + }, + { + component: 'Input', + label: '流程名称', + fieldName: 'flowName', + }, + { + component: 'Input', + label: '流程编码', + fieldName: 'flowCode', + }, +]; + +export const columns: VxeGridProps['columns'] = [ + { type: 'checkbox', width: 60 }, + { + field: 'flowName', + title: '流程名称', + minWidth: 150, + }, + { + field: 'nodeName', + title: '任务名称', + minWidth: 150, + }, + { + field: 'flowCode', + title: '流程编码', + minWidth: 150, + }, + { + field: 'createByName', + title: '申请人', + minWidth: 150, + }, + { + field: 'version', + title: '版本号', + minWidth: 150, + formatter: ({ cellValue }) => `V${cellValue}.0`, + }, + { + field: 'activityStatus', + title: '状态', + minWidth: 100, + slots: { + default: ({ row }) => { + const cellValue = row.activityStatus; + return ( + + ); + }, + }, + }, + { + field: 'flowStatus', + title: '流程状态', + minWidth: 100, + slots: { + default: ({ row }) => { + return renderDict(row.flowStatus, DictEnum.WF_BUSINESS_STATUS); + }, + }, + }, + { + field: 'action', + fixed: 'right', + slots: { default: 'action' }, + title: '操作', + resizable: false, + width: 280, + }, +]; diff --git a/apps/web-antd/src/views/workflow/processInstance/index.vue b/apps/web-antd/src/views/workflow/processInstance/index.vue index 06372a15..4514a7a2 100644 --- a/apps/web-antd/src/views/workflow/processInstance/index.vue +++ b/apps/web-antd/src/views/workflow/processInstance/index.vue @@ -1,9 +1,226 @@ diff --git a/apps/web-antd/src/views/workflow/processInstance/instance-invalid-modal.vue b/apps/web-antd/src/views/workflow/processInstance/instance-invalid-modal.vue new file mode 100644 index 00000000..58727b2b --- /dev/null +++ b/apps/web-antd/src/views/workflow/processInstance/instance-invalid-modal.vue @@ -0,0 +1,67 @@ + + + diff --git a/apps/web-antd/src/views/workflow/processInstance/instance-variable-modal.vue b/apps/web-antd/src/views/workflow/processInstance/instance-variable-modal.vue new file mode 100644 index 00000000..420a9d0c --- /dev/null +++ b/apps/web-antd/src/views/workflow/processInstance/instance-variable-modal.vue @@ -0,0 +1,28 @@ + + +