timeheat.vue 3.17 KB
<template>
  <div class="timeheat-analysis">
    <el-header height="70px">
      <span class="asis-title">{{ asisName }}&nbsp;{{$t('asis.TimeHeat')}}</span>
      <span class="more-option-wrapper" @click="showCollapse">
        <span class="more-option-text">{{$t('asis.moreOp')}}</span>
        <i :class="moreOptVisible ? 'el-icon-arrow-down more-option-arrow' : 'el-icon-arrow-down more-option-arrow more-option-up'"></i>
      </span>
    </el-header>
    <timeheat-option v-show="moreOptVisible" ref="init" @reportTime="reportHandler" @initData="initTab"  @childByValue="childByValue"></timeheat-option>
    <div class="element-main timeheat-main">
      <router-view :propparam="propParams"></router-view>
    </div>
  </div>
</template>

<script>
import timeheatOption from '../common/option/timeMoreOption'
export default {
  data() {
    return {
      moreOptVisible: false,
      asisName: '',
      propParams: {}
    }
  },
  components: {
    'timeheat-option': timeheatOption,
  },
  created() {
    window.addEventListener('resize', () => {
      try {
        let timeHeatEChartsUtil = {
          chart1: $('#weekHeatmap')[0],
        }
        for (let k in timeHeatEChartsUtil) {
          if (timeHeatEChartsUtil.hasOwnProperty(k) && timeHeatEChartsUtil[k] != undefined) {
            timeHeatEChartsUtil[k] = this.$echarts.init(timeHeatEChartsUtil[k]);
            var element = timeHeatEChartsUtil[k];
            element.resize();
          }
        }
      } catch (err) { }
    })
  },
  mounted() {
    // this.router.push('/analysis/timeheat/weekly')
    this.getMallOpt();
    this.showCollapse()
  },
  methods: {
    childByValue(childValue) {
      this.animate('.timeheat-main')
    },
    showCollapse() {
      // 获取上面元素的高度
      let headerH = '', titleH = '', collapseH = '', mt = '';
      headerH = this.getStyleFn('.el-header', 'height');
      titleH = this.getStyleFn('.analysis-wrapper .el-header', 'height');
      if (this.moreOptVisible) {
        this.moreOptVisible = false;
        mt = headerH + titleH + 8 + 'px';
        $('.timeheat-main').animate({ marginTop: mt });
      } else {
        this.moreOptVisible = true;
        setTimeout(() => {
          collapseH = this.getStyleFn('.analysis-option-wrapper', 'height');
          mt = headerH + titleH + collapseH + 8 + 'px';
          $('.timeheat-main').animate({ marginTop: mt });
        }, 100);
      }
    },
    getMallOpt() {
      this.getCommonMalls().then(resolveData => {
            let {mallData,localMallId,titleName,multiMallId} = resolveData;
            this.asisName = titleName;
            this.mallData = mallData;
            this.$refs.init.initAsis(localMallId,mallData);
        },(rejectData) => {
        })
    },
    initTab(data) {
      let result = this.routerJump('analysis', 'timeheat', data);
      this.$router.push(result.router);
      this.propParams = result.params;
    },
    reportHandler(emitData) {
      this.asisName = emitData.asis_tit;
      let result = this.routerJump('analysis', 'timeheat', emitData);
      this.$router.push(result.router);
      this.propParams = result.params;
    }
  },
}
</script>

<style scoped>
.timeheat-analysis {
  width: 100%;
}
</style>