<template> <div> <el-upload ref="upload" accept=".mp4,.flv,.mpeg,.mpg,.word,.pdf,.ppt,.jpg,.jpeg,.png.JPG,.JPEG,.PNG" :multiple="true" :http-request="uploadFile" :file-list="fileList" action :auto-upload="false" :before-upload="beforeAvatarUpload" > <i class="el-icon-plus fileUpload"></i> </el-upload> <el-button style="margin-left: 10px" size="small" type="success" v-loading="loading" @click="submitUpload" >上传到服务器</el-button > </div> </template> <script> export default { props:{ fileList:{ type:Array, default:[] }, }, data() { return { fullscreenLoading: false, loading:false, filedata: [], fileArr: [], }; }, mounted(){ }, methods: { submitUpload() { const loading = this.$loading({ lock: true, text: '上传中,请稍候。。。', spinner: 'el-icon-loading', background: 'rgba(0, 0, 0, 0.7)' }); // this.loading = true this.filedata = new FormData(); // 用FormData存放上传文件 this.$refs.upload.submit(); // 会循环调用uploadFile方法,多个文件调用多次 let _this = this; _this .$https( { method: "post", url: "file/datum/upload", authType: this.backToken, }, this.filedata ) .then((res) => { // this.loading = false let resData = res.data; if (resData.resultCode == "200") { loading.close(); _this.$message.success('上传成功!') const data = resData.data.fileList; let newArray = data.map((item) => item.id); let editArray =[] if(this.fileList.length){ editArray = this.fileList.map(item=>item.id) } this.$emit("datumList", [...newArray,...editArray]); } else { _this.$message.error(resData.msg || resData.message); } }) .catch((err) => { console.log(err); _this.$message.error(err.msg || err.message); }); }, uploadFile(file) { this.filedata.append("file", file.file); }, beforeAvatarUpload(file) { const isLt10G = file.size / 1024 / 1024 / 1024 < 10; if (!isLt10G) { this.$message.error("上传文件大小不能超过 10GB!"); } return isLt10G; } } }; </script> <style> .el-upload .fileUpload { width: 148px; height: 148px; line-height: 148px!important; margin: 0 auto; border: 1px dashed #c0ccda; font-size: 24px; font: #ccc; } </style>