1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > elementui展示多张图片_elementUI 上传多张图片并预览大图左右切换

elementui展示多张图片_elementUI 上传多张图片并预览大图左右切换

时间:2020-04-24 02:13:37

相关推荐

elementui展示多张图片_elementUI 上传多张图片并预览大图左右切换

前段时间项目需求中涉及到上传多张图片 当条信息查看时可预览大图功能,项目框架vue.js+elementUI,抽时间在此做个整理记录,如有更好的方法 欢迎大家互相交流

页面列表更多操作-修改-先选择图片 点击确定时上传所有,查看-点击图片 就是查看图片大图

上传多张图片:el-upload组件

查看-大图预览左右切换:el-image组件

开发查看-大图预览时 发现个问题:用的组件页面没有效果,经排查是因为之前项目引的elementUI js css版本过旧 没有包含el-image组件,大家开发时候注意下

效果图如下:

直接贴代码如下:

里面有一些是项目的公共方法就不细写了,大家可参考图片上传代码的思路和步骤,具体请以自己的项目为准

// css 图片个数够5张时 上传按钮框隐藏

.disUoloadSty .el-upload--picture-card{

display:none;/*上传按钮隐藏*/}

action="#"

ref="upload"multiple

list-type="picture-card":auto-upload="false"accept=".jpeg,.jpg,.png,":file-list="fileLists":on-preview="handlePictureCardPreview":limit="5":on-change="OnChange":on-remove="handleRemove":class="{disUoloadSty:hideUploadEdit}"

>

注:最多上传5张图片

//查看时 用的elementUI el-image组件 具体用法可查看elementUI官网

//修改-大图预览框

dialogImgVisible: false,大图预览框

hideUploadEdit:false,//图片个数设置 超过5张为true

//上传文件之前的钩子

OnChange:function (file, fileList) {

console.log(file)var testmsg = file.name.substring(file.name.lastIndexOf('.')+1)const extension = testmsg === 'jpeg'

const extension2 = testmsg === 'jpg'

const extension3 = testmsg === 'png'

const isLt2M = file.size / 1024 / 1024 < 10

if(!isLt2M){this.$message({

type:'warning',

message:'文件大小请限制在10M以内'});

}if(!extension && !extension2 && !extension3) {this.$message({

message:'上传文件只能是 jpeg、jpg、png格式!',

type:'warning'});

}this.fileLists.push(file)this.hideUploadEdit = fileList.length >= 5

return (extension || extension2 || extension3) &&isLt2M;

},//提交上传图片前,和其他参数

UploadImg:function(){var _this = thislet fd= newFormData()

let imgIDs=[]

_this.fileLists.forEach(function(item,index){

//判断是新选择的图片 还是已经上传成功的if(item.raw){

fd.append('file',item.raw)

}else{

imgIDs.push(item.id)

}

})if(imgIDs.length >0) fd.append('imgIDs',imgIDs)

//将其他参数一起放到formData中,removeNullStr是一个去除null的公共方法,可参考我这个博客/hanhanours/p/13602396.htmlfor(key inremoveNullStr(_this.form)){

fd.append(key,_this.form[key])

}returnfd;

},//提交表单

submitForm: function (formName) {var _this = this;_submit(_this, _this.urls.updateUrl, formName, function () {

_this.dialogFormVisible= false;

_this.dialogFormVisible2= false;

}, _this.UploadImg())},//修改-大图预览

handlePictureCardPreview:function(file){var _this = this;

_this.dialogImgVisible= true;

//这里项目中做了弹框设置,判断是新选择的图片url 还是已经存在的图片urlif(file.raw){

_this.dialogImageUrl=file.url;

}else{

_this.dialogImageUrl=file.urls;

}

},//修改-删除图片

handleRemove: function(file, fileList) {var _this = this_this.fileLists=fileList

_this.hideUploadEdit= fileList.length >= 5},

//获取图片路径

getImgLists:function (type,id) {var _this = thislet ImgFileList=[];

axios.post(_this.urls.GetImgList,{type:type,routeRecordID:id}).then(function (res) {if(res.data.IsSuccess){

ImgFileList=res.data.Data;

let FilePathResult=[]

let previewPath=[]for(varitem of ImgFileList){

FilePathResult.push({

name:item.FileName,

id:item.ImgID,

url:'/ProjectRouteRecordGas/View?path='+item.SmallFilePath, //缩略图

urls:'/ProjectRouteRecordGas/View?path='+item.BigFilePath //大图

});

//存放大图路径 查看-预览大图会用到

previewPath.push('/ProjectRouteRecordGas/View?path='+item.BigFilePath)

}

_this.fileLists=FilePathResult

_this.previewList=previewPath

_this.hideUploadEdit= _this.fileLists.length >= 5}else{

_this.open(res.data.Message,'错误提示', 'error')

}

})

},//查看-大图预览

getPreviewImgList:function(index) {

let arr=[]

let i= 0;for(i;i < this.previewList.length;i++){

arr.push(this.previewList[i+index])if(i+index >= this.previewList.length-1){

index= 0-(i+1);

}

}returnarr;

},

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