Преглед изворни кода

1、优化页面数据初始化速度,dict 数据初始化性能提升110倍

jian.tao пре 1 година
родитељ
комит
bbe2b930fb
1 измењених фајлова са 13 додато и 8 уклоњено
  1. 13 8
      Web/src/stores/userInfo.ts

+ 13 - 8
Web/src/stores/userInfo.ts

@@ -2,7 +2,7 @@ import { defineStore } from 'pinia';
 import { Local, Session } from '/@/utils/storage';
 import Watermark from '/@/utils/watermark';
 import { useThemeConfig } from '/@/stores/themeConfig';
-import {i18n} from "/@/i18n";
+import { i18n } from "/@/i18n";
 
 import { getAPI } from '/@/utils/axios-utils';
 import { SysAuthApi, SysConstApi, SysDictTypeApi } from '/@/api-services/api';
@@ -41,14 +41,19 @@ export const useUserInfo = defineStore('userInfo', {
 
 		// 存储字典信息到浏览器缓存
 		async setDictList() {
-			this.dictList = await getAPI(SysDictTypeApi).apiSysDictTypeAllDictListGet().then(res => res.data.result ?? {});
-			for (const key in this.dictList) {
-				// 处理字典国际化
-				this.dictList[key].forEach((e: any) => setDictLangMessage(e));
+			var dictList = await getAPI(SysDictTypeApi).apiSysDictTypeAllDictListGet().then(res => res.data.result ?? {});
+			var dictListTemp = JSON.parse(JSON.stringify(dictList));
+
+			await Promise.all(Object.keys(dictList).map(async (key) => {
+				dictList[key].forEach((da: any, index: any) => {
+					setDictLangMessageAsync(dictListTemp[key][index]);
+				});
+				// 如果 key 以 "Enum" 结尾,则转换 value 为数字
 				if (key.endsWith("Enum")) {
-					this.dictList[key].forEach((e: any) => e.value = Number(e.value));
+					dictListTemp[key].forEach((e: any) => e.value = Number(e.value));
 				}
-			}
+			}))
+			this.dictList = dictListTemp;
 		},
 
 		// 获取当前用户信息
@@ -125,7 +130,7 @@ export const useUserInfo = defineStore('userInfo', {
 });
 
 // 处理字典国际化, 默认显示字典中的label值
-const setDictLangMessage = (dict: any) => {
+const setDictLangMessageAsync = async (dict: any) => {
 	dict.langMessage = `message.dictType.${dict.typeCode}_${dict.value}`;
 	const text = t(dict.langMessage);
 	dict.label = text !== dict.langMessage ? text : dict.label;