2025-09-04 13:42:48 +08:00
|
|
|
<template>
|
|
|
|
|
<div class="predict">
|
|
|
|
|
<div class="top">
|
2025-09-09 09:39:15 +08:00
|
|
|
<predictEcharts :chart-options="chartOptions[0]" :chart-data="chartData" ref="chartRef1"/>
|
2025-09-04 13:42:48 +08:00
|
|
|
</div>
|
|
|
|
|
<div class="bottom">
|
|
|
|
|
<div class="item">
|
2025-09-09 09:39:15 +08:00
|
|
|
<predictEcharts :chart-options="chartOptions[1]" :chart-data="chartData" ref="chartRef2"/>
|
2025-09-04 13:42:48 +08:00
|
|
|
</div>
|
|
|
|
|
<div class="item">
|
2025-09-09 09:39:15 +08:00
|
|
|
<predictEcharts :chart-options="chartOptions[2]" :chart-data="chartData" ref="chartRef3"/>
|
2025-09-04 13:42:48 +08:00
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
import predictEcharts from '@/components/predict/predictEcharts.vue';
|
2025-09-05 09:28:00 +08:00
|
|
|
import {getReq,postReq} from '@/request/api.js';
|
2025-09-04 13:42:48 +08:00
|
|
|
export default {
|
|
|
|
|
name: '',
|
|
|
|
|
components: {predictEcharts},
|
|
|
|
|
props: {},
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
2025-09-09 09:39:15 +08:00
|
|
|
chartOptions:[
|
|
|
|
|
{
|
|
|
|
|
title: '储能充放电预测',
|
|
|
|
|
type: 'line',
|
|
|
|
|
smooth:false,
|
|
|
|
|
dataKey: 'chargeDischarge',
|
|
|
|
|
infoKeys: [
|
2025-09-04 13:42:48 +08:00
|
|
|
|
2025-09-09 09:39:15 +08:00
|
|
|
{
|
|
|
|
|
key: 'W_store_in',
|
|
|
|
|
label: '充电电量',
|
|
|
|
|
seriesOptions:{
|
|
|
|
|
symbol: 'circle',
|
|
|
|
|
symbolSize: 8,
|
|
|
|
|
itemStyle: {
|
|
|
|
|
color: '#00FDF9' // 充电电量线条颜色
|
|
|
|
|
},
|
|
|
|
|
lineStyle: {
|
|
|
|
|
color: '#00FDF9' // 充电电量线条颜色
|
|
|
|
|
}
|
2025-09-04 13:42:48 +08:00
|
|
|
}
|
|
|
|
|
|
2025-09-09 09:39:15 +08:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
key: 'W_store_ou',
|
2025-09-12 16:34:29 +08:00
|
|
|
label: '放电电量',
|
2025-09-09 09:39:15 +08:00
|
|
|
seriesOptions:{
|
|
|
|
|
symbol: 'circle',
|
|
|
|
|
symbolSize: 8,
|
|
|
|
|
itemStyle: {
|
|
|
|
|
color: '#3E7EEF' // 充电电量线条颜色
|
|
|
|
|
},
|
|
|
|
|
lineStyle: {
|
|
|
|
|
color: '#3E7EEF' // 充电电量线条颜色
|
|
|
|
|
}
|
2025-09-04 13:42:48 +08:00
|
|
|
}
|
|
|
|
|
}
|
2025-09-09 09:39:15 +08:00
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
2025-09-04 13:42:48 +08:00
|
|
|
|
2025-09-09 09:39:15 +08:00
|
|
|
title: '充电负荷预测',
|
|
|
|
|
type: 'line',
|
|
|
|
|
smooth:false,
|
|
|
|
|
dataKey: 'chargeDischarge',
|
|
|
|
|
infoKeys: [
|
2025-09-04 13:42:48 +08:00
|
|
|
|
2025-09-09 09:39:15 +08:00
|
|
|
{
|
|
|
|
|
key: 'W_charge',
|
2025-09-12 16:34:29 +08:00
|
|
|
label: '充电电量',
|
2025-09-09 09:39:15 +08:00
|
|
|
seriesOptions:{
|
|
|
|
|
symbol: 'circle',
|
|
|
|
|
symbolSize: 8,
|
|
|
|
|
itemStyle: {
|
|
|
|
|
color: '#00FDF9' // 充电电量线条颜色
|
|
|
|
|
},
|
|
|
|
|
lineStyle: {
|
|
|
|
|
color: '#00FDF9' // 充电电量线条颜色
|
|
|
|
|
}
|
2025-09-04 13:42:48 +08:00
|
|
|
}
|
|
|
|
|
|
2025-09-09 09:39:15 +08:00
|
|
|
},
|
|
|
|
|
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
2025-09-04 13:42:48 +08:00
|
|
|
|
2025-09-09 09:39:15 +08:00
|
|
|
title: '光伏发电预测',
|
|
|
|
|
type: 'line',
|
|
|
|
|
smooth:false,
|
|
|
|
|
dataKey: 'chargeDischarge',
|
2025-10-10 11:01:13 +08:00
|
|
|
yAxisOption:[
|
|
|
|
|
{
|
|
|
|
|
name: '发电功率(W)',
|
|
|
|
|
type: 'value',
|
|
|
|
|
nameTextStyle: {
|
|
|
|
|
color: '#fff'
|
|
|
|
|
},
|
|
|
|
|
splitLine: {
|
|
|
|
|
lineStyle: { type: 'dashed', color: '#435463' }
|
|
|
|
|
},
|
|
|
|
|
axisLabel: {
|
|
|
|
|
interval: 4,
|
|
|
|
|
color: '#fff',
|
|
|
|
|
fontSize:12
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: '发电量(kw·h)',
|
|
|
|
|
type: 'value',
|
|
|
|
|
splitLine: {
|
|
|
|
|
lineStyle: { type: 'dashed', color: '#435463' }
|
|
|
|
|
},
|
|
|
|
|
nameTextStyle: {
|
|
|
|
|
color: '#fff'
|
|
|
|
|
},
|
|
|
|
|
axisLabel: {
|
|
|
|
|
interval: 4,
|
|
|
|
|
color: '#fff',
|
|
|
|
|
fontSize:12
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
],
|
2025-09-09 09:39:15 +08:00
|
|
|
infoKeys: [
|
2025-09-04 13:42:48 +08:00
|
|
|
|
2025-09-09 09:39:15 +08:00
|
|
|
{
|
|
|
|
|
key: 'P_solar',
|
|
|
|
|
label: '发电功率',
|
|
|
|
|
seriesOptions:{
|
|
|
|
|
symbol: 'circle',
|
|
|
|
|
symbolSize: 8,
|
|
|
|
|
itemStyle: {
|
|
|
|
|
color: '#3F80F2' // 充电电量线条颜色
|
|
|
|
|
},
|
|
|
|
|
lineStyle: {
|
|
|
|
|
color: '#3F80F2' // 充电电量线条颜色
|
|
|
|
|
}
|
2025-09-04 13:42:48 +08:00
|
|
|
}
|
|
|
|
|
|
2025-09-09 09:39:15 +08:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
key: 'W_solar',
|
|
|
|
|
label: '发电量',
|
2025-09-04 13:42:48 +08:00
|
|
|
|
2025-09-09 09:39:15 +08:00
|
|
|
seriesOptions:{
|
|
|
|
|
symbol: 'circle',
|
|
|
|
|
symbolSize: 8,
|
|
|
|
|
itemStyle: {
|
|
|
|
|
color: '#7747E8' // 充电电量线条颜色
|
|
|
|
|
},
|
|
|
|
|
lineStyle: {
|
|
|
|
|
color: '#7747E8' // 充电电量线条颜色
|
|
|
|
|
}
|
2025-09-04 13:42:48 +08:00
|
|
|
}
|
|
|
|
|
}
|
2025-09-09 09:39:15 +08:00
|
|
|
]
|
2025-09-04 13:42:48 +08:00
|
|
|
},
|
|
|
|
|
],
|
2025-09-09 09:39:15 +08:00
|
|
|
|
|
|
|
|
chartData: {
|
|
|
|
|
xdata:[],
|
|
|
|
|
ydata:{}
|
|
|
|
|
}
|
2025-09-04 13:42:48 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
},
|
2025-09-05 09:28:00 +08:00
|
|
|
mounted() {
|
2025-09-09 09:39:15 +08:00
|
|
|
this.$nextTick(() => {
|
|
|
|
|
this.getData()
|
|
|
|
|
})
|
|
|
|
|
|
2025-09-05 09:28:00 +08:00
|
|
|
},
|
|
|
|
|
methods: {
|
2025-09-09 09:39:15 +08:00
|
|
|
generateTimePoints() {
|
|
|
|
|
const timePoints = []
|
|
|
|
|
|
|
|
|
|
for (let hour = 0; hour <= 24; hour++) {
|
|
|
|
|
for (let minute = 0; minute < 60; minute += 10) {
|
|
|
|
|
// 处理24:00的特殊情况
|
|
|
|
|
if (hour === 24 && minute === 0) {
|
|
|
|
|
timePoints.push('24:00')
|
|
|
|
|
break
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 格式化小时和分钟,确保两位数
|
|
|
|
|
const formattedHour = hour.toString().padStart(2, '0')
|
|
|
|
|
const formattedMinute = minute.toString().padStart(2, '0')
|
|
|
|
|
|
|
|
|
|
timePoints.push(`${formattedHour}:${formattedMinute}`)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return timePoints
|
|
|
|
|
},
|
2025-09-05 09:28:00 +08:00
|
|
|
async getData(){
|
|
|
|
|
try {
|
2025-09-09 09:39:15 +08:00
|
|
|
const res=await getReq('/queryPredictionDetail')
|
|
|
|
|
this.chartData.ydata=res.data
|
|
|
|
|
this.chartData.xdata = this.generateTimePoints()
|
2025-09-05 09:28:00 +08:00
|
|
|
|
2025-09-09 09:39:15 +08:00
|
|
|
this.$refs.chartRef1.initCharts()
|
|
|
|
|
this.$refs.chartRef2.initCharts()
|
|
|
|
|
this.$refs.chartRef3.initCharts()
|
|
|
|
|
|
2025-09-05 09:28:00 +08:00
|
|
|
} catch (error) {
|
|
|
|
|
console.log(error);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-09-04 13:42:48 +08:00
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
|
.predict {
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: 100%;
|
|
|
|
|
background: $bg1-color;
|
|
|
|
|
border-radius: 15px;
|
|
|
|
|
padding: 20px;
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
gap: 20px;
|
|
|
|
|
|
|
|
|
|
.top,
|
|
|
|
|
.bottom {
|
|
|
|
|
flex: 1;
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: calc(50% - 10px);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
.bottom {
|
|
|
|
|
display: flex;
|
|
|
|
|
}
|
|
|
|
|
.top{
|
|
|
|
|
background-color: rgba(33, 105, 195, 0.12);
|
|
|
|
|
padding: 20px 5px;
|
|
|
|
|
border-radius: 15px;
|
|
|
|
|
}
|
|
|
|
|
.item{
|
|
|
|
|
background-color: rgba(33, 105, 195, 0.12);
|
|
|
|
|
padding: 20px 5px;
|
|
|
|
|
flex: 1;
|
|
|
|
|
border-radius: 15px;
|
|
|
|
|
|
|
|
|
|
&:nth-child(2){
|
|
|
|
|
margin-left: 20px;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</style>
|