# 表格表单 FormTable
解决表单交互中常用的开发重复性高、配置复杂等问题。
# 基础示例
表单字段: []
复制代码
# options 设置
options
标准规范值是[{label: "苹果", value: "apple", icon:"el-icon-apple", disabled: false }, ...]
options
值为["苹果", ...]
文本数组时,label
与value
皆为 "苹果"options
值为{apple: "苹果", banana: "香蕉", ...}
对象时,label
为值苹果
,value
为对应键值apple
options
值为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> 所有事件 | - |