From 9930d8207cd0ea4b7711e5ef74011c85c8853202 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E8=8F=9C=E9=B8=9F=E5=84=BF?= <496651923@qq.com> Date: Mon, 5 Jun 2023 08:03:29 +0000 Subject: [PATCH 1/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=88=86=E6=A0=8F?= =?UTF-8?q?=E5=B8=83=E5=B1=80=E5=AD=90=E8=8F=9C=E5=8D=95=E5=85=A8=E9=83=A8?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E4=B8=BA=E9=9A=90=E8=97=8F=EF=BC=8C=E4=BA=8C?= =?UTF-8?q?=E6=AC=A1=E7=82=B9=E5=87=BB=E6=A0=87=E7=AD=BE=E9=A1=B5=E5=87=BA?= =?UTF-8?q?=E7=8E=B0=E7=A9=BA=E7=99=BD=E5=88=86=E6=A0=8F=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 小菜鸟儿 <496651923@qq.com> --- src/layout/navBars/tagsView/tagsView.vue | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/layout/navBars/tagsView/tagsView.vue b/src/layout/navBars/tagsView/tagsView.vue index 6dddc41..95f9b35 100644 --- a/src/layout/navBars/tagsView/tagsView.vue +++ b/src/layout/navBars/tagsView/tagsView.vue @@ -387,7 +387,13 @@ const onTagsClick = (v: RouteItem, k: number) => { // 分栏布局时,收起/展开菜单 if (getThemeConfig.value.layout === 'columns') { const item: RouteItem = routesList.value.find((r: RouteItem) => r.path.indexOf(`/${v.path.split('/')[1]}`) > -1); - !item.children ? (getThemeConfig.value.isCollapse = true) : (getThemeConfig.value.isCollapse = false); + let child=[]; + for(let i=0;i Date: Mon, 5 Jun 2023 19:30:18 +0000 Subject: [PATCH 2/4] =?UTF-8?q?=E9=87=8D=E6=96=B0=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E5=90=8E=E7=AB=AF=E8=B7=AF=E7=94=B1=E8=8F=9C=E5=8D=95=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=B7=BB=E5=8A=A0=E8=8F=9C=E5=8D=95=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 小菜鸟儿 <496651923@qq.com> --- src/layout/component/columnsAside.vue | 7 +++++++ src/layout/navBars/topBar/index.vue | 4 +++- src/router/backEnd.ts | 18 ++++++++++++++++-- src/types/mitt.d.ts | 2 ++ 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/layout/component/columnsAside.vue b/src/layout/component/columnsAside.vue index e75e38d..933eb4e 100644 --- a/src/layout/component/columnsAside.vue +++ b/src/layout/component/columnsAside.vue @@ -189,6 +189,13 @@ onMounted(() => { state.liOldIndex = null; state.liOldPath = null; }); + + /** + * 监听分栏模式菜单更新 + */ + mittBus.on('setSendColumns',() => { + setFilterRoutes(); + }); }); // 页面卸载时 onUnmounted(() => { diff --git a/src/layout/navBars/topBar/index.vue b/src/layout/navBars/topBar/index.vue index bd8804a..efe8742 100644 --- a/src/layout/navBars/topBar/index.vue +++ b/src/layout/navBars/topBar/index.vue @@ -44,7 +44,9 @@ const isLayoutTransverse = computed(() => { // 设置/过滤路由(非静态路由/是否显示在菜单中) const setFilterRoutes = () => { let { layout, isClassicSplitMenu } = themeConfig.value; - if (layout === 'classic' && isClassicSplitMenu) { + if (layout === 'columns') { + mittBus.emit('setSendColumns'); + }else if (layout === 'classic' && isClassicSplitMenu) { state.menuList = delClassicChildren(filterRoutesFun(routesList.value)); const resData = setSendClassicChildren(route.path); mittBus.emit('setSendClassicChildren', resData); diff --git a/src/router/backEnd.ts b/src/router/backEnd.ts index a03c7ee..6a61812 100644 --- a/src/router/backEnd.ts +++ b/src/router/backEnd.ts @@ -10,6 +10,7 @@ import { formatTwoStageRoutes, formatFlatteningRoutes, router } from '/@/router/ import { useRoutesList } from '/@/stores/routesList'; import { useTagsViewRoutes } from '/@/stores/tagsViewRoutes'; import { useMenuApi } from '/@/api/menu/index'; +import mittBus from '/@/utils/mitt'; // 后端控制路由 @@ -119,11 +120,24 @@ export function getBackEndControlRoutes() { /** * 重新请求后端路由菜单接口 - * @description 用于菜单管理界面刷新菜单(未进行测试) + * @description 用于菜单管理界面刷新菜单 * @description 路径:/src/views/system/menu/component/addMenu.vue */ export async function setBackEndControlRefreshRoutes() { - await getBackEndControlRoutes(); + //重新获取路由信息 + const res=await getBackEndControlRoutes(); + //后端路由转换 + const menu_data=await backEndComponent(res.data); + + // 处理路由(component),替换 dynamicRoutes(/@/router/route)第一个顶级 children 的路由 + dynamicRoutes[0].children = menu_data; + // 添加动态路由 + await setAddRoute(); + // 设置路由到 pinia routesList 中(已处理成多级嵌套路由)及缓存多级嵌套数组处理后的一维数组 + await setFilterMenuAndCacheTagsViewRoutes(); + + // 触发菜单更新监听 + mittBus.emit('getBreadcrumbIndexSetFilterRoutes'); } /** diff --git a/src/types/mitt.d.ts b/src/types/mitt.d.ts index b68b80d..e11d097 100644 --- a/src/types/mitt.d.ts +++ b/src/types/mitt.d.ts @@ -3,6 +3,7 @@ * * @method openSetingsDrawer 打开布局设置弹窗 * @method restoreDefault 分栏布局,鼠标移入、移出数据显示 + * @method setSendColumns 分栏布局,左侧菜单刷新 * @method setSendColumnsChildren 分栏布局,鼠标移入、移出菜单数据传入到 navMenu 下的菜单中 * @method setSendClassicChildren 经典布局,开启切割菜单时,菜单数据传入到 navMenu 下的菜单中 * @method getBreadcrumbIndexSetFilterRoutes 布局设置弹窗,开启切割菜单时,菜单数据传入到 navMenu 下的菜单中 @@ -15,6 +16,7 @@ declare type MittType = { openSetingsDrawer?: string; restoreDefault?: string; + setSendColumns: T; setSendColumnsChildren: T; setSendClassicChildren: T; getBreadcrumbIndexSetFilterRoutes?: string; -- Gitee From a3f8aac18fa753f1f022273c4759249fade107c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E8=8F=9C=E9=B8=9F=E5=84=BF?= <496651923@qq.com> Date: Tue, 6 Jun 2023 16:17:20 +0000 Subject: [PATCH 3/4] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=A4=B4=E9=83=A8?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF=E6=9B=B4=E6=96=B0=E7=9B=91?= =?UTF-8?q?=E5=90=AC=EF=BC=8C=E5=8F=AF=E9=80=9A=E8=BF=87mittBus.emit("refr?= =?UTF-8?q?eshUserInfo")=E8=A7=A6=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 小菜鸟儿 <496651923@qq.com> --- src/layout/navBars/topBar/user.vue | 11 +++++++++-- src/types/mitt.d.ts | 2 ++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/layout/navBars/topBar/user.vue b/src/layout/navBars/topBar/user.vue index 7dfcbf3..acbcad2 100644 --- a/src/layout/navBars/topBar/user.vue +++ b/src/layout/navBars/topBar/user.vue @@ -64,8 +64,8 @@ - - {{ userInfos.userName === '' ? 'common' : userInfos.userName }} + + {{ state.userInfo.userName === '' ? 'common' : state.userInfo.userName }} @@ -113,6 +113,7 @@ const { userInfos } = storeToRefs(stores); const { themeConfig } = storeToRefs(storesThemeConfig); const searchRef = ref(); const state = reactive({ + userInfo:userInfos, isScreenfull: false, disabledI18n: 'zh-cn', disabledSize: 'large', @@ -218,6 +219,12 @@ onMounted(() => { initI18nOrSize('globalComponentSize', 'disabledSize'); initI18nOrSize('globalI18n', 'disabledI18n'); } + //监听用户信息刷新事件 + mittBus.on("refreshUserInfo",()=>{ + stores.getApiUserInfo().then((res:any)=>{ + state.userInfo=res; + }); + }) }); diff --git a/src/types/mitt.d.ts b/src/types/mitt.d.ts index e11d097..03ca2cf 100644 --- a/src/types/mitt.d.ts +++ b/src/types/mitt.d.ts @@ -3,6 +3,7 @@ * * @method openSetingsDrawer 打开布局设置弹窗 * @method restoreDefault 分栏布局,鼠标移入、移出数据显示 + * @method refreshUserInfo 刷新头部用户信息展示 * @method setSendColumns 分栏布局,左侧菜单刷新 * @method setSendColumnsChildren 分栏布局,鼠标移入、移出菜单数据传入到 navMenu 下的菜单中 * @method setSendClassicChildren 经典布局,开启切割菜单时,菜单数据传入到 navMenu 下的菜单中 @@ -16,6 +17,7 @@ declare type MittType = { openSetingsDrawer?: string; restoreDefault?: string; + refreshUserInfo: T; setSendColumns: T; setSendColumnsChildren: T; setSendClassicChildren: T; -- Gitee From 43bf4f7c8412c47c2f85357b22d3a6b962ef08fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E8=8F=9C=E9=B8=9F=E5=84=BF?= <496651923@qq.com> Date: Tue, 6 Jun 2023 23:27:57 +0000 Subject: [PATCH 4/4] =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=A4=96=E9=83=A8?= =?UTF-8?q?=E4=BC=A0=E9=80=92=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF=EF=BC=8C?= =?UTF-8?q?=E9=81=BF=E5=85=8D=E9=87=8D=E5=A4=8D=E8=AF=B7=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 小菜鸟儿 <496651923@qq.com> --- src/layout/navBars/topBar/user.vue | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/layout/navBars/topBar/user.vue b/src/layout/navBars/topBar/user.vue index acbcad2..4819e4b 100644 --- a/src/layout/navBars/topBar/user.vue +++ b/src/layout/navBars/topBar/user.vue @@ -219,8 +219,12 @@ onMounted(() => { initI18nOrSize('globalComponentSize', 'disabledSize'); initI18nOrSize('globalI18n', 'disabledI18n'); } - //监听用户信息刷新事件 - mittBus.on("refreshUserInfo",()=>{ + //监听用户信息刷新事件,支持外部传递用户信息 + mittBus.on("refreshUserInfo",(res?:any)=>{ + if(res!=undefined){ + state.userInfo=res; + return; + } stores.getApiUserInfo().then((res:any)=>{ state.userInfo=res; }); -- Gitee