You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.6 KiB
55 lines
1.6 KiB
/** |
|
* @program: kicc-ui |
|
* @description: 基础路由配置 |
|
* @author: wangxiang4 |
|
* @create: 2022/4/9 |
|
*/ |
|
|
|
import type { RouteRecordRaw } from 'vue-router'; |
|
import type { App } from 'vue'; |
|
import { createRouter, createWebHistory } from 'vue-router'; |
|
import { basicRoutes } from './routes'; |
|
import { formatUrlParamsMenu } from '/@/router/helper/menuHelper'; |
|
import { useUserStore } from '/@/store/modules/user'; |
|
|
|
/** 固定路由,设置基础路由不需要被重置掉 */ |
|
const WHITE_NAME_LIST: string[] = []; |
|
const getRouteNames = (array: any[]) => array.forEach((item) => { |
|
WHITE_NAME_LIST.push(item.name); |
|
getRouteNames(item.children || []); |
|
});getRouteNames(basicRoutes); |
|
|
|
/** 应用配置的静态路由 */ |
|
export const router = createRouter({ |
|
history: createWebHistory(import.meta.env.VITE_PUBLIC_PATH), |
|
routes: basicRoutes as unknown as RouteRecordRaw[], |
|
strict: true, |
|
scrollBehavior: () => ({ left: 0, top: 0 }), |
|
}); |
|
|
|
/** 重置所有路由,除基础路由外 */ |
|
export function resetRouter() { |
|
router.getRoutes().forEach((route) => { |
|
const { name } = route; |
|
if (name && !WHITE_NAME_LIST.includes(name as string)) { |
|
router.hasRoute(name) && router.removeRoute(name); |
|
} |
|
}); |
|
} |
|
|
|
/** 配置路由器 */ |
|
export function setupRouter(app: App<Element>) { |
|
app.use(router); |
|
} |
|
|
|
/** 解析格式化路由占位符 */ |
|
export function formatRouterPlaceholder(path: string) { |
|
const userStore = useUserStore(); |
|
return formatUrlParamsMenu(path, { |
|
user: userStore.getUserInfo, |
|
accessToken: userStore.getAccessToken, |
|
refreshToken: userStore.getRefreshToken, |
|
roleIds: userStore.getRoleIds, |
|
permissions: userStore.getPermissions |
|
}); |
|
}
|
|
|