elementui上传图片回显功能实现

 更新时间:2023年07月18日 11:06:04   作者:不完美女孩-  
这篇文章主要介绍了elementui上传图片回显,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

elementui上传图片回显

<el-upload
  class="avatar-uploader"
    ref="otherLicense"
    action
    :auto-upload="false"
    :on-preview="handlePicPreview"
    :on-remove="handleRemove"
    :file-list="form.fileList"
    :limit="imgLimit"
    :on-change="otherSectionFile"
    list-type="picture-card"
    multiple
  >
  <i class="el-icon-plus"></i>
</el-upload>
<!-- 上传图片放大 -->
<el-dialog :visible.sync="dialogVisible">
  <img width="100%" :src="dialogImageUrl" alt="" />
</el-dialog>

data中

// 业务结束证明材料
 let validateImage = (rule, value, callback) => {
    // console.log(this.AddDateModel.fileId);
    //验证器
    if (this.AddDateModel.fileId.length <= 0) {
      //为true代表图片在  false报错
      callback(new Error("请上传业务结束证明材料"));
    } else {
      callback();
    }
  };
AddDateModel: {
 fileId:[]
},
// 回显图片的路径
photoList: [{ url: "" }],
// 放大图片的路径
dialogImageUrl: "",
// 上传图片放大弹出框
dialogVisible: false,
imgLimit: 9, //最多可上传几张图片
AddDateRules: {
 fileId: [
    { required: true, validator: validateImage, trigger: "blur" },
  ],
},

methods中

 handlePicPreview(file) {
  this.dialogImageUrl = file.url;
   this.dialogVisible = true;
 },
 // 业务申请材料
 handleRemove(file, fileList) {
   this.AddDateModel.fileId.map((item, index) => {
     if (item.uid == file.uid) {
       this.AddDateModel.fileId.splice(index, 1);
     }
   });
 },
 otherSectionFile(file) {
   const typeArr = ["image/png", "image/gif", "image/jpeg", "image/jpg"];
   const isJPG = typeArr.indexOf(file.raw.type) !== -1;
   const isLt20M = file.size / 1024 / 1024 < 20;
   if (!isJPG) {
     this.$message.error("只能是图片!");
     this.$refs.upload.clearFiles();
     this.otherFiles = null;
     return;
   }
   if (!isLt20M) {
     this.$message.error("上传图片大小不能超过 20MB!");
     this.$refs.upload.clearFiles();
     this.otherFiles = null;
     return;
   }
   this.otherFiles = file.raw;
   // FormData 对象
   var formData = new FormData();
   // 文件对象
   formData.append("file", this.otherFiles);
   formData.append("filePath", "yuanchengyiliao");
   let config = {
     headers: {
       "Content-Type": "multipart/form-data",
     },
     methods: "post",
   };
   // 调取接口  上传参数
   this.$axios.hosUpload(formData, config).then((res) => {
     // console.log(file)
     let result = res.data.data;
     let arr = [];
     for (let i = 0; i < result.length; i++) {
       // console.log(result[i])
       arr.push(result[i].pictureId);
     }
     file.pictureId = arr.join("||");
     this.AddDateModel.fileId.push(file);
     // console.log(this.AddDateModel.fileId);
   });
 },

显示数据的方法中

async bussEdit(row) {
 //调取接口然后把数据传到photoList中,我只上传一张图片,就直接写,上传多张的,循环就好了。
 this.photoList[0].url = 图片路径;
},
// 回显
fileCoList: [], //图片回显
if (row.fileId) {
 // console.log(row.fileId)
  let imgss = [];
  let imgLen = row.fileId.split(",");
  for (let i = 0; i < imgLen.length; i++) {
    imgss.push(imgLen[i]);
  }
  // console.log(imgss.join(','))
this.$nextTick(() => {
  this.$refs.addinmanfill.getFile(imgss.join(","));
});
} else {
    this.$nextTick(() => {
  this.$refs.addinmanfill.getFile('');
  });
}
watch: {
fileCoList: {
    deep: true,
    handler() {
      if (this.fileCoList) {
        this.AddDateModel.fileId = this.fileCoList;
      }
    },
  },
},
async getFile(ids) {
let idsdata = _qs.stringify({
  ids: ids,
});
let res = await this.$axios.sysgetFile(idsdata);
//   console.log(res.data.data);
let result = res.data.data;
result.map((item) => {
  // console.log(item)
  item.url = this.GLOBAL.BASE_URL + item.url;
  item.pictureId = item.id;
});
// console.log(result)
this.fileCoList = result;
},

到此这篇关于elementui上传图片 回显的文章就介绍到这了,更多相关elementui上传图片 回显内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • uniapp微信小程序与H5的弹窗滚动穿透解决方法

    uniapp微信小程序与H5的弹窗滚动穿透解决方法

    在uni-app中弹窗的用途很常见,比如商品规格选取、广告弹窗等,下面这篇文章主要给大家介绍了关于uniapp微信小程序与H5的弹窗滚动穿透解决方法,需要的朋友可以参考下
    2023-01-01
  • JS中Attr的用法详解

    JS中Attr的用法详解

    本文通过实例代码给大家介绍了js中的attr的用法,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-10-10
  • 微信小程序实现全局状态管理的方法整理

    微信小程序实现全局状态管理的方法整理

    已知微信小程序中如果要做到全局状态共享,常用的有四种方式,分别是globalData、本地缓存、mobx-miniprogram和westore,本文将带大家看看mobx-miniprogram是如何实现的小程序的全局状态管理,需要的可以收藏一下
    2023-06-06
  • js实现消息滚动效果

    js实现消息滚动效果

    本文主要分享了js实现消息滚动效果的示例代码。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • Js过滤空格的实现代码

    Js过滤空格的实现代码

    Js空格过滤代码,这个实用性很强,可以省去用动态语言过滤字符的麻烦,减轻服务器压力,而且JS执行速度较快
    2013-03-03
  • Js动态创建div

    Js动态创建div

    因为功能需要,需要动态创建DIV
    2008-09-09
  • 用JS判断对象是否为空的几种常用方法

    用JS判断对象是否为空的几种常用方法

    如何判断对象是否为空是我们在开发过程中经常遇到的问题,今天我们将讨论几种常用的方法,以及如何在不同的场景中使用它们,接下来、一起看看吧,对你肯定有帮助
    2024-01-01
  • Popup弹出框添加数据实现方法

    Popup弹出框添加数据实现方法

    这篇文章主要为大家详细介绍了Popup弹出框添加数据的简单实现方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • 解决 window.onload 被覆盖的问题方法

    解决 window.onload 被覆盖的问题方法

    这篇文章主要介绍了解决 window.onload 被覆盖的问题方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • js实现带缓冲效果的仿QQ面板折叠菜单代码

    js实现带缓冲效果的仿QQ面板折叠菜单代码

    这篇文章主要介绍了js实现带缓冲效果的仿QQ面板折叠菜单代码,通过JavaScript定时函数递归调用实现折叠菜单的缓冲效果,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09

最新评论