瀏覽代碼

refactor(permission): 重构菜单点击权限检查方法

- 修改 checkMenuClickPermission 方法返回结构化对象
- 更新调用处解构获取 canClick 状态
- 扩展权限检查逻辑支持合同管理和食品经营许可
- 添加详细的 JSDoc 注释说明返回值含义
- 优化权限判断流程提高代码可读性
congxuesong 3 周之前
父節點
當前提交
c8f6d64628
共有 3 個文件被更改,包括 18 次插入6 次删除
  1. 1 1
      src/layouts/LayoutTransverse/index.vue
  2. 1 1
      src/layouts/components/Menu/SubMenu.vue
  3. 16 4
      src/utils/permission.ts

+ 1 - 1
src/layouts/LayoutTransverse/index.vue

@@ -64,7 +64,7 @@ const handleClickMenu = async (subItem: Menu.MenuOptions) => {
   }
 
   // 调用权限检查方法,判断是否可以点击(方法内部会显示相应的提示信息)
-  const canClick = await checkMenuClickPermission(subItem.path);
+  const { canClick } = await checkMenuClickPermission(subItem.path);
 
   if (!canClick) {
     return;

+ 1 - 1
src/layouts/components/Menu/SubMenu.vue

@@ -38,7 +38,7 @@ const handleClickMenu = async (subItem: Menu.MenuOptions) => {
   }
 
   // 调用权限检查方法,判断是否可以点击(方法内部会显示相应的提示信息)
-  const canClick = await checkMenuClickPermission(subItem.path);
+  const { canClick } = await checkMenuClickPermission(subItem.path);
 
   if (!canClick) {
     return;

+ 16 - 4
src/utils/permission.ts

@@ -100,9 +100,13 @@ export async function checkMenuAccessPermission(): Promise<{
 /**
  * @description 检查菜单项是否可以点击
  * @param {string} path 菜单路径
- * @returns {Promise<boolean>} true表示可以点击,false表示不可点击
+ * @returns {Promise<Object>} 返回包含canClick、contractManagement、foodBusinessLicense的对象
  */
-export async function checkMenuClickPermission(path: string): Promise<boolean> {
+export async function checkMenuClickPermission(path: string): Promise<{
+  canClick: boolean;
+  contractManagement: boolean;
+  foodBusinessLicense: boolean;
+}> {
   // 页面路径常量
   const CONTRACT_MANAGEMENT_PATH = "/licenseManagement/contractManagement"; // 合同管理
   const FOOD_BUSINESS_LICENSE_PATH = "/licenseManagement/foodBusinessLicense"; // 食品经营许可证
@@ -113,7 +117,11 @@ export async function checkMenuClickPermission(path: string): Promise<boolean> {
 
   // 如果两者都为false,不做限制,所有页面都可以点击
   if (!contractManagement && !foodBusinessLicense) {
-    return true;
+    return {
+      canClick: true,
+      contractManagement: false,
+      foodBusinessLicense: false
+    };
   }
 
   // 如果至少有一个为true,需要检查权限
@@ -149,5 +157,9 @@ export async function checkMenuClickPermission(path: string): Promise<boolean> {
     }
   }
 
-  return canClick;
+  return {
+    canClick,
+    contractManagement,
+    foodBusinessLicense
+  };
 }