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 @@