From 0f68108574961e5a41fb5934aeea1f60f0a1ac05 Mon Sep 17 00:00:00 2001 From: weicw <594098497@qq.com> Date: Fri, 30 Oct 2026 21:42:04 +0800 Subject: [PATCH] =?UTF-8?q?feat(approval):=20=E5=91=98=E5=B7=A5=E7=AB=AF?= =?UTF-8?q?=E6=B4=BE=E5=8D=95=E9=80=89=E4=BA=BA=E9=A1=B5=E4=B8=8E=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E6=B4=BE=E5=8D=95=E5=85=A5=E5=8F=A3=20(#24)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/approval/model/index.ts | 12 ++ src/api/approval/task/index.ts | 29 +++- src/packageApproval/pages/detail.vue | 32 +++- src/packageApproval/pages/dispatch.vue | 230 +++++++++++++++++++++++++ src/pages.json | 7 + 5 files changed, 308 insertions(+), 2 deletions(-) create mode 100644 src/packageApproval/pages/dispatch.vue diff --git a/src/api/approval/model/index.ts b/src/api/approval/model/index.ts index af22166..cf1768d 100644 --- a/src/api/approval/model/index.ts +++ b/src/api/approval/model/index.ts @@ -173,3 +173,15 @@ export interface ApprovalOrganization { organizationCode?: string; leaderId?: number; } + +/** + * 审批目录用户(派单候选池) + */ +export interface ApprovalUser { + userId: number; + username?: string; + nickname?: string; + realName?: string; + organizationId?: number; + organizationName?: string; +} diff --git a/src/api/approval/task/index.ts b/src/api/approval/task/index.ts index 4f82cd7..462f0d5 100644 --- a/src/api/approval/task/index.ts +++ b/src/api/approval/task/index.ts @@ -1,6 +1,6 @@ import request from '@/utils/request'; import type { ApiResult } from '@/api'; -import type { ApprovalInstance } from '../model'; +import type { ApprovalInstance, ApprovalUser } from '../model'; import { THINK_API_URL } from '@/config/setting'; /** @@ -70,6 +70,33 @@ export async function archiveTask(id: number) { return Promise.reject(new Error(res.data.message)); } +/** + * 派单候选池(仅派单节点、本人待办) + */ +export async function listDispatchCandidates(id: number) { + const res = await request.get>( + THINK_API_URL + '/approval/task/' + id + '/candidates' + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 派单(选定 1 人即完成派单节点) + */ +export async function dispatchTask(id: number, targetUserId: number) { + const res = await request.post>( + THINK_API_URL + '/approval/task/' + id + '/dispatch', + { targetUserId } + ); + if (res.data.code === 0 && res.data.data) { + return res.data; + } + return Promise.reject(new Error(res.data.message)); +} + /** * 撤回 */ diff --git a/src/packageApproval/pages/detail.vue b/src/packageApproval/pages/detail.vue index 2cf8fa3..6acf7ea 100644 --- a/src/packageApproval/pages/detail.vue +++ b/src/packageApproval/pages/detail.vue @@ -146,6 +146,13 @@ > 通过 +