Blame view

antis-ncc-admin/src/views/onlineDev/dataReport/Form.vue 1.54 KB
03207d5d   wwk   1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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
  <template>
    <el-dialog
      :visible.sync="visible"
      fullscreen
      lock-scroll
      :show-close="false"
      :modal="false"
      class="NCC-full-dialog ncc-datav"
    >
      <iframe
        :src="src"
        ref="iframe"
        width="100%"
        height="100%"
        frameborder="0"
        class="frame"
      />
    </el-dialog>
  </template>
  
  <script>
    import { getToken } from '@/utils/auth'
    export default {
      data() {
        return {
          id: '',
          visible: false,
          btnLoading: false,
          src: ''
        }
      },
      mounted() {
        window.addEventListener('message', this.handleMessage)
      },
      methods: {
        init(id) {
          this.id = id || ''
          this.visible = true
          this.$nextTick(() => {
            const token = getToken()
            if(id){
              this.src = `${this.define.report}/index.html?id=${id}&token=${token}`
            } else {
              this.src = `${this.define.report}/index.html?token=${token}`
            }
          })
        },
        async handleMessage(e) {
          const data = e.data
          if(data === 'closeDialog') {
            this.visible = false
            this.src = ''
            this.$emit('refreshDataList')
          }
        }
      }
    }
  </script>
  <style lang="scss" scoped>
  .ncc-datav {
    >>> .el-dialog__header {
      display: none;
    }
    >>> .el-dialog__body {
      padding: 0;
      position: relative;
      height: calc(100vh);
      flex: 1;
      overflow: hidden;
      .frame {
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        width: 100%;
      }
    }
  }
  </style>