From ed18c6fd5f1af1246ffb83cf4b9f988d2bc693a0 Mon Sep 17 00:00:00 2001 From: yufei0306 <13417315+yufei0306@user.noreply.gitee.com> Date: Tue, 2 Apr 2024 16:33:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=A1=B6=E9=83=A8=E4=B8=80?= =?UTF-8?q?=E7=BA=A7=E8=8F=9C=E5=8D=95=E5=8A=9F=E8=83=BD=EF=BC=9A=20=20=20?= =?UTF-8?q?=20=20=20=20showCategoryMenu:false=20//=20true:=E9=A1=B6?= =?UTF-8?q?=E9=83=A8=E5=B1=95=E7=A4=BA=E4=B8=80=E7=BA=A7=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E6=A0=8F=20false:=E5=8F=AA=E6=9C=89=E5=B7=A6=E4=BE=A7=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E6=A0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/layout/components/CategoryHeader.vue | 109 ++++++++++++++++++++++ src/layout/components/Menu/src/Menu.vue | 22 ++++- src/layout/components/useRenderLayout.tsx | 7 ++ src/store/modules/app.ts | 17 +++- 4 files changed, 152 insertions(+), 3 deletions(-) create mode 100644 src/layout/components/CategoryHeader.vue 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}