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.

82 lines
2.3 KiB

4 months ago
import { http } from '/nerv-lib/util/http';
let dictionary: any;
let dicCodeValueMap: any;
export function getDicCodeValue() {
asyncLoadDictTree();
return dicCodeValueMap;
}
export function getDictionary() {
return dictionary;
}
export function asyncLoadDictTree(): Promise<any> {
return http
.get('/api/community/objs/DictTree')
.then((res) => {
if (res) {
const response = res;
if (response && response['success']) {
const mainMap = {};
const codeValueMap = {};
transferData(response, 'data', mainMap);
setCodeValueMap(response, 'data', codeValueMap);
dicCodeValueMap = codeValueMap;
dictionary = mainMap;
return mainMap;
}
}
})
.catch((error) => {
console.log(error);
});
}
export function transferData(data, attri, mainMap): {} {
const objs = data[attri];
if (objs && objs instanceof Array && objs.length > 0) {
objs.forEach((it) => {
mainMap[it['dictCode']] = it;
mainMap[it['dictCode'] + '_' + 'name'] = it['dictName'];
if (it['subList'] && it['subList'] instanceof Array) {
mainMap[it['dictCode'] + '_' + 'subList'] = it['subList'];
transferData(it, 'subList', mainMap);
} else {
mainMap[it['dictCode'] + '_' + 'subList'] = [];
return;
}
});
} else {
return '';
}
}
export function setCodeValueMap(data: any, attri: any, map: any) {
const objs = data[attri];
if (objs && objs instanceof Array && objs.length > 0) {
objs.forEach((it) => {
map[it['dictParentCode'] + '_' + it['dictValue']] = it['dictName'];
map[it['dictParentCode'] + '_' + it['dictCode']] = it['dictName'];
if (it['subList'] && it['subList'] instanceof Array) {
setCodeValueMap(it, 'subList', map);
} else {
// map[it['dictParentCode'] + '_' + it['dictCode']] = '';
// map[it['dictParentCode'] + '_' + it['dictValue']] = '';
return;
}
});
} else {
return;
}
}
/**
* code和value获取显示名
* @param code code
* @param value
*/
export function getCodeNameFromValue(code, value): string {
console.log(code, value, 'code, value');
const name =
getDicCodeValue() && getDicCodeValue()[code + '_' + value]
? getDicCodeValue()[code + '_' + value]
: '';
return name;
}