修改光伏pv8pcs4柴发拓扑图电流流向逻辑

This commit is contained in:
huangjp
2026-03-12 10:42:20 +08:00
parent 0fcb882e5d
commit 76be37f361
3 changed files with 483 additions and 104 deletions

View File

@ -981,7 +981,7 @@
}
],
pointSpeed: 1, // 移动速度(像素/帧)
pointSpeed: 1.5, // 移动速度(像素/帧)
kWValues: {
pv1:null,
pv2:null,
@ -994,7 +994,11 @@
pcs1:null,
pcs2:null,
pcs3:null,
pcs4:null
pcs4:null,
bms1:null,
bms2:null,
bms3:null,
bms4:null
}
}
@ -1247,42 +1251,34 @@
this.movingPoints.forEach(point => (point.isActive = false,point.isMove = false,point.currentStep = 0,point.x = point.path[0].x,point.y = point.path[0].y));
this.stationId = val
this.textCanvasData.splice(10)
const api = [ this.getpv1(), this.getpv2(), this.getPcs1(),
this.getpv3(), this.getpv4(), this.getPcs2(),
this.getpv5(), this.getpv6(), this.getPcs3(),
this.getpv7(), this.getpv8(), this.getPcs4(),
const api = [ this.getpv1(), this.getpv2(), this.getPcs1(), this.getBms1(),
this.getpv3(), this.getpv4(), this.getPcs2(), this.getBms2(),
this.getpv5(), this.getpv6(), this.getPcs3(), this.getBms3(),
this.getpv7(), this.getpv8(), this.getPcs4(), this.getBms4(),
this.getacdcCenter(), this.getAmmeter()
]
Promise.all(api).finally((result) => {
// 获取三个 kW 值
const {pv1,pv2,pv3,pv4,pv5,pv6,pv7,pv8,pcs1,pcs2,pcs3,pcs4} = this.kWValues;
const {pv1,pv2,pv3,pv4,pv5,pv6,pv7,pv8,pcs1,pcs2,pcs3,pcs4,bms1,bms2,bms3,bms4} = this.kWValues;
const pvvalues = [pv1,pv2,pv3,pv4,pv5,pv6,pv7,pv8];
const pcsvalues = [pcs1,pcs2,pcs3,pcs4];
const bmsvalues = [bms1,bms2,bms3,bms4];
const pvallZero = pvvalues.every(v => v === 0);
const anyPositive = pvvalues.some(v => v > 1);
const anyNegative = pvvalues.some(v => v < 0);
const pcsanyNegative = pvvalues.some(v => v < 15);
const pcsValuesGreater = pcsvalues.some(v => v > 0);
const pcsValuesLess = pcsvalues.some(v => v < 0);
// 重置所有点(确保干净)
this.movingPoints.forEach(p => (p.isActive = false));
// 条件3全部为0 → 只显示点1
if (pvallZero) {
this.movingPoints.find(p => p.id === 'point-1').isActive = true;
if(pcsanyNegative){
this.movingPoints.find(p => p.id === 'point-2').isActive = true;
this.movingPoints.find(p => p.id === 'point-4').isActive = true;
this.movingPoints.find(p => p.id === 'point-5').isActive = true;
this.movingPoints.find(p => p.id === 'point-6').isActive = true;
this.movingPoints.find(p => p.id === 'point-7').isActive = true;
}
} else {
// 条件1任一大于0 → 点6运动
if (anyPositive) {
this.movingPoints.find(p => p.id === 'point-3').isActive = true;
}
// 再设置其他点显示逻辑
this.updatePvPcsPoints();
if(pcsValuesLess){
this.movingPoints.find(p => p.id === 'point-3').isActive = true;
}
if(pcsValuesGreater && ((pv1 + pv2) < pcs1 || (pv3 + pv4) < pcs2 || (pv5 + pv6) < pcs3 || (pv7 + pv8) < pcs4)){
this.movingPoints.find(p => p.id === 'point-2').isActive = true;
}
// 设置其他点显示逻辑
this.updatePvPcsPoints();
this.canvasData = [...this.textCanvasData, ...this.imageCanvasData, ...this
.lineCanvasData, ...this.circleCanvasData
]
@ -1360,30 +1356,101 @@
},
updatePvPcsPoints() {
const {pv1,pv2,pv3,pv4,pv5,pv6,pv7,pv8,pcs1,pcs2,pcs3,pcs4} = this.kWValues;
const {pv1,pv2,pv3,pv4,pv5,pv6,pv7,pv8,pcs1,pcs2,pcs3,pcs4,bms1,bms2,bms3,bms4} = this.kWValues;
// 处理点4、5、6、7
const point4 = this.movingPoints.find(p => p.id === 'point-4');
const point5 = this.movingPoints.find(p => p.id === 'point-5');
const point6 = this.movingPoints.find(p => p.id === 'point-6');
const point7 = this.movingPoints.find(p => p.id === 'point-7');
// 处理左边点8、9、10、11、12
const point8 = this.movingPoints.find(p => p.id === 'point-8');
const point9 = this.movingPoints.find(p => p.id === 'point-9');
const point10 = this.movingPoints.find(p => p.id === 'point-10');
const point11 = this.movingPoints.find(p => p.id === 'point-11');
const point12 = this.movingPoints.find(p => p.id === 'point-12');
if(pv1 > 1){
point8.isActive = true;
point9.isActive = true;
}else if (pv1 < 1){
point8.isActive = false;
point9.isActive = false;
}
if(pv2 > 1){
point10.isActive = true;
point11.isActive = true;
}else if (pv2 < 1){
point10.isActive = false;
point11.isActive = false;
}
if(pcs1 > 5){
point12.isActive = true;
if(pcs1 > 0){ //正充
if((pv1 + pv2) < pcs1){ // 光伏小于pcs功率
point4.isActive = true;
point9.isActive = false;
point11.isActive = false;
if(pv1 > 0){
point8.isActive = true;
}else{
point8.isActive = false;
}
if(pv2 > 0){
point10.isActive = true;
}else{
point10.isActive = false;
}
point12.isActive = false;
}else if((pv1 + pv2) > pcs1){ // 光伏大于pcs功率
point4.isActive = false;
if(pv1 > 0){
point8.isActive = true;
point9.isActive = true;
}else{
point8.isActive = false;
point9.isActive = false;
}
if(pv2 > 0){
point10.isActive = true;
point11.isActive = true;
}else{
point10.isActive = false;
point11.isActive = false;
}
point12.isActive = false;
}else{
point4.isActive = false;
point8.isActive = true;
point9.isActive = false;
point10.isActive = true;
point11.isActive = false;
point12.isActive = false;
}
}else if(pcs1 < 0){ //负放 Math.abs(num)
if((pv1 + pv2) < Math.abs(pcs1)){ // 光伏小于pcs功率
if(pv1 > 0){ //光伏有功率
point8.isActive = false;
point9.isActive = true;
}else{
point8.isActive = false;
point9.isActive = false;
}
if(pv2 > 0){ //光伏有功率
point10.isActive = false;
point11.isActive = true;
}else{
point10.isActive = false;
point11.isActive = false;
}
point12.isActive = true;
}else if((pv1 + pv2) > Math.abs(pcs1)){ // 光伏大于pcs功率
if(pv1 > 0){ //光伏有功率
point8.isActive = true;
point9.isActive = true;
}else{
point8.isActive = false;
point9.isActive = false;
}
if(pv2 > 0){ //光伏有功率
point10.isActive = true;
point11.isActive = true;
}else{
point10.isActive = false;
point11.isActive = false;
}
point12.isActive = false;
}
point4.isActive = false;
}else{
point4.isActive = false;
point8.isActive = false;
point9.isActive = false;
point10.isActive = false;
point11.isActive = false;
point12.isActive = false;
}
// 处理左边点13、14、15、16、17
const point13 = this.movingPoints.find(p => p.id === 'point-13');
@ -1391,22 +1458,89 @@
const point15 = this.movingPoints.find(p => p.id === 'point-15');
const point16 = this.movingPoints.find(p => p.id === 'point-16');
const point17 = this.movingPoints.find(p => p.id === 'point-17');
if(pv3 > 1){
point13.isActive = true;
point14.isActive = true;
}else if (pv3 < 1){
point13.isActive = false;
point14.isActive = false;
}
if(pv4 > 1){
point15.isActive = true;
point16.isActive = true;
}else if (pv4 < 1){
point15.isActive = false;
point16.isActive = false;
}
if(pcs2 > 5){
point17.isActive = true;
if(pcs2 > 0){ //正充
if((pv3 + pv4) < pcs2){ // 光伏小于pcs功率
point5.isActive = true;
point14.isActive = false;
point16.isActive = false;
if(pv3 > 0){
point13.isActive = true;
}else{
point13.isActive = false;
}
if(pv4 > 0){
point15.isActive = true;
}else{
point15.isActive = false;
}
point17.isActive = false;
}else if((pv3 + pv4) > pcs2){ // 光伏大于pcs功率
point5.isActive = false;
if(pv3 > 0){
point13.isActive = true;
point14.isActive = true;
}else{
point13.isActive = false;
point14.isActive = false;
}
if(pv4 > 0){
point15.isActive = true;
point16.isActive = true;
}else{
point15.isActive = false;
point16.isActive = false;
}
point17.isActive = false;
}else{
point5.isActive = false;
point13.isActive = true;
point14.isActive = false;
point15.isActive = true;
point16.isActive = false;
point17.isActive = false;
}
}else if(pcs2 < 0){ //负放 Math.abs(num)
if((pv3 + pv4) < Math.abs(pcs2)){ // 光伏小于pcs功率
if(pv3 > 0){ //光伏有功率
point13.isActive = false;
point14.isActive = true;
}else{
point13.isActive = false;
point14.isActive = false;
}
if(pv4 > 0){ //光伏有功率
point15.isActive = false;
point16.isActive = true;
}else{
point15.isActive = false;
point16.isActive = false;
}
point17.isActive = true;
}else if((pv3 + pv4) > Math.abs(pcs2)){ // 光伏大于pcs功率
if(pv3 > 0){ //光伏有功率
point13.isActive = true;
point14.isActive = true;
}else{
point13.isActive = false;
point14.isActive = false;
}
if(pv4 > 0){ //光伏有功率
point15.isActive = true;
point16.isActive = true;
}else{
point15.isActive = false;
point16.isActive = false;
}
point17.isActive = false;
}
point5.isActive = false;
}else{
point5.isActive = false;
point13.isActive = false;
point14.isActive = false;
point15.isActive = false;
point16.isActive = false;
point17.isActive = false;
}
// 处理左边点18、19、20、21、22
const point18 = this.movingPoints.find(p => p.id === 'point-18');
@ -1414,22 +1548,89 @@
const point20 = this.movingPoints.find(p => p.id === 'point-20');
const point21 = this.movingPoints.find(p => p.id === 'point-21');
const point22 = this.movingPoints.find(p => p.id === 'point-22');
if(pv5 > 1){
point18.isActive = true;
point19.isActive = true;
}else if (pv5 < 1){
point18.isActive = false;
point19.isActive = false;
}
if(pv6 > 1){
point20.isActive = true;
point21.isActive = true;
}else if (pv6 < 1){
point20.isActive = false;
point21.isActive = false;
}
if(pcs3 > 5){
point22.isActive = true;
if(pcs3 > 0){ //正充
if((pv5 + pv6) < pcs3){ // 光伏小于pcs功率
point6.isActive = true;
point19.isActive = false;
point21.isActive = false;
if(pv5 > 0){
point18.isActive = true;
}else{
point18.isActive = false;
}
if(pv6 > 0){
point20.isActive = true;
}else{
point20.isActive = false;
}
point22.isActive = false;
}else if((pv5 + pv6) > pcs3){ // 光伏大于pcs功率
point6.isActive = false;
if(pv5 > 0){
point18.isActive = true;
point19.isActive = true;
}else{
point19.isActive = false;
point20.isActive = false;
}
if(pv6 > 0){
point20.isActive = true;
point21.isActive = true;
}else{
point20.isActive = false;
point21.isActive = false;
}
point22.isActive = false;
}else{
point6.isActive = false;
point18.isActive = true;
point19.isActive = false;
point20.isActive = true;
point21.isActive = false;
point22.isActive = false;
}
}else if(pcs3 < 0){ //负放 Math.abs(num)
if((pv5 + pv6) < Math.abs(pcs3)){ // 光伏小于pcs功率
if(pv5 > 0){ //光伏有功率
point18.isActive = true;
point19.isActive = false;
}else{
point18.isActive = false;
point19.isActive = false;
}
if(pv6 > 0){ //光伏有功率
point20.isActive = true;
point21.isActive = false;
}else{
point20.isActive = false;
point21.isActive = false;
}
point22.isActive = true;
}else if((pv5 + pv6) > Math.abs(pcs3)){ // 光伏大于pcs功率
if(pv5 > 0){ //光伏有功率
point18.isActive = true;
point19.isActive = true;
}else{
point18.isActive = false;
point19.isActive = false;
}
if(pv6 > 0){ //光伏有功率
point20.isActive = true;
point21.isActive = true;
}else{
point20.isActive = false;
point21.isActive = false;
}
point22.isActive = false;
}
point6.isActive = false;
}else{
point6.isActive = false;
point18.isActive = false;
point19.isActive = false;
point20.isActive = false;
point21.isActive = false;
point22.isActive = false;
}
// 处理左边点23、24、25、26、27
const point23 = this.movingPoints.find(p => p.id === 'point-23');
@ -1437,23 +1638,91 @@
const point25 = this.movingPoints.find(p => p.id === 'point-25');
const point26 = this.movingPoints.find(p => p.id === 'point-26');
const point27 = this.movingPoints.find(p => p.id === 'point-27');
if(pv7 > 1){
point23.isActive = true;
point24.isActive = true;
}else if (pv7 < 1){
point23.isActive = false;
point24.isActive = false;
}
if(pv8 > 1){
point25.isActive = true;
point26.isActive = true;
}else if (pv8 < 1){
point25.isActive = false;
point26.isActive = false;
}
if(pcs4 > 5){
point27.isActive = true;
if(pcs4 > 0){ //正充
if((pv7 + pv8) < pcs4){ // 光伏小于pcs功率
point7.isActive = true;
point24.isActive = false;
point26.isActive = false;
if(pv7 > 0){
point23.isActive = true;
}else{
point23.isActive = false;
}
if(pv8 > 0){
point25.isActive = true;
}else{
point25.isActive = false;
}
point27.isActive = false;
}else if((pv7 + pv8) > pcs4){ // 光伏大于pcs功率
point7.isActive = false;
if(pv7 > 0){
point23.isActive = true;
point24.isActive = true;
}else{
point23.isActive = false;
point24.isActive = false;
}
if(pv8 > 0){
point25.isActive = true;
point26.isActive = true;
}else{
point25.isActive = false;
point26.isActive = false;
}
point27.isActive = false;
}else{
point7.isActive = false;
point23.isActive = true;
point24.isActive = false;
point25.isActive = true;
point26.isActive = false;
point27.isActive = false;
}
}else if(pcs4 < 0){ //负放 Math.abs(num)
if((pv7 + pv8) < Math.abs(pcs4)){ // 光伏小于pcs功率
if(pv7 > 0){ //光伏有功率
point23.isActive = false;
point24.isActive = true;
}else{
point23.isActive = false;
point24.isActive = false;
}
if(pv8 > 0){ //光伏有功率
point25.isActive = false;
point26.isActive = true;
}else{
point25.isActive = false;
point26.isActive = false;
}
point27.isActive = true;
}else if((pv7 + pv8) > Math.abs(pcs4)){ // 光伏大于pcs功率
if(pv7 > 0){ //光伏有功率
point23.isActive = true;
point24.isActive = true;
}else{
point23.isActive = false;
point24.isActive = false;
}
if(pv8 > 0){ //光伏有功率
point25.isActive = true;
point26.isActive = true;
}else{
point25.isActive = false;
point26.isActive = false;
}
point27.isActive = false;
}
point7.isActive = false;
}else{
point7.isActive = false;
point23.isActive = false;
point24.isActive = false;
point25.isActive = false;
point26.isActive = false;
point27.isActive = false;
}
},
@ -1612,6 +1881,33 @@
stationId: this.stationId,
pageLocation: 'triad-pcs-1'
})
.then((res) => {
if (res.data && res.data.length) {
res.data.forEach((item, index) => {
if (item.name.includes('kW')) {
const value = parseFloat(item.value);
self.kWValues.pcs1 = value;
}
})
} else {
this.kWValues.pcs1 = 0; // 没数据视为 0
}
resolve()
}).catch(() => {
this.kWValues.pcs1 = 0; // 出错也视为 0
resolve();
})
})
},
getBms1() {
let self = this;
return new Promise((resolve, reject) => {
self.$u.api.homePageData
.GetDynamicConfig({
stationId: this.stationId,
pageLocation: 'triad-bms-1'
})
.then((res) => {
if (res.data && res.data.length) {
this.textCanvasData.push({
@ -1641,7 +1937,7 @@
res.data.forEach((item, index) => {
if (item.name.includes('SOC')) {
const value = parseFloat(item.value);
this.kWValues.pcs1 = value;
this.kWValues.bms1 = value;
}
this.textCanvasData.push({
type: "text",
@ -1657,11 +1953,11 @@
})
})
} else {
this.kWValues.pcs1 = 0; // 没数据视为 0
this.kWValues.bms1 = 0; // 没数据视为 0
}
resolve()
}).catch(() => {
this.kWValues.pcs1 = 0; // 出错也视为 0
this.kWValues.bms1 = 0; // 出错也视为 0
resolve();
})
})
@ -1801,6 +2097,33 @@
stationId: this.stationId,
pageLocation: 'triad-pcs-2'
})
.then((res) => {
if (res.data && res.data.length) {
res.data.forEach((item, index) => {
if (item.name.includes('kW')) {
const value = parseFloat(item.value);
self.kWValues.pcs2 = value;
}
})
} else {
this.kWValues.pcs2 = 0; // 没数据视为 0
}
resolve()
}).catch(() => {
this.kWValues.pcs2 = 0; // 出错也视为 0
resolve();
})
})
},
getBms2() {
let self = this;
return new Promise((resolve, reject) => {
self.$u.api.homePageData
.GetDynamicConfig({
stationId: this.stationId,
pageLocation: 'triad-bms-2'
})
.then((res) => {
if (res.data && res.data.length) {
this.textCanvasData.push({
@ -1830,7 +2153,7 @@
res.data.forEach((item, index) => {
if (item.name.includes('SOC')) {
const value = parseFloat(item.value);
this.kWValues.pcs2 = value;
this.kWValues.bms2 = value;
}
this.textCanvasData.push({
type: "text",
@ -1846,11 +2169,11 @@
})
})
} else {
this.kWValues.pcs2 = 0; // 没数据视为 0
this.kWValues.bms2 = 0; // 没数据视为 0
}
resolve()
}).catch(() => {
this.kWValues.pcs2 = 0; // 出错也视为 0
this.kWValues.bms2 = 0; // 出错也视为 0
resolve();
})
})
@ -1990,6 +2313,33 @@
stationId: this.stationId,
pageLocation: 'triad-pcs-3'
})
.then((res) => {
if (res.data && res.data.length) {
res.data.forEach((item, index) => {
if (item.name.includes('kW')) {
const value = parseFloat(item.value);
self.kWValues.pcs3 = value;
}
})
} else {
this.kWValues.pcs3 = 0; // 没数据视为 0
}
resolve()
}).catch(() => {
this.kWValues.pcs3 = 0; // 出错也视为 0
resolve();
})
})
},
getBms3() {
let self = this;
return new Promise((resolve, reject) => {
self.$u.api.homePageData
.GetDynamicConfig({
stationId: this.stationId,
pageLocation: 'triad-bms-3'
})
.then((res) => {
if (res.data && res.data.length) {
this.textCanvasData.push({
@ -2019,7 +2369,7 @@
res.data.forEach((item, index) => {
if (item.name.includes('SOC')) {
const value = parseFloat(item.value);
this.kWValues.pcs3 = value;
this.kWValues.bms3 = value;
}
this.textCanvasData.push({
type: "text",
@ -2035,11 +2385,11 @@
})
})
} else {
this.kWValues.pcs3 = 0; // 没数据视为 0
this.kWValues.bms3 = 0; // 没数据视为 0
}
resolve()
}).catch(() => {
this.kWValues.pcs3 = 0; // 出错也视为 0
this.kWValues.bms3 = 0; // 出错也视为 0
resolve();
})
})
@ -2179,6 +2529,33 @@
stationId: this.stationId,
pageLocation: 'triad-pcs-4'
})
.then((res) => {
if (res.data && res.data.length) {
res.data.forEach((item, index) => {
if (item.name.includes('kW')) {
const value = parseFloat(item.value);
self.kWValues.pcs4 = value;
}
})
} else {
this.kWValues.pcs4 = 0; // 没数据视为 0
}
resolve()
}).catch(() => {
this.kWValues.pcs4 = 0; // 出错也视为 0
resolve();
})
})
},
getBms4() {
let self = this;
return new Promise((resolve, reject) => {
self.$u.api.homePageData
.GetDynamicConfig({
stationId: this.stationId,
pageLocation: 'triad-bms-4'
})
.then((res) => {
if (res.data && res.data.length) {
this.textCanvasData.push({
@ -2224,11 +2601,11 @@
})
})
} else {
this.kWValues.pcs4 = 0; // 没数据视为 0
this.kWValues.bms4 = 0; // 没数据视为 0
}
resolve()
}).catch(() => {
this.kWValues.pcs4 = 0; // 出错也视为 0
this.kWValues.bms4 = 0; // 出错也视为 0
resolve();
})
})

View File

@ -53,8 +53,9 @@
<runda215 v-else-if="topologyType === 12" ref="tuopu" />
<third v-else-if="topologyType === 13" ref="tuopu" />
<mdPviese v-else-if="topologyType === 14" ref="tuopu" />
<pv8FourthTopCenter v-else-if="topologyType === 1 && inverterFlag === 1 && pvTopologyType === 5" ref="tuopu" />
<pv2AndStorageSts v-else-if="topologyType === 1 && inverterFlag === 1 && pvTopologyType === 4" ref="tuopu" />
<pv8FourthTopCenter v-else-if="topologyType === 1 && inverterFlag === 1 && pvTopologyType === 5" ref="tuopu" />
<pv8FourthTopCenter v-else-if="topologyType === 1 && inverterFlag === 1 && pvTopologyType === 6" ref="tuopu" />
<!-- <third v-else-if="topologyType === 1 && inverterFlag === 1 && pvTopologyType === 4" ref="tuopu" /> -->
<!-- <cixi v-else-if="topologyType === 1 && inverterFlag === 1 && pvTopologyType === 3" ref="tuopu" /> -->
<!-- <ceshiL v-else-if="topologyType === 1 && inverterFlag === 1 && pvTopologyType === 2" ref="tuopu" /> -->
@ -216,7 +217,8 @@
{name:'pv1AndStorage_sts_261',value:2},
{name:'pv2AndStorage_261',value:3},
{name:'pv2AndStorage_sts_261',value:4},
{name:'pv8FourthTopCenter',value:5}
{name:'pv8FourthTopCenter',value:5},
{name:'pv8FourthDieselTopCenter',value:6}
],
pvTopologyType:0,
society: [{