@zhangqingcq/plug-r-qw
Version:
A JS lib base on Vue and View-design, you can achieve some complex functions with simple code after install this lib.
1,104 lines (600 loc) • 50.1 kB
Markdown
## formR
表单组件,支持 formData 属性定义结构,formRules 定义规则,submit 方法提交收集到的数据,全局 UI 组件,直接用
### 属性
- formData 数组,表单结构数据,如:
```
[
{
type: 'input',
key: 'name',
label: '名称'
}
]
```
注意:从@zhangqingcq/plug-r-qw@1.3.0开始,formData 支持二维数组,为`分组表单`(单个表单内部表单项有分组,用于支持表单项布局和样式控制)结构数据,如:
```
[
[
{
type: 'input',
key: 'name',
label: '姓名'
},
{
type: 'input',
key: 'sex',
label: '性别'
}
],
[
{
type: 'input',
key: 'post',
label: '应聘岗位'
},
{
type: 'input',
key: 'pay',
label: '期望薪资'
}
]
]
```
这是一个表单,但是内部表单项可以分为“基本信息”和“应聘信息”两组,并在布局和样式上进行区分,具体可参考库内示例项目`formTeam`。
- formRules 对象,表单验证数据,如:
```
{
name: {
required: true
}
}
```
- showMessage 布尔对象,是否显示校验信息,默认:`true`
- labelWidth 数字,表单项标签宽度,默认:`160`
- contentWidth 字符串,表单项内容宽度,默认:`'70%'`
- itemWidth 数字,表单项内容宽度,用于行内表单,默认:`200`
- inline 布尔对象,是否为行内表单,默认:`false`
- teamClass 字符串,分组表单-组容器的 class,用于布局和样式控制,默认:`formTeamBox`
- showLongOkBt 布尔对象,是否展示长确定按钮,默认:`false`
- longOkBtTxt 字符串,长确定按钮内容,默认:`'确定'`
- showInlineOkBt 布尔对象,是否展示行内短确定按钮,默认:`false`
- inlineOkBtTxt 字符串,短确定按钮内容,默认:`'确定'`
- showInlineClearBt 布尔对象,是否展示行内短清空按钮,默认:`false`
- inlineClearBtTxt 字符串,短清空按钮内容,默认:`'清空'`
- btnLoading 布尔对象,提交按钮显示 loading,默认:`false`
- trim 布尔对象,提交数据时是否去掉数据中字符串的首尾空格,默认:`true`
- disabled 布尔对象,禁用整个表单,比如仅需要展示时,默认:`false`
### 事件
- on-submit 表单被提交,返回表单收集的数据
- on-item-change 表单项的值改变,返回对象,包含事件对象和改变的数据
- on-options-request-back 远程选项拉取接口数据回来后emit事件,返回当前组件结构数据副本和formR的valGroup副本,以便用户实现相关逻辑
- on-reset 表单被重置,清空按钮被点击时或主动调用重置方法时触发
- on-re-render 表单被重新渲染
### 方法
- resetForm 重置表单,会清空表单值并刷新表单 dom,异步方法,表单项默认值不会被清除
- reRenderForm 重新渲染表单,异步方法
- refreshFormDom 刷新表单 dom,异步方法
- setItemToValGroup 设置表单项的值,可添加新字段,例如添加隐藏字段,需要提交这个值,但页面不展示,valGroup 为 formR 组件私有属性,不可直接操作,故有该方法
- updateValGroup 更新表单项的值,只能更新已有字段,valGroup 为 formR 组件私有属性,不可直接操作,故有该方法,传参示例 1:`{info:'我是新的提示信息',name:'王五',...}`
- updateFormDataT 更新表单结构,例如设置或取消禁用,或者给 type 为 txt 的表单项(没有 key)赋值,formDataT 为 formR 组件私有属性,不可直接操作,故有该方法;
> 参数为一个对象(改变单个)或数组(改变多个),支持的属性:
>
> - index-必填-需要改变的formData项的索引值
> - indexB-当表单为`分组表单`时必填(表示表单项的二位数组索引第二位)
> - 需要改变的属性
> - 如要改变第二个表单组件的label和title, 则为:`{index:1,label:XXX,title:XX}`。
> - 注意:带选项的组件`changeOption`属性为`true`
时,不要调用该方法改变formR内部optionUrl,而应该直接在外面改变绑定到formData的数组对应子项的optionUrl.value
- reValidate 手动验证表单项
- validate 主动验证整个表单
- getValGroup 获取用户已填数据,和 submit 有显著区别,submit 会校验表单,并提交 on-submit 事件。
- changeLoading 主动改变表单提交按钮 loading 状态,在开启 btnLoading 的前提下
- submit 触发提交事件,一般不需要调用,会通过组件内部提交按钮触发
### 注意
- 不要调用组件私有方法,除非你非常清楚调用不会导致未知错误
- 组件的 formData 属性和 formRules 属性并非响应式,如果改变了这两个属性,可以调用 reRenderForm 方法重新渲染组件
- 在 formData 和 formRules 没有变化的情况下,只需要调用 resetForm 方法即可重置组件
- 在某些情况下,如更改了 formRules,但又不想重新渲染组件(要保留用户操作等),验证信息等不会更新,只需要调用 refreshFormDom 方法刷新 dom (不要调用 validate,否则会发生如后面没填的必填项都会变红等非预期表现)
- 组件除了 props 里的属性,formData 还支持丰富的配置,具体用法可以参考示例
- 短按钮和长按钮不要同时开启
### formData 元素支持字段说明(按字母升序)
- <a name='activeChange'>activeChange</a> 布尔对象,InputNumber(数字输入框)是否实时响应数据,设置为`false` 时,只会在失焦时更改数据,默认:`false`
- <a name='addTime'>addTime</a> 布尔对象,DatePicker 不选择时间(只选日期)时,但提交时需要带上时间,给该字段赋值`true` ,会自动加上 `00:00:00`,如果是区间,开始时间加`00:00:00`,结束时间加`23:59:59`,默认:`false`
- <a name='append'>append</a> 字符串,type 为 input 的表单项输入框头部内容。
- <a name='asyncOption'>asyncOption</a> 布尔对象,有选项的表单项的待选项数据来源于接口,需配合[optionUrl](#optionUrl) 使用,默认:`false`
- <a name='autosize'>autosize</a> 对象,自适应内容高度,仅在 textarea 类型下有效,可传入对象,如 { minRows: 2, maxRows: 6 },默认:`{minRows:2}`
- <a name='booleanVal'>booleanVal</a> 布尔对象,是否为布尔值,当需要表单项为布尔值时,给该字段赋值`true` ,该表单项可接受布尔值,提交时提交布尔值,注意:需要表单项类型支持(目前仅 select 单选和 radioGroup 支持),具体见后面的' type说明 ',默认:`false`
- <a name='borrowOption'>borrowOption</a> 字符串,有待选项的表单项,待选项数据来自另一表单项的待选项时(借用),需给该字段赋值另一表单项的 key 对应的值
- <a name='buttonType'>buttonType</a> 布尔对象,RadioGroup 是否为按钮样式,按钮样式即为一排连在一起的按钮,默认:`false`
- <a name='changeOnSelect'>changeOnSelect</a> 布尔对象,当此项为 true 时,点选每级菜单选项值都会发生变化,默认:`false`
- <a name='changeOption'>changeOption</a> 布尔对象/对象/数组
> - 布尔对象:有待选项的表单项,待选项数据从接口拉取时,拉取地址[optionUrl](#optionUrl)会改变,给该字段赋值 `true`
,需要改变时直接改变`optionUrl`即可(该场景下直接改变绑定到formData的数组中对应的optionUrl就行,不要调用updateFormDataT改变formR内部optionUrl,
updateFormDataT在此处不适用,详细使用方法见该库示例);
> - 对象:如果地址有的查询条件是另一表单项的值,则给该字段赋值对象,如: `{valKey:'name',key:'user'}`
表示其中一个查询条件是`&user=name表单项的值`,name表单项值改变,optionUrl就会自动改变,就会重新拉取待选项数据;
> - 数组:如果有多个这种条件,用数组存放他们,如:`[{valKey...},{...}]`
,多个条件必须都有值才会发起请求,如果某条件可有可无(有值就带上,没有就不要该条件),则设置该条件`notRequired`
属性为`true`
- <a name='class'>class</a> 字符串,表单项自定义样式类名,可用于自定义单个 formItem 独有样式,如果想传多个 class,class 之间用空格隔开,所有 type 类型皆支持该属性
- <a name='clearable'>clearable</a> 布尔对象,表单项是否可单独清空,当类型支持时才有效,具体见后面的' type说明 ',默认:`true`
- <a name='collectLabel'>collectLabel</a> 对象/数组,选项中除 val 外的其他字段(如label)连同值一并返回,如: `collectLabel:{valKey:'label',key:'name'}`,表示表单被提交时,该表单项选中项的 label 会以 name 被一起提交出去。
- <a name='data'>data</a> 对象,uploadGroup 远程上传时,一并携带的参数(除了文件)
- <a name='dateType'>dateType</a> 字符串,DatePicker的日期格式,可选值:date、daterange、datetime、datetimerange、year、month,如:`dateType:'daterange'`,注意:为区间时,需给 2 个 key,如:`key:'start',key2:'end'`
- <a name='dateOptions'>dateOptions</a> 对象,DatePicker 选择器额外配置,比如不可选日期与快捷选项,如:
```
dateOptions: {
disabledDate(date) {
return date && date.valueOf() < Date.now() - 86400000
}
}
```
- <a name='defaultVal'>defaultVal</a> 表单项的默认值,组件第一次渲染时会带上该值并在 UI 上回显,不是所有类型都支持该字段,具体见后面的'type说明'
- <a name='defaultVal2'>defaultVal2</a> 另一个默认值,原理同[key2](#key2),对应的也会有 defaultVal3 等
- <a name='disabled'>disabled</a> 布尔对象,禁用表单项,因为 formData 非响应式,自然该字段也非响应式,注意:这和组件 props 中 disabled 不是同一个,默认:`false`
- <a name='disableOptionByOthers'>disableOptionByOthers</a> 字符串/数组,根据其他表单项的值禁用待选项,
> - 例如:表单中有一个下拉框的 key 为 fruit,目标表单项(如这里的 fruit)待选项和当前表单项(设置 disableOptionByOthers
的表单项)待选项一样,`disableOptionByOthers:'fruit'`
表示 fruit 下拉框已选的选项,当前表单项不可再选(选项被禁用),当然目标表单项 type 不是非得
select,逻辑上只要当前表单项待选项的值和目标表单项的值相等,待选项就会被禁用;
> - 如果有多个条件,用数组存放他们,如:`disableOptionByOthers:['fruit','fruitB']`
- <a name='editable'>editable</a> 布尔对象,InputNumber(数字输入框)是否可编辑,为`false`时,只能通过 UI操作,不能通过光标修改,默认:`true`
- <a name='editorConfig'>editorConfig</a> 对象,编辑器配置,参考[wangEditor5 编辑器配置](https://www.wangeditor.com/v5/editor-config.html)
- <a name='filterable'>filterable</a> 布尔对象,是否支持筛选待选项,有的类型默认为真,有的为假,具体见后面的' type 说明'
- <a name='format'>format</a> 数组,uploadGroup 支持的格式,不限制的话不用设置该字段,如:`['jpg','png']`
- <a name='formatB'>format(date 组件)</a> 字符串,指定 date 组件返回日期格式,无特殊需求时可不传,组件有对应的默认格式,常用值: `'YYYY'、'MM'、'YYYY-MM-DD'、'YYYY-MM-DD HH:mm:ss'`,具体参考 Moment.js 官网
- <a name='formatC'>format(time 组件)</a> 字符串,指定 time 组件返回日期格式及操作界面维度,无特殊需求时可不传,组件有对应的默认格式,常用值: `'HH:mm:ss'、'HH:mm'、'HH'`
- <a name='height'>height</a> 正数/字符串,富文本编辑器 Pro 编辑区域高度,默认:`300`
- <a name='icon'>icon</a> 字符串,输入框尾部图标
- <a name='info'>info</a> 字符串,表单项的提示文字,位于表单项下面,一般为蓝色(在没自定义对应主题颜色时)
- <a name='inputType'>inputType</a> 字符串,表单项 type=input 时,可指定输入框类型(开启 password=true 时,inputType 自动变为 password),可选值同 h5 原生 input 的 type,以页面实际表现为准,不同值使用可靠性需自己验证,默认值:`'text'`
- <a name='itemBorder'>itemBorder</a> 布尔对象,RadioGroup 选项是否带边框,默认:`false`
- <a name='key'>key</a> 字符串,表单被提交时该项收集的数据所在字段,如:`{type:'input',key:'name'}`,用户输入`'Ricky'` ,提交时返回 `{name:'Ricky'}`
- <a name='key2'>key2</a> 字符串,除 key 以外的另一要收集的数据,如时间区间,key 为起始,key2 为终止,以此类推,如果有三个数据,则有 key3 等
- <a name='label'>label</a> 字符串,表单项标签
- <a name='length'>length</a> 数字,uploadGroup 支持上传文件的个数限制,不限制则不设置
- <a name='level'>level</a> 数字,层级,表单项特殊配置,如行政区域级联,具体见后面的' type 说明'
- <a name='likeInput'>likeInput</a> 布尔对象,表单项右侧区域模拟 input 样式,只有 type 为 txt 时有效,默认:`false`
- <a name='localOption'>localOption</a> 数组,表单项待选项为远程拉取时,使用该属性可设置固定的本地选项,排在远程选项前面
- <a name='manualUpload'>manualUpload</a> 布尔对象,uploadGroup 手动上传(本地上传,采集 file 对象),默认:`false`
- <a name='mapHeight'>mapHeight</a> 字符串,inputMap 的地图高度,默认值:`'250px'`
- <a name='max'>max</a> 数字,表单项最大值,需要类型支持时才生效
- <a name='maxLength'>maxLength</a> 数字,表单项值最大长度,需要类型支持时才生效
- <a name='maxSize'>maxSize</a> 数字,uploadGroup 支持上传的文件大小限制,不限制则不设置,注意不要带单位,默认单位 kb
- <a name='min'>min</a> 数字,表单项允许最小值,需要类型支持时才生效
- <a name='mode'>mode</a> 字符串,`'default'` 默认模式 - 集成了 wangEditor 所有功能;`'simple'` 简洁模式 - 仅有部分常见功能,但更加简洁易用,默认:`'simple'`
- <a name='multiple'>multiple</a> 布尔对象,select 是否支持多选;upload 选择文件时是否支持多选,多选时无法限制可传文件个数(用户第一次选择文件时想选多少个是限制不了的),建议多选和限制可传文件个数功能二选一,不要同时开启,默认:`false`
- <a name='numberVal'>numberVal</a> 布尔对象,表单项收集的值自动转换为`number`类型,需是类似`number`的字符串才能转( 如:`'32.2'`、`'-13.9'`),否则收集的值为字符串,默认:`false`
- <a name='onlyLastVal'>onlyLastVal</a> 布尔对象,只返回最后一级的值,表单项特殊配置,如远程数据级联,具体见后面的' type说明',默认: `true`
- <a name='onlyLastLabel'>onlyLastLabel</a> 布尔对象,只显示最后一级的 label,表单项特殊配置,如远程数据级联,具体见后面的' type 说明',默认:`true`
- <a name='options'>options</a> 数组,有待选项的表单项,待选项数据存放在该字段下,[详细说明](#optionsDetail) ,如: `{type:'select',key:'sex',options:[{label:'男',val:1},{label:'女',val:0}]}`
- <a name='optionFilter'>optionFilter</a> Function,筛选待选项的方法,入参是接口请求回来的待选项数据(不包含本地选项),返回处理后的待选项,如:
```
{
...,
optionFilter(d){return d?.filter?.(e => e && e.id !== 3)},
...
}
```
- <a name='optionLabel'>optionLabel</a> 字符串/数组,有待选项的表单项,待选项数据从接口拉取时,待选项 label对应接口数据的字段名,如: `optionLabel:'name'`;如果选项标签需要展示多个字段,则用数组存放他们,第一字段直接展示,后面字段括号内展示,括号紧跟第一字段。
- <a name='optionUrl'>optionUrl</a> 字符串,有待选项的表单项,待选项数据从接口拉取时,接口地址放在该字段下,需配合 [asyncOption](#asyncOption)、[optionLabel](#optionLabel)、[optionVal](#optionVal) 使用,注意:请求方式为 get,且不可更改;接口返回数据需为指定格式:
```
//第一种
{
data: [{name:'Jay',id:2},...],
...
}
//第二种
{
data:{
records: [{name:'Jay',id:2},...]
},
...
}
//第三种
[
{name:'',id:2},
...
]
```
- <a name='optionVal'>optionVal</a> 字符串,有待选项的表单项,待选项数据从接口拉取时,待选项 val 对应接口数据的字段名,如:`optionVal:'id'`
- <a name='password'>password</a> 布尔对象,是否显示切换密码图标,仅 input 支持,开启该属性输入框 clearable 自动变为 false,默认:`false`
- <a name='placeholder'>placeholder</a> 字符串,表单项占位符,不是所有类型都支持该字段,具体见后面的'type 说明'
- <a name='precision'>precision</a> 数字,InputNumber(数字输入框)的精度,即小数位数
- <a name='prefix'>prefix</a> 字符串,输入框头部图标
- <a name='prepend'>prepend</a> 字符串,type 为 input 的表单项输入框尾部内容。
- <a name='readonly'>readonly</a> 布尔对象,InputNumber(数字输入框)只读,和 disabled 效果类似,样式不一样,默认:`false`
- <a name='separator'>separator</a> 字符串,label 分隔符,默认:`'/'`
- <a name='show'>show</a> 对象/数组/回调函数,表单项显示设置,[详细说明](#showDetail)
> - 如:`{key:'name',val:['Ricky','Tom']}`,表示只在 name 为 Ricky 或 Tom 时显示该表单项;
> - 如果有多个条件,用数组装这些条件对象,如:`[{key,val...},{...}]`,它们的关系为且,即所有条件都满足才显示;
> - 如果需要条件关系为或,给表单项[showOr](#showOr)赋值`true`;
> - 当给定格式的对象或数组不能满足业务需求时,可传一个回调函数,函数参数为`FormR`的`valGroup`
,回调函数需要有返回值,当返回值为真时,表单项展示,返回值为假时,表单项隐藏,如:`{show:valGroup => valGroup?.name === 'Ricky'}`。
- <a name='showImg'>showImg</a> 布尔对象,uploadGroup 是否以图片方式显示已上传的图片文件,默认:`false`
- <a name='showMap'>showMap</a> 布尔对象,inputMap 是否显示地图,默认:`true`
- <a name='showOr'>showOr</a> 布尔对象,表单项各显示条件间关系为或运算,默认:`false`
- <a name='showWordLimit'>showWordLimit</a> 布尔对象,是否显示输入字数统计,可以配合 maxlength 使用,默认:`false`
- <a name='slotName'>slotName</a> 字符串,type 为 custom、input 的插槽名字,具体见后面的' type 说明'
- <a name='slotPosition'>slotPosition</a> 字符串,type 为 input 的插槽位置,如:`prepend`、`append` ,目前只支持这两个值,具体可参考示例项目的`formTeam`示例
- <a name='step'>step</a> 数字,InputNumber(数字输入框)的步长,即每次点表单项箭头增大或减小的值,可以是小数
- <a name='steps'>steps</a> 数组,timePicker 选择器下拉列表的时间间隔,数组的三项分别对应小时、分钟、秒。例如设置为 [1, 15] 时,分钟会显示:00、15、30、45。默认值:`[]`
- <a name='suffix'>suffix</a> 字符串,输入框尾部图标
- <a name='title'>title</a> 字符串,表单项的标题,位于表单项左上方,样式见示例
- <a name='toolbarConfig'>toolbarConfig</a> 对象,工具栏配置,参考[wangEditor5 工具栏配置](https://www.wangeditor.com/v5/toolbar-config.html)
- <a name='type'>type</a> 字符串,表单项类型,支持:txt、input、inputNumber、select、selectInput、alCascader、asyncCascader、radio、radioGroup、checkbox、checkboxGroup、textarea、upload、date、time、monthRange、editor、editorPro、inputMap、custom
- <a name='url'>url</a> 字符串,数据接口地址,表单项特殊配置,如远程数据级联,文件上传时为上传文件的服务器接口地址,具体见后面的' type 说明'
- <a name='val'>val</a> 表单项值,只有 type 为 txt 时有效
- <a name='valKey'>valKey</a> 字符串,表单项值为表单中另外一个表单项(兄弟项)收集数据中的一个字段,只有 type 为 txt 时有效,具体用法见后面的' type 说明'
- <a name='withCredentials'>withCredentials</a> 布尔对象,uploadGroup 远程上传时是否携带 cookie,默认:`true`
- <a name='uploadImgMaxSize'>uploadImgMaxSize</a> 数字,限制上传图片大小,editor 组件独有属性,默认:102400(100k)
- <a name='uploadImgMaxLength'>uploadImgMaxLength</a> 数字,限制一次最多能传几张图片,editor 组件独有属性,默认:10
- <a name='uploadImgShowBase64'>uploadImgShowBase64</a> 布尔对象,是否使用 base64 作为本地图片上传保存方式,editor 组件独有属性,默认:true
- <a name='uploadImgServe'>uploadImgServe</a> 对象,具体参考[editor](../editor/README.md)组件的 README.md 文档,editor 组件独有属性
### formData 元素字段详细说明
#### <a name='optionsDetail'>options</a>
- label 字符串,待选项标签,即用户看到的
- val 字符串/数字,待选项的值,即需要收集的,
> - 注意:若为数字,如果有验证,验证规则中需要加上`type:'number'`,view-design默认验证类型为string;
> - 若表单项值为 boolean,需配合`booleanVal:true`
使用,该字段还是数字(因为如 radioGroup 和 select 的选项不支持 boolean),一般用`1`和`0`,提交表单项时组件会自动将其转为
boolean
- icon 字符串,待选项的图标,仅 checkbox 和 checkboxGroup 支持,view-design 的内置图标
- disabled 布尔对象,待选项是否禁用,默认:`false`
#### <a name='showDetail'>show</a>
- key 字符串,目标表单项(控制当前表单项是否展示的表单项)的 key,当前表单项即设置 show 属性的表单项,如:`key:'age'`
- val 数组,目标表单项为哪些值时,满足条件,如:`[1,2]`表示 age 为 1 或 2 时,满足条件;该字段接受一个特殊值`'.'`,表示该条件 key 对应字段只要有有效值既满足,有效值意思是`0` `false`或转为 Boolean 结果为`true`的值
- reg 正则表达式,当 val 这个字段已经不能满足业务需求时,可用`reg`传递正则表达式(val 无需再传值),当正则表达式匹配给定 key 对应的值成功时,表单项展示,否则隐藏。
> 如:`{show:{key:'age',reg:/^2\d$/}}`,表示`age`在`20`到`29`且值为正整数时该表单项会显示。
- 注意:如果条件有多个,show 的类型变为多个条件对象组成的数组;多个条件间关系为且,如果想要为或,需设置[showOr](#showOr) 为`true`
### type 说明
如果觉得下面有些字段描述太过简单,可以参考 formData 说明里该字段的描述
#### txt 纯文本
- [label](#label) 标签
- [val](#val) 值
- [valKey](#valKey) 值为另一个兄弟表单项收集的 valKey 对应的字段,响应式
- [likeInput](#likeInput) 值的样式模拟 input 样式,默认:`false`
- [show](#show) 显示条件
- [showOr](#showOr) 显示条件间关系,设置 true 时为或运算,默认:`false`
- [info](#info) 表单项的提示文字,位于表单项下面
- [class](#class) 单个表单项的自定义样式类名
- 注意:也可以不传 label 和 val,单纯用来布局占位;没有 key 值,提交时不会被带上
#### input 输入框
- [label](#label) 标签
- [key](#key) 表单项收集的数据在提交时所在字段
- [defaultVal](#defaultVal) 默认值
- [maxLength](#maxLength) 最大长度限制,不限制则不设置
- [placeholder](#placeholder) 占位符,默认:`'请输入'`
- [inputType](#inputType) 字符串,表单项 type=input 时,可指定输入框类型(开启 password=true 时,inputType 自动变为 password),默认值:`'text'`
- [password](#password) 布尔对象,是否显示切换密码图标,默认:`false`
- [prepend](#prepend) 字符串,输入框头部内容
- [append](#append) 字符串,输入框尾部内容
- [slotName](#slotName) 插槽名字,自定义内容通过插槽接入输入框,如自定义单位等,名字随意取,一个 formData 里不能有重复的 slotName
- [slotPosition](#slotPosition) 插槽位置,指定输入框插槽,如`'prepend','append'`等,相当于 view-design 的 input 组件 slot 名字,使用方法参考 view-design 的 input 混合型输入框文档
- [icon](#icon) 字符串,输入框尾部图标
- [prefix](#prefix) 字符串,输入框头部图标
- [suffix](#suffix) 字符串,输入框尾部图标
- [disabled](#disabled) 禁用该表单项,非响应式,可用 updateFormDataT 方法更改,默认:`false`
- [clearable](#clearable) 表单项是否可单独清空,为 true 且输入框有值时,光标移动到输入框尾部会有小叉,点击清空,默认:`true`
- [show](#show) 显示条件
- [showOr](#showOr) 显示条件间关系,设置 true 时为或运算,默认:`false`
- [info](#info) 表单项的提示文字,位于表单项下面
- [title](#title) 表单项的标题,位于表单项左上方
- [class](#class) 单个表单项的自定义样式类名
#### inputNumber 数字输入框
- [label](#label) 标签
- [key](#key) 表单项收集的数据在提交时所在字段
- [defaultVal](#defaultVal) 默认值
- [max](#max) 最大值限制,不限制则不设置
- [min](#min) 最小值限制,不限制则不设置
- [precision](#precision) 精度
- [step](#step) 步长
- [readonly](#readonly) 只读,默认:`false`
- [editable](#editable) 可编辑,默认:`true`
- [activeChange](#activeChange) 是否实时响应数据
- [placeholder](#placeholder) 占位符,默认:`'请输入'`
- [disabled](#disabled) 禁用该表单项,非响应式,可用 updateFormDataT 方法更改,默认:`false`
- [clearable](#clearable) 表单项是否可单独清空,为 true 且输入框有值时,光标移动到输入框尾部会有小叉,点击清空,默认:`true`
- [show](#show) 显示条件
- [showOr](#showOr) 显示条件间关系,设置 true 时为或运算,默认:`false`
- [info](#info) 表单项的提示文字,位于表单项下面
- [title](#title) 表单项的标题,位于表单项左上方
- [class](#class) 单个表单项的自定义样式类名
#### select 下拉选择框
- [label](#label) 标签
- [key](#key) 表单项收集的数据在提交时所在字段
- [defaultVal](#defaultVal) 默认值
- [booleanVal](#booleanVal) 表单项值为布尔类型,传入的会被自动转换成 boolean,输出也是 boolean,默认:`false`
- [options](#options) 待选项
- [borrowOption](#borrowOption) 借用待选项
- [collectLabel](#collectLabel) 收集选项中其他字段(除 val 外)
- [filterable](#filterable) 是否可筛选待选项,默认:`false`
- [multiple](#multiple) 是否可筛选待选项,默认:`false`
- [asyncOption](#asyncOption) 待选项数据来源于接口,默认:`false`
- [optionUrl](#optionUrl) 待选项数据来源接口地址
- [optionLabel](#optionLabel) 待选项 label 对应接口数据的字段名
- [optionVal](#optionVal) 待选项 val 对应接口数据的字段名
- [localOption](#localOption) 数组,表单项待选项为远程拉取时,使用该属性可设置固定的本地选项,排在远程选项前面
- [optionFilter](#optionFilter) 待选项筛选方法
- [disableOptionByOthers](#disableOptionByOthers) 根据其他表单项的值禁用待选项
- [changeOption](#changeOption) 待选项数据来源于接口,接口地址是否改变
- [placeholder](#placeholder) 占位符,默认:`'请选择'`
- [disabled](#disabled) 禁用该表单项,非响应式,可用 updateFormDataT 方法更改,默认:`false`
- [clearable](#clearable) 表单项是否可单独清空,为 true 且选择框有值时,光标移动到选择框尾部会有小叉,点击清空,默认:`true`
- [show](#show) 显示条件
- [showOr](#showOr) 显示条件间关系,设置 true 时为或运算,默:`false`
- [info](#info) 表单项的提示文字,位于表单项下面
- [title](#title) 表单项的标题,位于表单项左上方
- [class](#class) 单个表单项的自定义样式类名
#### selectInput 选择输入框
- [label](#label) 标签
- [key](#key) 表单项收集的数据在提交时所在字段,如果有默认值,默认值会存放在该字段下,该表单项该字段是会随着选择框的值改变的,key改变时表单项值会自动清空
- [defaultVal](#defaultVal) 默认值
- [options](#options) 待选项
- [placeholder](#placeholder) 占位符,默认:`'请输入'`
- [disabled](#disabled) 禁用该表单项,非响应式,可用 updateFormDataT 方法更改,默认:`false`
- [clearable](#clearable) 表单项是否可单独清空,为 true 且输入框有值时,光标移动到输入框尾部会有小叉,点击清空,默认:`true`
- [show](#show) 显示条件
- [showOr](#showOr) 显示条件间关系,设置 true 时为或运算,默认:`false`
- [info](#info) 表单项的提示文字,位于表单项下面
- [title](#title) 表单项的标题,位于表单项左上方
- [class](#class) 单个表单项的自定义样式类名
#### alCascader 行政区域级联
- [label](#label) 标签
- [key](#key) 表单项收集的数据在提交时所在字段
- [defaultVal](#defaultVal) 默认值,行政区域编码,如:`500103000000`
- [level](#level) 行政区域级数,默认:`2`,表示到区县级;0-省级,1-市级,2-区县,该库自 1.1.37 版本以后不再支持街道选取(level:3 不再支持),因为数据来源 area-data 自 2.0 版本以后不再包含街道数据
- [changeOnSelect](#changeOnSelect) 布尔对象,当此项为 true 时,点选每级菜单选项值都会发生变化,默认:`false`
- [placeholder](#placeholder) 占位符,默认:`'请输入'`
- [disabled](#disabled) 禁用该表单项,非响应式,可用 updateFormDataT 方法更改,默认:`false`
- [show](#show) 显示条件
- [showOr](#showOr) 显示条件间关系,设置 true 时为或运算,默认:`false`
- [info](#info) 表单项的提示文字,位于表单项下面
- [title](#title) 表单项的标题,位于表单项左上方
- [class](#class) 单个表单项的自定义样式类名
#### asyncCascader 远程数据级联
- [label](#label) 标签
- [key](#key) 表单项收集的数据在提交时所在字段
- [defaultVal](#defaultVal) 默认值
- [url](#url) 节点数据接口地址
- [optionVal](#optionVal) 节点 val 对应接口数据字段
- [optionLabel](#optionLabel) 节点 label 对应接口数据字段,注意:不同于其他表单项,这里仅支持字符串
- [optionFilter](#optionFilter) 自定义待选项筛选逻辑,入参是接口请求回来的待选项数据,返回处理后的待选项(仅进行筛选操作,不要做其它处理)
- [onlyLastVal](#onlyLastVal) 该字段为`true`时,只返回选中的最后一级的值,否则返回数组,数组包含每一级的值,默认:`true`
- [onlyLastLabel](#onlyLastLabel) 该字段为`true`时,只显示选中的最后一级 label,否则显示每一级的 label,用分隔符隔开,默认:`true`
- [filterable](#filterable) 是否支持筛选待选项,默认:`false`
- [separator](#separator) 选中的 label 分隔符,显示全部 label 时生效,默认:`'/'`
- [placeholder](#placeholder) 占位符,默认:`'请输入'`
- [disabled](#disabled) 禁用该表单项,非响应式,可用 updateFormDataT 方法更改,默认:`false`
- [show](#show) 显示条件
- [showOr](#showOr) 显示条件间关系,设置 true 时为或运算,默认:`false`
- [info](#info) 表单项的提示文字,位于表单项下面
- [title](#title) 表单项的标题,位于表单项左上方
- [class](#class) 单个表单项的自定义样式类名
#### radio 单选框
- [label](#label) 标签
- [key](#key) 表单项收集的数据在提交时所在字段
- [defaultVal](#defaultVal) 默认值
- [placeholder](#placeholder) 占位符,默认:`'请输入'`
- [disabled](#disabled) 禁用该表单项,非响应式,可用 updateFormDataT 方法更改,默认:`false`
- [show](#show) 显示条件
- [showOr](#showOr) 显示条件间关系,设置 true 时为或运算,默认:`false`
- [info](#info) 表单项的提示文字,位于表单项下面
- [title](#title) 表单项的标题,位于表单项左上方
- [class](#class) 单个表单项的自定义样式类名
- 注意:该类型表单项值为 boolean
#### radioGroup 单选框组
- [label](#label) 标签
- [key](#key) 表单项收集的数据在提交时所在字段
- [defaultVal](#defaultVal) 默认值
- [options](#options) 待选项
- [borrowOption](#borrowOption) 借用待选项
- [collectLabel](#collectLabel) 收集选项中其他字段(除 val 外)
- [asyncOption](#asyncOption) 待选项数据来源于接口,默认:`false`
- [optionUrl](#optionUrl) 待选项数据来源接口地址
- [optionLabel](#optionLabel) 待选项 label 对应接口数据的字段名
- [optionVal](#optionVal) 待选项 val 对应接口数据的字段名
- [optionFilter](#optionFilter) 待选项筛选方法
- [disableOptionByOthers](#disableOptionByOthers) 根据其他表单项的值禁用待选项
- [changeOption](#changeOption) 待选项数据来源于接口,接口地址是否改变
- [booleanVal](#booleanVal) 表单项值为布尔类型,传入的会被自动转换成 boolean,输出也是 boolean,默认:`false`
- [buttonType](#buttonType) 以按钮组的样式展示,默认:`false`
- [itemBorder](#itemBorder) 选项带边框(不可和 buttonType 同时开启),默认:`false`
- [placeholder](#placeholder) 占位符,默认:`'请输入'`
- [disabled](#disabled) 禁用该表单项,非响应式,可用 updateFormDataT 方法更改,默认:`false`
- [show](#show) 显示条件
- [showOr](#showOr) 显示条件间关系,设置 true 时为或运算,默认:`false`
- [info](#info) 表单项的提示文字,位于表单项下面
- [title](#title) 表单项的标题,位于表单项左上方
- [class](#class) 单个表单项的自定义样式类名
#### checkbox 复选框
- [label](#label) 标签
- [key](#key) 表单项收集的数据在提交时所在字段
- [defaultVal](#defaultVal) 默认值
- [placeholder](#placeholder) 占位符,默认:`'请输入'`
- [disabled](#disabled) 禁用该表单项,非响应式,可用 updateFormDataT 方法更改,默认:`false`
- [show](#show) 显示条件
- [showOr](#showOr) 显示条件间关系,设置 true 时为或运算,默认:`false`
- [info](#info) 表单项的提示文字,位于表单项下面
- [class](#class) 单个表单项的自定义样式类名
- 注意:该类型表单项值为 boolean
#### checkboxGroup 复选框组
- [label](#label) 标签
- [key](#key) 表单项收集的数据在提交时所在字段
- [defaultVal](#defaultVal) 默认值
- [options](#options) 待选项
- [borrowOption](#borrowOption) 借用待选项
- [collectLabel](#collectLabel) 收集选项中其他字段(除 val 外)
- [asyncOption](#asyncOption) 待选项数据来源于接口,默认:`false`
- [optionUrl](#optionUrl) 待选项数据来源接口地址
- [optionLabel](#optionLabel) 待选项 label 对应接口数据的字段名
- [optionVal](#optionVal) 待选项 val 对应接口数据的字段名
- [localOption](#localOption) 数组,表单项待选项为远程拉取时,使用该属性可设置固定的本地选项,排在远程选项前面
- [optionFilter](#optionFilter) 待选项筛选方法
- [disableOptionByOthers](#disableOptionByOthers) 根据其他表单项的值禁用待选项
- [changeOption](#changeOption) 待选项数据来源于接口,接口地址是否改变
- [buttonType](#buttonType) 以按钮组的样式展示,默认:`false`
- [itemBorder](#itemBorder) 选项带边框(不可和 buttonType 同时开启),默认:`false`
- [placeholder](#placeholder) 占位符,默认:`'请输入'`
- [disabled](#disabled) 禁用该表单项,非响应式,可用 updateFormDataT 方法更改,默认:`false`
- [show](#show) 显示条件
- [showOr](#showOr) 显示条件间关系,设置 true 时为或运算,默认:`false`
- [info](#info) 表单项的提示文字,位于表单项下面
- [title](#title) 表单项的标题,位于表单项左上方
- [class](#class) 单个表单项的自定义样式类名
- 注意:该类型表单项值为数组
#### textarea 文本框
- [label](#label) 标签
- [key](#key) 表单项收集的数据在提交时所在字段
- [defaultVal](#defaultVal) 默认值
- [maxLength](#maxLength) 最大长度限制,不限制则不设置
- [showWordLimit](#showWordLimit) 布尔对象,是否显示输入字数统计,可以配合 maxlength 使用,默认:`false`
- [autosize](#autosize) 自适应内容高度,仅在 textarea 类型下有效,可传入对象,如 { minRows: 2, maxRows: 6 },默认:`{minRows:2}`
- [numberVal](#numberVal) 值转换为 number 类型
- [placeholder](#placeholder) 占位符,默认:`'请输入'`
- [disabled](#disabled) 禁用该表单项,非响应式,可用 updateFormDataT 方法更改,默认:`false`
- [clearable](#clearable) 表单项是否可单独清空,为 true 且输入框有值时,光标移动到输入框尾部会有小叉,点击清空,默认:`true`
- [show](#show) 显示条件
- [showOr](#showOr) 显示条件间关系,设置 true 时为或运算,默认:`false`
- [info](#info) 表单项的提示文字,位于表单项下面
- [title](#title) 表单项的标题,位于表单项左上方
- [class](#class) 单个表单项的自定义样式类名
#### upload 上传组件
- [label](#label) 标签
- [key](#key) 表单项收集的数据在提交时所在字段
- [defaultVal](#defaultVal) 默认值,仅远程上传时支持默认值,为文件 id
- [url](#url) 远程上传接口地址
- [data](#data) 远程上传接口请求参数(不包含 file 对象)
- [withCredentials](#withCredentials) 远程上传接口请求是否带上 cookie,默认:`true`
- [manualUpload](#manualUpload) 本地上传,采集 file 对象,默认:`false`
- [format](#format) 上传文件格式限制,后缀名组成的数组,不限制则不设置
- [maxSize](#maxSize) 上传文件大小限制,单位 kb,配置时写数字,不要带单位
- [length](#length) 上传文件个数限制
- [multiple](#multiple) 选择文件时是否支持多选,多选时无法限制可传文件个数(用户第一次选择文件时想选多少个是限制不了的),建议多选和限制可传文件个数功能二选一,不要同时开启,默认:`false`
- [showImg](#showImg) 以缩略图方式展示已上传文件,如果有文件不是图片,则自动切换成列表展示,默认:`false`
- [disabled](#disabled) 禁用该表单项,非响应式,可用 updateFormDataT 方法更改,默认:`false`
- [show](#show) 显示条件
- [showOr](#showOr) 显示条件间关系,设置 true 时为或运算,默认:`false`
- [info](#info) 表单项的提示文字,位于表单项下面
- [title](#title) 表单项的标题,位于表单项左上方
- [class](#class) 单个表单项的自定义样式类名
- 注意:远程上传时,值为上传成功后接口返回的文件 id,或 id 组成的数组;本地上传时,值为 file 对象,或 file 对象组成的数组;远程上传时有诸多限制,具体参考[uploadGroup](../uploadGroup/README.md)组件的 README.md 文档
#### date 日期选择器
- [label](#label) 标签
- [key](#key) 表单项收集的数据在提交时所在字段
- [defaultVal](#defaultVal) 默认值
- [defaultVal2](#defaultVal2) 默认值 2,为时间区间时,结束时间默认值
- [dateType](#dateType) 日期类型,可选值:`'date'、'daterange'、'datetime'、'datetimerange'、'year'、'month'`
- [format](#formatB) 日期格式,不传时使用默认格式,常用值:`'YYYY'、'MM'、'YYYY-MM-DD'、'YYYY-MM-DD HH:mm:ss'`,具体参考 Moment.js 官网
- [dateOptions](#dateOptions) DatePicker 选择器额外配置,比如不可选日期与快捷选项
- [placeholder](#placeholder) 占位符,默认:`'请选择'`
- [clearable](#clearable) 表单项是否可单独清空,为 true 且输入框有值时,光标移动到输入框尾部会有小叉,点击清空,默认:`true`
- [disabled](#disabled) 禁用该表单项,非响应式,可用 updateFormDataT 方法更改,默认:`false`
- [show](#show) 显示条件
- [showOr](#showOr) 显示条件间关系,设置 true 时为或运算,默认:`false`
- [info](#info) 表单项的提示文字,位于表单项下面
- [title](#title) 表单项的标题,位于表单项左上方
- [class](#class) 单个表单项的自定义样式类名
#### time 时间选择器
- [label](#label) 标签
- [key](#key) 表单项收集的数据在提交时所在字段
- [defaultVal](#defaultVal) 默认值
- [defaultVal2](#defaultVal2) 默认值 2,为 时间区间时,结束时间默认值
- [dateType](#dateType) 时间类型,可选值:`'time'、'timerange'`
- [format](#formatC) 时间格式(控制返回值的格式和操作界面维度),不传时使用默认格式,常用值:`'HH:mm:ss'、'HH:mm'、'HH'`
- [steps](#steps) timePicker 选择器下拉列表的时间间隔,数组的三项分别对应小时、分钟、秒。例如设置为 [1, 15] 时,分钟会显示:00、15、30、45。默认值:`[]`
- [placeholder](#placeholder) 占位符,默认:`'请选择'`
- [clearable](#clearable) 表单项是否可单独清空,为 true 且输入框有值时,光标移动到输入框尾部会有小叉,点击清空,默认:`true`
- [disabled](#disabled) 禁用该表单项,非响应式,可用 updateFormDataT 方法更改,默认:`false`
- [show](#show) 显示条件
- [showOr](#showOr) 显示条件间关系,设置 true 时为或运算,默认:`false`
- [info](#info) 表单项的提示文字,位于表单项下面
- [title](#title) 表单项的标题,位于表单项左上方
- [class](#class) 单个表单项的自定义样式类名
#### monthRange 月份区间选择器
- [label](#label) 标签
- [key](#key) 表单项收集的数据在提交时所在字段
- [defaultVal](#defaultVal) 默认值,开始时间默认值
- [defaultVal2](#defaultVal2) 默认值 2,结束时间默认值
- [format](#formatC) 时间格式(控制返回值的格式和操作界面维度),不传时使用默认格式,默认值:`'yyyy-MM'`
- [dateOptions1](#dateOptions) 开始月份 DatePicker 选择器额外配置,比如不可选日期与快捷选项
- [dateOptions2](#dateOptions) 结束月份 DatePicker 选择器额外配置,比如不可选日期与快捷选项
- [placeholder](#placeholder) 占位符,默认:`'请选择日期'`
- [disabled](#disabled) 禁用该表单项,非响应式,可用 updateFormDataT 方法更改,默认:`false`
- [show](#show) 显示条件
- [showOr](#showOr) 显示条件间关系,设置 true 时为或运算,默认:`false`
- [info](#info) 表单项的提示文字,位于表单项下面
- [title](#title) 表单项的标题,位于表单项左上方
- [class](#class) 单个表单项的自定义样式类名
#### editor 富文本编辑器
- [label](#label) 标签
- [key](#key) 表单项收集的数据在提交时所在字段
- [defaultVal](#defaultVal) 默认值
- [disabled](#disabled) 禁用该表单项,非响应式,可用 updateFormDataT 方法更改,默认:`false`
- [show](#show) 显示条件
- [showOr](#showOr) 显示条件间关系,设置 true 时为或运算,默认:`false`
- [info](#info) 表单项的提示文字,位于表单项下面
- [uploadImgMaxSize](#uploadImgMaxSize) 数字,限制上传图片大小,默认:102400(100k)
- [uploadImgMaxLength](#uploadImgMaxLength) 数字,限制一次最多能传几张图片,默认:10
- [uploadImgShowBase64](#uploadImgShowBase64) 布尔对象,是否使用 base64 作为本地图片上传保存方式,默认:true
- [uploadImgServe](#uploadImgServe) 对象,具体参考[editor](../editor/README.md)组件的 README.md 文档
- [title](#title) 表单项的标题,位于表单项左上方
- [class](#class) 单个表单项的自定义样式类名
#### editorPro 富文本编辑器 Pro
- [label](#label) 标签
- [key](#key) 表单项收集的数据在提交时所在字段
- [defaultVal](#defaultVal) 默认值
- [disabled](#disabled) 禁用该表单项,非响应式,可用 updateFormDataT 方法更改,默认:`false`
- [show](#show) 显示条件
- [showOr](#showOr) 显示条件间关系,设置 true 时为或运算,默认:`false`
- [info](#info) 表单项的提示文字,位于表单项下面
- [toolbarConfig](#toolbarConfig) 对象,工具栏配置,参考[wangEditor5 工具栏配置](https://www.wangeditor.com/v5/toolbar-config.html)
- [editorConfig](#editorConfig) 对象,编辑器配置,参考[wangEditor5 编辑器配置](https://www.wangeditor.com/v5/editor-config.html)
- [mode](#mode) 字符串,`'default'` 默认模式 - 集成了 wangEditor 所有功能;`'simple'` 简洁模式 - 仅有部分常见功能,但更加简洁易用,默认:`'simple'`
- [height](#height) 正数/字符串,编辑区域高度,默认:`300`
- [title](#title) 表单项的标题,位于表单项左上方
- [class](#class) 单个表单项的自定义样式类名
#### inputMap 地图组件
- [label](#label) 标签
- [key](#key) 表单项收集的数据在提交时所在字段,经度,必填,如:`lng`
- [key2](#key2) 表单项收集的数据在提交时所在字段,纬度,必填,如:`lat`
- [key3](#key2) 表单项收集的数据在提交时所在字段,地址名字,非必填,如:`name`
- [defaultVal](#defaultVal) 默认值,经度
- [defaultVal2](#defaultVal2) 默认值 2,纬度
- [defaultVal3](#defaultVal2) 默认值 3,地址名字
- [showMap](#showMap) 显示地图,默认:`true`
- [mapHeight](#mapHeight) 地图高度,默认:`'250px'`
- [placeholder](#placeholder) 占位符,默认:`'搜索'`
- [disabled](#disabled) 禁用该表单项,非响应式,可用 updateFormDataT 方法更改,默认:`false`
- [show](#show) 显示条件
- [showOr](#showOr) 显示条件间关系,设置 true 时为或运算,默认:`false`
- [info](#info) 表单项的提示文字,位于表单项下面
- [title](#title) 表单项的标题,位于表单项左上方
- [class](#class) 单个表单项的自定义样式类名
#### custom 自定义组件
- [label](#label) 标签
- [key](#key) 表单项收集的数据在提交时所在字段
- [defaultVal](#defaultVal) 默认值
- [slotName](#slotName) 插槽名字,自定义组件通过插槽接入表单
- [show](#show) 显示条件
- [showOr](#showOr) 显示条件间关系,设置 true 时为或运算,默认:`false`
- [info](#info) 表单项的提示文字,位于表单项下面
- [class](#class) 单个表单项的自定义样式类名
- 注意:自定义组件限制非常少,理论上想放什么进来都行,需遵循几点,具名插槽模板放在 formR 组件标签内,将 valGroup(表单组件收集值的对象)传进模板,如:
```
<form-r>
<template #myFormItem='{valGroup}'>
<i-switch v-model='valGroup.myKey'/>
</template>
</form-r>
其中myFormItem为slotName的值,myKey为key的值
```
- 注意:有时候自定义组件不靠 formR 组件收集值(仅展示或有独立的采集值的逻辑),则不需要设置 key,也不支持 defaultVal,如:
```
<formR>
<template #myFormItem2>
<Table :columns='columns' :data='data'/>
</template>
</formR>
其中myFormItem2为slotName的值,columns和data是使用formR组件的地方定义的table的数据
```