From 7de02556972119ae46113e7a24301372b22821b8 Mon Sep 17 00:00:00 2001 From: wang_fan_w <2547096351@qq.com> Date: Sat, 24 Aug 2024 19:41:02 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=A8=AA=E5=90=91=E5=92=8C=E6=B7=B7?= =?UTF-8?q?=E5=90=88=E5=B8=83=E5=B1=80=E5=88=87=E6=8D=A2=E5=9B=BD=E9=99=85?= =?UTF-8?q?=E5=8C=96=E5=90=8E=E7=9A=84=E8=8F=9C=E5=8D=95=E6=BA=A2=E5=87=BA?= =?UTF-8?q?=E3=80=81=E8=8F=9C=E5=8D=95=E9=9A=90=E8=97=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/useMneuMethod.ts | 28 +++++++++++ src/layout/components/Menu/menu-item.vue | 12 +---- src/layout/components/Tabs/index.vue | 4 +- src/layout/layout-head/index.vue | 60 ++++++++++++++++-------- src/layout/layout-mixing/index.vue | 42 ++++++++++++----- src/router/route.ts | 2 +- 6 files changed, 105 insertions(+), 43 deletions(-) create mode 100644 src/hooks/useMneuMethod.ts diff --git a/src/hooks/useMneuMethod.ts b/src/hooks/useMneuMethod.ts new file mode 100644 index 0000000..69f5861 --- /dev/null +++ b/src/hooks/useMneuMethod.ts @@ -0,0 +1,28 @@ +/** + * 菜单处理hooks,内置多种菜单处理场景 + * @returns 菜单处理方法 + */ +export const useMneuMethod = () => { + /** + * 多级菜单的显示隐藏 + * @param {Menu.MenuOptions} item 菜单的item + * @returns 若多级菜单有children,并且不隐藏,返回true,否则返回false + */ + const menuShow = (item: Menu.MenuOptions) => { + if (item.children && item.children?.length > 0 && !item.meta.hide) return true; + return false; + }; + /** + * 单级菜单的显示隐藏 + * @param {Menu.MenuOptions} item 菜单的item + * @returns 若单级菜单不隐藏,返回true,否则返回false + */ + const aMenuShow = (item: Menu.MenuOptions) => { + if (!item.meta.hide) return true; + return false; + }; + return { + menuShow, + aMenuShow + }; +}; diff --git a/src/layout/components/Menu/menu-item.vue b/src/layout/components/Menu/menu-item.vue index 6b716cf..3d042c6 100644 --- a/src/layout/components/Menu/menu-item.vue +++ b/src/layout/components/Menu/menu-item.vue @@ -19,6 +19,7 @@ diff --git a/src/layout/components/Tabs/index.vue b/src/layout/components/Tabs/index.vue index 7fb6944..dcc7848 100644 --- a/src/layout/components/Tabs/index.vue +++ b/src/layout/components/Tabs/index.vue @@ -90,10 +90,10 @@ const refresh = () => { const themeStore = useThemeConfig(); themeStore.setRefreshPage(false); currentRoute.value.meta.keepAlive && routerStore.removeRouteName(currentRoute.value.name); - setTimeout(() => { + nextTick(() => { themeStore.setRefreshPage(true); currentRoute.value.meta.keepAlive && routerStore.setRouteNames(currentRoute.value.name); - }, 0); + }); }; // 关闭当前 diff --git a/src/layout/layout-head/index.vue b/src/layout/layout-head/index.vue index a2e9045..b2b9059 100644 --- a/src/layout/layout-head/index.vue +++ b/src/layout/layout-head/index.vue @@ -5,24 +5,32 @@ +
+ + + +
- - -
@@ -43,12 +51,21 @@ import { storeToRefs } from "pinia"; import { useRoutesListStore } from "@/store/modules/route-list"; import { useRoutingMethod } from "@/hooks/useRoutingMethod"; import { useThemeConfig } from "@/store/modules/theme-config"; +import { useMneuMethod } from "@/hooks/useMneuMethod"; defineOptions({ name: "LayoutHead" }); const router = useRouter(); const routerStore = useRoutesListStore(); const themeStore = useThemeConfig(); const { routeTree, currentRoute } = storeToRefs(routerStore); -const { isFooter } = storeToRefs(themeStore); +const { isFooter, language } = storeToRefs(themeStore); + +const { menuShow, aMenuShow } = useMneuMethod(); + +const drawing = ref(true); +watch(language, () => { + drawing.value = false; + nextTick(() => (drawing.value = true)); +}); /** * @description 菜单点击事件 @@ -79,15 +96,20 @@ const onMenuItem = (key: string) => { .header { padding: 0 $padding; height: 60px; + width: 100%; box-sizing: border-box; border-bottom: $border-1 solid $color-border-2; display: flex; - justify-content: space-between; align-items: center; overflow: hidden; .header-logo { max-width: 180px; } + .layout-head-menu { + flex: 1; + display: flex; + overflow: hidden; + } } :deep(.arco-menu-pop) { diff --git a/src/layout/layout-mixing/index.vue b/src/layout/layout-mixing/index.vue index 13f05c2..a49d272 100644 --- a/src/layout/layout-mixing/index.vue +++ b/src/layout/layout-mixing/index.vue @@ -16,15 +16,24 @@ - - - -