From 92a75a7b157e6fd6423df17cfd32015017bdb8c9 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期五, 14 八月 2026 09:21:58 +0800
Subject: [PATCH] update
---
frontend/src/config/adminMenu.js | 55 +++++++++++++++++++++++++++++++++++++------------------
1 files changed, 37 insertions(+), 18 deletions(-)
diff --git a/frontend/src/config/adminMenu.js b/frontend/src/config/adminMenu.js
index 2400e30..2aacfd3 100644
--- a/frontend/src/config/adminMenu.js
+++ b/frontend/src/config/adminMenu.js
@@ -7,45 +7,45 @@
})
export const adminMenu = [
- page('dashboard', '工作台', '/dashboard', { icon: 'Monitor', component: 'dashboard' }),
+ page('dashboard', '工作台', '/dashboard', { icon: 'Monitor', component: 'dashboard', permission: 'DASHBOARD' }),
{
code: 'users', title: '用户管理', icon: 'User', children: [
- page('visitor-list', '游客列表', '/visitors', { component: 'visitors' }),
+ page('visitor-list', '游客列表', '/visitors', { component: 'visitors', permission: 'VISITOR_LIST' }),
],
},
{
code: 'guides', title: '导游管理', icon: 'Guide', children: [
- page('guide-list', '导游列表', '/guides', { component: 'guides' }),
- page('guide-audit', '导游审核', '/guide-audits', { component: 'guideAudits' }),
- page('guide-team', '讲解队管理', '/guide-teams', { component: 'guideTeams' }),
+ page('guide-list', '导游列表', '/guides', { component: 'guides', permission: 'GUIDE_LIST' }),
+ page('guide-audit', '导游审核', '/guide-audits', { component: 'guideAudits', permission: 'GUIDE_AUDIT' }),
+ page('guide-team', '讲解队管理', '/guide-teams', { component: 'guideTeams', permission: 'GUIDE_TEAM' }),
],
},
{
code: 'orders', title: '订单管理', icon: 'Tickets', children: [
- page('order-list', '订单列表', '/orders', { component: 'orders' }),
+ page('order-list', '订单列表', '/orders', { component: 'orders', permission: 'ORDER_LIST' }),
],
},
{
code: 'operations', title: '运营管理', icon: 'Operation', children: [
- page('city-list', '城市管理', '/operations/cities', { component: 'cities' }),
- page('scenic-list', '景区管理', '/operations/scenic-spots', { component: 'scenicSpots' }),
- page('review-list', '评价管理', '/operations/reviews', { component: 'reviews' }),
- page('feedback-list', '反馈管理', '/operations/feedback', { component: 'feedback' }),
- page('platform-settings', '平台设置', '/operations/platform-settings', { component: 'platformSettings' }),
- page('agreement-settings', '协议设置', '/operations/agreements', { component: 'agreements' }),
+ page('city-list', '城市管理', '/operations/cities', { component: 'cities', permission: 'CITY_LIST' }),
+ page('scenic-list', '景区管理', '/operations/scenic-spots', { component: 'scenicSpots', permission: 'SCENIC_LIST' }),
+ page('review-list', '评价管理', '/operations/reviews', { component: 'reviews', permission: 'REVIEW_LIST' }),
+ page('feedback-list', '反馈管理', '/operations/feedback', { component: 'feedback', permission: 'FEEDBACK_LIST' }),
+ page('platform-settings', '平台设置', '/operations/platform-settings', { component: 'platformSettings', permission: 'PLATFORM_SETTINGS' }),
+ page('agreement-settings', '协议设置', '/operations/agreements', { component: 'agreements', permission: 'AGREEMENT_SETTINGS' }),
],
},
{
code: 'finance', title: '财务管理', icon: 'Wallet', children: [
- page('finance-detail', '财务详情', '/finance/details', { component: 'financeLedger' }),
- page('finance-refund', '财务详情-退款', '/finance/refunds', { component: 'financeLedger' }),
- page('withdrawal-list', '提现管理', '/finance/withdrawals', { component: 'withdrawals' }),
+ page('finance-detail', '财务详情', '/finance/details', { component: 'financeLedger', permission: 'FINANCE_DETAIL' }),
+ page('finance-refund', '财务详情-退款', '/finance/refunds', { component: 'financeLedger', permission: 'FINANCE_REFUND' }),
+ page('withdrawal-list', '提现管理', '/finance/withdrawals', { component: 'withdrawals', permission: 'WITHDRAWAL_LIST' }),
],
},
{
code: 'system', title: '系统设置', icon: 'Setting', children: [
- page('role-list', '角色管理', '/system/roles', { component: 'roles' }),
- page('employee-list', '员工管理', '/system/employees', { component: 'employees' }),
+ page('role-list', '角色管理', '/system/roles', { component: 'roles', permission: 'ROLE_LIST' }),
+ page('employee-list', '员工管理', '/system/employees', { component: 'employees', permission: 'EMPLOYEE_LIST' }),
],
},
]
@@ -74,7 +74,7 @@
path: item.path.slice(1),
name: item.code,
component: componentLoaders[item.component],
- meta: { title: item.title },
+ meta: { title: item.title, permission: item.permission },
props: item.component === 'placeholder'
? { title: item.title, description: item.description, endpoint: item.endpoint }
: undefined,
@@ -88,3 +88,22 @@
export const getExpandedMenuCodes = (items = adminMenu) => items.flatMap((item) => (
item.children ? [item.code, ...getExpandedMenuCodes(item.children)] : []
))
+
+export const hasPermission = (menuCodes, permission) => (
+ !permission || new Set(menuCodes || []).has(permission)
+)
+
+export const filterAdminMenu = (menuCodes, items = adminMenu) => items.flatMap((item) => {
+ if (item.children) {
+ const children = filterAdminMenu(menuCodes, item.children)
+ return children.length ? [{ ...item, children }] : []
+ }
+ return hasPermission(menuCodes, item.permission) ? [item] : []
+})
+
+export const firstPermittedPath = (menuCodes) => {
+ const firstItem = filterAdminMenu(menuCodes)
+ .flatMap((item) => item.children || [item])
+ .find((item) => item.path)
+ return firstItem?.path || null
+}
--
Gitblit v1.7.1