diff --git a/frontend/ruoyi-ui/src/permission.js b/frontend/ruoyi-ui/src/permission.js index 7e3b5bf..8c8d5b0 100644 --- a/frontend/ruoyi-ui/src/permission.js +++ b/frontend/ruoyi-ui/src/permission.js @@ -8,6 +8,7 @@ import { isRelogin } from '@/utils/request' import useUserStore from '@/store/modules/user' import useSettingsStore from '@/store/modules/settings' import usePermissionStore from '@/store/modules/permission' +import useBaseDataStore from '@/store/modules/baseData' NProgress.configure({ showSpinner: false }) @@ -33,7 +34,17 @@ router.beforeEach((to, from, next) => { // 判断当前用户是否已拉取完user_info信息 useUserStore().getInfo().then(() => { isRelogin.show = false - usePermissionStore().generateRoutes().then(accessRoutes => { + + // 并行加载:路由 + 基础数据 + const baseDataStore = useBaseDataStore() + Promise.all([ + usePermissionStore().generateRoutes(), + // 预加载基础数据(后台静默加载,不阻塞页面跳转) + baseDataStore.fetchRegionTree(), + baseDataStore.fetchGrades(), + baseDataStore.fetchSubjects(), + baseDataStore.fetchClasses() + ]).then(([accessRoutes]) => { // 根据roles权限生成可访问的路由表 accessRoutes.forEach(route => { if (!isHttp(route.path)) { diff --git a/frontend/ruoyi-ui/src/views/business/base/region/index.vue b/frontend/ruoyi-ui/src/views/business/base/region/index.vue index c3067d8..f3ebd12 100644 --- a/frontend/ruoyi-ui/src/views/business/base/region/index.vue +++ b/frontend/ruoyi-ui/src/views/business/base/region/index.vue @@ -141,14 +141,13 @@ const rules = { regionName: [{ required: true, message: '请输入区域名称', trigger: 'blur' }] } -// 获取区域列表(树形)- 使用后端已构建好的树接口 +// 获取区域列表(树形)- 使用 Store 缓存 const getList = async () => { loading.value = true try { - const res = await request.get('/business/region/tree') - if (res.code === 200) { - tableData.value = res.data || [] - } + // 使用 Store,自动缓存 + const data = await baseDataStore.fetchRegionTree() + tableData.value = data || [] } finally { loading.value = false } @@ -156,10 +155,8 @@ const getList = async () => { // 获取区域树选项(用于下拉选择) const getRegionOptions = async () => { - const res = await request.get('/business/region/tree') - if (res.code === 200) { - regionOptions.value = [{ regionId: 0, regionName: '顶级区域', children: res.data || [] }] - } + const data = await baseDataStore.fetchRegionTree() + regionOptions.value = [{ regionId: 0, regionName: '顶级区域', children: data || [] }] } // 展开/折叠