From d090c294ae3fe1e000fadbe2b55898741e548338 Mon Sep 17 00:00:00 2001 From: pany <939630029@qq.com> Date: Wed, 24 May 2023 18:25:49 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96=20?= =?UTF-8?q?store/modules/permission?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/store/modules/permission.ts | 30 ++++++++---------------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/src/store/modules/permission.ts b/src/store/modules/permission.ts index 723fcf0..276752f 100644 --- a/src/store/modules/permission.ts +++ b/src/store/modules/permission.ts @@ -6,28 +6,19 @@ import { constantRoutes, asyncRoutes } from "@/router" import asyncRouteSettings from "@/config/async-route" const hasPermission = (roles: string[], route: RouteRecordRaw) => { - if (route.meta && route.meta.roles) { - return roles.some((role) => { - if (route.meta?.roles !== undefined) { - return route.meta.roles.includes(role) - } else { - return false - } - }) - } else { - return true - } + const routeRoles = route.meta?.roles + return routeRoles ? roles.some((role) => routeRoles.includes(role)) : true } const filterAsyncRoutes = (routes: RouteRecordRaw[], roles: string[]) => { const res: RouteRecordRaw[] = [] routes.forEach((route) => { - const r = { ...route } - if (hasPermission(roles, r)) { - if (r.children) { - r.children = filterAsyncRoutes(r.children, roles) + const tempRoute = { ...route } + if (hasPermission(roles, tempRoute)) { + if (tempRoute.children) { + tempRoute.children = filterAsyncRoutes(tempRoute.children, roles) } - res.push(r) + res.push(tempRoute) } }) return res @@ -38,12 +29,7 @@ export const usePermissionStore = defineStore("permission", () => { const dynamicRoutes = ref([]) const setRoutes = (roles: string[]) => { - let accessedRoutes - if (!asyncRouteSettings.open) { - accessedRoutes = asyncRoutes - } else { - accessedRoutes = filterAsyncRoutes(asyncRoutes, roles) - } + const accessedRoutes = asyncRouteSettings.open ? filterAsyncRoutes(asyncRoutes, roles) : asyncRoutes routes.value = constantRoutes.concat(accessedRoutes) dynamicRoutes.value = accessedRoutes }