el-form-item-generater
根据传入的数据自动生成el-form-item
属性
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|---|
| forms | 用于生成formItem的数组 | ArrayformItemData | -- | [] |
| models | item的值绑定到该对象属性上 | Object | {} | {} |
| justShow | 是否为展示模式 | Boolean | true或false | false |
| showValues | justShow为true时formItem使用该对象的key值 | Object | -- | {} |
formItemData属性
| 参数 | 说明 | 类型 | 可选值 | 是否必填 | 默认值 |
|---|
| type | 生成的item类型,slot为true时可以不填 | String | input、number、date、daterange、select、radio、checkbox、textarea、upload、link | 是 | -- |
| label | el-form-item中label的值 | String | -- | 是 | -- |
| name | 从modelsname获取初始值,默认绑定到name值对应的key上 | String | -- | 是 | -- |
| placeholder | 提示信息 | String | -- | 否 | -- |
| class | 自定义el-form-item的class | String | -- | 否 | -- |
| width | 自定义el-form-item中lalel的宽度 | Boolean | -- | 否 | 300 |
| bindKey | 绑定到models上的key | String | -- | 否 | -- |
| disabled | 是否禁止 | Boolean | true或者false | 否 | false |
| required | 是否必填 | Boolean | true或者false | 否 | false |
| multiple | select是否多选 | Boolean | true或者false | 否 | false |
| clearable | select是否可以清除 | Boolean | true或者false | 否 | false |
| col | 在一行中占用的列数,参考element-ui Layout布局 | Number | 1~24 | 否 | 8 |
| data | 用于生成select、radio、checkbox的选项 | Arrayobject | -- | 否 | [] |
| optionValue | 选项中value的key | String | -- | 否 | value |
| optionLabel | 选项中label的key | String | -- | 否 | label |
| optionKey | 选项中key的key | String | -- | 否 | value |
| format | type为date或者daterange时日期格式 | String | -- | 否 | yyyy-MM-dd HH:mm:ss |
| slot | 是否为插槽 | boolean | true或者false | 否 | false |
type为upload时可用的属性
| 参数 | 说明 | 类型 | 可选值 | 是否必填 | 默认值 |
|---|
| uploadType | 上传的类型 | String | image、file | 否 | -- |
| action | 上传地址 | String | -- | 是 | -- |
| imageUrl | 图片预览地址 | String | image、file | 否 | -- |
| fileName | 文件名称(uploadType为file时生效) | String | -- | 否 | -- |
| limit | 文件大小限制 | Number | -- | 否 | 1 |
| patterns | 允许的文件类型 | Arraystring | -- | 否 | 'image/jpeg', 'image/png' |
| onSuccess | 上传成功回调 | Function | -- | 否 | -- |
| handleChange | 选择的文件改变时回调 | Function | -- | 否 | -- |
forms传值示例
<GenerateFormItem
:forms="projectForms"
:models="projectData"
:just-show="justShow"
:show-values="projectData"
<template v-slot:slotName>
<p>自定义的form item</p>
</template>
</GenerateFormItem>
<!-- projectForms -->
[
// 输入框
{
type: 'input',
label: '项目名称',
name: 'projectName',
},
// 日期
{
type: 'date',
label: '离岗日期',
name: 'leaveTime',
disabled: this.disabled,
col: 12,
required: true,
},
// 选择
{
type: 'select',
label: '门禁卡',
name: 'doorState',
data: [
{
dictValue: '已归还',
dictKey: 0,
},
{
dictValue: '未归还',
dictKey: 1,
},
],
col: 12,
optionValue: 'dictKey',
optionLabel: 'dictValue',
optionKey: 'dictKey',
required: true,
bindKey: 'doorState',
},
// 上传文件
{
type: 'upload',
label: '个人身份证',
name: 'personIdUrl',
action: '/api/futurelab/oss/file/upload',
imageUrl: this.form.personIdUrl,
col: 12,
},
// 链接只有在展示模式下生效
{
type: 'link',
label: '详细信息',
name: '查看详细信息',
tolink: 'http://www.baidu.com',
},
// slot
{
slot: true,
name: 'slotName',
},
// 单选
{
type: 'radio',
data:[
{label: '男', value: 1},
{label: '女', value: 2}
]
}
]