|
@@ -54,7 +54,13 @@
|
|
|
watchEffect(async () => {
|
|
|
if (currentRoute.value.name === REDIRECT_NAME) return;
|
|
|
const menus = await getMenus();
|
|
|
- const path = currentRoute.value.path;
|
|
|
+ const routeMatched = currentRoute.value.matched;
|
|
|
+ const cur = routeMatched?.[routeMatched.length - 1];
|
|
|
+ let path = currentRoute.value.path;
|
|
|
+
|
|
|
+ if (cur && cur?.meta?.currentActiveMenu) {
|
|
|
+ path = cur.meta.currentActiveMenu as string;
|
|
|
+ }
|
|
|
|
|
|
const parent = getAllParentPath(menus, path);
|
|
|
|
|
@@ -70,27 +76,23 @@
|
|
|
(item) => item.path !== PageEnum.BASE_HOME
|
|
|
);
|
|
|
|
|
|
- // if (filterBreadcrumbList.length === breadcrumbList.length) {
|
|
|
- // filterBreadcrumbList.unshift(({
|
|
|
- // path: PageEnum.BASE_HOME,
|
|
|
- // meta: {
|
|
|
- // title: t('layout.header.home'),
|
|
|
- // isLink: true,
|
|
|
- // },
|
|
|
- // } as unknown) as RouteLocationMatched);
|
|
|
- // }
|
|
|
-
|
|
|
if (currentRoute.value.meta?.currentActiveMenu) {
|
|
|
- filterBreadcrumbList.push((currentRoute.value as unknown) as RouteLocationMatched);
|
|
|
+ filterBreadcrumbList.push(({
|
|
|
+ ...currentRoute.value,
|
|
|
+ name: currentRoute.value.meta?.title || currentRoute.value.name,
|
|
|
+ } as unknown) as RouteLocationMatched);
|
|
|
}
|
|
|
- routes.value = subRouteExtraction(filterBreadcrumbList);
|
|
|
+ routes.value = filterBreadcrumbList;
|
|
|
});
|
|
|
|
|
|
function getMatched(menus: Menu[], parent: string[]) {
|
|
|
const metched: Menu[] = [];
|
|
|
menus.forEach((item) => {
|
|
|
if (parent.includes(item.path)) {
|
|
|
- metched.push(item);
|
|
|
+ metched.push({
|
|
|
+ ...item,
|
|
|
+ name: item.meta?.title || item.name,
|
|
|
+ });
|
|
|
}
|
|
|
if (item.children?.length) {
|
|
|
metched.push(...getMatched(item.children, parent));
|
|
@@ -99,22 +101,6 @@
|
|
|
return metched;
|
|
|
}
|
|
|
|
|
|
- function subRouteExtraction(routeList: RouteLocationMatched[]) {
|
|
|
- const resultRoutes: RouteLocationMatched[] = [];
|
|
|
- routeList.forEach((route) => {
|
|
|
- if (route.children?.length === 1) {
|
|
|
- const subRoute = route.children[0] as RouteLocationMatched;
|
|
|
- const subRouteName = subRoute.name as string;
|
|
|
- const routeName = route.name;
|
|
|
- if (subRouteName && `${subRouteName}Parent` === routeName) {
|
|
|
- route = subRoute;
|
|
|
- }
|
|
|
- }
|
|
|
- resultRoutes.push(route);
|
|
|
- });
|
|
|
- return resultRoutes;
|
|
|
- }
|
|
|
-
|
|
|
function filterItem(list: RouteLocationMatched[]) {
|
|
|
let resultList = filter(list, (item) => {
|
|
|
const { meta } = item;
|