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 @@ + + + + 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 =