康来智慧冷链系统 - 前端
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

/**
* @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
});
}