diff --git a/packages/fes-plugin-layout/package.json b/packages/fes-plugin-layout/package.json index b1e8d1d7..699a14a7 100644 --- a/packages/fes-plugin-layout/package.json +++ b/packages/fes-plugin-layout/package.json @@ -31,8 +31,9 @@ }, "peerDependencies": { "@ant-design/icons-vue": "^6.0.0", - "@fesjs/fes": "^2.0.0", "ant-design-vue": "^2.2.0", + "@fesjs/fes": "^2.0.0", + "@fesjs/fes-design": "^0.1.2", "vue": "^3.0.5" } } diff --git a/packages/fes-plugin-layout/src/runtime/assets/logo.png b/packages/fes-plugin-layout/src/runtime/assets/logo.png index 4958e971..ad480536 100644 Binary files a/packages/fes-plugin-layout/src/runtime/assets/logo.png and b/packages/fes-plugin-layout/src/runtime/assets/logo.png differ diff --git a/packages/fes-plugin-layout/src/runtime/helpers/pluginAccess.js b/packages/fes-plugin-layout/src/runtime/helpers/pluginAccess.js index 5fb67c92..7b14a599 100644 --- a/packages/fes-plugin-layout/src/runtime/helpers/pluginAccess.js +++ b/packages/fes-plugin-layout/src/runtime/helpers/pluginAccess.js @@ -1,4 +1,4 @@ -import { unref, computed } from 'vue'; +import { computed, ref } from 'vue'; // eslint-disable-next-line import { useAccess } from '../../plugin-access/core'; @@ -9,32 +9,26 @@ if (!useAccess) { } export const hasAccessByMenuItem = (item) => { - let res; - if (item.path && (!item.children || item.children.length === 0)) { - res = useAccess(item.path); - } else if (item.children && item.children.length > 0) { - res = computed(() => item.children.some((child) => { + const hasChild = item.children && item.children.length; + if (item.path && !hasChild) { + return useAccess(item.path); + } + if (hasChild) { + return computed(() => item.children.some((child) => { const rst = hasAccessByMenuItem(child); return rst && rst.value; })); } - return res; + return ref(true); }; -const _addAccessTag = (arr) => { - if (Array.isArray(arr)) { - arr.forEach((item) => { - item.access = hasAccessByMenuItem(item); - if (item.children && item.children.length > 0) { - _addAccessTag(item.children); - } - }); +export const transform = menus => menus.map((menu) => { + const hasAccess = hasAccessByMenuItem(menu); + if (!hasAccess.value) { + return false; } -}; - -export const transform = (menus) => { - const originData = unref(menus); - _addAccessTag(originData); - - return originData; -}; + if (menu.children) { + menu.children = transform(menu.children); + } + return menu; +}).filter(Boolean); diff --git a/packages/fes-plugin-layout/src/runtime/helpers/pluginLocale.js b/packages/fes-plugin-layout/src/runtime/helpers/pluginLocale.js index 5dd18b4e..6722e8c4 100644 --- a/packages/fes-plugin-layout/src/runtime/helpers/pluginLocale.js +++ b/packages/fes-plugin-layout/src/runtime/helpers/pluginLocale.js @@ -1,7 +1,5 @@ -import { unref, computed } from 'vue'; import { plugin } from '@@/core/coreExports'; - export const transTitle = (name) => { const sharedLocale = plugin.getShared('locale'); if (sharedLocale) { @@ -12,22 +10,14 @@ export const transTitle = (name) => { }; -const _transform = (arr) => { - if (Array.isArray(arr)) { - arr.forEach((item) => { - if (item.title) { - item._title = item.title; - item.title = computed(() => transTitle(item._title)); - } - if (item.children && item.children.length > 0) { - _transform(item.children); - } - }); +export const transform = menus => menus.map((menu) => { + const copy = { + ...menu, + _label: menu.label, + label: transTitle(menu.label) + }; + if (menu.children) { + copy.children = transform(menu.children); } -}; - -export const transform = (menus) => { - const originData = unref(menus); - _transform(originData); - return originData; -}; + return copy; +}); diff --git a/packages/fes-plugin-layout/src/runtime/views/403.vue b/packages/fes-plugin-layout/src/runtime/views/403.vue index a40e0e2f..879616cb 100644 --- a/packages/fes-plugin-layout/src/runtime/views/403.vue +++ b/packages/fes-plugin-layout/src/runtime/views/403.vue @@ -1,7 +1,7 @@ @@ -14,13 +14,12 @@ import { useRouter } from '@@/core/coreExports'; import Result from 'ant-design-vue/lib/result'; import 'ant-design-vue/lib/result/style/css'; -import Button from 'ant-design-vue/lib/button'; -import 'ant-design-vue/lib/button/style/css'; +import { FButton } from '@fesjs/fes-design'; export default { components: { [Result.name]: Result, - [Button.name]: Button + FButton }, setup() { const router = useRouter(); diff --git a/packages/fes-plugin-layout/src/runtime/views/404.vue b/packages/fes-plugin-layout/src/runtime/views/404.vue index 41a73851..9abb2ece 100644 --- a/packages/fes-plugin-layout/src/runtime/views/404.vue +++ b/packages/fes-plugin-layout/src/runtime/views/404.vue @@ -1,7 +1,7 @@ @@ -14,13 +14,12 @@ import { useRouter } from '@@/core/coreExports'; import Result from 'ant-design-vue/lib/result'; import 'ant-design-vue/lib/result/style/css'; -import Button from 'ant-design-vue/lib/button'; -import 'ant-design-vue/lib/button/style/css'; +import { FButton } from '@fesjs/fes-design'; export default { components: { [Result.name]: Result, - [Button.name]: Button + FButton }, setup() { const router = useRouter(); diff --git a/packages/fes-plugin-layout/src/runtime/views/BaseLayout.vue b/packages/fes-plugin-layout/src/runtime/views/BaseLayout.vue index cd3ae9e8..954fad49 100644 --- a/packages/fes-plugin-layout/src/runtime/views/BaseLayout.vue +++ b/packages/fes-plugin-layout/src/runtime/views/BaseLayout.vue @@ -1,68 +1,126 @@