提交 7bae4c37 编写于 作者: V vben

fix(menu): fix externalLink not work

上级 e921e7b9
......@@ -3,6 +3,7 @@ import type { MenuModule, Menu, AppRouteRecordRaw } from '/@/router/types';
import { findPath, forEach, treeMap, treeToList } from '/@/utils/helper/treeHelper';
import { cloneDeep } from 'lodash-es';
import { isUrl } from '/@/utils/is';
export function getAllParentPath(treeData: any[], path: string) {
const menuList = findPath(treeData, (n) => n.path === path) as Menu[];
......@@ -39,7 +40,7 @@ export function transformMenuModule(menuModule: MenuModule): Menu {
const menuList = [menu];
forEach(menuList, (m) => {
joinParentPath(menuList, m);
!isUrl(m.path) && joinParentPath(menuList, m);
});
return menuList[0];
}
......@@ -58,7 +59,8 @@ export function transformRouteToMenu(routeModList: AppRouteModule[]) {
return treeMap(routeList, {
conversion: (node: AppRouteRecordRaw) => {
const { meta: { title, icon } = {} } = node;
joinParentPath(routeList, node);
!isUrl(node.path) && joinParentPath(routeList, node);
return {
name: title,
icon,
......
......@@ -89,12 +89,17 @@ export async function getFlatChildrenMenus(children: Menu[]) {
function basicFilter(routes: RouteRecordNormalized[]) {
return (menu: Menu) => {
const matchRoute = routes.find((route) => {
if (route.meta.externalLink) {
return true;
}
if (route.meta) {
if (route.meta.carryParam) {
return pathToRegexp(route.path).test(menu.path);
}
if (route.meta.ignoreAuth) return false;
if (route.meta.ignoreAuth) return true;
}
return route.path === menu.path;
});
......
......@@ -15,7 +15,7 @@ const menu: MenuModule = {
name: 'routes.demo.iframe.doc',
},
{
path: 'docExternal',
path: 'https://vvbin.cn/doc-next/',
name: 'routes.demo.iframe.docExternal',
},
],
......
......@@ -33,11 +33,11 @@ const iframe: AppRouteModule = {
},
},
{
path: 'docExternal',
path: 'https://vvbin.cn/doc-next/',
name: 'DocExternal',
component: IFrame,
meta: {
externalLink: 'https://vvbin.cn/doc-next/',
externalLink: true,
title: 'routes.demo.iframe.docExternal',
},
},
......
......@@ -17,7 +17,7 @@ export interface RouteMeta {
// Jump address
frameSrc?: string;
// Outer link jump address
externalLink?: string;
externalLink?: boolean;
// current page transition
transitionName?: string;
......@@ -28,6 +28,7 @@ export interface RouteMeta {
// Carrying parameters
carryParam?: boolean;
// Used internally to mark single-level menus
single?: boolean;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册