# 表格表单 FormTable
解决表单交互中常用的开发重复性高、配置复杂等问题。
# 基础示例
表单字段: []
复制代码
# options 设置
options标准规范值是[{label: "苹果", value: "apple", icon:"el-icon-apple", disabled: false }, ...]options值为["苹果", ...]文本数组时,label与value皆为 "苹果"options值为{apple: "苹果", banana: "香蕉", ...}对象时,label为值苹果,value为对应键值appleoptions值为async (query?)=>{ return await $axios.get("options") }的 Promise 函数时,会在表单生成前执行,query 参数是当{type: "select",remote:true}时应用于远程搜索。type: "cascader"级联选择框只支持应用标准规范值。
export declare interface ElAutoOption {
icon?: string;
label: string;
type?: "primary" | "warning" | "info" | "danger";
value: string | number;
disabled?: boolean;
children?: ElAutoOption[];
props?: Record<string, any>;
}
export declare type ElAutoMixinOptions =
| Record<string | number, string | number>
| Array<string | ElAutoOption>;
表单字段: []
复制代码
# 自定义动态插槽
支持对表单项自定义动态插槽,通过设置 slot 属性,可设置boolean、string类型,设置为 true 时,slot 名为属性的字段名,slot 为字符串类型时,多个字段可复用一个插槽,插槽携带参数如下:
item字段属性row当前行记录name字段名index索引
表单字段: []
复制代码
# 属性
# Props
| 参数 | 描述 | 类型 | 可选值 | 默认值 |
|---|---|---|---|---|
| v-model | 表单数据对象 | Array<Record<string,any>> | - | [] |
| data | 表单项配置 | Record<name:string,FormTableField> | - | {} |
| maxlength | 限制最大行数量 | number | - | -1 |
| table-props | <el-table> Prop | Record<string, any> | - | {} |
| hidden-add | 隐藏添加按钮 | boolean | - | false |
| hidden-option | 隐藏操作列 | boolean | - | false |
[prop:string] | 继承 <el-form> 所有 Prop | any | - | - |
# FormTableField
| 参数 | 描述 | 类型 | 默认值 |
|---|---|---|---|
| 标签相关设置 | |||
| label | 标签名 | string | - |
| labelTooltip | 表单项提示 | string / boolean | false |
| width | 列宽度 | string | - |
| value | 字段默认值 | any | - |
| 控件相关设置 | |||
| type | 必填,控件类型 | 参照 type Enum 表 | - |
| slot | 自定义动态插槽,设为 true 时,slot 为 name,详情可参考 自定义动态插槽示例 | string / boolean | false |
| component | 组件名称,type 为 component 时有效 | string | - |
[prop:string] | 可直接追加 type 对应组件的 prop | any | - |
| disabled | 是否禁用字段 | boolean | false |
| placeholder | 占位符 | array | - |
| on | 设置 type 对应组件的事件 | object | {} |
| rangeName | 日期范围名 type 为 daterange/timerange/datetimerange/numberrange 选填 | array<string> | false |
| suffixTime | type 为 daterange 选填,为日期范围增加 00:00:00 - 23:59:59 | boolean | false |
| options | 控件选项,type 为 check/radio/select 必填,详情可参考 options 设置 | object / array / Promise | [] |
| remote | 支持接口搜索,type 为 select 有效 | boolean | false |
| 表单相关设置 | |||
| required | 是否必填 | boolean | false |
| addRules | 追加验证规则 | array | - |
| columnProps | <el-table-column> Prop 属性设置 | Record<string,any> | - |
# type Enum
| 值 | 对应组件 | 描述 |
|---|---|---|
| text | <el-input type="text"> | 文本输入框 |
| password | <el-input type="password"> | 密码输入框 |
| textarea | <el-input type="textarea"> | 文本域 |
| number | <el-input-number> | 计数器 |
| numberrange | <el-number-range> | 数值范围 |
| date | <el-date-picker type="date"> | 日期选择 |
| year | <el-date-picker type="year"> | 年份选择 |
| month | <el-date-picker type="month"> | 月份选择 |
| week | <el-date-picker type="week"> | 周选择 |
| dates | <el-date-picker type="dates"> | 多日期选择 |
| datetime | <el-date-picker type="datetime"> | 日期时间选择 |
| daterange | <el-date-picker type="daterange"> | 日期范围选择 |
| monthrange | <el-date-picker type="date"> | 月份范围选择 |
| datetimerange | <el-date-picker type="datetimerange"> | 日期时间范围选择 |
| time | <el-time-picker> | 时间选择 |
| timerange | <el-time-picker is-range> | 时间范围选择 |
| radio | <el-radio> | 单选框 |
| radiobutton | <el-radio-button> | 单选框 |
| check | <el-checkbox> | 复选框 |
| select | <el-select> | 选择框 |
| slider | <el-slider> | 滑动选择框 |
| switch | <el-switch> | 开关 |
| cascader | <el-cascader> | 多级选择框 |
| rate | <el-rate> | 评分 |
# Method
| 方法名 | 描述 | 参数 | 返回 |
|---|---|---|---|
| validate() | 对整个表单进行校验的方法 | valid:boolean | Promise<void> | void |
| validateField() | 对部分表单字段进行校验的方法 | prop:array | string, callback?:(errMsg:string)=>void,index?:number | - |
| clearValidate() | 对部分表单字段进行校验的方法 | prop?:array | string | - |
| getModel() | 获取表格数据 | - | - |
| setModel() | 设置表格 | model:Record<string,any>[] | - |
| addRow() | 添加行 | row?:Record<string,any> | - |
| setRow() | 修改行或行内某项 | index: number, modelOrName: Record<string, any> | string, value?: any | - |
| removeRow() | 获取表单所有参数 | index:number | - |
# Slot
| 插槽 | 描述 |
|---|---|
| add_perpend | 首部操作区前置 |
| add_append | 首部操作区追加 |
| table_prepend | 表格上方操作区 |
# Scope Slot
| 插槽名称 | 描述 |
|---|---|
| 自定义名称 | 自定义表单项的内容,参数为 { item, row, name } |
| row_option | 自定义表格右侧操作列的内容,参数为 { row, index } |
# Event
| 事件名称 | 说明 | 回调参数 |
|---|---|---|
| [event:name] | 可直接追加 <el-form> 所有事件 | - |