100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Vue el-upload 组件多张图片上传并回显(无需添加样式)以及正确使用方式

Vue el-upload 组件多张图片上传并回显(无需添加样式)以及正确使用方式

时间:2022-03-13 17:11:18

相关推荐

Vue el-upload 组件多张图片上传并回显(无需添加样式)以及正确使用方式

MultiUpload 组件内容:

<template><div><el-upload:action="uploadUrl()"list-type="picture-card"accept=".jpg,.jpeg,.png,.gif"multiple:file-list="fileList":on-remove="handleRemove":on-success="handleUploadSuccess":before-upload="handleBeforeUpload":on-preview="handlePreview":limit="maxCount":on-exceed="handleExceed"><i class="el-icon-plus" /></el-upload><el-dialog :visible.sync="dialogVisible"><img width="100%" :src="dialogImageUrl" :alt="dialogImageName"></el-dialog></div></template><script>import {getImageUpload } from '@/api/badFruit'export default {name: 'MultiUpload',props: {// 图片属性数组value: {type: Array,default: () => []},// 最大上传图片数量maxCount: {type: Number,default: 5}},data() {return {fileList: [],imagesList: [],images: [],dialogVisible: false,dialogImageUrl: null,dialogImageName: '',num: 0,fileNum: 0}},created() {// 上传组件显示列表this.fileList = this.value// 图片保存数组this.imagesList = this.value},methods: {// 文件上传地址uploadUrl() {return getImageUpload},handleRemove(file, fileList) {const list = JSON.parse(JSON.stringify(fileList))this.imagesList = list.map(item => ({name: item.name,url: item.url}))this.$emit('input', this.imagesList)},handlePreview(file) {this.dialogVisible = truethis.dialogImageUrl = file.urlthis.dialogImageName = file.name},handleUploadSuccess(res, file) {// console.log(res, file)if (res.code === '200') {const {message, path } = res.dataif (message === '图片上传成功') {this.images.push({name: file.name,url: path})this.num++if (this.num === this.fileNum) {this.num = 0this.fileNum = 0// 这里如果 this.value.push(imageUrl) 这么写,vue会报出警告,大概意思是value作为props不应该在子组件中被修改// 应该根据 value 得到新的值,而不能修改它,this.value.concat(imageUrl)也是可以的,concat方法返回新的数组this.$emit('input', this.imagesList.concat(this.images))this.images = []}}}},handleBeforeUpload(file) {this.fileNum++console.log('上传个数:' + this.fileNum)},handleExceed(files, fileList) {this.$message({message: '最多只能上传' + this.maxCount + '张图片',type: 'warning',duration: 1000})}}}</script><style scoped lang="scss"></style>

使用方式:

// 模板<el-form-item label="坏果图片"><!--<el-input v-model="form.image" />--><multi-upload v-model="form.image" @input="getImages" /></el-form-item>// 方法getImages(images) {console.log(images)this.form.image = images},

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。