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}