| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 | <template>  <div class="upload-container">    <el-upload      :data="dataObj"      :multiple="false"      :show-file-list="false"      :on-success="handleImageSuccess"      class="image-uploader"      drag      action="https://httpbin.org/post"    >      <i class="el-icon-upload" />      <div class="el-upload__text">        将文件拖到此处,或<em>点击上传</em>      </div>    </el-upload>    <div class="image-preview image-app-preview">      <div v-show="imageUrl.length>1" class="image-preview-wrapper">        <img :src="imageUrl">        <div class="image-preview-action">          <i class="el-icon-delete" @click="rmImage" />        </div>      </div>    </div>    <div class="image-preview">      <div v-show="imageUrl.length>1" class="image-preview-wrapper">        <img :src="imageUrl">        <div class="image-preview-action">          <i class="el-icon-delete" @click="rmImage" />        </div>      </div>    </div>  </div></template><script>import { getToken } from '@/api/qiniu'export default {  name: 'SingleImageUpload3',  props: {    value: {      type: String,      default: ''    }  },  data() {    return {      tempUrl: '',      dataObj: { token: '', key: '' }    }  },  computed: {    imageUrl() {      return this.value    }  },  methods: {    rmImage() {      this.emitInput('')    },    emitInput(val) {      this.$emit('input', val)    },    handleImageSuccess(file) {      this.emitInput(file.files.file)    },    beforeUpload() {      const _self = this      return new Promise((resolve, reject) => {        getToken().then(response => {          const key = response.data.qiniu_key          const token = response.data.qiniu_token          _self._data.dataObj.token = token          _self._data.dataObj.key = key          this.tempUrl = response.data.qiniu_url          resolve(true)        }).catch(err => {          console.log(err)          reject(false)        })      })    }  }}</script><style lang="scss" scoped>@import "~@/styles/mixin.scss";.upload-container {  width: 100%;  position: relative;  @include clearfix;  .image-uploader {    width: 35%;    float: left;  }  .image-preview {    width: 200px;    height: 200px;    position: relative;    border: 1px dashed #d9d9d9;    float: left;    margin-left: 50px;    .image-preview-wrapper {      position: relative;      width: 100%;      height: 100%;      img {        width: 100%;        height: 100%;      }    }    .image-preview-action {      position: absolute;      width: 100%;      height: 100%;      left: 0;      top: 0;      cursor: default;      text-align: center;      color: #fff;      opacity: 0;      font-size: 20px;      background-color: rgba(0, 0, 0, .5);      transition: opacity .3s;      cursor: pointer;      text-align: center;      line-height: 200px;      .el-icon-delete {        font-size: 36px;      }    }    &:hover {      .image-preview-action {        opacity: 1;      }    }  }  .image-app-preview {    width: 320px;    height: 180px;    position: relative;    border: 1px dashed #d9d9d9;    float: left;    margin-left: 50px;    .app-fake-conver {      height: 44px;      position: absolute;      width: 100%; // background: rgba(0, 0, 0, .1);      text-align: center;      line-height: 64px;      color: #fff;    }  }}</style>
 |