您好,登錄后才能下訂單哦!
這篇文章主要講解了“Vue和Element怎么自定義上傳封面組件功能”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Vue和Element怎么自定義上傳封面組件功能”吧!
先來看一下效果:
第一張圖片是上傳之前,第二張圖片是上傳成功后,第3張圖片是鼠標放上去之后的效果!首先整理需求,圖片上傳我們使用照片墻的方式,只能上傳一張圖片,圖片上傳成功后不能繼續上傳,如果想要更換圖片,則需要將圖片刪除后重新上傳。點擊圖片上面的放大鏡可以查看大圖。需要限制圖片上傳的格式,圖片的大小。組件代碼:
<template> <div class="upload"> <el-upload :class="{'hidden':mFileList.length > 0}" list-type="picture-card" :on-remove="handleRemove" :action="action" :before-upload="beforeUploadHandle" :on-success="successHandle" :on-change="changeHandle" :limit="1" :accept="accept" :on-exceed="handleExceed" :file-list="fileList" :on-preview="handlePictureCardPreview" > <i class="el-icon-plus"></i> </el-upload> <el-dialog :visible.sync="dialogVisible"> <img width="100%" :src="dialogImageUrl" alt="" /> </el-dialog> </div> </template> <script> export default { props: { action: { type: String, default: "", }, accept: { type: String, default: "", }, fileList:{ type: Array, default: () => [], }, }, watch: { fileList(newValue, oldValue) { this.mFileList = newValue } }, data() { return { dialogVisible: false, //圖片放大 fileImg: "", //上傳圖片 dialogImageUrl: "", //圖片地址 mFileList:this.fileList, }; }, methods: { handleRemove(file, fileList) { this.$emit("upload-remove", file); }, handlePictureCardPreview(file) { this.dialogImageUrl = file.url; this.dialogVisible = true; }, // 上傳之前 beforeUploadHandle(file) { if (file.type !== "image/jpeg" && file.type !== "image/png") { this.$message({ message: "只支持jpg、png格式的圖片!", type: "warning", }); return false; } const isLt2M = file.size / 1024 / 1024 < 2; if (!isLt2M) { this.$message({ message: "上傳文件大小不能超過 2MB!", type: "warning", }); return false; } }, // 上傳成功 successHandle(response, file, fileList) { this.mFileList = fileList; if (response && response.code === 200) { this.$message.success("圖片上傳成功!"); this.$emit("upload-success", response, file); } else { this.$message.error(response.msg); } }, changeHandle(file, fileList) { if(file.response && file.response.code == 500) { this.$emit("upload-error",file); } }, handleExceed(files, fileList) { this.$message.warning("只能上傳1張圖片!"); }, }, }; </script> <style lang="scss"> .upload .hidden .el-upload--picture-card { display: none; } </style>
調用組件代碼:
<template> <div> <el-form ref="dataForm" label-width="80px"> <el-form-item label="封面" prop="cover" class="is-required"> <upload list-type="picture-card" :action="url" :accept="'.jpg,.png,.JPG,.PNG'" :fileList="fileList" :limit="1" @upload-success="uploadFile" @upload-remove="removeFile" @upload-error="uploadError"> </upload> </el-form-item> </el-form> </div> </template> <script> import Upload from '../components/cover-upload/index.vue' export default { components: { Upload }, data() { return { url: "", fileList: [], } }, methods: { uploadUrl() { this.url = "http://xxx.xxx.xxx.xxx:xxx/yyxt/admin/course/courseInfo/upload?token=075de0303b15a38833a30a7a3b494794"//上傳圖片的后臺接口 }, uploadError(file) { this.fileList = []; }, uploadFile(response, file) { this.fileList = [{ url: response.data, }, ]; }, removeFile(file) { this.fileList = []; }, }, mounted() { this.uploadUrl(); } } </script>
感謝各位的閱讀,以上就是“Vue和Element怎么自定義上傳封面組件功能”的內容了,經過本文的學習后,相信大家對Vue和Element怎么自定義上傳封面組件功能這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。