|
@@ -41,10 +41,12 @@ import CusModule from '../components/CusModule.vue';
|
|
|
import CusProgress from '../components/CusProgress.vue';
|
|
|
import BaseChart from '@/components/BaseChart/index.vue'
|
|
|
import * as echarts from 'echarts'
|
|
|
-import {dateFormat, numToStr} from '@/utils'
|
|
|
+import {array2Map, numToStr} from '@/utils'
|
|
|
import {mapState} from 'vuex';
|
|
|
-import {qryElecMeterByDate, qryWaterMeterByDate} from "@/api/device/elecMeterH";
|
|
|
+import {listByFacs, qryElecMeterByDate, qryWaterMeterByDate} from "@/api/device/elecMeterH";
|
|
|
import {DateTool} from "@/utils/DateTool";
|
|
|
+import _ from 'lodash'
|
|
|
+import {listForecastConsumeDateRange} from "@/api/prediction/forecastConsume";
|
|
|
|
|
|
export default {
|
|
|
name: 'SocRight',
|
|
@@ -68,33 +70,7 @@ export default {
|
|
|
unit: "吨",
|
|
|
},
|
|
|
],
|
|
|
- ranking: [
|
|
|
- {
|
|
|
- name: "公共设施",
|
|
|
- color: "#14c5f2",
|
|
|
- value: 500,
|
|
|
- },
|
|
|
- {
|
|
|
- name: "空调",
|
|
|
- color: "#14c5f2",
|
|
|
- value: 400,
|
|
|
- },
|
|
|
- {
|
|
|
- name: "照明",
|
|
|
- color: "#14c5f2",
|
|
|
- value: 300,
|
|
|
- },
|
|
|
- {
|
|
|
- name: "电梯",
|
|
|
- color: "#14c5f2",
|
|
|
- value: 100,
|
|
|
- },
|
|
|
- {
|
|
|
- name: "其他",
|
|
|
- color: "#14c5f2",
|
|
|
- value: 100,
|
|
|
- },
|
|
|
- ],
|
|
|
+ ranking: [],
|
|
|
lineData: []
|
|
|
|
|
|
}
|
|
@@ -122,12 +98,6 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
- legend: {
|
|
|
- data: ["用电量", "当日最高负荷"],
|
|
|
- textStyle: {
|
|
|
- color: "#ffffff"
|
|
|
- }
|
|
|
- },
|
|
|
xAxis: {
|
|
|
data: this.lineData.map(item => item.xData),
|
|
|
axisLine: {
|
|
@@ -150,16 +120,7 @@ export default {
|
|
|
color: '#334E5E'
|
|
|
}
|
|
|
},
|
|
|
- },
|
|
|
- {
|
|
|
- type: "value",
|
|
|
- name: "kW",
|
|
|
- position: "right",
|
|
|
- splitLine: {
|
|
|
- show: false
|
|
|
- },
|
|
|
- }
|
|
|
- ],
|
|
|
+ }],
|
|
|
series: [
|
|
|
{
|
|
|
name: "用电量",
|
|
@@ -184,61 +145,6 @@ export default {
|
|
|
},
|
|
|
data: this.lineData.map(item => item.yData1)
|
|
|
},
|
|
|
- {
|
|
|
- name: "当日最高负荷",
|
|
|
- type: "line",
|
|
|
- yAxisIndex: 1, //使用的 y 轴的 index,在单个图表实例中存在多个 y轴的时候有用
|
|
|
- smooth: true, //平滑曲线显示
|
|
|
- itemStyle: {
|
|
|
- color: "#F5D6AD",
|
|
|
- borderColor: "#fff",
|
|
|
- borderWidth: 3
|
|
|
- },
|
|
|
- lineStyle: {
|
|
|
- color: "#F5D6AD"
|
|
|
- },
|
|
|
- areaStyle: {
|
|
|
- color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
|
|
|
- offset: 0,
|
|
|
- color: "#A18C74"
|
|
|
- },
|
|
|
- {
|
|
|
- offset: 1,
|
|
|
- color: "transparent"
|
|
|
- }
|
|
|
- ])
|
|
|
- },
|
|
|
- markLine: {
|
|
|
- symbol: 'none',
|
|
|
- silent: true,
|
|
|
- lineStyle: {normal: {type: 'dashed'}},
|
|
|
- label: {position: 'start'},
|
|
|
- data: [
|
|
|
- {
|
|
|
- yAxis: 190,
|
|
|
- lineStyle: {width: 1.656, color: '#ff6367'},
|
|
|
- label: {show: false}
|
|
|
- },
|
|
|
- ]
|
|
|
- },
|
|
|
- markPoint: {
|
|
|
- silent: true,
|
|
|
- data: [
|
|
|
- {
|
|
|
- yAxis: 190,
|
|
|
- x: '100%',
|
|
|
- symbolSize: 0.1,
|
|
|
- label: {
|
|
|
- textStyle: {color: '#F59A23'},
|
|
|
- fontSize: 12,
|
|
|
- position: 'left',
|
|
|
- formatter: '历史最高负荷'
|
|
|
- }
|
|
|
- },
|
|
|
- ]
|
|
|
- },
|
|
|
- data: this.lineData.map(item => item.yData2)
|
|
|
- },
|
|
|
]
|
|
|
}
|
|
|
}
|
|
@@ -252,28 +158,43 @@ export default {
|
|
|
this.getSocData()
|
|
|
},
|
|
|
methods: {
|
|
|
- getDatesOfLastTenDays() {
|
|
|
- var dates = [];
|
|
|
- var today = new Date();
|
|
|
- for (var i = 1; i < 11; i++) {
|
|
|
- var pastDate = new Date(today);
|
|
|
- pastDate.setDate(today.getDate() + i); // 减去i天
|
|
|
- var formattedDate = dateFormat(pastDate, 'MM-dd');
|
|
|
- dates.push(formattedDate);
|
|
|
- }
|
|
|
- return dates.map(item => ({
|
|
|
+ async getDeviceElecMeter() {
|
|
|
+ const params = {
|
|
|
+ startRecTime: DateTool.now(DateTool.DateFormat.YYYY_MM_DD_00_00_00),
|
|
|
+ endRecTime: DateTool.now(DateTool.DateFormat.YYYY_MM_DD_23_59_59),
|
|
|
+ meterCls: 45,
|
|
|
+ areaCode: this.areaType || -1,
|
|
|
+ facsCategory: 'Z',
|
|
|
+ };
|
|
|
+ listByFacs(params).then(response => {
|
|
|
+ const energyUse = response.data.map(item => ({
|
|
|
+ name: item.objName,
|
|
|
+ color: "#14c5f2",
|
|
|
+ value: item.quantity || 0,
|
|
|
+ }));
|
|
|
+ this.ranking = _.slice(_.orderBy(energyUse, ['value'], ['desc']), 0, 5);
|
|
|
+ })
|
|
|
+ },
|
|
|
+ async getDatesOfLastTenDays() {
|
|
|
+ const next7Day = DateTool.addDays(DateTool.now(), 7);
|
|
|
+ const {data} = await listForecastConsumeDateRange({
|
|
|
+ startTime: DateTool.now(DateTool.DateFormat.YYYY_MM_DD_00_00_00),
|
|
|
+ areaCode: this.areaType,
|
|
|
+ startRecTime: DateTool.now(),
|
|
|
+ endRecTime: next7Day,
|
|
|
+ })
|
|
|
+ const dates = DateTool.getDayOfRange(DateTool.now(), next7Day);
|
|
|
+ const mapIndex = array2Map(data, "date");
|
|
|
+
|
|
|
+ this.lineData = dates.map(item => ({
|
|
|
xData: item,
|
|
|
- yData1: parseFloat(((Math.random() * 100 + 200)).toFixed(1)),
|
|
|
- yData2: parseFloat(((Math.random() * 100 + 100)).toFixed(1))
|
|
|
+ yData1: mapIndex[item] ? mapIndex[item].elecUseQuantity : 0
|
|
|
}));
|
|
|
},
|
|
|
getSocData() {
|
|
|
this.lineData = this.getDatesOfLastTenDays()
|
|
|
this.getMeterElecWater()
|
|
|
- this.ranking = this.ranking.map((item, index) => ({
|
|
|
- ...item,
|
|
|
- value: Math.floor(Math.random() * 100 + (index + 1) * 100)
|
|
|
- })).reverse();
|
|
|
+ this.getDeviceElecMeter()
|
|
|
},
|
|
|
async getMeterElecWater() {
|
|
|
const {data: elecMeter} = await qryElecMeterByDate(DateTool.now(), this.areaType)
|