<template>
  <div v-loading="loading" class="app-container">
    <iframe id="companyIframe" marginwidth="0" marginheight="0" frameborder="0" scrolling="no" width="100%" :style="{height:iframeHight+'px'}" :src="src" />
  </div>
</template>

<script>
  import { steerScroll } from '@/assets/js/jskplug'
  import { dskAccessToken } from '@/api/common'

  export default {
  name: 'Company',
  components: {

  },
  data() {
    return {
      loading: false, // 是否加载完成-当前页控制
      iframeTimer: '',  // 是否加载中定时器-当前页控制
      footHeight: 0,  //底部高度，若为0（页面内部嵌套或者没有底部板块）
      iframeHight: window.innerHeight, // iframe高度-当前页控制
      navigation: {isFixed: true, fixedHeight: 56, totalHeight: 68},  // iframe之外页面顶部对象，ifFixed:是否浮动；fixedHeight：浮动对象高度；totalHeight：顶部整体高度
      src: '',  //iframe嵌套页面地址
      domain: 'https://plug.jiansheku.com', // 插件地址
      // domain: 'http://192.168.60.104:3400',
      // domain: 'http://192.168.60.30:3300',
      ak: 'aec7b3ff2y2q8x6t49a7e2c463ce21912', // 需要携带的sdkId
      uid: this.$store.state.user.userId, // 需要携带的uid
      timelongs:7200,//刷新token时间
      tokentimer:null,
    }
  },
  created() {
    this.gettokens()
  },
  mounted() {
    this.iframeLoading() // 判断iframe页面是否加载完成-当前页控制
    steerScroll('companyIframe', this.navigation, this.footHeight, true) // iframeId: iframe的id；navigation:页面排除iframe后剩下的顶部高度；footHeight: 页面排除iframe后剩下的底部高度；state:监听or移除监听；parentId: 父级id[不带默认就是铺满整个页面]];_this:指向当前实例（可忽略）
  },
  beforeDestroy() {
    clearInterval(this.iframeTimer) // -当前页控制
    steerScroll('companyIframe', this.navigation, this.footHeight) // iframeId: iframe的id；navigation:页面排除iframe后剩下的顶部高度；footHeight: 页面排除iframe后剩下的底部高度；state:监听or移除监听；parentId: 父级id[不带默认就是铺满整个页面]];_this:指向当前实例（可忽略）
    clearInterval(this.tokentimer)
  },
  methods: {
    gettokens(){
      dskAccessToken().then(res=>{
        if(res.code == 200){
          this.timelongs = res.data.expire
          this.ak = res.data.accessToken
          if (this.$route.params.id) { // 获取companyId
            this.loading = true
            if(this.$route.name=='Company'){  //企业详情
              if(this.$route.query.html){
                if(this.$route.query.type){
                  this.src = `${this.domain}/enterprise/${this.$route.params.id}/${this.$route.query.html}?flag=true&type=${this.$route.query.type}&ak=${this.ak}&initTime=${new Date().getTime()}&uid=${this.ak}`
                }else{
                  this.src = `${this.domain}/enterprise/${this.$route.params.id}/${this.$route.query.html}?ak=${this.ak}&initTime=${new Date().getTime()}&uid=${this.ak}`
                }
              }else{
                this.src = `${this.domain}/enterprise/${this.$route.params.id}?ak=${this.ak}&initTime=${new Date().getTime()}&uid=${this.ak}`
              }
            }
            if(this.$route.name=='Personnel'){ //人员详情
              this.src = `${this.domain}/personnel/${this.$route.params.id}.html?ak=${this.ak}&initTime=${new Date().getTime()}&uid=${this.ak}`
            }
          }
          this.refreshtoken()
        }else{
          clearTimeout(this.tokentimer)
        }
      })
    },
    refreshtoken(){
      this.tokentimer = setTimeout(()=>{
        dskAccessToken().then(res => {
          if (res.code == 200) {
            this.timelongs = res.data.expire
            this.ak = res.data.accessToken
            let ifam = document.getElementById('companyIframe')	//iframe的id
            let akObj = res.data.expire	//accessToken接口的返回值
            let initTime = new Date().getTime() 	//accessToken接口返回后的当前时间戳
            ifam.contentWindow.postMessage({ 'accessToken': akObj.accessToken, 'initTime': initTime }, '*')
          }else{
            clearTimeout(this.tokentimer)
          }
        })
      }, this.timelongs*1000)
    },
    //判断iframe页面是否加载完成-当前页控制
    iframeLoading() {
      let iframeHeight = document.getElementById("companyIframe").clientHeight, number = 0
      this.iframeTimer = setInterval(()=>{
        number = number+1000
        if(document.getElementById("companyIframe").clientHeight != iframeHeight || number == 3000){
          this.loading = false
          clearInterval(this.iframeTimer)
        }
      },1000)
    }
  }
}
</script>

<style lang="scss" scoped>
  .app-container{
    padding: 0;
  }
</style>
