一、json格式

用户传入数组,每项为表单项

二、定义表单项类型

根据element-plus组件的使用,定义必传和可选项以及类型

1.type 渲染的element-plus组件元素名

2.value 表单的值

3.label 标签名

4.prop 表单域model的字段,使用验证和清空时必填

5.rules 表单项验证规则

element验证是基于async-validator工具的,验证项类型直接从github上复制即可。

6.attrs 表单元素特有的属性

用来传递某个表单元素特有的属性,通过v-bind=’ $attrs ‘,给element-plus原组件绑定

  1. // 表单每一项的配置选项
  2. export interface FormOptions {
  3. // 表单项显示的元素
  4. type: 'cascader' | 'checkbox' | 'checkbox-group' | 'checkbox-button' | 'color-picker' |
  5. 'date-picker' | 'input' | 'input-number' | 'radio' | 'radio-group' | 'radio-button' | 'rate' |
  6. 'select' | 'option' | 'slider' | 'switch' | 'time-picker' | 'time-select' |
  7. 'transfer' | 'upload' | 'editor',
  8. // 表单项的值
  9. value?: any,
  10. // 表单项label
  11. label?: string,
  12. // 表单项的标识
  13. prop?: string,
  14. // 表单项的验证规则
  15. rules?: RuleItem[],
  16. // 表单项的占位符
  17. placeholder?: string,
  18. // 表单元素特有的属性
  19. attrs?: {
  20. // css样式
  21. style?: CSSProperties,
  22. clearable?: boolean,
  23. showPassword?: boolean,
  24. disabled?: boolean,
  25. },
  26. // 表单项的子元素
  27. children?: FormOptions[],
  28. // 处理上传组件的属性和方法
  29. uploadAttrs?: {
  30. action: string,
  31. headers?: object,
  32. method?: 'post' | 'put' | 'patch',
  33. multiple?: boolean,
  34. data?: any,
  35. name?: string,
  36. withCredentials?: boolean,
  37. showFileList?: boolean,
  38. drag?: boolean,
  39. accept?: string,
  40. thumbnailMode?: boolean,
  41. fileList?: any[],
  42. listType?: 'text' | 'picture' | 'picture-card',
  43. autoUpload?: boolean,
  44. disabled?: boolean,
  45. limit?: number,
  46. }
  47. }