zhangwei
2025-08-20 115769e9ad3ddc64e21ad7285450c4c563c745ed
src/router/utils.ts
@@ -26,7 +26,10 @@
const IFrame = () => import("@/layout/frame.vue");
// https://cn.vitejs.dev/guide/features.html#glob-import
const modulesRoutes = import.meta.glob("/src/views/**/*.{vue,tsx}");
const quanxianList = ["/item"];
const managerList = ["/user"];
const userInfo = storageLocal().getItem<DataInfo<number>>(userKey);
// 动态路由
import { getAsyncRoutes } from "@/api/routes";
@@ -55,9 +58,17 @@
/** 过滤meta中showLink为false的菜单 */
function filterTree(data: RouteComponent[]) {
  const hasFlsh = useUserStoreHook().nowRole.hasFlsh;
  const isManager = useUserStoreHook().isManager;
  const newTree = cloneDeep(data).filter(
    (v: { meta: { showLink: boolean } }) => v.meta?.showLink !== false
    (v: { path: string; meta: { showLink: boolean } }) => {
      quanxianList.includes(v.path) ? (v.meta.showLink = hasFlsh) : null;
      managerList.includes(v.path) ? (v.meta.showLink = isManager) : null;
      return v.meta?.showLink !== false;
    }
  );
  console.log(newTree);
  newTree.forEach(
    (v: { children }) => v.children && (v.children = filterTree(v.children))
  );
@@ -85,7 +96,7 @@
/** 从localStorage里取出当前登录用户的角色roles,过滤无权限的菜单 */
function filterNoPermissionTree(data: RouteComponent[]) {
  const currentRoles =
    storageLocal().getItem<DataInfo<number>>(userKey)?.exRoles ?? [];
    storageLocal().getItem<DataInfo<number>>(userKey)?.roles ?? [];
  const newTree = cloneDeep(data).filter((v: any) =>
    isOneOfArray(v.meta?.roles, currentRoles)
  );