diff --git a/src/layouts/common/GlobalHeader/index.vue b/src/layouts/common/GlobalHeader/index.vue
index 9a00e739..db65b413 100644
--- a/src/layouts/common/GlobalHeader/index.vue
+++ b/src/layouts/common/GlobalHeader/index.vue
@@ -13,6 +13,7 @@
+
@@ -34,6 +35,7 @@ import {
GithubSite
} from './components';
import GlobalLogo from '../GlobalLogo/index.vue';
+import GlobalSearch from '../GlobalSearch/index.vue';
interface Props {
/** 显示logo */
diff --git a/src/layouts/common/GlobalSearch/components/SearchFooter.vue b/src/layouts/common/GlobalSearch/components/SearchFooter.vue
new file mode 100644
index 00000000..f7a1d868
--- /dev/null
+++ b/src/layouts/common/GlobalSearch/components/SearchFooter.vue
@@ -0,0 +1,24 @@
+
+
+
+
+ 确认
+
+
+
+
+ 切换
+
+
+
+ 关闭
+
+
+
+
+
+
diff --git a/src/layouts/common/GlobalSearch/components/SearchModal.vue b/src/layouts/common/GlobalSearch/components/SearchModal.vue
new file mode 100644
index 00000000..61dfcf83
--- /dev/null
+++ b/src/layouts/common/GlobalSearch/components/SearchModal.vue
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/common/GlobalSearch/components/SearchResult.vue b/src/layouts/common/GlobalSearch/components/SearchResult.vue
new file mode 100644
index 00000000..f4797ece
--- /dev/null
+++ b/src/layouts/common/GlobalSearch/components/SearchResult.vue
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+ {{ item.meta?.title }}
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/common/GlobalSearch/components/index.ts b/src/layouts/common/GlobalSearch/components/index.ts
new file mode 100644
index 00000000..acfa0425
--- /dev/null
+++ b/src/layouts/common/GlobalSearch/components/index.ts
@@ -0,0 +1,3 @@
+import SearchModal from './SearchModal.vue';
+
+export { SearchModal };
diff --git a/src/layouts/common/GlobalSearch/index.vue b/src/layouts/common/GlobalSearch/index.vue
new file mode 100644
index 00000000..973f6c89
--- /dev/null
+++ b/src/layouts/common/GlobalSearch/index.vue
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/router/setup/index.ts b/src/router/setup/index.ts
index 5d1e4855..2e3ab9f7 100644
--- a/src/router/setup/index.ts
+++ b/src/router/setup/index.ts
@@ -18,4 +18,4 @@ export async function setupRouter(app: App) {
}
export { default as cacheRoutes } from './cache';
-export { default as menus } from './menus';
+export { menusList, menus } from './menus';
diff --git a/src/router/setup/menus.ts b/src/router/setup/menus.ts
index 7815598e..81bc755a 100644
--- a/src/router/setup/menus.ts
+++ b/src/router/setup/menus.ts
@@ -1,7 +1,9 @@
-import { transformRouteToMenu } from '@/utils';
+import { transformRouteToMenu, transformRouteToList } from '@/utils';
import customRoutes from '../modules';
/** 菜单 */
const menus = transformRouteToMenu(customRoutes);
+/** 菜单搜索列表 */
+const menusList = transformRouteToList(customRoutes);
-export default menus;
+export { menus, menusList };
diff --git a/src/utils/router/menus.ts b/src/utils/router/menus.ts
index bab36157..eb01cca4 100644
--- a/src/utils/router/menus.ts
+++ b/src/utils/router/menus.ts
@@ -48,6 +48,20 @@ export function transformRouteToMenu(routes: RouteRecordRaw[]) {
return globalMenu;
}
+/** 将路由转换成菜单列表 */
+export function transformRouteToList(routes: RouteRecordRaw[], treeMap: RouteRecordRaw[] = []) {
+ if (routes && routes.length === 0) return [];
+ return routes.reduce((acc, cur) => {
+ if (!cur.meta?.notAsMenu) {
+ acc.push(cur);
+ }
+ if (cur.children && cur.children.length > 0) {
+ transformRouteToList(cur.children, treeMap);
+ }
+ return acc;
+ }, treeMap);
+}
+
/** 判断路由是否为Url链接 */
export function isUrl(path: string): boolean {
const reg =