mirror of
https://github.com/continew-org/continew-admin-ui.git
synced 2025-11-09 06:57:14 +08:00
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
This commit is contained in:
@@ -98,8 +98,13 @@ const activeMenu = ref<string[]>([])
|
||||
// 左侧的菜单
|
||||
const leftMenus = ref<RouteRecordRaw[]>([])
|
||||
// 获取左侧菜单
|
||||
const getLeftMenus = (key: string) => {
|
||||
const arr = searchTree(cloneMenuRoutes, (i) => i.path === key, { children: 'children' })
|
||||
const getLeftMenus = (currentRoute?: RouteRecordRaw, key?: string) => {
|
||||
// 优先从路由的 meta.activeMenu 获取key,如果没有则使用path
|
||||
const menuKey = currentRoute
|
||||
? (currentRoute.meta?.activeMenu as string) || currentRoute.path
|
||||
: key || ''
|
||||
|
||||
const arr = searchTree(cloneMenuRoutes, (i) => i.path === menuKey, { children: 'children' })
|
||||
const rootPath = arr.length ? arr[0].path : ''
|
||||
const obj = cloneMenuRoutes.find((i) => i.path === rootPath)
|
||||
activeMenu.value = obj ? [obj.path] : ['']
|
||||
@@ -111,7 +116,7 @@ const onMenuItemClick = (key: string) => {
|
||||
window.open(key)
|
||||
return
|
||||
}
|
||||
setTimeout(() => getLeftMenus(key))
|
||||
setTimeout(() => getLeftMenus(undefined, key))
|
||||
const obj = topMenus.value.find((i) => i.path === key)
|
||||
if (obj && obj.redirect === 'noRedirect') return
|
||||
router.push({ path: key })
|
||||
@@ -119,9 +124,9 @@ const onMenuItemClick = (key: string) => {
|
||||
|
||||
watch(
|
||||
() => route.path,
|
||||
(newPath) => {
|
||||
() => {
|
||||
nextTick(() => {
|
||||
getLeftMenus(newPath)
|
||||
getLeftMenus(route)
|
||||
})
|
||||
},
|
||||
{ immediate: true },
|
||||
|
||||
Reference in New Issue
Block a user