From 397b30ae6a39cfd4ad6c271fe9e1c4d4f3b5f329 Mon Sep 17 00:00:00 2001 From: 王彪总 Date: Tue, 20 Oct 2026 13:50:54 +0800 Subject: [PATCH] 业务线 小程序不用写死,从后端接口获取 --- pages-sub/problem/regional-order-manage/index.vue | 44 ++++++++++++++++++++++++++++++++++++++++---- pages-sub/problem/regional-order-manage/list-detail.vue | 47 ++++++++++++++++++++++++++++++++++++++++++++--- pages-sub/problem/regional-order-manage/order-detail.vue | 46 ++++++++++++++++++++++++++++++++++++++++++++-- pages-sub/problem/work-order-manage/index.vue | 44 ++++++++++++++++++++++++++++++++++++++++---- pages-sub/problem/work-order-manage/order-detail.vue | 40 +++++++++++++++++++++++++++++++++++----- 5 files changed, 203 insertions(+), 18 deletions(-) diff --git a/pages-sub/problem/regional-order-manage/index.vue b/pages-sub/problem/regional-order-manage/index.vue index dcddf7b..ae53e50 100644 --- a/pages-sub/problem/regional-order-manage/index.vue +++ b/pages-sub/problem/regional-order-manage/index.vue @@ -108,9 +108,9 @@ - 回退 + 回退 重新提交 - {{ nextStepMap[item.taskKey].btnText }} + {{ getProcessButtonText(item) }} 详情 @@ -366,6 +366,10 @@ const queryList = async (pageNo, pageSize) => { if (activeTab.value === 0) res = await todoBuzSimplePage(params); else if (activeTab.value === 2) res = await myBuzSimplePage(params); else res = await doneBuzSimplePage(params); + // 待办列表:预取各任务的统一动作配置,供底部按钮显隐使用 + if (activeTab.value === 0) { + await attachConfiguredActions(res?.list); + } pagingHandle('complete', res?.list || [], res?.total || 0); } catch (error) { console.error('加载工单失败:', error); @@ -440,9 +444,39 @@ const queryUnifiedActions = async (item) => { return null } +/** 待办列表:批量预取统一动作配置,挂在行数据上供按钮显隐复用 */ +const attachConfiguredActions = async (list) => { + if (!Array.isArray(list) || list.length === 0) return + await Promise.all(list.map(async (item) => { + item.configuredActions = await queryUnifiedActions(item) + })) +} + +/** 驳回类动作编码:只有配置了这些动作,才展示「回退」按钮 */ +const REJECT_ACTION_CODES = ['REJECT', 'RETURN', 'RETURN_PREV'] + +/** 回退按钮显隐:已配置统一动作时以配置为准,未配置时沿用原有节点规则 */ +const showRejectButton = (item) => { + if (Array.isArray(item?.configuredActions)) { + return item.configuredActions.some((action) => REJECT_ACTION_CODES.includes(action.code)) + } + return !!nextStepMap[item.taskKey]?.backShow +} + +/** 主按钮文案:已配置统一动作时取配置的动作名称,未配置时沿用原有节点规则 */ +const getProcessButtonText = (item) => { + const actions = item?.configuredActions + if (Array.isArray(actions) && actions.length > 0) { + return actions[0].name || actions[0].code + } + return nextStepMap[item.taskKey]?.btnText +} + /** 待办-处理工单:已配置统一动作时走新逻辑,否则回退原有处理 */ const handleUnifiedProcess = async (item) => { - const actions = await queryUnifiedActions(item) + const actions = Array.isArray(item?.configuredActions) + ? item.configuredActions + : await queryUnifiedActions(item) if (actions) { unifiedActionsRef.value?.open(item, actions) return @@ -452,7 +486,9 @@ const handleUnifiedProcess = async (item) => { /** 待办-回退:已配置统一动作时走新逻辑,否则回退原有弹窗 */ const handleUnifiedReject = async (item) => { - const actions = await queryUnifiedActions(item) + const actions = Array.isArray(item?.configuredActions) + ? item.configuredActions + : await queryUnifiedActions(item) if (actions) { const rejectActions = actions.filter((action) => ['REJECT', 'RETURN', 'RETURN_PREV'].includes(action.code) diff --git a/pages-sub/problem/regional-order-manage/list-detail.vue b/pages-sub/problem/regional-order-manage/list-detail.vue index 26d5d52..e8febb7 100644 --- a/pages-sub/problem/regional-order-manage/list-detail.vue +++ b/pages-sub/problem/regional-order-manage/list-detail.vue @@ -229,7 +229,7 @@ type="warning" size="normal" @click="handleReject(orderDetail)" - v-show="nextStepMap[orderDetail.taskKey].backShow" + v-show="showRejectButton" >回退 重新提交 - {{ nextStepMap[orderDetail.taskKey].btnText }} + {{ processButtonText }} @@ -326,10 +326,11 @@