From a63543a5c793c8954fa2f9da0ee4fb215c62d8c2 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期一, 20 五月 2024 10:26:46 +0800 Subject: [PATCH] !118 ♥️发布 5.2.0-BETA 公测版本 Merge pull request !118 from 疯狂的狮子Li/dev --- src/store/modules/permission.ts | 90 ++++++++++++++++++++++++++++----------------- 1 files changed, 56 insertions(+), 34 deletions(-) diff --git a/src/store/modules/permission.ts b/src/store/modules/permission.ts index ed64e46..cf12a73 100644 --- a/src/store/modules/permission.ts +++ b/src/store/modules/permission.ts @@ -2,35 +2,46 @@ import router, { constantRoutes, dynamicRoutes } from '@/router'; import store from '@/store'; import { getRouters } from '@/api/menu'; +import auth from '@/plugins/auth'; +import { RouteRecordRaw } from 'vue-router'; + import Layout from '@/layout/index.vue'; import ParentView from '@/components/ParentView/index.vue'; import InnerLink from '@/layout/components/InnerLink/index.vue'; -import auth from '@/plugins/auth'; -import { RouteOption } from 'vue-router'; + // 鍖归厤views閲岄潰鎵�鏈夌殑.vue鏂囦欢 const modules = import.meta.glob('./../../views/**/*.vue'); - export const usePermissionStore = defineStore('permission', () => { - const routes = ref<RouteOption[]>([]); - const addRoutes = ref<RouteOption[]>([]); - const defaultRoutes = ref<RouteOption[]>([]); - const topbarRouters = ref<RouteOption[]>([]); - const sidebarRouters = ref<RouteOption[]>([]); + const routes = ref<RouteRecordRaw[]>([]); + const addRoutes = ref<RouteRecordRaw[]>([]); + const defaultRoutes = ref<RouteRecordRaw[]>([]); + const topbarRouters = ref<RouteRecordRaw[]>([]); + const sidebarRouters = ref<RouteRecordRaw[]>([]); - const setRoutes = (newRoutes: RouteOption[]): void => { + const getRoutes = (): RouteRecordRaw[] => { + return routes.value; + }; + const getSidebarRoutes = (): RouteRecordRaw[] => { + return sidebarRouters.value; + }; + const getTopbarRoutes = (): RouteRecordRaw[] => { + return topbarRouters.value; + }; + + const setRoutes = (newRoutes: RouteRecordRaw[]): void => { addRoutes.value = newRoutes; routes.value = constantRoutes.concat(newRoutes); }; - const setDefaultRoutes = (routes: RouteOption[]): void => { + const setDefaultRoutes = (routes: RouteRecordRaw[]): void => { defaultRoutes.value = constantRoutes.concat(routes); }; - const setTopbarRoutes = (routes: RouteOption[]): void => { + const setTopbarRoutes = (routes: RouteRecordRaw[]): void => { topbarRouters.value = routes; }; - const setSidebarRouters = (routes: RouteOption[]): void => { + const setSidebarRouters = (routes: RouteRecordRaw[]): void => { sidebarRouters.value = routes; }; - const generateRoutes = async (): Promise<RouteOption[]> => { + const generateRoutes = async (): Promise<RouteRecordRaw[]> => { const res = await getRouters(); const { data } = res; const sdata = JSON.parse(JSON.stringify(data)); @@ -47,7 +58,7 @@ setSidebarRouters(constantRoutes.concat(sidebarRoutes)); setDefaultRoutes(sidebarRoutes); setTopbarRoutes(defaultRoutes); - return new Promise<RouteOption[]>((resolve) => resolve(rewriteRoutes)); + return new Promise<RouteRecordRaw[]>((resolve) => resolve(rewriteRoutes)); }; /** @@ -56,22 +67,20 @@ * @param lastRouter 涓婁竴绾ц矾鐢� * @param type 鏄惁鏄噸鍐欒矾鐢� */ - const filterAsyncRouter = (asyncRouterMap: RouteOption[], lastRouter?: RouteOption, type = false): RouteOption[] => { + const filterAsyncRouter = (asyncRouterMap: RouteRecordRaw[], lastRouter?: RouteRecordRaw, type = false): RouteRecordRaw[] => { return asyncRouterMap.filter((route) => { if (type && route.children) { route.children = filterChildren(route.children, undefined); } - if (route.component) { - // Layout ParentView 缁勪欢鐗规畩澶勭悊 - if (route.component === 'Layout') { - route.component = Layout; - } else if (route.component === 'ParentView') { - route.component = ParentView; - } else if (route.component === 'InnerLink') { - route.component = InnerLink; - } else { - route.component = loadView(route.component); - } + // Layout ParentView 缁勪欢鐗规畩澶勭悊 + if (route.component?.toString() === 'Layout') { + route.component = Layout; + } else if (route.component?.toString() === 'ParentView') { + route.component = ParentView; + } else if (route.component?.toString() === 'InnerLink') { + route.component = InnerLink; + } else { + route.component = loadView(route.component); } if (route.children != null && route.children && route.children.length) { route.children = filterAsyncRouter(route.children, route, type); @@ -82,11 +91,11 @@ return true; }); }; - const filterChildren = (childrenMap: RouteOption[], lastRouter?: RouteOption): RouteOption[] => { - let children: RouteOption[] = []; + const filterChildren = (childrenMap: RouteRecordRaw[], lastRouter?: RouteRecordRaw): RouteRecordRaw[] => { + let children: RouteRecordRaw[] = []; childrenMap.forEach((el) => { if (el.children && el.children.length) { - if (el.component === 'ParentView' && !lastRouter) { + if (el.component?.toString() === 'ParentView' && !lastRouter) { el.children.forEach((c) => { c.path = el.path + '/' + c.path; if (c.children && c.children.length) { @@ -101,20 +110,33 @@ if (lastRouter) { el.path = lastRouter.path + '/' + el.path; if (el.children && el.children.length) { - children = children.concat(filterChildren(el.children, el)) - return + children = children.concat(filterChildren(el.children, el)); + return; } } children = children.concat(el); }); return children; }; - return { routes, setRoutes, generateRoutes, setSidebarRouters, topbarRouters, sidebarRouters, defaultRoutes }; + return { + routes, + topbarRouters, + sidebarRouters, + defaultRoutes, + + getRoutes, + getSidebarRoutes, + getTopbarRoutes, + + setRoutes, + generateRoutes, + setSidebarRouters + }; }); // 鍔ㄦ�佽矾鐢遍亶鍘嗭紝楠岃瘉鏄惁鍏峰鏉冮檺 -export const filterDynamicRoutes = (routes: RouteOption[]) => { - const res: RouteOption[] = []; +export const filterDynamicRoutes = (routes: RouteRecordRaw[]) => { + const res: RouteRecordRaw[] = []; routes.forEach((route) => { if (route.permissions) { if (auth.hasPermiOr(route.permissions)) { -- Gitblit v1.9.3