import DictOptions from './DictOptions'
|
import DictData from './DictData'
|
|
export default function dictConverter(dict, dictMeta) {
|
const label = determineDictField(dict, dictMeta.labelField, ...DictOptions.DEFAULT_LABEL_FIELDS)
|
const value = determineDictField(dict, dictMeta.valueField, ...DictOptions.DEFAULT_VALUE_FIELDS)
|
const children = determineDictField(dict, dictMeta.childrenField, ...DictOptions.DEFAULT_CHILDREN_FIELDS)
|
|
// 递归处理子字典
|
const childDicts = dict[children]
|
let childDictData = []
|
if (childDicts && childDicts.length > 0) {
|
childDictData = childDicts.map(childDict => dictConverter(childDict, dictMeta))
|
}
|
|
return new DictData(dict[label], dict[value], dict, childDictData)
|
// return new DictData(dict[label], dict[value], dict, dict[children])
|
}
|
|
/**
|
* 确定字典字段
|
* @param {DictData} dict
|
* @param {...String} fields
|
*/
|
function determineDictField(dict, ...fields) {
|
return fields.find(f => Object.prototype.hasOwnProperty.call(dict, f))
|
}
|