From 380bffe8312117189f1c151725bec38a2f050aa6 Mon Sep 17 00:00:00 2001 From: ocean-gao Date: Thu, 23 May 2024 20:32:01 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20plugin-layout=20=E5=85=BC=E5=AE=B9?= =?UTF-8?q?=E9=A1=B6=E9=83=A8=E5=AF=BC=E8=88=AA=E6=A0=8F=E7=88=B6=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E6=B2=A1=E6=9C=89=E9=85=8D=E7=BD=AE=E8=B7=B3=E8=BD=AC?= =?UTF-8?q?=E9=93=BE=E6=8E=A5=E7=9A=84=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/runtime/views/BaseLayout.vue | 14 +++++++--- .../src/runtime/views/Menu.vue | 28 +++++++++++++++++-- 2 files changed, 35 insertions(+), 7 deletions(-) diff --git a/packages/fes-plugin-layout/src/runtime/views/BaseLayout.vue b/packages/fes-plugin-layout/src/runtime/views/BaseLayout.vue index f064f68d..b56fd9e2 100644 --- a/packages/fes-plugin-layout/src/runtime/views/BaseLayout.vue +++ b/packages/fes-plugin-layout/src/runtime/views/BaseLayout.vue @@ -140,6 +140,7 @@ :menus="rootMenus" mode="horizontal" :inverted="theme === 'dark'" + :navigation="currentNavigation" />
@@ -229,6 +230,7 @@ import { useRoute, useRouter } from '@@/core/coreExports'; import { FAside, FFooter, FHeader, FLayout, FMain } from '@fesjs/fes-design'; import { computed, nextTick, ref, watch } from 'vue'; import defaultLogo from '../assets/logo.png'; +import { flatNodes } from '../helpers/utils'; import LayoutMenu from './Menu.vue'; import MultiTabProvider from './MultiTabProvider.vue'; @@ -335,12 +337,16 @@ export default { ); const rootMenus = computed(() => { - return props.menus.filter((menu) => { - return menu.path; - }).map((menu) => { - const { children, ...others } = menu; + return props.menus.map((menu) => { + const { children, match, ...others } = menu; + const flatChildren = flatNodes(children || []); return { ...others, + match: (match || []) + .concat(...flatChildren.map(item => [] + .concat(item.match || []) + .concat(item.path)), + ), _children: children, }; }); diff --git a/packages/fes-plugin-layout/src/runtime/views/Menu.vue b/packages/fes-plugin-layout/src/runtime/views/Menu.vue index 3a74738a..adbf089b 100644 --- a/packages/fes-plugin-layout/src/runtime/views/Menu.vue +++ b/packages/fes-plugin-layout/src/runtime/views/Menu.vue @@ -73,6 +73,7 @@ export default { type: Boolean, default: false, }, + navigation: String, }, setup(props) { const route = useRoute(); @@ -93,7 +94,13 @@ export default { if (matchMenus.length === 0) { return route.path; } - return matchMenus[0].path; + // 兼容 top-left 布局情况下,匹配菜单可能没有 path 的情况 + if (props.navigation === 'top-left') { + return matchMenus[0].value; + } + else { + return matchMenus[0].path; + } }); const expandedKeysRef = ref(props.expandedKeys); @@ -124,12 +131,27 @@ export default { ); const onMenuClick = (e) => { - const path = e.value; + let path = e.value; + let currentMenu = menuArray.value.find(item => item.value === path); + + // 兼容 top-left 顶部导航没有链接的情况 + if (props.navigation === 'top-left' && currentMenu && !currentMenu.path) { + // 判断当前菜单是否有子菜单 + if (currentMenu._children && currentMenu._children.length > 0) { + path = currentMenu._children[0].path; + currentMenu = currentMenu._children[0]; + } + } + if (/^https?:\/\//.test(path)) { window.open(path, '_blank'); } else if (/^\//.test(path)) { - router.push(path); + router.push({ + path, + query: currentMenu.query || {}, + params: currentMenu.params || {}, + }); } else { console.warn('[plugin-layout]: 菜单的path只能是以http(s)开头的网址或者路由地址'); From 791bdbbc59713ba3dd01ea6d0be58c2d01e5c934 Mon Sep 17 00:00:00 2001 From: ocean-gao Date: Fri, 24 May 2024 11:04:56 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat(plugin-layout):=20=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/public/top-left-right.png | Bin 0 -> 59206 bytes docs/reference/plugin/plugins/layout.md | 13 +++++++-- .../src/runtime/views/BaseLayout.vue | 20 +++++++++++--- .../src/runtime/views/Menu.vue | 26 ++++-------------- packages/fes-template-vite/.fes.js | 1 + packages/fes-template-vite/src/app.jsx | 5 ++-- 6 files changed, 35 insertions(+), 30 deletions(-) create mode 100644 docs/public/top-left-right.png diff --git a/docs/public/top-left-right.png b/docs/public/top-left-right.png new file mode 100644 index 0000000000000000000000000000000000000000..f8ad2bc11ffe2a95ebc7266a706e8fe9f2b0cece GIT binary patch literal 59206 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 literal 0 HcmV?d00001 diff --git a/docs/reference/plugin/plugins/layout.md b/docs/reference/plugin/plugins/layout.md index fc474b1c..57d72927 100644 --- a/docs/reference/plugin/plugins/layout.md +++ b/docs/reference/plugin/plugins/layout.md @@ -9,7 +9,7 @@ import { withBase } from 'vitepress' 为了进一步降低研发成本,我们将布局利用 `fes.js` 插件的方式内置,只需通过简单的配置即可拥有布局,包括导航以及侧边栏。从而做到用户无需关心布局。 - 侧边栏菜单数据根据路由中的配置自动生成。 -- 布局,提供 `side`、 `top`、`mixin`、`left-right` 四种布局。 +- 布局,提供 `side`、 `top`、`mixin`、`left-right`、`top-left-right` 五种布局。 - 主题,提供 `light`、`dark` 两种主题。 - 默认实现对路由的 404、403 处理。 - 搭配 [@fesjs/plugin-access](./access.html) 插件使用,可以完成对路由的权限控制。 @@ -34,7 +34,7 @@ import { withBase } from 'vitepress' ## 布局类型 -配置参数是 `navigation`, 布局有三种类型 `side`、`mixin` 、`top` 和 `left-right`, 默认是 `side`。 +配置参数是 `navigation`, 布局有五种类型 `side`、`mixin` 、`top` 、`left-right`、`top-left-right`, 默认是 `side`。 ### side @@ -53,9 +53,12 @@ import { withBase } from 'vitepress' ### left-right - + left-right + +top-left-right + ### 页面个性化 可以为页面单独设置布局类型: @@ -258,6 +261,10 @@ export const layout = { - **path**:菜单的路径,可配置第三方地址。 + - **query**:同 vue-router 的 query 参数。 + + - **params**:同 vue-router 的 params 参数。 + - **match (v4.0.0+)**:额外匹配的路径,当前路由命中匹配规则时,此菜单高亮。 ``` diff --git a/packages/fes-plugin-layout/src/runtime/views/BaseLayout.vue b/packages/fes-plugin-layout/src/runtime/views/BaseLayout.vue index b56fd9e2..5020986b 100644 --- a/packages/fes-plugin-layout/src/runtime/views/BaseLayout.vue +++ b/packages/fes-plugin-layout/src/runtime/views/BaseLayout.vue @@ -127,7 +127,7 @@ -