Skip to content

Commit 069175b

Browse files
zk020106Charles7c
authored andcommitted
fix: 修复混合布局模式下详情页左侧菜单消失问题
Closes #ID5HXD Co-authored-by: kiki1373639299<zkai0106@163.com> # message auto-generated for no-merge-commit merge: !13 merge menu-error into dev fix: 修复混合布局模式下详情页左侧菜单消失问题 Created-by: kiki1373639299 Commit-by: kiki1373639299 Merged-by: Charles_7c Description: <!-- 非常感谢您的 PR!在提交之前,请务必确保您 PR 的代码经过了完整测试,并且通过了代码规范检查。 --> <!-- 在 [] 中输入 x 来勾选) --> ## PR 类型 <!-- 您的 PR 引入了哪种类型的变更? --> <!-- 只支持选择一种类型,如果有多种类型,可以在更新日志中增加 “类型” 列。 --> - [ ] 新 feature - [X] Bug 修复 - [ ] 功能增强 - [ ] 文档变更 - [ ] 代码样式变更 - [ ] 重构 - [ ] 性能改进 - [ ] 单元测试 - [ ] CI/CD - [ ] 其他 ## PR 目的 <!-- 描述一下您的 PR 解决了什么问题。如果可以,请链接到相关 issues。 --> ## 解决方案 修改 src/layout/LayoutMix.vue 中的 getLeftMenus 函数: - 优先从路由的 meta.activeMenu 获取菜单 key - 如果没有 activeMenu,则使用 path - 确保详情页能正确关联到父菜单并显示其子菜单 <!-- 详细描述您是如何解决的问题 --> ## PR 测试 <!-- 如果可以,请为您的 PR 添加或更新单元测试。 --> <!-- 请描述一下您是如何测试 PR 的。例如:创建/更新单元测试或添加相关的截图。 --> ## Changelog | 模块 | Changelog | Related issues | |-----|-----------| -------------- | | src/layout/LayoutMix.vue | src/layout/LayoutMix.vue:101-112: 重构 getLeftMenus 函数,优先使用 meta.activeMenu 作为菜单 key | Closes #ID5HXD | <!-- 如果有多种类型的变更,可以在变更日志表中增加 “类型” 列,该列的值与上方 “PR 类型” 相同。 --> <!-- Related issues 格式为 Closes #<issue号>,或者 Fixes #<issue号>,或者 Resolves #<issue号>。 --> ## 其他信息 <!-- 请描述一下还有哪些注意事项。例如:如果引入了一个不向下兼容的变更,请描述其影响。 --> ## 提交前确认 - [X] PR 代码经过了完整测试,并且通过了代码规范检查 - [X] 已经完整填写 Changelog,并链接到了相关 issues - [X] PR 代码将要提交到 dev 分支 See merge request: continew/continew-admin-ui!13
1 parent 704aacc commit 069175b

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

src/layout/LayoutMix.vue

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,13 @@ const activeMenu = ref<string[]>([])
9898
// 左侧的菜单
9999
const leftMenus = ref<RouteRecordRaw[]>([])
100100
// 获取左侧菜单
101-
const getLeftMenus = (key: string) => {
102-
const arr = searchTree(cloneMenuRoutes, (i) => i.path === key, { children: 'children' })
101+
const getLeftMenus = (currentRoute?: RouteRecordRaw, key?: string) => {
102+
// 优先从路由的 meta.activeMenu 获取key,如果没有则使用path
103+
const menuKey = currentRoute
104+
? (currentRoute.meta?.activeMenu as string) || currentRoute.path
105+
: key || ''
106+
107+
const arr = searchTree(cloneMenuRoutes, (i) => i.path === menuKey, { children: 'children' })
103108
const rootPath = arr.length ? arr[0].path : ''
104109
const obj = cloneMenuRoutes.find((i) => i.path === rootPath)
105110
activeMenu.value = obj ? [obj.path] : ['']
@@ -111,17 +116,17 @@ const onMenuItemClick = (key: string) => {
111116
window.open(key)
112117
return
113118
}
114-
setTimeout(() => getLeftMenus(key))
119+
setTimeout(() => getLeftMenus(undefined, key))
115120
const obj = topMenus.value.find((i) => i.path === key)
116121
if (obj && obj.redirect === 'noRedirect') return
117122
router.push({ path: key })
118123
}
119124
120125
watch(
121126
() => route.path,
122-
(newPath) => {
127+
() => {
123128
nextTick(() => {
124-
getLeftMenus(newPath)
129+
getLeftMenus(route)
125130
})
126131
},
127132
{ immediate: true },

0 commit comments

Comments
 (0)