fix: 获取字典数据方法

This commit is contained in:
xuziqiang
2024-07-08 17:44:07 +08:00
parent aab4c9a600
commit ab17c4a1f9
2 changed files with 35 additions and 4 deletions

View File

@@ -1,3 +1,6 @@
import { get } from 'lodash-es';
import { http } from '/nerv-lib/util/http';
/***
*配置接口 格式 module:Array<resource>
*/
@@ -6,4 +9,32 @@ export const apiModule = {
};
export const BASE_URL = '/carbon-smart';
export const dict = `${BASE_URL}/client/dict/listByKey`;
interface dictHttpConfig {
api?: string;
keyField?: string;
params: object;
transform?: Function;
}
/**
* 获取字典数据(首次获取,后续读缓存)
*/
export const dict = async ({
api = `${BASE_URL}/client/dict/listByKey`,
params = {},
keyField = 'dicKey',
transform = (res: any) => res,
}: dictHttpConfig) => {
const dictMap = JSON.parse(sessionStorage.getItem('dictMap') || '{}') as Object;
const key = get(params, keyField) as keyof typeof dictMap;
if (!dictMap.hasOwnProperty(key)) {
const res = await http.post(api, params);
const options = get(transform(res), `data.${key}`);
dictMap[key] = options;
sessionStorage.setItem('dictMap', JSON.stringify(dictMap));
}
return Promise.resolve({ data: { data: get(dictMap, key) } });
};

View File

@@ -137,10 +137,10 @@ export const treeConfig = (orgId) => {
component: 'NsSelectApi',
autoSubmit: true,
componentProps: {
api: dict,
params: { dicKey: 'ENERGY_TYPE' },
api: () => dict({ params: { dicKey: 'ENERGY_TYPE' } }),
// params: { dicKey: 'ENERGY_TYPE' },
immediate: true,
resultField: 'data.ENERGY_TYPE',
// resultField: 'data.ENERGY_TYPE',
labelField: 'cnValue',
valueField: 'cnValue',
placeholder: '请选择能耗种类',