form.d.ts 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. import type { CSSProperties } from 'vue'
  2. declare global {
  3. declare type ComponentName =
  4. | 'Radio'
  5. | 'RadioButton'
  6. | 'Checkbox'
  7. | 'CheckboxButton'
  8. | 'Input'
  9. | 'Autocomplete'
  10. | 'InputNumber'
  11. | 'Select'
  12. | 'Cascader'
  13. | 'Switch'
  14. | 'Slider'
  15. | 'TimePicker'
  16. | 'DatePicker'
  17. | 'Rate'
  18. | 'ColorPicker'
  19. | 'Transfer'
  20. | 'Divider'
  21. | 'TimeSelect'
  22. | 'SelectV2'
  23. | 'InputPassword'
  24. | 'Editor'
  25. declare type ColProps = {
  26. span?: number
  27. xs?: number
  28. sm?: number
  29. md?: number
  30. lg?: number
  31. xl?: number
  32. tag?: string
  33. }
  34. declare type FormValueType = string | number | string[] | number[] | boolean | undefined | null
  35. declare type FormItemProps = {
  36. labelWidth?: string | number
  37. required?: boolean
  38. rules?: Recordable
  39. error?: string
  40. showMessage?: boolean
  41. inlineMessage?: boolean
  42. style?: CSSProperties
  43. }
  44. declare type ComponentOptions = {
  45. label?: string
  46. value?: FormValueType
  47. disabled?: boolean
  48. key?: string | number
  49. children?: ComponentOptions[]
  50. options?: ComponentOptions[]
  51. } & Recordable
  52. declare type ComponentOptionsAlias = {
  53. labelField?: string
  54. valueField?: string
  55. }
  56. declare type ComponentProps = {
  57. optionsAlias?: ComponentOptionsAlias
  58. options?: ComponentOptions[]
  59. optionsSlot?: boolean
  60. } & Recordable
  61. declare type FormSchema = {
  62. // 唯一值
  63. field: string
  64. // 标题
  65. label?: string
  66. // 提示
  67. labelMessage?: string
  68. // col组件属性
  69. colProps?: ColProps
  70. // 表单组件属性,slots对应的是表单组件的插槽,规则:${field}-xxx,具体可以查看element-plus文档
  71. componentProps?: { slots?: Recordable } & ComponentProps
  72. // formItem组件属性
  73. formItemProps?: FormItemProps
  74. // 渲染的组件
  75. component?: ComponentName
  76. // 初始值
  77. value?: FormValueType
  78. // 是否隐藏
  79. hidden?: boolean
  80. // 远程加载下拉项
  81. api?: <T = any>() => AxiosPromise<T>
  82. }
  83. declare type FormSetPropsType = {
  84. field: string
  85. path: string
  86. value: any
  87. }
  88. }