From e52ec4f9b9b93133af9736efa633a471a0976c95 Mon Sep 17 00:00:00 2001 From: dap <15891557205@163.com> Date: Mon, 16 Dec 2024 21:01:30 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E5=AE=8C=E5=96=84=E8=AF=B7=E5=81=87?= =?UTF-8?q?=E7=94=B3=E8=AF=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web-antd/src/api/workflow/task/index.ts | 15 ++- .../web-antd/src/api/workflow/task/model.d.ts | 23 ++++ .../views/workflow/components/apply-modal.vue | 100 ++++++++++++++++++ .../src/views/workflow/components/index.ts | 2 + .../workflow/components/user-select-modal.vue | 45 ++++++++ .../src/views/workflow/leave/api/index.ts | 4 +- .../src/views/workflow/leave/data.tsx | 29 ++++- .../src/views/workflow/leave/index.vue | 12 ++- .../src/views/workflow/leave/leave-form.vue | 93 +++++++++++++--- 9 files changed, 299 insertions(+), 24 deletions(-) create mode 100644 apps/web-antd/src/views/workflow/components/apply-modal.vue create mode 100644 apps/web-antd/src/views/workflow/components/user-select-modal.vue diff --git a/apps/web-antd/src/api/workflow/task/index.ts b/apps/web-antd/src/api/workflow/task/index.ts index 120d59e0..581d45e4 100644 --- a/apps/web-antd/src/api/workflow/task/index.ts +++ b/apps/web-antd/src/api/workflow/task/index.ts @@ -1,4 +1,8 @@ -import type { TaskInfo } from './model'; +import type { + CompleteTaskReqData, + StartWorkFlowReqData, + TaskInfo, +} from './model'; import type { ID, IDS, PageQuery, PageResult } from '#/api/common'; @@ -8,15 +12,18 @@ import { requestClient } from '#/api/request'; * 启动任务 * @param data */ -export function startWorkFlow(data: any) { - return requestClient.postWithMsg('/workflow/task/startWorkFlow', data); +export function startWorkFlow(data: StartWorkFlowReqData) { + return requestClient.post<{ + processInstanceId: string; + taskId: string; + }>('/workflow/task/startWorkFlow', data); } /** * 办理任务 * @param data */ -export function completeTask(data: any) { +export function completeTask(data: CompleteTaskReqData) { return requestClient.postWithMsg('/workflow/task/completeTask', data); } diff --git a/apps/web-antd/src/api/workflow/task/model.d.ts b/apps/web-antd/src/api/workflow/task/model.d.ts index 88353848..cf32df16 100644 --- a/apps/web-antd/src/api/workflow/task/model.d.ts +++ b/apps/web-antd/src/api/workflow/task/model.d.ts @@ -27,3 +27,26 @@ export interface TaskInfo { createBy: string; createByName: string; } + +export interface CompleteTaskReqData { + messageType: string[]; + flowCopyList: { userId: string; userName: string }[]; + taskId: ID; + taskVariables: Record; + variables: any; +} + +export interface StartWorkFlowReqData { + /** + * 业务ID + */ + businessKey: ID; + /** + * flowCode + */ + flowCode: string; + /** + * 流程变量 + */ + variables: Record; +} diff --git a/apps/web-antd/src/views/workflow/components/apply-modal.vue b/apps/web-antd/src/views/workflow/components/apply-modal.vue new file mode 100644 index 00000000..287cc634 --- /dev/null +++ b/apps/web-antd/src/views/workflow/components/apply-modal.vue @@ -0,0 +1,100 @@ + + + + + diff --git a/apps/web-antd/src/views/workflow/components/index.ts b/apps/web-antd/src/views/workflow/components/index.ts index 26148c11..1c6b9bc1 100644 --- a/apps/web-antd/src/views/workflow/components/index.ts +++ b/apps/web-antd/src/views/workflow/components/index.ts @@ -1,3 +1,5 @@ +export { default as applyModal } from './apply-modal.vue'; export { default as ApprovalCard } from './approval-card.vue'; export { default as ApprovalPanel } from './approval-panel.vue'; export { default as ApprovalTimeline } from './approval-timeline.vue'; +export { default as UserSelectModal } from './user-select-modal.vue'; diff --git a/apps/web-antd/src/views/workflow/components/user-select-modal.vue b/apps/web-antd/src/views/workflow/components/user-select-modal.vue new file mode 100644 index 00000000..6bf8b6c7 --- /dev/null +++ b/apps/web-antd/src/views/workflow/components/user-select-modal.vue @@ -0,0 +1,45 @@ + + + diff --git a/apps/web-antd/src/views/workflow/leave/api/index.ts b/apps/web-antd/src/views/workflow/leave/api/index.ts index 363c5238..20b87efc 100644 --- a/apps/web-antd/src/views/workflow/leave/api/index.ts +++ b/apps/web-antd/src/views/workflow/leave/api/index.ts @@ -40,7 +40,7 @@ export function leaveInfo(id: ID) { * @returns void */ export function leaveAdd(data: LeaveForm) { - return requestClient.postWithMsg('/workflow/leave', data); + return requestClient.postWithMsg('/workflow/leave', data); } /** @@ -49,7 +49,7 @@ export function leaveAdd(data: LeaveForm) { * @returns void */ export function leaveUpdate(data: LeaveForm) { - return requestClient.putWithMsg('/workflow/leave', data); + return requestClient.putWithMsg('/workflow/leave', data); } /** diff --git a/apps/web-antd/src/views/workflow/leave/data.tsx b/apps/web-antd/src/views/workflow/leave/data.tsx index 8da75a4c..ff016a1a 100644 --- a/apps/web-antd/src/views/workflow/leave/data.tsx +++ b/apps/web-antd/src/views/workflow/leave/data.tsx @@ -1,4 +1,4 @@ -import type { FormSchemaGetter } from '#/adapter/form'; +import type { FormSchemaGetter, VbenFormSchema } from '#/adapter/form'; import type { VxeGridProps } from '#/adapter/vxe-table'; import { DictEnum } from '@vben/constants'; @@ -18,6 +18,13 @@ const leaveTypeOptions = [ { label: '其他', value: '7' }, ]; +export const leaveFlowOptions = [ + { label: '请假流程-普通', value: 'leave1' }, + { label: '请假流程-排他网关', value: 'leave2' }, + { label: '请假流程-并行网关', value: 'leave3' }, + { label: '请假流程-会签', value: 'leave4' }, +]; + export const querySchema: FormSchemaGetter = () => [ { component: 'InputNumber', @@ -86,7 +93,9 @@ export const columns: VxeGridProps['columns'] = [ }, ]; -export const modalSchema: FormSchemaGetter = () => [ +export const modalSchema: (isEdit: boolean) => VbenFormSchema[] = ( + isEdit: boolean, +) => [ { label: '主键', fieldName: 'id', @@ -96,6 +105,22 @@ export const modalSchema: FormSchemaGetter = () => [ triggerFields: [''], }, }, + { + label: '流程类型', + fieldName: 'flowType', + component: 'Select', + help: '这里仅仅为了发起流程方便, 实际不应该包含此字段', + componentProps: { + options: leaveFlowOptions, + getPopupContainer, + }, + defaultValue: 'leave1', + rules: 'selectRequired', + dependencies: { + show: () => isEdit, + triggerFields: [''], + }, + }, { label: '请假类型', fieldName: 'leaveType', diff --git a/apps/web-antd/src/views/workflow/leave/index.vue b/apps/web-antd/src/views/workflow/leave/index.vue index 78d22cf6..a8141e09 100644 --- a/apps/web-antd/src/views/workflow/leave/index.vue +++ b/apps/web-antd/src/views/workflow/leave/index.vue @@ -3,7 +3,7 @@ import type { LeaveForm } from './api/model'; import { useRouter } from 'vue-router'; -import { Page, type VbenFormProps } from '@vben/common-ui'; +import { Page, useVbenModal, type VbenFormProps } from '@vben/common-ui'; import { getVxePopupContainer } from '@vben/utils'; import { Modal, Popconfirm, Space } from 'ant-design-vue'; @@ -15,6 +15,7 @@ import { } from '#/adapter/vxe-table'; import { commonDownloadExcel } from '#/utils/file/download'; +import userSelectModal from '../components/user-select-modal.vue'; import { leaveExport, leaveList, leaveRemove } from './api'; import { columns, querySchema } from './data'; @@ -103,6 +104,13 @@ function handleDownloadExcel() { }, ); } +const [UserSelectModal, testApi] = useVbenModal({ + connectedComponent: userSelectModal, +}); + +function handleTest() { + testApi.open(); +} diff --git a/apps/web-antd/src/views/workflow/leave/leave-form.vue b/apps/web-antd/src/views/workflow/leave/leave-form.vue index 06c49ee0..f3855077 100644 --- a/apps/web-antd/src/views/workflow/leave/leave-form.vue +++ b/apps/web-antd/src/views/workflow/leave/leave-form.vue @@ -1,14 +1,20 @@