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上传图片 回显内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 关于JS中的undefined与null详解

    关于JS中的undefined与null详解

    在JavaScript中,undefined和null是两个特殊的值,用于表示缺失或空值,文章通过代码示例详细介绍undefined与null作用及使用方法,感兴趣的同学可以借鉴一下
    2023-05-05
  • uni-app常用的几种页面跳转方式总结

    uni-app常用的几种页面跳转方式总结

    uni-app的页面跳转和小程序和vue很相似,只是方法和标签有所不同,这篇文章主要给大家介绍了关于uni-app常用的几种页面跳转方式,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • 一文讲清JS中for循环的所有用法

    一文讲清JS中for循环的所有用法

    这篇文章主要介绍了JavaScript中for循环的所有用法,文章通过详细的代码示例介绍JavaScript中的所有for循环,感兴趣的同学可以跟着小编一起来学习
    2023-05-05
  • JavaScript验证图片类型(扩展名)的函数分享

    JavaScript验证图片类型(扩展名)的函数分享

    这篇文章主要介绍了JavaScript验证图片类型的函数分享,需要的朋友可以参考下
    2014-05-05
  • 详解组件库的webpack构建速度优化

    详解组件库的webpack构建速度优化

    这篇文章主要介绍了详解组件库的webpack构建速度优化,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • 找出字符串中出现次数最多的字母和出现次数精简版

    找出字符串中出现次数最多的字母和出现次数精简版

    找出字符串中出现次数最多的字母和出现次数精简版,有需求的朋友可以参考下
    2012-11-11
  • JS原生实现轮播图的几种方法

    JS原生实现轮播图的几种方法

    这篇文章主要介绍了JS原生实现轮播图的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 一篇文章深入了解JavaScript中的fetch方法

    一篇文章深入了解JavaScript中的fetch方法

    这篇文章主要给大家介绍了关于JavaScript中fetch方法的相关资料,JavaScript中的fetch()方法用于向服务器请求并加载网页中的信息,请求可以是返回JSON或XML格式数据的任何API,需要的朋友可以参考下
    2023-10-10
  • JavaScript之Array常见的方法详解

    JavaScript之Array常见的方法详解

    这篇文章主要为大家介绍了JavaScript之Array常见的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助V
    2021-11-11
  • js中区分深拷贝与浅拷贝的实战过程

    js中区分深拷贝与浅拷贝的实战过程

    两个对象A、B,A有数据B为空,B复制了A,我们修改A,如果B中的数据跟着变化了,那就是浅拷贝,如果没有变化,那就是深拷贝,下面这篇文章主要给大家介绍了关于js中区分深拷贝与浅拷贝的相关资料,需要的朋友可以参考下
    2022-01-01

最新评论