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.
38 lines
1015 B
38 lines
1015 B
import { mergeRecursive } from "@/utils/ruoyi"; |
|
import DictOptions from './DictOptions' |
|
|
|
/** |
|
* @classdesc 字典元数据 |
|
* @property {String} type 类型 |
|
* @property {Function} request 请求 |
|
* @property {String} label 标签字段 |
|
* @property {String} value 值字段 |
|
*/ |
|
export default class DictMeta { |
|
constructor(options) { |
|
this.type = options.type |
|
this.request = options.request, |
|
this.responseConverter = options.responseConverter |
|
this.labelField = options.labelField |
|
this.valueField = options.valueField |
|
this.lazy = options.lazy === true |
|
} |
|
} |
|
|
|
|
|
/** |
|
* 解析字典元数据 |
|
* @param {Object} options |
|
* @returns {DictMeta} |
|
*/ |
|
DictMeta.parse= function(options) { |
|
let opts = null |
|
if (typeof options === 'string') { |
|
opts = DictOptions.metas[options] || {} |
|
opts.type = options |
|
} else if (typeof options === 'object') { |
|
opts = options |
|
} |
|
opts = mergeRecursive(DictOptions.metas['*'], opts) |
|
return new DictMeta(opts) |
|
}
|
|
|