customly.vue 3.91 KB
<template>
  <div class="customly">
    <div class="asis-table-wrapper heatmap-wrapper single-report-wrapper">
      <div class="heatmap-content download-parent">
        <!-- 时间热力图 -->
         <mix-charts chartId="customHeatmap" class="custom-heatmap-chart" :chartData="customHeatmap_ops" chartType="Heatmap" />   
        <span class="download-text" @click="exportDataHandle(
          $t('asisTab.' + asisLevel) + '-' +
          $t('asis.TimeHeat') + '-' + Time(),
          'TimeThermodynamic'
        )">{{$t('allPages.load')}}</span>
      </div>
    </div>
    <export-data-dialog ref="exportDialog"></export-data-dialog>
  </div>
</template>

<script>
import exportData from '../../public/exportData'
import publicChart from '../common/publicChart'
export default {
  props: {
    propparam: Object
  },
  data() {
    return {
      customHeatmap_ops: {},
      chartKeyToId: {},
      chartIds: '',
      emitData: [],
      startTime: '',
      endTime: '',
      asisLevel: 'mall'
    }
  },
  components: {
    'heatmap-chart': publicChart,
    'export-data-dialog': exportData,
  },
  watch: {
    propparam: {
      handler: 'refreshHandle',
      immediate: true
    }
  },
  mounted() {
  },
  methods: {
    refreshHandle(param) {
      if (param.dateType !== '/timeheat/customly') return;
      this.emitData = param.data;
      if (this.chartIds && JSON.stringify(this.chartKeyToId) !== '{}') {
        this.getChartData(this.chartIds);
      } else {
        this.getChartId();
      }
    },
    getChartId() {
      this.chartKeyToId = {};
      this.chartIds = '';
      this.$api.baseReport.reportChart({
        report: 'TimeThermodynamic',
        // _t: Date.parse(new Date()) / 1000
      })
        .then(res => {
          let chartItem = res.data.data;
          chartItem.forEach((item, index) => {
            this.chartKeyToId[item.key] = item.id;
            if (item.key === 'TimeThermodynamic') {
              if (index == chartItem.length - 1) {
                this.chartIds += item.id;
              } else {
                this.chartIds += item.id + ','
              }
            }
          });
          this.getChartData(this.chartIds);
        })
    },
    getChartData(chartIds) {
      if (!this.chartIds) return;
      this.customHeatmap_ops = {};
      let apiUrl = '', param = {};
      if (this.emitData.asis_time == '' || this.emitData.asis_time == undefined) {
        this.startTime = this.dayReduce(new Date(), 30)
        this.endTime = dateUnit.dateFormat(new Date(), 'yyyy-MM-dd');
      } else {
        this.startTime = this.emitData.asis_time[0];
        this.endTime = this.emitData.asis_time[1];
      }
      param = {
        orgIds: this.emitData.asis_org,
        chartIds: chartIds,
        startDate: this.startTime,
        endDate: this.endTime,
      };
      let {params,asisLevel} = this.dealFormat(param,this.emitData);
      this.asisLevel = asisLevel
      this.$api.analysisReport.thermodynamicAnalysis(asisLevel, params)
        .then(res => {
          this.customHeatmap_ops = res.data.data.body.TimeThermodynamic;
        })
        .catch(err => {
          this.catchErrorHandle(err)
        })
    },
    exportDataHandle(title, chartKey) {
      let chartId = this.chartIds;
      let exportNeed = {
        domId: 'customHeatmap',
        title: title,
        data: {
          url: `/report/thermodynamic/${this.emitData.asis_level}/${chartId}/excel`,
          params: `orgIds=${this.emitData.asis_org}&chartIds=${chartId}&startDate=${this.startTime}&endDate=${this.endTime}`
        }
      }
      this.$refs.exportDialog.dialogInit(exportNeed);
    },
  }
}
</script>

<style scoped>

/* #weekHeatmap, */

.custom-heatmap-chart {
  height: 722px;
}

.download-text {
  right: 0;
  top: 5px;
}

@media only screen and (max-width: 1366px) {
  .custom-heatmap-chart {
    height: 500px;
  }
}

@media only screen and (max-width: 1280px) {
  .custom-heatmap-chart {
    height: 500px;
  }
}
</style>