Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

在一个菜单下,如何配置多个隐藏菜单? #722

Closed
zuihou opened this issue Jun 7, 2021 · 6 comments
Closed

在一个菜单下,如何配置多个隐藏菜单? #722

zuihou opened this issue Jun 7, 2021 · 6 comments

Comments

@zuihou
Copy link

zuihou commented Jun 7, 2021

看到您的菜单路由支持配置hideMenu属性,简单尝试了一下,好像不支持以下场景,请问能否支持一下:

希望配置的菜单效果:

  • 系统设置

    • 菜单管理 (显示)
    • 新增菜单 (隐藏)
  • 应用管理 (显示) (期望:只有1级菜单,点击后可以跳转到页面)

    • 新增应用 (隐藏) (期望:作为隐藏的2级菜单,点击后可以跳转到新增应用页面。)
    • 编辑应用 (隐藏) (期望:作为隐藏的2级菜单,点击后可以跳转到编辑应用页面。)
  • 常用设置 (显示) (期望:只有1级菜单,点击后可以跳转到页面)

    • 字典管理 (显示) (期望:若子集没有配置隐藏菜单或显示的菜单,则将他视为可以跳转到具体页面的
    • 参数管理 (显示) (期望:因为子集全都是隐藏菜单,所以点击后能正常跳转到参数管理页面 且面包屑要显示为 常用设置 / 参数管理
      • 新增或者编辑参数管理 (隐藏) (期望: 在参数管理页面点击后,能跳转到新增或编辑页面, 且面包屑要显示为 常用设置 / 参数管理 / 新增参数

    上面的名词解释:

  • 显示: 能在左侧菜单显示出来

  • 隐藏:在左侧菜单不显示,但需要添加到路由中。能调用 router.replace 等方法进行跳转

期望的功能:

  • 任意级别(1级、2级、N级)的菜单,都判断一下子菜单是否全部是隐藏菜单。 若是,让该菜单能正常点击和跳转,并且所有的子菜单的面包屑都能正常显示层级结构; 若否,就按项目现在的逻辑即可(点击时,只能展开,不能跳转)。

我多次调整路由数据测试了一下,目前的逻辑,若任意菜单的所有子菜单全部设置为hideMenu=true,就会出现下图的情况:

image
image

但在实际项目中,经常需要下图的功能:
image

@lhtuling
Copy link

lhtuling commented Jun 8, 2021

@tyunh
Copy link

tyunh commented Jun 8, 2021

https://vvbin.cn/doc-next/guide/basic/route.html#meta-%E9%85%8D%E7%BD%AE%E8%AF%B4%E6%98%8E
自带的有吧?

目前是有 hideMenu 属性,但当某个菜单的所有子菜单全部设置为 hideMenu = true 后,会出现下图的问题。
image

且会视为该菜单“不可点击”

@mynetfan
Copy link
Collaborator

mynetfan commented Jun 8, 2021

要隐藏所有子菜单,使用meta.hideChildrenInMenu: true,而不是把所有子菜单的meta.hideMenu设为true

@tyunh
Copy link

tyunh commented Jun 8, 2021

要隐藏所有子菜单,使用meta.hideChildrenInMenu: true,而不是把所有子菜单的meta.hideMenu设为true

例子: 设置 参数管理 hideChildrenInMenu=true后,只能将所有的子菜单(新增参数编辑参数)隐藏,但点击 参数管理 无法进入 参数管理页面

@mynetfan
Copy link
Collaborator

mynetfan commented Jun 8, 2021

请合并 df8cd86
之后在 参数管理 路由的meta中设置hideChildrenInMenu: true,并且添加 redirect: '点击菜单要打开的子页面path',即可满足你的需求

@mynetfan
Copy link
Collaborator

mynetfan commented Jun 8, 2021

大概类似这样:
image

其中redirect表示在点击菜单时重定向到path为/permission/back/page的子路由,hideChildrenInMenu表示在菜单中隐藏所有子菜单,currentActiveMenu则表示直接打开子路由时,激活指定path的菜单(因为子路由没有在菜单中,所以需要currentActiveMenu指定当前激活的菜单)

@github-actions github-actions bot locked and limited conversation to collaborators Sep 21, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants