68 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
import createControlComponent from "./createControlComponent";
 | 
						|
import createFormComponent from "./createFormComponent";
 | 
						|
 | 
						|
export default {
 | 
						|
  name: 'dynamicForm',
 | 
						|
  props: {
 | 
						|
    /**
 | 
						|
     * 表单配置项
 | 
						|
     */
 | 
						|
    formOption: {
 | 
						|
      type: Object,
 | 
						|
      default: () => ({})
 | 
						|
    },
 | 
						|
    /**
 | 
						|
     * 控件列表配置项
 | 
						|
     */
 | 
						|
    options: {
 | 
						|
      type: Array,
 | 
						|
      default: () => []
 | 
						|
    },
 | 
						|
 | 
						|
    /**
 | 
						|
     * 表单全局列配置
 | 
						|
     */
 | 
						|
    colOption: {
 | 
						|
      type: Object,
 | 
						|
      default: () => ({})
 | 
						|
    },
 | 
						|
 | 
						|
    /**
 | 
						|
     * 表单全局行配置
 | 
						|
     */
 | 
						|
    rowOption: {
 | 
						|
      type: Object,
 | 
						|
      default: null
 | 
						|
    }
 | 
						|
  },
 | 
						|
  methods: {
 | 
						|
 | 
						|
    /**
 | 
						|
     * 校验结果,正确触发回调
 | 
						|
     * @param cb
 | 
						|
     */
 | 
						|
    validate (cb) {},
 | 
						|
 | 
						|
    /**
 | 
						|
     * 重置表单内容
 | 
						|
     */
 | 
						|
    reset () {}
 | 
						|
  },
 | 
						|
 | 
						|
  render (h) {
 | 
						|
    return h(
 | 
						|
      'a-form-model',
 | 
						|
      this.formOption,
 | 
						|
      this.options.map(({ type, formItemOption, elementOption }) => {
 | 
						|
        return createFormComponent(
 | 
						|
          h, formItemOption,
 | 
						|
          this.rowOption,
 | 
						|
          this.colOption,
 | 
						|
          [createControlComponent(h, type, elementOption)]
 | 
						|
        )
 | 
						|
      })
 | 
						|
    )
 | 
						|
 | 
						|
  }
 | 
						|
}
 |