光伏功能逻辑

This commit is contained in:
huangjp
2025-12-12 19:15:01 +08:00
parent 2ff46c5cbc
commit 6f22a10e64
31 changed files with 653 additions and 808 deletions

View File

@ -300,3 +300,12 @@ export function SetDataConfig(data) {
data
})
}
// 获取电站光伏能量/收益趋势
export function getPvData(data) {
return request({
url: 'business/openStation/getPvData',
method: 'post',
data
})
}

View File

@ -8,6 +8,13 @@ export function GetTotal(data) {
data
})
}
export function getPvMonthData(data) {
return request({
url: '/business/earningsCalculate/getPvMonthData',
method: 'post',
data
})
}
/** 查询一键重算 */

View File

@ -0,0 +1,67 @@
import request from '@/utils/request'
// 中自根据电站Id查询所属组织机构返回
export function GetDeptIdByStationId(data) {
return request({
url: '/business/IargeScreenShow/getByStationId',
method: 'post',
data
})
}
// 总览
export function GetPvOverviewData(data) {
return request({
url: '/business/IargeScreenShow/getZhongZiPvOverviewData',
method: 'post',
data
})
}
// 获取电站区域分布
export function GetPvRegionalDistribution(data) {
return request({
url: '/business/IargeScreenShow/getZhongZiPvDistribution',
method: 'post',
data
})
}
// 节能减排
export function GetPvEnergySaving(data) {
return request({
url: '/business/IargeScreenShow/getZhongZiPvEnergySaving',
method: 'post',
data
})
}
// 日发电量
export function GetPvRelease(data) {
return request({
url: '/business/IargeScreenShow/getZhongZiPvRelease',
method: 'post',
data
})
}
// 收益曲线
export function GetPvIncomeCurve(data) {
return request({
url: '/business/IargeScreenShow/getZhongZiPvIncomeCurve',
method: 'post',
data
})
}
// 电站收益率排名
export function GetPvRegionalIncomeDate(data) {
return request({
url: '/business/IargeScreenShow/getZhongZiPvIncomeList',
method: 'post',
data
})
}
// 电站发电量排名
export function GetPvElecList(data) {
return request({
url: '/business/IargeScreenShow/getZhongZiPvElecList',
method: 'post',
data
})
}

View File

@ -0,0 +1,10 @@
import request from '@/utils/request'
// mttp发电功率
export function GetMtttpCurve(data) {
return request({
url: '/business/pcs/pvCurve',
method: 'post',
data
})
}

View File

@ -224,6 +224,8 @@ export default {
year: 'year',
powerGenerationCapacity: 'power generation capacity',
powerGeneration: 'power generation',
revenueTrend: 'Revenue Trend'
earning: 'earning',
revenueTrend: 'Revenue Trend',
pvIncomeUnit: 'EUR'
}
}

View File

@ -222,6 +222,8 @@ export default {
year: '年',
powerGenerationCapacity: '发电功率',
powerGeneration: '发电量',
revenueTrend: '收益趋势'
earning: '收益',
revenueTrend: '收益趋势',
pvIncomeUnit: '元'
}
}

View File

@ -188,7 +188,8 @@ export default {
monthlyPVpowerGeneration: 'Monthly PV power generation',
monthlyInverterPowerGeneration: 'Monthly inverter power generation',
monthlyIncome: 'Monthly income',
powerGeneration: 'Power Generation'
powerGeneration: 'Power Generation',
ratedPower: 'Rated Power'
},
region: {
regionName: 'Region Name',

View File

@ -186,7 +186,8 @@ export default {
monthlyInverterPowerGeneration: '本月逆变器发电量',
monthlyIncome: '本月收益',
gridConnectedDuration: '并网时长',
powerGeneration: '发电量'
powerGeneration: '发电量',
ratedPower: '额定功率'
},
region: {
regionName: '区域名称',

View File

@ -236,7 +236,7 @@ export default {
},
user: {
keyWordTip: '请输入关键字进行过滤',
loadOrg: '正在加载组织结构',
loadOrg: '正在加载组织结构',
userInfo: '人员信息',
loginName: '登录名',
name: '姓名',
@ -293,7 +293,7 @@ export default {
},
org: {
keyWordTip: '输入关键字进行过滤',
loadingOrg: '正在加载组织结构',
loadingOrg: '正在加载组织结构',
org: '组织机构管理',
addOrg: '新增组织',
editOrg: '编辑组织',

View File

@ -40,7 +40,7 @@
<script>
// import * as echarts from 'echarts'
import { GetPCSElecData } from '@/api/home-page/index'
import { getPvData } from '@/api/home-page/index'
export default {
name: 'Index',
@ -62,29 +62,6 @@ export default {
created() {},
mounted() {
const timeData = []
const totalPoints = (24 * 60) / 5
const currentTime = Date.now()
for (let i = 0; i < totalPoints; i++) {
const pointTimestamp = currentTime - i * 5 * 60 * 1000
const date = new Date(pointTimestamp)
const formattedTime = `${date.getFullYear()}-${(date.getMonth() + 1)
.toString()
.padStart(2, '0')}-${date.getDate().toString().padStart(2, '0')} ${date
.getHours()
.toString()
.padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}`
timeData.push(formattedTime)
}
timeData.reverse()
const currentData = []
for (let i = 0; i < timeData.length; i++) {
currentData.push({
date: timeData[i],
chargeElec: Number((Math.random() * 1500 + 1400).toFixed(2))
})
}
this.initCharts(currentData, 1)
},
methods: {
selectTime(type) {
@ -102,9 +79,8 @@ export default {
type: this.currentType
}
try {
const res = await GetPCSElecData(params)
console.log(res)
// this.initCharts(res.data, 1)
const pvres = await getPvData(params)
this.initCharts(pvres.data, 1)
} catch (error) {
// console.log(error);
} finally {
@ -114,13 +90,10 @@ export default {
initCharts(val, type) {
const x_data = []
const charge_data = []
// const discharge_data = []
// let benefit_data = [0, 0, 0, 0, 0, 0, 0]
if (val && val.length > 0) {
val.forEach((item) => {
x_data.push(item.date)
charge_data.push(item.chargeElec)
// discharge_data.push(item.dischargeElec)
charge_data.push(item.powerGenerate)
})
}
this.powerOptions = {

View File

@ -4,9 +4,7 @@
:title="$t('dashboard.revenueTrend')"
@handleSetting="handleSetting"
>
<!-- <ItemBox :title="$t('dashboard.revenueTrend')"
:show-curve-setting="true"
@handleSetting="handleSetting"> -->
<!-- <ItemBox :title="$t('dashboard.revenueTrend')" :show-curve-setting="true" @handleSetting="handleSetting"> -->
<div slot="header">
<div class="header-right-box">
<div
@ -33,7 +31,7 @@
</template>
<script>
import { GetDynamicRealtimeCurve } from '@/api/home-page/index'
import { getPvData } from '@/api/home-page/index'
import * as echarts from 'echarts'
// import { chartYIndex } from '@/utils/index'
export default {
@ -84,14 +82,6 @@ export default {
watch: {},
created() {},
mounted() {
const currentData = []
for (let i = 1; i < 32; i++) {
currentData.push({
date: i,
chargeElec: Number((Math.random() * 9000 + 1000).toFixed(2))
})
}
this.initCharts(currentData, 1)
},
methods: {
selectTime(type) {
@ -105,13 +95,12 @@ export default {
this.loading = true
const params = {
stationId: this.stationId,
pageLocation: 'runChart',
permissionId: this.permissionId
type: this.currentType
}
try {
const res = await GetDynamicRealtimeCurve(params)
const res = await getPvData(params)
if (res.data) {
// this.initCharts(res.data)
this.initCharts(res.data, 1)
}
} catch (error) {
// console.log(error)
@ -124,13 +113,10 @@ export default {
initCharts(val, type) {
const x_data = []
const charge_data = []
// const discharge_data = []
// let benefit_data = [0, 0, 0, 0, 0, 0, 0]
if (val && val.length > 0) {
val.forEach((item) => {
x_data.push(item.date)
charge_data.push(item.chargeElec)
// discharge_data.push(item.dischargeElec)
charge_data.push(item.profit)
})
}
this.runOptions = {
@ -196,7 +182,7 @@ export default {
yAxis: [
{
type: 'value',
name: this.$t('glance.wRMB'),
name: this.$t('dashboard.pvIncomeUnit'),
nameTextStyle: {
color: ' rgba(255, 255, 255, 0.5)'
},
@ -226,7 +212,7 @@ export default {
],
series: [
{
name: `${this.$t('state.powerGeneration')}`,
name: `${this.$t('dashboard.earning')}`,
type: 'bar',
data: charge_data,
barWidth: 14, // 柱状图的宽度

View File

@ -1,119 +1,137 @@
<template>
<div class="top-center-wrapper">
<ItemBox :title="$t('dashboard.runCurve')">
<ItemBox :title="$t('dashboard.runCurve')" :show-curve-setting="true" @handleSetting="handleSetting">
<div v-loading="loading" class="charts-box">
<Chart
ref="chart"
:key="key"
:options="powerOptions"
:class-name="'chart'"
/>
<Chart :options="runOptions" :class-name="'chart'" />
</div>
</ItemBox>
</div>
</template>
<script>
// import * as echarts from 'echarts'
import { GetPCSElecData } from '@/api/home-page/index'
import { GetDynamicRealtimeCurve } from '@/api/home-page/index'
import * as echarts from 'echarts'
import { chartYIndex } from '@/utils/index'
export default {
name: 'Index',
props: {
stationId: {
type: Number,
default: undefined
default: 0
},
permissionId: {
type: Number,
default: null
}
},
data() {
return {
powerOptions: undefined,
currentType: 'day',
color: ['#00A0E9'],
loading: false,
key: 0
runOptions: undefined,
serviceList: [],
nameArr: [],
color: [],
color2: [[{
offset: 0.0,
color: 'rgba(206, 235, 255, 0.1)'
},
{
offset: 1,
color: 'rgba(206, 235, 255, 0.2)'
}], [
{
offset: 0.0,
color: 'rgba(255, 184, 0, 0.1)'
},
{
offset: 1,
color: 'rgba(255, 184, 0, 0.2)'
}
]],
loading: false
}
},
computed: {},
watch: {},
created() {},
mounted() {
const timeData = []
const totalPoints = (24 * 60) / 5
const currentTime = Date.now()
for (let i = 0; i < totalPoints; i++) {
const pointTimestamp = currentTime - i * 5 * 60 * 1000
const date = new Date(pointTimestamp)
const formattedTime = `${date.getFullYear()}-${(date.getMonth() + 1)
.toString()
.padStart(2, '0')}-${date.getDate().toString().padStart(2, '0')} ${date
.getHours()
.toString()
.padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}`
timeData.push(formattedTime)
}
timeData.reverse()
const currentData = []
for (let i = 0; i < timeData.length; i++) {
currentData.push({
date: timeData[i],
chargeElec: Number((Math.random() * 1500 + 1400).toFixed(2))
})
}
this.initCharts(currentData, 1)
// this.initCharts()
},
methods: {
selectTime(type) {
this.currentType = type
this.getData()
handleSetting() {
this.$emit('handleSetting')
},
getData() {
this.getElecData()
// this.getIncomeData()
},
async getElecData() {
async getData() {
this.loading = true
const params = {
stationId: this.stationId,
type: this.currentType
pageLocation: 'pvrunChart',
permissionId: this.permissionId
}
try {
const res = await GetPCSElecData(params)
console.log(res)
// this.initCharts(res.data, 1)
const res = await GetDynamicRealtimeCurve(params)
if (res.data) {
this.initCharts(res.data)
}
} catch (error) {
// console.log(error);
// console.log(error)
} finally {
this.loading = false
}
},
// 新增代码
initCharts(val, type) {
const x_data = []
const charge_data = []
// const discharge_data = []
// let benefit_data = [0, 0, 0, 0, 0, 0, 0]
initCharts(val) {
let x_data = []
const valueArr = []
this.nameArr = []
if (val && val.length > 0) {
val.forEach((item) => {
x_data.push(item.date)
charge_data.push(item.chargeElec)
// discharge_data.push(item.dischargeElec)
val.forEach((item, index) => {
valueArr.push(item.list)
this.nameArr.push(item.name)
if (item.list.length) {
x_data = []
item.list.forEach((el) => {
x_data.push(el.date)
})
}
this.powerOptions = {
})
const valueArr2 = []
valueArr.forEach((item, index) => {
const arr = []
item.forEach((item2, index2) => {
arr.push(item2.digital)
valueArr2[index] = arr
})
})
this.serviceList = []
valueArr2.forEach((item, index) => {
this.serviceList.push({
data: item,
type: 'line',
name: this.nameArr[index],
showSymbol: false,
yAxisIndex: chartYIndex(val[index]),
color: this.color[index],
lineStyle: {
color: this.color[index]
},
areaStyle: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, this.color2[index])
}
})
})
this.runOptions = {
grid: {
top: '25%',
left: '5%',
right: '5%',
left: '6%',
right: '3%',
bottom: '5%',
containLabel: true
},
legend: {},
tooltip: {
trigger: 'axis',
backgroundColor: 'rgba(0,0,0,0,)',
borderColor: 'rgba(0,0,0,0,);',
borderWidth: 0,
appendToBody: true,
textStyle: {
width: 160,
height: 250,
@ -122,27 +140,56 @@ export default {
fontSize: '14',
fontFamily: 'SourceHanSansCN-Normal'
},
formatter: (params) => {
formatter: params => {
// 获取xAxis data中的数据
let dataStr = `<div><p style="font-weight:bold;margin:0 8px 15px;">${params[0].name}</p></div>`
params.forEach((item) => {
let dataStr = `<div><p style="font-weight:bold;margin:0 8px 15px;z-index: 9999999;">${params[0].name}</p></div>`
params.forEach(item => {
dataStr += `<div>
<div style="margin: 0 8px;">
<span style="display:inline-block;margin-right:5px;width:10px;height:10px;background-color:${this.color[0]};"></span>
<span style="display:inline-block;margin-right:5px;width:10px;height:10px;background-color:${item.color};"></span>
<span>${item.seriesName}</span>
<span style="float:right;color:#00C8FF;margin-left:20px;">${item.data}</span>
<span style="float:right;color:#00C8FF;margin-left:20px;">${item.data === null ? '' : item.data}</span>
</div>
</div>`
})
const div = `<div style='border: 1px solid ;
border-image: linear-gradient(130deg, #FFFFFF 0%, rgba(201,255,243,0.00) 22%, rgba(201,255,243,0.00) 75%, rgba(201,255,243,0.00) 80%, #FFFFFF 99%, #FFFFFF 99%) 1;
box-shadow: inset 0px 2px 16px 0px rgba(0, 148, 255, 0.4);' >${dataStr}</div>`
border-image: linear-gradient(130deg, #FFFFFF 0%, rgba(201,255,243,0.00) 22%, rgba(201,255,243,0.00) 75%, rgba(201,255,243,0.00) 80%, #FFFFFF 99%, #FFFFFF 99%) 1;
box-shadow: inset 0px 2px 16px 0px rgba(0, 148, 255, 0.4);' >${dataStr}</div>`
return div
}
},
xAxis: [
{
type: 'category',
legend: {
type: 'scroll',
top: 20,
bottom: 20,
padding: [0, 180],
icon: 'circle',
align: 'left',
itemWidth: 10,
itemHeight: 8,
itemGap: 15,
textStyle: {
color: '#fff',
rich: {
name: {
fontSize: 12,
color: '#ffffff',
padding: [0, 10, 0, 0]
},
num: {
fontSize: 16,
color: '#ffffff'
},
unit: {
fontSize: 16,
color: '#ffffff'
}
}
}
},
xAxis: {
data: x_data,
axisLine: {
show: true,
@ -158,12 +205,10 @@ export default {
axisTick: {
show: false
}
}
],
yAxis: [
{
},
yAxis: [{
name: this.$t('dashboard.power') + 'kW',
type: 'value',
name: `kWh`,
nameTextStyle: {
color: ' rgba(255, 255, 255, 0.5)'
},
@ -177,31 +222,56 @@ export default {
show: true,
color: '#CEEBFF'
},
axisTick: {
show: false
},
splitLine: {
show: true, // 强制显示分割线(默认已开启,确保不被隐藏)
lineStyle: {
type: 'dashed', // 线型设为虚线
color: 'rgba(255,255,255,0.2)', // 虚线颜色(可自定义,如 #999、rgba(0,0,0,0.1)
width: 1, // 虚线宽度
dashOffset: 5 // 虚线偏移量(可选,调整虚线起始位置)
min: function(value) {
return Math.floor((Math.abs(value.min) < value.max ? -value.max * 1.05 : value.min * 1.05).toFixed(2))
},
max: function(value) {
return Math.ceil((Math.abs(value.min) < value.max ? value.max * 1.05 : -value.min * 1.05).toFixed(2))
}
}
}
],
series: [
},
{
name: `${this.$t('dashboard.powerGenerationCapacity')}`,
type: 'line',
smooth: true,
symbol: 'none',
data: charge_data,
barWidth: 14, // 柱状图的宽度
color: '#00C8FF'
name: 'SOC(%)',
type: 'value',
max: 100,
min: -100,
ming: 0,
nameTextStyle: {
color: ' rgba(255, 255, 255, 0.5)'
},
axisLine: {
show: false,
lineStyle: {
color: '#90e9d8'
}
},
axisLabel: {
show: true,
color: '#CEEBFF'
},
axisTick: {
show: false
}
}],
series: this.serviceList
}
} else {
this.runOptions = {
title: {
text: this.$t('dashboard.noData'),
x: 'center',
y: 'center',
textStyle: {
fontSize: 14,
fontWeight: 'normal'
}
}
}
]
}
}
}
@ -241,4 +311,5 @@ export default {
height: 100%;
}
}
</style>

View File

@ -120,33 +120,38 @@ export default {
}],
overflowData: [{
name: this.$t('dashboard.currentPower'),
id: 'currentPower',
id: 'pvCurrentPower',
picture: disImg,
value: 0,
unit: 'kW'
}, {
name: this.$t('dashboard.todayElectricityGeneration'),
id: 'todayElecGeneration',
id: 'dailyReleaseElec',
picture: disImg,
value: 0,
unit: 'kWh'
}, {
name: this.$t('dashboard.todayEarning'),
id: 'todayIncone',
picture: disImg,
value: 0,
unit: this.$t('dashboard.pvIncomeUnit')
}, {
name: this.$t('dashboard.totalPowerGeneration'),
id: 'totalPowerGeneration',
id: 'totalReleaseElec',
picture: disImg,
value: 0,
unit: 'kWh'
},
{
name: this.$t('dashboard.totalRevenue'),
id: 'totalRevenue',
id: 'totalIncome',
picture: disImg,
value: 0,
unit: 'kWh',
click: true
unit: this.$t('dashboard.pvIncomeUnit')
}, {
name: this.$t('dashboard.ratedPowerofInverter'),
id: 'ratedPowerofInverter',
id: 'pvPower',
picture: disImg,
value: 0,
unit: 'kW'
@ -221,55 +226,42 @@ export default {
value: 0
}]
this.overflowData = [{
name: this.$t('dashboard.safeDays'),
id: 'operationDays',
picture: disImg,
value: 0,
unit: this.$t('dashboard.day')
}, {
name: this.$t('dashboard.totalCapacity'),
id: 'totalCapacity',
picture: disImg,
value: 0,
unit: 'kWh'
}, {
name: this.$t('dashboard.systemConversionEfficiency'),
id: 'systemEfficiency',
picture: disImg,
value: 0,
unit: '%'
}, {
name: this.$t('dashboard.currentPower'),
id: 'currentPower',
id: 'pvCurrentPower',
picture: disImg,
value: 0,
unit: 'kW'
}, {
name: this.$t('dashboard.totalCharge'),
id: 'totalChargeElec',
name: this.$t('dashboard.todayElectricityGeneration'),
id: 'dailyReleaseElec',
picture: disImg,
value: 0,
unit: 'kWh'
}, {
name: this.stationId === 753 ? this.$t('dashboard.capacityIncrease') : this.$t('dashboard.totalDischarge'),
id: 'totalDischargeElec',
name: this.$t('dashboard.todayEarning'),
id: 'todayIncone',
picture: disImg,
value: 0,
unit: this.$t('dashboard.pvIncomeUnit')
}, {
name: this.$t('dashboard.totalPowerGeneration'),
id: 'totalReleaseElec',
picture: disImg,
value: 0,
unit: 'kWh'
},
{
name: this.$t('dashboard.dailyCharge'),
id: 'dailyChargeElec',
name: this.$t('dashboard.totalRevenue'),
id: 'totalIncome',
picture: disImg,
value: 0,
unit: 'kWh',
click: true
unit: this.$t('dashboard.pvIncomeUnit')
}, {
name: this.stationId === 753 ? this.$t('dashboard.DailycapacityIncrease') : this.$t('dashboard.dailyDischarge'),
id: 'dailyDischargeElec',
name: this.$t('dashboard.ratedPowerofInverter'),
id: 'pvPower',
picture: disImg,
value: 0,
unit: 'kWh'
unit: 'kW'
}]
},
deep: true
@ -331,33 +323,49 @@ export default {
if (data[item.id]) {
item.value = data[item.id]
}
if (item.id === 'systemEfficiency') {
item.value = (item.value * 100).toFixed(2)
}
if (item.id === 'totalCapacity' && item.value >= 1E4) {
item.unit = 'MWh'
item.value = (Number(item.value) / 1E3).toFixed(2) + ''
}
if (item.id === 'totalChargeElec' && item.value >= 1E4) {
item.unit = 'MWh'
item.value = (Number(item.value) / 1E3).toFixed(2) + ''
}
if (item.id === 'totalDischargeElec' && item.value >= 1E4) {
item.unit = 'MWh'
item.value = (Number(item.value) / 1E3).toFixed(2) + ''
}
if (item.id === 'dailyDischargeElec' && item.value >= 1E4) {
item.unit = 'MWh'
item.value = (Number(item.value) / 1E3).toFixed(2) + ''
}
if (item.id === 'dailyChargeElec' && item.value >= 1E4) {
item.unit = 'MWh'
item.value = (Number(item.value) / 1E3).toFixed(2) + ''
}
if (item.id === 'currentPower' && item.value >= 1E4) {
if (item.id === 'pvCurrentPower' && item.value >= 1E4) {
item.unit = 'MW'
item.value = (Number(item.value) / 1E3).toFixed(2) + ''
}
if (item.id === 'dailyReleaseElec' && item.value >= 1E4) {
item.unit = 'MWh'
item.value = (Number(item.value) / 1E3).toFixed(2) + ''
}
if (item.id === 'totalReleaseElec' && item.value >= 1E4) {
item.unit = 'MWh'
item.value = (Number(item.value) / 1E3).toFixed(2) + ''
}
if (item.id === 'pvPower' && item.value >= 1E4) {
item.unit = 'MW'
item.value = (Number(item.value) / 1E3).toFixed(2) + ''
}
// if (item.id === 'systemEfficiency') {
// item.value = (item.value * 100).toFixed(2)
// }
// if (item.id === 'totalCapacity' && item.value >= 1E4) {
// item.unit = 'MWh'
// item.value = (Number(item.value) / 1E3).toFixed(2) + ''
// }
// if (item.id === 'totalChargeElec' && item.value >= 1E4) {
// item.unit = 'MWh'
// item.value = (Number(item.value) / 1E3).toFixed(2) + ''
// }
// if (item.id === 'totalDischargeElec' && item.value >= 1E4) {
// item.unit = 'MWh'
// item.value = (Number(item.value) / 1E3).toFixed(2) + ''
// }
// if (item.id === 'dailyDischargeElec' && item.value >= 1E4) {
// item.unit = 'MWh'
// item.value = (Number(item.value) / 1E3).toFixed(2) + ''
// }
// if (item.id === 'dailyChargeElec' && item.value >= 1E4) {
// item.unit = 'MWh'
// item.value = (Number(item.value) / 1E3).toFixed(2) + ''
// }
// if (item.id === 'currentPower' && item.value >= 1E4) {
// item.unit = 'MW'
// item.value = (Number(item.value) / 1E3).toFixed(2) + ''
// }
})
} catch (error) {
// console.log(error);

View File

@ -87,7 +87,6 @@
</el-select>
</el-form-item>
</el-col>
<el-col v-if="workInfo.value === 1" :span="24">
<el-form-item :label="$t('dashboard.remoteControlActive') + (kW)" prop="p">
<el-input-number

View File

@ -3,13 +3,13 @@
<el-row class="top-box" :gutter="10">
<el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6">
<div class="component-wrapper">
<!-- @handleSetting="handlePointSetting('stationData')" -->
<component
:is="topLeftComponent"
ref="topLeft"
:permission-id="permissionId"
:station-id="stationId"
:daily-time="timeForm"
@handleSetting="handlePointSetting('stationData')"
/>
</div>
</el-col>
@ -28,6 +28,7 @@
:station-id="stationId"
:station-type="stationType"
@screenFull="screenFull"
@handleSetting="handleSetting('pvrunChart')"
/>
</div>
</el-col>
@ -69,13 +70,13 @@
<el-row class="bottom-box" :gutter="10">
<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
<div class="component-bottom">
<!-- <div class="component-bottom" :style="{ height: bottomHeight }"> -->
<!-- <div class="component-bottom" :style="{ height: bottomHeight }">
下方component组件的 @handleSetting="handlePointSetting('barLeftBottom')" -->
<component
:is="bottomLeftComponent"
ref="bottomLeft"
:station-id="stationId"
:daily-time="timeForm"
@handleSetting="handlePointSetting('barLeftBottom')"
/>
</div>
</el-col>
@ -91,7 +92,6 @@
ref="bottomRight"
:permission-id="permissionId"
:station-id="stationId"
@handleSetting="handleSetting('runChart')"
/>
</div>
</el-col>
@ -203,7 +203,7 @@ export default {
show_dispostion: false,
show_point_dispostion: false,
pageLocation: null,
chartLocation: 'runChart',
chartLocation: 'pvrunChart',
permissionId: null
}
},

View File

@ -3,7 +3,6 @@
<ItemBox :title="$t('dashboard.runCurve')">
<div v-loading="loading" class="charts-box">
<Chart :options="runOptions" :class-name="'chart'" />
</div>
</ItemBox>
</div>

View File

@ -9,9 +9,8 @@
<script>
import item from './item-warp.vue'
import { GetChargeDailyChart } from '@/api/screen/zzScreen'
import { GetPvRelease } from '@/api/screen/zzPvScreen'
import dayChargeIcon from '../../../assets/new-screen/dayCharge-icon.png'
// import dayDischargeIcon from '../../../assets/new-screen/dayDischarge-icon.png'
export default {
components: { item },
data() {
@ -31,7 +30,7 @@ export default {
async getData(deptId) {
try {
this.Loading = true
const { data } = await GetChargeDailyChart({
const { data } = await GetPvRelease({
deptId: deptId
})
this.initChart(data)

View File

@ -37,7 +37,7 @@
<script>
import item from './item-warp.vue'
import screenItemBg from '@/assets/new-screen/screen-item-bg.png'
import { GetEnergySaving } from '@/api/screen/zzScreen'
import { GetPvEnergySaving } from '@/api/screen/zzPvScreen'
export default {
components: { item },
data() {
@ -61,7 +61,7 @@ export default {
async getData(deptId) {
try {
this.loading = true
const { data } = await GetEnergySaving({
const { data } = await GetPvEnergySaving({
deptId: deptId
})
this.info = data

View File

@ -13,7 +13,7 @@
<script>
import item from './item-warp.vue'
import { GetRegionalDistribution } from '@/api/screen/zzScreen'
import { GetPvRegionalDistribution } from '@/api/screen/zzPvScreen'
export default {
components: { item },
@ -27,7 +27,7 @@ export default {
async getData(deptId) {
try {
this.loading = true
const res = await GetRegionalDistribution({
const res = await GetPvRegionalDistribution({
deptId: deptId
})
this.initChart(res.data)

View File

@ -25,56 +25,29 @@
<el-tooltip class="item" effect="dark" :content="$t('screen.dailyPowerGeneration')" placement="top">
<div class="title" style="min-width:170px;max-width:170px;">{{ $t('screen.dailyPowerGeneration') }}</div>
</el-tooltip>
<el-tooltip class="item" effect="dark" :content="info.dayCharge |kwhFormat" placement="top">
<div class="value" style="min-width:170px;max-width:170px;">{{ info.dayCharge |kwhFormat }}</div>
<el-tooltip class="item" effect="dark" :content="info.dailyReleaseElec |kwhFormat" placement="top">
<div class="value" style="min-width:170px;max-width:170px;">{{ info.dailyReleaseElec |kwhFormat }}</div>
</el-tooltip>
<div class="unit">{{ info.dayCharge |kwhUnitFormat }}</div>
<div class="unit">{{ info.dailyReleaseElec |kwhUnitFormat }}</div>
</div>
<div class="value-box" style="width:100%">
<el-tooltip class="item" effect="dark" :content="$t('screen.yearlyPowerGeneration')" placement="top">
<div class="title" style="min-width:170px;max-width:170px;">{{ $t('screen.yearlyPowerGeneration') }}</div>
</el-tooltip>
<el-tooltip class="item" effect="dark" :content="info.dayDischarge |kwhFormat" placement="top">
<div class="value" style="min-width:170px;max-width:170px;">{{ info.dayDischarge |kwhFormat }}</div>
<el-tooltip class="item" effect="dark" :content="info.yearReleaseElec |kwhFormat" placement="top">
<div class="value" style="min-width:170px;max-width:170px;">{{ info.yearReleaseElec |kwhFormat }}</div>
</el-tooltip>
<div class="unit">{{ info.dayDischarge |kwhUnitFormat }}</div>
<div class="unit">{{ info.yearReleaseElec |kwhUnitFormat }}</div>
</div>
<div class="value-box" style="width:100%">
<el-tooltip class="item" effect="dark" :content="$t('screen.cumulativePowerGeneration')" placement="top">
<div class="title" style="min-width:170px;max-width:170px;">{{ $t('screen.cumulativePowerGeneration') }}</div>
</el-tooltip>
<el-tooltip class="item" effect="dark" :content="info.yearCharge |kwhFormat" placement="top">
<div class="value" style="min-width:170px;max-width:170px;">{{ info.yearCharge |kwhFormat }}</div>
<el-tooltip class="item" effect="dark" :content="info.totalReleaseElec |kwhFormat" placement="top">
<div class="value" style="min-width:170px;max-width:170px;">{{ info.totalReleaseElec |kwhFormat }}</div>
</el-tooltip>
<div class="unit">{{ info.yearCharge |kwhUnitFormat }}</div>
<div class="unit">{{ info.totalReleaseElec |kwhUnitFormat }}</div>
</div>
<!-- <div class="value-box">
<el-tooltip class="item" effect="dark" :content="$t('screen.yearDisCharge')" placement="top">
<div class="title">{{ $t('screen.yearDisCharge') }}</div>
</el-tooltip>
<el-tooltip class="item" effect="dark" :content="info.yearDischarge |kwhFormat" placement="top">
<div class="value">{{ info.yearDischarge |kwhFormat }}</div>
</el-tooltip>
<div class="unit">{{ info.yearDischarge |kwhUnitFormat }}</div>
</div>
<div class="value-box">
<el-tooltip class="item" effect="dark" :content="$t('screen.totalCharge')" placement="top">
<div class="title">{{ $t('screen.totalCharge') }}</div>
</el-tooltip>
<el-tooltip class="item" effect="dark" :content="info.totalCharge |kwhFormat" placement="top">
<div class="value">{{ info.totalCharge |kwhFormat }}</div>
</el-tooltip>
<div class="unit">{{ info.totalCharge |kwhUnitFormat }}</div>
</div>
<div class="value-box">
<el-tooltip class="item" effect="dark" :content="$t('screen.totalDisCharge')" placement="top">
<div class="title">{{ $t('screen.totalDisCharge') }}</div>
</el-tooltip>
<el-tooltip class="item" effect="dark" :content="info.totalDischarge |kwhFormat" placement="top">
<div class="value">{{ info.totalDischarge |kwhFormat }}</div>
</el-tooltip>
<div class="unit">{{ info.totalDischarge |kwhUnitFormat }}</div>
</div> -->
</div>
</item>
</div>

View File

@ -18,7 +18,9 @@
import worldJson from 'echarts/map/json/world.json'
// import { chinaMapOutline } from '@/assets/mapJson/chinaMapOut.js'
import blue from '../../../assets/new-screen/map-blue.png'
import { GetStationInfo, GetCapacity, GetRegionalDistribution } from '@/api/screen/zzScreen'
import { GetStationInfo, GetCapacity } from '@/api/screen/zzScreen'
import { GetPvRegionalDistribution } from '@/api/screen/zzPvScreen'
export default {
data() {
return {
@ -51,7 +53,7 @@ export default {
}
},
async getStationNum(deptId) {
const { data } = await GetRegionalDistribution({
const { data } = await GetPvRegionalDistribution({
deptId: deptId
})
this.mapData = data

View File

@ -20,7 +20,7 @@
<script>
import SwiperTable from './SwiperTable.vue'
import { GetEfficiencyDate } from '@/api/screen/zzScreen'
import { GetPvElecList } from '@/api/screen/zzPvScreen'
import item from './item-warp.vue'
export default {
components: { item, SwiperTable },
@ -44,7 +44,7 @@ export default {
async getData(deptId) {
try {
this.tableLoading = true
const res = await GetEfficiencyDate({
const res = await GetPvElecList({
deptId: deptId
})
this.tableData = res.data

View File

@ -20,7 +20,7 @@
<script>
import item from './item-warp.vue'
import SwiperTableCenter from './SwiperTableCenter.vue'
import { GetRegionalIncomeDate } from '@/api/screen/zzScreen'
import { GetPvRegionalIncomeDate } from '@/api/screen/zzPvScreen'
export default {
components: { item, SwiperTableCenter },
data() {
@ -42,7 +42,7 @@ export default {
async getData(deptId) {
try {
this.tableLoading = true
const res = await GetRegionalIncomeDate({
const res = await GetPvRegionalIncomeDate({
deptId: deptId
})
this.tableData = res.data

View File

@ -24,7 +24,7 @@
<script>
import item from './item-warp.vue'
import { GetIncomeCurve } from '@/api/screen/zzScreen'
import { GetPvIncomeCurve } from '@/api/screen/zzPvScreen'
export default {
components: { item },
props: {},
@ -51,7 +51,7 @@ export default {
this.deptId = deptId
try {
this.loading = true
const { data } = await GetIncomeCurve({ type: this.activeName, deptId: deptId })
const { data } = await GetPvIncomeCurve({ type: this.activeName, deptId: deptId })
this.initChart(data)
} catch (error) {
console.log(error)

View File

@ -69,7 +69,8 @@ import RightCenter from './components/right-center.vue'
import RightRight from './components/right-bottom.vue'
import CenterBottom from './components/center-bottom.vue'
import CenterTop from './components/center-top.vue'
import { GetOverviewData, GetNewWeather, GetDeptIdByStationId } from '@/api/screen/zzScreen'
import { GetNewWeather, GetDeptIdByStationId } from '@/api/screen/zzScreen'
import { GetPvOverviewData } from '@/api/screen/zzPvScreen'
export default {
components: {
// MapCenter, CenterTop,
@ -150,35 +151,30 @@ export default {
this.$refs.MapCenterRef.getLeftData(this.deptId)
this.$refs.CenterBottomRef.getData(this.deptId)
const res = await GetOverviewData({
const res = await GetPvOverviewData({
deptId: this.deptId
})
console.log(res.data)
this.leftTopInfo = {
capacity: res.data.capacity,
stationNumber: res.data.stationNumber,
yearCharge: res.data.yearCharge,
yearDischarge: res.data.yearDischarge,
totalCharge: res.data.totalCharge,
totalDischarge: res.data.totalDischarge,
dayCharge: res.data.dayCharge,
dayDischarge: res.data.dayDischarge
dailyReleaseElec: res.data.dailyReleaseElec,
yearReleaseElec: res.data.yearReleaseElec,
totalReleaseElec: res.data.totalReleaseElec
}
this.centerTopInfo = {
totalProfit: (Number(res.data.totalProfit) / 1E4).toFixed(2),
yearProfit: (Number(res.data.yearProfit) / 1E4).toFixed(2),
yestProfit: (Number(res.data.yestProfit) / 1E4).toFixed(2)
totalProfit: (Number(res.data.todayIncone) / 1E4).toFixed(2),
yearProfit: (Number(res.data.yearIncone) / 1E4).toFixed(2),
yestProfit: (Number(res.data.totalIncome) / 1E4).toFixed(2)
}
} catch (err) {
this.leftTopInfo = {
capacity: 0,
stationNumber: 0,
yearCharge: 0,
yearDischarge: 0,
totalCharge: 0,
totalDischarge: 0,
dayCharge: 0,
dayDischarge: 0
dailyReleaseElec: 0,
yearReleaseElec: 0,
totalReleaseElec: 0
}
this.centerTopInfo = {
totalProfit: 0,

View File

@ -14,7 +14,6 @@
/>
</el-form-item>
</el-col>
<el-col
:xs="24"
:sm="24"
@ -23,7 +22,7 @@
:xl="17"
style="text-align: right"
>
<el-button
<!-- <el-button
v-permission="['business:earningsCalculate:oneKeyComputation']"
style="margin-left: auto"
type="primary"
@ -41,7 +40,7 @@
class="reset-btn"
:loading="downLoading"
@click="handleExportTempData"
>{{ $t("state.exportReport") }}</el-button>
>{{ $t("state.exportReport") }}</el-button> -->
</el-col>
</el-row>
</el-form>
@ -55,25 +54,6 @@
<div class="top">
<ItemBox :title="$t('state.powerGenerationStatus')">
<div class="box">
<div class="value-box">
<div class="top-box">
<span class="d" />
<el-tooltip
:content="$t('state.totalStringCapacity')"
placement="top"
effect="dark"
>
<span class="title">{{ $t("state.totalStringCapacity") }}</span>
</el-tooltip>
<span class="d" />
</div>
<div class="center-line" />
<div class="bottom-value">
{{ totalData.capacity }}
<span class="unit">kWp</span>
</div>
</div>
<div class="value-box">
<div class="top-box">
<span class="d" />
@ -90,7 +70,7 @@
</div>
<div class="center-line" />
<div class="bottom-value">
203{{ totalData.totalChargeElec }}.55
{{ totalData.monthReleaseElec }}
<span class="unit">kWh</span>
</div>
</div>
@ -110,7 +90,7 @@
</div>
<div class="center-line" />
<div class="bottom-value">
237{{ totalData.totalCharge }}.12
{{ totalData.totalReleaseElec }}
<span class="unit">kWh</span>
</div>
</div>
@ -118,60 +98,22 @@
<div class="top-box">
<span class="d" />
<el-tooltip
:content="$t('state.equivalentPowerGenerationTime')"
:content="$t('state.ratedPower')"
placement="top"
effect="dark"
>
<span class="title">{{
$t("state.equivalentPowerGenerationTime")
$t("state.ratedPower")
}}</span>
</el-tooltip>
<span class="d" />
</div>
<div class="center-line" />
<div class="bottom-value">
9.{{ totalData.totalDischargeElec }}6
<span class="unit">kWh/kWp</span>
</div>
</div>
<div class="value-box">
<div class="top-box">
<span class="d" />
<el-tooltip
:content="$t('state.peakACpower')"
placement="top"
effect="dark"
>
<span class="title">{{ $t("state.peakACpower") }}</span>
</el-tooltip>
<span class="d" />
</div>
<div class="center-line" />
<div class="bottom-value">
6{{ totalData.totalDischarge }}.87
{{ totalData.pvPower === null? 0:totalData.pvPower }}
<span class="unit">kW</span>
</div>
</div>
<div class="value-box">
<div class="top-box">
<span class="d" />
<el-tooltip
:content="$t('state.gridConnectedDuration')"
placement="top"
effect="dark"
>
<span class="title">{{
$t("state.gridConnectedDuration")
}}</span>
</el-tooltip>
<span class="d" />
</div>
<div class="center-line" />
<div class="bottom-value">
0
<span class="unit">h</span>
</div>
</div>
</div>
</ItemBox>
</div>
@ -187,86 +129,6 @@
/>
</div>
</ItemBox>
<!-- <el-row :gutter="10" style="width: 100%">
<el-col
:xs="24"
:sm="12"
:md="12"
:lg="12"
:xl="12"
class="center-left"
>
<ItemBox :title="$t('state.charge')">
<el-table
v-loading="load_data"
:header-cell-style="{
color: '#CEEBFF',
textAlign: 'center',
}"
:data="chargeArr"
style="width: 100%"
:row-style="{ height: '40px' }"
height="175"
>
<el-table-column
align="center"
prop="rateType"
:label="$t('state.time')"
/>
<el-table-column
align="center"
prop="elec"
:label="$t('state.ele')"
/>
<el-table-column
align="center"
prop="digital"
:label="$t('state.expend')"
/>
</el-table>
</ItemBox>
</el-col>
<el-col
:xs="24"
:sm="12"
:md="12"
:lg="12"
:xl="12"
class="center-right"
>
<ItemBox :title="$t('state.disCharge')">
<div class="box">
<el-table
v-loading="load_data"
:header-cell-style="{
color: '#CEEBFF',
textAlign: 'center',
}"
:data="dischargeArr"
style="width: 100%"
:row-style="{ height: '40px' }"
height="175"
>
<el-table-column
align="center"
prop="rateType"
:label="$t('state.time')"
/>
<el-table-column
align="center"
prop="elec"
:label="$t('state.ele')"
/>
<el-table-column
align="center"
prop="digital"
:label="$t('state.earnings') + `(${$t('state.rmb')})`"
/>
</el-table>
</div>
</ItemBox>
</el-col>
</el-row> -->
</div>
<div class="bottom">
@ -276,18 +138,7 @@
<div class="title">{{ $t("state.monthlyPVpowerGeneration") }}</div>
<div class="bottom-value">
<div class="value">
2031.{{ totalData.totalChargePrice }}7
<span class="unit">kWh</span>
</div>
</div>
</div>
<div class="value-box">
<div class="title">
{{ $t("state.monthlyInverterPowerGeneration") }}
</div>
<div class="bottom-value">
<div class="value">
237{{ totalData.totalDisChargePrice }}.53
{{ totalData.monthIncone }}
<span class="unit">kWh</span>
</div>
</div>
@ -296,7 +147,7 @@
<div class="title">{{ $t("state.monthlyIncome") }}</div>
<div class="bottom-value">
<div class="value">
45{{ totalData.income }}8.3
{{ totalData.totalIncome }}
<span class="unit">{{ $t("state.rmb") }}</span>
</div>
</div>
@ -368,6 +219,7 @@
import * as echarts from 'echarts'
import {
GetTotal,
getPvMonthData,
OneKeyComputation,
SureOneKeyComputation
} from '@/api/revenue-management/earnings-statement'
@ -382,8 +234,6 @@ export default {
downLoading: false,
totalData: {},
load_data: false,
chargeArr: [],
dischargeArr: [],
computedTime: [],
computedShow: false,
computedLoading: false,
@ -546,6 +396,18 @@ export default {
changeTime() {
this.get_table_data()
},
async getPvMonthData(params) {
try {
const res = await getPvMonthData(params)
this.initCharts(res.data)
} catch (error) {
console.log(error)
} finally {
// console.log(error);
}
const res = await GetTotal(params)
this.initCharts(res.data)
},
async get_table_data() {
this.load_data = true
const params = {
@ -554,28 +416,10 @@ export default {
}
try {
const res = await GetTotal(params)
await getPvMonthData(params)
this.totalData = res.data
this.chargeArr = []
this.dischargeArr = []
if (res.data.finish === 0) {
this.$message.warning(
`${this.$t('state.computeding')}${res.data.progress}${this.$t(
'state.laterQuery'
)}`
)
}
if (res.data.list.length) {
res.data.list.forEach((el) => {
if (+el.type === 0) {
this.chargeArr.push(el)
}
if (+el.type === 1) {
this.dischargeArr.push(el)
}
})
} else {
this.chargeArr = []
this.dischargeArr = []
this.$message.warning(`${this.$t('state.computeding')}${res.data.progress}${this.$t('state.laterQuery')}`)
}
} catch (error) {
// console.log(error);
@ -634,13 +478,10 @@ export default {
initCharts(val, type) {
const x_data = []
const charge_data = []
// const discharge_data = []
// let benefit_data = [0, 0, 0, 0, 0, 0, 0]
if (val && val.length > 0) {
val.forEach((item) => {
x_data.push(item.date)
charge_data.push(item.chargeElec)
// discharge_data.push(item.dischargeElec)
charge_data.push(item.powerGenerate)
})
}
this.powerOptions = {

View File

@ -29,7 +29,7 @@
<script>
import { GetPcsCurve } from '@/api/surveillance/pcs'
import { GetMtttpCurve } from '@/api/surveillance/mttp'
import ItemBox from '../../item-kuang.vue'
export default {
name: 'Index',
@ -102,7 +102,7 @@ export default {
srcId: srcId
}
try {
const res = await GetPcsCurve(params)
const res = await GetMtttpCurve(params)
this.getChatData(res.data)
} catch (error) {
// console.log(error);
@ -115,7 +115,7 @@ export default {
const xAxis = []
val.forEach((v) => {
xAxis.push(v.data)
gonglv.push(Number((Math.random() * 50 + 100).toFixed(2)))
gonglv.push(v.planCurve)
})
this.options = {
color: ['#00C8FF', '#FBBB11'],

View File

@ -411,7 +411,7 @@ export default {
}
try {
const res = await GetNewValue(params)
console.log('dcdcmppt', res)
this.pcsLeftTopData.forEach((el) => {
if (Object.keys(res.data).length !== 0) {
el.value = res.data[el.field].value

View File

@ -1,361 +1,235 @@
export const pcsRightData = [
{
label: '总报警状态',
englabel: 'PCS Total Alarm Status',
field: 'YX0012',
label: 'EPO故障',
englabel: '',
field: 'YX0058',
value: ''
},
{
label: '单元直压故障',
englabel: 'Unit direct pressure failure',
field: 'YX0007',
value: ''
},
{
label: '开关电源欠压',
englabel: 'Switching power supply is undervoltaged',
field: 'YX0010',
value: ''
},
{
label: '过温故障',
englabel: 'Overtemperature failure',
field: 'YX0015',
value: ''
},
{
label: '系统相序错误',
englabel: 'The system phase sequence is incorrect',
field: 'YX0031',
value: ''
},
{
label: '直流极性反接',
englabel: 'DC polarity reversed',
field: 'YX0032',
value: ''
},
{
label: '直流母线软件过压',
englabel: 'DC bus software overvoltage',
field: 'YX0033',
value: ''
},
{
label: '直流母线软件欠压',
englabel: 'DC bus software undervoltage',
field: 'YX0034',
value: ''
},
{
label: '系统过频率',
englabel: 'The frequency of the system is over-frequent',
field: 'YX0035',
value: ''
},
{
label: '系统欠频率',
englabel: 'System underfrequency',
field: 'YX0036',
value: ''
},
{
label: '直流充电过流',
englabel: 'DC charging overcurrent',
field: 'YX0037',
value: ''
},
{
label: '直流放电过流',
englabel: 'DC discharge overcurrent',
field: 'YX0038',
value: ''
},
{
label: '孤岛保护',
englabel: 'Island protection',
field: 'YX0039',
value: ''
},
{
label: '直流主接合闸故障',
englabel: 'DC main connection and closing fault',
field: 'YX0045',
value: ''
},
{
label: '直流主接分闸故障',
englabel: 'DC main connection opening fault',
field: 'YX0046',
value: ''
},
{
label: '直流软启合闸故障',
englabel: 'DC soft start and close fault',
field: 'YX0047',
value: ''
},
{
label: '直流软启分闸故障',
englabel: 'DC soft start opening fault',
field: 'YX0048',
value: ''
},
{
label: '直流软起失败',
englabel: 'DC soft start failed',
field: 'YX0050',
value: ''
},
{
label: '起机条件不满足',
englabel: 'The starting conditions are not met',
field: 'YX0053',
value: ''
},
{
label: '运行中开关故障',
englabel: 'Faulty switch during operation',
field: 'YX0054',
value: ''
},
{
label: '逆变启动超时',
englabel: 'The inverter startup timed out',
field: 'YX0055',
value: ''
},
{
label: '参数下发设置错误',
englabel: 'The parameter delivery setting is incorrect',
field: 'YX0056',
value: ''
},
{
label: '通讯故障',
englabel: 'Communication failures',
field: 'YX0057',
value: ''
},
{
label: '温度异常',
englabel: 'Abnormal temperature',
field: 'YX0058',
value: ''
},
{
label: '跳机',
englabel: 'Jump',
label: 'IGBT OCP故障',
englabel: '',
field: 'YX0059',
value: ''
},
{
label: 'DCDC通讯故障',
englabel: 'DCDC communication failure',
label: '高压侧硬件过压故障',
englabel: '',
field: 'YX0060',
value: ''
},
{
label: '高压侧硬件过流故障',
englabel: '',
field: 'YX0061',
value: ''
},
{
label: 'EMS通讯故障',
englabel: 'EMS communication failure',
label: 'IGBT硬件过流故障',
englabel: '',
field: 'YX0062',
value: ''
},
{
label: '急停故障',
englabel: 'Emergency stop or melt core failure',
label: '24V辅助电源故障',
englabel: '',
field: 'YX0063',
value: ''
},
{
label: '母线不平衡异常',
englabel: 'The bus bar is unbalanced and abnormal',
label: '风扇故障',
englabel: '',
field: 'YX0064',
value: ''
},
{
label: '连接故障',
englabel: '',
field: 'YX0065',
value: ''
},
{
label: '功率模块过温',
englabel: '',
field: 'YX0066',
value: ''
},
{
label: '±15V辅源故障',
englabel: '',
field: 'YX0067',
value: ''
},
{
label: '预充电超时故障',
englabel: '',
field: 'YX0068',
value: ''
},
{
label: '母线半直压过压',
englabel: 'The bus bar is semi-directly pressed and overpressed',
label: '低压侧A相软件过流故障',
englabel: '',
field: 'YX0069',
value: ''
},
{
label: '启动超时',
englabel: 'Startup timed out',
label: '低压侧B相软件过流故障',
englabel: '',
field: 'YX0070',
value: ''
},
{
label: '低压侧C相软件过流故障',
englabel: '',
field: 'YX0071',
value: ''
},
{
label: '低压侧负端软件过流故障',
englabel: '',
field: 'YX0072',
value: ''
},
{
label: '模块内部短路故障',
englabel: '',
field: 'YX0073',
value: ''
},
{
label: '高压侧预充过压故障',
englabel: '',
field: 'YX0074',
value: ''
},
{
label: '高压侧极性反接故障',
englabel: '',
field: 'YX0075',
value: ''
},
{
label: '高压侧短路故障',
englabel: '',
field: 'YX0076',
value: ''
},
{
label: '高压侧运行过压故障',
englabel: '',
field: 'YX0077',
value: ''
},
{
label: '高压侧运行欠压故障',
englabel: '',
field: 'YX0078',
value: ''
},
{
label: '高压侧正负母线不平衡故障',
englabel: '',
field: 'YX0079',
value: ''
},
{
label: '与主机模式设置不匹配',
englabel: '',
field: 'YX0080',
value: ''
},
{
label: '控制板EEROM故障',
englabel: '',
field: 'YX0081',
value: ''
},
{
label: '从机CAN通信故障',
englabel: '',
field: 'YX0082',
value: ''
},
{
label: '与EMS通信故障',
englabel: '',
field: 'YX0083',
value: ''
},
{
label: '绝缘电阻过低故障',
englabel: '',
field: 'YX0084',
value: ''
},
{
label: '低压侧欠压故障',
englabel: '',
field: 'YX0085',
value: ''
},
{
label: '软件瞬态过流故障',
englabel: '',
field: 'YX0087',
value: ''
},
{
label: '低压侧过压故障',
englabel: '',
field: 'YX0088',
value: ''
},
{
label: '低压侧过流故障',
englabel: '',
field: 'YX0089',
value: ''
},
{
label: '低压侧极性反接故障',
englabel: '',
field: 'YX0090',
value: ''
}
]
export const pcsLeftTopData = [
{
label: 'BAT电压',
label: '低压侧电压',
englabel: 'BAT voltage',
field: 'outputPower',
field: 'lowV',
value: '0',
unit: 'V'
},
{
label: 'BAT电流',
field: 'reactivePowerPCS',
label: '高压侧电压',
field: 'highV',
englabel: 'BAT current',
value: '0',
unit: 'A'
},
{
label: 'BUS电压',
label: '低压侧电流',
englabel: 'BUS voltage',
field: 'grid',
field: 'lowI',
value: '0',
unit: 'V'
},
{
label: 'BUS电流',
englabel: 'BUS current',
field: 'volA',
value: '0',
unit: 'A'
}
]
// export const pcsLeftTopData = [
// {
// label: 'Pac',
// field: 'outputPower',
// value: '0',
// unit: 'kW'
// },
// {
// label: 'Qac',
// field: 'reactivePowerPCS',
// value: '0',
// unit: 'kVar'
// },
// {
// label: 'Freq',
// field: 'grid',
// value: '0',
// unit: 'Hz'
// },
// {
// label: 'Uab',
// field: 'volA',
// value: '0',
// unit: 'V'
// },
// {
// label: 'Ubc',
// field: 'volB',
// value: '0',
// unit: 'V'
// },
// {
// label: 'Uca',
// field: 'volC',
// value: '0',
// unit: 'V'
// },
// {
// label: 'Ia',
// field: 'currentA',
// value: '0',
// unit: 'A'
// },
// {
// label: 'Ib',
// field: 'currentB',
// value: '0',
// unit: 'A'
// },
// {
// label: 'Ic',
// field: 'currentC',
// value: '0',
// unit: 'A'
// }
// ]
// export const pcsLeftBottomData = [
// {
// label: 'Udc',
// field: 'dcPower',
// value: '0',
// unit: 'kW'
// },
// {
// label: 'Idc',
// field: 'dcCurrent',
// value: '0',
// unit: 'A'
// },
// {
// label: 'Pdc',
// field: 'dcInputVol',
// value: '0',
// unit: 'V'
// }
// ]
export const pcsLeftBottomData1 = [
{
label: '运行功率',
label: '有功功率',
englabel: 'operating power',
field: 'dcPower',
field: 'pvActivePower',
value: '0',
unit: 'kW'
},
{
label: '直流电压',
englabel: 'DC voltage',
field: 'dcInputVol',
value: '0',
unit: 'V'
},
{
label: '直流电流',
englabel: 'DC current',
field: 'dcCurrent',
value: '0',
unit: 'A'
}
]
export const pcsLeftBottomData2 = [
{
label: '直流功率',
englabel: 'DC power',
field: 'dcPower',
value: '0',
unit: 'kW'
},
{
label: '直流电压',
englabel: 'DC voltage',
field: 'dcInputVol',
value: '0',
unit: 'V'
},
{
label: '直流电流',
englabel: 'DC current',
field: 'dcCurrent',
value: '0',
unit: 'A'
},
{
label: 'pcs模块温度',
englabel: 'PCS module temperature',
field: 'radiatorTemperature',
value: '0',
unit: '℃'
}
]
export const pcsCenterDataStatus = [

View File

@ -78,6 +78,7 @@
<el-table-column prop="name" label="电站名称" />
<el-table-column prop="ratePower" label="额定功率(kW)" show-overflow-tooltip />
<el-table-column prop="capacity" label="额定容量(kWh)" show-overflow-tooltip />
<el-table-column prop="pvPower" label="光伏功率(kW)" show-overflow-tooltip />
<el-table-column prop="address" label="地址" />
<el-table-column prop="cabinNum" label="舱体数量" />
<el-table-column prop="gridTime" label="并网时间" show-overflow-tooltip />
@ -337,7 +338,6 @@
<div v-for="(item, index) in snList" :key="index" class="sn-box">
<el-input v-model="item.desc" maxlength="50" placeholder="请输入SN编码" />
<i v-if="index === 0" class="el-icon-circle-plus-outline operate-i" @click="addSn" />
<i v-if="index > 0" class="el-icon-remove-outline operate-i" @click="delSn(item, index)" />
</div>
</el-form-item>
@ -395,7 +395,7 @@
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="是否接入光伏">
<el-select v-model="formModel.inverterFlag" style="width: 100%" placeholder="请选择">
<el-select v-model="formModel.inverterFlag" style="width: 100%" placeholder="请选择" @change="selectInverterFlag">
<el-option
v-for="item in inverterFlagList"
:key="item.value"
@ -405,6 +405,17 @@
</el-select>
</el-form-item>
</el-col>
<el-col v-show="formModel.inverterFlag === 1" :span="12">
<el-form-item label="光伏功率(kWh)" prop="pvPower">
<el-input-number
v-model="formModel.pvPower"
:controls="false"
:min="null"
style="width: 100%"
placeholder="请输入光伏功率"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="用电客户" prop="customerType">
<el-select
@ -451,7 +462,6 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="卡号" prop="iccId">
<el-select
@ -659,6 +669,7 @@ export default {
cupboardType: null,
planVersion: null,
inverterFlag: 0,
pvPower: '',
electricityType: null,
customerType: null,
voltageLevel: null,
@ -905,6 +916,7 @@ export default {
isDailyCount: 0,
topologyType: 1,
inverterFlag: 0,
pvPower: '',
electricityType: null,
customerType: null,
voltageLevel: null,
@ -982,6 +994,11 @@ export default {
if (this.formModel.flowMonitorId) {
this.isCanSelectPackage = false
}
if (this.formRules.inverterFlag === 1) {
this.formRules['pvPower'] = [{ required: true, message: '请输入光伏额定功率', trigger: 'blur' }]
} else {
delete this.formRules.pvPower
}
this.getEditAddressResolution()
this.formLoading = false
},
@ -1001,6 +1018,13 @@ export default {
)
this.formModel.typeName = this.stationTypeList[index].label
},
selectInverterFlag(e) {
if (e === 0) {
delete this.formRules.pvPower
} else {
this.formRules['pvPower'] = [{ required: true, message: '请输入光伏额定功率', trigger: 'blur' }]
}
},
// 保存
handleTosubmit: function() {
const fileList = []
@ -1013,6 +1037,7 @@ export default {
})
this.formModel.pictureIds = fileList
this.formModel.logoPictureId = fileListLogo[0]
this.formModel.pvPower = this.formModel.inverterFlag === 0 ? '' : this.formModel.pvPower
const snDetail = []
let flag = 0
this.snList.forEach((sn, index) => {

View File

@ -14,9 +14,9 @@
v-loading="load_data_org"
class="filter-tree"
node-key="id"
element-loading-text="正在加载组织结构"
element-loading-text="正在加载组织结构"
:data="data2"
highlight-current
highlight-currentzhge
:default-expanded-keys="expandedKeys"
:props="defaultProps"
:expand-on-click-node="true"