74 lines
1.8 KiB
Plaintext
74 lines
1.8 KiB
Plaintext
import { App } from 'vue';
|
|
import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router';
|
|
import { RedirectRoute } from '@/router/base';
|
|
import { PageEnum } from '@/enums/pageEnum';
|
|
import { createRouterGuards } from './router-guards';
|
|
|
|
const modules: any = import.meta.glob('./modules/**/*.ts', { eager: true });
|
|
|
|
const routeModuleList: RouteRecordRaw[] = [];
|
|
|
|
const modulesVue = import.meta.glob('/src/views/**/*.vue')
|
|
export function getModulesKey() {
|
|
return Object.keys(modulesVue).map((item) => item.replace('/src/views', '').replace('.vue', ''))
|
|
}
|
|
|
|
Object.keys(modules).forEach((key) => {
|
|
const mod = modules[key].default || {};
|
|
const modList = Array.isArray(mod) ? [...mod] : [mod];
|
|
routeModuleList.push(...modList);
|
|
});
|
|
|
|
function sortRoute(a, b) {
|
|
return (a.meta?.sort || 0) - (b.meta?.sort || 0);
|
|
}
|
|
|
|
routeModuleList.sort(sortRoute);
|
|
|
|
export const RootRoute: RouteRecordRaw = {
|
|
path: '/',
|
|
name: 'Root',
|
|
redirect: PageEnum.BASE_HOME,
|
|
meta: {
|
|
title: 'Root',
|
|
},
|
|
};
|
|
|
|
export const LoginRoute: RouteRecordRaw = {
|
|
path: '/login',
|
|
name: 'Login',
|
|
// component: () => import('@/views/login/index.vue'),
|
|
component: () => import('@/views/login/newLogin.vue'),
|
|
meta: {
|
|
title: '登录',
|
|
},
|
|
};
|
|
|
|
//需要验证权限
|
|
export const asyncRoutes = [...routeModuleList];
|
|
|
|
//普通路由 无需验证权限
|
|
export const constantRouter: any[] = [LoginRoute, RootRoute, RedirectRoute];
|
|
|
|
export const router = createRouter({
|
|
history: createWebHistory(''),
|
|
routes: constantRouter,
|
|
strict: true,
|
|
scrollBehavior(to) {
|
|
if (to.hash) {
|
|
return {
|
|
el: to.hash,
|
|
behavior: 'smooth',
|
|
};
|
|
}
|
|
},
|
|
});
|
|
|
|
export function setupRouter(app: App) {
|
|
app.use(router);
|
|
// 创建路由守卫
|
|
createRouterGuards(router);
|
|
}
|
|
|
|
export default router;
|