Jelajahi Sumber

refactor: 重组管理后台菜单分组,将 15 个散列项收拢为 9 个逻辑分组

新增用户管理、财务管理、营销管理、运营管理四个分组;站点账户归入站点管理;
专属优惠活动移入营销管理;系统配置拆分为系统管理与运营管理;图标去重。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
skyline 18 jam lalu
induk
melakukan
c139c2a7c4
2 mengubah file dengan 276 tambahan dan 178 penghapusan
  1. 274 176
      admin-web/src/router/route.ts
  2. 2 2
      admin-web/src/views/admin/account/index.vue

+ 274 - 176
admin-web/src/router/route.ts

@@ -73,7 +73,18 @@ export const staticRoutes: Array<RouteRecordRaw> = [
 ];
 
 /**
- * 管理后台的路由    },
+ * 管理后台的路由
+ *
+ * 菜单分组说明:
+ *   信息总览   — 首页仪表盘
+ *   站点管理   — 站点清单、设备、站点账户、故障订阅
+ *   用户管理   — 用户列表、用户资金流
+ *   订单管理   — 订单记录
+ *   财务管理   — 充值、退款、提现、结算、分账、线下充值
+ *   营销管理   — 横幅广告、专属优惠活动
+ *   平台配置   — 平台费率、设备配置、充值配置
+ *   系统管理   — 运维用户、角色权限、数据字典、操作日志
+ *   运营管理   — 公告、消息、模板、FAQ、反馈
  */
 export const adminRoutes: Array<RouteRecordRaw> = [
     {
@@ -86,6 +97,8 @@ export const adminRoutes: Array<RouteRecordRaw> = [
             title: 'Yeswash管理后台'
         },
         children: [
+
+            // ==================== 1. 信息总览 ====================
             {
                 path: '/home',
                 name: 'adminHome1',
@@ -98,10 +111,10 @@ export const adminRoutes: Array<RouteRecordRaw> = [
                     isAffix: false,
                     isIframe: false,
                     icon: 'ele-Monitor',
-                    color: 'yellow'
-                    // perm:'admin'
                 }
             },
+
+            // ==================== 2. 站点管理 ====================
             {
                 path: '/station',
                 name: 'adminStation',
@@ -145,7 +158,22 @@ export const adminRoutes: Array<RouteRecordRaw> = [
                             isAffix: false,
                             isIframe: false,
                             perm: "equipment.list",
-                            icon: 'ele-User',
+                            icon: 'ele-Cpu',
+                        },
+                    },
+                    {
+                        path: '/station/account',
+                        name: 'adminStationAccount',
+                        component: () => import('/@/views/admin/station/account/index.vue'),
+                        meta: {
+                            title: '站点账户',
+                            isLink: '',
+                            isHide: false,
+                            isKeepAlive: true,
+                            isAffix: false,
+                            isIframe: false,
+                            perm: "equipment.list",
+                            icon: 'ele-Wallet',
                         },
                     },
                     {
@@ -163,24 +191,60 @@ export const adminRoutes: Array<RouteRecordRaw> = [
                             icon: 'ele-Bell',
                         },
                     },
-
                 ]
             },
+
+            // ==================== 3. 用户管理 ====================
             {
-                path: '/banner',
-                name: 'adminBanner',
-                component: () => import('/@/views/admin/banner/index.vue'),
+                path: '/user',
+                name: 'adminUser',
+                component: () => import('/@/layout/routerView/parent.vue'),
+                redirect: '/account',
                 meta: {
-                    title: '横幅广告',
+                    title: '用户管理',
                     isLink: '',
                     isHide: false,
                     isKeepAlive: true,
                     isAffix: false,
                     isIframe: false,
-                    icon: 'ele-PictureRounded',
-                    perm: "banner.list",
-                }
+                    icon: 'ele-User',
+                    perm: "account.list",
+                },
+                children: [
+                    {
+                        path: '/account',
+                        name: 'adminAccount',
+                        component: () => import('/@/views/admin/account/index.vue'),
+                        meta: {
+                            title: '用户列表',
+                            isLink: '',
+                            isHide: false,
+                            isKeepAlive: true,
+                            isAffix: false,
+                            isIframe: false,
+                            icon: 'ele-List',
+                            perm: "account.list",
+                        }
+                    },
+                    {
+                        path: '/walletFlow',
+                        name: 'adminFinanceWalletFlow',
+                        component: () => import('/@/views/admin/finance/wallet-flow.vue'),
+                        meta: {
+                            title: '用户资金流',
+                            isLink: '',
+                            isHide: false,
+                            isKeepAlive: true,
+                            isAffix: false,
+                            isIframe: false,
+                            icon: 'ele-Money',
+                            perm: "",
+                        },
+                    },
+                ]
             },
+
+            // ==================== 4. 订单管理 ====================
             {
                 path: '/ordering',
                 name: 'adminOrdering',
@@ -192,145 +256,172 @@ export const adminRoutes: Array<RouteRecordRaw> = [
                     isKeepAlive: true,
                     isAffix: false,
                     isIframe: false,
-                    icon: 'ele-Money',
+                    icon: 'ele-Document',
                     perm: "order.list",
                 }
             },
-            {
-                path: '/account',
-                name: 'adminAccount',
-                component: () => import('/@/views/admin/account/index.vue'),
-                meta: {
-                    title: '用户列表',
-                    isLink: '',
-                    isHide: false,
-                    isKeepAlive: true,
-                    isAffix: false,
-                    isIframe: false,
-                    icon: 'ele-User',
-                    perm: "account.list",
-                }
-            },
+
+            // ==================== 5. 财务管理 ====================
             {
                 path: '/finance',
                 name: 'adminFinance',
-                component: () => import('/@/views/admin/finance/index.vue'),
-                meta: {
-                    title: '充值记录',
-                    isLink: '',
-                    isHide: false,
-                    isKeepAlive: true,
-                    isAffix: false,
-                    isIframe: false,
-                    icon: 'ele-Wallet',
-                    perm: "recharge.list",
-                },
-            },
-            {
-                path: '/walletFlow',
-                name: 'adminFinanceWalletFlow',
-                component: () => import('/@/views/admin/finance/wallet-flow.vue'),
-                meta: {
-                    title: '用户资金流',
-                    isLink: '',
-                    isHide: false,
-                    isKeepAlive: true,
-                    isAffix: false,
-                    isIframe: false,
-                    icon: 'ele-Money',
-                    perm: "",
-                },
-            },
-            {
-                path: '/refund',
-                name: 'adminFinanceRefund',
-                component: () => import('/@/views/admin/finance/refund.vue'),
-                meta: {
-                    title: '退款清单',
-                    isLink: '',
-                    isHide: false,
-                    isKeepAlive: true,
-                    isAffix: false,
-                    isIframe: false,
-                    icon: 'ele-Wallet',
-                    perm: "refundLog.list",
-                },
-            },
-            {
-                path: '/withdraw',
-                name: 'adminFinanceWithdraw',
-                component: () => import('/@/views/admin/finance/withdraw.vue'),
-                meta: {
-                    title: '提现记录',
-                    isLink: '',
-                    isHide: false,
-                    isKeepAlive: true,
-                    isAffix: false,
-                    isIframe: false,
-                    icon: 'ele-Wallet',
-                    perm: "withdrawnRecord.list",
-                },
-            },
-            {
-                path: '/finance/settlement',
-                name: 'adminFinanceSettlement',
-                component: () => import('/@/views/admin/finance/settlement.vue'),
-                meta: {
-                    title: '结算记录',
-                    isLink: '',
-                    isHide: false,
-                    isKeepAlive: true,
-                    isAffix: false,
-                    isIframe: false,
-                    icon: 'ele-Calendar',
-                    perm: "settlement.list",
-                },
-            },
-            {
-                path: '/financeSR',
-                name: 'adminSplitRecord',
-                component: () => import('/@/views/admin/finance/splitRecord.vue'),
-                meta: {
-                    title: '分账记录',
-                    isLink: '',
-                    isHide: false,
-                    isKeepAlive: true,
-                    isAffix: false,
-                    isIframe: false,
-                    icon: 'ele-Wallet',
-                    perm: "recharge.list",
-                },
-            },
-            {
-                path: '/offlineRecharge',
-                name: 'adminOfflineRecharge',
-                component: () => import('/@/views/admin/finance/offline-recharge.vue'),
+                component: () => import('/@/layout/routerView/parent.vue'),
+                redirect: '/finance/recharge',
                 meta: {
-                    title: '线下充值',
+                    title: '财务管理',
                     isLink: '',
                     isHide: false,
                     isKeepAlive: true,
                     isAffix: false,
                     isIframe: false,
                     icon: 'ele-Money',
-                    perm: "offlineRecharge",
+                    perm: "recharge.list,refundLog.list,withdrawnRecord.list,settlement.list,offlineRecharge",
                 },
+                children: [
+                    {
+                        path: '/finance/recharge',
+                        name: 'adminFinanceRecharge',
+                        component: () => import('/@/views/admin/finance/index.vue'),
+                        meta: {
+                            title: '充值记录',
+                            isLink: '',
+                            isHide: false,
+                            isKeepAlive: true,
+                            isAffix: false,
+                            isIframe: false,
+                            icon: 'ele-Finished',
+                            perm: "recharge.list",
+                        },
+                    },
+                    {
+                        path: '/offlineRecharge',
+                        name: 'adminOfflineRecharge',
+                        component: () => import('/@/views/admin/finance/offline-recharge.vue'),
+                        meta: {
+                            title: '线下充值',
+                            isLink: '',
+                            isHide: false,
+                            isKeepAlive: true,
+                            isAffix: false,
+                            isIframe: false,
+                            icon: 'ele-Sell',
+                            perm: "offlineRecharge",
+                        },
+                    },
+                    {
+                        path: '/refund',
+                        name: 'adminFinanceRefund',
+                        component: () => import('/@/views/admin/finance/refund.vue'),
+                        meta: {
+                            title: '退款清单',
+                            isLink: '',
+                            isHide: false,
+                            isKeepAlive: true,
+                            isAffix: false,
+                            isIframe: false,
+                            icon: 'ele-Warning',
+                            perm: "refundLog.list",
+                        },
+                    },
+                    {
+                        path: '/withdraw',
+                        name: 'adminFinanceWithdraw',
+                        component: () => import('/@/views/admin/finance/withdraw.vue'),
+                        meta: {
+                            title: '提现记录',
+                            isLink: '',
+                            isHide: false,
+                            isKeepAlive: true,
+                            isAffix: false,
+                            isIframe: false,
+                            icon: 'ele-Wallet',
+                            perm: "withdrawnRecord.list",
+                        },
+                    },
+                    {
+                        path: '/finance/settlement',
+                        name: 'adminFinanceSettlement',
+                        component: () => import('/@/views/admin/finance/settlement.vue'),
+                        meta: {
+                            title: '结算记录',
+                            isLink: '',
+                            isHide: false,
+                            isKeepAlive: true,
+                            isAffix: false,
+                            isIframe: false,
+                            icon: 'ele-Calendar',
+                            perm: "settlement.list",
+                        },
+                    },
+                    {
+                        path: '/financeSR',
+                        name: 'adminSplitRecord',
+                        component: () => import('/@/views/admin/finance/splitRecord.vue'),
+                        meta: {
+                            title: '分账记录',
+                            isLink: '',
+                            isHide: false,
+                            isKeepAlive: true,
+                            isAffix: false,
+                            isIframe: false,
+                            icon: 'ele-Connection',
+                            perm: "recharge.list",
+                        },
+                    },
+                ]
             },
+
+            // ==================== 6. 营销管理 ====================
             {
-                path: '/station/account',
-                name: 'adminStationAccount',
-                component: () => import('/@/views/admin/station/account/index.vue'),
+                path: '/marketing',
+                name: 'adminMarketing',
+                component: () => import('/@/layout/routerView/parent.vue'),
+                redirect: '/banner',
                 meta: {
-                    title: '站点账户',
+                    title: '营销管理',
                     isLink: '',
                     isHide: false,
                     isKeepAlive: true,
                     isAffix: false,
                     isIframe: false,
-                    perm: "equipment.list",
-                    icon: 'ele-Wallet',
+                    icon: 'ele-Promotion',
+                    perm: "banner.list,promotion.list",
                 },
+                children: [
+                    {
+                        path: '/banner',
+                        name: 'adminBanner',
+                        component: () => import('/@/views/admin/banner/index.vue'),
+                        meta: {
+                            title: '横幅广告',
+                            isLink: '',
+                            isHide: false,
+                            isKeepAlive: true,
+                            isAffix: false,
+                            isIframe: false,
+                            icon: 'ele-PictureRounded',
+                            perm: "banner.list",
+                        }
+                    },
+                    {
+                        path: '/platform/rechargePromotion',
+                        name: 'adminPlatformRechargePromotion',
+                        component: () => import('/@/views/admin/platform/rechargePromotion/index.vue'),
+                        meta: {
+                            title: '专属优惠活动',
+                            isLink: '',
+                            isHide: false,
+                            isKeepAlive: true,
+                            isAffix: false,
+                            isIframe: false,
+                            perm: "promotion.list",
+                            icon: 'ele-Present',
+                        },
+                    },
+                ]
             },
+
+            // ==================== 7. 平台配置 ====================
             {
                 path: '/platform',
                 name: 'adminPlatform',
@@ -343,8 +434,8 @@ export const adminRoutes: Array<RouteRecordRaw> = [
                     isKeepAlive: true,
                     isAffix: false,
                     isIframe: false,
-                    icon: 'ele-Wallet',
-
+                    icon: 'ele-Setting',
+                    perm: "platformFeeRate.list,rechargeConfig.list",
                 },
                 children: [
                     {
@@ -359,7 +450,7 @@ export const adminRoutes: Array<RouteRecordRaw> = [
                             isAffix: false,
                             isIframe: false,
                             perm: "platformFeeRate.list",
-                            icon: 'ele-Wallet',
+                            icon: 'ele-Money',
                         },
                     },
                     {
@@ -374,7 +465,7 @@ export const adminRoutes: Array<RouteRecordRaw> = [
                             isAffix: false,
                             isIframe: false,
                             perm: "platformFeeRate.list",
-                            icon: 'ele-Wallet',
+                            icon: 'ele-Cpu',
                         },
                     },
                     {
@@ -389,40 +480,27 @@ export const adminRoutes: Array<RouteRecordRaw> = [
                             isAffix: false,
                             isIframe: false,
                             perm: "rechargeConfig.list",
-                            icon: 'ele-Money',
+                            icon: 'ele-Tickets',
                         },
                     },
-                    {
-                        path: '/platform/rechargePromotion',
-                        name: 'adminPlatformRechargePromotion',
-                        component: () => import('/@/views/admin/platform/rechargePromotion/index.vue'),
-                        meta: {
-                            title: '专属优惠活动',
-                            isLink: '',
-                            isHide: false,
-                            isKeepAlive: true,
-                            isAffix: false,
-                            isIframe: false,
-                            perm: "promotion.list",
-                            icon: 'ele-Gift',
-                        },
-                    }
                 ]
             },
+
+            // ==================== 8. 系统管理 ====================
             {
-                path: '/org',
-                name: 'adminOrg',
+                path: '/system',
+                name: 'adminSystem',
                 component: () => import('/@/layout/routerView/parent.vue'),
                 redirect: '/org/user',
                 meta: {
-                    title: '系统配置',
+                    title: '系统管理',
                     isLink: '',
                     isHide: false,
                     isKeepAlive: true,
                     isAffix: false,
                     isIframe: false,
                     icon: 'ele-Tools',
-                    perm: "user.list,role.list,dict.list,notice.list,message.list,log.list",
+                    perm: "user.list,role.list,dict.list",
                 },
                 children: [
                     {
@@ -471,35 +549,40 @@ export const adminRoutes: Array<RouteRecordRaw> = [
                         },
                     },
                     {
-                        path: '/org/faq',
-                        name: 'adminFaq',
-                        component: () => import('/@/views/admin/faq/index.vue'),
-                        meta: {
-                            title: '常见问题',
-                            isLink: '',
-                            isHide: false,
-                            isKeepAlive: true,
-                            isAffix: false,
-                            isIframe: false,
-                            icon: 'ele-Tickets',
-                            perm: "",
-                        },
-                    },
-                    {
-                        path: '/org/feedback',
-                        name: 'adminFeedback',
-                        component: () => import('/@/views/admin/feedback/index.vue'),
+                        path: '/org/log',
+                        name: 'adminLog',
+                        component: () => import('/@/views/admin/log/opt/index.vue'),
                         meta: {
-                            title: '反馈上报',
+                            title: '操作日志',
                             isLink: '',
                             isHide: false,
                             isKeepAlive: true,
                             isAffix: false,
                             isIframe: false,
-                            icon: 'ele-Tickets',
+                            icon: 'ele-Document',
                             perm: "",
                         },
                     },
+                ]
+            },
+
+            // ==================== 9. 运营管理 ====================
+            {
+                path: '/operation',
+                name: 'adminOperation',
+                component: () => import('/@/layout/routerView/parent.vue'),
+                redirect: '/org/notice',
+                meta: {
+                    title: '运营管理',
+                    isLink: '',
+                    isHide: false,
+                    isKeepAlive: true,
+                    isAffix: false,
+                    isIframe: false,
+                    icon: 'ele-Notification',
+                    perm: "",
+                },
+                children: [
                     {
                         path: '/org/notice',
                         name: 'adminNotice',
@@ -546,17 +629,32 @@ export const adminRoutes: Array<RouteRecordRaw> = [
                         },
                     },
                     {
-                        path: '/org/log',
-                        name: 'adminLog',
-                        component: () => import('/@/views/admin/log/opt/index.vue'),
+                        path: '/org/faq',
+                        name: 'adminFaq',
+                        component: () => import('/@/views/admin/faq/index.vue'),
                         meta: {
-                            title: '操作日志',
+                            title: '常见问题',
                             isLink: '',
                             isHide: false,
                             isKeepAlive: true,
                             isAffix: false,
                             isIframe: false,
-                            icon: 'ele-Document',
+                            icon: 'ele-Tickets',
+                            perm: "",
+                        },
+                    },
+                    {
+                        path: '/org/feedback',
+                        name: 'adminFeedback',
+                        component: () => import('/@/views/admin/feedback/index.vue'),
+                        meta: {
+                            title: '反馈上报',
+                            isLink: '',
+                            isHide: false,
+                            isKeepAlive: true,
+                            isAffix: false,
+                            isIframe: false,
+                            icon: 'ele-ChatLineSquare',
                             perm: "",
                         },
                     },

+ 2 - 2
admin-web/src/views/admin/account/index.vue

@@ -246,9 +246,9 @@ const loadData = (refresh: boolean = false) => {
 };
 
 const handleGotoRecharge=(row:any)=>{
-  router.push(`/finance?mobilePhone=${row.mobilePhone}`)
+  router.push(`/finance/recharge?mobilePhone=${row.mobilePhone}`)
   return
-  let url = router.resolve(`/finance?mobilePhone=${row.mobilePhone}`);
+  let url = router.resolve(`/finance/recharge?mobilePhone=${row.mobilePhone}`);
   window.open(url.href, '_blank');
 }