From 06ef34d3cfa4ea1588ea2d7174448e0651a2f216 Mon Sep 17 00:00:00 2001 From: lihui Date: Fri, 1 Aug 2025 16:04:30 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E6=8B=86=E6=9D=83=E9=99=90=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=EF=BC=8C=E6=97=A0=E6=9D=83=E9=99=90tab=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E7=A6=81=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/router/index.js | 36 +- src/utils/menuTreePermission.js | 17 +- src/views/permissions/permissions.vue | 89 +++ src/views/permissions/rolePermission.vue | 833 ++++++++++++++++++++++++ src/views/permissions/userPermission.vue | 1032 ++++++++++++++++++++++++++++++ src/views/usergold/gold/clientCount.vue | 12 +- 6 files changed, 2000 insertions(+), 19 deletions(-) create mode 100644 src/views/permissions/permissions.vue create mode 100644 src/views/permissions/rolePermission.vue create mode 100644 src/views/permissions/userPermission.vue diff --git a/src/router/index.js b/src/router/index.js index d4ae310..cd6a7a9 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -84,7 +84,7 @@ const routes = [ path: '/beanConsume', name: "beanConsume", component: () => import("../views/consume/beanConsume.vue"), - meta: {permissionId:42}, + meta: {permissionId: 42}, children: [ // 金豆新增消耗 { @@ -114,7 +114,7 @@ const routes = [ component: () => import("../views/consume/articleVideo.vue"), meta: {permissionId: 52} // 对应"文章视频"id=52? } - + ] }, @@ -229,18 +229,31 @@ const routes = [ }, ] }, - // 权限管理 + + // 权限 { path: '/permissions', name: "permissions", - component: () => import("../views/permissions/permission.vue"), - meta: {permissionId: [25, 26, 27, 28, 29]} // 对应权限管理下的所有操作 - }, - { - path: '/userPermission', - name: "userPermission", - component: () => import("../views/permissions/userPermission.vue"), + 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: '/noPermission', @@ -297,12 +310,11 @@ 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 6b6f1b1..416cc50 100644 --- a/src/utils/menuTreePermission.js +++ b/src/utils/menuTreePermission.js @@ -10,6 +10,7 @@ export const permissionMapping = { Consumption_Management: 6, // 消耗管理 Refund_Management: 7, // 退款管理 Customer_Account_Details: 8, // 客户账户明细 + Permission_Management: 9, // 权限管理 // menu_type 3: 子功能菜单 @@ -48,14 +49,28 @@ export const permissionMapping = { 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页面 + Refund_Audit: 32, // 退款审核(金币) // audit页面, + + // 新增的金豆相关权限 + 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 // 金豆充值审批 }; // 递归查找菜单中是否存在目标id diff --git a/src/views/permissions/permissions.vue b/src/views/permissions/permissions.vue new file mode 100644 index 0000000..5e463dd --- /dev/null +++ b/src/views/permissions/permissions.vue @@ -0,0 +1,89 @@ + + + \ No newline at end of file diff --git a/src/views/permissions/rolePermission.vue b/src/views/permissions/rolePermission.vue new file mode 100644 index 0000000..26c4656 --- /dev/null +++ b/src/views/permissions/rolePermission.vue @@ -0,0 +1,833 @@ + + + + \ No newline at end of file diff --git a/src/views/permissions/userPermission.vue b/src/views/permissions/userPermission.vue new file mode 100644 index 0000000..3a3b6ea --- /dev/null +++ b/src/views/permissions/userPermission.vue @@ -0,0 +1,1032 @@ + + + + + \ No newline at end of file diff --git a/src/views/usergold/gold/clientCount.vue b/src/views/usergold/gold/clientCount.vue index 5535fa2..572d6e7 100644 --- a/src/views/usergold/gold/clientCount.vue +++ b/src/views/usergold/gold/clientCount.vue @@ -13,7 +13,7 @@ 金币余额 @@ -37,7 +37,7 @@ const {menuTree} = storeToRefs(adminStore); const activeTab = ref(''); const hasDetail = ref(false); -const haBalance = ref(false); +const hasBalance = ref(false); // 导航方法 const navigateTo = (name) => { activeTab.value = name; @@ -49,15 +49,15 @@ const navigateTo = (name) => { const initPermissions = () => { if (!menuTree.value || !menuTree.value.length) return; - hasAdd.value = hasMenuPermission(menuTree.value, permissionMapping.View_Gold_Coin_Details); - haBalance.value = hasMenuPermission(menuTree.value, permissionMapping.View_Gold_Coin_Balance); + hasDetail.value = hasMenuPermission(menuTree.value, permissionMapping.View_Gold_Coin_Details); + hasBalance.value = hasMenuPermission(menuTree.value, permissionMapping.View_Gold_Coin_Balance); }; // 默认跳转逻辑 const getDefaultAuditRoute = () => { initPermissions(); - if (hasAdd.value) return 'clientCountDetail'; - if (hasDetail.value) return 'clientCountBalance'; + if (hasDetail.value) return 'clientCountDetail'; + if (hasBalance.value) return 'clientCountBalance'; return 'clientCountDetail'; };