Appearance
AdTableForm组件
通过配置JSON快速构建表单列表
,支持动态添加删除,动态验证
按钮权限控制
标准的列表的数据结构
js
const res = {
data: {
records: [],
},
};
表单列表配置
自定义只读
readOnly
可以是boolean
,也可以是函数
,接收2个参数,第一个
参数是一行的数据,第二个
参数是第几行- 案例第二行,性别只读
同一列通过不同的规则,渲染不同的下拉框选项
optionsRule
是一个函数函数
,接收2个参数,第一个
参数是一行的数据,第二个
参数是第几行- 案例商户号
AdTableForm Prop
属性名 | 说明 | 类型 | 默认值 | 属性 |
---|---|---|---|---|
model-value / v-model | 绑定值 | Record<string, any> | — | — |
table | 表格配置 | Partial<TableProps<T>> | — | 查看 |
columns | 列配置 | Array<Partial<FormColumn<T>>> | — | 查看 |
events | 表格事件配置 | Partial<TableEmits<T>> | — | 查看 |
handleTableHeaderClick | 表头点击回调 | — | — | |
handleTableRowClick | 行点击回调 | — | — | |
isAutoLoadable | 是否自动加载数据 | boolean | true | — |
api | 数据获取 API | — | — | |
reqHandler | 请求参数处理器 | — | — | |
respHandler | 响应数据处理器 | — | — | |
globalReadOnly | 全局只读 | boolean | false | — |
minQuantity | 限制最小数量 | number | 1 | — |
maxQuantity | 限制最大数量 | number | — | — |
showAdded | 是否展示新增按钮 | boolean | true | — |
showDelete | 是否展示删除按钮 | boolean | true | — |
submit | 接收表单验证成功的数据 | (row: T[]) => void | true | — |
类型声明
显示类型声明
ts
import type { TableColumnCtx, TableProps } from 'element-plus';
import { TableEmits } from '../table/types';
import { ComponentsProps } from '../form';
export type FormColumn<T = any> = TableColumnCtx<T> & {
hidden: boolean;
tag: boolean;
readOnly: (row: T, index: number) => boolean | boolean;
} & ComponentsProps;
export interface AdTableFormPorps<M = any, T = any> {
modelValue?: Record<string, any>;
table?: Partial<TableProps<T>>;
events?: Partial<TableEmits<T>>;
globalReadOnly?: boolean;
columns?: Array<Partial<FormColumn<T>>>;
handleTableHeaderClick?: (key: string, column: Partial<FormColumn<T>>) => void;
handleTableRowClick?: (key: string, row: T, rowIndex: number) => void;
isAutoLoadable?: boolean;
api: (queryForm?: Record<string, any>) => Promise<any>;
reqHandler?: (queryForm?: M) => M;
respHandler?: (data?: Record<string, any>) => Record<string, any>;
minQuantity?: number;
maxQuantity?: number;
showAdded?: boolean;
showDelete?: boolean;
submit: (row: T[]) => void;
}
export interface AdTableFormEmits {}
export interface AdTableFormInstance {
fetchData: () => Promise<void>;
submit: () => void;
}