diff --git a/src/layout/component/columnsAside.vue b/src/layout/component/columnsAside.vue index e75e38d209f1abdb87cd6eba00cdb654b06cc6ce..933eb4ed9d26a9a4b7d5aa85e9656ae7d77f1c30 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/tagsView/tagsView.vue b/src/layout/navBars/tagsView/tagsView.vue index 6dddc41e9218d8131f8d736f8ed04fdd983f46a6..95f9b3587ffa0eb4997626c0cfb16e02ae402810 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 { // 设置/过滤路由(非静态路由/是否显示在菜单中) 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/layout/navBars/topBar/user.vue b/src/layout/navBars/topBar/user.vue index 7dfcbf3176a25008585e5e4c85ea4d1ed601b2b3..4819e4bb7008e6aa2c76f7b7c17b264bb2d15b07 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,16 @@ onMounted(() => { initI18nOrSize('globalComponentSize', 'disabledSize'); initI18nOrSize('globalI18n', 'disabledI18n'); } + //监听用户信息刷新事件,支持外部传递用户信息 + mittBus.on("refreshUserInfo",(res?:any)=>{ + if(res!=undefined){ + state.userInfo=res; + return; + } + stores.getApiUserInfo().then((res:any)=>{ + state.userInfo=res; + }); + }) }); diff --git a/src/router/backEnd.ts b/src/router/backEnd.ts index a03c7ee041b0816ed249c5a36b4158562d558ff6..6a61812c3741e385cdd9cadfa7fdd05c5447251c 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 b68b80df4cc93cf4471b605ccfd5b9398ef2ac6f..03ca2cffb32ca35b8fb902cb77db96e77ec977cb 100644 --- a/src/types/mitt.d.ts +++ b/src/types/mitt.d.ts @@ -3,6 +3,8 @@ * * @method openSetingsDrawer 打开布局设置弹窗 * @method restoreDefault 分栏布局,鼠标移入、移出数据显示 + * @method refreshUserInfo 刷新头部用户信息展示 + * @method setSendColumns 分栏布局,左侧菜单刷新 * @method setSendColumnsChildren 分栏布局,鼠标移入、移出菜单数据传入到 navMenu 下的菜单中 * @method setSendClassicChildren 经典布局,开启切割菜单时,菜单数据传入到 navMenu 下的菜单中 * @method getBreadcrumbIndexSetFilterRoutes 布局设置弹窗,开启切割菜单时,菜单数据传入到 navMenu 下的菜单中 @@ -15,6 +17,8 @@ declare type MittType = { openSetingsDrawer?: string; restoreDefault?: string; + refreshUserInfo: T; + setSendColumns: T; setSendColumnsChildren: T; setSendClassicChildren: T; getBreadcrumbIndexSetFilterRoutes?: string;