<template>
<el-upload
ref="uploadFile"
:class="[showUploadBtn ? '' : 'hidden-Btn']" //是否隐藏点击上传的按钮
:disabled="!showUploadBtn" //是否隐藏文件删除标记
action="#none"
:http-request="uploadSectionFile"
:on-preview="handlePreview"
:on-remove="handleRemove"
:before-remove="beforeRemove"
:on-change="fileChange"
:auto-upload="false"
multiple
:on-exceed="handleExceed"
:file-list="fileList"
>
<el-button size="small" type="primary">点击上传</el-button>
</el-upload>
</template>

<script>
export default {
name: "UploadFiles",
props: {
files: {
type: Array,
default: () => [],
},
/*是否显示上传文件按钮、是否显示文件删除×号*/
showUploadBtn: {
type: Boolean,
default: true,
},
},
data() {
return {
fileList: this.files,
};
},
methods: {
handleRemove(file, fileList) {
console.log(file, fileList);
// 改变文件列表
this.fileList = fileList;
},
handlePreview(file) {
console.log("handlePreview:", file);
if (file.url) {
window.open(file.url);
}
},
handleExceed(files, fileList) {
this.$message.warning(
`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
files.length + fileList.length
} 个文件`
);
},
beforeRemove(file, fileList) {
return this.$confirm(`确定移除 ${file.name}?`);
},
// param是自带参数。
// this.$refs.uploadFile.submit()会自动调用 httpRequest方法.在里面取得file
uploadSectionFile(param) {
var fileObj = param.file;
// FormData 对象
var form = new FormData();
// 文件对象
form.append("file", fileObj);
console.log("dfdg:");
console.log(form);
let arr = [];
this.fileList.forEach((element) => {
let formData = new FormData();
formData.append("file", element);
arr.push(formData);
});
},
// fileList 是文件列表发生变化后,返回的修改后的列表对象,这里直接赋值
fileChange(file, fileList) {
console.log(file.raw);
// 改变文件列表
this.fileList = fileList;
},
},
};
</script>

<style scoped lang="scss">
.hidden-Btn {
/deep/ .el-upload {
display: none;
}
}
</style>