• vue v-for循环el-upload上传图片 动态添加、删除


    效果图

     js

     uploadHeader: {
            token: "",
            userId: ""
          },
          dialogImageUrl:"",
          dialogVisible:false,
          RecordOperation:{
            imgList:[
                // {imgList:[{url:"https://img.jd9sj.com/VFVBTkdPVV8yMDIwLTA3LTEwXzAxZDJhNWViZGIxZjRlZmM5OGY2ZWQ1NmI3NjkzNGZjX3U9MjI5MTYwNTU0OSwyMjMxODkzMTkwJmZtPTI2JmdwPTAuanBn",name:""}]},
                // {imgList:[{url:"https://img.jd9sj.com/VFVBTkdPVV8yMDIwLTA3LTEwXzAxZDJhNWViZGIxZjRlZmM5OGY2ZWQ1NmI3NjkzNGZjX3U9MjI5MTYwNTU0OSwyMjMxODkzMTkwJmZtPTI2JmdwPTAuanBn",name:""},{url:"https://img.jd9sj.com/VFVBTkdPVV8yMDIwLTA3LTEwXzAxZDJhNWViZGIxZjRlZmM5OGY2ZWQ1NmI3NjkzNGZjX3U9MjI5MTYwNTU0OSwyMjMxODkzMTkwJmZtPTI2JmdwPTAuanBn",name:""}]},
                // {imgList:[{url:"",name:""}]},
              {
               imgList:[
                 {url:"https://img.jd9sj.com/VFVBTkdPVV8yMDIwLTA3LTEwXzAxZDJhNWViZGIxZjRlZmM5OGY2ZWQ1NmI3NjkzNGZjX3U9MjI5MTYwNTU0OSwyMjMxODkzMTkwJmZtPTI2JmdwPTAuanBn",name:""},
                 {url:"https://img.jd9sj.com/VFVBTkdPVV8yMDIwLTA3LTEwXzAxZDJhNWViZGIxZjRlZmM5OGY2ZWQ1NmI3NjkzNGZjX3U9MjI5MTYwNTU0OSwyMjMxODkzMTkwJmZtPTI2JmdwPTAuanBn",name:""},
               ],
               content:"ceshi biaoti 111111111111",
               type:2
              },
              {
               imgList:[
                 {url:"",name:""},
               ],
               content:"ceshi biaoti 111111111111",
               type:0
              },
              {
               imgList:[],
               content:"ceshi 内容 111111111111",
               type:1
              },
              {
               imgList:[],
               content:"ceshi 标题 2222",
               type:0
              },
               {
               imgList:[],
               content:"ceshi 内容 2222",
               type:1
              },
               {
               imgList:[],
               content:"ceshi 内容 333333",
               type:1
              },
               {
               imgList:[
                 {url:"https://img.jd9sj.com/VFVBTkdPVV8yMDIwLTA3LTEwXzAxZDJhNWViZGIxZjRlZmM5OGY2ZWQ1NmI3NjkzNGZjX3U9MjI5MTYwNTU0OSwyMjMxODkzMTkwJmZtPTI2JmdwPTAuanBn",name:""},
               ],
               content:"ceshi biaoti 111111111111",
               type:2
              },
              {
               imgList:[],
               content:"ceshi biaoti 111111111111",
               type:0
              },
              {
               imgList:[],
               content:"ceshi biaoti 111111111111",
               type:0
              },
              {
               imgList:[],
               content:"ceshi biaoti 111111111111",
               type:0
              },
              {
               imgList:[
                 {url:"https://img.jd9sj.com/VFVBTkdPVV8yMDIwLTA3LTEwXzAxZDJhNWViZGIxZjRlZmM5OGY2ZWQ1NmI3NjkzNGZjX3U9MjI5MTYwNTU0OSwyMjMxODkzMTkwJmZtPTI2JmdwPTAuanBn",name:""},
               ],
               content:"ceshi biaoti 111111111111",
               type:2
              },
             ]
    
          },
     addOperation(type){
          this.RecordOperation.imgList.push({imgList:[],content:"",type:type}); 
        },
       handleRemove(obj,res,file) {
         let arr= this.RecordOperation.imgList;
         arr[obj.index].imgList.map((item, index) => {
            console.log(item.url)
            console.log(res.url)
             console.log(this.RecordOperation.imgList[obj.index])
            if (res.url) {
              if (res.url==item.url) {
                if(this.RecordOperation.imgList[obj.index].imgList.length<=1){
                  this.RecordOperation.imgList.splice(obj.index,1)
                }else{
                   this.RecordOperation.imgList[obj.index].imgList.splice(index, 1) 
                }      
              }else if(res.data == item.url){
                if(this.RecordOperation.imgList[obj.index].imgList.length<=1){
                  this.RecordOperation.imgList.splice(obj.index,1)
                }else{
                  this.RecordOperation.imgList[obj.index].imgList.splice(index, 1)      
                }     
              }
            }
          })
            console.log(this.RecordOperation.imgList)
    
        },
        handlePictureCardPreview(file) {
          console.log(file);
          this.dialogImageUrl = file.url;
          this.dialogVisible = true;
        },
        beforeUploadImageDynamicPic(file){
                    var _this = this;
                    var isLt10M = file.size / 1024 / 1024  < 10;
                    if (['image/jpeg', 'image/png'].indexOf(file.type) == -1) {
                        _this.$message.error('请上传正确的图片格式');
                        return false;
                    }
                    if (!isLt10M) {
                        _this.$message.error('上传图片大小不能超过10MB哦!');
                        return false;
                    }
       },
    
                //动态图上传成功
       dynamicPicSuccess(obj,res,file) {
                    var imgList = this.RecordOperation.imgList
                    var index = obj.index;
                    imgList[index].picUrl = res.data;
                    // 少于5张图时,自动添加一行
                    if(imgList[index].length<5)
                    imgList[index].push({content: '', picUrl: ""});
       },
    
                // 移除动态建设图片
      delDynamicPic(i,list) {
                    this.$confirm('确认删除该行图片?', '提示', {
                        confirmButtonText: '确定',
                        cancelButtonText: '取消',
                        type: 'warning'
                    }).then(() => {
                        list.splice(i, 1);
                    });
      },
      delCurrent(i,list){
         list.splice(i, 1);
      },

    <!--vue文本-->


    <el-button type="primary" @click="addOperation('0')">标题+</el-button> <el-button type="primary" @click="addOperation('1')">文本+</el-button> <el-button type="primary" @click="addOperation('2')">上传图片+</el-button> <div style="max-height:800px;overflow-y:scroll "> <div v-for="(v,i) in RecordOperation.imgList" :key="i" style="display:flex"> <div> <span v-if="v.type=='2'" class="editCon"> <el-upload ref="upload" :action="'/admin/sales/tuangouPicUpload'" :headers="uploadHeader" :limit="5" :multiple="true" accept="image/jpeg, image/png" list-type="picture-card" :file-list="RecordOperation.imgList[i].imgList" :before-upload="beforeUploadImageDynamicPic" :on-success="dynamicPicSuccess.bind(null, {'index':i,'data':v})" :on-preview="handlePictureCardPreview" :on-remove="handleRemove.bind(null, {'index':i,'data':v})" > <i class="el-icon-plus"></i> </el-upload> <el-button type="text" class="delBtn" @click="delDynamicPic(i,RecordOperation.imgList)">删除图片及添加框</el-button> </span> <span v-if="v.type=='0'" class="editCon"> <el-input v-model.trim="v.content" placeholder="请输入标题"></el-input> <span @click="delCurrent(i,RecordOperation.imgList)" class="delBtn">删除标题</span> </span> <span v-if="v.type=='1'" class="editCon"> <el-input v-model.trim="v.content" placeholder="请输入内容"></el-input> <span @click="delCurrent(i,RecordOperation.imgList)" class="delBtn">删除内容</span> </span> </div> </div> <el-dialog :visible.sync="dialogVisible"> <img width="100%" :src="dialogImageUrl" alt /> </el-dialog> </div>
  • 相关阅读:
    超简单tensorflow入门优化程序&&tensorboard可视化
    tf.random_normal()函数
    tensorflow中创建多个计算图(Graph)
    tensorflow中有向图(计算图、Graph)、上下文环境(Session)和执行流程
    配置错误 在唯一密钥属性“fileExtension”设置为“.log”时,无法添加类型为“mimeMap”的重复集合项
    取奇偶数
    DNS添加/修改/查询/删除A记录
    IE自动化
    Get-ChildItem参数之 -Exclude,Filter,Recurse应用
    自动下载
  • 原文地址:https://www.cnblogs.com/shuihanxiao/p/13540924.html
Copyright © 2020-2023  润新知