DictMeta.js 1015 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. import { mergeRecursive } from "@/utils/ruoyi";
  2. import DictOptions from './DictOptions'
  3. /**
  4. * @classdesc 字典元数据
  5. * @property {String} type 类型
  6. * @property {Function} request 请求
  7. * @property {String} label 标签字段
  8. * @property {String} value 值字段
  9. */
  10. export default class DictMeta {
  11. constructor(options) {
  12. this.type = options.type
  13. this.request = options.request,
  14. this.responseConverter = options.responseConverter
  15. this.labelField = options.labelField
  16. this.valueField = options.valueField
  17. this.lazy = options.lazy === true
  18. }
  19. }
  20. /**
  21. * 解析字典元数据
  22. * @param {Object} options
  23. * @returns {DictMeta}
  24. */
  25. DictMeta.parse= function(options) {
  26. let opts = null
  27. if (typeof options === 'string') {
  28. opts = DictOptions.metas[options] || {}
  29. opts.type = options
  30. } else if (typeof options === 'object') {
  31. opts = options
  32. }
  33. opts = mergeRecursive(DictOptions.metas['*'], opts)
  34. return new DictMeta(opts)
  35. }