feat(menu): 实现菜单手风琴模式功能

- 在Menu.vue中为n-menu组件添加accordion属性
- 在app store中添加menuAccordion状态控制
- 在SettingDrawer.vue中新增菜单手风琴模式开关
- 支持用户在设置面板中开启/关闭手风琴效果
- 配置自动持久化存储到localStorage
- 默认启用手风琴模式,提升菜单使用体验
This commit is contained in:
Leo 2025-07-08 23:11:16 +08:00
parent 87cee481ad
commit 6ecd41e379
3 changed files with 11 additions and 1 deletions

View File

@ -53,6 +53,10 @@
{{ $t('app.BreadcrumbIcon') }}
<n-switch v-model:value="appStore.showBreadcrumbIcon" />
</n-space>
<n-space justify="space-between">
菜单手风琴模式
<n-switch v-model:value="appStore.menuAccordion" />
</n-space>
</n-space>
<template #footer>

View File

@ -6,6 +6,7 @@
:collapsed-width="64"
:options="routeStore.menus"
:value="routeStore.activeMenu"
:accordion="appStore.menuAccordion"
/>
</template>

View File

@ -38,6 +38,7 @@ export const useAppStore = defineStore('app-store', {
transitionAnimation: 'zoom-out' as TransitionAnimation,
layoutMode: 'leftMenu' as LayoutMode,
contentFullScreen: false,
menuAccordion: true,
}
},
getters: {
@ -65,10 +66,10 @@ export const useAppStore = defineStore('app-store', {
this.showFooter = true
this.showBreadcrumb = true
this.showBreadcrumbIcon = true
this.showWatermark = false
this.transitionAnimation = 'zoom-out'
this.layoutMode = 'leftMenu'
this.contentFullScreen = false
this.menuAccordion = true
// 重置所有配色
this.setPrimaryColor(this.primaryColor)
@ -125,6 +126,10 @@ export const useAppStore = defineStore('app-store', {
docEle.value.classList.toggle('gray-mode')
this.grayMode = docEle.value.classList.contains('gray-mode')
},
/* 切换菜单手风琴模式 */
toggleMenuAccordion() {
this.menuAccordion = !this.menuAccordion
},
},
persist: {
storage: localStorage,