You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

53 lines
1.8 KiB

import { useDictStoreWithOut, Option } from '@/store/modules/dict';
1 year ago
import { dictDataInfo } from '@/api/system/dict/dictData';
import { DictData } from '@/api/system/dict/dictData.model';
/**
*
*
* api的问题(abortController )
* index表单 modal drawer总共会请求三次
*
* todo store
1 year ago
*/
const dictRequestCache = new Map<string, Promise<DictData[] | void>>();
1 year ago
export function getDict(dictName: string): DictData[] {
const { getDict, setDictInfo } = useDictStoreWithOut();
// 这里拿到
const dictList = getDict(dictName);
// 检查请求状态缓存
if (dictList.length === 0 && !dictRequestCache.has(dictName)) {
dictRequestCache.set(
dictName,
dictDataInfo(dictName).then((resp) => {
1 year ago
// 缓存到store 这样就不用重复获取了
// 内部处理了push的逻辑 这里不用push
1 year ago
setDictInfo(dictName, resp);
// 移除请求状态缓存
dictRequestCache.delete(dictName);
}),
);
1 year ago
}
return dictList;
}
export function getDictOptions(dictName: string): Option[] {
const { getDictOptions, setDictInfo } = useDictStoreWithOut();
const dictOptionList = getDictOptions(dictName);
// 检查请求状态缓存
if (dictOptionList.length === 0 && !dictRequestCache.has(dictName)) {
dictRequestCache.set(
dictName,
dictDataInfo(dictName).then((resp) => {
1 year ago
// 缓存到store 这样就不用重复获取了
// 内部处理了push的逻辑 这里不用push
1 year ago
setDictInfo(dictName, resp);
// 移除请求状态缓存
dictRequestCache.delete(dictName);
}),
);
1 year ago
}
return dictOptionList;
}