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 移除掉,隱藏上傳按鈕才會生效!
