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.
|
|
|
|
import { mergeRecursive } from "@/utils/ruoyi";
|
|
|
|
|
import dictConverter from './DictConverter'
|
|
|
|
|
|
|
|
|
|
export const options = {
|
|
|
|
|
metas: {
|
|
|
|
|
'*': {
|
|
|
|
|
/**
|
|
|
|
|
* 字典请求,方法签名为function(dictMeta: DictMeta): Promise
|
|
|
|
|
*/
|
|
|
|
|
request: (dictMeta) => {
|
|
|
|
|
// console.log(`load dict ${dictMeta.type}`)
|
|
|
|
|
return Promise.resolve([])
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* 字典响应数据转换器,方法签名为function(response: Object, dictMeta: DictMeta): DictData
|
|
|
|
|
*/
|
|
|
|
|
responseConverter,
|
|
|
|
|
labelField: 'label',
|
|
|
|
|
valueField: 'value',
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* 默认标签字段
|
|
|
|
|
*/
|
|
|
|
|
DEFAULT_LABEL_FIELDS: ['label', 'name', 'title'],
|
|
|
|
|
/**
|
|
|
|
|
* 默认值字段
|
|
|
|
|
*/
|
|
|
|
|
DEFAULT_VALUE_FIELDS: ['value', 'id', 'uid', 'key'],
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 映射字典
|
|
|
|
|
* @param {Object} response 字典数据
|
|
|
|
|
* @param {DictMeta} dictMeta 字典元数据
|
|
|
|
|
* @returns {DictData}
|
|
|
|
|
*/
|
|
|
|
|
function responseConverter(response, dictMeta) {
|
|
|
|
|
const dicts = response.content instanceof Array ? response.content : response
|
|
|
|
|
if (dicts === undefined) {
|
|
|
|
|
console.warn(`no dict data of "${dictMeta.type}" found in the response`)
|
|
|
|
|
return []
|
|
|
|
|
}
|
|
|
|
|
return dicts.map(d => dictConverter(d, dictMeta))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function mergeOptions(src) {
|
|
|
|
|
mergeRecursive(options, src)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default options
|