From bdd037eb6d52c1b332a47989e194d03456d90bb2 Mon Sep 17 00:00:00 2001 From: lihuilin Date: Wed, 17 Sep 2025 13:57:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9D=83=E9=99=90=E5=88=97=E8=A1=A8=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/router/index.js | 454 +++++++++++++++++++++------------------- src/utils/menuTreePermission.js | 169 ++++++++------- src/utils/menuUtils.js | 4 +- 3 files changed, 324 insertions(+), 303 deletions(-) diff --git a/src/router/index.js b/src/router/index.js index 73cd248..9f80aa1 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -1,7 +1,7 @@ -import {createRouter, createWebHashHistory} from 'vue-router'; +import { createRouter, createWebHashHistory } from 'vue-router'; import axios from "axios"; -import {storeToRefs} from "pinia"; -import {useAdminStore} from "@/store/index.js"; +import { storeToRefs } from "pinia"; +import { useAdminStore } from "@/store/index.js"; // 路由定义(包含权限映射 meta.permissionId) @@ -16,264 +16,276 @@ const routes = [ component: () => import("../views/login.vue"), }, { - meta: {requireAuth: true}, + meta: { requireAuth: true }, path: '/', component: () => import("../views/home.vue"), children: [ // 工作台 { - path: '/workspace', - name: "workspace", + path: 'workbench', + name: "workbench", component: () => import("../views/workspace/index.vue"), - meta: {permissionId: 10} // 对应"工作台展示"id=10 + meta: { permissionId: 10 } // 对应"工作台展示"id=10 }, - - // 审核 { - path: '/audit', - name: "audit", - component: () => import("../views/audit/gold/audit.vue"), - meta: {permissionId: 40}, - // redirect: '/index', + path: '/goldManage', + name: 'goldManage', children: [ - // 充值审核 - { - path: 'rechargeAudit', - name: "rechargeAudit", - component: () => import("../views/audit/gold/rechargeAudit.vue"), - meta: {permissionId: [11, 12]} // 对应"查看充值审核"id=11、"充值审批"id=12 - }, - // 退款审核 + // 审核 { - path: 'refundAudit', - name: "refundAudit", - component: () => import("../views/audit/gold/refundAudit.vue"), - meta: {permissionId: [13, 14]} // 对应"查看退款审核"id=13、"退款审批"id=14 + path: '/audit', + name: "audit", + component: () => import("../views/audit/gold/audit.vue"), + meta: { permissionId: 40 }, + // redirect: '/index', + children: [ + // 充值审核 + { + path: 'rechargeAudit', + name: "rechargeAudit", + component: () => import("../views/audit/gold/rechargeAudit.vue"), + meta: { permissionId: [11, 12] } // 对应"查看充值审核"id=11、"充值审批"id=12 + }, + // 退款审核 + { + path: 'refundAudit', + name: "refundAudit", + component: () => import("../views/audit/gold/refundAudit.vue"), + meta: { permissionId: [13, 14] } // 对应"查看退款审核"id=13、"退款审批"id=14 + }, + ] + }, { + path: 'beanAudit', + name: "beanAudit", + component: () => import("../views/audit/bean/beanAudit.vue"), + meta: { permissionId: [54, 55] } }, - ] - },{ - path: 'beanAudit', - name: "beanAudit", - component: () => import("../views/audit/bean/beanAudit.vue"), - meta: {permissionId: [54,55]} - }, - // 金币消耗 - { - path: '/coinConsume', - name: "coinConsume", - component: () => import("../views/consume/gold/coinConsume.vue"), - // redirect: '/coinConsume/add', - meta: {permissionId: 6}, - children: [ - // 金币新增消耗 + // 金币消耗 { - path: 'add', - name: "addCoinConsume", - component: () => import("../views/consume/gold/addCoinConsume.vue"), - meta: {permissionId: 19} // 对应"提交金币消耗"id=19 + path: '/coinConsume', + name: "coinConsume", + component: () => import("../views/consume/gold/coinConsume.vue"), + // redirect: '/coinConsume/add', + meta: { permissionId: 6 }, + children: [ + // 金币新增消耗 + { + path: 'add', + name: "addCoinConsume", + component: () => import("../views/consume/gold/addCoinConsume.vue"), + meta: { permissionId: 19 } // 对应"提交金币消耗"id=19 + }, + // 金币消耗明细详情 + { + path: 'detail', + name: "coinConsumeDetail", + component: () => import("../views/consume/gold/coinConsumeDetail.vue"), + meta: { permissionId: 20 } // 对应"查看金币消耗明细"id=20 + } + ] }, - // 金币消耗明细详情 + // 金豆消耗 { - path: 'detail', - name: "coinConsumeDetail", - component: () => import("../views/consume/gold/coinConsumeDetail.vue"), - meta: {permissionId: 20} // 对应"查看金币消耗明细"id=20 - } - ] - }, - // 金豆消耗 - { - path: '/beanConsume', - name: "beanConsume", - component: () => import("../views/consume/bean/beanConsume.vue"), - meta: {permissionId: 42}, - children: [ - // 金豆新增消耗 - { - path: 'add', - name: "addBeanConsume", - component: () => import("../views/consume/bean/addBeanConsume.vue"), - meta: {permissionId: 49} // 对应"提交金豆消耗"id=49 + path: '/beanConsume', + name: "beanConsume", + component: () => import("../views/consume/bean/beanConsume.vue"), + meta: { permissionId: 42 }, + children: [ + // 金豆新增消耗 + { + path: 'add', + name: "addBeanConsume", + component: () => import("../views/consume/bean/addBeanConsume.vue"), + meta: { permissionId: 49 } // 对应"提交金豆消耗"id=49 + }, + // 直播 + { + path: 'live', + name: "liveStream", + component: () => import("../views/consume/bean/liveStream.vue"), + meta: { permissionId: 50 } // 对应"直播"id=50 + }, + // 铁粉 + { + path: 'fan', + name: "dieHardFan", + component: () => import("../views/consume/bean/dieHardFan.vue"), + meta: { permissionId: 51 } // 对应"铁粉"id=51 + }, + // 文章视频 + { + path: 'article', + name: "articleVideo", + component: () => import("../views/consume/bean/articleVideo.vue"), + meta: { permissionId: 52 } // 对应"文章视频"id=52 + } + + ] }, - // 直播 + + // 汇率管理 { - path: 'live', - name: "liveStream", - component: () => import("../views/consume/bean/liveStream.vue"), - meta: {permissionId: 50} // 对应"直播"id=50 + path: '/rate', + name: "rate", + component: () => import("../views/managerecharge/rate.vue"), + meta: { permissionId: [15, 16] } // 对应"汇率查看"id=15、"汇率修改"id=16 }, - // 铁粉 + // 金币充值 { - path: 'fan', - name: "dieHardFan", - component: () => import("../views/consume/bean/dieHardFan.vue"), - meta: {permissionId: 51} // 对应"铁粉"id=51 + path: '/coinRecharge', + name: "coinRecharge", + component: () => import("../views/recharge/gold/coinRecharge.vue"), + // redirect: '/coinRecharge/add', + children: [ + // 金币新增充值 + { + path: 'add', + name: "addCoinRecharge", + component: () => import("../views/recharge/gold/addCoinRecharge.vue"), + meta: { permissionId: 17 } // 对应"提交金币充值"id=17 + }, + // 金币充值明细详情 + { + path: 'detail', + name: "coinRechargeDetail", + component: () => import("../views/recharge/gold/coinRechargeDetail.vue"), + meta: { permissionId: 18 } // 对应"查看金币充值明细"id=18 + } + ] }, - // 文章视频 - { - path: 'article', - name: "articleVideo", - component: () => import("../views/consume/bean/articleVideo.vue"), - meta: {permissionId: 52} // 对应"文章视频"id=52 - } - - ] - }, - // 汇率管理 - { - path: '/rate', - name: "rate", - component: () => import("../views/managerecharge/rate.vue"), - meta: {permissionId: [15, 16]} // 对应"汇率查看"id=15、"汇率修改"id=16 - }, - // 金币充值 - { - path: '/coinRecharge', - name: "coinRecharge", - component: () => import("../views/recharge/gold/coinRecharge.vue"), - // redirect: '/coinRecharge/add', - children: [ - // 金币新增充值 + // 金豆充值 { - path: 'add', - name: "addCoinRecharge", - component: () => import("../views/recharge/gold/addCoinRecharge.vue"), - meta: {permissionId: 17} // 对应"提交金币充值"id=17 + path: '/beanRecharge', + name: "beanRecharge", + component: () => import("../views/recharge/bean/beanRecharge.vue"), + // redirect: '/coinRecharge/add', + children: [ + // 金豆新增充值 + { + path: 'add', + name: "addBeanRecharge", + component: () => import("../views/recharge/bean/addBeanRecharge.vue"), + meta: { permissionId: 46 } // 对应"提交金豆充值"id=46 + }, + // 金豆系统充值 + { + path: 'system', + name: "beanSystemRecharge", + component: () => import("../views/recharge/bean/beanSystemRecharge.vue"), + meta: { permissionId: 47 } // 对应"查看金豆系统充值明细"id=47 + }, + // 金豆线上充值 + { + path: 'online', + name: "beanOnlineRecharge", + component: () => import("../views/recharge/bean/beanOnlineRecharge.vue"), + meta: { permissionId: 48 } // 对应"查看金豆线上充值明细"id=48 + } + ] }, - // 金币充值明细详情 - { - path: 'detail', - name: "coinRechargeDetail", - component: () => import("../views/recharge/gold/coinRechargeDetail.vue"), - meta: {permissionId: 18} // 对应"查看金币充值明细"id=18 - } - ] - }, - // 金豆充值 - { - path: '/beanRecharge', - name: "beanRecharge", - component: () => import("../views/recharge/bean/beanRecharge.vue"), - // redirect: '/coinRecharge/add', - children: [ - // 金豆新增充值 - { - path: 'add', - name: "addBeanRecharge", - component: () => import("../views/recharge/bean/addBeanRecharge.vue"), - meta: {permissionId: 46} // 对应"提交金豆充值"id=46 - }, - // 金豆系统充值 + // 金币退款 { - path: 'system', - name: "beanSystemRecharge", - component: () => import("../views/recharge/bean/beanSystemRecharge.vue"), - meta: {permissionId: 47} // 对应"查看金豆系统充值明细"id=47 + path: '/coinRefund', + name: "coinRefund", + component: () => import("../views/refund/gold/coinRefund.vue"), + // redirect: '/coinRefund/add', + meta: { permissionId: 7 }, + children: [ + // 金币新增退款 + { + path: 'add', + name: "addCoinRefund", + component: () => import("../views/refund/gold/addCoinRefund.vue"), + meta: { permissionId: 21 } // 对应"提交金币退款"id=21 + }, + // 金币退款明细详情 + { + path: 'detail', + name: "coinRefundDetail", + component: () => import("../views/refund/gold/coinRefundDetail.vue"), + meta: { permissionId: 22 } // 对应"查看金币退款明细"id=22 + }, + { + path: 'addRefund', + name: "addNewCoinRefund", + component: () => import("../views/refund/gold/addNewCoinRefund.vue"), + meta: { permissionId: 58 } + } + ] }, - // 金豆线上充值 - { - path: 'online', - name: "beanOnlineRecharge", - component: () => import("../views/recharge/bean/beanOnlineRecharge.vue"), - meta: {permissionId: 48} // 对应"查看金豆线上充值明细"id=48 - } - ] - }, - // 金币退款 - { - path: '/coinRefund', - name: "coinRefund", - component: () => import("../views/refund/gold/coinRefund.vue"), - // redirect: '/coinRefund/add', - meta: {permissionId: 7}, - children: [ - // 金币新增退款 + // 客户账户明细 { - path: 'add', - name: "addCoinRefund", - component: () => import("../views/refund/gold/addCoinRefund.vue"), - meta: {permissionId: 21} // 对应"提交金币退款"id=21 + path: '/usergold', + name: "usergold", + component: () => import("../views/usergold/gold/clientCount.vue"), + // redirect: '/usergold/detail', + meta: { permissionId: 8 }, + children: [ + // 金币明细 + { + path: 'detail', + name: "clientCountDetail", + component: () => import("../views/usergold/gold/clientCountDetail.vue"), + meta: { permissionId: 23 } // 对应"查看金币明细"id=23 + }, + // 金币余额 + { + path: 'balance', + name: "clientCountBalance", + component: () => import("../views/usergold/gold/clientCountBalance.vue"), + meta: { permissionId: 24 } // 对应"查看金币余额"id=24 + }, + ] }, - // 金币退款明细详情 { - path: 'detail', - name: "coinRefundDetail", - component: () => import("../views/refund/gold/coinRefundDetail.vue"), - meta: {permissionId: 22} // 对应"查看金币退款明细"id=22 + path: 'userbean', + name: "userbean", + component: () => import("../views/usergold/bean/userbean.vue"), + meta: { permissionId: 45 } }, { - path: 'addRefund', - name: "addNewCoinRefund", - component: () => import("../views/refund/gold/addNewCoinRefund.vue"), - meta: {permissionId: 58} - } - ] - }, - - // 客户账户明细 - { - path: '/usergold', - name: "usergold", - component: () => import("../views/usergold/gold/clientCount.vue"), - // redirect: '/usergold/detail', - meta: {permissionId: 8}, - children: [ - // 金币明细 - { - path: 'detail', - name: "clientCountDetail", - component: () => import("../views/usergold/gold/clientCountDetail.vue"), - meta: {permissionId: 23} // 对应"查看金币明细"id=23 + path: '/history', + name: "history", + component: () => import("../views/history/history.vue"), + meta: { permissionId: [56, 57] } }, - // 金币余额 + + // 权限管理 { - path: 'balance', - name: "clientCountBalance", - component: () => import("../views/usergold/gold/clientCountBalance.vue"), - meta: {permissionId: 24} // 对应"查看金币余额"id=24 + path: '/permissions', + name: "permissions", + component: () => import("../views/permissions/permissions.vue"), + meta: { permissionId: 9 }, + children: [ + // 用户权限 + { + path: 'userPermission', + name: "userPermission", + component: () => import("../views/permissions/userPermission.vue"), + meta: { permissionId: 25 } + }, + // 角色权限 + { + path: 'rolePermission', + name: "rolePermission", + component: () => import("../views/permissions/rolePermission.vue"), + meta: { permissionId: 30 } + }, + ] }, ] }, { - path: 'userbean', - name: "userbean", - component: () => import("../views/usergold/bean/userbean.vue"), - meta:{ permissionId: 45 } - }, - { - path: '/history', - name: "history", - component: () => import("../views/history/history.vue"), - meta:{ permissionId: [56,57] } - }, + path:'moneyManage', + name:'moneyManage', + children:[ - // 权限管理 - { - path: '/permissions', - name: "permissions", - component: () => import("../views/permissions/permissions.vue"), - meta: {permissionId: 9}, - children: [ - // 用户权限 - { - path: 'userPermission', - name: "userPermission", - component: () => import("../views/permissions/userPermission.vue"), - meta: {permissionId: 25} - }, - // 角色权限 - { - path: 'rolePermission', - name: "rolePermission", - component: () => import("../views/permissions/rolePermission.vue"), - meta: {permissionId: 30} - }, ] }, @@ -320,7 +332,7 @@ const getAllPermissionIds = (menuTree) => { router.beforeEach(async (to, from, next) => { const adminStore = useAdminStore() - const {adminData, menuTree} = storeToRefs(adminStore) + const { adminData, menuTree } = storeToRefs(adminStore) const token = localStorage.getItem("token"); const machineId = localStorage.getItem("machineId"); diff --git a/src/utils/menuTreePermission.js b/src/utils/menuTreePermission.js index 3d3f8ee..5cf92e6 100644 --- a/src/utils/menuTreePermission.js +++ b/src/utils/menuTreePermission.js @@ -1,86 +1,93 @@ // 菜单权限映射(按 menu_type 排序) export const permissionMapping = { - System_Management: 1, // 系统管理 - - // menu_type 2: 主功能菜单 - Workbench: 2, // 工作台 - Financial_Audit: 3, // 财务审核 - Exchange_Rate_Management: 4, // 汇率管理 - Recharge_Management: 5, // 充值管理 - Consumption_Management: 6, // 消耗管理 - Refund_Management: 7, // 退款管理 - Customer_Account_Details: 8, // 客户账户明细 - History: 56, // 历史数据查询 - - - Permission_Management: 9, // 权限管理 - - // menu_type 3: 子功能菜单 - Gold_Coin_Recharge: 34, // 金币充值 - Gold_Coin_Consumption: 35, // 金币消耗 - Gold_Coin_Refund: 37, // 金币退款 - Gold_Coin_Audit: 40, // 金币审核 - - Golden_Bean_Recharge: 41, // 金豆充值 - Golden_Bean_Consumption: 42, // 金豆消耗 - Golden_Bean_Audit: 43, // 金豆审核 - - Gold_Coin_Customer_Account_Details: 44, // 金币客户账户明细 - Golden_Bean_Customer_Account_Details: 45, // 金豆客户账户明细 - - // menu_type 4: 功能操作权限 - Workbench_Display: 10, // 工作台展示 - View_Recharge_Audit: 11, // 查看充值审核 // 有这个页面权限的就有 - Recharge_Approval: 12, // 充值审批 //细致划分 - View_Refund_Audit: 13, // 查看退款审核 // 有这个页面权限的就有 - Refund_Approval: 14, // 退款审批 //细致划分 - - Exchange_Rate_View: 15, // 汇率查看 - Exchange_Rate_Modification: 16, // 汇率修改 - - Submit_Gold_Coin_Recharge: 17, // 提交金币充值 // coinRecharge页面 - View_Gold_Coin_Recharge_Details: 18, // 查看金币充值明细 // coinRecharge页面 - - Submit_Gold_Coin_Consumption: 19, // 提交金币消耗 // coinConsume页面 - View_Gold_Coin_Consumption_Details: 20, // 查看金币消耗明细 // coinConsume页面 - - Submit_Gold_Coin_Refund: 21, // 提交金币退款 // coinRefund页面 - View_Gold_Coin_Refund_Details: 22, // 查看金币退款明细 // coinRefund页面 - Submit_Gold_Coin_RefundS: 58, // 提交金币退款 // coinRefund页面 - - - - View_Gold_Coin_Details: 23, // 查看金币明细 //usergold页面 - View_Gold_Coin_Balance: 24, // 查看金币余额 //usergold页面 - - View_Permission: 25, // 查看权限 - Add_User: 26, // 新增用户 - - Change_Status: 27, // 改变状态 - Modify_Permission: 28, // 修改权限 - Delete_User: 29, // 删除用户 - - View_Role: 30, // 查看角色 - Edit_Role: 36, // 编辑角色 - - Recharge_Audit: 31, // 充值审核(金币) // audit页面 - Refund_Audit: 32, // 退款审核(金币) // audit页面, - - History_Query: 57, // 历史数据查询 - - - // 新增的金豆相关权限 - Submit_Golden_Bean_Recharge: 46, // 提交金豆充值 - View_Golden_Bean_System_Recharge_Details: 47, // 查看金豆系统充值明细 - View_Golden_Bean_Online_Recharge_Details: 48, // 查看金豆线上充值明细 - Submit_Golden_Bean_Consumption: 49, // 提交金豆消耗 - View_Golden_Bean_Live_Consumption_Details: 50, // 查看金豆直播消耗明细 - View_Golden_Bean_Fan_Consumption_Details: 51, // 查看金豆铁粉消耗明细 - View_Golden_Bean_Article_Video_Consumption_Details: 52, // 查看金豆文章/视频消耗明细 - View_Golden_Bean_Balance: 53, // 查看金豆余额 - View_Golden_Bean_Recharge_Audit: 54, // 查看金豆充值审核 - Golden_Bean_Recharge_Approval: 55 // 金豆充值审批 -}; + // 大系统和分系统,0级1级 + system:1, // 总系统 + workbench: 2, // 工作台 + goldManage:3, // 金币管理 + monerManage:4, // 现金管理 + + // 模块,2级 + financialAudit:5, // 财务审核 + rateManage:6, // 汇率管理 + rechargeManage:7, // 充值管理 + consumeManage:8, // 消耗管理 + refundManage:9, // 退款管理 + accountDetail:10, // 客户账户明细 + permissionManage:11, // 权限管理 + historyData:12, // 历史数据查询 + + // 页面,3级 + workbenchShow:13, // 工作台查看 + coinAudit:14, // 金币审核 + beanAudit:15, // 金豆审核 + moneyRate:16, // 现金汇率 + coinRecharge:17, // 金币充值 + beanRecharge:18, // 金豆充值 + coinConsume:19, // 金币消耗 + beanConsume:20, // 金豆消耗 + coinRefund:21, // 金币退款 + coinDetail:22, // 金币客户账户明细 + beanDetail:23, // 金豆客户账户明细 + userManage:24, // 用户管理 + roleManage:25, // 角色管理 + newCoinSelect:26, // 金币查询(新) + oldCoinSelect:27, // 金币查询(旧) + + // 功能,4级 + rechargeAudit:28, // 充值审核 + refundAudit:29, // 退款审核 + rechargeThrough:30, // 充值审核已通过 + rechargeReject:31, // 充值审核已驳回 + rechargeWait:32, // 充值审核待审核 + rechargeWaitShow:33, // 充值审核待审核查看 + rechargeWaitThough:34, // 充值审核通过 + rechargeWaitReject:35, // 充值审核驳回 + refundThrough:36, // 退款审核已通过 + refundReject:37, // 退款审核已驳回 + refundWait:38, // 退款审核待审核 + refundWaitShow:39, // 退款审核待审核查看 + refundWaitThough:40, // 退款审核通过 + refundWaitReject:41, // 退款审核驳回 + + beanWait:42, // 金豆审核待审核 + beanWaitThough:43, // 金豆审核已通过 + beanReject:44, // 金豆审核已驳回 + beanWaitShow:45, // 金豆审核待审核查看 + beanWaitThough:46, // 金豆审核通过 + beanWaitReject:47, // 金豆审核驳回 + + rateShow:48, // 现金汇率查看 + rateEdit:49, // 现金汇率编辑 + + addCoinRecharge:50, // 新增金币充值 + coinRechargeDetail:51, // 金币充值明细 + addBeanRecharge:52, // 新增金豆充值 + beanSystemRecharge:53, // 金豆系统充值 + beanOnlineRecharge:54, // 金豆线上充值 + + addCoinConsume:55, // 新增金币消耗 + coinConsumeDetail:56, // 金币消耗明细 + addBeanConsume:57, // 新增金豆消耗 + beanZBDetail:58, // 金豆直播消耗 + beanTFDetail:59, // 金豆铁粉消耗 + beanSPWZDetail:60, // 金豆视频文章消耗 + + addCoinRefund:61, // 新增金币退款 + coinRefundDetail:62, // 金币退款明细 + + coinCustomerDetail:63, // 金币客户账户明细 + coinCustomerMoney:64, // 金币客户账户金额 + + userManageShow:65, // 用户管理展示 + addUserInfo:66, // 新增用户信息 + editUserInfo:67, // 编辑用户信息 + updateUserInfo:68, // 重置密码 + deleteUserInfo:69, // 删除用户信息 + + roleManageShow:70, // 查看角色信息 + addRoleInfo:71, // 新增角色信息 + editRoleInfo:72, // 编辑角色信息 +} // 递归查找菜单中是否存在目标id export const findMenuById = (menuList, targetId) => { diff --git a/src/utils/menuUtils.js b/src/utils/menuUtils.js index 3c9877a..ac7a2b3 100644 --- a/src/utils/menuUtils.js +++ b/src/utils/menuUtils.js @@ -43,7 +43,9 @@ export const getRoutePath = (menu) => { // 路由映射表:key为接口menuName,value为对应路由路径 const routeMap = { - '工作台展示': '/workspace', + '工作台展示': '/workbench', + '金币管理': '/goldManage', + '现金管理': '/moneyManage', '金币审核': '/audit', '金豆审核': '/beanAudit',