elementUI的table组件实现动态增加、删除可输入的表格
实现效果
解决方案
总体的解决思路是利用table组件的自定义列模板通过Scoped slot获取到 row, column, $index,拿到每一行的数据,再在动态赋给每行的input和select的v–model值中,直接上代码
template部分
<el-form-item label="添加信息" prop="remark">
<!-- 添加按钮 -->
<el-button type="primary" size="mini" @click="handleAdd">添加</el-button>
<el-table
:data="dataList"
size="mini"
>
<el-table-column type="index" label="序号" width="50"></el-table-column>
<el-table-column prop="companyName" label="公司名称" :show-overflow-tooltip="true" min-width="200">
<template slot-scope="scope">
<el-input
v-model.trim="scope.row.companyName"
placeholder="请输入公司名称"
clearable
>
</el-input>
</template>
</el-table-column>
<el-table-column prop="contractName" label="合同名称" :show-overflow-tooltip="true" min-width="200">
<template slot-scope="scope">
<el-select
v-model="scope.row.contractName"
placeholder="请选择合同"
style="width: 100%"
>
<el-option
v-for="item in contractList"
:key="item.dicId"
:label="item.dicItemName"
:value="item.dicId"
></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column prop="type" label="发票类型" :show-overflow-tooltip="true" min-width="100">
<template slot-scope="scope">
<el-select
v-model="scope.row.type"
placeholder="请选择发票类型"
style="width: 100%"
>
<el-option
v-for="item in typeList"
:key="item.dicId"
:label="item.dicItemName"
:value="item.dicId"
></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column prop="licenseBeginTime" label="开通时间" :show-overflow-tooltip="true" min-width="180">
<el-date-picker
v-model="form.licenseBeginTime"
type="date"
placeholder="选择开通时间"
style="width: 100%"
></el-date-picker>
</el-table-column>
<el-table-column width="80" label="操作" fixed="right" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.$index, scope.row)"
></el-button>
</template>
</el-table-column>
</el-table>
</el-form-item>
data() {
return {
dataList: [],
contractList: [],
typeList: []
}
},
methods: {
// 添加行
handleAdd() {
var _this = this
let list = {
companyName: '',
contractName: '',
type: '',
licenseBeginTime: '',
}
_this.dataList.push(list)
},
// 删除行
handleDelete(index, row) {
var _this = this
_this.dataList.splice(index, 1)
},
}
总结
实现此效果主要是数据处理和数据传参,增加和删除是对数组进行添加项和删除项,删除的时候需要精确的拿到传参下来的指定行的index值
动态表格中的数据要做相互关联的请参考另外一篇文章:
elementUI的table组件实现动态增删数据联动的可输入的表格
原文地址:https://blog.csdn.net/weixin_44490021/article/details/132215845
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_42098.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。