至少上传图片一张

 先看看效果图是不是你想要的。

具体方法如下:

<!-- 图片 -->
          <div class="seller-addGoods-imgUpload">
            <el-form-item ref="photoVos" label="图片:" prop="photoVos" style="display: flex; align-items: center">
              <el-checkbox-group v-model="addGoodsForm.photoVos"></el-checkbox-group>
              <el-upload
                id="upload1"
                class="logo-uploader"
                :action="uploadPic"
                :headers="headers"
                list-type="picture-card"
                :on-preview="handlePictureCardPreview"
                :on-success="
                  (response, file, fileList) => {
                    return handleSuccess(response, file, fileList)
                  }
                "
                :on-remove="
                  (file, filelist) => {
                    return handleRemove(file, filelist)
                  }
                "
                :before-upload="beforeAvatarUpload"
                :file-list="addGoodsForm.photoVos"
                :on-exceed="handleExceed"
                :limit="10"
              >
                <i class="el-icon-plus avatar-uploader-icon"></i>
                <div slot="tip" class="el-upload__tip">建议尺寸:700*800像素,图片大小不超过3M,最多上传10张</div>
              </el-upload>
              <el-dialog :visible.sync="dialogVisible">
                <img width="100%" :src="dialogImageUrl" alt />
              </el-dialog>
            </el-form-item>
          </div>

 style的相关样式。

.seller-addGoods-imgUpload {

    .el-form-item__label {

      margin-top: -60px;

    }

    .el-form-item__content {

      margin-left: 0 !important;

    }

  }

data() {

    return {

         uploadPic: config.uploadGoods, // 上传图片地址

        dialogImageUrl: '',

        dialogVisible: false, // 图片弹窗

        addGoodsForm: {

           photoVos: [], // 图片

         },

        rules: {

           photoVos: [{ required: true, trigger: ['blur', 'change'], validator: validateUploadFile }],

        },

    }

}

methods: {
    handlePictureCardPreview(file) {
      this.dialogImageUrl = file.url
      this.dialogVisible = true
    },
    handleRemove(file, fileList) {
      for (let i = 0; i < this.addGoodsForm.photoVos.length; i++) {
        if (file.url === this.addGoodsForm.photoVos[i].url) {
          this.addGoodsForm.photoVos.splice(i, 1)
        }
      }
      // this.imgNumLimit(6)
    },
    handleSuccess(response, file, fileList) {
      // console.log('handleSuccess --- ',file.name,file.size)
      if (response.code === 200) {
        this.addGoodsForm.photoVos.push({
          url: config.BaseImgUrl + response.data
        })
        // this.imgNumLimit(6)
      } else {
        this.$message({
          message: '上传失败,稍后再试',
          type: 'error'
        })
      }
    },
    handleExceed(files, fileList) {
      this.$message.warning('当前限制上传10张图片')
    },
    getFileNameType(filePath) {
      // 根据文件名称获取文件格式
      const startIndex = filePath.lastIndexOf('.')
      if (startIndex !== -1) return filePath.substring(startIndex + 1, filePath.length).toLowerCase()
      else return ''
    },
    beforeAvatarUpload(file) {
      const isLt3M = file.size / 1024 / 1024 < 3
      if (!isLt3M) {
        this.$message.error('上传图片大小不能超过3M!')
        return false
      }
      const fileArr = ['image/jpeg', 'image/png', 'image/gif', 'image/bmp']
      const isPhoto = fileArr.includes(file.type)
      const fileFormatArr = ['jpg', 'jpeg', 'png', 'bmp', 'gif']
      const isFormatPhoto = fileFormatArr.includes(this.getFileNameType(file.name))
      if (!isPhoto || !isFormatPhoto) {
        this.$message.error('图片支持以下格式:jpg、jpeg、png、bmp、gif。')
        return false
      }
    },
    // 删除base图片路径
    replaceBaseUrl(param) {
      // 提交前处理
      for (let i = 0, photoList = param.photoVos; i < photoList.length; i++) {
        photoList[i] = { url: photoList[i].url.split(config.BaseImgUrl)[1] }
      }
      for (let i = 0, photoList = param.picUrl; i < photoList.length; i++) {
        photoList[i] = photoList[i].split(config.BaseImgUrl)[1]
      }
    },
    addBaseUrl(data) {
      // 初始化处理
      for (let i = 0, photoList = data.photoVos; i < photoList.length; i++) {
        photoList[i] = { url: config.BaseImgUrl + photoList[i].url }
      }
    },
    // 提交
    submitForm(status = null) {
      // 图片值
      param.picUrl = []
      this.addGoodsForm.photoVos.map(v=> {
        param.picUrl.push(v.url)
      })
      this.$refs.addGoodsForm.validate((valid, obj) => {
        if (valid) {
          this.replaceBaseUrl(param) // 去掉图片路径,ip地址
          this.postData(param) // 调取接口的方法
        }
      })
    },
}

猜你喜欢

转载自blog.csdn.net/qq_42080594/article/details/129404183
今日推荐