From 51c170acf848af84d0505ecc215b3258f3ba9d60 Mon Sep 17 00:00:00 2001 From: z9130 <984661593@qq.com> Date: Fri, 18 Oct 2024 13:05:48 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=A1=86=E6=9E=B6=E5=AF=BC?= =?UTF-8?q?=E8=88=AA=E5=A4=84=E7=90=86=E5=8A=A8=E6=80=81=E8=B7=AF=E7=94=B1?= =?UTF-8?q?=E6=97=B6=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../layouts/src/basic/menu/use-navigation.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/effects/layouts/src/basic/menu/use-navigation.ts b/packages/effects/layouts/src/basic/menu/use-navigation.ts index 5efb3969..95a4ef6e 100644 --- a/packages/effects/layouts/src/basic/menu/use-navigation.ts +++ b/packages/effects/layouts/src/basic/menu/use-navigation.ts @@ -5,11 +5,22 @@ import { isHttpUrl, openWindow } from '@vben/utils'; function useNavigation() { const router = useRouter(); + // Helper function to clean up optional parameters + const cleanPath = (path: string) => { + // 正则匹配类似 :param? 的可选参数 + return path.replace(/\/:\w+\?/g, ''); + }; + const navigation = async (path: string) => { + // 如果是HTTP URL,则在新窗口打开 if (isHttpUrl(path)) { openWindow(path, { target: '_blank' }); } else { - await router.push(path); + // 去除未赋值的可选参数 + const cleanedPath = cleanPath(path); + + // 路由跳转 + await router.push(cleanedPath); } };