From 93723e70d32c2451c7984798ec5b4d9947437e37 Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期三, 01 四月 2026 09:45:25 +0800
Subject: [PATCH] #前端

---
 rsf-design/src/components/core/forms/art-search-bar/index.vue   |    6 +
 rsf-design/src/router/modules/index.js                          |    2 
 rsf-design/src/router/core/MenuProcessor.js                     |    6 +
 rsf-design/src/utils/sys/upgrade.js                             |    2 
 rsf-design/src/locales/langs/en.json                            |   28 ++++----
 rsf-design/src/plugins/echarts.js                               |    2 
 rsf-design/src/router/core/RouteRegistry.js                     |    4 +
 rsf-design/src/locales/langs/zh.json                            |   28 ++++----
 rsf-design/src/components/core/layouts/art-header-bar/index.vue |   60 +------------------
 9 files changed, 48 insertions(+), 90 deletions(-)

diff --git a/rsf-design/src/components/core/forms/art-search-bar/index.vue b/rsf-design/src/components/core/forms/art-search-bar/index.vue
index 5d5ea8a..3a63224 100644
--- a/rsf-design/src/components/core/forms/art-search-bar/index.vue
+++ b/rsf-design/src/components/core/forms/art-search-bar/index.vue
@@ -175,7 +175,7 @@
     gutter: { required: false, default: 12 },
     isExpand: { required: false, default: false },
     labelPosition: { required: false, default: 'right' },
-    labelWidth: { required: false, default: '70px' },
+    labelWidth: { required: false, default: '100px' },
     showExpand: { required: false, default: true },
     defaultExpanded: { required: false, default: false },
     buttonLeftLimit: { required: false, default: 2 },
@@ -360,6 +360,10 @@
   .art-search-bar {
     padding: 15px 20px 0;
 
+    :deep(.el-form-item__label) {
+      white-space: nowrap;
+    }
+
     .action-column {
       flex: 1;
       max-width: 100%;
diff --git a/rsf-design/src/components/core/layouts/art-header-bar/index.vue b/rsf-design/src/components/core/layouts/art-header-bar/index.vue
index d43b54a..0e2cb59 100644
--- a/rsf-design/src/components/core/layouts/art-header-bar/index.vue
+++ b/rsf-design/src/components/core/layouts/art-header-bar/index.vue
@@ -43,11 +43,6 @@
           @click="reload"
         />
 
-        <!-- 蹇�熷叆鍙� -->
-        <ArtFastEnter v-if="shouldShowFastEnter && width >= headerBarFastEnterMinWidth">
-          <ArtIconButton icon="ri:function-line" class="ml-3" />
-        </ArtFastEnter>
-
         <!-- 闈㈠寘灞� -->
         <ArtBreadcrumb
           v-if="(shouldShowBreadcrumb && isLeftMenu) || (shouldShowBreadcrumb && isDualMenu)"
@@ -109,16 +104,6 @@
           </template>
         </ElDropdown>
 
-        <!-- 閫氱煡鎸夐挳 -->
-        <ArtIconButton
-          v-if="shouldShowNotification"
-          icon="ri:notification-2-line"
-          class="notice-button relative"
-          @click="visibleNotice"
-        >
-          <div class="absolute top-2 right-2 size-1.5 !bg-danger rounded-full"></div>
-        </ArtIconButton>
-
         <!-- 鑱婂ぉ鎸夐挳 -->
         <ArtIconButton
           v-if="shouldShowChat"
@@ -131,21 +116,9 @@
 
         <!-- 璁剧疆鎸夐挳 -->
         <div v-if="shouldShowSettings">
-          <ElPopover :visible="showSettingGuide" placement="bottom-start" :width="190" :offset="0">
-            <template #reference>
-              <div class="flex-cc">
-                <ArtIconButton icon="ri:settings-line" class="setting-btn" @click="openSetting" />
-              </div>
-            </template>
-            <template #default>
-              <p
-                >{{ $t('topBar.guide.title')
-                }}<span :style="{ color: systemThemeColor }"> {{ $t('topBar.guide.theme') }} </span
-                >銆� <span :style="{ color: systemThemeColor }"> {{ $t('topBar.guide.menu') }} </span
-                >{{ $t('topBar.guide.description') }}
-              </p>
-            </template>
-          </ElPopover>
+          <div class="flex-cc">
+            <ArtIconButton icon="ri:settings-line" class="setting-btn" @click="openSetting" />
+          </div>
         </div>
 
         <!-- 涓婚鍒囨崲鎸夐挳 -->
@@ -162,9 +135,6 @@
 
     <!-- 鏍囩椤� -->
     <ArtWorkTab />
-
-    <!-- 閫氱煡 -->
-    <ArtNotification v-model:value="showNotice" ref="notice" />
   </div>
 </template>
 
@@ -196,23 +166,17 @@
   const {
     shouldShowMenuButton,
     shouldShowRefreshButton,
-    shouldShowFastEnter,
     shouldShowBreadcrumb,
     shouldShowGlobalSearch,
     shouldShowFullscreen,
-    shouldShowNotification,
     shouldShowChat,
     shouldShowLanguage,
     shouldShowSettings,
     shouldShowThemeToggle,
-    fastEnterMinWidth: headerBarFastEnterMinWidth
   } = useHeaderBar()
-  const { menuOpen, systemThemeColor, showSettingGuide, menuType, isDark, tabStyle } =
-    storeToRefs(settingStore)
+  const { menuOpen, showSettingGuide, menuType, isDark, tabStyle } = storeToRefs(settingStore)
   const { language } = storeToRefs(userStore)
   const { menuList } = storeToRefs(menuStore)
-  const showNotice = ref(false)
-  const notice = ref(null)
   const isLeftMenu = computed(() => menuType.value === MenuTypeEnum.LEFT)
   const isDualMenu = computed(() => menuType.value === MenuTypeEnum.DUAL_MENU)
   const isTopMenu = computed(() => menuType.value === MenuTypeEnum.TOP)
@@ -223,10 +187,6 @@
   const { isFullscreen, toggle: toggleFullscreen } = useFullscreen()
   onMounted(() => {
     initLanguage()
-    document.addEventListener('click', bodyCloseNotice)
-  })
-  onUnmounted(() => {
-    document.removeEventListener('click', bodyCloseNotice)
   })
   const toggleFullScreen = () => {
     toggleFullscreen()
@@ -261,18 +221,6 @@
   }
   const openSearchDialog = () => {
     mittBus.emit('openSearchDialog')
-  }
-  const bodyCloseNotice = (e) => {
-    if (!showNotice.value) return
-    const target = e.target
-    const isNoticeButton = target.closest('.notice-button')
-    const isNoticePanel = target.closest('.art-notification-panel')
-    if (!isNoticeButton && !isNoticePanel) {
-      showNotice.value = false
-    }
-  }
-  const visibleNotice = () => {
-    showNotice.value = !showNotice.value
   }
   const openChat = () => {
     mittBus.emit('openChat')
diff --git a/rsf-design/src/locales/langs/en.json b/rsf-design/src/locales/langs/en.json
index 8572b24..cdbac21 100644
--- a/rsf-design/src/locales/langs/en.json
+++ b/rsf-design/src/locales/langs/en.json
@@ -411,7 +411,7 @@
       "sessionList": "Sessions",
       "searchPlaceholder": "Search session titles",
       "noSessions": "No history sessions",
-      "sessionTitle": "Session %{id}",
+      "sessionTitle": "Session {id}",
       "pinAction": "Pin session",
       "unpinAction": "Unpin session",
       "renameAction": "Rename session",
@@ -431,9 +431,9 @@
       "toolStatusRunning": "Running",
       "collapseDetail": "Hide Details",
       "viewDetail": "View Details",
-      "toolInput": "Input: %{value}",
-      "toolOutput": "Output summary: %{value}",
-      "toolError": "Error: %{value}",
+      "toolInput": "Input: {value}",
+      "toolOutput": "Output summary: {value}",
+      "toolError": "Error: {value}",
       "hasSummary": "Summary",
       "noSummary": "No Summary",
       "hasFacts": "Facts",
@@ -454,24 +454,24 @@
       "send": "Send",
       "renameDialogTitle": "Rename Session",
       "sessionTitleField": "Session Title",
-        "requestMetric": "Req: %{value}",
-        "sessionMetric": "Session: %{id}",
-        "promptMetric": "Prompt: %{value}",
-        "modelMetric": "Model: %{value}",
+        "requestMetric": "Req: {value}",
+        "sessionMetric": "Session: {id}",
+        "promptMetric": "Prompt: {value}",
+        "modelMetric": "Model: {value}",
         "promptLabel": "Prompt",
         "modelLabel": "Model",
         "modelSelectorLabel": "Chat Model",
         "modelSelectorHint": "Switching only affects subsequent replies in this session and does not change the global default model.",
         "modelSwitchFailed": "Failed to switch the chat model",
         "defaultModelSuffix": "(Default)",
-        "mcpMetric": "MCP: %{value}",
-        "historyMetric": "History: %{value}",
+        "mcpMetric": "MCP: {value}",
+        "historyMetric": "History: {value}",
         "mcpLabel": "MCP",
         "historyLabel": "History",
-        "recentMetric": "Recent: %{value}",
-      "elapsedMetric": "Elapsed: %{value} ms",
-      "firstTokenMetric": "First token: %{value} ms",
-      "tokenMetric": "Tokens: prompt %{prompt} / completion %{completion} / total %{total}"
+        "recentMetric": "Recent: {value}",
+      "elapsedMetric": "Elapsed: {value} ms",
+      "firstTokenMetric": "First token: {value} ms",
+      "tokenMetric": "Tokens: prompt {prompt} / completion {completion} / total {total}"
     }
   },
   "table": {
diff --git a/rsf-design/src/locales/langs/zh.json b/rsf-design/src/locales/langs/zh.json
index 716e9cd..e6b3a50 100644
--- a/rsf-design/src/locales/langs/zh.json
+++ b/rsf-design/src/locales/langs/zh.json
@@ -413,7 +413,7 @@
       "sessionList": "浼氳瘽鍒楄〃",
       "searchPlaceholder": "鎼滅储浼氳瘽鏍囬",
       "noSessions": "鏆傛棤鍘嗗彶浼氳瘽",
-      "sessionTitle": "浼氳瘽 %{id}",
+      "sessionTitle": "浼氳瘽 {id}",
       "pinAction": "缃《浼氳瘽",
       "unpinAction": "鍙栨秷缃《",
       "renameAction": "閲嶅懡鍚嶄細璇�",
@@ -433,9 +433,9 @@
       "toolStatusRunning": "鎵ц涓�",
       "collapseDetail": "鏀惰捣璇︽儏",
       "viewDetail": "鏌ョ湅璇︽儏",
-      "toolInput": "鍏ュ弬: %{value}",
-      "toolOutput": "缁撴灉鎽樿: %{value}",
-      "toolError": "閿欒: %{value}",
+      "toolInput": "鍏ュ弬: {value}",
+      "toolOutput": "缁撴灉鎽樿: {value}",
+      "toolError": "閿欒: {value}",
       "hasSummary": "鏈夋憳瑕�",
       "noSummary": "鏃犳憳瑕�",
       "hasFacts": "鏈変簨瀹�",
@@ -456,24 +456,24 @@
       "send": "鍙戦��",
       "renameDialogTitle": "閲嶅懡鍚嶄細璇�",
       "sessionTitleField": "浼氳瘽鏍囬",
-        "requestMetric": "Req: %{value}",
-        "sessionMetric": "Session: %{id}",
-        "promptMetric": "Prompt: %{value}",
-        "modelMetric": "Model: %{value}",
+        "requestMetric": "Req: {value}",
+        "sessionMetric": "Session: {id}",
+        "promptMetric": "Prompt: {value}",
+        "modelMetric": "Model: {value}",
         "promptLabel": "Prompt",
         "modelLabel": "Model",
         "modelSelectorLabel": "瀵硅瘽妯″瀷",
         "modelSelectorHint": "鍒囨崲鍚庝粎褰卞搷褰撳墠浼氳瘽鍚庣画鍥炲锛屼笉浼氭敼鍔ㄥ叏灞�榛樿妯″瀷銆�",
         "modelSwitchFailed": "鍒囨崲瀵硅瘽妯″瀷澶辫触",
         "defaultModelSuffix": "(榛樿)",
-        "mcpMetric": "MCP: %{value}",
-        "historyMetric": "History: %{value}",
+        "mcpMetric": "MCP: {value}",
+        "historyMetric": "History: {value}",
         "mcpLabel": "MCP",
         "historyLabel": "History",
-        "recentMetric": "Recent: %{value}",
-      "elapsedMetric": "鑰楁椂: %{value} ms",
-      "firstTokenMetric": "棣栧寘: %{value} ms",
-      "tokenMetric": "Tokens: prompt %{prompt} / completion %{completion} / total %{total}"
+        "recentMetric": "Recent: {value}",
+      "elapsedMetric": "鑰楁椂: {value} ms",
+      "firstTokenMetric": "棣栧寘: {value} ms",
+      "tokenMetric": "Tokens: prompt {prompt} / completion {completion} / total {total}"
     }
   },
   "table": {
diff --git a/rsf-design/src/plugins/echarts.js b/rsf-design/src/plugins/echarts.js
index 20cf76c..7490d4c 100644
--- a/rsf-design/src/plugins/echarts.js
+++ b/rsf-design/src/plugins/echarts.js
@@ -21,6 +21,7 @@
   GeoComponent,
   VisualMapComponent
 } from 'echarts/components'
+import { LegacyGridContainLabel } from 'echarts/features'
 import { CanvasRenderer } from 'echarts/renderers'
 echarts.use([
   // 鍥捐〃绫诲瀷
@@ -43,6 +44,7 @@
   BrushComponent,
   GeoComponent,
   VisualMapComponent,
+  LegacyGridContainLabel,
   // 娓叉煋鍣�
   CanvasRenderer
 ])
diff --git a/rsf-design/src/router/core/MenuProcessor.js b/rsf-design/src/router/core/MenuProcessor.js
index c750811..8a65b88 100644
--- a/rsf-design/src/router/core/MenuProcessor.js
+++ b/rsf-design/src/router/core/MenuProcessor.js
@@ -16,7 +16,8 @@
   redirect: WORKBENCH_PATH,
   meta: {
     title: 'menus.dashboard.title',
-    icon: 'ri:home-smile-2-line'
+    icon: 'ri:home-smile-2-line',
+    staticRoute: true
   },
   children: [
     {
@@ -27,7 +28,8 @@
         title: 'menus.dashboard.console',
         icon: 'ri:home-smile-2-line',
         keepAlive: false,
-        fixedTab: true
+        fixedTab: true,
+        staticRoute: true
       }
     }
   ]
diff --git a/rsf-design/src/router/core/RouteRegistry.js b/rsf-design/src/router/core/RouteRegistry.js
index cd59c62..23b0219 100644
--- a/rsf-design/src/router/core/RouteRegistry.js
+++ b/rsf-design/src/router/core/RouteRegistry.js
@@ -29,6 +29,10 @@
       (this.router.getRoutes?.() || []).map((route) => route?.path).filter(Boolean)
     )
     menuList.forEach((route) => {
+      if (route?.meta?.staticRoute) {
+        return
+      }
+
       const routeConfig = this.transformer.transform(route)
       const routePath = routeConfig?.path
 
diff --git a/rsf-design/src/router/modules/index.js b/rsf-design/src/router/modules/index.js
index 906f9ab..063f69c 100644
--- a/rsf-design/src/router/modules/index.js
+++ b/rsf-design/src/router/modules/index.js
@@ -1,10 +1,8 @@
-import { dashboardRoutes } from './dashboard'
 import { systemRoutes } from './system'
 import { resultRoutes } from './result'
 import { exceptionRoutes } from './exception'
 
 const routeModules = [
-  dashboardRoutes,
   systemRoutes,
   resultRoutes,
   exceptionRoutes
diff --git a/rsf-design/src/utils/sys/upgrade.js b/rsf-design/src/utils/sys/upgrade.js
index 2f6631f..6bc6974 100644
--- a/rsf-design/src/utils/sys/upgrade.js
+++ b/rsf-design/src/utils/sys/upgrade.js
@@ -131,7 +131,7 @@
   async executeUpgrade(storedVersion, legacyStorage) {
     try {
       if (!upgradeLogList.value.length) {
-        console.warn('[Upgrade] 鍗囩骇鏃ュ織鍒楄〃涓虹┖')
+        this.setStoredVersion(StorageConfig.CURRENT_VERSION)
         return
       }
       const requireReLogin = this.shouldRequireReLogin(storedVersion)

--
Gitblit v1.9.1