diff --git a/src/layout/components/CategoryHeader.vue b/src/layout/components/CategoryHeader.vue new file mode 100644 index 000000000..dc9876512 --- /dev/null +++ b/src/layout/components/CategoryHeader.vue @@ -0,0 +1,109 @@ + + + + diff --git a/src/layout/components/Menu/src/Menu.vue b/src/layout/components/Menu/src/Menu.vue index 9033616fe..c6880f299 100644 --- a/src/layout/components/Menu/src/Menu.vue +++ b/src/layout/components/Menu/src/Menu.vue @@ -45,6 +45,26 @@ export default defineComponent({ unref(layout) === 'cutMenu' ? permissionStore.getMenuTabRouters : permissionStore.getRouters ) + const categoryRoutes = computed(() => { + const allRoutes = unref(layout) === 'cutMenu' ? permissionStore.getMenuTabRouters : permissionStore.getRouters + const categoryPath = appStore.getCategoryRoutePath + let findRoutes = allRoutes.find(item=>!item.meta.hidden&&item.path === categoryPath) + if(findRoutes){ + findRoutes = JSON.parse(JSON.stringify(findRoutes)) + findRoutes?.children?.forEach(item => { + item.path = findRoutes?.path+'/'+item.path + }); + } + let homeRoute = allRoutes.find(item=>!item.meta.hidden&&item.path === '/') + if(categoryPath!=homeRoute?.path&&homeRoute){ + homeRoute = JSON.parse(JSON.stringify(homeRoute)) + homeRoute?.children?.forEach(item => { + item.path = homeRoute?.path+item.path + }); + } + return categoryPath!=homeRoute?.path?[...homeRoute?.children||[],...findRoutes?.children||[]]:[...findRoutes?.children||[]]||homeRoute||[] + }) + const collapse = computed(() => appStore.getCollapse) const uniqueOpened = computed(() => appStore.getUniqueOpened) @@ -95,7 +115,7 @@ export default defineComponent({ {{ default: () => { const { renderMenuItem } = useRenderMenuItem(unref(menuMode)) - return renderMenuItem(unref(routers)) + return appStore.getShowCategoryMenu?renderMenuItem(unref(categoryRoutes)):renderMenuItem(unref(routers)) } }} diff --git a/src/layout/components/useRenderLayout.tsx b/src/layout/components/useRenderLayout.tsx index 2c5ae80d5..4d9ea8335 100644 --- a/src/layout/components/useRenderLayout.tsx +++ b/src/layout/components/useRenderLayout.tsx @@ -6,6 +6,7 @@ import { TagsView } from '@/layout/components/TagsView' import { Logo } from '@/layout/components/Logo' import AppView from './AppView.vue' import ToolHeader from './ToolHeader.vue' +import CategoryHeader from './CategoryHeader.vue' import { ElScrollbar } from 'element-plus' import { useDesign } from '@/hooks/web/useDesign' import RouterSearch from '@/components/RouterSearch/index.vue' @@ -111,6 +112,12 @@ export const useRenderLayout = () => { ]} style="transition: all var(--transition-time-02);" > + {appStore.getShowCategoryMenu?():undefined}