| | |
| | | <el-col :span="layout.left" class="full-height"> |
| | | <layout-box no-bg> |
| | | <div class="layout-content"> |
| | | <flex-box title="电价分布及实时容量" size="mini"> |
| | | <div class="layout-price-bar"> |
| | | <ele-price-bar ref="elePriceBar" no-bottom></ele-price-bar> |
| | | <flex-box title="节约电费统计折线图" size="mini"> |
| | | <div slot="tools"> |
| | | <el-select v-model="timeNum" size="mini"> |
| | | <el-option |
| | | v-for="(item, key) in timeNums" :key="'key'+key" |
| | | :label="item.label" :value="item.value"></el-option> |
| | | </el-select> |
| | | <el-button size="mini" type="primary" @click="getPeakPrice">查询</el-button> |
| | | </div> |
| | | <div class="layout-cap-line"> |
| | | <dot-line ref="capDotLine" no-top></dot-line> |
| | | </div> |
| | | <dot-line ref="priceDotLine" :show-area="true"></dot-line> |
| | | </flex-box> |
| | | </div> |
| | | </layout-box> |
| | |
| | | <layout-box no-bg> |
| | | <div class="layout-content"> |
| | | <div class="layout-content-top"> |
| | | <flex-box title="充放电容量统计" size="mini"> |
| | | <e-le-cap-pie ref="eleCapPie"></e-le-cap-pie> |
| | | <flex-box title="电价分布图" size="mini"> |
| | | <ele-price-bar ref="elePriceBar"></ele-price-bar> |
| | | </flex-box> |
| | | </div> |
| | | <div class="layout-content-bottom"> |
| | | <flex-box title="节约电费统计" size="mini"> |
| | | <div slot="tools"> |
| | | <el-select v-model="timeNum" size="mini"> |
| | | <el-option |
| | | v-for="(item, key) in timeNums" :key="'key'+key" |
| | | :label="item.label" :value="item.value"></el-option> |
| | | </el-select> |
| | | <el-button size="mini" type="primary">查询</el-button> |
| | | </div> |
| | | <dot-line ref="priceDotLine" :show-area="true"></dot-line> |
| | | <flex-box title="节约电费统计数据" size="mini"> |
| | | <el-table |
| | | stripe |
| | | size="small" |
| | | :data="tblData" |
| | | height="100%"> |
| | | <el-table-column |
| | | prop="num" |
| | | align="center" |
| | | label="编号" |
| | | width="80"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="date" |
| | | align="center" |
| | | label="日期"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="price" |
| | | align="center" |
| | | label="节约电费(度/元)"> |
| | | </el-table-column> |
| | | </el-table> |
| | | </flex-box> |
| | | </div> |
| | | </div> |
| | |
| | | import FlexBox from "@/components/FlexBox"; |
| | | import LayoutBox from "@/pages/dataTest/components/layout-box"; |
| | | import ElePriceBar from "@/components/chart/elePriceBar"; |
| | | import eLeCapPie from "@/components/chart/eLeCapPie"; |
| | | import DotLine from "@/components/chart/line/dotLine"; |
| | | import {formatSeconds} from "@/assets/js/tools"; |
| | | import getItemByKey from "@/assets/js/tools/getItemByKey"; |
| | |
| | | }, |
| | | components: { |
| | | DotLine, |
| | | eLeCapPie, |
| | | ElePriceBar, |
| | | LayoutBox, |
| | | FlexBox |
| | |
| | | days: 365, |
| | | } |
| | | ], |
| | | tblData: [] |
| | | } |
| | | }, |
| | | watch: { |
| | |
| | | resize() { |
| | | this.$nextTick(()=>{ |
| | | this.$refs.elePriceBar.resize(); |
| | | this.$refs.eleCapPie.resize(); |
| | | this.$refs.capDotLine.resize(); |
| | | this.$refs.priceDotLine.resize(); |
| | | }); |
| | | }, |
| | |
| | | let batt = this.batt; |
| | | let timeNum = getItemByKey(this.timeNum, this.timeNums); |
| | | let num = timeNum.num; |
| | | let recordTime = new Date().format("yyyy-MM-dd"); |
| | | let recordTime1 = new Date(new Date().getTime()+timeNum.days*24*3600*1000).format("yyyy-MM-dd"); |
| | | let recordTime1 = new Date().format("yyyy-MM-dd"); |
| | | let recordTime = new Date(new Date().getTime()-timeNum.days*24*3600*1000).format("yyyy-MM-dd"); |
| | | // 构造查询条件 |
| | | let searchParams = { |
| | | BattGroupId: batt.BattGroupId, |
| | |
| | | // 查询后台 |
| | | this.$apis.dcdc.getPeakPrice(searchParams).then(res=>{ |
| | | let rs = JSON.parse(res.data.result); |
| | | console.log(rs); |
| | | let data = []; |
| | | if(rs.code == 1) { |
| | | data = rs.data; |
| | | }else { |
| | | this.$layer.msg(rs.msg); |
| | | } |
| | | let formatData = this.getFormatData(data, num); |
| | | this.tblData = formatData.xData.map((item,key)=> { |
| | | let price = formatData.yData[key]; |
| | | return { |
| | | num: key+1, |
| | | date: item, |
| | | price:price, |
| | | } |
| | | }); |
| | | this.$refs.priceDotLine.setData(formatData); |
| | | }).catch(error => { |
| | | |
| | | let formatData = this.getFormatData([], num); |
| | | this.$refs.priceDotLine.setData(formatData); |
| | | }); |
| | | }, |
| | | getFormatData(data, type) { |
| | | let xData = []; |
| | | let yData = []; |
| | | data.map(item=>{ |
| | | let times = item.perid_Time.split(" "); |
| | | let time = times[0]; |
| | | switch (type) { |
| | | case 1: |
| | | time = new Date(time).format("yyyy-MM-dd"); |
| | | break; |
| | | case 3: |
| | | time = new Date(time).format("yyyy-MM"); |
| | | break; |
| | | } |
| | | xData.push(time); |
| | | yData.push(item.price); |
| | | }); |
| | | return { |
| | | xData, |
| | | yData |
| | | } |
| | | }, |
| | | searchElePrices() { |
| | | let batt = this.batt; |
| | | let loading = this.$layer.loading(); |
| | | // 查询电价 |
| | | this.$apis.dcdc |
| | | .searchElePrices(batt.tmp_id) |
| | | .then((res) => { |
| | | // 关闭弹出框 |
| | | this.$layer.close(loading); |
| | | |
| | | let rs = JSON.parse(res.data.result); |
| | | let data = []; |
| | | if (rs.code == 1) { |
| | | data = rs.data; |
| | | } |
| | | let barData = data.map((child) => { |
| | | return { |
| | | value: [ |
| | | "2022-10-01 " + child.tmp_starttime, |
| | | "2022-10-01 " + child.tmp_stoptime, |
| | | child.ele_price, |
| | | "电费", |
| | | ], |
| | | itemStyle: { |
| | | color: "#49A1FA", |
| | | }, |
| | | }; |
| | | }); |
| | | |
| | | // 设置电价的图表 |
| | | this.$refs.elePriceBar.setData({ |
| | | title: "", |
| | | data: barData, |
| | | }); |
| | | }) |
| | | .catch((error) => { |
| | | // 关闭弹出框 |
| | | this.$layer.close(loading); |
| | | }); |
| | | }, |
| | | }, |
| | | computed: { |
| | |
| | | mounted() { |
| | | this.searchData(); |
| | | this.getPeakPrice(); |
| | | |
| | | // 设置容量 |
| | | let xData = []; |
| | | for(let i=0; i<24; i++) { |
| | | xData.push(formatSeconds(i*3600)); |
| | | } |
| | | |
| | | // 设置容量 |
| | | this.$refs.capDotLine.setData({ |
| | | xData: xData, |
| | | yData: [ |
| | | 150, 150, 150, 150, 150, 140, 130, 120, 130, 140, 150, 150, |
| | | 150, 150, 150, 150, 150, 140, 130, 120, 130, 140, 150, 150 |
| | | ] |
| | | }); |
| | | |
| | | // 设置省钱数 |
| | | let xData1 = []; |
| | | for(let i=0; i<30; i++) { |
| | | xData1.push((i+1)+"日"); |
| | | } |
| | | this.$refs.priceDotLine.setData({ |
| | | lineColor: "#3DB790", |
| | | xData: xData1, |
| | | yData: [ |
| | | 150, 130, 100, 120, 150, 140, 130, 120, 130, 140, |
| | | 150, 150, 110, 150, 120, 140, 130, 120, 130, 140, |
| | | 110, 120, 100, 90, 80, 140, 130, 120, 130, 140, |
| | | ] |
| | | }); |
| | | this.searchElePrices(); |
| | | }, |
| | | beforeDestroy() { |
| | | } |