Blame view

src/components/oa/viewImage.vue 2.61 KB
a99eb7a5   wuxw   开发完成办公下功能
1
  <template>
d4a6b78f   wuxw   OA 中考勤功能开发完成
2
3
4
    <div class="view-image-wrapper" v-show="visible">
      <div class="image-container">
        <img
a99eb7a5   wuxw   开发完成办公下功能
5
          :src="imageUrl"
d4a6b78f   wuxw   OA 中考勤功能开发完成
6
7
8
9
10
          :style="{
            width: imgWidth + 'px',
            height: imgHeight + 'px'
          }"
          @error="handleImageError"
a99eb7a5   wuxw   开发完成办公下功能
11
        />
d4a6b78f   wuxw   OA 中考勤功能开发完成
12
        <i class="el-icon-close close-icon" @click="close"></i>
a99eb7a5   wuxw   开发完成办公下功能
13
      </div>
d4a6b78f   wuxw   OA 中考勤功能开发完成
14
    </div>
a99eb7a5   wuxw   开发完成办公下功能
15
16
17
18
19
20
21
22
23
  </template>
  
  <script>
  export default {
    name: 'ViewImage',
    data() {
      return {
        visible: false,
        imageUrl: '',
d4a6b78f   wuxw   OA 中考勤功能开发完成
24
25
        imgWidth: 800,
        imgHeight: 800
a99eb7a5   wuxw   开发完成办公下功能
26
27
28
29
30
31
      }
    },
    methods: {
      open(url) {
        this.imageUrl = url
        this.visible = true
d4a6b78f   wuxw   OA 中考勤功能开发完成
32
33
34
35
36
37
        this.calculateImageSize(url)
        this.enterFullscreen()
      },
      close() {
        this.visible = false
        this.exitFullscreen()
a99eb7a5   wuxw   开发完成办公下功能
38
      },
d4a6b78f   wuxw   OA 中考勤功能开发完成
39
40
      handleImageError() {
        this.imageUrl = '/img/noPhoto.jpg'
a99eb7a5   wuxw   开发完成办公下功能
41
      },
d4a6b78f   wuxw   OA 中考勤功能开发完成
42
      calculateImageSize(url) {
a99eb7a5   wuxw   开发完成办公下功能
43
44
45
        const img = new Image()
        img.src = url
        img.onload = () => {
d4a6b78f   wuxw   OA 中考勤功能开发完成
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
          const imgScale = img.width / img.height
          this.imgWidth = 800
          this.imgHeight = 800 / imgScale
        }
      },
      enterFullscreen() {
        const element = document.querySelector('.view-image-wrapper')
        if (element.requestFullscreen) {
          element.requestFullscreen()
        } else if (element.mozRequestFullScreen) {
          element.mozRequestFullScreen()
        } else if (element.webkitRequestFullscreen) {
          element.webkitRequestFullscreen()
        } else if (element.msRequestFullscreen) {
          element.msRequestFullscreen()
        }
      },
      exitFullscreen() {
        if (document.exitFullscreen) {
          document.exitFullscreen()
        } else if (document.mozCancelFullScreen) {
          document.mozCancelFullScreen()
        } else if (document.webkitExitFullscreen) {
          document.webkitExitFullscreen()
        }
      }
    },
    mounted() {
      document.addEventListener('fullscreenchange', () => {
        if (!document.fullscreenElement) {
          this.close()
        }
      })
    }
  }
  </script>
  
  <style lang="scss" scoped>
  .view-image-wrapper {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.8);
    z-index: 9999;
    display: flex;
    justify-content: center;
    align-items: center;
  
    .image-container {
      position: relative;
      background-color: #fff;
      padding: 20px;
      border-radius: 4px;
  
      img {
        max-width: 90vw;
        max-height: 90vh;
        object-fit: contain;
      }
  
      .close-icon {
        position: absolute;
        top: 10px;
        right: 10px;
        font-size: 24px;
        color: #f56c6c;
        cursor: pointer;
        z-index: 1;
  
        &:hover {
          color: #f78989;
a99eb7a5   wuxw   开发完成办公下功能
119
120
121
122
        }
      }
    }
  }
d4a6b78f   wuxw   OA 中考勤功能开发完成
123
  </style>