Template
1
0
mirror of https://github.com/un-pany/v3-admin-vite.git synced 2025-04-21 03:19:19 +08:00

refactor: rename the variable "whether to enable dynamic routing" from "async" to "dynamic"

This commit is contained in:
pany 2024-02-25 19:26:35 +08:00
parent 9963b590fd
commit 2498f239c0
4 changed files with 15 additions and 13 deletions

View File

@ -1,9 +1,9 @@
/** 动态路由配置 */
/** 路由配置 */
interface RouteSettings {
/**
*
* 1. roles
* 2. async: false
* 2. dynamic: false
*/
dynamic: boolean
/**

View File

@ -255,7 +255,7 @@ export const constantRoutes: RouteRecordRaw[] = [
* (Roles )
* Name
*/
export const asyncRoutes: RouteRecordRaw[] = [
export const dynamicRoutes: RouteRecordRaw[] = [
{
path: "/permission",
component: Layouts,

View File

@ -43,7 +43,7 @@ router.beforeEach(async (to, _from, next) => {
// 生成可访问的 Routes
routeSettings.dynamic ? permissionStore.setRoutes(roles) : permissionStore.setAllRoutes()
// 将 "有访问权限的动态路由" 添加到 Router 中
permissionStore.dynamicRoutes.forEach((route) => router.addRoute(route))
permissionStore.addRoutes.forEach((route) => router.addRoute(route))
// 确保添加路由已完成
// 设置 replace: true, 因此导航将不会留下历史记录
next({ ...to, replace: true })

View File

@ -2,7 +2,7 @@ import { ref } from "vue"
import store from "@/store"
import { defineStore } from "pinia"
import { type RouteRecordRaw } from "vue-router"
import { constantRoutes, asyncRoutes } from "@/router"
import { constantRoutes, dynamicRoutes } from "@/router"
import { flatMultiLevelRoutes } from "@/router/helper"
import routeSettings from "@/config/route"
@ -11,13 +11,13 @@ const hasPermission = (roles: string[], route: RouteRecordRaw) => {
return routeRoles ? roles.some((role) => routeRoles.includes(role)) : true
}
const filterAsyncRoutes = (routes: RouteRecordRaw[], roles: string[]) => {
const filterDynamicRoutes = (routes: RouteRecordRaw[], roles: string[]) => {
const res: RouteRecordRaw[] = []
routes.forEach((route) => {
const tempRoute = { ...route }
if (hasPermission(roles, tempRoute)) {
if (tempRoute.children) {
tempRoute.children = filterAsyncRoutes(tempRoute.children, roles)
tempRoute.children = filterDynamicRoutes(tempRoute.children, roles)
}
res.push(tempRoute)
}
@ -26,26 +26,28 @@ const filterAsyncRoutes = (routes: RouteRecordRaw[], roles: string[]) => {
}
export const usePermissionStore = defineStore("permission", () => {
/** 可访问的路由 */
const routes = ref<RouteRecordRaw[]>([])
const dynamicRoutes = ref<RouteRecordRaw[]>([])
/** 有访问权限的动态路由 */
const addRoutes = ref<RouteRecordRaw[]>([])
/** 根据角色生成可访问的 Routes可访问路由 = 常驻路由 + 有访问权限的动态路由) */
/** 根据角色生成可访问的 Routes可访问路由 = 常驻路由 + 有访问权限的动态路由) */
const setRoutes = (roles: string[]) => {
const accessedRoutes = filterAsyncRoutes(asyncRoutes, roles)
const accessedRoutes = filterDynamicRoutes(dynamicRoutes, roles)
_set(accessedRoutes)
}
/** 所有路由 = 所有常驻路由 + 所有动态路由 */
const setAllRoutes = () => {
_set(asyncRoutes)
_set(dynamicRoutes)
}
const _set = (accessedRoutes: RouteRecordRaw[]) => {
routes.value = constantRoutes.concat(accessedRoutes)
dynamicRoutes.value = routeSettings.thirdLevelRouteCache ? flatMultiLevelRoutes(accessedRoutes) : accessedRoutes
addRoutes.value = routeSettings.thirdLevelRouteCache ? flatMultiLevelRoutes(accessedRoutes) : accessedRoutes
}
return { routes, dynamicRoutes, setRoutes, setAllRoutes }
return { routes, addRoutes, setRoutes, setAllRoutes }
})
/** 在 setup 外使用 */