From 03167ec81343fb8bf8967da13768a1137c89b24d Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期三, 01 四月 2026 08:48:46 +0800
Subject: [PATCH] #前端
---
rsf-design/src/router/core/MenuProcessor.js | 80 ++++++++++++++++++++++++++++++++++++++++
1 files changed, 80 insertions(+), 0 deletions(-)
diff --git a/rsf-design/src/router/core/MenuProcessor.js b/rsf-design/src/router/core/MenuProcessor.js
index f031609..c750811 100644
--- a/rsf-design/src/router/core/MenuProcessor.js
+++ b/rsf-design/src/router/core/MenuProcessor.js
@@ -5,6 +5,34 @@
import { RoutesAlias } from '../routesAlias'
import { adaptBackendMenuTree } from '../adapters/backendMenuAdapter'
import { formatMenuTitle } from '@/utils'
+
+const WORKBENCH_PATH = '/dashboard/console'
+const WORKBENCH_ROOT_PATH = '/dashboard'
+
+const WORKBENCH_MENU = Object.freeze({
+ name: 'Dashboard',
+ path: WORKBENCH_ROOT_PATH,
+ component: RoutesAlias.Layout,
+ redirect: WORKBENCH_PATH,
+ meta: {
+ title: 'menus.dashboard.title',
+ icon: 'ri:home-smile-2-line'
+ },
+ children: [
+ {
+ name: 'Console',
+ path: 'console',
+ component: WORKBENCH_PATH,
+ meta: {
+ title: 'menus.dashboard.console',
+ icon: 'ri:home-smile-2-line',
+ keepAlive: false,
+ fixedTab: true
+ }
+ }
+ ]
+})
+
class MenuProcessor {
/**
* 鑾峰彇鑿滃崟鏁版嵁
@@ -17,6 +45,7 @@
} else {
menuList = await this.processBackendMenu()
}
+ menuList = this.prependWorkbenchMenu(menuList)
this.validateMenuPaths(menuList)
return this.normalizeMenuPaths(menuList)
}
@@ -206,5 +235,56 @@
}
return `/${path}`
}
+
+ prependWorkbenchMenu(menuList) {
+ if (!Array.isArray(menuList)) {
+ return [this.createWorkbenchMenu()]
+ }
+
+ const hasWorkbench = menuList.some((item) => this.containsWorkbenchMenu(item))
+ if (hasWorkbench) {
+ return menuList
+ }
+
+ return [this.createWorkbenchMenu(), ...menuList]
+ }
+
+ createWorkbenchMenu() {
+ return {
+ ...WORKBENCH_MENU,
+ meta: {
+ ...WORKBENCH_MENU.meta
+ },
+ children: WORKBENCH_MENU.children.map((child) => ({
+ ...child,
+ meta: {
+ ...child.meta
+ }
+ }))
+ }
+ }
+
+ isWorkbenchMenu(item) {
+ if (!item || typeof item !== 'object') {
+ return false
+ }
+ const path = String(item.path || '')
+ const component = String(item.component || '')
+ return (
+ path === WORKBENCH_ROOT_PATH ||
+ path === WORKBENCH_PATH ||
+ component === WORKBENCH_PATH
+ )
+ }
+
+ containsWorkbenchMenu(item) {
+ if (this.isWorkbenchMenu(item)) {
+ return true
+ }
+ if (!Array.isArray(item?.children) || item.children.length === 0) {
+ return false
+ }
+ return item.children.some((child) => this.containsWorkbenchMenu(child))
+ }
}
export { MenuProcessor }
--
Gitblit v1.9.1