<template>
<el-form
:ref="myConfig.ref"
:model="myFormData"
:size="myConfig.size"
class="text-left"
:rules="formRules"
:label-width="myConfig.labelWidth"
:validate-on-rule-change="false"
:inline="myConfig.inlineFlag"
>
<template v-for="(item,$index) in itemList">
<el-form-item
:class="item.class"
:style="{width:item.width}"
:label="item.label"
:prop="item.prop"
:key="$index"
v-if="(typeof(item.show)=='function'?item.show():(item.show!=undefined?item.show:true))"
>
<!--表单label-->
<template v-if="item.slot&&typeof(item.labelFun) == 'function'" slot='label'>
<span v-html='item.labelFun()'></span>
</template>
<!--表单前缀-->
<template v-if="item.slot&&(item.slotType=='prepend'||(typeof(item.slotType)=='object'&&item.slotType.indexOf('prepend')!=-1))">
<slot :name="(item.slotName?item.slotName:item.prop)+'-prepend'" :data="item" />
</template>
<!-- 输入框 -->
<el-input
v-if="item.type==='input'"
v-model="myFormData[item.prop]"
:disabled="(typeof(item.disabled)=='function'?item.disabled():item.disabled)"
:placeholder="item.placeholder?item.placeholder:''"
@change="handleEvent(item.event,myFormData[item.prop],$index)"
></el-input>
<!-- 数字输入框 -->
<el-input
v-if="item.type==='number'"
v-model="myFormData[item.prop]"
type='number'
:disabled="item.disabled"
:placeholder="item.placeholder?item.placeholder:''"
@change="handleEvent(item.event,myFormData[item.prop],$index)"
></el-input>
<!-- 密码框 -->
<el-input
v-if="item.type==='password'"
type='password'
show-password
v-model="myFormData[item.prop]"
:disabled="item.disabled"
:placeholder="item.placeholder?item.placeholder:''"
></el-input>
<!-- 文本域 -->
<el-input
v-if="item.type==='textarea'"
type="textarea"
:disabled="item.disabled"
v-model="myFormData[item.prop]"
:placeholder="item.placeholder?item.placeholder:''"
:maxlength="item.maxlength?item.maxlength:''"
:show-word-limit="item.limit?item.limit:false"
@blur="handleEvent(item.event,myFormData[item.prop],$index)"
></el-input>
<!-- 下拉框 -->
<template>
<el-select
v-if="item.type==='select'"
:filterable="item.filterable?item.filterable:false"
:multiple="item.multiple"
:reserve-keyword="item.reserveKeyword"
v-model="myFormData[item.prop]"
:disabled="(typeof(item.disabled)=='function'?item.disabled():item.disabled)"
:class="item.class"
@change="handleEvent(item.event,myFormData[item.prop],$index)"
>
<el-option
v-for="(op, index) in item.options"
:label="item.optionLabel?op[item.optionLabel]:(op.label?op.label:op)"
:value="item.optionValue?op[item.optionValue]:(op.value?op.value:op)"
:key="index"
></el-option>
</el-select>
</template>
<!-- 单选 -->
<el-radio-group
v-if="item.type==='radio'"
v-model="myFormData[item.prop]"
:disabled="item.disabled"
@change="handleEvent(item.event,myFormData[item.prop],$index)"
>
<el-radio v-for="(ra,index) in item.radios" :label="ra.value?ra.value:ra" :key="index">{{ra.label?ra.label:ra}}</el-radio>
</el-radio-group>
<!-- 复选框-->
<template v-if="item.type=='checkbox'&&item.isSingle">
<el-checkbox v-model="myFormData[item.prop]" :disabled="item.disabled" @change="handleEvent(item.event,myFormData[item.prop],$index)">
<template v-if="item.slot">
<slot :name="item.prop" :data="item" />
</template>
<template v-else>{{item.checkboxLabel?item.checkboxLabel:item.label}}</template>
</el-checkbox>
</template>
<!-- 复选框组-->
<el-checkbox-group
@change="handleEvent(item.event,myFormData[item.prop],$index)"
v-if="item.type==='checkbox'&&(!item.isSingle)"
v-model="myFormData[item.prop]"
:disabled="item.disabled"
>
<el-checkbox v-for="(ch,index) in item.checkboxs" :label="item.checkboxLabel?ch[item.checkboxLabel]:ch.value?ch.value:ch" :key="index">{{item.checkboxLabel?ch[item.checkboxLabel]:ch.label?ch.label:ch}}</el-checkbox>
</el-checkbox-group>
<!-- 日期 -->
<el-date-picker
v-if="item.type==='date'"
v-model="myFormData[item.prop]"
:value-format="item.valueFormat"
:disabled="item.disabled"
></el-date-picker>
<!-- 时间 -->
<el-time-picker
v-if="item.type==='time'"
v-model="myFormData[item.prop]"
:disabled="item.disabled"
></el-time-picker>
<!-- 日期时间 -->
<el-date-picker
v-if="item.type==='dateTime'"
type="datetime"
v-model="myFormData[item.prop]"
:disabled="item.disable"
></el-date-picker>
<!-- 日期范围 -->
<el-date-picker
v-if="item.type==='daterange'"
type="daterange"
v-model="myFormData[item.prop]"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
:disabled="item.disabled"
@change="handleEvent(item.event,myFormData[item.prop],$index)"
></el-date-picker>
<!-- 开关 -->
<el-switch
v-if="item.type==='switch'"
v-model="myFormData[item.prop]"
:disabled="item.disabled"
></el-switch>
<!-- slot-->
<template v-if="item.type==='slot'">
<slot :name="item.slotName?item.slotName:item.prop" :data="item" />
</template>
<!-- 文件 -->
<el-upload
v-if="item.type==='file'"
class="upload-demo"
:ref="item.ref"
action
:limit="item.limit"
:file-list="myFormData[item.prop]"
:auto-upload="item.autoUpload"
:disabled="item.disabled"
:accept="item.accept"
:on-change="(file)=>{return changeFile(file,item,$index)}"
:on-exceed="(files, fileList)=>{return handleExceed(files, fileList,item)}"
:before-remove="(files, fileList)=>{return handleRmove(files, fileList,item)}"
>
<!-- <el-button slot="trigger" size="small" type="primary">选取文件</el-button> -->
<i slot="trigger" class="el-icon-upload self-icon-upload"></i>
<template v-if='typeof(item.tip) == "function"'>
<div slot="tip" class="el-upload__tip">{{item.tip()}}</div>
</template>
<template v-else>
<div slot="tip" class="el-upload__tip">{{item.tip}}</div>
</template>
</el-upload>
<!--tag标签-->
<!-- <template class="tag-group" v-if="item.type==='tag'">
<el-tag
v-for="(op,i) in item.options"
:key="i"
:type="typeof(item.config.type)=='string'?item.config.type:item.config.type[i]"
:effect="typeof(item.config.effect)=='string'?item.config.effect:item.config.effect[i]"
:closable="item.closable"
@click="handleEvent(item.clickEvent,item.key?op[item.key]:op,$index)"
@close="handleEvent(item.event,item.key?op[item.key]:op,$index)"
>{{ item.key?op[item.key]:op }}</el-tag>
</template> -->
<template class="tag-group" v-if="item.type==='tag'">
<el-tooltip v-for="(op,i) in item.options" :key="i" placement="bottom" effect="light">
<div slot="content">{{(item.sample=='groupSample')?op[item.sample]:item.sample[op]}}</div>
<el-tag
:type="typeof(
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
LOVE_tenYear
- 粉丝: 192
- 资源: 8
最新资源
- 自媒体studio one 的插件dll 文件,不会安装的,自己看博客
- 强化学习-Birds-Code
- VW80332-2021中文版
- GPS 标准定位服务 (SPS) 性能标准
- 强化学习 -迷宫Code
- CBAM注意力机制详解
- 清华大学DeepSeek如何赋能职场应用?从提示词技巧到多场景应用
- PCAA模块加持YOLOv11-目标检测16个点暴力涨点攻略.pdf
- Mamba-YOLOv11骨干替换-阿里云最新架构优化方案解析.pdf
- LSKA大核注意力机制-YOLOv11检测头优化全流程详解.pdf
- YOLOv11+5G网络-港口集装箱自动识别与物流调度系统搭建.pdf
- YOLOv11+3D点云-物流仓储场景下的包裹体积测量与分拣系统.pdf
- YOLOv11+BEVformer-三维目标检测在自动驾驶中的融合实践.pdf
- YOLOv11+FPGA硬件加速-高速公路卡口车牌识别延迟优化指南.pdf
- YOLOv11+ROS机器人-实时动态场景下的目标抓取与避障算法详解.pdf
- YOLOv11+BEVformer实现自动驾驶多视角目标融合检测.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
评论10