浏览代码

feat(login): 优化登录后菜单权限跳转逻辑

- 修改 checkMenuClickPermission 函数参数为可选
- 登录后根据权限跳转至合同管理或食品经营许可证页面
- 添加路径导入和权限检查工具函数
- 样式调整,新增多个CSS类名空行以增强可读性
spy 3 周之前
父节点
当前提交
2654c72ad3
共有 2 个文件被更改,包括 15 次插入5 次删除
  1. 1 1
      src/utils/permission.ts
  2. 14 4
      src/views/login/index.vue

+ 1 - 1
src/utils/permission.ts

@@ -102,7 +102,7 @@ export async function checkMenuAccessPermission(): Promise<{
  * @param {string} path 菜单路径
  * @returns {Promise<Object>} 返回包含canClick、contractManagement、foodBusinessLicense的对象
  */
-export async function checkMenuClickPermission(path: string): Promise<{
+export async function checkMenuClickPermission(path?: string): Promise<{
   canClick: boolean;
   contractManagement: boolean;
   foodBusinessLicense: boolean;

+ 14 - 4
src/views/login/index.vue

@@ -601,6 +601,8 @@ import {
   registerCheck
 } from "@/api/modules/newLoginApi";
 import { localGet, localRemove, localSet } from "@/utils";
+import * as path from "node:path";
+import { checkMenuClickPermission } from "@/utils/permission";
 
 const router = useRouter();
 const route = useRoute();
@@ -904,10 +906,18 @@ const handleLogin = async () => {
         // 4.等待路由完全初始化后再跳转
         // 使用 nextTick 确保路由已完全添加
         await nextTick();
-
-        // 5.跳转到首页,使用 replace 避免历史记录问题
-        await router.replace(HOME_URL);
-
+        const { contractManagement, foodBusinessLicense } = await checkMenuClickPermission();
+        // 可以使用所有三个值
+        if ((contractManagement && foodBusinessLicense) || contractManagement) {
+          // 合同管理权限
+          router.replace("/licenseManagement/contractManagement");
+        } else if (foodBusinessLicense) {
+          // 食品经营许可证权限
+          router.replace("/licenseManagement/foodBusinessLicense");
+        } else {
+          // 5.跳转到首页,使用 replace 避免历史记录问题
+          await router.replace(HOME_URL);
+        }
         ElNotification({
           title: "登录成功",
           type: "success",