38 lines
		
	
	
		
			1012 B
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			1012 B
		
	
	
	
		
			Plaintext
		
	
	
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)
 | 
						|
}
 |