From 3ee4b2e9a8487cd051249a393e0cca89c1a6c9d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=AB=E5=9C=B0=E5=83=A7?= <357099073@qq.com> Date: Tue, 5 May 2026 16:56:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BE=A7=E8=BE=B9=E6=A0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- platform-vue | 1 + src/components/CommonAside.vue | 28 ++++++++++++++++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) create mode 160000 platform-vue diff --git a/platform-vue b/platform-vue new file mode 160000 index 0000000..e776179 --- /dev/null +++ b/platform-vue @@ -0,0 +1 @@ +Subproject commit e776179c72c44ecd4e6e197f0c88253e8ab71bae diff --git a/src/components/CommonAside.vue b/src/components/CommonAside.vue index fe7962b..c9bfec3 100644 --- a/src/components/CommonAside.vue +++ b/src/components/CommonAside.vue @@ -167,6 +167,10 @@ import { useAllDataStore, useMenuStore } from "@/stores"; const emit = defineEmits(["menu-click"]); +const toggleMobile = () => { + store.state.isCollapse = !store.state.isCollapse; +}; + const router = useRouter(); const route = useRoute(); const menuStore = useMenuStore(); @@ -194,6 +198,11 @@ const closeMobile = () => { } }; +defineExpose({ + toggleMobile, + closeMobile, +}); + const updateDeviceType = () => { isMobile.value = window.innerWidth <= 768; // 手机端默认收起侧边栏 @@ -373,7 +382,7 @@ const fetchMenus = async () => { }; const handleCollapse = () => { - store.state.isCollapse = !store.state.isCollapse; + toggleMobile(); }; const handleMenuRefresh = () => { @@ -626,7 +635,22 @@ h3 { // 响应式设计 @media (max-width: 768px) { .common-aside { - width: 100% !important; + position: fixed; + top: 0; + left: 0; + bottom: 0; + width: 240px !important; + max-width: 80vw; + z-index: 1000; + transform: translateX(-100%); + transition: + transform 0.3s ease, + width 0.3s cubic-bezier(0.4, 0, 0.2, 1), + background-color 0.3s ease; + } + + .common-aside.mobile-open { + transform: translateX(0); } :deep(.el-menu) {