This commit is contained in:
2026-01-16 11:54:18 +08:00
parent 56c35b920e
commit 7a4ca4275e
4 changed files with 308 additions and 11 deletions

View File

@@ -2,19 +2,28 @@
<a-layout class="app-wrapper" :class="layoutClass">
<!-- 默认布局左侧双栏布局 -->
<template v-if="layoutMode === 'default'">
<a-layout-sider theme="dark" width="70" class="logo-sidebar">
<!-- 第一个侧边栏显示一级菜单 -->
<a-layout-sider theme="dark" width="70" class="level1-sidebar">
<div class="logo-box">
<span class="logo-text">VUE</span>
</div>
<level1-menu />
</a-layout-sider>
<a-layout-sider theme="light" :collapsed="sidebarCollapsed" :collapsible="true" @collapse="handleCollapse"
class="menu-sidebar" width="200" :collapsed-width="64">
<side-menu :collapsed="sidebarCollapsed" />
<!-- 第二个侧边栏显示选中的父菜单的子菜单 -->
<a-layout-sider
v-if="selectedParentMenu && selectedParentMenu.children && selectedParentMenu.children.length > 0"
theme="light" :collapsed="sidebarCollapsed" :collapsible="true" @collapse="handleCollapse"
class="level2-sidebar" width="200" :collapsed-width="64">
<level2-menu />
</a-layout-sider>
<a-layout class="main-layout">
<a-layout-header class="app-header">
<div class="header-left">
<a-button type="text" :icon="sidebarCollapsed ? h(MenuUnfoldOutlined) : h(MenuFoldOutlined)"
<a-button
v-if="selectedParentMenu && selectedParentMenu.children && selectedParentMenu.children.length > 0"
type="text" :icon="sidebarCollapsed ? h(MenuUnfoldOutlined) : h(MenuFoldOutlined)"
@click="toggleSidebar" class="collapse-btn" />
<breadcrumb />
</div>
@@ -95,12 +104,15 @@ import breadcrumb from './components/breadcrumb.vue'
import tags from './components/tags.vue'
import topMenu from './components/topMenu.vue'
import sideMenu from './components/sideMenu.vue'
import level1Menu from './components/level1Menu.vue'
import level2Menu from './components/level2Menu.vue'
const route = useRoute()
const layoutStore = useLayoutStore()
const layoutMode = computed(() => layoutStore.layoutMode)
const sidebarCollapsed = computed(() => layoutStore.sidebarCollapsed)
const selectedParentMenu = computed(() => layoutStore.selectedParentMenu)
// 缓存的视图列表
const cachedViews = computed(() => {
@@ -167,13 +179,13 @@ const handleCollapse = (collapsed) => {
height: calc(100vh - 106px);
}
/* 默认布局 */
/* 默认布局 - 双栏菜单 */
&.layout-default {
.logo-sidebar {
.level1-sidebar {
background-color: #001529;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
z-index: 10;
.logo-box {
width: 100%;
@@ -181,6 +193,7 @@ const handleCollapse = (collapsed) => {
display: flex;
align-items: center;
justify-content: center;
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
.logo-text {
color: #ffffff;
@@ -191,10 +204,10 @@ const handleCollapse = (collapsed) => {
}
}
.menu-sidebar {
.level2-sidebar {
background-color: #ffffff;
box-shadow: 1px 0 6px rgba(0, 0, 0, 0.1);
z-index: 10;
z-index: 9;
}
.main-layout {