From d32b2c0c7c35ad9498d680ca96a810e759f569c0 Mon Sep 17 00:00:00 2001 From: zhangrenyuan <18990852002@163.com> Date: Wed, 4 Feb 2026 16:15:23 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat(=E6=B6=88=E6=81=AF=E8=B7=B3=E8=BD=AC):?= =?UTF-8?q?=20=E6=94=AF=E6=8C=81=E4=BB=8E=E6=B6=88=E6=81=AF=E8=B7=B3?= =?UTF-8?q?=E8=BD=AC=E5=88=B0=E6=94=B6=E6=AC=BE=E8=AF=A6=E6=83=85=E9=A1=B5?= =?UTF-8?q?=E6=97=B6=E8=87=AA=E5=8A=A8=E5=88=87=E6=8D=A2=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在消息点击处理中,根据消息状态决定目标标签页,并通过路由参数传递 在收款详情页组件中监听路由参数变化并应用对应的标签页状态 --- src/views/home.vue | 10 ++++++++-- .../moneyManage/receiveDetail/receiveFinance.vue | 18 ++++++++++++++++++ src/views/moneyManage/receiveDetail/receiveManage.vue | 19 +++++++++++++++++++ 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/src/views/home.vue b/src/views/home.vue index 67a6c1d..04a8685 100644 --- a/src/views/home.vue +++ b/src/views/home.vue @@ -291,7 +291,7 @@ const scrollToTop = () => scrollContainer.value?.scrollTo({top: 0, behavior: 'sm const getPathByQueryId = (queryId) => { const qid = Number(queryId) if (!Number.isFinite(qid)) return null - + // 获取所有路由 const matchedRoutes = router.getRoutes().filter(r => { const pid = r.meta?.permissionId if (Array.isArray(pid)) return pid.includes(qid) @@ -320,7 +320,13 @@ const handleMessageClick = async (item) => { if (res.code === 200) { closeMessageDialog() const targetPath = item?.queryId ? getPathByQueryId(item.queryId) : null - await router.push(targetPath || getOrderPage(item.status) || '/noPermission') + const messageStatus = Number(item?.status) + const tab = messageStatus === 7 ? 'pass' : (messageStatus === 1 ? 'wait' : null) + if (targetPath && tab && (targetPath.includes('/moneyManage/receiveDetail/receiveFinance') || targetPath.includes('/moneyManage/receiveDetail/receiveManager'))) { + await router.push({ path: targetPath, query: { tab } }) + } else { + await router.push(targetPath || getOrderPage(item.status) || '/noPermission') + } await getMessage() ElMessage.success(t('elmessage.jumpSuccess')) } else { diff --git a/src/views/moneyManage/receiveDetail/receiveFinance.vue b/src/views/moneyManage/receiveDetail/receiveFinance.vue index fe97ffe..97c0933 100644 --- a/src/views/moneyManage/receiveDetail/receiveFinance.vue +++ b/src/views/moneyManage/receiveDetail/receiveFinance.vue @@ -658,6 +658,7 @@ import { editFormRule } from './utils/recriveFormRules.js'; import { productList, MarketNameForId, CurrencyForId, marketList, normalizeSubmitterMarket } from './utils/staticData.js'; import { useAdminStore } from '@/store/index.js'; import { hasMenuPermission } from '@/utils/menuTreePermission.js'; +import { useRoute } from 'vue-router'; // 国际化 import { useI18n } from 'vue-i18n' @@ -666,6 +667,7 @@ const { t } = useI18n() // ===================== 1. 核心状态管理(仅地区财务) ===================== const adminStore = useAdminStore(); const { menuTree } = storeToRefs(adminStore); +const route = useRoute(); // 角色固定:地区财务(caiwu=true,其他角色关闭) const kefu = ref(false); @@ -689,6 +691,15 @@ const getTime = ref([]); // 标签页:默认“待审核” const activeTab = ref('wait'); +const applyTabFromRoute = (tabRaw) => { + const tab = typeof tabRaw === 'string' ? tabRaw : null; + if (tab !== 'wait' && tab !== 'pass' && tab !== 'reject' && tab !== 'done') return false; + if (tab === activeTab.value) return false; + activeTab.value = tab; + pageInfo.value.pageNum = 1; + return true; +}; + // 审核弹窗状态 const auditFormisible = ref(false); const auditFormData = ref({}); @@ -1082,6 +1093,12 @@ const navigateTo = async (tab) => { await getlist(); }; +watch(() => route.query?.tab, async (tab) => { + if (applyTabFromRoute(tab)) { + await getlist(); + } +}); + // 2.4 审核功能 // 打开审核弹窗 const openAuditForm = (row) => { @@ -1361,6 +1378,7 @@ const throttledsubmitRefund = _.throttle(submitRefund, 5000, { onMounted(async () => { await getAdminData(); await getActivitys(); + applyTabFromRoute(route.query?.tab); // 初始化加载地区财务订单数据 await getlist(); diff --git a/src/views/moneyManage/receiveDetail/receiveManage.vue b/src/views/moneyManage/receiveDetail/receiveManage.vue index fe97ffe..77e16df 100644 --- a/src/views/moneyManage/receiveDetail/receiveManage.vue +++ b/src/views/moneyManage/receiveDetail/receiveManage.vue @@ -658,6 +658,7 @@ import { editFormRule } from './utils/recriveFormRules.js'; import { productList, MarketNameForId, CurrencyForId, marketList, normalizeSubmitterMarket } from './utils/staticData.js'; import { useAdminStore } from '@/store/index.js'; import { hasMenuPermission } from '@/utils/menuTreePermission.js'; +import { useRoute } from 'vue-router'; // 国际化 import { useI18n } from 'vue-i18n' @@ -666,6 +667,7 @@ const { t } = useI18n() // ===================== 1. 核心状态管理(仅地区财务) ===================== const adminStore = useAdminStore(); const { menuTree } = storeToRefs(adminStore); +const route = useRoute(); // 角色固定:地区财务(caiwu=true,其他角色关闭) const kefu = ref(false); @@ -689,6 +691,15 @@ const getTime = ref([]); // 标签页:默认“待审核” const activeTab = ref('wait'); +const applyTabFromRoute = (tabRaw) => { + const tab = typeof tabRaw === 'string' ? tabRaw : null; + if (tab !== 'wait' && tab !== 'pass' && tab !== 'reject' && tab !== 'done') return false; + if (tab === activeTab.value) return false; + activeTab.value = tab; + pageInfo.value.pageNum = 1; + return true; +}; + // 审核弹窗状态 const auditFormisible = ref(false); const auditFormData = ref({}); @@ -1079,9 +1090,16 @@ const reset = () => { // 2.3 标签页切换 const navigateTo = async (tab) => { activeTab.value = tab; + pageInfo.value.pageNum = 1; await getlist(); }; +watch(() => route.query?.tab, async (tab) => { + if (applyTabFromRoute(tab)) { + await getlist(); + } +}); + // 2.4 审核功能 // 打开审核弹窗 const openAuditForm = (row) => { @@ -1361,6 +1379,7 @@ const throttledsubmitRefund = _.throttle(submitRefund, 5000, { onMounted(async () => { await getAdminData(); await getActivitys(); + applyTabFromRoute(route.query?.tab); // 初始化加载地区财务订单数据 await getlist(); From a7b67a31daf58bce6ba6564f243dc979858c258b Mon Sep 17 00:00:00 2001 From: zhangrenyuan <18990852002@163.com> Date: Wed, 4 Feb 2026 16:56:39 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix(=E9=A6=96=E9=A1=B5=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E8=B7=B3=E8=BD=AC):=20=E4=BF=AE=E5=A4=8D=E6=94=B6=E6=AC=BE?= =?UTF-8?q?=E5=A4=84=E7=90=86=E6=B6=88=E6=81=AF=E8=B7=B3=E8=BD=AC=E6=97=B6?= =?UTF-8?q?tab=E5=8F=82=E6=95=B0=E9=94=99=E8=AF=AF=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复消息状态与目标路径匹配逻辑,确保只有对应角色的收款处理消息才设置tab为'pass'。避免非相关消息跳转时携带错误的查询参数。 --- src/views/home.vue | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/views/home.vue b/src/views/home.vue index 04a8685..5de3201 100644 --- a/src/views/home.vue +++ b/src/views/home.vue @@ -321,8 +321,16 @@ const handleMessageClick = async (item) => { closeMessageDialog() const targetPath = item?.queryId ? getPathByQueryId(item.queryId) : null const messageStatus = Number(item?.status) - const tab = messageStatus === 7 ? 'pass' : (messageStatus === 1 ? 'wait' : null) - if (targetPath && tab && (targetPath.includes('/moneyManage/receiveDetail/receiveFinance') || targetPath.includes('/moneyManage/receiveDetail/receiveManager'))) { + + // 1是代表收款处理的已通过,7是代表的收款处理(负责人)的已通过 + let tab = null + if (messageStatus === 1 && targetPath?.includes('/moneyManage/receiveDetail/receiveFinance')) { + tab = 'pass' + } else if (messageStatus === 7 && targetPath?.includes('/moneyManage/receiveDetail/receiveManager')) { + tab = 'pass' + } + + if (targetPath && tab) { await router.push({ path: targetPath, query: { tab } }) } else { await router.push(targetPath || getOrderPage(item.status) || '/noPermission')