diff --git a/pages-sub/problem/ai-manage/index.vue b/pages-sub/problem/ai-manage/index.vue
index 712ebca..739c394 100644
--- a/pages-sub/problem/ai-manage/index.vue
+++ b/pages-sub/problem/ai-manage/index.vue
@@ -96,9 +96,11 @@
-
- {{ nextStepMap[item.taskKey].btnText }}
+ 回退
+
+ {{ getProcessButtonText(item) }}
详情
@@ -395,7 +397,12 @@ 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);
- pagingRef.value.complete(res?.list || [], res?.total || 0);
+ const list = res?.list || [];
+ // 待办列表预取统一动作配置,供按钮文案与显隐复用
+ if (activeTab.value === 0) {
+ await attachConfiguredActions(list);
+ }
+ pagingRef.value.complete(list, res?.total || 0);
} catch (error) {
console.error('加载工单失败:', error);
pagingRef.value?.complete(false);
@@ -464,9 +471,37 @@ const queryUnifiedActions = async (item) => {
return null
}
+/** 驳回类动作编码:只有配置了这些动作,才展示「回退」按钮 */
+const REJECT_ACTION_CODES = ['REJECT', 'RETURN', 'RETURN_PREV']
+
+/** 待办列表:批量预取统一动作配置,挂在行数据上供按钮显隐复用 */
+const attachConfiguredActions = async (list) => {
+ if (!Array.isArray(list) || list.length === 0) return
+ await Promise.all(list.map(async (item) => {
+ item.configuredActions = await queryUnifiedActions(item)
+ }))
+}
+
+/** 回退按钮显隐:AI 工单仅当节点配置了回退类动作时才展示 */
+const showRejectButton = (item) => {
+ return Array.isArray(item?.configuredActions)
+ && item.configuredActions.some((action) => REJECT_ACTION_CODES.includes(action.code))
+}
+
+/** 主按钮文案:已配置统一动作时取配置的动作名称,未配置时沿用原有节点规则 */
+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
@@ -474,6 +509,23 @@ const handleUnifiedProcess = async (item) => {
handleProcess(item)
}
+/** 回退:已配置统一动作时走新逻辑,否则回退原有弹窗 */
+const handleUnifiedReject = async (item) => {
+ const actions = Array.isArray(item?.configuredActions)
+ ? item.configuredActions
+ : await queryUnifiedActions(item)
+ if (actions) {
+ const rejectActions = actions.filter((action) => REJECT_ACTION_CODES.includes(action.code))
+ if (rejectActions.length > 0) {
+ unifiedActionsRef.value?.open(item, rejectActions)
+ } else {
+ uni.showToast({ title: '当前节点未配置回退动作', icon: 'none' })
+ }
+ return
+ }
+ handleReject(item)
+}
+
/** 统一动作执行成功后刷新列表 */
const handleUnifiedSuccess = () => {
pagingRef.value && pagingRef.value.reload()
diff --git a/pages-sub/problem/regional-order-manage/index.vue b/pages-sub/problem/regional-order-manage/index.vue
index ae53e50..d139b59 100644
--- a/pages-sub/problem/regional-order-manage/index.vue
+++ b/pages-sub/problem/regional-order-manage/index.vue
@@ -109,7 +109,7 @@
回退
- 重新提交
+ 重新提交
{{ getProcessButtonText(item) }}
详情
diff --git a/pages-sub/problem/regional-order-manage/list-detail.vue b/pages-sub/problem/regional-order-manage/list-detail.vue
index e8febb7..d216aad 100644
--- a/pages-sub/problem/regional-order-manage/list-detail.vue
+++ b/pages-sub/problem/regional-order-manage/list-detail.vue
@@ -223,26 +223,29 @@
-
+
回退
重新提交
-
+
{{ processButtonText }}
+
+
+
{
return nextStepMap[orderDetail.value.taskKey]?.btnText
})
+/** 统一动作弹窗 */
+const unifiedActionsRef = ref(null)
+
+/** 处理:已配置统一动作时走统一接口,否则回退原有处理 */
+const handleUnifiedProcess = async (item: any) => {
+ const actions = Array.isArray(configuredActions.value)
+ ? configuredActions.value
+ : await queryUnifiedActions(item?.taskId)
+ if (actions) {
+ unifiedActionsRef.value?.open(item, actions)
+ return
+ }
+ handleProcess(item)
+}
+
+/** 回退:已配置统一动作时走统一接口,否则回退原有弹窗 */
+const handleUnifiedReject = async (item: any) => {
+ const actions = Array.isArray(configuredActions.value)
+ ? configuredActions.value
+ : await queryUnifiedActions(item?.taskId)
+ if (actions) {
+ const rejectActions = actions.filter((action: any) =>
+ REJECT_ACTION_CODES.includes(action.code)
+ )
+ if (rejectActions.length > 0) {
+ unifiedActionsRef.value?.open(item, rejectActions)
+ } else {
+ uni.showToast({ title: '当前节点未配置回退动作', icon: 'none' })
+ }
+ return
+ }
+ handleReject(item)
+}
+
+/** 统一动作执行成功后通知列表刷新并返回 */
+const handleUnifiedSuccess = () => {
+ if (eventChannel.value) {
+ eventChannel.value.emit('needRefresh')
+ }
+ uni.navigateBack({ delta: 1 })
+}
+
/**
* 核心:工单详情接口 workOrderDetailByID
* @param id 上一页传递的工单ID
diff --git a/pages-sub/problem/regional-order-manage/order-detail.vue b/pages-sub/problem/regional-order-manage/order-detail.vue
index cc0498f..245e44e 100644
--- a/pages-sub/problem/regional-order-manage/order-detail.vue
+++ b/pages-sub/problem/regional-order-manage/order-detail.vue
@@ -253,17 +253,17 @@
-
+
- 回退
重新提交
+ v-show="nextStepMap[orderDetail.taskKey]?.renewShow">重新提交
- {{
+ {{
processButtonText
}}
@@ -357,6 +357,9 @@
+
+
+
@@ -591,6 +594,48 @@ const processButtonText = computed(() => {
return nextStepMap[orderDetail.value.taskKey]?.btnText
})
+/** 统一动作弹窗 */
+const unifiedActionsRef = ref(null)
+
+/** 处理:已配置统一动作时走统一接口,否则回退原有处理 */
+const handleUnifiedProcess = async (item: any) => {
+ const actions = Array.isArray(configuredActions.value)
+ ? configuredActions.value
+ : await queryUnifiedActions(item?.taskId)
+ if (actions) {
+ unifiedActionsRef.value?.open(item, actions)
+ return
+ }
+ handleProcess(item)
+}
+
+/** 回退:已配置统一动作时走统一接口,否则回退原有弹窗 */
+const handleUnifiedReject = async (item: any) => {
+ const actions = Array.isArray(configuredActions.value)
+ ? configuredActions.value
+ : await queryUnifiedActions(item?.taskId)
+ if (actions) {
+ const rejectActions = actions.filter((action: any) =>
+ REJECT_ACTION_CODES.includes(action.code)
+ )
+ if (rejectActions.length > 0) {
+ unifiedActionsRef.value?.open(item, rejectActions)
+ } else {
+ uni.showToast({ title: '当前节点未配置回退动作', icon: 'none' })
+ }
+ return
+ }
+ handleReject(item)
+}
+
+/** 统一动作执行成功后通知列表刷新并返回 */
+const handleUnifiedSuccess = () => {
+ if (eventChannel.value) {
+ eventChannel.value.emit('needRefresh')
+ }
+ uni.navigateBack({ delta: 1 })
+}
+
/**
* 获取工单详情
*/
@@ -902,7 +947,7 @@ const handleAcceptModalConfirm = async () => {
await callApprovalApi(postData, item.taskKey);
showToast('提交成功', 'success');
handleAcceptModalCancel();
- eventChannel.vlue.emit('needRefresh');
+ eventChannel.value.emit('needRefresh');
uni.navigateBack({delta: 1});
} catch (error: any) {
console.error('验收失败:', error);
diff --git a/pages-sub/problem/work-order-manage/index.vue b/pages-sub/problem/work-order-manage/index.vue
index 22a1795..25f5bb0 100644
--- a/pages-sub/problem/work-order-manage/index.vue
+++ b/pages-sub/problem/work-order-manage/index.vue
@@ -107,7 +107,7 @@
重新提交
+ v-show="nextStepMap[item.taskKey]?.renewShow">重新提交
{{
diff --git a/pages-sub/problem/work-order-manage/order-detail.vue b/pages-sub/problem/work-order-manage/order-detail.vue
index f47b5b8..c20f60a 100644
--- a/pages-sub/problem/work-order-manage/order-detail.vue
+++ b/pages-sub/problem/work-order-manage/order-detail.vue
@@ -256,14 +256,14 @@
-
+
回退
重新提交
+ v-show="nextStepMap[orderDetail.taskKey]?.renewShow">重新提交
{{