1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- import { createRouter, createWebHashHistory } from "vue-router";
- import { Routes, routes, system, Route } from "./config";
- import { RouteName } from "./routeName";
- export * from "./config";
- export * from "./routeName";
- export const router = createRouter({
- history: createWebHashHistory(),
- routes: routes as any,
- });
- router.beforeEach((to, from, next) => {
- if (!to.name || to.name === RouteName.viewLayout) {
- router.replace({ name: RouteName.scene });
- return;
- }
- next();
- });
- const getConfig = (routes: Routes) => {
- let config: Routes = [];
- for (let item of routes) {
- if (!system.includes(item)) {
- config.push({
- ...item,
- children: item.children && getConfig(item.children),
- });
- }
- }
- return config;
- };
- export const routeIsSystem = (proutes = routes) => {
- for (let item of proutes) {
- if (!system.includes(item)) {
- if (item.name === router.currentRoute.value?.name) {
- return false;
- } else if (item.children && !routeIsSystem(item.children)) {
- return false;
- }
- }
- }
- return true;
- };
- export const findRoute = (
- routeName: string,
- fullPath = false,
- routeAll = routes
- ): Route | null => {
- for (const route of routeAll) {
- if (route.name === routeName) {
- return route;
- } else if (route.children) {
- const childRoute = findRoute(routeName, fullPath, route.children);
- if (childRoute) {
- return fullPath ? { ...route, children: [childRoute] } : childRoute;
- }
- }
- }
- return null;
- };
|