import type { CSSProperties } from 'vue' import { ColProps, ComponentProps, ComponentName } from '@/types/components' import type { AxiosPromise } from 'axios' export type FormSetPropsType = { field: string path: string value: any } export type FormValueType = string | number | string[] | number[] | boolean | undefined | null export type FormItemProps = { labelWidth?: string | number required?: boolean rules?: Recordable error?: string showMessage?: boolean inlineMessage?: boolean style?: CSSProperties } export type FormSchema = { // 唯一值 field: string // 标题 label?: string // 提示 labelMessage?: string // col组件属性 colProps?: ColProps // 表单组件属性,slots对应的是表单组件的插槽,规则:${field}-xxx,具体可以查看element-plus文档 componentProps?: { slots?: Recordable } & ComponentProps // formItem组件属性 formItemProps?: FormItemProps // 渲染的组件 component?: ComponentName // 初始值 value?: FormValueType // 是否隐藏 hidden?: boolean // 远程加载下拉项 api?: () => AxiosPromise }