|  | @@ -1,9 +1,4 @@
 | 
	
		
			
				|  |  | -import {
 | 
	
		
			
				|  |  | -  createRouter,
 | 
	
		
			
				|  |  | -  createWebHashHistory,
 | 
	
		
			
				|  |  | -  RouteRecordRaw,
 | 
	
		
			
				|  |  | -  Router,
 | 
	
		
			
				|  |  | -} from "vue-router";
 | 
	
		
			
				|  |  | +import { createRouter, createWebHashHistory, Router } from "vue-router";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import homeRouter from "./modules/home";
 | 
	
		
			
				|  |  |  import flowChartRouter from "./modules/flowchart";
 | 
	
	
		
			
				|  | @@ -12,6 +7,7 @@ import componentsRouter from "./modules/components";
 | 
	
		
			
				|  |  |  import nestedRouter from "./modules/nested";
 | 
	
		
			
				|  |  |  import errorRouter from "./modules/error";
 | 
	
		
			
				|  |  |  import permissionRouter from "./modules/permission";
 | 
	
		
			
				|  |  | +import externalLink from "./modules/externalLink";
 | 
	
		
			
				|  |  |  import remainingRouter from "./modules/remaining"; //静态路由
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import { storageSession } from "../utils/storage";
 | 
	
	
		
			
				|  | @@ -20,13 +16,18 @@ import { usePermissionStoreHook } from "/@/store/modules/permission";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import { getAsyncRoutes } from "/@/api/routes";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -const constantRoutes: Array<RouteRecordRaw> = [
 | 
	
		
			
				|  |  | +import Layout from "/@/layout/index.vue";
 | 
	
		
			
				|  |  | +// https://cn.vitejs.dev/guide/features.html#glob-import
 | 
	
		
			
				|  |  | +const modulesRoutes = import.meta.glob("/src/views/*/*/*.vue");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const constantRoutes: Array<any> = [
 | 
	
		
			
				|  |  |    homeRouter,
 | 
	
		
			
				|  |  |    flowChartRouter,
 | 
	
		
			
				|  |  |    editorRouter,
 | 
	
		
			
				|  |  |    componentsRouter,
 | 
	
		
			
				|  |  |    nestedRouter,
 | 
	
		
			
				|  |  |    permissionRouter,
 | 
	
		
			
				|  |  | +  externalLink,
 | 
	
		
			
				|  |  |    errorRouter,
 | 
	
		
			
				|  |  |  ];
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -41,9 +42,6 @@ export const ascending = (arr) => {
 | 
	
		
			
				|  |  |  export const constantRoutesArr = ascending(constantRoutes).concat(
 | 
	
		
			
				|  |  |    ...remainingRouter
 | 
	
		
			
				|  |  |  );
 | 
	
		
			
				|  |  | -import Layout from "/@/layout/index.vue";
 | 
	
		
			
				|  |  | -// https://cn.vitejs.dev/guide/features.html#glob-import
 | 
	
		
			
				|  |  | -const modulesRoutes = import.meta.glob("/src/views/*/*/*.vue");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // 过滤后端传来的动态路由重新生成规范路由
 | 
	
		
			
				|  |  |  export const addAsyncRoutes = (arrRoutes: Array<string>) => {
 | 
	
	
		
			
				|  | @@ -79,7 +77,7 @@ const router = createRouter({
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |  });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -export const initRouter = (name) => {
 | 
	
		
			
				|  |  | +export const initRouter = (name, next?, to?) => {
 | 
	
		
			
				|  |  |    return new Promise((resolve, reject) => {
 | 
	
		
			
				|  |  |      getAsyncRoutes({ name }).then(({ info }) => {
 | 
	
		
			
				|  |  |        if (info.length === 0) {
 | 
	
	
		
			
				|  | @@ -99,6 +97,7 @@ export const initRouter = (name) => {
 | 
	
		
			
				|  |  |              // 最终路由进行升序
 | 
	
		
			
				|  |  |              ascending(router.options.routes);
 | 
	
		
			
				|  |  |              router.addRoute(v.name, v);
 | 
	
		
			
				|  |  | +            if (next && to) next({ ...to, replace: true });
 | 
	
		
			
				|  |  |              usePermissionStoreHook().changeSetting(info);
 | 
	
		
			
				|  |  |              resolve(router);
 | 
	
		
			
				|  |  |            }
 | 
	
	
		
			
				|  | @@ -112,23 +111,42 @@ export const initRouter = (name) => {
 | 
	
		
			
				|  |  |    });
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +// reset router
 | 
	
		
			
				|  |  | +export function resetRouter() {
 | 
	
		
			
				|  |  | +  router.getRoutes().forEach((route) => {
 | 
	
		
			
				|  |  | +    const { name } = route;
 | 
	
		
			
				|  |  | +    if (name) {
 | 
	
		
			
				|  |  | +      router.hasRoute(name) && router.removeRoute(name);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  });
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  import NProgress from "../utils/progress";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -const whiteList = ["/login", "/register"];
 | 
	
		
			
				|  |  | +// const whiteList = ["/login", "/register"];
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  router.beforeEach((to, _from, next) => {
 | 
	
		
			
				|  |  |    let name = storageSession.getItem("info");
 | 
	
		
			
				|  |  | -  // 刷新
 | 
	
		
			
				|  |  | -  if (name && !_from?.name) {
 | 
	
		
			
				|  |  | -    initRouter(name.username).then((router: Router) => {
 | 
	
		
			
				|  |  | -      router.push(to.path);
 | 
	
		
			
				|  |  | -    });
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  |    NProgress.start();
 | 
	
		
			
				|  |  |    const { t } = i18n.global;
 | 
	
		
			
				|  |  |    // @ts-ignore
 | 
	
		
			
				|  |  |    to.meta.title ? (document.title = t(to.meta.title)) : ""; // 动态title
 | 
	
		
			
				|  |  | -  whiteList.indexOf(to.path) !== -1 || name ? next() : next("/login"); // 全部重定向到登录页
 | 
	
		
			
				|  |  | +  if (name) {
 | 
	
		
			
				|  |  | +    if (_from?.name) {
 | 
	
		
			
				|  |  | +      next();
 | 
	
		
			
				|  |  | +    } else {
 | 
	
		
			
				|  |  | +      initRouter(name.username, next, to).then((router: Router) => {
 | 
	
		
			
				|  |  | +        router.push(to.path);
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +      next();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  } else {
 | 
	
		
			
				|  |  | +    if (to.path !== "/login") {
 | 
	
		
			
				|  |  | +      next({ path: "/login" });
 | 
	
		
			
				|  |  | +    } else {
 | 
	
		
			
				|  |  | +      next();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |  });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  router.afterEach(() => {
 |