vue+element ui 关于表格中多行增加上传文件操作
在Vue中结合Element UI实现表格中多行增加上传文件的功能,可以通过使用el-table
结合el-upload
组件来实现。以下是一个简单的示例:
<template>
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="date" label="日期" width="180">
</el-table-column>
<el-table-column prop="name" label="姓名" width="180">
</el-table-column>
<!-- 上传文件的列 -->
<el-table-column label="文件上传">
<!-- 使用template插槽来为每一行创建上传按钮 -->
<template slot-scope="scope">
<el-upload
class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/"
:on-preview="handlePreview"
:on-remove="handleRemove"
:before-remove="beforeRemove"
:limit="3"
:on-exceed="handleExceed"
:file-list="scope.row.fileList"
list-type="text">
<el-button size="small" type="primary">点击上传</el-button>
</el-upload>
</template>
</el-table-column>
</el-table>
</template>
<script>
export default {
data() {
return {
tableData: [
{
date: '2016-05-02',
name: '王小虎',
fileList: [] // 初始化文件列表
},
{
date: '2016-05-04',
name: '李小虎',
fileList: [] // 初始化文件列表
},
// ... 更多行数据
]
};
},
methods: {
handleRemove(file, fileList) {
console.log(file, fileList);
},
handlePreview(file) {
console.log(file);
},
handleExceed(files, fileList) {
this.$message.warning(`最多只能上传 ${this.limit} 个文件!`);
},
beforeRemove(file, fileList) {
return this.$confirm(`确定移除 ${file.name}?`);
},
}
};
</script>
在这个示例中,我们定义了一个tableData
数组来存储表格的数据,其中每个对象都包含一个fileList
属性,用于存储该行上传的文件列表。在el-table-column
中,我们使用template
插槽来为每一行创建一个el-upload
组件,并将该行的fileList
属性绑定到上传组件的:file-list
属性上。这样,每行的上传操作都会独立进行,不会互相影响。
评论已关闭