vue-ele-form-yd
Version: 
基于 element-ui 的数据驱动表单组件
45 lines (44 loc) • 1.44 kB
JavaScript
import componetMixin from './componentMixin'
import mock from '../tools/mock'
/***********
 * 控件对象定义
 */
export default {
  inheritAttrs: false,
  mixins: [componetMixin],
  props: {
    disabled: Boolean,
    readonly: Boolean,
    options: {
      type: Array,
      default() {
        return []
      }
    }
  },
  methods: {
    // 模拟数据
    mockData() {
      const Mock = mock()
      if (Mock) {
        if (this.defDesc.mock === true && this.mockRule !== false) {
          if (this.mockRule === 'custom') {
            // 自定义mock数据
            this.handleChange(this.getCustomMockData())
          } else if (this.mockRule === 'checkbox' || this.mockRule === 'radio') {
            // checkbox 和 radio 类型, 需要传递 options 参数
            this.handleChange(Mock.Random[this.mockRule](this.options))
          } else if (this.mockRule) {
            this.handleChange(Mock.mock(this.mockRule))
          } else {
            console.error(this.componentName + ' 类型组件没有mock规则, 请手动配置mock规则, 例如: mock: \'@float\', 详细参考: http://mockjs.com/examples.html#DPD')
          }
        } else if (typeof this.defDesc.mock === 'string') {
          this.handleChange(Mock.mock(this.defDesc.mock))
        } else if (typeof this.defDesc.mock === 'function') {
          this.handleChange(this.defDesc.mock(Mock.mock, Mock.Random))
        }
      }
    }
  }
}