feat: 重构流程定义和流程实例模块,更新API命名,增强用户选择弹窗功能,支持多用户选择,优化流程实例创建界面。

feat: 完善流程定义模块、完善流程实例模块
feat: 完善OA请假模块
feat: 完善审批中心、发起流程、查看流程、工作流整体进度 40%
This commit is contained in:
ziye
2025-05-12 00:53:48 +08:00
parent 730786b61e
commit 2705fb7a4d
18 changed files with 2065 additions and 530 deletions

View File

@@ -3,19 +3,21 @@ import type { PageParam, PageResult } from '@vben/request';
import { requestClient } from '#/api/request';
/** 流程定义 */
export namespace BpmDefinitionApi {
export namespace BpmProcessDefinitionApi {
export interface ProcessDefinitionVO {
id: string;
version: number;
deploymentTime: number;
suspensionState: number;
formType?: number;
bpmnXml?: string;
simpleModel?: string;
}
}
/** 查询流程定义 */
export async function getProcessDefinition(id?: string, key?: string) {
return requestClient.get<BpmDefinitionApi.ProcessDefinitionVO>(
return requestClient.get<BpmProcessDefinitionApi.ProcessDefinitionVO>(
'/bpm/process-definition/get',
{
params: { id, key },
@@ -25,25 +27,23 @@ export async function getProcessDefinition(id?: string, key?: string) {
/** 分页查询流程定义 */
export async function getProcessDefinitionPage(params: PageParam) {
return requestClient.get<PageResult<BpmDefinitionApi.ProcessDefinitionVO>>(
'/bpm/process-definition/page',
{ params },
);
return requestClient.get<
PageResult<BpmProcessDefinitionApi.ProcessDefinitionVO>
>('/bpm/process-definition/page', { params });
}
/** 查询流程定义列表 */
export async function getProcessDefinitionList(params: any) {
return requestClient.get<PageResult<BpmDefinitionApi.ProcessDefinitionVO>>(
'/bpm/process-definition/list',
{
params,
},
);
return requestClient.get<
PageResult<BpmProcessDefinitionApi.ProcessDefinitionVO>
>('/bpm/process-definition/list', {
params,
});
}
/** 查询流程定义列表(简单列表) */
export async function getSimpleProcessDefinitionList() {
return requestClient.get<PageResult<BpmDefinitionApi.ProcessDefinitionVO>>(
'/bpm/process-definition/simple-list',
);
return requestClient.get<
PageResult<BpmProcessDefinitionApi.ProcessDefinitionVO>
>('/bpm/process-definition/simple-list');
}

View File

@@ -0,0 +1,40 @@
import type { PageParam, PageResult } from '@vben/request';
import { requestClient } from '#/api/request';
export namespace BpmOALeaveApi {
export interface LeaveVO {
id: number;
status: number;
type: number;
reason: string;
processInstanceId: string;
startTime: number;
endTime: number;
createTime: Date;
startUserSelectAssignees?: Record<string, string[]>;
}
}
/** 创建请假申请 */
export async function createLeave(data: BpmOALeaveApi.LeaveVO) {
return requestClient.post('/bpm/oa/leave/create', data);
}
/** 更新请假申请 */
export async function updateLeave(data: BpmOALeaveApi.LeaveVO) {
return requestClient.post('/bpm/oa/leave/update', data);
}
/** 获得请假申请 */
export async function getLeave(id: number) {
return requestClient.get<BpmOALeaveApi.LeaveVO>(`/bpm/oa/leave/get?id=${id}`);
}
/** 获得请假申请分页 */
export async function getLeavePage(params: PageParam) {
return requestClient.get<PageResult<BpmOALeaveApi.LeaveVO>>(
'/bpm/oa/leave/page',
{ params },
);
}

View File

@@ -1,7 +1,7 @@
import type { PageParam, PageResult } from '@vben/request';
import type { BpmModelApi } from '#/api/bpm/model';
import type { CandidateStrategyEnum, NodeTypeEnum } from '#/utils';
import type { BpmCandidateStrategyEnum, BpmNodeTypeEnum } from '#/utils';
import { requestClient } from '#/api/request';
@@ -29,12 +29,12 @@ export namespace BpmProcessInstanceApi {
// 审批节点信息
export type ApprovalNodeInfo = {
candidateStrategy?: CandidateStrategyEnum;
candidateStrategy?: BpmCandidateStrategyEnum;
candidateUsers?: User[];
endTime?: Date;
id: number;
name: string;
nodeType: NodeTypeEnum;
nodeType: BpmNodeTypeEnum;
startTime?: Date;
status: number;
tasks: ApprovalTaskInfo[];

View File

@@ -0,0 +1,108 @@
import type { PageParam, PageResult } from '@vben/request';
import { requestClient } from '#/api/request';
export namespace BpmTaskApi {
/** BPM 流程监听器 VO */
export interface TaskVO {
id: number; // 编号
name: string; // 监听器名字
type: string; // 监听器类型
status: number; // 监听器状态
event: string; // 监听事件
valueType: string; // 监听器值类型
value: string; // 监听器值
}
}
/** 查询待办任务分页 */
export async function getTaskTodoPage(params: PageParam) {
return requestClient.get<PageResult<BpmTaskApi.TaskVO>>(
'/bpm/task/todo-page',
{
params,
},
);
}
/** 查询已办任务分页 */
export async function getTaskDonePage(params: PageParam) {
return requestClient.get<PageResult<BpmTaskApi.TaskVO>>(
'/bpm/task/done-page',
{
params,
},
);
}
/** 查询任务管理分页 */
export async function getTaskManagerPage(params: PageParam) {
return requestClient.get<PageResult<BpmTaskApi.TaskVO>>(
'/bpm/task/manager-page',
{ params },
);
}
/** 审批任务 */
export const approveTask = async (data: any) => {
return await requestClient.put('/bpm/task/approve', data);
};
/** 驳回任务 */
export const rejectTask = async (data: any) => {
return await requestClient.put('/bpm/task/reject', data);
};
/** 根据流程实例 ID 查询任务列表 */
export const getTaskListByProcessInstanceId = async (data: any) => {
return await requestClient.get('/bpm/task/list-by-process-instance-id', data);
};
/** 获取所有可退回的节点 */
export const getTaskListByReturn = async (data: any) => {
return await requestClient.get('/bpm/task/list-by-return', data);
};
/** 退回 */
export const returnTask = async (data: any) => {
return await requestClient.put('/bpm/task/return', data);
};
// 委派
export const delegateTask = async (data: any) => {
return await requestClient.put('/bpm/task/delegate', data);
};
// 转派
export const transferTask = async (data: any) => {
return await requestClient.put('/bpm/task/transfer', data);
};
// 加签
export const signCreateTask = async (data: any) => {
return await requestClient.put('/bpm/task/create-sign', data);
};
// 减签
export const signDeleteTask = async (data: any) => {
return await requestClient.delete('/bpm/task/delete-sign', data);
};
// 抄送
export const copyTask = async (data: any) => {
return await requestClient.put('/bpm/task/copy', data);
};
// 获取我的待办任务
export const myTodoTask = async (processInstanceId: string) => {
return await requestClient.get(
`/bpm/task/my-todo?processInstanceId=${processInstanceId}`,
);
};
// 获取加签任务列表
export const getChildrenTaskList = async (id: string) => {
return await requestClient.get(
`/bpm/task/list-by-parent-task-id?parentTaskId=${id}`,
);
};