1、template:
<div style="text-align: initial;margin-top: 20px;"> <el-upload :class="{hide:hideUpload}" action= '' list-type="picture-card" :auto-upload="false" :show-file-list='true' :file-list="certificates" :on-preview="showimg" :on-change="handlePictureCardPreview" :limit="3" accept=".jpg,.jpeg,.png,.JPG,.JPEG" :on-exceed="handleExceed" :on-remove="handleRemove"> <i class="el-icon-plus" ></i> </el-upload> <el-dialog :visible.sync="dialogVisible"> <img width="100%" :src="showimgs" alt=""> </el-dialog> </div>
2、export default:
certificate: [],
certificates: [],
showimgs: '', dialogVisible: false, hideUpload: false, limitCount: 3,
3、methods:
//放大显示图片
showimg(file) { this.showimgs = file.url this.dialogVisible = true },
//限制图片弹窗 handleExceed(files, fileList) { this.$message.warning(`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`); },
//移除图片 handleRemove(file, fileList) { var that = this that.certificate = [] fileList.forEach((item, index) => { that.certificate.push(item.url); });
//当图片大于或等于3张, this.hideUpload = fileList.length >= this.limitCount; },
//选择图片 handlePictureCardPreview(file, fileList) { var that = this fileList.forEach((item, index) => { if (item.raw) { var reader = new FileReader() reader.readAsDataURL(item.raw) reader.onload = function () { that.certificate.push(reader.result) } } }); console.log(fileList.length); if(fileList.length == 3) { this.showBtnImg = false; this.noneBtnImg = true; } this.hideUpload = fileList.length >= this.limitCount; },
4、style:
.hide .el-upload--picture-card{
display: none !important; /* 上传按钮隐藏 */
}
需要注意的是,style 必须把 scope 移除掉,隐藏上传按钮才会生效!