能源需求修改
This commit is contained in:
@@ -1,96 +1,129 @@
|
||||
<template>
|
||||
<div class="app-container contrastAnalysisBox" id="contrastAnalysisBox">
|
||||
<!-- 搜索工作栏 -->
|
||||
<search-area :isFold="isFold" @submit="getList"/>
|
||||
<el-tabs v-model="activeName" @tab-click="switchChart" v-show='chartData.length'>
|
||||
<el-tab-pane label="柱状图" name="bar">
|
||||
<bar-chart ref="analysisBarChart" :chartData="chartData" :timeDim="timeDim" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="折线图" name="line">
|
||||
<line-chart ref="analysisLineChart" :chartData="chartData" :timeDim="timeDim"/>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
<!-- 没有数据 -->
|
||||
<div class="no-data-bg" v-show='!chartData.length'></div>
|
||||
</div>
|
||||
<div
|
||||
class="app-container contrastAnalysisBox"
|
||||
id="contrastAnalysisBox">
|
||||
<!-- 搜索工作栏 -->
|
||||
<search-area
|
||||
:isFold="isFold"
|
||||
@submit="getList"
|
||||
@export="exportExl" />
|
||||
<div v-show="chartData.length">
|
||||
<bar-chart
|
||||
ref="analysisBarChart"
|
||||
:chartData="chartData"
|
||||
:timeDim="timeDim" />
|
||||
<base-table
|
||||
:table-props="tableProps"
|
||||
:table-data="list"
|
||||
:max-height="tableH"
|
||||
class="contrast-out-table" />
|
||||
</div>
|
||||
<!-- 没有数据 -->
|
||||
<div
|
||||
class="no-data-bg"
|
||||
v-show="!chartData.length"></div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { getCompare } from "@/api/analysis/energyAnalysis"
|
||||
import SearchArea from "./components/searchArea"
|
||||
import BarChart from "./components/barChart"
|
||||
import LineChart from "./components/lineChart"
|
||||
import { getCompare } from '@/api/analysis/energyAnalysis';
|
||||
import SearchArea from './components/searchArea';
|
||||
import BarChart from './components/barChart';
|
||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
|
||||
import FileSaver from 'file-saver';
|
||||
import * as XLSX from 'xlsx/xlsx.mjs';
|
||||
// import moment from 'moment'
|
||||
export default {
|
||||
name: 'ContrastAnalysis',
|
||||
components: { SearchArea, BarChart, LineChart },
|
||||
data() {
|
||||
return {
|
||||
isFold: false,
|
||||
activeName: 'bar',
|
||||
chartData: [],
|
||||
timeDim: ''
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
window.addEventListener('resize', () => {
|
||||
this.tableH = this.tableHeight(260)
|
||||
this.isFold = this.searchBarWidth('contrastAnalysisBox', 1437)
|
||||
// console.log(document.getElementById("contrastAnalysisBox").offsetWidth)
|
||||
})
|
||||
this.isFold = this.searchBarWidth('contrastAnalysisBox', 1437)
|
||||
},
|
||||
methods: {
|
||||
getList(params) {
|
||||
this.timeDim = params.timeDim
|
||||
getCompare({ ...params }).then((res) => {
|
||||
console.log(res)
|
||||
if (res.code === 0) {
|
||||
this.chartData = res.data || []
|
||||
} else {
|
||||
this.chartData = []
|
||||
}
|
||||
})
|
||||
},
|
||||
switchChart() {
|
||||
if (this.activeName === 'bar') {
|
||||
this.$nextTick((res) => {
|
||||
this.$refs.analysisBarChart.getChart()
|
||||
})
|
||||
} else {
|
||||
this.$nextTick((res) => {
|
||||
this.$refs.analysisLineChart.getChart()
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
name: 'ContrastAnalysis',
|
||||
components: { SearchArea, BarChart },
|
||||
mixins: [tableHeightMixin],
|
||||
data() {
|
||||
return {
|
||||
isFold: false,
|
||||
chartData: [],
|
||||
timeDim: '',
|
||||
tableProps: [],
|
||||
list: [],
|
||||
tableH: this.tableHeight(250) / 2,
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
window.addEventListener('resize', () => {
|
||||
this.isFold = this.searchBarWidth('contrastAnalysisBox', 1437);
|
||||
// console.log(document.getElementById("contrastAnalysisBox").offsetWidth)
|
||||
});
|
||||
this.isFold = this.searchBarWidth('contrastAnalysisBox', 1437);
|
||||
},
|
||||
methods: {
|
||||
_setTableHeight() {
|
||||
this.tableH = this.tableHeight(250) / 2;
|
||||
},
|
||||
getList(params) {
|
||||
this.timeDim = params.timeDim;
|
||||
getCompare({ ...params }).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.getTableList(res.data || []);
|
||||
this.chartData = res.data || [];
|
||||
} else {
|
||||
this.chartData = [];
|
||||
}
|
||||
});
|
||||
},
|
||||
getTableList(arr) {
|
||||
this.tableProps = [];
|
||||
this.list = [];
|
||||
let tempX = [];
|
||||
let timeArr = arr[0].trendRespVOList || [];
|
||||
this.list = timeArr.map((item) => {
|
||||
return { time: item.time };
|
||||
});
|
||||
for (let i = 0; i < arr.length; i++) {
|
||||
let obj = {};
|
||||
obj.prop = arr[i].objId;
|
||||
obj.label = arr[i].objName;
|
||||
obj.minWidth = 100;
|
||||
tempX.push(obj);
|
||||
let tiemList = arr[i].trendRespVOList;
|
||||
for (let j = 0; j < tiemList.length; j++) {
|
||||
this.list[j][arr[i].objId] = tiemList[j].useNum
|
||||
? tiemList[j].useNum.toFixed(2)
|
||||
: null;
|
||||
}
|
||||
}
|
||||
this.tableProps = [{ prop: 'time', label: '时间' }].concat(tempX);
|
||||
},
|
||||
// 导出
|
||||
exportExl() {
|
||||
if (this.list.length > 0) {
|
||||
var wb = XLSX.utils.table_to_book(
|
||||
document.querySelector('.contrast-out-table')
|
||||
);
|
||||
let fileName = '对比分析.xlsx';
|
||||
var wbout = XLSX.write(wb, {
|
||||
bookType: 'xlsx',
|
||||
bookSST: true,
|
||||
type: 'array',
|
||||
});
|
||||
try {
|
||||
FileSaver.saveAs(
|
||||
new Blob([wbout], { type: 'application/octet-stream' }),
|
||||
fileName
|
||||
);
|
||||
this.$message.success('导出成功');
|
||||
} catch (e) {
|
||||
if (typeof console !== 'undefined') console.log(e, wbout);
|
||||
}
|
||||
return wbout;
|
||||
} else {
|
||||
this.$modal.msgWarning('暂无数据导出');
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang='scss'>
|
||||
.contrastAnalysisBox {
|
||||
.el-tabs__nav::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
height: 2px;
|
||||
background-color: #e4e7ed;
|
||||
/* z-index: 1; */
|
||||
}
|
||||
.el-tabs__nav-wrap::after {
|
||||
width: 0;
|
||||
}
|
||||
.el-tabs__item {
|
||||
padding: 0 10px;
|
||||
}
|
||||
.el-tabs__item:hover {
|
||||
color: rgba(0, 0, 0, 0.85);
|
||||
}
|
||||
.el-tabs__item.is-active {
|
||||
color: rgba(0, 0, 0, 0.85);
|
||||
}
|
||||
.el-tabs__item {
|
||||
color: rgba(0, 0, 0, 0.45);
|
||||
}
|
||||
.contrast-out-table {
|
||||
margin-top: 20px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user