mirror of
https://github.com/pure-admin/vue-pure-admin.git
synced 2025-06-07 08:57:19 +08:00
refactor: 重构重置路由功能
This commit is contained in:
parent
5ac646444f
commit
d6a329a63c
@ -4,6 +4,7 @@ import { MockMethod } from "vite-plugin-mock";
|
|||||||
// http://mockjs.com/examples.html#Object
|
// http://mockjs.com/examples.html#Object
|
||||||
const systemRouter = {
|
const systemRouter = {
|
||||||
path: "/system",
|
path: "/system",
|
||||||
|
name: "User",
|
||||||
redirect: "/system/user/index",
|
redirect: "/system/user/index",
|
||||||
meta: {
|
meta: {
|
||||||
icon: "setting",
|
icon: "setting",
|
||||||
@ -51,6 +52,7 @@ const systemRouter = {
|
|||||||
const permissionRouter = {
|
const permissionRouter = {
|
||||||
path: "/permission",
|
path: "/permission",
|
||||||
redirect: "/permission/page/index",
|
redirect: "/permission/page/index",
|
||||||
|
name: "PermissionPage",
|
||||||
meta: {
|
meta: {
|
||||||
title: "menus.permission",
|
title: "menus.permission",
|
||||||
icon: "lollipop",
|
icon: "lollipop",
|
||||||
@ -77,6 +79,7 @@ const permissionRouter = {
|
|||||||
|
|
||||||
const frameRouter = {
|
const frameRouter = {
|
||||||
path: "/iframe",
|
path: "/iframe",
|
||||||
|
name: "FramePure",
|
||||||
redirect: "/iframe/pure",
|
redirect: "/iframe/pure",
|
||||||
meta: {
|
meta: {
|
||||||
icon: "monitor",
|
icon: "monitor",
|
||||||
@ -113,6 +116,7 @@ const frameRouter = {
|
|||||||
const tabsRouter = {
|
const tabsRouter = {
|
||||||
path: "/tabs",
|
path: "/tabs",
|
||||||
redirect: "/tabs/index",
|
redirect: "/tabs/index",
|
||||||
|
name: "Tabs",
|
||||||
meta: {
|
meta: {
|
||||||
icon: "IF-team-icontabs",
|
icon: "IF-team-icontabs",
|
||||||
title: "menus.hstabs",
|
title: "menus.hstabs",
|
||||||
|
@ -1,5 +1,10 @@
|
|||||||
import { http } from "../utils/http";
|
import { http } from "../utils/http";
|
||||||
|
|
||||||
export const getAsyncRoutes = (params?: object) => {
|
type Result = {
|
||||||
return http.request("get", "/getAsyncRoutes", { params });
|
code: number;
|
||||||
|
info: Array<any>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const getAsyncRoutes = (params?: object) => {
|
||||||
|
return http.request<Result>("get", "/getAsyncRoutes", { params });
|
||||||
};
|
};
|
||||||
|
@ -4,11 +4,11 @@ import { getConfig } from "/@/config";
|
|||||||
import { useRouter } from "vue-router";
|
import { useRouter } from "vue-router";
|
||||||
import { emitter } from "/@/utils/mitt";
|
import { emitter } from "/@/utils/mitt";
|
||||||
import { routeMetaType } from "../types";
|
import { routeMetaType } from "../types";
|
||||||
import { remainingPaths } from "/@/router";
|
|
||||||
import type { StorageConfigs } from "/#/index";
|
import type { StorageConfigs } from "/#/index";
|
||||||
import { routerArrays } from "/@/layout/types";
|
import { routerArrays } from "/@/layout/types";
|
||||||
import { transformI18n } from "/@/plugins/i18n";
|
import { transformI18n } from "/@/plugins/i18n";
|
||||||
import { useAppStoreHook } from "/@/store/modules/app";
|
import { useAppStoreHook } from "/@/store/modules/app";
|
||||||
|
import { remainingPaths, resetRouter } from "/@/router";
|
||||||
import { i18nChangeLanguage } from "@wangeditor/editor";
|
import { i18nChangeLanguage } from "@wangeditor/editor";
|
||||||
import { storageSession, useGlobal } from "@pureadmin/utils";
|
import { storageSession, useGlobal } from "@pureadmin/utils";
|
||||||
import { useEpThemeStoreHook } from "/@/store/modules/epTheme";
|
import { useEpThemeStoreHook } from "/@/store/modules/epTheme";
|
||||||
@ -72,6 +72,10 @@ export function useNav() {
|
|||||||
useMultiTagsStoreHook().handleTags("equal", [...routerArrays]);
|
useMultiTagsStoreHook().handleTags("equal", [...routerArrays]);
|
||||||
storageSession.removeItem("info");
|
storageSession.removeItem("info");
|
||||||
router.push("/login");
|
router.push("/login");
|
||||||
|
resetRouter();
|
||||||
|
setTimeout(() => {
|
||||||
|
console.log("----", router.options.routes, router.getRoutes());
|
||||||
|
}, 3000);
|
||||||
}
|
}
|
||||||
|
|
||||||
function backHome() {
|
function backHome() {
|
||||||
|
@ -98,6 +98,19 @@ export const router: Router = createRouter({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 重置路由
|
||||||
|
export function resetRouter() {
|
||||||
|
router.getRoutes().forEach(route => {
|
||||||
|
const { name, meta } = route;
|
||||||
|
if (name && router.hasRoute(name) && meta?.backstage) {
|
||||||
|
router.removeRoute(name);
|
||||||
|
router.options.routes = formatTwoStageRoutes(
|
||||||
|
formatFlatteningRoutes(buildHierarchyTree(ascending(routes)))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// 路由白名单
|
// 路由白名单
|
||||||
const whiteList = ["/login"];
|
const whiteList = ["/login"];
|
||||||
|
|
||||||
|
@ -104,14 +104,14 @@ function findRouteByPath(path: string, routes: RouteRecordRaw[]) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 重置路由
|
function addPathMatch() {
|
||||||
function resetRouter(): void {
|
if (!router.hasRoute("pathMatch")) {
|
||||||
router.getRoutes().forEach(route => {
|
router.addRoute({
|
||||||
const { name } = route;
|
path: "/:pathMatch(.*)",
|
||||||
if (name) {
|
name: "pathMatch",
|
||||||
router.hasRoute(name) && router.removeRoute(name);
|
redirect: "/error/404"
|
||||||
}
|
});
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 初始化路由
|
// 初始化路由
|
||||||
@ -146,10 +146,7 @@ function initRouter(name: string) {
|
|||||||
);
|
);
|
||||||
usePermissionStoreHook().changeSetting(info);
|
usePermissionStoreHook().changeSetting(info);
|
||||||
}
|
}
|
||||||
router.addRoute({
|
addPathMatch();
|
||||||
path: "/:pathMatch(.*)",
|
|
||||||
redirect: "/error/404"
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -230,6 +227,8 @@ function addAsyncRoutes(arrRoutes: Array<RouteRecordRaw>) {
|
|||||||
if (!arrRoutes || !arrRoutes.length) return;
|
if (!arrRoutes || !arrRoutes.length) return;
|
||||||
const modulesRoutesKeys = Object.keys(modulesRoutes);
|
const modulesRoutesKeys = Object.keys(modulesRoutes);
|
||||||
arrRoutes.forEach((v: RouteRecordRaw) => {
|
arrRoutes.forEach((v: RouteRecordRaw) => {
|
||||||
|
// 将backstage属性加入meta,标识此路由为后端返回路由
|
||||||
|
v.meta.backstage = true;
|
||||||
if (v.redirect) {
|
if (v.redirect) {
|
||||||
v.component = Layout;
|
v.component = Layout;
|
||||||
} else if (v.meta?.frameSrc) {
|
} else if (v.meta?.frameSrc) {
|
||||||
@ -295,7 +294,6 @@ export {
|
|||||||
ascending,
|
ascending,
|
||||||
filterTree,
|
filterTree,
|
||||||
initRouter,
|
initRouter,
|
||||||
resetRouter,
|
|
||||||
hasPermissions,
|
hasPermissions,
|
||||||
getHistoryMode,
|
getHistoryMode,
|
||||||
addAsyncRoutes,
|
addAsyncRoutes,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user