fix: 获取字典数据方法
This commit is contained in:
@@ -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) } });
|
||||
};
|
||||
|
@@ -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: '请选择能耗种类',
|
||||
|
Reference in New Issue
Block a user