feat(approval): 员工端待办/已办与通过驳回撤回 (#20)

- 审批中心三个 tab 接入待办/已办接口,支持状态+关键词筛选与下拉刷新
- 详情页新增通过(意见可选)、驳回(意见必填)、撤回(二次确认)
- 驳回/撤回后提供修改并重新提交入口,按钮按 permissions 显隐
This commit is contained in:
2026-10-30 20:45:26 +08:00
parent 0a595d1c11
commit 7b6e1a36d6
5 changed files with 352 additions and 58 deletions
+30 -1
View File
@@ -4,7 +4,8 @@ import type {
ApprovalCompletionForm,
ApprovalInstance,
ApprovalItem,
ApprovalMineParam
ApprovalMineParam,
ApprovalTaskListParam
} from '../model';
import { THINK_API_URL } from '@/config/setting';
@@ -61,3 +62,31 @@ export async function pageMine(params: ApprovalMineParam) {
}
return Promise.reject(new Error(res.data.message));
}
/**
* 我的待办
*/
export async function pageTodo(params: ApprovalTaskListParam) {
const res = await request.get<ApiResult<PageResult<ApprovalItem>>>(
THINK_API_URL + '/approval/todo/page',
{ params }
);
if (res.data.code === 0 && res.data.data) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 我的已办
*/
export async function pageDone(params: ApprovalTaskListParam) {
const res = await request.get<ApiResult<PageResult<ApprovalItem>>>(
THINK_API_URL + '/approval/done/page',
{ params }
);
if (res.data.code === 0 && res.data.data) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
+15
View File
@@ -136,6 +136,21 @@ export interface ApprovalMineParam extends PageParam {
docType?: string;
}
/**
* 待办/已办查询参数
*/
export interface ApprovalTaskListParam extends PageParam {
status?: string;
docType?: string;
}
/**
* 任务动作参数(通过/驳回)
*/
export interface ApprovalTaskActionParam {
opinion?: string;
}
/**
* 组织
*/
+42
View File
@@ -1,5 +1,6 @@
import request from '@/utils/request';
import type { ApiResult } from '@/api';
import type { ApprovalInstance } from '../model';
import { THINK_API_URL } from '@/config/setting';
/**
@@ -14,3 +15,44 @@ export async function getTodoCount() {
}
return Promise.reject(new Error(res.data.message));
}
/**
* 通过(意见可选)
*/
export async function approveTask(id: number, opinion?: string) {
const res = await request.post<ApiResult<ApprovalInstance>>(
THINK_API_URL + '/approval/task/' + id + '/approve',
{ opinion }
);
if (res.data.code === 0 && res.data.data) {
return res.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 驳回(意见必填)
*/
export async function rejectTask(id: number, opinion: string) {
const res = await request.post<ApiResult<ApprovalInstance>>(
THINK_API_URL + '/approval/task/' + id + '/reject',
{ opinion }
);
if (res.data.code === 0 && res.data.data) {
return res.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 撤回
*/
export async function withdrawInstance(id: number) {
const res = await request.post<ApiResult<ApprovalInstance>>(
THINK_API_URL + '/approval/instance/' + id + '/withdraw'
);
if (res.data.code === 0 && res.data.data) {
return res.data;
}
return Promise.reject(new Error(res.data.message));
}