fix: router

This commit is contained in:
xiaoxian521
2021-12-13 17:30:08 +08:00
parent e97bd9c8c4
commit 438aab9bfc
7 changed files with 73 additions and 58 deletions

View File

@@ -88,7 +88,7 @@ router.beforeEach((to: toRouteType, _from, next) => {
meta
});
};
// 未开启标签页缓存,刷新页面重定向到顶级路由(参考标签页操作例子)
// 未开启标签页缓存,刷新页面重定向到顶级路由(参考标签页操作例子,只针对静态路由
if (to.meta?.realPath) {
const routes = router.options.routes;
const { refreshRedirect } = to.meta;
@@ -111,13 +111,28 @@ router.beforeEach((to: toRouteType, _from, next) => {
: router.options.routes;
const route = findRouteByPath(path, routes);
const routePartent = getParentPaths(path, routes);
handTag(
route.path,
routePartent[routePartent.length - 1],
route.name,
route.meta
);
return router.push(path);
// 未开启标签页缓存,刷新页面重定向到顶级路由(参考标签页操作例子,只针对动态路由)
if (routePartent.length === 0) {
const { name, meta } = findRouteByPath(
route?.meta?.refreshRedirect,
routes
);
handTag(
route.meta?.refreshRedirect,
getParentPaths(route.meta?.refreshRedirect, routes)[0],
name,
meta
);
return router.push(route.meta?.refreshRedirect);
} else {
handTag(
route.path,
routePartent[routePartent.length - 1],
route.name,
route.meta
);
return router.push(path);
}
}
}
router.push(to.path);

View File

@@ -1,5 +1,4 @@
// 静态路由
import tabsRouter from "./tabs";
import homeRouter from "./home";
import errorRouter from "./error";
import editorRouter from "./editor";
@@ -18,7 +17,6 @@ import {
// 原始静态路由(未做任何处理)
const routes = [
tabsRouter,
homeRouter,
errorRouter,
nestedRouter,

View File

@@ -1,42 +0,0 @@
import Layout from "/@/layout/index.vue";
const tabsRouter = {
path: "/tabs",
name: "reTabs",
component: Layout,
redirect: "/tabs/index",
meta: {
icon: "IF-team-icontabs",
title: "message.hstabs",
i18n: true,
showLink: true,
rank: 8
},
children: [
{
path: "/tabs/index",
name: "reTabs",
component: () => import("/@/views/tabs/index.vue"),
meta: {
title: "message.hstabs",
showLink: true,
i18n: true
}
},
{
path: "/tabs/detail/:id",
name: "tabDetail",
component: () => import("/@/views/tabs/tabDetail.vue"),
meta: {
title: "",
showLink: false,
i18n: false,
dynamicLevel: 3,
realPath: "/tabs/detail",
refreshRedirect: "/tabs/index"
}
}
]
};
export default tabsRouter;

View File

@@ -216,7 +216,11 @@ const addAsyncRoutes = (arrRoutes: Array<RouteRecordRaw>) => {
if (v.redirect) {
v.component = Layout;
} else {
v.component = modulesRoutes[`/src/views${v.path}/index.vue`];
if (v.meta.realPath) {
v.component = modulesRoutes[`/src/views${v.meta.realPath}/index.vue`];
} else {
v.component = modulesRoutes[`/src/views${v.path}/index.vue`];
}
}
if (v.children) {
addAsyncRoutes(v.children);