• element upload实现图片批量上传与预览(自定义上传)


    1、首先实现图片批量上传

    首先是html代码:

    http-request:覆盖默认的上传行为,可以自定义上传的实现

    <el-form enctype="multipart/form-data"> <el-form-item label=""> <el-upload multiple ref="upload" :action="action" :headers="{processData: false,contentType: false}" name="file" :data="filist" list-type="picture-card" :file-list="fileList" :limit="20" :auto-upload="false" :with-credentials="true" :disabled="productMainDisable" :on-progress="handleUpload" :on-preview="handlePictureCardPreview" :on-remove="handleRemove" :http-request="uploadFile" :before-upload="beforeAvatarUpload"> <i class="el-icon-plus"></i> <div slot="tip" class="el-upload__tip"> <p>1、上传图片只能是 JPG/PNG 格式!</p> <p>2、上传图片大小不能超过 5MB!</p> </div> <!-- :on-success="weiBo" --> </el-upload> <el-dialog :visible.sync="dialogVisible"> <img width="100%" :src="dialogImageUrl" alt=""> </el-dialog> </el-form-item> </el-form>

    在data里面定义:
    action: Domain + '/supplier/purchase/purchasedeliver/createPurchaseSignPod', //上传图片地址 fileList: [], filist: { uuid: '' ,//需要附带的参数 }, formDate: "", isbandel:false,
        uploadFile(file) {
                    this.formDate.append('file', file.file);
                },
                //上传签收单
                uploadpicture(uuid) {
                    console.log(uuid)
                    this.classifyWindow = true;
                    this.filist.uuid = uuid;
                },
                //确认上传图片  (自定义上传实现)
                submitUpload() {
                    var that = this
                    if(that.formDate){
                        that.isbandel = true;
                    }
                    console.log(that.formDate)
                    that.formDate = new FormData()
                    that.$refs.upload.submit();
                    that.formDate.append('uuid', that.filist.uuid);
                    $.ajax({
                        url: Domain + "/supplier/purchase/purchasedeliver/createPurchaseSignPod",
                        dataType: "json",
                        method: "POST",
                        contentType:false,
                        processData:false,
                        // contentType: "multipart/form-data",
                        data: that.formDate,
                        success: function (ret) {
                            if (ret.retStatus == "1") {
                                that.$message({
                                    type: "success",
                                    message: "上传成功!"
                                });
                                // 调用列表页刷新数据方法
                                that.classifyWindow = false;
                                that.isbandel = false;
                                that.doSearch();
                                that.canleUpload();
                            }
                        },
                    });
                },
                //取消上传
                canleUpload() {
                    this.classifyWindow = false;
                    this.$refs.upload.clearFiles();
                },
                handleUpload: function (event, file, fileList) {
                    this.productMainDisable = true;
                },
                //查看大图
                handlePictureCardPreview: function (file) {
                    this.dialogImageUrl = file.url;
                    this.dialogVisible = true;
                },
                //    文件删除操作
                handleRemove: function (file, fileList) {
                    this.fileList = [];
                    this.fileList = fileList;
                },
                //上传图片之前判断图片大小及格式
                beforeAvatarUpload(file) {
                    console.log(file)
                    const isJPG = file.type === 'image/jpeg';
                    const isPNG = file.type === 'image/png';
                    const isLt2M = file.size / 1024 / 1024 / 1024 < 5;
                    this.beforeUpload = false;
                    if (!isJPG && !isPNG) {
                        this.beforeUpload = true;
                        this.$message.error('上传图片只能是 JPG/PNG 格式!');
                    }
                    if (!isLt2M) {
                        this.beforeUpload = true;
                        this.$message.error('上传图片大小不能超过 5MB!');
                    }
                    return (isJPG || isPNG) && isLt2M;
                },
                // 此处已注释,如果用这个方法上传就会有几张图片调用几次接口
                weiBo: function (response, file, fileList) {
                    if (response.retStatus != '1') {
                        this.$message({
                            type: 'error',
                            message: response.retMessage,
                        });
                    } else {
                        this.$message({
                            type: "success",
                            message: "上传成功!"
                        })
                }

    2、实现图片预览

    <ul class="imgbox m-listtable f-pdg-20-t">
                    <li v-for="(item,uuid) in srcList" :key="uuid">
                        <el-image 
                style=" 100%;"
                 :src="item.signPodPath" 
                :preview-src-list="new_arr">
                   </el-image>
              </li>
       </ul>
    
    
    srcList: [], //用来循环的
    new_arr:[],//用来预览的数组
    
    //获取图片
      getImglist(){
        var that = this
        $.ajax({
           url: 'xxx',
           dataType: "json",
           method: "POST",
           data: {
                "uuid": utils.getQueryString("uuid")
           },
           success: function (ret) {
               if (ret.retStatus == "1") {
                   that.srcList = JSON.parse(ret.retData)
                   var arr = []
                   let result = []
                   that.srcList.forEach(item => {
                     arr = item.signPodPath
                       that.new_arr.push(arr)
                   })
                  console.log(that.new_arr)
              }
            }
          })
       }
  • 相关阅读:
    算法疑难(js实现)---5、变态跳台阶
    算法疑难(js实现)---4、跳台阶(记忆化递归)
    算法疑难(js实现)---3、两个栈来实现一个队列
    算法疑难(js实现)---2、重建二叉树
    Ext的Panel总结(好文章)
    Extjs datefield 日历控件中文显示
    EXTJS项目实战经验总结一:日期组件的change事件:
    ExtJs内的datefield控件选择日期过后的事件监听select
    ExtJs FormPanel布局
    开发extjs常用的插件
  • 原文地址:https://www.cnblogs.com/lidonglin/p/13169321.html
Copyright © 2020-2023  润新知