From 4259deb19122a4807d50c99ed4a95405ebe4a47c Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期五, 10 四月 2026 08:40:18 +0800
Subject: [PATCH] #

---
 rsf-design/src/router/guards/beforeEach.js |   29 +++++++++++++++++++++++++++--
 1 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/rsf-design/src/router/guards/beforeEach.js b/rsf-design/src/router/guards/beforeEach.js
index 96c6a21..8db28b3 100644
--- a/rsf-design/src/router/guards/beforeEach.js
+++ b/rsf-design/src/router/guards/beforeEach.js
@@ -8,6 +8,7 @@
 import { RoutesAlias } from '../routesAlias'
 import { staticRoutes } from '../routes/staticRoutes'
 import { loadingService } from '@/utils/ui'
+import { warmMenuIcons } from '@/utils/ui/iconify-loader'
 import { useCommon } from '@/hooks/core/useCommon'
 import { useWorktabStore } from '@/store/modules/worktab'
 import { fetchGetUserInfo, normalizeUserInfo } from '@/api/auth'
@@ -20,6 +21,8 @@
 let routeInitFailed = false
 let routeInitInProgress = false
 let pendingRouteLocation = null
+let pendingWarmupMenuList = null
+let homeWarmupTriggered = false
 function getPendingLoading() {
   return pendingLoading
 }
@@ -33,6 +36,8 @@
   routeInitFailed = false
   routeInitInProgress = false
   pendingRouteLocation = null
+  pendingWarmupMenuList = null
+  homeWarmupTriggered = false
 }
 function createRouteLocation(route) {
   return {
@@ -196,10 +201,12 @@
       throw new Error('鑾峰彇鑿滃崟鍒楄〃澶辫触锛岃閲嶆柊鐧诲綍')
     }
     routeRegistry?.register(menuList)
-    routeRegistry?.warm(menuList)
+    pendingWarmupMenuList = menuList
+    homeWarmupTriggered = false
     const menuStore = useMenuStore()
     menuStore.setMenuList(menuList)
     menuStore.addRemoveRouteFns(routeRegistry?.getRemoveRouteFns() || [])
+    warmMenuIcons(menuList)
     IframeRouteManager.getInstance().save()
     useWorktabStore().validateWorktabs(router)
     const initialTargetLocation = createRouteLocation(to)
@@ -295,11 +302,29 @@
 function isUnauthorizedError(error) {
   return isHttpError(error) && error.code === ApiStatus.unauthorized
 }
+function triggerHomeRouteWarmup(currentPath, homePath) {
+  if (homeWarmupTriggered || !routeRegistry || !pendingWarmupMenuList?.length) {
+    return
+  }
+  if (!currentPath || !homePath || currentPath !== homePath) {
+    return
+  }
+  homeWarmupTriggered = true
+  const schedule = globalThis.requestAnimationFrame
+    ? (task) => globalThis.requestAnimationFrame(() => globalThis.requestAnimationFrame(task))
+    : (task) => setTimeout(task, 120)
+  schedule(() => {
+    routeRegistry?.warm(pendingWarmupMenuList, {
+      limit: Number.MAX_SAFE_INTEGER
+    })
+  })
+}
 export {
   getPendingLoading,
   getRouteInitFailed,
   resetPendingLoading,
   resetRouteInitState,
   resetRouterState,
-  setupBeforeEachGuard
+  setupBeforeEachGuard,
+  triggerHomeRouteWarmup
 }

--
Gitblit v1.9.1