|
|
@ -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) } }); |
|
|
|
}; |
|
|
|