From 9d287b4f3206a69a54022c3d4c0600241926c9d5 Mon Sep 17 00:00:00 2001 From: weicw Date: Sat, 31 Oct 2026 08:23:06 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=91=98=E5=B7=A5=E7=AB=AF=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E7=AD=9B=E9=80=89=E6=94=B9=E4=BB=8E=E5=90=8E=E7=AB=AF?= =?UTF-8?q?=E5=AD=97=E5=85=B8=E5=8A=A0=E8=BD=BD=EF=BC=88=E4=BF=9D=E7=95=99?= =?UTF-8?q?=E9=9D=99=E6=80=81=E5=85=9C=E5=BA=95=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/approval/directory/index.ts | 13 +++++++++++++ src/packageApproval/pages/index.vue | 27 +++++++++++++++++++++++---- 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/src/api/approval/directory/index.ts b/src/api/approval/directory/index.ts index d3a3266..d844dc7 100644 --- a/src/api/approval/directory/index.ts +++ b/src/api/approval/directory/index.ts @@ -15,3 +15,16 @@ export async function getOrganizations() { } return Promise.reject(new Error(res.data.message)); } + +/** + * 流程类型选项(flowCode → 流程名称),新增单据自动出现 + */ +export async function getFlowOptions() { + const res = await request.get>>( + THINK_API_URL + '/approval/directory/flows' + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/packageApproval/pages/index.vue b/src/packageApproval/pages/index.vue index c6706be..5317c4c 100644 --- a/src/packageApproval/pages/index.vue +++ b/src/packageApproval/pages/index.vue @@ -106,6 +106,7 @@ import { onShow } from '@dcloudio/uni-app'; import { pageDone, pageMine, pageTodo } from '@/api/approval/instance'; +import { getFlowOptions } from '@/api/approval/directory'; import type { ApprovalItem, ApprovalTaskListParam } from '@/api/approval/model'; import { hasPermission } from '@/utils/permission'; @@ -129,12 +130,29 @@ const createOptions: CreateOption[] = [ { flowCode: 'facility', label: '设施价格表', page: 'form-facility', query: '' } ]; -/** 流程筛选项:标签取流程名(ADR 0008),空值表示全部 */ -const flowOptions = [ +/** 流程筛选项:标签取流程名(ADR 0008),空值表示全部;名称以后端字典为准 */ +const flowOptions = ref>([ { value: '', label: '全部类型' }, ...createOptions.map(item => ({ value: item.flowCode, label: item.label })) -]; -const flowLabels = flowOptions.map(item => item.label); +]); +const flowLabels = computed(() => flowOptions.value.map(item => item.label)); + +/** 用后端流程字典覆盖筛选项名称(新增单据不必再改本页) */ +async function loadFlowOptions() { + try { + const flows = await getFlowOptions(); + const names = new Map(flows.map(flow => [flow.flowCode, flow.flowName])); + flowOptions.value = [ + { value: '', label: '全部类型' }, + ...createOptions.map(item => ({ + value: item.flowCode, + label: names.get(item.flowCode) || item.label + })) + ]; + } catch { + // 字典不可用时保留静态标签,筛选仍可用 + } +} const tabs: Array<{ key: TabKey; label: string }> = [ { key: 'todo', label: '待办' }, @@ -177,6 +195,7 @@ const finished = ref(false); let requestSeq = 0; onLoad(() => { + loadFlowOptions(); load(true); });