## EmForm
表单聚合组件,融合了表单常用的功能组件
### 组件属性
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
| :---------------: | :--------------------------------: | :-----: | :-----------------: | :-----: |
| formData | 表单结构数据 | Array | — | [] |
| formRules | 表单结构规则 | Array | — | [] |
| showMessage | 是否显示校验信息 | Boolean | — | true |
| inlineMessage | 是否以行内形式展示校验信息 | Boolean | — | false |
| labelWidth | 表单项标签宽度 | String | — | 120px |
| inline | 是否行内表单模式 | Boolean | — | false |
| labelPosition | 表单域标签的位置 | String | right/left/top | right |
| size | 用于控制该表单内组件的尺寸 | String | default/small/large | default |
| showLongOkBt | 是否展示长确定按钮 | Boolean | — | false |
| showInlineOkBt | 是否展示行内短确定按钮 | Boolean | — | false |
| showInlineClearBt | 是否展示行内短清空按钮 | Boolean | — | false |
| longOkBtTxt | 长确定按钮内容 | String | — | 确认 |
| inlineOkBtTxt | 短确定按钮内容 | String | — | 确认 |
| inlineClearBtTxt | 短清空按钮内容 | String | — | 清空 |
| inlineOkBtIcon | 短确定按钮Icon | String | — | — |
| inlineClearBtIcon | 短清空按钮Icon | String | — | — |
| btnLoading | 提交按钮显示loading | Boolean | — | false |
| trim | 是否去除提交数据中的字符串首尾空格 | Boolean | — | true |
| disabled | 整表禁用,仅展示使用 | Boolean | — | false |
### 组件事件
| 事件类型 | 说明 | 回调参数 |
| :------------: | :------------------------: | :------------: |
| on-item-change | 表单选项值发生变化回调函数 | 变化表单项的值 |
| on-submit | 表单提交函数 | 整个表单的值 |
### 组件方法
| 事件类型 | 说明 | 参数 |
| :-: | :-: | :-: |
| resetForm | 清空表单的值 | — |
| reRenderForm | 重新渲染表单 | — |
| updateDataGroup | 更新表单项的值 | data:更新数据;notClearOthers:是否清空其他表单项,默认清空 |
| updateFormDataT | 更新表单结构 | {index:1,key:XXX,val:XXX}
或
[{index:1,key:XXX,val:XXX},{index:2,key:XXX,val:XXX}] |
| changeLoading | 主动改变表单按钮loading状态 | true/false |
| getDataGroup | 获取表单填写的数据,不会触发校验 | — |
| submit | 表单提交触发事件,会触发表单校验 | — |
### 表单子选项属性
#### form-item 表单项公共属性
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
| :-: | :-: | :-: | :-: | :-: |
| type | 表单项类型 | String | txt,input,inputNumber,switch,slider,rate,select,selectInput,radio,checkbox,textarea,date,time,upload,area,cascader,bdMap,editor,colorPicker,colorGroup,selectIcon,tableSelect,custom | — |
| key | 表单收集的字段 | String | — | — |
| label | 表单标签文本 | String | — | — |
| show | 是否显示该选项,若为false,不收集该字段的值;
基本格式:{key:'test',val:['zh','li']},表示只有当test是zh或li时才展示;
也可以设置多个字段,并用数组包装,所有条件满足才展示;
也可以传一个回调函数,回调参数是表单所有选项的值,需要返回一个布尔值来确定是否展示; | Object/Array/Function | — | — |
| showOr | 当show为数组时,showOr设置为true表示只要满足数组中的任意一个条件即可展示 | Boolean | — | false |
| labelWidth | 标签宽度,默认使用form组件的labelWidth属性 | String | — | — |
| disabled | 是否禁用该选项 | Boolean | — | false |
| showMessage | 是否显示校验错误信息 | Boolean | — | true |
#### txt 文本
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
| :--: | :------: | :----: | :----: | :----: |
| val | 文本内容 | String | — | — |
#### input 输入框
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
| :----------: | :------------------: | :-----: | :----: | :----: |
| maxLength | 最大输入长度 | Number | — | — |
| minLength | 最小输入长度 | Number | — | — |
| placeholder | 占位符 | String | — | 请输入 |
| showPassword | 是否展示切换密码图标 | Boolean | — | false |
| prepend | 输入框前置内容 | Slots | — | — |
| append | 输入框后置内容 | Slots | — | — |
| disabled | 是否禁用该子选项 | Boolean | false |
#### InputNumber 数字输入框
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
| :--------------: | :--------------: | :-----: | :----: | :----: |
| min | 最小值 | Number | — | — |
| max | 最大值 | Number | — | — |
| step | 计数器步长 | Number | — | 1 |
| precision | 数值精度 | Number | — | 1 |
| placeholder | 占位符 | String | — | 请输入 |
| controls | 是否使用控制按钮 | Boolean | — | true |
| controlsPosition | 控制按钮位置 | String | right | — |
| disabled | 是否禁用该子选项 | Boolean | false |
#### Switch 开关
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
| :-----------: | :---------------------: | :-----------------------: | :----: | :-----: |
| width | switch 的宽度(像素) | Number | — | 40 |
| activeText | switch 打开时的文字描述 | String | — | — |
| inactiveText | switch 关闭时的文字描述 | String | — | — |
| activeValue | switch 打开时的值 | boolean / string / number | — | true |
| inactiveValue | switch 关闭时的值 | boolean / string / number | — | false |
| activeColor | switch 打开时的背景色 | string | — | #409EFF |
| inactiveColor | switch 关闭时的背景色 | string | — | #C0CCDA |
| disabled | 是否禁用 | Boolean | — | false |
#### Slider 滑块
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
| :-----------: | :-------------------------------------------: | :-------------: | :----: | :----: |
| min | 最小值 | Number | — | 0 |
| max | 最大值 | Number | — | 100 |
| step | 步长 | Number | — | 1 |
| showStops | 是否显示间断点 | Boolean | — | false |
| showTooltip | 是否显示 tooltip | Boolean | — | true |
| formatTooltip | 格式化 tooltip message | function(value) | — | — |
| range | 是否为范围选择 | | — | false |
| vertical | 是否竖向模式 | Boolean | — | false |
| height | Slider 高度,竖向模式时必填 | string | — | — |
| marks | 标记, key 的类型必须为 number 且取值在闭区间 | object | — | — |
| disabled | 是否禁用 | Boolean | — | false |
#### Rate 评分
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
| :---------------: | :----------------------: | :----------: | :-----: | :--------------------------------------: |
| max | 最大分值 | Number | — | 5 |
| allowHalf | 是否允许半选 | Boolean | — | false |
| colors | 颜色分段 | array/object | — | ['#F7BA2A', '#F7BA2A', '#F7BA2A'] |
| voidColor | 未选中 icon 的颜色 | string | — | #C6D1DE |
| disabledVoidColor | 只读时未选中 icon 的颜色 | string | — | #EFF2F7 |
| showText | 是否显示辅助文字 | Boolean | — | false |
| showScore | 是否显示当前分数 | Boolean | — | false |
| textColor | 辅助文字的颜色 | string | — | #1F2D3D |
| texts | 辅助文字数组 | array | — | ['极差', '失望', '一般', '满意', '惊喜'] |
| scoreTemplate | 分数显示模板 | string | {value} | — |
| disabled | 是否禁用 | Boolean | — | false |
#### select 下拉选择器
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
| ------------ | ---------------------------------- | -------------- | ------ | ------ |
| filterable | 是否可搜索 | Boolean | — | true |
| asyncOption | 是否远程拉取数据 | Boolean | — | false |
| optionUrl | 远程拉取数据接口地址 | String | — | — |
| changeOption | 需要根据其它选项的值作为条件来查询 | Object/Array | — | — |
| multiple | 是否多选 | Boolean | — | false |
| placeholder | 占位符 | String | — | 请选择 |
| options | label | 子选项标签名称 | — | — |
| val | 子选项值 | — | — |
| disabled | 是否禁用该子选项 | Boolean | false |
#### EmSelectInput 下拉选择输入框
详情见[EmSelectInput](../EmSelectInput/README.md)
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
| :---------------: | :----------------------------------------------: | :------: | :----: | :----: |
| url | 远程拉取数据的地址 | string | — | — |
| data | 静态数据 | Array | — | [] |
| selectKey | select选择框的key,当这个值存在时,会返回2个字段 | string | — | — |
| selectWidth | select选择框宽度 | string | — | 120px |
| optionVal | v-model收集节点的字段 | string | — | val |
| optionLabel | 选项的标签对应接口字段 | string | — | label |
| optionFilter | 筛选待选项的方法 | Function | — | — |
| filterable | 是否可搜索 | Boolean | — | true |
| disabled | 是否禁用 | Boolean | — | false |
| selectPlaceholder | 占位符 | string | — | 请选择 |
| inputPlaceholder | 占位符 | string | — | 请输入 |
#### radio 单选组
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
| ---------- | --------------------------------------- | ------------- | ------------------- | ------- |
| size | 单选框组尺寸 | String | default/small/large | default |
| textColor | 按钮形式的 Radio 激活时的文本颜色 | string | — | #ffffff |
| fill | 按钮形式的 Radio 激活时的填充色和边框色 | String | — | #409EFF |
| radioType | radio展示类型 | String | button/radio | radio |
| options | label | radio标签名称 | — | — |
| val | radio的值 | — | — |
| itemBorder | Radio是否展示边框 | Boolean | false |
| disabled | 是否禁用该子选项 | Boolean | false |
#### checkbox 多选组
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
| ------------ | ------------------------------------------ | ---------------- | ------------------- | -------- |
| size | 多选框组尺寸 | String | default/small/large | default |
| textColor | 按钮形式的 Checkbox 激活时的文本颜色 | string | — | #ffffff |
| fill | 按钮形式的 Checkbox 激活时的填充色和边框色 | String | — | #409EFF |
| checkboxType | Checkbox展示类型 | String | button/checkbox | checkbox |
| options | label | checkbox标签名称 | — | — |
| val | checkbox的值 | — | — |
| itemBorder | Checkbox是否展示边框 | Boolean | false |
| disabled | 是否禁用该子选项 | Boolean | false |
#### textarea 多行文本框
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
| ------------- | ----------------- | --------------- | ------ | -------------- |
| autosize | 高度是否自适应 | Boolean /Object | - | { minRows: 2 } |
| maxLength | 最大输入长度 | Number | — | — |
| showWordLimit | 是否显示统计字数, | Boolean | — | false |
| placeholder | 占位符 | String | — | 请输入 |
| disabled | 是否禁用该子选项 | Boolean | false |
#### date 日期组件
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
| :-: | :-: | :-: | :-: | :-: |
| key2 | 当使用了范围选择时结束时间的key值 | String | — | — |
| dateType | 显示类型 | String | year/month/date/dates/months/years week/datetime/datetimerange/ daterange/monthrange | — |
| align | 对齐方式 | String | left, center, right | left |
| rangeSeparator | 选择范围时的分隔符 | String | — | - |
| placeholder | 非范围选择时占位符 | String | — | 选择日期 |
| startPlaceholder | 范围选择时开始日期的占位符 | String | — | 开始日期 |
| endPlaceholder | 范围选择时结束日期的占位符 | String | — | 结束日期 |
| disabledDate | 一个用来判断该日期是否被禁用的函数(参考el-date-picker组件) | Function | — | - |
#### time 时间组件
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
| :--------------: | :------------------------------------------: | :------: | :-----------------: | :------: |
| key2 | 当使用了范围选择时结束时间的key值 | String | — | — |
| isRange | 是否为时间范围选择 | Boolean | — | false |
| align | 对齐方式 | String | left, center, right | left |
| rangeSeparator | 选择范围时的分隔符 | String | — | - |
| placeholder | 非范围选择时占位符 | String | — | 选择时间 |
| startPlaceholder | 范围选择时开始时间的占位符 | String | — | 开始时间 |
| endPlaceholder | 范围选择时结束时间的占位符 | String | — | 结束时间 |
| disabledHours | 禁止选择部分小时选项(参考el-time-picker组件) | Function | — | - |
| disabledMinutes | 禁止选择部分分钟选项(参考el-time-picker组件) | Function | — | - |
| disabledSeconds | 禁止选择部分秒选项(参考el-time-picker组件) | Function | — | - |
#### upload 上传组件
详情见[EmUpload](../EmUpload/README.md)
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
| :-------------: | :------------------: | :-----: | :-------------------------: | :-----: |
| autoUpload | 是否自动上传 | Boolean | — | true |
| url | 自动上传的url | String | — | /upload |
| paramData | 文件上传接口其他参数 | Object | — | {} |
| headers | 请求头额外参数 | Object | — | {} |
| fileName | 上传文件的字段名 | String | — | file |
| multiple | 是否支持多选 | Boolean | — | true |
| format | 限制文件上传类型 | Array | — | [] |
| maxSize | 单个文件大小限制 | Number | — | 0 |
| length | 文件上传数量限制 | Number | — | 1 |
| listType | 文件列表的类型 | String | text,picture,picture-card | text |
| withCredentials | 是否支持跨域 | Boolean | — | true |
| disabled | 是否禁用 | Boolean | — | false |
#### area 行政区域级联
详情见[EmCascaderArea](../EmCascaderArea/README.md)
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
| :-----------: | :----------------: | :------------: | :-----------------: | :-----: |
| level | 精确至几级行政区域 | Number, String | 1:省市,2:省市区 | 2 |
| showAllLevels | 是否显示完整路径 | Boolean | — | true |
| separator | 地址名称分隔符 | string | — | / |
| size | 组件大小 | string | default/small/large | default |
| filterable | 是否可搜索 | Boolean | — | true |
| disabled | 是否禁用 | Boolean | — | false |
| placeholder | 占位符 | string | — | 请输入 |
#### cascader 自定义级联
详情见[EmCascader](../EmCascader/README.md)
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
| :-----------: | :--------------------: | :------: | :-----------------: | :-----: |
| url | 远程拉取数据的地址 | string | — | — |
| data | 静态数据 | Array | — | [] |
| optionVal | v-model收集节点的字段 | string | — | id |
| optionLabel | 选项的标签对应接口字段 | string | — | name |
| optionFilter | 筛选待选项的方法 | Function | — | — |
| showAllLevels | 是否显示完整路径 | Boolean | — | true |
| separator | 地址名称分隔符 | string | — | / |
| size | 组件大小 | string | default/small/large | default |
| filterable | 是否可搜索 | Boolean | — | true |
| checkStrictly | 是否可以选任意一级 | Boolean | — | false |
| multiple | 是否多选 | Boolean | — | false |
| disabled | 是否禁用 | Boolean | — | false |
| placeholder | 占位符 | string | — | 请输入 |
#### bdMap 百度地图
详情见[EmBaiduMap](../EmBaiduMap/README.md)
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
| :---------: | :----------: | :-----: | :----: | :----------------------------------------: |
| width | 地图宽度 | string | — | 100% |
| height | 地图高度 | string | — | 300px |
| placeholder | 搜索栏占位符 | string | — | 搜索 |
| disabled | 是否禁用 | boolean | - | false |
| ak | 百度地图ak码 | string | — | ak+Math.floor(Math.random() \* 1000000000) |
#### editor 富文本框
详情见[EmEditor](../EmEditor/README.md)
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
| :-----------: | :---------: | :-----: | :------------: | :-----: |
| toolbarConfig | toolbar配置 | Object | — | — |
| editorConfig | 编辑框配置 | Object | — | - |
| mode | 模式 | string | default/simple | default |
| height | 编辑框高度 | string | — | 300px |
| disabled | 是否禁用 | Boolean | — | false |
| placeholder | 占位符 | string | — | — |
#### colorPicker 颜色选择
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
| :---------: | :-----------------------: | :-----------------------: | :-----: | :----: |
| colorFormat | 写入 v-model 的颜色的格式 | enum | — | - |
| popperClass | ColorPicker 下拉框的类名 | string | — | - |
| showAlpha | 是否显示透明色 | boolean | — | false |
| predefine | 预定义颜色 | object | — | - |
| size | 大小 | string /'large'/'default' | 'small' | small |
| disabled | 是否禁用 | boolean | - | false |
#### colorGroup 颜色组选择
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
| :-------------: | :----------------: | :-----------------------: | :-----: | :----: |
| value / v-model | 绑定值 | Array | — | — |
| showAlpha | 是否显示透明色 | boolean | — | false |
| remain | 剩余几个时不可删除 | Number | — | 0 |
| isAddDel | 是否可以新增和删除 | boolean | — | true |
| size | 大小 | string /'large'/'default' | 'small' | small |
| disabled | 是否禁用 | boolean | - | false |
#### selectIcon 图标选择
详情见[EmIconSelect](../EmIconSelect/README.md)
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
| :---------: | :------------: | :------------: | :----------------------: | :----: |
| width | 弹出层宽度 | String, Number | — | 450 |
| trigger | 弹出层触发方式 | string | click/focus/hover/manual | click |
| placeholder | 输入框占位符 | string | — | 请选择 |
| disabled | 是否禁用 | boolean | - | false |
#### tableSelect 表格选择
详情见[EmTableSelect](../EmTableSelect/README.md)
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
| :---------: | :----------------------------: | :-----: | :-----------------------------: | :----: |
| url | 表格拉取数据的接口地址 | String | — | — |
| searchForm | 表格搜索条件 | Array | — | [] |
| columns | 表格表头结构数据,同Element-ui | Array | — | [] |
| pageSize | 表格查询数量 | Number | — | -1 |
| width | 弹出窗宽度 | Number | — | 500 |
| multiple | 是否多选 | Boolean | — | false |
| valKey | 绑定值的key | String | — | id |
| labelKey | 展示值的key | String | — | name |
| placeholder | 输入框占位符 | String | — | 请选择 |
| placement | 弹窗从哪里弹出 | String | [同el-popover中的placement属性] | bottom |
| disabled | 是否禁用 | Boolean | — | false |
#### custom 自定义选项
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
| :------: | :----------------------------------: | :----: | :----: | :----: |
| slotName | 插槽名字,自定义选项通过插槽接入表单 | String | — | — |