diff --git a/src/components/locales/lang/en.js b/src/components/locales/lang/en.js index 1b5fa53..dd6843e 100644 --- a/src/components/locales/lang/en.js +++ b/src/components/locales/lang/en.js @@ -1024,7 +1024,7 @@ export default { market: "Region", registerTime: "Registered at", }, - orderNeedsReview: "A receipt order requires review", + // orderNeedsReview: "A receipt order requires review", messageGroups: { today: "Today", yesterday: "Yesterday", diff --git a/src/components/locales/lang/zh-CN.js b/src/components/locales/lang/zh-CN.js index a8b9a99..17da0eb 100644 --- a/src/components/locales/lang/zh-CN.js +++ b/src/components/locales/lang/zh-CN.js @@ -1035,7 +1035,7 @@ export default { market: "地区", registerTime: "注册时间", }, - orderNeedsReview: "用户有条收款订单需审核", + // orderNeedsReview: "用户有条收款订单需审核", messageGroups: { today: "今天", yesterday: "昨天", diff --git a/src/router/index.js b/src/router/index.js index b0a927a..d739a6f 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -307,27 +307,27 @@ const routes = [ { path: 'receiveDetail', name: "receiveDetail", - meta: {permissionId: 74}, + meta: {permissionId: 59}, children: [ // 收款提交 { path: 'receiveService', name: "receiveService", component: () => import("../views/moneyManage/receiveDetail/receiveService.vue"), - meta: {permissionId: 60} + meta: {permissionId: [60, 61, 62, 63, 64, 65, 66]} }, // 收款处理(负责人) { path: 'receiveManager', name: "receiveManager", component: () => import("../views/moneyManage/receiveDetail/receiveManage.vue"), - meta: {permissionId: [67, 79]} + meta: {permissionId: [79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90]} }, {//收款处理 path: 'receiveFinance', name: "receiveFinance", component: () => import("../views/moneyManage/receiveDetail/receiveFinance.vue"), - meta: {permissionId: [67, 79]} + meta: {permissionId: [67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78]} }, //总部管理员及财务(移除) // { @@ -350,28 +350,28 @@ const routes = [ path: 'refundService', name: "refundService", component: () => import("../views/moneyManage/refundDetail/refundService.vue"), - meta: {permissionId: 99} + meta: {permissionId: [99, 100, 101, 102]} }, // 退款审批 { path: 'refundFinance', name: "refundFinance", component: () => import("../views/moneyManage/refundDetail/refundFinance.vue"), - meta: {permissionId: 103} + meta: {permissionId: [103, 104, 105, 106]} }, // 退款审批(负责人) { path: 'refundCharge', name: "refundCharge", component: () => import("../views/moneyManage/refundDetail/refundCharge.vue"), - meta: {permissionId: 107} + meta: {permissionId: [107, 108, 109, 110]} }, // 退款审批(总部财务) { path: 'refundHeader', name: "refundHeader", component: () => import("../views/moneyManage/refundDetail/refundHeader.vue"), - meta: {permissionId: 111} + meta: {permissionId: [111, 112, 113, 114]} }, ] }, @@ -380,7 +380,7 @@ const routes = [ path: 'executor', name: "executor", component: () => import("../views/moneyManage/executor/executor.vue"), - meta: {permissionId: 115} + meta: {permissionId: [115, 116, 117, 118]} }, // 财务核算 { @@ -579,11 +579,12 @@ router.afterEach(async (to) => { // 接收to参数获取当前路由信息 // 存入全局状态,供所有页面访问 const messageStore = useMessageStore(); // 过滤 flag=1的消息 - newMessageRes.data = newMessageRes.data.filter(item => item.flag !== 1); - - messageStore.setMessages(newMessageRes.data); + const list = Array.isArray(newMessageRes.data) + ? newMessageRes.data + : (Array.isArray(newMessageRes.data?.list) ? newMessageRes.data.list : []); + messageStore.setMessages(list.filter(item => item.flag !== 1)); } catch (error) { console.error('获取消息失败:', error); } }); -export default router; \ No newline at end of file +export default router; diff --git a/src/utils/goToCheck.js b/src/utils/goToCheck.js index c9d40b6..e67f6ef 100644 --- a/src/utils/goToCheck.js +++ b/src/utils/goToCheck.js @@ -33,4 +33,44 @@ export function getOrderPage(status) { } // 未知状态返回工作台 return '/workbench'; -} \ No newline at end of file +} + +function toNumberOrNull(value) { + if (value === null || value === undefined) return null; + const num = typeof value === 'number' ? value : Number(String(value).trim()); + return Number.isFinite(num) ? num : null; +} + +const queryIdRouteNameMap = { + 6: 'rechargeAudit', + 7: 'rechargeAudit', + 8: 'rechargeAudit', + 9: 'rechargeAudit', + 10: 'rechargeAudit', + 11: 'rechargeAudit', + 12: 'rechargeAudit', + 13: 'refundAudit', + 14: 'refundAudit', + 15: 'refundAudit', + 16: 'refundAudit', + 17: 'refundAudit', + 18: 'refundAudit', + 19: 'refundAudit' +}; + +export function getMessageJumpTarget(message) { + const permissionId = toNumberOrNull(message?.queryId ?? message?.menuId ?? message?.permissionId); + if (permissionId !== null) { + const routeName = queryIdRouteNameMap[permissionId]; + if (routeName) return { name: routeName }; + } + + const type = toNumberOrNull(message?.type); + if (type === 0) return { name: 'rechargeAudit' }; + if (type === 1) return { name: 'refundAudit' }; + + const status = toNumberOrNull(message?.status); + if (status !== null) return getOrderPage(status); + + return '/workbench'; +} diff --git a/src/views/home.vue b/src/views/home.vue index 650e8d6..e88d654 100644 --- a/src/views/home.vue +++ b/src/views/home.vue @@ -211,7 +211,8 @@ const getMessage = async () => { }); if (res?.data) { - const cleanList = res.data.filter(i => i.flag !== 1) + const list = Array.isArray(res.data) ? res.data : (Array.isArray(res.data?.list) ? res.data.list : []) + const cleanList = list.filter(i => i.flag !== 1) messageStore.setMessages(cleanList) } } catch (e) { @@ -282,6 +283,27 @@ const toggleShowAll = () => showAll.value = !showAll.value const scrollContainer = ref(null) const scrollToTop = () => scrollContainer.value?.scrollTo({top: 0, behavior: 'smooth'}) +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) + return pid === qid + }) + + if (!matchedRoutes.length) return null + + matchedRoutes.sort((a, b) => { + const aDepth = typeof a.path === 'string' ? a.path.split('/').length : 0 + const bDepth = typeof b.path === 'string' ? b.path.split('/').length : 0 + return bDepth - aDepth + }) + + return matchedRoutes[0]?.path || null +} + // 点击消息 → 已读 + 跳转 const handleMessageClick = async (item) => { const res = await API({ @@ -292,7 +314,8 @@ const handleMessageClick = async (item) => { if (res.code === 200) { closeMessageDialog() - await router.push(getOrderPage(item.status)) + const targetPath = item?.queryId ? getPathByQueryId(item.queryId) : null + await router.push(targetPath || getOrderPage(item.status) || '/noPermission') await getMessage() ElMessage.success(t('elmessage.jumpSuccess')) } else { @@ -504,7 +527,7 @@ onMounted(() => getMessage())
[{{ item.marketName }}]
-
[{{item.name}}{{ item.jwcode }}]{{ t('home.orderNeedsReview') }}
+
[{{item.name}}{{ item.jwcode }}]{{ item.desc}}