From 1978066a702e39f1f7fa96a6b4f3fa1e10ed78e1 Mon Sep 17 00:00:00 2001 From: "Ray.Hao" <1490493387@qq.com> Date: Sat, 19 Apr 2025 09:02:29 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20:recycle:=20=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E7=BB=84=E4=BB=B6=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/MenuSearch/index.vue | 163 ++++++++++++++++++++-------- 1 file changed, 120 insertions(+), 43 deletions(-) diff --git a/src/components/MenuSearch/index.vue b/src/components/MenuSearch/index.vue index 8905f110..e3ff4625 100644 --- a/src/components/MenuSearch/index.vue +++ b/src/components/MenuSearch/index.vue @@ -53,22 +53,29 @@ @@ -98,6 +105,26 @@ interface SearchItem { redirect?: string; } +// 注册全局快捷键 +function handleKeyDown(e: KeyboardEvent) { + // 判断是否为Ctrl+K组合键 + if ((e.ctrlKey || e.metaKey) && e.key.toLowerCase() === "k") { + e.preventDefault(); // 阻止默认行为 + openSearchModal(); + } +} + +// 添加键盘事件监听 +onMounted(() => { + loadRoutes(permissionStore.routes); + document.addEventListener("keydown", handleKeyDown); +}); + +// 移除键盘事件监听 +onBeforeUnmount(() => { + document.removeEventListener("keydown", handleKeyDown); +}); + // 打开搜索模态框 function openSearchModal() { searchKeyword.value = ""; @@ -178,11 +205,6 @@ function loadRoutes(routes: RouteRecordRaw[], parentPath = "") { } }); } - -// 初始化路由数据 -onMounted(() => { - loadRoutes(permissionStore.routes); -});