<template> 
 | 
  <div v-if="show" class="image-main"> 
 | 
    <!-- @click="cancel" --> 
 | 
    <div class="preview_close" @click="cancel"> 
 | 
      <i class="el-icon-close" /> 
 | 
    </div> 
 | 
    <el-carousel 
 | 
      :height="windowHeight" 
 | 
      :autoplay="false" 
 | 
      indicator-position="none" 
 | 
      :initial-index="index" 
 | 
      @change="onSlideChange" 
 | 
    > 
 | 
      <el-carousel-item v-for="(item, i) in multiFilesList" :key="i"> 
 | 
        <img v-if="item.type === 0" :src="resourcePath + item.fileurl" alt="" /> 
 | 
        <video ref="video" v-else-if="item.type === 1" :src="resourcePath + item.fileurl" controls="controls"></video> 
 | 
      </el-carousel-item> 
 | 
    </el-carousel> 
 | 
   
 | 
  </div> 
 | 
</template> 
 | 
  
 | 
<script> 
 | 
  
 | 
export default { 
 | 
  name: 'ShowImage', 
 | 
   
 | 
  data () { 
 | 
    return { 
 | 
      show: false, 
 | 
      multiFilesList: [], 
 | 
      temp: {}, 
 | 
      resourcePath: '', 
 | 
      index: 0, 
 | 
      windowHeight: document.documentElement.clientHeight + 'px', 
 | 
    } 
 | 
  }, 
 | 
  mounted() { 
 | 
    const that = this; 
 | 
    window.addEventListener('resize', () => { 
 | 
      that.windowHeight = document.documentElement.clientHeight + 'px' 
 | 
    }) 
 | 
  }, 
 | 
  methods: { 
 | 
    open (multiFilesList, resourcePath, index) { 
 | 
      this.show = true 
 | 
      this.multiFilesList = multiFilesList 
 | 
      this.temp = multiFilesList[index] 
 | 
      this.resourcePath = resourcePath 
 | 
      this.index = index 
 | 
    }, 
 | 
    cancel () { 
 | 
      this.show = false 
 | 
    }, 
 | 
    onSlideChange () { 
 | 
      let video = this.$refs.video 
 | 
      if (!video.length) return 
 | 
      video.forEach((item) => { 
 | 
          item.pause() 
 | 
      }) 
 | 
    } 
 | 
  } 
 | 
} 
 | 
</script> 
 | 
  
 | 
<style scoped lang="scss"> 
 | 
.image-main { 
 | 
  position: fixed; 
 | 
  top: 0; 
 | 
  left: 0; 
 | 
  width: 100%; 
 | 
  height: 100%; 
 | 
  background: rgba($color: #000000, $alpha: 0.4); 
 | 
  z-index: 9999; 
 | 
  .preview_close { 
 | 
      position: fixed; 
 | 
      right: 50px; 
 | 
      top: 50px; 
 | 
      width: 70px; 
 | 
      height: 70px; 
 | 
      // border-radius: 50%; 
 | 
      // background: #B2B2B2; 
 | 
      display: flex; 
 | 
      align-items: center; 
 | 
      justify-content: center; 
 | 
      z-index: 99999; 
 | 
      .el-icon-close { 
 | 
        font-size: 50px; 
 | 
        color: #fff; 
 | 
      } 
 | 
  } 
 | 
  img { 
 | 
    max-width: 100%; 
 | 
    max-height: 100%; 
 | 
    position: absolute; 
 | 
    top: 50%; 
 | 
    left: 50%; 
 | 
    transform: translate(-50%, -50%); 
 | 
  } 
 | 
  video { 
 | 
    max-width: 100%; 
 | 
    max-height: 100%; 
 | 
    position: absolute; 
 | 
    top: 50%; 
 | 
    left: 50%; 
 | 
    transform: translate(-50%, -50%); 
 | 
  } 
 | 
  .preview_content { 
 | 
        height: 100%; 
 | 
        position: relative; 
 | 
        top: 50%; 
 | 
        left: 0; 
 | 
        transform: translate(0, -50%); 
 | 
        .swiper { 
 | 
            width: 100%; 
 | 
            height: 100%; 
 | 
            display: flex; 
 | 
            align-items: center; 
 | 
            justify-content: center; 
 | 
            .swiper-slide { 
 | 
                width: 100%; 
 | 
                height: 100%; 
 | 
                position: relative; 
 | 
                .preview_content_box { 
 | 
                    width: 100%; 
 | 
                    position: absolute; 
 | 
                    top: 50%; 
 | 
                    left: 50%; 
 | 
                    transform: translate(-50%, -50%); 
 | 
                    display: flex; 
 | 
                    align-items: center; 
 | 
                    justify-content: center; 
 | 
                     
 | 
                } 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
  // .image-item-style { 
 | 
  //   position: relative; 
 | 
  //   width: 120px; 
 | 
  //   height: 120px; 
 | 
  //   overflow: hidden; 
 | 
  //   margin-right: 10px; 
 | 
  //   margin-bottom: 10px; 
 | 
  //   .video-inner-style { 
 | 
  //     max-width: 100%; 
 | 
  //     height: 100%; 
 | 
  //     cursor: pointer; 
 | 
  //   } 
 | 
  //   .el-icon-caret-right { 
 | 
        // position: absolute; 
 | 
        // top: 50%; 
 | 
        // left: 50%; 
 | 
        // transform: translate(-50%, -50%); 
 | 
  //       // height: 10%; 
 | 
  //       // width: 10%; 
 | 
  //       font-size: 30px; 
 | 
  //       color: rgba($color: #fff, $alpha: 0.6); 
 | 
  //     } 
 | 
  //   // video:hover { 
 | 
  //   // } 
 | 
  //   .image-inner-style { 
 | 
  //     max-width: 100%; 
 | 
  //     height: 100%; 
 | 
  //     cursor: pointer; 
 | 
  //   } 
 | 
  // } 
 | 
} 
 | 
</style> 
 |