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