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