diff --git a/apps/web-antd/src/api/bpm/task/index.ts b/apps/web-antd/src/api/bpm/task/index.ts index 510ea174..7d9f2509 100644 --- a/apps/web-antd/src/api/bpm/task/index.ts +++ b/apps/web-antd/src/api/bpm/task/index.ts @@ -130,3 +130,8 @@ export const getChildrenTaskList = async (id: string) => { `/bpm/task/list-by-parent-task-id?parentTaskId=${id}`, ); }; + +// 撤回任务 +export const withdrawTask = async (taskId: string) => { + return await requestClient.put('/bpm/task/withdraw', null, { params: { taskId } }); +}; diff --git a/apps/web-antd/src/views/bpm/model/form/index.vue b/apps/web-antd/src/views/bpm/model/form/index.vue index 0446ed44..8427ceac 100644 --- a/apps/web-antd/src/views/bpm/model/form/index.vue +++ b/apps/web-antd/src/views/bpm/model/form/index.vue @@ -123,6 +123,7 @@ const formData: any = ref({ enable: false, summary: [], }, + allowWithdrawTask: false, }); // 流程数据 diff --git a/apps/web-antd/src/views/bpm/model/form/modules/extra-setting.vue b/apps/web-antd/src/views/bpm/model/form/modules/extra-setting.vue index ee42d680..3c549114 100644 --- a/apps/web-antd/src/views/bpm/model/form/modules/extra-setting.vue +++ b/apps/web-antd/src/views/bpm/model/form/modules/extra-setting.vue @@ -217,6 +217,9 @@ function initData() { if (modelData.value.taskAfterTriggerSetting) { taskAfterTriggerEnable.value = true; } + if (modelData.value.allowWithdrawTask === undefined) { + modelData.value.allowWithdrawTask = false; + } } /** 监听表单 ID 变化,加载表单数据 */ @@ -267,6 +270,18 @@ defineExpose({ initData, validate }); + + + + 允许审批人撤回任务 + + + + 审批人可撤回正在审批节点的前一节点 + + + + diff --git a/apps/web-antd/src/views/bpm/task/done/index.vue b/apps/web-antd/src/views/bpm/task/done/index.vue index 2c568a43..abd6fcbf 100644 --- a/apps/web-antd/src/views/bpm/task/done/index.vue +++ b/apps/web-antd/src/views/bpm/task/done/index.vue @@ -4,8 +4,10 @@ import type { BpmTaskApi } from '#/api/bpm/task'; import { DocAlert, Page } from '@vben/common-ui'; +import { message } from 'ant-design-vue'; + import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; -import { getTaskDonePage } from '#/api/bpm/task'; +import { getTaskDonePage, withdrawTask } from '#/api/bpm/task'; import { router } from '#/router'; import { useGridColumns, useGridFormSchema } from './data'; @@ -23,7 +25,15 @@ function handleHistory(row: BpmTaskApi.TaskManager) { }); } -const [Grid] = useVbenVxeGrid({ +/** 撤回任务 */ +async function handleWithdraw(row: BpmTaskApi.TaskManager) { + await withdrawTask(row.id); + message.success('撤回成功'); + // 刷新表格数据 + await gridApi.query(); +} + +const [Grid, gridApi] = useVbenVxeGrid({ formOptions: { schema: useGridFormSchema(), }, @@ -52,7 +62,7 @@ const [Grid] = useVbenVxeGrid({ cellConfig: { height: 64, }, - } as VxeTableGridOptions, + } as VxeTableGridOptions, }); @@ -75,6 +85,13 @@ const [Grid] = useVbenVxeGrid({