From d885be3fea3eec1b8c51797aff1eaf93c769b417 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Tue, 13 Jan 2026 20:45:22 +0800 Subject: [PATCH] =?UTF-8?q?feat(settings):=20=E7=A6=81=E6=AD=A2=E9=9A=90?= =?UTF-8?q?=E8=97=8F=E9=A6=96=E9=A1=B5=E5=92=8C=E8=AE=BE=E7=BD=AE=E9=A1=B5?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=20(#1231)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Initial plan * feat(settings): 禁止隐藏首页和设置页菜单 Co-authored-by: devhaozi <115467771+devhaozi@users.noreply.github.com> * fix: 修复父子路由禁用状态覆盖问题 Co-authored-by: devhaozi <115467771+devhaozi@users.noreply.github.com> * docs: 改进 forbiddenHiddenMenus 注释说明 Co-authored-by: devhaozi <115467771+devhaozi@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: devhaozi <115467771+devhaozi@users.noreply.github.com> --- web/src/views/setting/SettingBase.vue | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/web/src/views/setting/SettingBase.vue b/web/src/views/setting/SettingBase.vue index b465f951..9f6874cb 100644 --- a/web/src/views/setting/SettingBase.vue +++ b/web/src/views/setting/SettingBase.vue @@ -57,11 +57,16 @@ const channels = [ } ] +// 不允许隐藏的菜单项(首页 home/home-index 和设置页 setting/setting-index) +const forbiddenHiddenMenus = ['home', 'home-index', 'setting', 'setting-index'] + // 获取菜单选项 const getOption = (route: RouteType): TreeSelectOption => { + const isDisabled = forbiddenHiddenMenus.includes(route.name as string) let menuItem: TreeSelectOption = { label: route.meta?.title ? translateTitle(route.meta.title) : route.name, - key: route.name + key: route.name, + disabled: isDisabled } const visibleChildren = route.children @@ -73,9 +78,12 @@ const getOption = (route: RouteType): TreeSelectOption => { if (visibleChildren.length === 1) { // 单个子路由处理 const singleRoute = visibleChildren[0] + const isSingleDisabled = forbiddenHiddenMenus.includes(singleRoute.name as string) menuItem.label = singleRoute.meta?.title ? translateTitle(singleRoute.meta.title) : singleRoute.name + // 父路由或子路由任一被禁止则禁用该菜单项 + menuItem.disabled = isDisabled || isSingleDisabled const visibleItems = singleRoute.children ? singleRoute.children.filter((item: RouteType) => item.name && !item.isHidden) : []