vue自定义上传图片方法

2021-03-02  本文已影响0人  zZ_d205
   <ul class="driverStyle">

                <li @click="chooseImage('jsz')">
                  <div class="imgBox">
                    <img v-if="imageysz" :src="imageysz" class="avatar" id="avatar">
                    <i v-else class="el-icon-plus avatar-uploader-icon"></i>
                  </div>
                  <p><span style="margin-right:4px;color: #F56C6C">*</span>道路运输证</p>
                  <input @change="imgChange($event,'filesysz','imageysz')" type="file" id="jsz" style="display:none">
                </li>

                <li @click="chooseImage('cl')">
                  <div class="imgBox">
                    <img v-if="imagexkz" :src="imagexkz" class="avatar" id="avatar">
                    <i v-else class="el-icon-plus avatar-uploader-icon"></i>
                  </div>
                  <p><span style="margin-right:4px;color: #F56C6C">*</span>道路运输经营许可证</p>
                  <input @change="imgChange($event,'filexkz','imagexkz')" type="file" id="cl" style="display:none">
                </li>

                <li @click="chooseImage('yy')">
                  <div class="imgBox">
                    <img v-if="imagebxk" :src="imagebxk" class="avatar" id="avatar">
                    <i v-else class="el-icon-plus avatar-uploader-icon"></i>
                  </div>
                  <p><span style="margin-right:4px;color: #F56C6C">*</span>保险卡照片</p>
                  <input @change="imgChange($event,'filebxk','imagebxk')" type="file" id="yy" style="display:none">
                </li>

                <li @click="chooseImage('insureyy')">
                  <div class="imgBox">
                    <img v-if="imagexsz" :src="imagexsz" class="avatar" id="avatar">
                    <i v-else class="el-icon-plus avatar-uploader-icon"></i>
                  </div>
                  <p><span style="margin-right:4px;color: #F56C6C">*</span>行驶证</p>
                  <input @change="imgChange($event,'filesxsz','imagexsz')" type="file" id="insureyy"
                         style="display:none">
                </li>


                <li @click="chooseImage('ysz')">
                  <div class="imgBox">
                    <img v-if="imagehy" :src="imagehy" class="avatar" id="avatar">
                    <i v-else class="el-icon-plus avatar-uploader-icon"></i>
                  </div>
                  <p><span style="margin-right:4px;color: #F56C6C">*</span>人车合影</p>

                  <input @change="imgChange($event,'fileshy','imagehy')" type="file" id="ysz" style="display:none">
                </li>

              </ul>

js

data:() {
      return {
        imageysz: '',
        imagexkz: '',
        imagebxk: '',
        imagexsz: '',
        imagehy: '',
        ruleForm: { //增加
          cert_photo: '',
          cert_road_permit:'',
          insurance_card: '',
          photo: '',
          id_card_photo: '',

        },
      }
}
 // 点击上传图片
      chooseImage(idName) {
        var idname = idName
        document.getElementById(idname).click();
      },
      // 上传图片事件
      imgChange(el, fileName, imageName) {
        var vm = this;
        var file = el.target.files[0];
        var fileUrl = ''
        var form = new FormData()
        form.append("filename", file)
        var type = file.type.split('/')[0];
        vm.$source.post('/Uploadfile/uploadpic', form).then(res => {
          console.log('2', file)
          var responseDate = res.data.result
          if (res.data.code == 200) {
            fileUrl = responseDate.file_url
            if (type === 'image') {
              var reader = new FileReader();  // 创建FileReader对象
              reader.readAsDataURL(file); // 读取file对象,读取完毕后会返回result 图片base64格式的结果
              reader.onload = function (e) {
                if (e) {
                  switch (fileName) {
                    case 'filesysz':
                      vm.ruleForm.cert_photo = fileUrl
                      vm.imageysz = e.target.result
                      break;
                    case 'filexkz':
                      vm.ruleForm.cert_road_permit= fileUrl
                      vm.imagexkz = e.target.result
                      break;
                    case 'filebxk':
                      vm.ruleForm.insurance_card = fileUrl
                      vm.imagebxk = e.target.result
                      break;
                    case 'filesxsz':
                      vm.ruleForm.photo = fileUrl
                      vm.imagexsz = e.target.result
                      break;
                    default:
                      vm.ruleForm.id_card_photo = fileUrl
                      vm.imagehy = e.target.result
                      break;
                  }
                }
                // imageUrl = e.target.result;
              }
              vm.$notify({
                title: '成功',
                message: '图片上传成功',
                type: 'success'
              });
            } else {
              vm.$notify.error({
                title: '错误',
                message: '上传了非图片'
              });
              return false
            }


          }
        })

      },

css


  .driverStyle {
    display: flex;
    flex-wrap: wrap;
  }

  .driverStyle > li {
    margin-right: 40px;
  }

  .driverStyle > li > p {
    text-align: center;
  }

上一篇下一篇

猜你喜欢

热点阅读