六国语言配置,马来西亚项目拓扑图配置

This commit is contained in:
huangjp
2026-02-02 08:43:41 +08:00
parent 6f22a10e64
commit 983a638769
168 changed files with 28874 additions and 3289 deletions

View File

@ -352,7 +352,7 @@ export default {
process.env.VUE_APP_BASE_API + '/flow/deviceColDefine/importExcel',
headers: {
authorization: getToken(),
lang: sessionStorage.getItem('language') === 'en' ? 'en_US' : 'zh_CN'
lang: sessionStorage.getItem('language') ? sessionStorage.getItem('language') : 'zh_CN'
},
paramsData: {},
fileList: [],

View File

@ -157,7 +157,7 @@ export default {
process.env.VUE_APP_BASE_API + '/business/topologyAttribute/importExcel',
headers: {
authorization: getToken(),
lang: sessionStorage.getItem('language') === 'en' ? 'en_US' : 'zh_CN'
lang: sessionStorage.getItem('language') ? sessionStorage.getItem('language') : 'zh_CN'
},
fileList: [],
downloadIng: false,

View File

@ -0,0 +1,793 @@
<template>
<ItemBox :title="$t('dashboard.stationTopo')" style="min-height: 560px;">
<div ref="svgLine" class="center-box">
<div v-loading="loading">
<svg
version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:space="preserve"
class="circle-load-rect-svg"
viewBox="0 0 800 500"
>
<defs>
<defs>
<radialGradient id="RadialGradient1">
<stop offset="0%" stop-color="#fff" />
<stop offset="30%" stop-color="#0171c1" />
<stop offset="50%" stop-color="#035088" />
<stop offset="100%" stop-color="#02395a" />
</radialGradient>
</defs>
<marker
id="markerCircle"
markerWidth="15"
markerHeight="15"
refX="5"
refY="5"
>
<circle
cx="5"
cy="5"
r="5"
style="stroke: none; fill: url(#RadialGradient1)"
/>
</marker>
<marker
id="markerArrow"
markerWidth="13"
markerHeight="13"
refX="2"
refY="6"
orient="auto"
>
<path d="M2,2 L2,11 L10,6 L2,2" style="fill: black" />
</marker>
</defs>
<!-- //线条 -->
<!-- top -->
<polyline
points="120,50 650,50"
fill="none"
class="g-rect-path"
stroke="#0094FF"
stroke-dasharray="3 3"
/>
<!-- <rect
x="154"
y="78"
width="231"
height="4"
:style="{ fill: 'rgba(100,100,100,0)', stroke: 'transparent',cursor: 'pointer' }"
@click="lookDeviceDetail('line-top-left')"
/> -->
<!-- <polyline
points="385,80 600,80"
fill="none"
class="g-rect-path"
stroke="#0094FF"
stroke-dasharray="3 3"
/> -->
<!-- <rect
x="385"
y="78"
width="215"
height="4"
:style="{ fill: 'rgba(100,100,100,0)', stroke: 'transparent',cursor: 'pointer' }"
@click="lookDeviceDetail('line-top-right')"
/> -->
<!-- center -->
<polyline
points="385,50 385,283"
fill="none"
class="g-rect-path"
stroke="#0094FF"
stroke-dasharray="3 3"
/>
<!-- <rect
x="383"
y="80"
width="4"
height="281"
:style="{ fill: 'rgba(100,100,100,0)', stroke: 'transparent',cursor: 'pointer' }"
@click="lookDeviceDetail('line-bottom-center')"
/> -->
<polyline
points="385,100 460,100"
fill="none"
class="g-rect-path"
stroke="#0094FF"
stroke-dasharray="3 3"
/>
<!-- bottom -->
<polyline
points="175,283 385,283"
fill="none"
class="g-rect-path"
stroke="#0094FF"
stroke-dasharray="3 3"
/>
<polyline
points="175,283 175,417"
fill="none"
class="g-rect-path"
stroke="#0094FF"
stroke-dasharray="3 3"
/>
<!-- <rect
x="104"
y="361"
width="283"
height="4"
:style="{ fill: 'rgba(100,100,100,0)', stroke: 'transparent',cursor: 'pointer' }"
@click="lookDeviceDetail('line-bottom-left')"
/> -->
<polyline
points="385,283 603,283"
fill="none"
class="g-rect-path"
stroke="#0094FF"
stroke-dasharray="3 3"
/>
<polyline
points="603,283 603,417"
fill="none"
class="g-rect-path"
stroke="#0094FF"
stroke-dasharray="3 3"
/>
<!-- <rect
x="383"
y="361"
width="272"
height="4"
:style="{ fill: 'rgba(100,100,100,0)', stroke: 'transparent',cursor: 'pointer' }"
@click="lookDeviceDetail('line-bottom-right')"
/> -->
<!-- top -->
<circle
cx="120"
cy="50"
r="8"
style="stroke: none; fill: url(#RadialGradient1)"
/>
<circle
cx="650"
cy="50"
r="8"
style="stroke: none; fill: url(#RadialGradient1)"
/>
<!-- 动点 -->
<circle
cx="120"
cy="50"
r="8"
style="stroke: none; fill: url(#RadialGradient1)"
>
<animateMotion
repeatCount="indefinite"
dur="4s"
begin="0s"
:path="dotData.lineTopLeft"
/>
</circle>
<circle
cx="385"
cy="283"
r="8"
style="stroke: none; fill: url(#RadialGradient1)"
>
<animateMotion
repeatCount="indefinite"
dur="4s"
begin="2s"
:path="dotData.lineCenter"
/>
</circle>
<circle
cx="650"
cy="50"
r="8"
style="stroke: none; fill: url(#RadialGradient1)"
>
<animateMotion
repeatCount="indefinite"
dur="4s"
begin="0s"
:path="dotData.lineTopRight"
/>
</circle>
<!-- bottom -->
<circle
cx="175"
cy="417"
r="8"
style="stroke: none; fill: url(#RadialGradient1)"
/>
<circle
cx="385"
cy="283"
r="8"
style="stroke: none; fill: url(#RadialGradient1)"
/>
<circle
cx="603"
cy="417"
r="8"
style="stroke: none; fill: url(#RadialGradient1)"
/>
<circle
cx="385"
cy="283"
r="8"
style="stroke: none; fill: url(#RadialGradient1)"
>
<animateMotion
repeatCount="indefinite"
dur="4s"
begin="2s"
:path="dotData.lineBottomLeft"
/>
</circle>
<circle
cx="175"
cy="417"
r="8"
style="stroke: none; fill: url(#RadialGradient1)"
>
<animateMotion
repeatCount="indefinite"
dur="4s"
begin="2s"
:path="dotData.lineBottomLeft"
/>
</circle>
<circle
cx="603"
cy="417"
r="8"
style="stroke: none; fill: url(#RadialGradient1)"
>
<animateMotion
repeatCount="indefinite"
dur="4s"
begin="2s"
:path="dotData.lineBottomRight"
/>
</circle>
<!-- 图片和文字 -->
<!-- 市电 -->
<image
:xlink:href="configData.grid"
x="60"
y="20"
width="50"
height="70"
/>
<!-- <text x="90" y="160" fill="#ffffff" font-size="14"> {{ $t("dashboard.grid") }}</text> -->
<!-- {{ $t("dashboard.load") }} -->
<image
:xlink:href="configData.house"
x="660"
y="20"
width="50"
height="70"
/>
<!-- <text x="645" y="160" fill="#ffffff" font-size="14"> {{ $t("dashboard.load") }}</text> -->
<!-- 1PV -->
<image
:xlink:href="frameImg"
x="145"
y="430"
width="50"
height="50"
style="cursor: pointer;"
@click="lookDeviceDetail('triad-pcs-left')"
/>
<!-- DCDC -->
<image
:xlink:href="DCImg"
x="157"
y="330"
width="35"
height="35"
/>
<!-- <text x="86" y="490" fill="#ffffff" font-size="14">1#{{ $t("dashboard.cabinet") }}</text> -->
<!-- 2PV -->
<!-- <image
:xlink:href="frameImg"
x="355"
y="430"
width="50"
height="50"
style="cursor: pointer;"
@click="lookDeviceDetail('triad-pcs-center')"
/> -->
<!-- DCDC -->
<!-- <image
:xlink:href="DCImg"
x="367"
y="330"
width="35"
height="35"
/> -->
<!-- <text x="360" y="490" fill="#ffffff" font-size="14">
2#{{ $t("dashboard.cabinet") }}
</text> -->
<!-- 3 -->
<image
:xlink:href="configData.pcs2"
x="574"
y="430"
width="50"
height="50"
style="cursor: pointer;"
@click="lookDeviceDetail('triad-pcs-right')"
/>
<!-- <text x="614" y="490" fill="#ffffff" font-size="14">3#{{ $t("dashboard.cabinet") }}</text> -->
<!-- STS -->
<image
:xlink:href="STSImg"
x="365"
y="130"
width="40"
height="40"
style="cursor: pointer;"
@click="lookDeviceDetail('triad-sts-center')"
/>
<!-- AC/DC -->
<image
:xlink:href="ACDCImg"
x="368"
y="200"
width="35"
height="35"
style="cursor: pointer;"
@click="lookDeviceDetail('triad-acdc-center')"
/>
<!-- {{ $t("dashboard.ammeter") }} -->
<image
:xlink:href="ammeterImg"
x="450"
y="80"
width="70"
height="42"
style="cursor: pointer;"
@click="lookDeviceDetail('triad-ammeter')"
/>
<!-- 瞬时总有功 -->
<g v-for="(item,index) in ammeterData" :key="item.id">
<text x="520" :y="105 + ( 20 * index)" fill="#ffffff" font-size="14">
{{ item.name }}
</text>
<text :x="countChineseAndEnglishCharacters(item.name,lang === 'zh_CN'?510:470)" :y="105 + ( 20 * index)" fill="#FFB800" font-size="14">
{{ item.value }}
</text>
</g>
<!-- STS -->
<g v-for="(item,index) in stsCenterData" :key="item.id">
<text x="415" :y="153 + ( 20 * index)" fill="#ffffff" font-size="14">
{{ item.name }}
</text>
<text :x="countChineseAndEnglishCharacters(item.name,lang === 'zh_CN'?415:360)" :y="153 + ( 20 * index)" fill="#FFB800" font-size="14">
{{ item.value }}
</text>
</g>
<!-- ACDC -->
<g v-for="(item,index) in acdcCenterData" :key="item.id">
<text x="415" :y="213 + ( 20 * index)" fill="#ffffff" font-size="14">
{{ item.name }}
</text>
<text :x="countChineseAndEnglishCharacters(item.name,lang === 'zh_CN'?415:375)" :y="213 + ( 20 * index)" fill="#FFB800" font-size="14">
{{ item.value }}
</text>
</g>
<!-- 左侧 1PV -->
<g v-for="(item,index) in pcsLeftData" :key="item.id">
<foreignObject
:x="200"
:y="450 + (20 * index) - 14"
width="150"
height="20"
style="overflow: visible;"
>
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: center;">
<el-tooltip
:content="item.name"
placement="top"
:open-delay="400"
effect="dark"
popper-class="svg-tooltip"
>
<span style="font-size: 14px;font-family: sans-serif;color: #ffffff;max-width: 120px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis">
{{ truncateText(item.name, 120) }}
</span>
</el-tooltip>
</div>
</foreignObject>
<text :x="calculateValueX(item.name, 200)" :y="450 + ( 20 * index)" fill="#FFB800" font-size="14">
{{ item.value }}
</text>
</g>
<!-- 右侧 3PCS -->
<g v-for="(item,index) in pcsRightData" :key="item.id">
<text x="622" :y="450 + ( 20 * index)" fill="#ffffff" font-size="14">
{{ item.name }}
</text>
<text :x="countChineseAndEnglishCharacters(item.name,622)" :y="450 + ( 20 * index)" fill="#FFB800" font-size="14">
{{ item.value }}
</text>
</g>
</svg>
</div>
</div>
<DispositionPointData
:disposition-show="show_point_dispostion"
:max="4"
:page-location="pageLocation"
@close="closePoint"
@getData="getDynamicPointData"
/>
</ItemBox>
</template>
<script>
import gridImg from '@/assets/images/wxjd/grid.png'
import ammeterImg from '@/assets/images/wxjd/ammeter.png'
import cabinetImg from '@/assets/images/wxjd/cabinet.png'
import chargingPileImg from '@/assets/images/home-office.png'
import distributionCabinetImg from '@/assets/images/wxjd/guiImg.png'
import frameImg from '@/assets/images/wxjd/frame.png'
import cangImg from '@/assets/images/home-cang.png'
import { DynamicConfigPoint } from '@/api/home-page/index'
import config from './config'
import { changeTheme } from '@/utils/index'
import ACDCImg from '@/assets/images/wxjd/ACDC.png'
import DCImg from '@/assets/images/wxjd/DC.png'
import STSImg from '@/assets/images/wxjd/STS.png'
export default {
name: 'Index',
props: {
stationType: {
type: Number,
default: 0
},
stationId: {
type: Number,
default: 0
}
},
data() {
return {
gridImg,
ammeterImg,
cabinetImg,
chargingPileImg,
distributionCabinetImg,
cangImg,
frameImg,
ACDCImg,
DCImg,
STSImg,
dotData: {
lineTop: 'M 0,0 0,0',
lineTopLeft: 'M 0,0 0,0',
lineBottomLeft: 'M 0,0 0,0 0,0',
lineBottomRight: 'M 0,0 0,0 0,0',
lineBottomLeftTwo: 'M 0,0 0,0 0,0',
lineBottomRightTwo: 'M 0,0 0,0 0,0'
},
partList: [
{ soc: 0, soh: 0, activePowerPCS: 0.0, reactivePowerPCS: 0.0 },
{ soc: 0, soh: 0, activePowerPCS: 0.0, reactivePowerPCS: 0.0 },
{ soc: 0, soh: 0, activePowerPCS: 0.0, reactivePowerPCS: 0.0 },
{ soc: 0, soh: 0, activePowerPCS: 0.0, reactivePowerPCS: 0.0 }
],
loading: false,
activePowerTotal: {},
show_point_dispostion: false,
pageLocation: '',
permissionId: null,
pcsLeftData: [],
pcsCenterData: [],
pcsRightData: [],
stsCenterData: [],
acdcCenterData: [],
ammeterData: [],
configData: {}
}
},
computed: {
lang() {
return this.$store.getters.language
}
},
watch: {},
created() {
const result = changeTheme()
this.configData = config[result]
console.log('配置' + JSON.stringify(this.configData))
setTimeout(() => {
if (this.$store.getters.menuList.length) {
this.permissionId = this.$store.getters.menuList.find(item => {
return item.url === this.$route.path
}).id
}
}, 300)
},
mounted() {},
methods: {
truncateText(text, maxWidth) {
if (!text) return ''
const width = this.measureTextWidth(text)
if (width <= maxWidth) return text
let truncated = text
while (this.measureTextWidth(truncated + '...') > maxWidth && truncated.length > 0) {
truncated = truncated.slice(0, -1)
}
return truncated + (truncated.length < text.length ? '...' : '')
},
// 精确测量文本渲染宽度(像素)
measureTextWidth(text, font = '14px sans-serif') {
// 创建或复用一个 canvas避免重复创建
if (!this._textMeasurementCanvas) {
this._textMeasurementCanvas = document.createElement('canvas')
}
const ctx = this._textMeasurementCanvas.getContext('2d')
ctx.font = font
return ctx.measureText(text).width
},
// 计算 value 的 x 坐标baseX + name 的实际宽度 + 一点间距
calculateValueX(name, baseX = 200) {
const truncatedName = this.truncateText(name, 120) // 限制 name 最大宽度
const width = this.measureTextWidth(truncatedName)
return baseX + width + 6 // +6 是 name 和 value 之间的小空隙
},
countChineseAndEnglishCharacters(str, x) {
var chineseCount = str.match(/[\u4e00-\u9fa5]/g) ? str.match(/[\u4e00-\u9fa5]/g).length : 0
var englishCount = str.match(/[a-zA-Z]/g) ? str.match(/[a-zA-Z]/g).length : 0
var otherCount = str.length - chineseCount - englishCount
const obj = { otherCount: otherCount, chineseCount: chineseCount, englishCount: englishCount }
return (obj.englishCount * 11) + (obj.chineseCount * 16) + (obj.otherCount * 8) + x
},
lookDeviceDetail(val) { // 查看设备详情
this.pageLocation = val
this.show_point_dispostion = true
},
closePoint() {
this.show_point_dispostion = false
},
async getpcsCenter() {
this.loading = true
try {
const res = await DynamicConfigPoint({
pageLocation: 'triad-pcs-center',
permissionId: this.permissionId,
stationId: this.stationId })
this.pcsCenterData = res.data
} catch (error) {
// console.log(error);
} finally {
this.loading = false
}
},
async getstsCenter() {
this.loading = true
try {
const res = await DynamicConfigPoint({
pageLocation: 'triad-sts-center',
permissionId: this.permissionId,
stationId: this.stationId })
this.stsCenterData = res.data
} catch (error) {
// console.log(error);
} finally {
this.loading = false
}
},
async getacdcCenter() {
this.loading = true
try {
const res = await DynamicConfigPoint({
pageLocation: 'triad-acdc-center',
permissionId: this.permissionId,
stationId: this.stationId })
this.acdcCenterData = res.data
} catch (error) {
// console.log(error);
} finally {
this.loading = false
}
},
async getLineStatus(type) {
this.loading = true
try {
const res = await DynamicConfigPoint({
pageLocation: type,
permissionId: this.permissionId,
stationId: this.stationId })
if (type === 'line-bottom-left') {
if (res.data?.length) {
if (res.data[0].value > 0) {
this.dotData.lineBottomLeft = 'M 283,0, 280, 0, 0 ,0'
} else if (res.data[0].value < 0) {
this.dotData.lineBottomLeft = 'M 0,0 281,0 281,0'
} else {
this.dotData.lineBottomLeft = ''
}
} else {
this.dotData.lineBottomLeft = ''
}
} else if (type === 'line-bottom-right') {
if (res.data?.length) {
if (res.data[0].value > 0) {
this.dotData.lineBottomRight = 'M -271, 0 , -271 , 0 , 0 , 0'
} else if (res.data[0].value < 0) {
this.dotData.lineBottomRight = 'M 0,0 -271,0 -271,0'
} else {
this.dotData.lineBottomRight = ''
}
} else {
this.dotData.lineBottomRight = ''
}
} else if (type === 'line-bottom-center') {
if (res.data?.length) {
if (res.data[0].value > 0) {
this.dotData.lineCenter = 'M 0,-283,0,0,0,0'
} else if (res.data[0].value < 0) {
this.dotData.lineCenter = 'M 0,0,0,0,0,-283'
} else {
this.dotData.lineCenter = ''
}
} else {
this.dotData.lineCenter = ''
}
} else if (type === 'line-top-left') {
if (res.data?.length) {
if (res.data[0].value > 0) {
this.dotData.lineTopLeft = 'M 230,0 0,0'
} else if (res.data[0].value < 0) {
this.dotData.lineTopLeft = 'M 0,0 225,0'
} else {
this.dotData.lineTopLeft = ''
}
} else {
this.dotData.lineTopLeft = ''
}
} else if (type === 'line-top-right') {
if (res.data?.length) {
if (res.data[0].value > 0) {
this.dotData.lineTopRight = 'M -230,0 0,0'
} else if (res.data[0].value < 0) {
this.dotData.lineTopRight = 'M 0,0 -225,0'
} else {
this.dotData.lineTopRight = ''
}
} else {
this.dotData.lineTopRight = ''
}
}
} catch (error) {
// console.log(error);
} finally {
this.loading = false
}
},
async getpcsLeft() {
this.loading = true
try {
const res = await DynamicConfigPoint({
pageLocation: 'triad-pcs-left',
permissionId: this.permissionId,
stationId: this.stationId })
this.pcsLeftData = res.data
} catch (error) {
// console.log(error);
} finally {
this.loading = false
}
},
async getammeter() {
this.loading = true
try {
const res = await DynamicConfigPoint({
pageLocation: 'triad-ammeter',
permissionId: this.permissionId,
stationId: this.stationId })
this.ammeterData = res.data
} catch (error) {
// console.log(error);
} finally {
this.loading = false
}
},
async getpcsRight() {
this.loading = true
try {
const res = await DynamicConfigPoint({
pageLocation: 'triad-pcs-right',
permissionId: this.permissionId,
stationId: this.stationId })
this.pcsRightData = res.data
} catch (error) {
// console.log(error);
} finally {
this.loading = false
}
},
getData() {
this.getpcsRight()
this.getpcsCenter()
this.getstsCenter()
this.getacdcCenter()
this.getpcsLeft()
this.getammeter()
this.getLineStatus('line-bottom-left')
this.getLineStatus('line-bottom-center')
this.getLineStatus('line-bottom-right')
this.getLineStatus('line-top-left')
this.getLineStatus('line-top-right')
this.$forceUpdate()
},
getDynamicPointData() {
this.getData()
}
}
}
</script>
<style lang="scss" scoped>
.center-box {
width: 100%;
height: 100%;
}
@mixin move-round($duration, $delay) {
fill: none;
stroke-width: 5;
stroke-linejoin: round;
stroke-linecap: round;
stroke-dasharray: 3, 900;
stroke-dashoffset: 0;
animation: lineMove $duration $delay cubic-bezier(0, 0, 0.74, 0.74) infinite;
}
@keyframes lineMove {
0% {
stroke-dashoffset: -850;
}
100% {
stroke-dashoffset: -0;
}
}
.g-rect-fill-two {
@include move-round(3.5s, 1s);
}
</style>

View File

@ -377,7 +377,7 @@
<text x="520" :y="105 + ( 20 * index)" fill="#ffffff" font-size="14">
{{ item.name }}
</text>
<text :x="countChineseAndEnglishCharacters(item.name,lang === 'zh'?510:470)" :y="105 + ( 20 * index)" fill="#FFB800" font-size="14">
<text :x="countChineseAndEnglishCharacters(item.name,lang === 'zh_CN'?510:470)" :y="105 + ( 20 * index)" fill="#FFB800" font-size="14">
{{ item.value }}
</text>
</g>
@ -388,7 +388,7 @@
<text x="415" :y="213 + ( 20 * index)" fill="#ffffff" font-size="14">
{{ item.name }}
</text>
<text :x="countChineseAndEnglishCharacters(item.name,lang === 'zh'?415:375)" :y="213 + ( 20 * index)" fill="#FFB800" font-size="14">
<text :x="countChineseAndEnglishCharacters(item.name,lang === 'zh_CN'?415:375)" :y="213 + ( 20 * index)" fill="#FFB800" font-size="14">
{{ item.value }}
</text>
</g>

View File

@ -0,0 +1,810 @@
<template>
<ItemBox :title="$t('dashboard.stationTopo')" style="min-height: 560px;">
<div ref="svgLine" class="center-box">
<div v-loading="loading">
<svg
version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:space="preserve"
class="circle-load-rect-svg"
viewBox="0 0 800 500"
>
<defs>
<defs>
<radialGradient id="RadialGradient1">
<stop offset="0%" stop-color="#fff" />
<stop offset="30%" stop-color="#0171c1" />
<stop offset="50%" stop-color="#035088" />
<stop offset="100%" stop-color="#02395a" />
</radialGradient>
</defs>
<marker
id="markerCircle"
markerWidth="15"
markerHeight="15"
refX="5"
refY="5"
>
<circle
cx="5"
cy="5"
r="5"
style="stroke: none; fill: url(#RadialGradient1)"
/>
</marker>
<marker
id="markerArrow"
markerWidth="13"
markerHeight="13"
refX="2"
refY="6"
orient="auto"
>
<path d="M2,2 L2,11 L10,6 L2,2" style="fill: black" />
</marker>
</defs>
<!-- //线条 -->
<!-- top -->
<polyline
points="120,50 650,50"
fill="none"
class="g-rect-path"
stroke="#0094FF"
stroke-dasharray="3 3"
/>
<!-- center -->
<polyline
points="385,50 385,417"
fill="none"
class="g-rect-path"
stroke="#0094FF"
stroke-dasharray="3 3"
/>
<!-- <rect
x="383"
y="80"
width="4"
height="281"
:style="{ fill: 'rgba(100,100,100,0)', stroke: 'transparent',cursor: 'pointer' }"
@click="lookDeviceDetail('line-bottom-center')"
/> -->
<polyline
points="385,100 460,100"
fill="none"
class="g-rect-path"
stroke="#0094FF"
stroke-dasharray="3 3"
/>
<!-- bottom -->
<polyline
points="175,283 385,283"
fill="none"
class="g-rect-path"
stroke="#0094FF"
stroke-dasharray="3 3"
/>
<polyline
points="175,283 175,417"
fill="none"
class="g-rect-path"
stroke="#0094FF"
stroke-dasharray="3 3"
/>
<!-- <rect
x="104"
y="361"
width="283"
height="4"
:style="{ fill: 'rgba(100,100,100,0)', stroke: 'transparent',cursor: 'pointer' }"
@click="lookDeviceDetail('line-bottom-left')"
/> -->
<polyline
points="385,283 603,283"
fill="none"
class="g-rect-path"
stroke="#0094FF"
stroke-dasharray="3 3"
/>
<polyline
points="603,283 603,417"
fill="none"
class="g-rect-path"
stroke="#0094FF"
stroke-dasharray="3 3"
/>
<!-- <rect
x="383"
y="361"
width="272"
height="4"
:style="{ fill: 'rgba(100,100,100,0)', stroke: 'transparent',cursor: 'pointer' }"
@click="lookDeviceDetail('line-bottom-right')"
/> -->
<!-- top -->
<circle
cx="120"
cy="50"
r="8"
style="stroke: none; fill: url(#RadialGradient1)"
/>
<circle
cx="650"
cy="50"
r="8"
style="stroke: none; fill: url(#RadialGradient1)"
/>
<!-- 动点 -->
<circle
cx="120"
cy="50"
r="8"
style="stroke: none; fill: url(#RadialGradient1)"
>
<animateMotion
repeatCount="indefinite"
dur="4s"
begin="0s"
:path="dotData.lineTopLeft"
/>
</circle>
<circle
cx="385"
cy="417"
r="8"
style="stroke: none; fill: url(#RadialGradient1)"
>
<animateMotion
repeatCount="indefinite"
dur="4s"
begin="2s"
:path="dotData.lineCenter"
/>
</circle>
<circle
cx="650"
cy="50"
r="8"
style="stroke: none; fill: url(#RadialGradient1)"
>
<animateMotion
repeatCount="indefinite"
dur="4s"
begin="0s"
:path="dotData.lineTopRight"
/>
</circle>
<!-- bottom -->
<circle
cx="175"
cy="417"
r="8"
style="stroke: none; fill: url(#RadialGradient1)"
/>
<circle
cx="385"
cy="417"
r="8"
style="stroke: none; fill: url(#RadialGradient1)"
/>
<circle
cx="603"
cy="417"
r="8"
style="stroke: none; fill: url(#RadialGradient1)"
/>
<circle
cx="385"
cy="417"
r="8"
style="stroke: none; fill: url(#RadialGradient1)"
/>
<circle
cx="175"
cy="417"
r="8"
style="stroke: none; fill: url(#RadialGradient1)"
>
<animateMotion
repeatCount="indefinite"
dur="4s"
begin="2s"
:path="dotData.lineBottomLeft"
/>
</circle>
<circle
cx="603"
cy="417"
r="8"
style="stroke: none; fill: url(#RadialGradient1)"
>
<animateMotion
repeatCount="indefinite"
dur="4s"
begin="2s"
:path="dotData.lineBottomRight"
/>
</circle>
<!-- 图片和文字 -->
<!-- 市电 -->
<image
:xlink:href="configData.grid"
x="60"
y="20"
width="50"
height="70"
/>
<!-- <text x="90" y="160" fill="#ffffff" font-size="14"> {{ $t("dashboard.grid") }}</text> -->
<!-- {{ $t("dashboard.load") }} -->
<image
:xlink:href="configData.house"
x="660"
y="20"
width="50"
height="70"
/>
<!-- <text x="645" y="160" fill="#ffffff" font-size="14"> {{ $t("dashboard.load") }}</text> -->
<!-- 1PV -->
<image
:xlink:href="frameImg"
x="145"
y="430"
width="50"
height="50"
style="cursor: pointer;"
@click="lookDeviceDetail('triad-pcs-left')"
/>
<!-- DCDC -->
<image
:xlink:href="DCImg"
x="157"
y="330"
width="35"
height="35"
/>
<!-- <text x="86" y="490" fill="#ffffff" font-size="14">1#{{ $t("dashboard.cabinet") }}</text> -->
<!-- 2PV -->
<image
:xlink:href="frameImg"
x="355"
y="430"
width="50"
height="50"
style="cursor: pointer;"
@click="lookDeviceDetail('triad-pcs-center')"
/>
<!-- DCDC -->
<image
:xlink:href="DCImg"
x="367"
y="330"
width="35"
height="35"
/>
<!-- <text x="360" y="490" fill="#ffffff" font-size="14">
2#{{ $t("dashboard.cabinet") }}
</text> -->
<!-- 3 -->
<image
:xlink:href="configData.pcs2"
x="574"
y="430"
width="50"
height="50"
style="cursor: pointer;"
@click="lookDeviceDetail('triad-pcs-right')"
/>
<!-- <text x="614" y="490" fill="#ffffff" font-size="14">3#{{ $t("dashboard.cabinet") }}</text> -->
<!-- STS -->
<image
:xlink:href="STSImg"
x="365"
y="130"
width="40"
height="40"
style="cursor: pointer;"
@click="lookDeviceDetail('triad-sts-center')"
/>
<!-- AC/DC -->
<image
:xlink:href="ACDCImg"
x="368"
y="200"
width="35"
height="35"
style="cursor: pointer;"
@click="lookDeviceDetail('triad-acdc-center')"
/>
<!-- {{ $t("dashboard.ammeter") }} -->
<image
:xlink:href="ammeterImg"
x="450"
y="80"
width="70"
height="42"
style="cursor: pointer;"
@click="lookDeviceDetail('triad-ammeter')"
/>
<!-- 瞬时总有功 -->
<g v-for="(item,index) in ammeterData" :key="item.id">
<text x="520" :y="105 + ( 20 * index)" fill="#ffffff" font-size="14">
{{ item.name }}
</text>
<text :x="countChineseAndEnglishCharacters(item.name,lang === 'zh_CN'?510:465)" :y="105 + ( 20 * index)" fill="#FFB800" font-size="14">
{{ item.value }}
</text>
</g>
<!-- STS -->
<g v-for="(item,index) in stsCenterData" :key="item.id">
<text x="415" :y="153 + ( 20 * index)" fill="#ffffff" font-size="14">
{{ item.name }}
</text>
<text :x="countChineseAndEnglishCharacters(item.name,lang === 'zh_CN'?415:360)" :y="153 + ( 20 * index)" fill="#FFB800" font-size="14">
{{ item.value }}
</text>
</g>
<!-- ACDC -->
<g v-for="(item,index) in acdcCenterData" :key="item.id">
<text x="415" :y="213 + ( 20 * index)" fill="#ffffff" font-size="14">
{{ item.name }}
</text>
<text :x="countChineseAndEnglishCharacters(item.name,lang === 'zh_CN'?415:360)" :y="213 + ( 20 * index)" fill="#FFB800" font-size="14">
{{ item.value }}
</text>
</g>
<!-- 左侧 1PV -->
<g v-for="(item,index) in pcsLeftData" :key="item.id">
<foreignObject
:x="200"
:y="450 + (20 * index) - 14"
width="150"
height="20"
style="overflow: visible;"
>
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: center;">
<el-tooltip
:content="item.name"
placement="top"
:open-delay="400"
effect="dark"
popper-class="svg-tooltip"
>
<span style="font-size: 14px;font-family: sans-serif;color: #ffffff;max-width: 120px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis">
{{ truncateText(item.name, 90) }}
</span>
</el-tooltip>
</div>
</foreignObject>
<text :x="calculateValueX(item.name, 205)" :y="450 + ( 20 * index)" fill="#FFB800" font-size="14">
{{ item.value }}
</text>
</g>
<!-- 中间 2PV -->
<g v-for="(item,index) in pcsCenterData" :key="item.id">
<foreignObject
:x="410"
:y="450 + (20 * index) - 14"
width="150"
height="20"
style="overflow: visible;"
>
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: center;">
<el-tooltip
:content="item.name"
placement="top"
:open-delay="400"
effect="dark"
popper-class="svg-tooltip"
>
<span style="font-size: 14px;font-family: sans-serif;color: #ffffff;max-width: 120px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis">
{{ truncateText(item.name, 90) }}
</span>
</el-tooltip>
</div>
</foreignObject>
<!-- <text x="410" :y="450 + ( 20 * index)" fill="#ffffff" font-size="14">
{{ item.name }}
</text> -->
<text :x="calculateValueX(item.name, 410)" :y="450 + ( 20 * index)" fill="#FFB800" font-size="14">
{{ item.value }}
</text>
</g>
<!-- 右侧 3PCS -->
<g v-for="(item,index) in pcsRightData" :key="item.id">
<text x="622" :y="450 + ( 20 * index)" fill="#ffffff" font-size="14">
{{ item.name }}
</text>
<text :x="countChineseAndEnglishCharacters(item.name,622)" :y="450 + ( 20 * index)" fill="#FFB800" font-size="14">
{{ item.value }}
</text>
</g>
</svg>
</div>
</div>
<DispositionPointData
:disposition-show="show_point_dispostion"
:max="4"
:page-location="pageLocation"
@close="closePoint"
@getData="getDynamicPointData"
/>
</ItemBox>
</template>
<script>
import gridImg from '@/assets/images/wxjd/grid.png'
import ammeterImg from '@/assets/images/wxjd/ammeter.png'
import cabinetImg from '@/assets/images/wxjd/cabinet.png'
import chargingPileImg from '@/assets/images/home-office.png'
import distributionCabinetImg from '@/assets/images/wxjd/guiImg.png'
import frameImg from '@/assets/images/wxjd/frame.png'
import cangImg from '@/assets/images/home-cang.png'
import { DynamicConfigPoint } from '@/api/home-page/index'
import config from './config'
import { changeTheme } from '@/utils/index'
import ACDCImg from '@/assets/images/wxjd/ACDC.png'
import DCImg from '@/assets/images/wxjd/DC.png'
import STSImg from '@/assets/images/wxjd/STS.png'
export default {
name: 'Index',
props: {
stationType: {
type: Number,
default: 0
},
stationId: {
type: Number,
default: 0
}
},
data() {
return {
gridImg,
ammeterImg,
cabinetImg,
chargingPileImg,
distributionCabinetImg,
cangImg,
frameImg,
ACDCImg,
DCImg,
STSImg,
dotData: {
lineTop: 'M 0,0 0,0',
lineTopLeft: 'M 0,0 0,0',
lineBottomLeft: 'M 0,0 0,0 0,0',
lineBottomRight: 'M 0,0 0,0 0,0',
lineBottomLeftTwo: 'M 0,0 0,0 0,0',
lineBottomRightTwo: 'M 0,0 0,0 0,0'
},
partList: [
{ soc: 0, soh: 0, activePowerPCS: 0.0, reactivePowerPCS: 0.0 },
{ soc: 0, soh: 0, activePowerPCS: 0.0, reactivePowerPCS: 0.0 },
{ soc: 0, soh: 0, activePowerPCS: 0.0, reactivePowerPCS: 0.0 },
{ soc: 0, soh: 0, activePowerPCS: 0.0, reactivePowerPCS: 0.0 }
],
loading: false,
activePowerTotal: {},
show_point_dispostion: false,
pageLocation: '',
permissionId: null,
pcsLeftData: [],
pcsCenterData: [],
pcsRightData: [],
stsCenterData: [],
acdcCenterData: [],
ammeterData: [],
configData: {}
}
},
computed: {
lang() {
return this.$store.getters.language
}
},
watch: {},
created() {
const result = changeTheme()
this.configData = config[result]
console.log('配置' + JSON.stringify(this.configData))
setTimeout(() => {
if (this.$store.getters.menuList.length) {
this.permissionId = this.$store.getters.menuList.find(item => {
return item.url === this.$route.path
}).id
}
}, 300)
},
mounted() {},
methods: {
isChineseDominant(text) {
const chineseRegex = /[\u4e00-\u9fa5]/g
const chineseCount = (text.match(chineseRegex) || []).length
return chineseCount / text.length > 0.5
},
// 修改截断逻辑:按字符类型统一视觉宽度
truncateText(text, baseMaxWidth = 90) {
if (!text) return ''
// 1. 按文本类型设置“最大可显示字符数”(视觉宽度相近)
const isChinese = this.isChineseDominant(text)
const maxChars = isChinese ? 8 : 15 // 中文8字 ≈ 英文15字母14px sans-serif下
// 2. 先按字符数截断(避免过长文本循环过多)
const truncated = text.slice(0, maxChars)
let finalText = truncated
// 3. 精确测量:如果截断后加...仍超宽,继续缩减
while (this.measureTextWidth(finalText + '...') > baseMaxWidth && finalText.length > 0) {
finalText = finalText.slice(0, -1)
}
// 4. 补充...(如果有截断)
return finalText + (finalText.length < text.length ? '...' : '')
},
// 精确测量文本渲染宽度(像素)- 保持不变
measureTextWidth(text, font = '14px sans-serif') {
if (!this._textMeasurementCanvas) {
this._textMeasurementCanvas = document.createElement('canvas')
}
const ctx = this._textMeasurementCanvas.getContext('2d')
ctx.font = font
return ctx.measureText(text).width
},
// 计算value的x坐标基于统一后的截断文本宽度
calculateValueX(name, baseX = 205) {
const truncatedName = this.truncateText(name) // 无需传maxWidth内部统一处理
const nameWidth = this.measureTextWidth(truncatedName)
const spacing = 6 // 固定间距(因截断文本视觉宽度一致,间距会统一)
return baseX + nameWidth + spacing
},
countChineseAndEnglishCharacters(str, x) {
var chineseCount = str.match(/[\u4e00-\u9fa5]/g) ? str.match(/[\u4e00-\u9fa5]/g).length : 0
var englishCount = str.match(/[a-zA-Z]/g) ? str.match(/[a-zA-Z]/g).length : 0
var otherCount = str.length - chineseCount - englishCount
const obj = { otherCount: otherCount, chineseCount: chineseCount, englishCount: englishCount }
return (obj.englishCount * 11) + (obj.chineseCount * 16) + (obj.otherCount * 8) + x
},
lookDeviceDetail(val) { // 查看设备详情
this.pageLocation = val
this.show_point_dispostion = true
},
closePoint() {
this.show_point_dispostion = false
},
async getpcsCenter() {
this.loading = true
try {
const res = await DynamicConfigPoint({
pageLocation: 'triad-pcs-center',
permissionId: this.permissionId,
stationId: this.stationId })
this.pcsCenterData = res.data
} catch (error) {
// console.log(error);
} finally {
this.loading = false
}
},
async getstsCenter() {
this.loading = true
try {
const res = await DynamicConfigPoint({
pageLocation: 'triad-sts-center',
permissionId: this.permissionId,
stationId: this.stationId })
this.stsCenterData = res.data
} catch (error) {
// console.log(error);
} finally {
this.loading = false
}
},
async getacdcCenter() {
this.loading = true
try {
const res = await DynamicConfigPoint({
pageLocation: 'triad-acdc-center',
permissionId: this.permissionId,
stationId: this.stationId })
this.acdcCenterData = res.data
} catch (error) {
// console.log(error);
} finally {
this.loading = false
}
},
async getLineStatus(type) {
this.loading = true
try {
const res = await DynamicConfigPoint({
pageLocation: type,
permissionId: this.permissionId,
stationId: this.stationId })
if (type === 'line-bottom-left') {
if (res.data?.length) {
if (res.data[0].value > 0) {
this.dotData.lineBottomLeft = 'M 283,0, 280, 0, 0 ,0'
} else if (res.data[0].value < 0) {
this.dotData.lineBottomLeft = 'M 0,0 281,0 281,0'
} else {
this.dotData.lineBottomLeft = ''
}
} else {
this.dotData.lineBottomLeft = ''
}
} else if (type === 'line-bottom-right') {
if (res.data?.length) {
if (res.data[0].value > 0) {
this.dotData.lineBottomRight = 'M -271, 0 , -271 , 0 , 0 , 0'
} else if (res.data[0].value < 0) {
this.dotData.lineBottomRight = 'M 0,0 -271,0 -271,0'
} else {
this.dotData.lineBottomRight = ''
}
} else {
this.dotData.lineBottomRight = ''
}
} else if (type === 'line-bottom-center') {
if (res.data?.length) {
if (res.data[0].value > 0) {
this.dotData.lineCenter = 'M 0,-283,0,0,0,0'
} else if (res.data[0].value < 0) {
this.dotData.lineCenter = 'M 0,0,0,0,0,-283'
} else {
this.dotData.lineCenter = ''
}
} else {
this.dotData.lineCenter = ''
}
} else if (type === 'line-top-left') {
if (res.data?.length) {
if (res.data[0].value > 0) {
this.dotData.lineTopLeft = 'M 230,0 0,0'
} else if (res.data[0].value < 0) {
this.dotData.lineTopLeft = 'M 0,0 225,0'
} else {
this.dotData.lineTopLeft = ''
}
} else {
this.dotData.lineTopLeft = ''
}
} else if (type === 'line-top-right') {
if (res.data?.length) {
if (res.data[0].value > 0) {
this.dotData.lineTopRight = 'M -230,0 0,0'
} else if (res.data[0].value < 0) {
this.dotData.lineTopRight = 'M 0,0 -225,0'
} else {
this.dotData.lineTopRight = ''
}
} else {
this.dotData.lineTopRight = ''
}
}
} catch (error) {
// console.log(error);
} finally {
this.loading = false
}
},
async getpcsLeft() {
this.loading = true
try {
const res = await DynamicConfigPoint({
pageLocation: 'triad-pcs-left',
permissionId: this.permissionId,
stationId: this.stationId })
this.pcsLeftData = res.data
} catch (error) {
// console.log(error);
} finally {
this.loading = false
}
},
async getammeter() {
this.loading = true
try {
const res = await DynamicConfigPoint({
pageLocation: 'triad-ammeter',
permissionId: this.permissionId,
stationId: this.stationId })
this.ammeterData = res.data
} catch (error) {
// console.log(error);
} finally {
this.loading = false
}
},
async getpcsRight() {
this.loading = true
try {
const res = await DynamicConfigPoint({
pageLocation: 'triad-pcs-right',
permissionId: this.permissionId,
stationId: this.stationId })
this.pcsRightData = res.data
} catch (error) {
// console.log(error);
} finally {
this.loading = false
}
},
getData() {
this.getpcsRight()
this.getpcsCenter()
this.getstsCenter()
this.getacdcCenter()
this.getpcsLeft()
this.getammeter()
this.getLineStatus('line-bottom-left')
this.getLineStatus('line-bottom-center')
this.getLineStatus('line-bottom-right')
this.getLineStatus('line-top-left')
this.getLineStatus('line-top-right')
this.$forceUpdate()
},
getDynamicPointData() {
this.getData()
}
}
}
</script>
<style lang="scss" scoped>
.center-box {
width: 100%;
height: 100%;
}
@mixin move-round($duration, $delay) {
fill: none;
stroke-width: 5;
stroke-linejoin: round;
stroke-linecap: round;
stroke-dasharray: 3, 900;
stroke-dashoffset: 0;
animation: lineMove $duration $delay cubic-bezier(0, 0, 0.74, 0.74) infinite;
}
@keyframes lineMove {
0% {
stroke-dashoffset: -850;
}
100% {
stroke-dashoffset: -0;
}
}
.g-rect-fill-two {
@include move-round(3.5s, 1s);
}
</style>

View File

@ -309,7 +309,7 @@
<!-- <text x="614" y="490" fill="#ffffff" font-size="14">3#{{ $t("dashboard.cabinet") }}</text> -->
<!-- STS -->
<image
<!-- <image
:xlink:href="STSImg"
x="365"
y="130"
@ -317,7 +317,7 @@
height="40"
style="cursor: pointer;"
@click="lookDeviceDetail('triad-sts-center')"
/>
/> -->
<!-- AC/DC -->
<image
:xlink:href="ACDCImg"
@ -346,21 +346,21 @@
<text x="520" :y="105 + ( 20 * index)" fill="#ffffff" font-size="14">
{{ item.name }}
</text>
<text :x="countChineseAndEnglishCharacters(item.name,lang === 'zh'?510:465)" :y="105 + ( 20 * index)" fill="#FFB800" font-size="14">
<text :x="countChineseAndEnglishCharacters(item.name,lang === 'zh_CN'?510:465)" :y="105 + ( 20 * index)" fill="#FFB800" font-size="14">
{{ item.value }}
</text>
</g>
<!-- STS -->
<g v-for="(item,index) in stsCenterData" :key="item.id">
<!-- <g v-for="(item,index) in stsCenterData" :key="item.id">
<text x="415" :y="153 + ( 20 * index)" fill="#ffffff" font-size="14">
{{ item.name }}
</text>
<text :x="countChineseAndEnglishCharacters(item.name,lang === 'zh'?415:360)" :y="153 + ( 20 * index)" fill="#FFB800" font-size="14">
<text :x="countChineseAndEnglishCharacters(item.name,lang === 'zh_CN'?415:360)" :y="153 + ( 20 * index)" fill="#FFB800" font-size="14">
{{ item.value }}
</text>
</g>
</g> -->
<!-- ACDC -->
@ -368,7 +368,7 @@
<text x="415" :y="213 + ( 20 * index)" fill="#ffffff" font-size="14">
{{ item.name }}
</text>
<text :x="countChineseAndEnglishCharacters(item.name,lang === 'zh'?415:360)" :y="213 + ( 20 * index)" fill="#FFB800" font-size="14">
<text :x="countChineseAndEnglishCharacters(item.name,lang === 'zh_CN'?415:360)" :y="213 + ( 20 * index)" fill="#FFB800" font-size="14">
{{ item.value }}
</text>
</g>
@ -467,7 +467,7 @@ import config from './config'
import { changeTheme } from '@/utils/index'
import ACDCImg from '@/assets/images/wxjd/ACDC.png'
import DCImg from '@/assets/images/wxjd/DC.png'
import STSImg from '@/assets/images/wxjd/STS.png'
// import STSImg from '@/assets/images/wxjd/STS.png'
export default {
name: 'Index',
props: {
@ -491,7 +491,7 @@ export default {
frameImg,
ACDCImg,
DCImg,
STSImg,
// STSImg,
dotData: {
lineTop: 'M 0,0 0,0',
lineTopLeft: 'M 0,0 0,0',
@ -515,7 +515,7 @@ export default {
pcsLeftData: [],
pcsCenterData: [],
pcsRightData: [],
stsCenterData: [],
// stsCenterData: [],
acdcCenterData: [],
ammeterData: [],
configData: {}
@ -615,20 +615,20 @@ export default {
this.loading = false
}
},
async getstsCenter() {
this.loading = true
try {
const res = await DynamicConfigPoint({
pageLocation: 'triad-sts-center',
permissionId: this.permissionId,
stationId: this.stationId })
this.stsCenterData = res.data
} catch (error) {
// console.log(error);
} finally {
this.loading = false
}
},
// async getstsCenter() {
// this.loading = true
// try {
// const res = await DynamicConfigPoint({
// pageLocation: 'triad-sts-center',
// permissionId: this.permissionId,
// stationId: this.stationId })
// this.stsCenterData = res.data
// } catch (error) {
// // console.log(error);
// } finally {
// this.loading = false
// }
// },
async getacdcCenter() {
this.loading = true
try {
@ -763,7 +763,7 @@ export default {
getData() {
this.getpcsRight()
this.getpcsCenter()
this.getstsCenter()
// this.getstsCenter()
this.getacdcCenter()
this.getpcsLeft()
this.getammeter()

File diff suppressed because it is too large Load Diff

View File

@ -159,7 +159,10 @@ import { getDashboard } from '@/api/station/maintain'
import { queryElecMeterConfig } from '@/api/home-page/index'
import pv1AndStorage_261 from './components/top-center/pv1storage261.vue'
import pv1AndStorage_sts_261 from './components/top-center/pv1storage-sts-261.vue'
import pv2AndStorage_261 from './components/top-center/pv2storage261.vue'
import pv2AndStorage_sts_261 from './components/top-center/pv2storage-sts-261.vue'
import pv8FourthTopCenter from './components/top-center/pv8fourth.vue'
export default {
name: 'Index',
@ -205,7 +208,10 @@ export default {
secondDispositionTopCenter,
tenthTopCenter,
pv1AndStorage_261,
pv2AndStorage_261
pv2AndStorage_261,
pv1AndStorage_sts_261,
pv2AndStorage_sts_261,
pv8FourthTopCenter
},
props: {},
data() {

View File

@ -49,7 +49,7 @@ export default {
const dayCharge = []
data.forEach((el) => {
x_data.push(el.time)
dayCharge.push(el.dayCharge)
dayCharge.push(el.release)
})
this.options = {
tooltip: {

View File

@ -19,7 +19,7 @@
<el-tooltip class="item" effect="dark" :content="info.stationNumber" placement="top">
<div class="value">{{ info.stationNumber }}</div>
</el-tooltip>
<div class="unit">{{ lang === 'zh'? '个':'' }}</div>
<div class="unit">{{ lang === 'zh_CN'? '个':'' }}</div>
</div>
<div class="value-box" style="width:100%">
<el-tooltip class="item" effect="dark" :content="$t('screen.dailyPowerGeneration')" placement="top">

View File

@ -27,14 +27,13 @@ export default {
data() {
return {
tableLoading: false,
tableTitles: [this.$t('screen.stationName'), this.$t('screen.cap')],
tableTitles: [this.$t('screen.stationName'), this.$t('screen.cumulativePowerGeneration') + '(kWh)'],
tableData: [],
widths: ['auto', 'auto', 'auto', 'auto'],
contentHeight: 200,
tableColumns: [
'stationName',
'stationCapacity',
'efficiencyValue'
'release'
]
}
},

View File

@ -6,8 +6,8 @@
<!-- 头部 s -->
<div class="title_wrap">
<div class="title">
<span :class="lang === 'zh'? 'left-title' : 'left-title-en'" />
<span :class="lang === 'zh'? 'title-text' : 'en-eitle-text'">{{ $t('screen.pvScreenTitle') }}</span>
<span :class="lang === 'zh_CN'? 'left-title' : 'left-title-en'" />
<span :class="lang === 'zh_CN'? 'title-text' : 'en-eitle-text'">{{ $t('screen.pvScreenTitle') }}</span>
<div class="right-title">
<span>{{ time }}</span>
<!-- <span class="weather">{{ weatherInfo ? weatherInfo.skyCon : '' }} {{ weatherInfo? weatherInfo.minTemperature :'' }} ~ {{ weatherInfo ? weatherInfo.maxTemperature : '' }}</span> -->

View File

@ -19,7 +19,7 @@
<el-tooltip class="item" effect="dark" :content="info.stationNumber" placement="top">
<div class="value">{{ info.stationNumber }}</div>
</el-tooltip>
<div class="unit">{{ lang === 'zh'? '个':'' }}</div>
<div class="unit">{{ lang === 'zh_CN'? '个':'' }}</div>
</div>
<div class="value-box">
<el-tooltip class="item" effect="dark" :content="$t('screen.dailyCharge')" placement="top">

View File

@ -6,8 +6,8 @@
<!-- 头部 s -->
<div class="title_wrap">
<div class="title">
<span :class="lang === 'zh'? 'left-title' : 'left-title-en'" />
<span :class="lang === 'zh'? 'title-text' : 'en-eitle-text'">{{ $t('screen.ztscreenTitle') }}</span>
<span :class="lang === 'zh_CN'? 'left-title' : 'left-title-en'" />
<span :class="lang === 'zh_CN'? 'title-text' : 'en-eitle-text'">{{ $t('screen.ztscreenTitle') }}</span>
<div class="right-title">
<span>{{ time }}</span>
<!-- <span class="weather">{{ weatherInfo ? weatherInfo.skyCon : '' }} {{ weatherInfo? weatherInfo.minTemperature :'' }} ~ {{ weatherInfo ? weatherInfo.maxTemperature : '' }}</span> -->

View File

@ -298,7 +298,7 @@ export default {
// 设置上传的请求头部
headers: {
authorization: getToken(),
lang: sessionStorage.getItem('language') === 'en' ? 'en_US' : 'zh_CN'
lang: sessionStorage.getItem('language') ? sessionStorage.getItem('language') : 'zh_CN'
},
// 上传的地址
url:

View File

@ -130,7 +130,7 @@ export default {
uploadList: [],
headers: {
authorization: getToken(),
lang: sessionStorage.getItem('language') === 'en' ? 'en_US' : 'zh_CN'
lang: sessionStorage.getItem('language') ? sessionStorage.getItem('language') : 'zh_CN'
},
fileList: [],
uploadData: {

View File

@ -761,6 +761,7 @@ export default {
return el
}
})
console.log(JSON.stringify(stationName))
const indexPoint = stationName.name.indexOf('.')
if (indexPoint !== -1) {
stationName.name = stationName.name + '.xls'

View File

@ -0,0 +1,126 @@
<template>
<div>
<!-- 触发弹窗的按钮 -->
<el-button v-permission="['sys:remote:connect']" type="primary" icon="el-icon-search" :loading="serachLoading" @click="openDialog">
远程连接
</el-button>
<el-button v-permission="['sys:remote:connectcustomer']" type="primary" icon="el-icon-search" :loading="serachLoading" @click="openDialog">
远程连接
</el-button>
<!-- 全屏弹窗 -->
<el-dialog
:visible.sync="dialogVisible"
width="100vw"
height="100vh"
top="0"
:modal="false"
:close-on-click-modal="false"
:show-close="false"
append-to-body
>
<!-- 弹窗头部自定义关闭按钮 -->
<div slot="title" style="text-align: right; padding-right: 20px;">
<el-button icon="el-icon-close" type="text" size="small" @click="closeDialog" />
</div>
<!-- iframe 嵌入 -->
<iframe
ref="remoteIframe"
:src="iframeUrl"
style="width: 100%; height: calc(100vh - 60px); border: none;"
frameborder="0"
@load="iframeLoaded"
/>
</el-dialog>
</div>
</template>
<script>
import {
GetRemoteDetails
} from '@/api/system/remote-manage'
export default {
data() {
return {
serachLoading: false,
dialogVisible: false,
// iframe 基础地址 + 拼接参数
iframeUrl: '',
stationRemoteDetails: {}
}
},
computed: {
language() {
return this.$store.getters.language
},
stationId() {
return this.$store.getters.currentStation.id || undefined
}
},
methods: {
// 打开弹窗并生成带参 iframe 地址
async openDialog() {
try {
// 1. 准备要传入的参数示例IP、端口、用户信息等
await this.getDetails()
const ip = this.stationRemoteDetails.ip
const emsType = this.stationRemoteDetails.type
const port = this.stationRemoteDetails.port
const params = {
userName: this.stationRemoteDetails.userName,
intranetIp: this.stationRemoteDetails.intranetIp,
password: this.stationRemoteDetails.password,
lang: this.language
}
// 2. 拼接成带参 URL
this.iframeUrl = `http://${ip}:${port}/${emsType}?${new URLSearchParams(params).toString()}`
// 3. 打开弹窗
this.dialogVisible = true
} catch (error) {
this.dialogVisible = false
}
},
async getDetails() {
const res = await GetRemoteDetails({ stationId: this.stationId })
this.stationRemoteDetails = Object.assign({}, res.data)
},
// 关闭弹窗时,触发 iframe 内的退出登录
closeDialog() {
try {
// 获取 iframe 内部的 window 对象
const iframeWin = this.$refs.remoteIframe.contentWindow
// 调用 iframe 页面内的退出登录方法(需要 iframe 页面暴露该方法)
if (iframeWin && typeof iframeWin.handleLogout === 'function') {
iframeWin.handleLogout()
}
} catch (err) {
console.warn('触发iframe退出登录失败可能存在跨域问题', err)
}
// 关闭弹窗
this.dialogVisible = false
// 重置 iframe 地址(避免缓存)
this.iframeUrl = ''
},
// iframe 加载完成后做一些初始化操作
iframeLoaded() {
console.log('iframe 页面加载完成')
}
}
}
</script>
<style scoped>
/* 确保弹窗全屏显示,无多余边距 */
::v-deep .el-dialog {
margin: 0 !important;
width: 100% !important;
height: 100% !important;
max-width: 100% !important;
max-height: 100% !important;
}
::v-deep .el-dialog__body {
padding: 0 !important;
height: calc(100% - 60px);
}
</style>

View File

@ -47,9 +47,7 @@
</el-form>
<el-row class="top-search">
<el-col :span="24" class="report-title">{{
totalData.stationName
}}</el-col>
<el-col :span="24" class="report-title">{{ totalData.stationName }}</el-col>
</el-row>
<div class="top">
@ -502,6 +500,7 @@ export default {
try {
const res = await GetTotal(params)
this.totalData = res.data
console.log('收益报表 ', this.totalData)
this.chargeArr = []
this.dischargeArr = []
if (res.data.finish === 0) {

View File

@ -313,7 +313,7 @@ export default {
uploadUrl: process.env.VUE_APP_BASE_API + '/business/elecPriceCurve/importExcel',
headers: {
authorization: getToken(),
lang: sessionStorage.getItem('language') === 'en' ? 'en_US' : 'zh_CN',
lang: sessionStorage.getItem('language') ? sessionStorage.getItem('language') : 'zh_CN',
stationId: undefined
},
cellList: [],

View File

@ -373,7 +373,7 @@ export default {
uploadUrl: process.env.VUE_APP_BASE_API + '/business/elecPriceCurve/importExcel',
headers: {
authorization: getToken(),
lang: sessionStorage.getItem('language') === 'en' ? 'en_US' : 'zh_CN'
lang: sessionStorage.getItem('language') ? sessionStorage.getItem('language') : 'zh_CN'
},
uploadData: { stationId: null },
fileList: [],

View File

@ -313,7 +313,7 @@ export default {
uploadUrl: process.env.VUE_APP_BASE_API + '/business/elecPriceCurve/importExcel',
headers: {
authorization: getToken(),
lang: sessionStorage.getItem('language') === 'en' ? 'en_US' : 'zh_CN',
lang: sessionStorage.getItem('language') ? sessionStorage.getItem('language') : 'zh_CN',
stationId: undefined
},
cellList: [],

View File

@ -4,11 +4,11 @@
<el-tab-pane :label="this.$t('priceConfig.energyStorage')" name="cn">
<cn ref="cn" />
</el-tab-pane>
<!-- <el-tab-pane label="光伏" name="gf">
<el-tab-pane label="PV" name="gf">
<gf ref="gf" />
</el-tab-pane>
<el-tab-pane label="充电桩" name="cdz">
<!-- <el-tab-pane label="充电桩" name="cdz">
<cdz ref="cdz" />
</el-tab-pane> -->
@ -18,12 +18,12 @@
</template>
<script>
// import gf from './components/photovoltaic'
import gf from './components/photovoltaic'
import cn from './components/energyStorage'
// import cdz from './components/chargingPile'
export default {
name: 'Index',
components: { cn },
components: { cn, gf },
props: {},
data() {
return {

View File

@ -171,7 +171,7 @@ export default {
uploadUrl: process.env.VUE_APP_BASE_API + '/business/elecPriceCurve/importExcel',
headers: {
authorization: getToken(),
lang: sessionStorage.getItem('language') === 'en' ? 'en_US' : 'zh_CN',
lang: sessionStorage.getItem('language') ? sessionStorage.getItem('language') : 'zh_CN',
stationId: undefined
},
paramsData: {

View File

@ -357,7 +357,7 @@ export default {
uploadUrl: process.env.VUE_APP_BASE_API + '/business/planning/uploadData',
headers: {
authorization: getToken(),
lang: sessionStorage.getItem('language') === 'en' ? 'en_US' : 'zh_CN',
lang: sessionStorage.getItem('language') ? sessionStorage.getItem('language') : 'zh_CN',
stationId: undefined
},
paramsData: {

View File

@ -234,7 +234,7 @@ export default {
uploadUrl: process.env.VUE_APP_BASE_API + '/business/tabSort/importTabSort',
headers: {
authorization: getToken(),
lang: sessionStorage.getItem('language') === 'en' ? 'en_US' : 'zh_CN'
lang: sessionStorage.getItem('language') ? sessionStorage.getItem('language') : 'zh_CN'
},
paramsData: {
stationId: undefined

View File

@ -20,14 +20,7 @@ export default {
data() {
return {
timeLidu: 1,
times: [
{ label: '1分钟', value: 1 },
{ label: '5分钟', value: 5 },
{ label: '10分钟', value: 10 },
{ label: '15分钟', value: 15 },
{ label: '20分钟', value: 20 },
{ label: '30分钟', value: 30 }
],
times: this.$t('pcs.times'),
options: {
title: {
text: this.$t('pcs.noData'),

View File

@ -5,8 +5,9 @@
<div class="left">
<div v-loading="loading" class="left-first">
<div v-for="item in ktstatus2" :key="item.label" class="box-title">
<span v-if="language === 'en'" class="title">{{ item.enlable }}</span>
<span v-else class="title">{{ item.label }}</span>
<!-- <span v-if="language === 'en'" class="title">{{ item.enlable }}</span>
<span v-else class="title">{{ item.label }}</span> -->
<span class="title">{{ item[language] }}</span>
<span class="value">{{ item.value }}</span><span class="unit">{{ item.unit }}</span>
</div>
</div>
@ -23,8 +24,9 @@
:key="item.label"
:class="item.value ? 'error-item-wrap' : 'item-wrap'"
>
<div v-if="language === 'en'" class="label">{{ item.enlable }}</div>
<div v-else class="label">{{ item.label }}</div>
<!-- <div v-if="language === 'en'" class="label">{{ item.enlable }}</div>
<div v-else class="label">{{ item.label }}</div> -->
<div class="label">{{ item[language] }}</div>
</div>
</div>
</div>
@ -35,8 +37,9 @@
:key="item.label"
:class="item.value ? 'error-item-wrap' : 'item-wrap'"
>
<div v-if="language === 'en'" class="label">{{ item.enlable }}</div>
<div v-else class="label">{{ item.label }}</div>
<!-- <div v-if="language === 'en'" class="label">{{ item.enlable }}</div>
<div v-else class="label">{{ item.label }}</div> -->
<div class="label">{{ item[language] }}</div>
</div>
</div>
</div>
@ -47,8 +50,9 @@
:key="item.label"
:class="item.value ? 'error-item-wrap' : 'item-wrap'"
>
<div v-if="language === 'en'" class="label">{{ item.enlable }}</div>
<div v-else class="label">{{ item.label }}</div>
<!-- <div v-if="language === 'en'" class="label">{{ item.enlable }}</div>
<div v-else class="label">{{ item.label }}</div> -->
<div class="label">{{ item[language] }}</div>
</div>
</div>
</div>

View File

@ -1,7 +1,14 @@
export const ktstatus = [
{
zh_CN: '空调开关机',
en_US: 'Air Conditioner On/Off',
es_ES: 'Encendido y apagado del aire acondicionado',
fr_FR: 'Marche/arrêt du climatiseur',
de_DE: 'Klimaanlage Ein/Aus',
pl_PL: 'Włącz / Wyłącz klimatyzację',
ar_EG: 'تشغيل/إيقاف مكيف الهواء',
label: '空调开关机',
enlable: 'Air Conditioner On/Off',
field: 'airconditionSwitchYX',
value: '关机'
}
@ -10,26 +17,56 @@ export const ktstatus = [
export const ktstatus2 = [
{
label: '空调制冷设定',
enlable: 'Air conditioning cooling setting',
enlable: 'Cooling Setpoint',
zh_CN: '空调制冷设定',
en_US: 'Cooling Setpoint',
es_ES: 'Configuración de refrigeración del aire acondicionado',
fr_FR: 'Consigne de refroidissement du climatiseur',
de_DE: 'Kühl-Sollwert',
pl_PL: 'Zadana temperatura chłodzenia',
ar_EG: 'نقطة ضبط التبريد',
field: 'airconditionSetCold',
value: '0',
unit: '℃'
},
{
label: '空调制热设定',
enlable: 'Heating Setpoint',
zh_CN: '空调制热设定',
en_US: 'Heating Setpoint',
es_ES: 'Configuración de calefacción del aire acondicionado',
fr_FR: 'Consigne de chauffage du climatiseur',
de_DE: 'Heiz-Sollwert',
pl_PL: 'Zadana temperatura grzania',
ar_EG: 'نقطة ضبط التدفئة',
field: 'airconditionSetHot',
enlable: 'Air conditioning heating setting',
value: '0',
unit: '℃'
}, {
},
{
label: '空调湿度',
enlable: 'Air conditioning humidity',
enlable: 'Humidity',
zh_CN: '空调湿度',
en_US: 'Humidity',
es_ES: 'Humedad del aire acondicionado',
fr_FR: 'Humidité du climatiseur',
de_DE: 'Luftfeuchtigkeit',
pl_PL: 'Wilgotność',
ar_EG: 'الرطوبة',
field: 'airconditionInnerHumidity',
value: '0',
unit: '%'
}, {
},
{
label: '空调温度',
enlable: 'Air conditioning temperature',
enlable: 'Temperature',
zh_CN: '空调温度',
en_US: 'Temperature',
es_ES: 'Temperatura del aire acondicionado',
fr_FR: 'Température du climatiseur',
de_DE: 'Temperatur',
pl_PL: 'Temperatura',
ar_EG: 'درجة الحرارة',
field: 'airconditionInnerTemperature',
value: '0',
unit: '℃'
@ -39,210 +76,437 @@ export const ktstatus2 = [
export const ktLeftData = [
{
label: '高温告警',
enlable: 'High temperature alarm',
enlable: 'High Temperature Alarm',
zh_CN: '高温告警',
en_US: 'High Temperature Alarm',
es_ES: 'Alerta de temperatura alta',
fr_FR: 'Alarme de température élevée',
de_DE: 'Hochtemperaturalarm',
pl_PL: 'Alarm: zbyt wysoka temperatura',
ar_EG: 'إنذار درجة حرارة مرتفعة',
field: 'ACHighTemperAlarm',
value: ''
},
{
label: '低温告警',
enlable: 'Low temperature alarm',
enlable: 'Low Temperature Alarm',
zh_CN: '低温告警',
en_US: 'Low Temperature Alarm',
es_ES: 'Alerta de temperatura baja',
fr_FR: 'Alarme de basse température',
de_DE: 'Niedrigtemperaturalarm',
pl_PL: 'Alarm: zbyt niska temperatura',
ar_EG: 'إنذار درجة حرارة منخفضة',
field: 'ACLowTemperAlarm',
value: ''
},
{
label: '高湿告警',
enlable: 'High humidity alarm',
enlable: 'High Humidity Alarm',
zh_CN: '高湿告警',
en_US: 'High Humidity Alarm',
es_ES: 'Alerta de humedad alta',
fr_FR: "Alarme d'humidité élevée",
de_DE: 'Hohe-Feuchtigkeit-Alarm',
pl_PL: 'Alarm: zbyt wysoka wilgotność',
ar_EG: 'إنذار رطوبة مرتفعة',
field: 'ACHighHumidityAlarm',
value: ''
},
{
label: '低湿告警',
enlable: 'Low humidity alarm',
enlable: 'Low Humidity Alarm',
zh_CN: '低湿告警',
en_US: 'Low Humidity Alarm',
es_ES: 'Alerta de humedad baja',
fr_FR: "Alarme d'humidité basse",
de_DE: 'Niedrige-Feuchtigkeit-Alarm',
pl_PL: 'Alarm: zbyt niska wilgotność',
ar_EG: 'إنذار رطوبة منخفضة',
field: 'ACLowHumidityAlarm',
value: ''
},
{
label: '盘管防冻',
enlable: 'Coil anti-freeze',
enlable: 'Coil Anti-Freeze Protection',
zh_CN: '盘管防冻',
en_US: 'Coil Anti-Freeze Protection',
es_ES: 'Protección contra congelación del serpentín',
fr_FR: 'Protection antifreeze du serpentin',
de_DE: 'Verdampfer Frostschutz',
pl_PL: 'Zabezpieczenie wężownicy przed zamarzaniem',
ar_EG: 'حماية الملف من التجمد',
field: 'ACCoilAntifreeze',
value: ''
},
{
label: '排气高温',
enlable: 'Exhaust high temperature',
enlable: 'High Exhaust Air Temperature',
zh_CN: '排气高温',
en_US: 'High Exhaust Air Temperature',
es_ES: 'Temperatura alta de escape',
fr_FR: "Température d'air d'échappement élevée",
de_DE: 'Hohe Ablufttemperatur',
pl_PL: 'Zbyt wysoka temperatura powietrza wylotowego',
ar_EG: 'درجة حرارة هواء العادم مرتفعة',
field: 'ACHighExhaustTemper',
value: ''
},
{
label: '盘管温感失效',
enlable: 'Coil temperature sensing failure',
enlable: 'Coil Temperature Sensor Fault',
zh_CN: '盘管温感失效',
en_US: 'Coil Temperature Sensor Fault',
es_ES: 'Fallo del sensor de temperatura del serpentín',
fr_FR: 'Défaut du capteur de température du serpentin',
de_DE: 'Verdampfer-Temperatursensorfehler',
pl_PL: 'Błąd czujnika temperatury wężownicy',
ar_EG: 'عطل مستشعر درجة حرارة الملف',
field: 'ACCoilTemperSensingFailure',
value: ''
},
{
label: '室外温感失效',
enlable: 'Outdoor temperature sensing failure',
enlable: 'Outdoor Temperature Sensor Fault',
zh_CN: '室外温感失效',
en_US: 'Outdoor Temperature Sensor Fault',
es_ES: 'Fallo del sensor de temperatura exterior',
fr_FR: 'Défaut de sonde de température extérieure',
de_DE: 'Außentemperatursensorfehler',
pl_PL: 'Błąd czujnika temperatury zewnętrznej',
ar_EG: 'عطل مستشعر درجة الحرارة الخارجية',
field: 'ACOutdoorTemperSensingFailure',
value: ''
},
{
label: '冷凝温感失效',
enlable: 'Condensing temperature sensing fails',
enlable: 'Condensation Temperature Sensor Fault',
zh_CN: '冷凝温感失效',
en_US: 'Condensation Temperature Sensor Fault',
es_ES: 'Fallo del sensor de temperatura de condensación',
fr_FR: 'Défaut de sonde de température de condensation',
de_DE: 'Kondensationstemperatursensorfehler',
pl_PL: 'Błąd czujnika temperatury skraplania',
ar_EG: 'عطل مستشعر درجة حرارة التكثيف',
field: 'ACCondensationTemperSensorFailure',
value: ''
},
{
label: '内温感失效',
enlable: 'Internal temperature sensing failure',
enlable: 'Internal Temperature Sensor Fault',
zh_CN: '内温感失效',
en_US: 'Internal Temperature Sensor Fault',
es_ES: 'Fallo del sensor de temperatura interior',
fr_FR: 'Défaut de sonde de température interne',
de_DE: 'Innentemperatursensorfehler',
pl_PL: 'Błąd wewnętrznego czujnika temperatury',
ar_EG: 'عطل مستشعر درجة الحرارة الداخلية',
field: 'ACInternalTemperSensingFailure',
value: ''
},
{
label: '排气温感失效',
enlable: 'Exhaust air temperature sense failure',
enlable: 'Exhaust Temperature Sensor Fault',
zh_CN: '排气温感失效',
en_US: 'Exhaust Temperature Sensor Fault',
es_ES: 'Fallo del sensor de temperatura de escape',
fr_FR: "Défaut de sonde de température d'échappement",
de_DE: 'Ablufttemperatursensorfehler',
pl_PL: 'Błąd czujnika temperatury powietrza wylotowego',
ar_EG: 'عطل مستشعر درجة حرارة العادم',
field: 'ACExhaustTemperSensorFailure',
value: ''
}
]
export const ktLeftData2 = [
{
label: '湿感失效',
enlable: 'Wet sensing failure',
enlable: 'Humidity Sensor Fault',
zh_CN: '湿感失效',
en_US: 'Humidity Sensor Fault',
es_ES: 'Fallo del sensor de humedad',
fr_FR: "Défaut de sonde d'humidité",
de_DE: 'Feuchtigkeitssensorfehler',
pl_PL: 'Błąd czujnika wilgotności',
ar_EG: 'عطل مستشعر الرطوبة',
field: 'ACMoistureSensingFailure',
value: ''
},
{
label: '内风机故障',
enlable: 'Internal fan failure',
enlable: 'Indoor Fan Fault',
zh_CN: '内风机故障',
en_US: 'Indoor Fan Fault',
es_ES: 'Avería del ventilador interior',
fr_FR: 'Défaut du ventilateur intérieur',
de_DE: 'Innenlüfterfehler',
pl_PL: 'Awaria wentylatora wewnętrznego',
ar_EG: 'عطل مروحة داخلية',
field: 'ACInternalFanFailure',
value: ''
},
{
label: '外风机故障',
enlable: 'External fan failure',
enlable: 'Outdoor Fan Fault',
zh_CN: '外风机故障',
en_US: 'Outdoor Fan Fault',
es_ES: 'Avería del ventilador exterior',
fr_FR: 'Défaut du ventilateur extérieur',
de_DE: 'Außenlüfterfehler',
pl_PL: 'Awaria wentylatora zewnętrznego',
ar_EG: 'عطل مروحة خارجية',
field: 'ACExternalFanFailure',
value: ''
},
{
label: '压缩机故障',
enlable: 'Compressor failure',
enlable: 'Compressor Fault',
zh_CN: '压缩机故障',
en_US: 'Compressor Fault',
es_ES: 'Avería del compresor',
fr_FR: 'Défaut du compresseur',
de_DE: 'Kompressorfehler',
pl_PL: 'Awaria sprężarki',
ar_EG: 'عطل الضاغط',
field: 'ACCompressorFailure',
value: ''
},
{
label: '电加热故障',
enlable: 'Electric heating fault',
enlable: 'Electric Heater Fault',
zh_CN: '电加热故障',
en_US: 'Electric Heater Fault',
es_ES: 'Avería del calentador eléctrico',
fr_FR: 'Défaut du chauffage électrique',
de_DE: 'Elektroheizungsfehler',
pl_PL: 'Awaria grzałki elektrycznej',
ar_EG: 'عطل السخان الكهربائي',
field: 'ACElectricHeatFailure',
value: ''
},
{
label: '应急风机故障',
enlable: 'Emergency fan failure',
enlable: 'Emergency Fan Fault',
zh_CN: '应急风机故障',
en_US: 'Emergency Fan Fault',
es_ES: 'Avería del ventilador de emergencia',
fr_FR: "Défaut du ventilateur d'urgence",
de_DE: 'Notlüfterfehler',
pl_PL: 'Awaria wentylatora awaryjnego',
ar_EG: 'عطل المروحة الطارئة',
field: 'ACEmergencyFanFailure',
value: ''
},
{
label: '高压告警',
enlable: 'High voltage alarm',
enlable: 'High Voltage Alarm',
zh_CN: '高压告警',
en_US: 'High Voltage Alarm',
es_ES: 'Alerta de alta presión',
fr_FR: 'Alarme de haute tension',
de_DE: 'Hochspannungsalarm',
pl_PL: 'Alarm: zbyt wysokie napięcie',
ar_EG: 'إنذار جهد عال',
field: 'ACHighVoltageAlarm',
value: ''
},
{
label: '低压告警',
enlable: 'Low voltage alarm',
enlable: 'Low Voltage Alarm',
zh_CN: '低压告警',
en_US: 'Low Voltage Alarm',
es_ES: 'Alerta de baja presión',
fr_FR: 'Alarme de basse tension',
de_DE: 'Niederspannungsalarm',
pl_PL: 'Alarm: zbyt niskie napięcie',
ar_EG: 'إنذار جهد منخفض',
field: 'ACLowVoltageAlarm',
value: ''
},
{
label: '水浸告警',
enlable: 'Flooding alarm',
enlable: 'Flood Alarm',
zh_CN: '水浸告警',
en_US: 'Flood Alarm',
es_ES: 'Alerta de inundación',
fr_FR: "Alarme d'immersion",
de_DE: 'Überflutungsalarm',
pl_PL: 'Alarm zalania',
ar_EG: 'إنذار فيضان',
field: 'ACwaterloggAlarm',
value: ''
},
{
label: '烟感告警',
enlable: 'Smoke alarm',
enlable: 'Smoke Alarm',
zh_CN: '烟感告警',
en_US: 'Smoke Alarm',
es_ES: 'Alerta de detector de humo',
fr_FR: 'Alarme de fumée',
de_DE: 'Rauchalarm',
pl_PL: 'Alarm dymu',
ar_EG: 'إنذار دخان',
field: 'ACSmokeAlarm',
value: ''
},
{
label: '门禁告警',
enlable: 'Access control alarm',
enlable: 'Access Control Alarm',
zh_CN: '门禁告警',
en_US: 'Access Control Alarm',
es_ES: 'Alerta de acceso de puerta',
fr_FR: "Alarme de contrôle d'accès",
de_DE: 'Zugangskontrollalarm',
pl_PL: 'Alarm kontroli dostępu',
ar_EG: 'إنذار التحكم في الوصول',
field: 'ACGatingAlarm',
value: ''
}
]
export const ktLeftData3 = [
{
label: '高压锁定',
enlable: 'High voltage locking',
enlable: 'High Voltage Lockout',
zh_CN: '高压锁定',
en_US: 'High Voltage Lockout',
es_ES: 'Bloqueo por alta presión',
fr_FR: 'Verrouillage haute tension',
de_DE: 'Hochspannungsabschaltung',
pl_PL: 'Blokada: zbyt wysokie napięcie',
ar_EG: 'إغفال الجهد العالي',
field: 'ACHighVoltageLock',
value: ''
},
{
label: '低压锁定',
enlable: 'Low pressure locking',
enlable: 'Low Voltage Lockout',
zh_CN: '低压锁定',
en_US: 'Low Voltage Lockout',
es_ES: 'Bloqueo por baja presión',
fr_FR: 'Verrouillage basse tension',
de_DE: 'Niederspannungsabschaltung',
pl_PL: 'Blokada: zbyt niskie napięcie',
ar_EG: 'إغفال الجهد المنخفض',
field: 'ACLowVoltageLock',
value: ''
},
{
label: '排气锁定',
enlable: 'Exhaust lock',
enlable: 'Exhaust Lockout',
zh_CN: '排气锁定',
en_US: 'Exhaust Lockout',
es_ES: 'Bloqueo por escape',
fr_FR: "Verrouillage d'échappement",
de_DE: 'Abluftabschaltung',
pl_PL: 'Blokada układu wyciągowego powietrza',
ar_EG: 'إغفال العادم',
field: 'ACExhaustLock',
value: ''
},
{
label: '交流过压',
enlable: 'Ac overvoltage',
enlable: 'AC Overvoltage',
zh_CN: '交流过压',
en_US: 'AC Overvoltage',
es_ES: 'Sobretensión de CA',
fr_FR: 'Sur-tension CA',
de_DE: 'AC-Über Spannung',
pl_PL: 'Zbyt wysokie napięcie AC',
ar_EG: 'جهد زائد للتيار المتردد',
field: 'ACACOverVoltage',
value: ''
},
{
label: '交流欠压',
enlable: 'Ac undervoltage',
enlable: 'AC Undervoltage',
zh_CN: '交流欠压',
en_US: 'AC Undervoltage',
es_ES: 'Subtensión de CA',
fr_FR: 'Sous-tension CA',
de_DE: 'AC-Unter Spannung',
pl_PL: 'Zbyt niskie napięcie AC',
ar_EG: 'انخفاض جهد التيار المتردد',
field: 'ACACUnderVoltage',
value: ''
},
{
label: '交流掉电',
enlable: 'Ac power failure',
enlable: 'AC Power Loss',
zh_CN: '交流掉电',
en_US: 'AC Power Loss',
es_ES: 'Corte de suministro de CA',
fr_FR: "Pertes d'alimentation AC",
de_DE: 'AC-Stromausfall',
pl_PL: 'Zanik zasilania AC',
ar_EG: 'فقدان طاقة التيار المتردد',
field: 'ACACPowerFailure',
value: ''
},
{
label: '缺相',
enlable: 'Phase loss',
enlable: 'Phase Loss',
zh_CN: '缺相',
en_US: 'Phase Loss',
es_ES: 'Falta de fase',
fr_FR: 'Pertes de phase',
de_DE: 'Phasenausfall',
pl_PL: 'Zanik fazy',
ar_EG: 'فقدان الطور',
field: 'ACPhaseLoss',
value: ''
},
{
label: '频率异常',
enlable: 'Frequency anomaly',
enlable: 'Frequency Abnormality',
zh_CN: '频率异常',
en_US: 'Frequency Abnormality',
es_ES: 'Anomalía de frecuencia',
fr_FR: 'Anomalie de fréquence',
de_DE: 'Frequenzfehler',
pl_PL: 'Nieprawidłowa częstotliwość',
ar_EG: 'شذوذ التردد',
field: 'ACAbnormalFrequency',
value: ''
},
{
label: '逆相',
enlable: 'anti-phase',
enlable: 'Phase Reversal',
zh_CN: '逆相',
en_US: 'Phase Reversal',
es_ES: 'Inversión de fase',
fr_FR: 'Inversion de phase',
de_DE: 'Phasendrehung',
pl_PL: 'Błędna kolejność faz',
ar_EG: 'انعكاس الطور',
field: 'ACreversePhase',
value: ''
},
{
label: '直流过压',
enlable: 'Dc overvoltage',
enlable: 'DC Overvoltage',
zh_CN: '直流过压',
en_US: 'DC Overvoltage',
es_ES: 'Sobretensión de CC',
fr_FR: 'Sur-tension CC',
de_DE: 'DC-Über Spannung',
pl_PL: 'Zbyt wysokie napięcie DC',
ar_EG: 'جهد زائد DC',
field: 'ACDCOverVoltage',
value: ''
},
{
label: '直流欠压',
enlable: 'Dc undervoltage',
enlable: 'DC Undervoltage',
zh_CN: '直流欠压',
en_US: 'DC Undervoltage',
es_ES: 'Subvoltaje de corriente continua',
fr_FR: 'Sous-tension DC',
de_DE: 'Gleichstromunterspannung',
pl_PL: 'Napięcie stałe za niskie',
ar_EG: 'انخفاض جهد DC',
field: 'ACDCUnderVoltage',
value: ''
}
]

View File

@ -19,14 +19,7 @@ export default {
data() {
return {
timeLidu: 1,
times: [
{ label: '1分钟', value: 1 },
{ label: '5分钟', value: 5 },
{ label: '10分钟', value: 10 },
{ label: '15分钟', value: 15 },
{ label: '20分钟', value: 20 },
{ label: '30分钟', value: 30 }
],
times: this.$t('pcs.times'),
options: {
title: {
text: this.$t('pcs.noData'),

View File

@ -13,21 +13,24 @@
class="right-content-box"
>
<div class="title">
<span v-if="language === 'en'" class="title-left">Battery Group{{ index + 1 }}</span>
<span v-else class="title-left">电池组{{ index + 1 }}</span>
<!-- <span v-if="language === 'en'" class="title-left">Battery Group{{ index + 1 }}</span>
<span v-else class="title-left">{{ $t('pcs.batteryGroup') }}{{ index + 1 }}</span> -->
<span class="title-left">{{ $t('pcs.batteryGroup') }}{{ index + 1 }}</span>
</div>
<div class="content">
<div class="content-box margin-bottom">
<span class="d" />
<span v-if="language === 'en'" class="en-label">voltage</span>
<span v-else class="label">电压</span>
<!-- <span v-if="language === 'en'" class="en-label">voltage</span>
<span v-else class="label">{{ $t('pcs.vol') }}</span> -->
<span class="label">{{ $t('pcs.vol') }}</span>
<span class="value">{{ item.volValue === 0 ? '##' : item.volValue }}</span>
<span class="unit">V</span>
</div>
<div class="content-box">
<span class="d" />
<span v-if="language === 'en'" class="en-label">temperature</span>
<span v-else class="label">温度</span>
<!-- <span v-if="language === 'en'" class="en-label">temperature</span>
<span v-else class="label">{{ $t('pcs.tem') }}</span> -->
<span class="label">{{ $t('pcs.tem') }}</span>
<span class="value">{{ item.AValue === 0 ? '##' : item.AValue }}</span>
<span class="unit"></span>
</div>
@ -38,7 +41,7 @@
</ItemBox>
<TableChartDialog
:is-show.sync="visible"
title="电池簇历史数据"
:title="$t('pcs.batteryClusterHistoryData')"
:col="colValue"
:src-id="srcValue"
/>
@ -92,10 +95,10 @@ export default {
if (res.data.length > 15) {
res.data.forEach((item, index) => {
this.centerTopData.push({
volLabel: '电压',
volLabel: this.$t('pcs.vol'),
volField: `cSingleV${index + 1}`,
volValue: '',
ALabel: '温度',
ALabel: this.$t('pcs.tem'),
AField: `cSingleT${index + 1}`,
AValue: ''
})
@ -103,10 +106,10 @@ export default {
} else {
for (let i = 0; i < 15; i++) {
this.centerTopData.push({
volLabel: '电压',
volLabel: this.$t('pcs.vol'),
volField: `cSingleV${i + 1}`,
volValue: '',
ALabel: '温度',
ALabel: this.$t('pcs.tem'),
AField: `cSingleT${i + 1}`,
AValue: ''
})

View File

@ -10,13 +10,15 @@
>
<div class="box-title">
<div class="title">
<template v-if="language === 'en'">
<!-- <template v-if="language === 'en'">
{{ item.englabel }}
</template>
<template v-else>
{{ item.label }}
</template> -->
<template>
{{ item[language] }}
</template>
<span v-if="item.isMwh">
({{ item.value | kwhUnitFormat }})
</span>
@ -61,14 +63,14 @@
:class="className(item.value)"
>
<div class="label">
<template v-if="language === 'en'">
<el-tooltip :content="item.englabel" placement="top" effect="dark">
<span>{{ item.englabel }}</span>
<template v-if="language !== 'zh_CN'">
<el-tooltip :content="item[language]" placement="top" effect="dark">
<span>{{ item[language] }}</span>
</el-tooltip>
</template>
<template v-else>
{{ item.label }}
{{ item[language] }}
</template>
</div>
@ -96,24 +98,18 @@
<div class="top">
<span class="top-title">{{ $t('pcs.maxCellVol') }}</span>
<span class="top-value">
<span class="value">{{
rightAllData.bottomData.maxVol.value
}}</span>
<span class="value">{{ rightAllData.bottomData.maxVol.value }}</span>
<span class="unit">V</span>
</span>
</div>
<div class="bottom">
<span class="dczh">
<span class="dczh-title">{{ $t('pcs.batteryGroupNum') }}</span>
<span class="dczh-value">{{
rightAllData.bottomData.maxVol.BMUValue
}}</span>
<span class="dczh-value">{{ rightAllData.bottomData.maxVol.BMUValue }}</span>
</span>
<span class="dxwz">
<span class="dxwz-title">{{ $t('pcs.cellPostion') }}</span>
<span class="dxwz-value">{{
rightAllData.bottomData.maxVol.boxValue
}}</span>
<span class="dxwz-value">{{ rightAllData.bottomData.maxVol.boxValue }}</span>
</span>
</div>
</div>
@ -122,24 +118,18 @@
<div class="top">
<span class="top-title">{{ $t('pcs.minCellVol') }}</span>
<span class="top-value">
<span class="value">{{
rightAllData.bottomData.minVol.value
}}</span>
<span class="value">{{ rightAllData.bottomData.minVol.value }}</span>
<span class="unit">V</span>
</span>
</div>
<div class="bottom">
<span class="dczh">
<span class="dczh-title">{{ $t('pcs.batteryGroupNum') }}</span>
<span class="dczh-value">{{
rightAllData.bottomData.minVol.BMUValue
}}</span>
<span class="dczh-value">{{ rightAllData.bottomData.minVol.BMUValue }}</span>
</span>
<span class="dxwz">
<span class="dxwz-title">{{ $t('pcs.cellPostion') }}</span>
<span class="dxwz-value">{{
rightAllData.bottomData.minVol.boxValue
}}</span>
<span class="dxwz-value">{{ rightAllData.bottomData.minVol.boxValue }}</span>
</span>
</div>
</div>
@ -149,10 +139,7 @@
<span class="left">
<span class="jt" />
<span class="hight-v">{{ $t('pcs.maxTemDiff') }}</span>
<span class="v-value">{{
(rightAllData.bottomData.maxTem.value -
rightAllData.bottomData.minTmp.value).toFixed(3)
}}</span>
<span class="v-value">{{ (rightAllData.bottomData.maxTem.value - rightAllData.bottomData.minTmp.value).toFixed(3) }}</span>
<span class="unit"></span>
</span>
</div>
@ -161,24 +148,18 @@
<div class="top">
<span class="top-title">{{ $t('pcs.maxCellTem') }}</span>
<span class="top-value">
<span class="value">{{
rightAllData.bottomData.maxTem.value
}}</span>
<span class="value">{{ rightAllData.bottomData.maxTem.value }}</span>
<span class="unit"></span>
</span>
</div>
<div class="bottom">
<span class="dczh">
<span class="dczh-title">{{ $t('pcs.batteryGroupNum') }}</span>
<span class="dczh-value">{{
rightAllData.bottomData.maxTem.BMUValue
}}</span>
<span class="dczh-value">{{ rightAllData.bottomData.maxTem.BMUValue }}</span>
</span>
<span class="dxwz">
<span class="dxwz-title">{{ $t('pcs.cellPostion') }}</span>
<span class="dxwz-value">{{
rightAllData.bottomData.maxTem.boxValue
}}</span>
<span class="dxwz-value">{{ rightAllData.bottomData.maxTem.boxValue }}</span>
</span>
</div>
</div>
@ -187,24 +168,18 @@
<div class="top">
<span class="top-title">{{ $t('pcs.minCellTem') }}</span>
<span class="top-value">
<span class="value">{{
rightAllData.bottomData.minTmp.value
}}</span>
<span class="value">{{ rightAllData.bottomData.minTmp.value }}</span>
<span class="unit"></span>
</span>
</div>
<div class="bottom">
<span class="dczh">
<span class="dczh-title">{{ $t('pcs.batteryGroupNum') }}</span>
<span class="dczh-value">{{
rightAllData.bottomData.minTmp.BMUValue
}}</span>
<span class="dczh-value">{{ rightAllData.bottomData.minTmp.BMUValue }}</span>
</span>
<span class="dxwz">
<span class="dxwz-title">{{ $t('pcs.cellPostion') }}</span>
<span class="dxwz-value">{{
rightAllData.bottomData.minTmp.boxValue
}}</span>
<span class="dxwz-value">{{ rightAllData.bottomData.minTmp.boxValue }}</span>
</span>
</div>
</div>
@ -329,7 +304,6 @@ export default {
this.rightAllData.bottomData.minTmp.value = res.data[this.rightAllData.bottomData.minTmp.field]?.value
this.rightAllData.bottomData.minTmp.BMUValue = res.data[this.rightAllData.bottomData.minTmp.BMUField]?.value
this.rightAllData.bottomData.minTmp.boxValue = res.data[this.rightAllData.bottomData.minTmp.boxField]?.value
console.log(6666, this.rightAllData)
} catch (error) {
console.log(error)
} finally {

View File

@ -1,56 +1,541 @@
export const centerBottomData = [
{
label: '紧急停机',
enlable: 'Emergency Stop',
zh_CN: '紧急停机',
en_US: 'Emergency Stop',
es_ES: 'Parada de emergencia',
fr_FR: "Arrêt d'urgence",
de_DE: 'Not-Aus',
pl_PL: 'STOP wyłącznik awaryjny',
ar_EG: 'إيقاف طارئ',
field: 'eStop',
value: ''
},
{
label: '直流输入过压',
enlable: 'DC Input Overvoltage',
zh_CN: '直流输入过压',
en_US: 'DC Input Overvoltage',
es_ES: 'Sobretensión de entrada de CC',
fr_FR: "Surtension d'entrée CC",
de_DE: 'DC-Eingangsüberspannung',
pl_PL: 'DC zbyt wysokie napięcie wejściowe',
ar_EG: 'جهد زائد لمدخل DC',
field: 'dcInputOverVol',
value: ''
},
{
label: '直流输入欠压',
enlable: 'DC Input Undervoltage',
zh_CN: '直流输入欠压',
en_US: 'DC Input Undervoltage',
es_ES: 'Subtensión de entrada de CC',
fr_FR: "Sous-tension d'entrée CC",
de_DE: 'DC-Eingangsunterspannung',
pl_PL: 'DC zbyt niskie napięcie wejściowe',
ar_EG: 'انخفاض جهد مدخل DC',
field: 'dcInputDebtVol',
value: ''
},
{
label: '直流母线过压',
enlable: 'DC Bus Overvoltage',
zh_CN: '直流母线过压',
en_US: 'DC Bus Overvoltage',
es_ES: 'Sobretensión de barra de CC',
fr_FR: 'Surtension du jeu de barres CC',
de_DE: 'DC-Zwischenkreisüberspannung',
pl_PL: 'DC zbyt wysokie napięcie szyny',
ar_EG: 'جهد زائد ناقل DC',
field: 'dcBusOverVol',
value: ''
},
{
label: '直流母线欠压',
enlable: 'DC Bus Undervoltage',
zh_CN: '直流母线欠压',
en_US: 'DC Bus Undervoltage',
es_ES: 'Subtensión de barra de CC',
fr_FR: 'Sous-tension du jeu de barres CC',
de_DE: 'DC-Zwischenkreisunterspannung',
pl_PL: 'DC zbyt niskie napięcie szyny',
ar_EG: 'انخفاض جهد ناقل DC',
field: 'dcBusDebtVol',
value: ''
},
{
label: '直流母线电压不平衡',
enlable: 'DC Bus Voltage Imbalance',
zh_CN: '直流母线电压不平衡',
en_US: 'DC Bus Voltage Imbalance',
es_ES: 'Desequilibrio de voltaje de barra de CC',
fr_FR: 'Déséquilibre de tension du jeu de barres CC',
de_DE: 'DC-Zwischenkreis-Spannungsungleichgewicht',
pl_PL: 'DC niezrównoważenie napięcia szyny',
ar_EG: 'عدم توازن جهد ناقل DC',
field: 'dcBusVolImbalance',
value: ''
},
{
label: '交流母线过压',
enlable: 'AC Bus Overvoltage',
zh_CN: '交流母线过压',
en_US: 'AC Bus Overvoltage',
es_ES: 'Sobretensión de barra de CA',
fr_FR: 'Surtension du jeu de barres CA',
de_DE: 'AC-Netzüberspannung',
pl_PL: 'AC zbyt wysokie napięcie szyny',
ar_EG: 'جهد زائد ناقل AC',
field: 'acBusOverVol',
value: ''
},
{
label: '交流母线欠压',
enlable: 'AC Bus Undervoltage',
zh_CN: '交流母线欠压',
en_US: 'AC Bus Undervoltage',
es_ES: 'Subtensión de barra de CA',
fr_FR: 'Sous-tension du jeu de barres CA',
de_DE: 'AC-Netzunterspannung',
pl_PL: 'AC zbyt niskie napięcie szyny',
ar_EG: 'انخفاض جهد ناقل AC',
field: 'acBusDebtVol',
value: ''
},
{
label: '交流母线过频',
enlable: 'AC Bus Overfrequency',
zh_CN: '交流母线过频',
en_US: 'AC Bus Overfrequency',
es_ES: 'Sobrefrecuencia de barra de CA',
fr_FR: 'Surfréquence du jeu de barres CA',
de_DE: 'AC-Überfrequenz',
pl_PL: 'AC zbyt wysoka częstotliwość',
ar_EG: 'تردد زائد ناقل AC',
field: 'acBusOverFreq',
value: ''
},
{
label: '交流母线欠频',
enlable: 'AC Bus Underfrequency',
zh_CN: '交流母线欠频',
en_US: 'AC Bus Underfrequency',
es_ES: 'Subfrecuencia de barra de CA',
fr_FR: 'Basse fréquence du jeu de barres CA',
de_DE: 'AC-Underfrequenz',
pl_PL: 'AC zbyt niska częstotliwość',
ar_EG: 'انخفاض تردد ناقل AC',
field: 'acBusDebtFreq',
value: ''
}
]
export const rightAllData = {
top: [
{
label: '累计充电量',
englabel: 'Cumulative Charged Energy',
zh_CN: '累计充电量',
en_US: 'Cumulative Charged Energy',
es_ES: 'Energía de carga acumulada',
fr_FR: 'Énergie chargée cumulée',
de_DE: 'Kumulative Ladeenergie',
pl_PL: 'Skumulowana energia ładowania',
ar_EG: 'الطاقة المشحونة التراكمية',
isMwh: true,
unit: 'kWh',
field: 'cTotalChargePower',
value: ''
},
{
label: '累计放电量',
englabel: 'Cumulative Discharged Energy',
zh_CN: '累计放电量',
en_US: 'Cumulative Discharged Energy',
es_ES: 'Energía de descarga acumulada',
fr_FR: 'Énergie déchargée cumulée',
de_DE: 'Kumulative Entladeenergie',
pl_PL: 'Skumulowana energia rozładowania',
ar_EG: 'الطاقة المفرغة التراكمية',
isMwh: true,
unit: 'kWh',
field: 'cTotalDisChargePower',
value: ''
},
{
label: 'SOC',
englabel: 'SOC',
zh_CN: 'SOC',
en_US: 'SOC',
es_ES: 'SOC',
fr_FR: 'SOC',
de_DE: 'SOC',
pl_PL: 'SOC',
ar_EG: 'SOC',
unit: '%',
field: 'clusterSOC',
value: ''
},
{
label: 'SOH',
englabel: 'SOH',
zh_CN: 'SOH',
en_US: 'SOH',
es_ES: 'SOH',
fr_FR: 'SOH',
de_DE: 'SOH',
pl_PL: 'SOH',
ar_EG: 'SOH',
unit: '%',
field: 'clusterSOH',
value: ''
}
],
centerAvgData: {
AvgV: {
label: '平均电压',
field: 'csingleAgeV',
value: '',
zh_CN: '平均电压',
en_US: 'Average Voltage',
es_ES: 'Voltaje medio',
fr_FR: 'Tension moyenne',
de_DE: 'Durchschnittsspannung',
pl_PL: 'Średnie napięcie',
ar_EG: 'متوسط الجهد'
},
AvgT: {
label: '平均温度',
field: 'cageT',
value: '',
zh_CN: '平均温度',
en_US: 'Average Temperature',
es_ES: 'Temperatura media',
fr_FR: 'Température moyenne',
de_DE: 'Durchschnittstemperatur',
pl_PL: 'Średnia temperatura',
ar_EG: 'متوسط درجة الحرارة'
}
},
bottomData: {
maxVol: {
label: '最高电压',
field: 'csingleMaxVolData',
value: '',
BMULabel: '电池组号',
BMUField: 'csingleMaxVolBMUNum',
BMUValue: '',
boxLabel: '电芯位置',
boxField: 'csingleMaxVolBoxNum',
boxValue: '',
zh_CN: '最高电压',
en_US: 'Maximum Voltage',
es_ES: 'Voltaje máximo',
fr_FR: 'Tension maximale',
BMUfr_FR: 'No. de bloc-batterie',
boxfr_FR: 'Position de la cellule',
BMUes_ES: 'Número de grupo de baterías',
boxes_ES: 'Posición de la célula',
de_DE: 'Maximalspannung',
BMUde_DE: 'Batterieblock-Nr.',
boxde_DE: 'Zellposition',
pl_PL: 'Maksymalne napięcie',
BMUpl_PL: 'Numer bloku baterii',
boxpl_PL: 'Pozycja ogniwa',
ar_EG: 'أقصى جهد'
},
minVol: {
label: '最低电压',
field: 'csingleMinVolData',
value: '',
BMULabel: '电池组号',
BMUField: 'csingleMinVolBMUNum',
BMUValue: '',
boxLabel: '电芯位置',
boxField: 'csingleMinVolBoxNum',
boxValue: '',
zh_CN: '最低电压',
en_US: 'Minimum Voltage',
es_ES: 'Tensión mínimo',
fr_FR: 'Tension minimale',
BMUfr_FR: 'No. de bloc-batterie',
boxfr_FR: 'Position de la cellule',
BMUes_ES: 'Número de grupo de baterías',
boxes_ES: 'Posición de la célula',
de_DE: 'Minimalspannung',
BMUde_DE: 'Batterieblock-Nr.',
boxde_DE: 'Zellposition',
pl_PL: 'Minimalne napięcie',
BMUpl_PL: 'Numer bloku baterii',
boxpl_PL: 'Pozycja ogniwa',
ar_EG: 'أدنى جهد'
},
maxTem: {
label: '最高温度',
field: 'csingleMaxTemData',
value: '',
BMULabel: '电池组号',
BMUField: 'csingleMaxTemBMUNum',
BMUValue: '',
boxLabel: '电芯位置',
boxField: 'csingleMaxTemBoxNum',
boxValue: '',
zh_CN: '最高温度',
en_US: 'Maximum Temperature',
es_ES: 'Temperatura máxima',
fr_FR: 'Température maximale',
BMUfr_FR: 'No. de bloc-batterie',
boxfr_FR: 'Position de la cellule',
BMUes_ES: 'Número de grupo de baterías',
boxes_ES: 'Posición de la célula',
de_DE: 'Maximaltemperatur',
BMUde_DE: 'Batterieblock-Nr.',
boxde_DE: 'Zellposition',
pl_PL: 'Maksymalna temperatura',
BMUpl_PL: 'Numer bloku baterii',
boxpl_PL: 'Pozycja ogniwa',
ar_EG: 'أقصى جهد'
},
minTmp: {
label: '最低温度',
field: 'csingleMinTemData',
value: '',
BMULabel: '电池组号',
BMUField: 'csingleMinTemBMUNum',
BMUValue: '',
boxLabel: '电芯位置',
boxField: 'csingleMinTemBoxNum',
boxValue: '',
zh_CN: '最低温度',
en_US: 'Minimum Temperature',
es_ES: 'Temperatura mínima',
fr_FR: 'Température minimale',
BMUfr_FR: 'No. de bloc-batterie',
boxfr_FR: 'Position de la cellule',
BMUes_ES: 'Número de grupo de baterías',
boxes_ES: 'Posición de la célula',
de_DE: 'Minimaltemperatur',
BMUde_DE: 'Batterieblock-Nr.',
boxde_DE: 'Zellposition',
pl_PL: 'Minimalna temperatura',
BMUpl_PL: 'Numer bloku baterii',
boxpl_PL: 'Pozycja ogniwa',
ar_EG: 'أدنى جهد'
}
}
}
export const pcsRightData = [
{
label: '充电温度高',
englabel: 'High Charge Temperature',
zh_CN: '充电温度高',
en_US: 'High Charge Temperature',
es_ES: 'Temperatura alta durante la carga',
fr_FR: 'Température de charge élevée',
de_DE: 'Hohe Ladtemperatur',
pl_PL: 'Zbyt wysoka temperatura ładowania',
ar_EG: 'درجة حرارة شحن مرتفعة',
field: 'clusterAlarmCodeLBit0',
value: ''
},
{
label: '充电温度低',
englabel: 'Low Charge Temperature',
zh_CN: '充电温度低',
en_US: 'Low Charge Temperature',
es_ES: 'Temperatura baja durante la carga',
fr_FR: 'Température de charge basse',
de_DE: 'Niedrige Ladtemperatur',
pl_PL: 'Zbyt niska temperatura ładowania',
ar_EG: 'درجة حرارة شحن منخفضة',
field: 'clusterAlarmCodeLBit1',
value: ''
},
{
label: '放电温度高',
englabel: 'High Discharge Temperature',
zh_CN: '放电温度高',
en_US: 'High Discharge Temperature',
es_ES: 'Temperatura alta durante la descarga',
fr_FR: 'Température de décharge élevée',
de_DE: 'Hohe Entladetemperatur',
pl_PL: 'Zbyt wysoka temperatura rozładowania',
ar_EG: 'درجة حرارة تفريغ مرتفعة',
field: 'clusterAlarmCodeLBit2',
value: ''
},
{
label: '放电温度低',
englabel: 'Low Discharge Temperature',
zh_CN: '放电温度低',
en_US: 'Low Discharge Temperature',
es_ES: 'Temperatura baja durante la descarga',
fr_FR: 'Température de décharge basse',
de_DE: 'Niedrige Entladetemperatur',
pl_PL: 'Zbyt niska temperatura rozładowania',
ar_EG: 'درجة حرارة تفريغ منخفضة',
field: 'clusterAlarmCodeLBit3',
value: ''
},
{
label: '充电温差大',
englabel: 'High Charge Temperature Difference',
zh_CN: '充电温差大',
en_US: 'High Charge Temperature Difference',
es_ES: 'Gran diferencia de temperatura durante la carga',
fr_FR: 'Écart de température de charge élevé',
de_DE: 'Hohe Ladtemperaturdifferenz',
pl_PL: 'Zbyt duża różnica temperatur podczas ładowania',
ar_EG: 'فرق درجة حرارة الشحن مرتفع',
field: 'clusterAlarmCodeLBit4',
value: ''
},
{
label: '放电温差大',
englabel: 'High Discharge Temperature Difference',
zh_CN: '放电温差大',
en_US: 'High Discharge Temperature Difference',
es_ES: 'Gran diferencia de temperatura durante la descarga',
fr_FR: 'Écart de température de décharge élevé',
de_DE: 'Hohe Entladetemperaturdifferenz',
pl_PL: 'Zbyt duża różnica temperatur podczas rozładowania',
ar_EG: 'فرق درجة حرارة التفريغ مرتفع',
field: 'clusterAlarmCodeLBit5',
value: ''
},
{
label: '环境温度高',
englabel: 'High Ambient Temperature',
zh_CN: '环境温度高',
en_US: 'High Ambient Temperature',
es_ES: 'Temperatura ambiental alta',
fr_FR: 'Température ambiante élevée',
de_DE: 'Hohe Umgebungstemperatur',
pl_PL: 'Zbyt wysoka temperatura otoczenia',
ar_EG: 'درجة حرارة المحيطة مرتفعة',
field: 'clusterAlarmCodeLBit6',
value: ''
},
{
label: '单体电压高',
englabel: 'High Cell Voltage',
zh_CN: '单体电压高',
en_US: 'High Cell Voltage',
es_ES: 'Tensión de célula alto',
fr_FR: 'Tension de cellule élevée',
de_DE: 'Hohe Zellspannung',
pl_PL: 'Zbyt wysokie napięcie ogniwa',
ar_EG: 'جهد خلية مرتفع',
field: 'clusterAlarmCodeLBit8',
value: ''
},
{
label: '单体电压低',
englabel: 'Low Cell Voltage',
zh_CN: '单体电压低',
en_US: 'Low Cell Voltage',
es_ES: 'Tensión de célula bajo',
fr_FR: 'Tension de cellule basse',
de_DE: 'Niedrige Zellspannung',
pl_PL: 'Zbyt niskie napięcie ogniwa',
ar_EG: 'جهد خلية منخفض',
field: 'clusterAlarmCodeLBit9',
value: ''
},
{
label: '充电压差大',
englabel: 'High Charge Voltage Difference',
zh_CN: '充电压差大',
en_US: 'High Charge Voltage Difference',
es_ES: 'Gran diferencia de voltaje durante la carga',
fr_FR: 'Écart de tension de charge élevé',
de_DE: 'Hohe Ladespannungsdifferenz',
pl_PL: 'Zbyt duża różnica napięć podczas ładowania',
ar_EG: 'فرق جهد الشحن مرتفع',
field: 'clusterAlarmCodeLBit10',
value: ''
},
{
label: '放电压差大',
englabel: 'High Discharge Voltage Difference',
zh_CN: '放电压差大',
en_US: 'High Discharge Voltage Difference',
es_ES: 'Gran diferencia de voltaje durante la descarga',
fr_FR: 'Écart de tension de décharge élevé',
de_DE: 'Hohe Entladespannungsdifferenz',
pl_PL: 'Zbyt duża różnica napięć podczas rozładowania',
ar_EG: 'فرق جهد التفريغ مرتفع',
field: 'clusterAlarmCodeLBit11',
value: ''
},
{
label: 'SOC低',
englabel: 'Low SOC',
zh_CN: 'SOC低',
en_US: 'Low SOC',
es_ES: 'SOC bajo',
fr_FR: 'SOC faible',
de_DE: 'Niedriger SOC',
pl_PL: 'Zbyt niski poziom naładowania (SOC)',
ar_EG: 'مستخفض SOC',
field: 'clusterAlarmCodeLBit12',
value: ''
},
{
label: '充电电流大',
englabel: 'High Charge Current',
zh_CN: '充电电流大',
en_US: 'High Charge Current',
es_ES: 'Corriente de carga alta',
fr_FR: 'Courant de charge élevé',
de_DE: 'Hoher Ladestrom',
pl_PL: 'Zbyt wysoki prąd ładowania',
ar_EG: 'تيار شحن مرتفع',
field: 'clusterAlarmCodeLBit13',
value: ''
},
{
label: '放电电流大',
englabel: 'High Discharge Current',
zh_CN: '放电电流大',
en_US: 'High Discharge Current',
es_ES: 'Corriente de descarga alta',
fr_FR: 'Courant de décharge élevé',
de_DE: 'Hoher Entladestrom',
pl_PL: 'Zbyt wysoki prąd rozładowania',
ar_EG: 'تيار تفريغ مرتفع',
field: 'clusterAlarmCodeLBit14',
value: ''
},
{
label: '总电压过高',
englabel: 'Total Voltage Too High',
zh_CN: '总电压过高',
en_US: 'Total Voltage Too High',
es_ES: 'Tensión total excesivo',
fr_FR: 'Tension totale trop élevée',
de_DE: 'Gesamtspannung zu hoch',
pl_PL: 'Zbyt wysokie napięcie całkowite',
ar_EG: 'الجهد الإجمالي مرتفع جداً',
field: 'clusterAlarmCodeLBit15',
value: ''
},
{
label: '总电压过低',
englabel: 'Total Voltage Too Low',
zh_CN: '总电压过低',
en_US: 'Total Voltage Too Low',
es_ES: 'Voltaje total demasiado bajo',
fr_FR: 'Tension totale trop basse',
de_DE: 'Gesamtspannung zu niedrig',
pl_PL: 'Zbyt niskie napięcie zasilania',
ar_EG: 'الجهد الكلي منخفض جدًا',
field: 'clusterAlarmCodeLBit16',
value: ''
}
]
export const centerTopData = [
{
volLabel: '电压',
@ -174,287 +659,3 @@ export const centerTopData = [
}
]
export const rightAllData = {
top: [
{
label: '累计充电量',
englabel: 'Total Charging',
isMwh: true,
unit: 'kWh',
field: 'cTotalChargePower',
value: ''
},
{
label: '累计放电量',
englabel: 'Total Discharging',
isMwh: true,
unit: 'kWh',
field: 'cTotalDisChargePower',
value: ''
},
// {
// label: '绝缘正电阻',
// field: 'cInsulationPositiveResistance',
// unit: 'kΩ',
// value: ''
// },
// {
// label: '绝缘负电阻',
// unit: 'kΩ',
// field: 'cInsulationNegativeResistance',
// value: ''
// },
{
label: 'SOC',
unit: '%',
englabel: 'SOC',
field: 'clusterSOC',
value: ''
},
{
label: 'SOH',
unit: '%',
englabel: 'SOH',
field: 'clusterSOH',
value: ''
}
],
centerAvgData: {
AvgV: {
label: '平均电压',
field: 'csingleAgeV',
value: ''
},
AvgT: {
label: '平均温度',
field: 'cageT',
value: ''
}
},
bottomData: {
maxVol: {
label: '最高电压',
field: 'csingleMaxVolData',
value: '',
BMULabel: '电池组号',
BMUField: 'csingleMaxVolBMUNum',
BMUValue: '',
boxLabel: '电芯位置',
boxField: 'csingleMaxVolBoxNum',
boxValue: ''
},
minVol: {
label: '最低电压',
field: 'csingleMinVolData',
value: '',
BMULabel: '电池组号',
BMUField: 'csingleMinVolBMUNum',
BMUValue: '',
boxLabel: '电芯位置',
boxField: 'csingleMinVolBoxNum',
boxValue: ''
},
maxTem: {
label: '最高温度',
field: 'csingleMaxTemData',
value: '',
BMULabel: '电池组号',
BMUField: 'csingleMaxTemBMUNum',
BMUValue: '',
boxLabel: '电芯位置',
boxField: 'csingleMaxTemBoxNum',
boxValue: ''
},
minTmp: {
label: '最低温度',
field: 'csingleMinTemData',
value: '',
BMULabel: '电池组号',
BMUField: 'csingleMinTemBMUNum',
BMUValue: '',
boxLabel: '电芯位置',
boxField: 'csingleMinTemBoxNum',
boxValue: ''
}
}
}
export const pcsRightData = [
{
label: '充电温度高',
englabel: 'High charging temperature',
field: 'clusterAlarmCodeLBit0',
value: ''
},
{
label: '充电温度低',
englabel: 'Low charging temperature',
field: 'clusterAlarmCodeLBit1',
value: ''
},
{
label: '放电温度高',
englabel: 'High discharging temperature',
field: 'clusterAlarmCodeLBit2',
value: ''
},
{
label: '放电温度低',
englabel: 'Low discharging temperature',
field: 'clusterAlarmCodeLBit3',
value: ''
},
{
label: '充电温差大',
englabel: 'Large charging temperature difference',
field: 'clusterAlarmCodeLBit4',
value: ''
},
{
label: '放电温差大',
englabel: 'Large discharge temperature difference',
field: 'clusterAlarmCodeLBit5',
value: ''
},
{
label: '环境温度高',
englabel: 'High ambient temperature',
field: 'clusterAlarmCodeLBit6',
value: ''
},
{
label: '单体电压高',
englabel: 'High cell voltage',
field: 'clusterAlarmCodeLBit8',
value: ''
},
{
label: '单体电压低',
englabel: 'Cell low voltage',
field: 'clusterAlarmCodeLBit9',
value: ''
},
{
label: '充电压差大',
englabel: 'Large charging voltage difference',
field: 'clusterAlarmCodeLBit10',
value: ''
},
{
label: '放电压差大',
englabel: 'Large discharging voltage difference',
field: 'clusterAlarmCodeLBit11',
value: ''
},
{
label: 'SOC低',
englabel: 'Low SOC',
field: 'clusterAlarmCodeLBit12',
value: ''
},
{
label: '充电电流大',
englabel: 'High charging current',
field: 'clusterAlarmCodeLBit13',
value: ''
},
{
label: '放电电流大',
englabel: 'High discharge current',
field: 'clusterAlarmCodeLBit14',
value: ''
},
{
label: '总电压过高',
englabel: 'overvoltage',
field: 'clusterAlarmCodeLBit15',
value: ''
},
{
label: '总电压过低',
englabel: 'The total voltage is too low',
field: 'clusterAlarmCodeLBit16',
value: ''
}
]
// export const pcsRightData = [
// {
// label: '放电温度高',
// field: 'clusterAlarmCodeLBit0',
// value: ''
// },
// {
// label: '放电温度低',
// field: 'clusterAlarmCodeLBit1',
// value: ''
// },
// {
// label: '单体电压高',
// field: 'clusterAlarmCodeLBit2',
// value: ''
// },
// {
// label: '单体电压低',
// field: 'clusterAlarmCodeLBit3',
// value: ''
// },
// {
// label: 'SOC低',
// field: 'clusterAlarmCodeLBit5',
// value: ''
// },
// {
// label: 'SOC高',
// field: 'clusterAlarmCodeLBit6',
// value: ''
// },
// {
// label: '充电电流大',
// field: 'clusterAlarmCodeLBit8',
// value: ''
// },
// {
// label: '放电电流大',
// field: 'clusterAlarmCodeLBit9',
// value: ''
// },
// {
// label: '温差大',
// field: 'clusterAlarmCodeLBit10',
// value: ''
// },
// {
// label: '绝缘低',
// field: 'clusterAlarmCodeLBit11',
// value: ''
// },
// {
// label: '总压高',
// field: 'clusterAlarmCodeLBit12',
// value: ''
// },
// {
// label: '总压低',
// field: 'clusterAlarmCodeLBit13',
// value: ''
// },
// {
// label: '充电温度高',
// field: 'clusterAlarmCodeLBit14',
// value: ''
// },
// {
// label: '充电温度低',
// field: 'clusterAlarmCodeLBit15',
// value: ''
// }
// ]

View File

@ -115,7 +115,7 @@ export default {
const xAxis = []
val.forEach((v) => {
xAxis.push(v.data)
gonglv.push(v.planCurve)
gonglv.push(v.inCoreDataCurve)
})
this.options = {
color: ['#00C8FF', '#FBBB11'],

View File

@ -23,8 +23,9 @@
:key="item.label"
class="box-title"
>
<span v-if="language === 'en'" class="title">{{ item.englabel }}</span>
<span v-else class="title">{{ item.label }}</span>
<!-- <span v-if="language === 'en'" class="title">{{ item.englabel }}</span>
<span v-else class="title">{{ item.label }}</span> -->
<span class="title">{{ item[language] }}</span>
<span class="value">{{ item.value }}</span>
<span class="unit">{{ item.unit }}</span>
</div>
@ -40,8 +41,9 @@
:key="item.label"
class="box-title"
>
<span v-if="language === 'en'" class="title">{{ item.englabel }}</span>
<span v-else class="title">{{ item.label }}</span>
<!-- <span v-if="language === 'en'" class="title">{{ item.englabel }}</span>
<span v-else class="title">{{ item.label }}</span> -->
<span class="title">{{ item[language] }}</span>
<span class="value">{{ item.value }}</span>
<span class="unit">{{ item.unit }}</span>
</div>
@ -171,7 +173,6 @@
width="100"
height="100"
style="cursor: pointer;"
@click="lookDeviceDetail('triad-pcs-left')"
/>
<rect
x="160"
@ -330,15 +331,15 @@ export default {
data() {
return {
frameImg,
value: 'XX直流舱',
value: 'XX' + this.$t('pcs.dCCabin'),
times: [
{ label: 'XX直流舱', value: 'XX直流舱' },
{ label: 'XX1直流舱', value: 'XX1直流舱' },
{ label: 'XX2直流舱', value: 'XX2直流舱' },
{ label: 'XX3直流舱', value: 'XX3直流舱' }
{ label: 'XX' + this.$t('pcs.dCCabin'), value: 'XX' + this.$t('pcs.dCCabin') },
{ label: 'XX1' + this.$t('pcs.dCCabin'), value: 'XX1' + this.$t('pcs.dCCabin') },
{ label: 'XX2' + this.$t('pcs.dCCabin'), value: 'XX2' + this.$t('pcs.dCCabin') },
{ label: 'XX3' + this.$t('pcs.dCCabin'), value: 'XX3' + this.$t('pcs.dCCabin') }
],
config: {
header: ['告警'],
header: [this.$t('pcs.alarm')],
data: [],
columnWidth: [],
align: ['center', 'center', 'center', 'center'],
@ -411,7 +412,6 @@ 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

@ -3,7 +3,8 @@
<div class="left-top-wrap">
<ItemBox :title="$t('pcs.faultSign')">
<div slot="title-right" />
<ColListData v-loading="loading" :col-list-data="pcsRightData" :label-key="language === 'en' ? 'englabel' : 'label'" />
<!-- <ColListData v-loading="loading" :col-list-data="pcsRightData" :label-key="language === 'en' ? 'englabel' : 'label'" /> -->
<ColListData v-loading="loading" :col-list-data="pcsRightData" :label-key="language" />
</ItemBox>
</div>
</div>

View File

@ -3,233 +3,418 @@ export const pcsRightData = [
label: 'EPO故障',
englabel: '',
field: 'YX0058',
value: ''
value: '',
zh_CN: 'EPO故障',
en_US: 'EPO Fault',
es_ES: 'Falla EPO',
fr_FR: 'Panne EPO',
de_DE: 'EPO Fehler',
pl_PL: 'Usterka EPO',
ar_EG: 'عطل EPO'
},
{
label: 'IGBT OCP故障',
englabel: '',
field: 'YX0059',
value: ''
value: '',
zh_CN: 'IGBT OCP故障',
en_US: 'IGBT OCP Fault',
es_ES: 'Falla IGBT OCP',
fr_FR: 'Panne IGBT OCP',
de_DE: 'IGBT OCP Fehler',
pl_PL: 'Usterka IGBT OCP',
ar_EG: 'عطل IGBT OCP'
},
{
label: '高压侧硬件过压故障',
englabel: '',
field: 'YX0060',
value: ''
value: '',
zh_CN: '高压侧硬件过压故障',
en_US: 'HV Side Hardware Overvoltage Fault',
es_ES: 'Falla de Sobretensión de Hardware Lado HV',
fr_FR: 'Panne de Survoltage Matériel Côté HV',
de_DE: 'HV-Seite Hardware Überspannungsfehler',
pl_PL: 'Usterka Przewyższenia Napięcia Hardware Strony Wysokiego Napięcia',
ar_EG: 'عطل فرط الجهد المادي لجهة الجهد العالي'
},
{
label: '高压侧硬件过流故障',
englabel: '',
field: 'YX0061',
value: ''
value: '',
zh_CN: '高压侧硬件过流故障',
en_US: 'HV Side Hardware Overcurrent Fault',
es_ES: 'Falla de Sobrecorriente de Hardware Lado HV',
fr_FR: 'Panne de Surintensité Matériel Côté HV',
de_DE: 'HV-Seite Hardware Überstromfehler',
pl_PL: 'Usterka Przekroczenia Prądu Hardware Strony Wysokiego Napięcia',
ar_EG: 'عطل فرط التيار المادي لجهة الجهد العالي'
},
{
label: 'IGBT硬件过流故障',
englabel: '',
field: 'YX0062',
value: ''
value: '',
zh_CN: 'IGBT硬件过流故障',
en_US: 'IGBT Hardware Overcurrent Fault',
es_ES: 'Falla de Sobrecorriente de Hardware IGBT',
fr_FR: 'Panne de Surintensité Matériel IGBT',
de_DE: 'IGBT Hardware Überstromfehler',
pl_PL: 'Usterka Przekroczenia Prądu Hardware IGBT',
ar_EG: 'عطل فرط التيار المادي لـ IGBT'
},
{
label: '24V辅助电源故障',
englabel: '',
field: 'YX0063',
value: ''
value: '',
zh_CN: '24V辅助电源故障',
en_US: '24V Auxiliary Power Fault',
es_ES: 'Falla de Fuente de Alimentación Auxiliar 24V',
fr_FR: 'Panne de Source d\'Alimentation Auxiliaire 24V',
de_DE: '24V Hilfsstromversorgungsfehler',
pl_PL: 'Usterka Zasilania Pomocniczego 24V',
ar_EG: 'عطل طاقة مساعدة 24V'
},
{
label: '风扇故障',
englabel: '',
field: 'YX0064',
value: ''
value: '',
zh_CN: '风扇故障',
en_US: 'Fan Fault',
es_ES: 'Falla de Ventilador',
fr_FR: 'Panne de Ventilateur',
de_DE: 'Lüfter Fehler',
pl_PL: 'Usterka Wentylatora',
ar_EG: 'عطل المروحة'
},
{
label: '连接故障',
englabel: '',
field: 'YX0065',
value: ''
value: '',
zh_CN: '连接故障',
en_US: 'Connection Fault',
es_ES: 'Falla de Conexión',
fr_FR: 'Panne de Connexion',
de_DE: 'Verbindungsfehler',
pl_PL: 'Usterka Połączenia',
ar_EG: 'عطل الاتصال'
},
{
label: '功率模块过温',
englabel: '',
field: 'YX0066',
value: ''
value: '',
zh_CN: '功率模块过温',
en_US: 'Power Module Over Temperature',
es_ES: 'Sobretemperatura de Módulo de Potencia',
fr_FR: 'Surchauffe de Module de Puissance',
de_DE: 'Leistungsmodul Überhitzung',
pl_PL: 'Przewyższenie Temperatury Modułu Mocy',
ar_EG: 'فرط درجة حرارة وحدة القوة'
},
{
label: '±15V辅源故障',
englabel: '',
field: 'YX0067',
value: ''
value: '',
zh_CN: '±15V辅源故障',
en_US: '±15V Auxiliary Power Fault',
es_ES: 'Falla de Fuente Auxiliar ±15V',
fr_FR: 'Panne de Source Auxiliaire ±15V',
de_DE: '±15V Hilfsstromversorgungsfehler',
pl_PL: 'Usterka Zasilania Pomocniczego ±15V',
ar_EG: 'عطل طاقة مساعدة ±15V'
},
{
label: '预充电超时故障',
englabel: '',
field: 'YX0068',
value: ''
value: '',
zh_CN: '预充电超时故障',
en_US: 'Pre-Charge Timeout Fault',
es_ES: 'Falla de Tiempo de Espera de Precarga',
fr_FR: 'Panne de Délai de Précharge',
de_DE: 'Vorladungszeitüberschreitungsfehler',
pl_PL: 'Usterka Przekroczenia Czasu Przedładowania',
ar_EG: 'عطل انتهاء مهلة الشحن المسبق'
},
{
label: '低压侧A相软件过流故障',
englabel: '',
field: 'YX0069',
value: ''
value: '',
zh_CN: '低压侧A相软件过流故障',
en_US: 'LV Side Phase A Software Overcurrent Fault',
es_ES: 'Falla de Sobrecorriente Software Fase A Lado LV',
fr_FR: 'Panne de Surintensité Logiciel Phase A Côté LV',
de_DE: 'LV-Seite Phase A Software Überstromfehler',
pl_PL: 'Usterka Przekroczenia Prądu Oprogramowania Fazy A Strony Niskiego Napięcia',
ar_EG: 'عطل فرط التيار البرمجي لفаза A لجهة الجهد المنخفض'
},
{
label: '低压侧B相软件过流故障',
englabel: '',
field: 'YX0070',
value: ''
value: '',
zh_CN: '低压侧B相软件过流故障',
en_US: 'LV Side Phase B Software Overcurrent Fault',
es_ES: 'Falla de Sobrecorriente Software Fase B Lado LV',
fr_FR: 'Panne de Surintensité Logiciel Phase B Côté LV',
de_DE: 'LV-Seite Phase B Software Überstromfehler',
pl_PL: 'Usterka Przekroczenia Prądu Oprogramowania Fazy B Strony Niskiego Napięcia',
ar_EG: 'عطل فرط التيار البرمجي لفаза B لجهة الجهد المنخفض'
},
{
label: '低压侧C相软件过流故障',
englabel: '',
field: 'YX0071',
value: ''
value: '',
zh_CN: '低压侧C相软件过流故障',
en_US: 'LV Side Phase C Software Overcurrent Fault',
es_ES: 'Falla de Sobrecorriente Software Fase C Lado LV',
fr_FR: 'Panne de Surintensité Logiciel Phase C Côté LV',
de_DE: 'LV-Seite Phase C Software Überstromfehler',
pl_PL: 'Usterka Przekroczenia Prądu Oprogramowania Fazy C Strony Niskiego Napięcia',
ar_EG: 'عطل فرط التيار البرمجي لفаза C لجهة الجهد المنخفض'
},
{
label: '低压侧负端软件过流故障',
englabel: '',
field: 'YX0072',
value: ''
value: '',
zh_CN: '低压侧负端软件过流故障',
en_US: 'LV Side Negative Terminal Software Overcurrent Fault',
es_ES: 'Falla de Sobrecorriente Software Terminal Negativo Lado LV',
fr_FR: 'Panne de Surintensité Logiciel Terminal Négatif Côté LV',
de_DE: 'LV-Seite Negativer Anschluss Software Überstromfehler',
pl_PL: 'Usterka Przekroczenia Prądu Oprogramowania Terminala Negatywnego Strony Niskiego Napięcia',
ar_EG: 'عطل فرط التيار البرمجي للطرف السلبي لجهة الجهد المنخفض'
},
{
label: '模块内部短路故障',
englabel: '',
field: 'YX0073',
value: ''
value: '',
zh_CN: '模块内部短路故障',
en_US: 'Module Internal Short Circuit Fault',
es_ES: 'Falla de Cortocircuito Interno del Módulo',
fr_FR: 'Panne de Court-Circuit Interne du Module',
de_DE: 'Modul Innenkurzschlussfehler',
pl_PL: 'Usterka Krótkiego Zgrania Wewnętrznego Modułu',
ar_EG: 'عطل اتصال قصير داخلي للوحدة'
},
{
label: '高压侧预充过压故障',
englabel: '',
field: 'YX0074',
value: ''
value: '',
zh_CN: '高压侧预充过压故障',
en_US: 'HV Side Pre-Charge Overvoltage Fault',
es_ES: 'Falla de Sobretensión de Precarga Lado HV',
fr_FR: 'Panne de Survoltage de Précharge Côté HV',
de_DE: 'HV-Seite Vorladungsüberspannungsfehler',
pl_PL: 'Usterka Przewyższenia Napięcia Przedładowania Strony Wysokiego Napięcia',
ar_EG: 'عطل فرط الجهد للشحن المسبق لجهة الجهد العالي'
},
{
label: '高压侧极性反接故障',
englabel: '',
field: 'YX0075',
value: ''
value: '',
zh_CN: '高压侧极性反接故障',
en_US: 'HV Side Polarity Reverse Connection Fault',
es_ES: 'Falla de Conexión Inversa de Polaridad Lado HV',
fr_FR: 'Panne de Connexion Inversée de Polarité Côté HV',
de_DE: 'HV-Seite Polaritätsumkehr Verbindungsfehler',
pl_PL: 'Usterka Odwróconego Połączenia Polarności Strony Wysokiego Napięcia',
ar_EG: 'عطل توصيل عكسي للقطبية لجهة الجهد العالي'
},
{
label: '高压侧短路故障',
englabel: '',
field: 'YX0076',
value: ''
value: '',
zh_CN: '高压侧短路故障',
en_US: 'HV Side Short Circuit Fault',
es_ES: 'Falla de Cortocircuito Lado HV',
fr_FR: 'Panne de Court-Circuit Côté HV',
de_DE: 'HV-Seite Kurzschlussfehler',
pl_PL: 'Usterka Krótkiego Zgrania Strony Wysokiego Napięcia',
ar_EG: 'عطل اتصال قصير لجهة الجهد العالي'
},
{
label: '高压侧运行过压故障',
englabel: '',
field: 'YX0077',
value: ''
value: '',
zh_CN: '高压侧运行过压故障',
en_US: 'HV Side Operation Overvoltage Fault',
es_ES: 'Falla de Sobretensión de Operación Lado HV',
fr_FR: 'Panne de Survoltage de Fonctionnement Côté HV',
de_DE: 'HV-Seite Betriebsüberspannungsfehler',
pl_PL: 'Usterka Przewyższenia Napięcia Eksploatacyjnego Strony Wysokiego Napięcia',
ar_EG: 'عطل فرط الجهد التشغيلي لجهة الجهد العالي'
},
{
label: '高压侧运行欠压故障',
englabel: '',
field: 'YX0078',
value: ''
value: '',
zh_CN: '高压侧运行欠压故障',
en_US: 'HV Side Operation Undervoltage Fault',
es_ES: 'Falla de Subtensión de Operación Lado HV',
fr_FR: 'Panne de Sous-tension de Fonctionnement Côté HV',
de_DE: 'HV-Seite Betriebsunterspannungsfehler',
pl_PL: 'Usterka Niedociśnienia Eksploatacyjnego Strony Wysokiego Napięcia',
ar_EG: 'عطل نقص الجهد التشغيلي لجهة الجهد العالي'
},
{
label: '高压侧正负母线不平衡故障',
englabel: '',
field: 'YX0079',
value: ''
value: '',
zh_CN: '高压侧正负母线不平衡故障',
en_US: 'HV Side Positive-Negative Bus Unbalance Fault',
es_ES: 'Falla de Desequilibrio de Barra Positiva-Negativa Lado HV',
fr_FR: 'Panne de Déséquilibre de Bus Positif-Négatif Côté HV',
de_DE: 'HV-Seite Positiv-Negativ Bus Ungleichgewichtsfehler',
pl_PL: 'Usterka Nierównowagi Szyny Pozytywnej-Negatywnej Strony Wysokiego Napięcia',
ar_EG: 'عطل عدم توازن الحافلة الموجبة والسلبية لجهة الجهد العالي'
},
{
label: '与主机模式设置不匹配',
englabel: '',
field: 'YX0080',
value: ''
value: '',
zh_CN: '与主机模式设置不匹配',
en_US: 'Mismatch with Host Mode Settings',
es_ES: 'No Coincide con la Configuración del Modo Host',
fr_FR: 'Non Conformité avec les Paramètres du Mode Hôte',
de_DE: 'Nicht übereinstimmend mit Host-Modus-Einstellungen',
pl_PL: 'Niepasowanie do Ustawień Trybu Hostowanego',
ar_EG: 'لا يتطابق مع إعدادات وضع المضيف'
},
{
label: '控制板EEROM故障',
englabel: '',
field: 'YX0081',
value: ''
value: '',
zh_CN: '控制板EEROM故障',
en_US: 'Control Board EEROM Fault',
es_ES: 'Falla de EEROM de Placa de Control',
fr_FR: 'Panne de EEROM de Carte de Contrôle',
de_DE: 'Steuerplatine EEROM Fehler',
pl_PL: 'Usterka EEROM Płyty Sterowania',
ar_EG: 'عطل EEROM لوحة التحكم'
},
{
label: '从机CAN通信故障',
englabel: '',
field: 'YX0082',
value: ''
value: '',
zh_CN: '从机CAN通信故障',
en_US: 'Slave CAN Communication Fault',
es_ES: 'Falla de Comunicación CAN Esclavo',
fr_FR: 'Panne de Communication CAN Esclave',
de_DE: 'Slave CAN Kommunikationsfehler',
pl_PL: 'Usterka Komunikacji CAN Slave',
ar_EG: 'عطل اتصال CAN للعامل المساعد'
},
{
label: '与EMS通信故障',
englabel: '',
field: 'YX0083',
value: ''
value: '',
zh_CN: '与EMS通信故障',
en_US: 'Communication Fault with EMS',
es_ES: 'Falla de Comunicación con EMS',
fr_FR: 'Panne de Communication avec EMS',
de_DE: 'Kommunikationsfehler mit EMS',
pl_PL: 'Usterka Komunikacji z EMS',
ar_EG: 'عطل اتصال مع EMS'
},
{
label: '绝缘电阻过低故障',
englabel: '',
field: 'YX0084',
value: ''
value: '',
zh_CN: '绝缘电阻过低故障',
en_US: 'Insulation Resistance Too Low Fault',
es_ES: 'Falla de Resistencia de Aislamiento Muy Baja',
fr_FR: 'Panne de Résistance d\'Isolation Trop Basse',
de_DE: 'Isolationswiderstand zu niedrig Fehler',
pl_PL: 'Usterka Zbyt Niskiego Oporu Izolacyjnego',
ar_EG: 'عطل مقاومة العزل منخفضة جدا'
},
{
label: '低压侧欠压故障',
englabel: '',
field: 'YX0085',
value: ''
value: '',
zh_CN: '低压侧欠压故障',
en_US: 'LV Side Undervoltage Fault',
es_ES: 'Falla de Subtensión Lado LV',
fr_FR: 'Panne de Sous-tension Côté LV',
de_DE: 'LV-Seite Unterspannungsfehler',
pl_PL: 'Usterka Niedociśnienia Strony Niskiego Napięcia',
ar_EG: 'عطل نقص الجهد لجهة الجهد المنخفض'
},
{
label: '软件瞬态过流故障',
englabel: '',
field: 'YX0087',
value: ''
value: '',
zh_CN: '软件瞬态过流故障',
en_US: 'Software Transient Overcurrent Fault',
es_ES: 'Falla de Sobrecorriente Transitoria de Software',
fr_FR: 'Panne de Surintensité Transitoire Logiciel',
de_DE: 'Software transienter Überstromfehler',
pl_PL: 'Usterka Przekroczenia Prądu Przejściowego Oprogramowania',
ar_EG: 'عطل فرط التيار العابر البرمجي'
},
{
label: '低压侧过压故障',
englabel: '',
field: 'YX0088',
value: ''
value: '',
zh_CN: '低压侧过压故障',
en_US: 'LV Side Overvoltage Fault',
es_ES: 'Falla de Sobretensión Lado LV',
fr_FR: 'Panne de Survoltage Côté LV',
de_DE: 'LV-Seite Überspannungsfehler',
pl_PL: 'Usterka Przewyższenia Napięcia Strony Niskiego Napięcia',
ar_EG: 'عطل فرط الجهد لجهة الجهد المنخفض'
},
{
label: '低压侧过流故障',
englabel: '',
field: 'YX0089',
value: ''
value: '',
zh_CN: '低压侧过流故障',
en_US: 'LV Side Overcurrent Fault',
es_ES: 'Falla de Sobrecorriente Lado LV',
fr_FR: 'Panne de Surintensité Côté LV',
de_DE: 'LV-Seite Überstromfehler',
pl_PL: 'Usterka Przekroczenia Prądu Strony Niskiego Napięcia',
ar_EG: 'عطل فرط التيار لجهة الجهد المنخفض'
},
{
label: '低压侧极性反接故障',
englabel: '',
field: 'YX0090',
value: ''
value: '',
zh_CN: '低压侧极性反接故障',
en_US: 'LV Side Polarity Reverse Connection Fault',
es_ES: 'Falla de Conexión Inversa de Polaridad Lado LV',
fr_FR: 'Panne de Connexion Inversée de Polarité Côté LV',
de_DE: 'LV-Seite Polaritätsumkehr Verbindungsfehler',
pl_PL: 'Usterka Odwróconego Połączenia Polarności Strony Niskiego Napięcia',
ar_EG: 'عطل توصيل عكسي للقطبية لجهة الجهد المنخفض'
}
]
export const pcsLeftTopData = [
{
label: '低压侧电压',
englabel: 'BAT voltage',
field: 'lowV',
value: '0',
unit: 'V'
},
{
label: '高压侧电压',
field: 'highV',
englabel: 'BAT current',
value: '0',
unit: 'A'
},
{
label: '低压侧电流',
englabel: 'BUS voltage',
field: 'lowI',
value: '0',
unit: 'V'
}
]
export const pcsLeftBottomData1 = [
{
label: '有功功率',
englabel: 'operating power',
field: 'pvActivePower',
value: '0',
unit: 'kW'
}
]
export const pcsLeftBottomData2 = [
]
export const pcsCenterDataStatus = [
@ -237,77 +422,233 @@ export const pcsCenterDataStatus = [
label: '运行状态',
englabel: 'Run state',
field: 'runState',
value: ''
value: '',
zh_CN: '运行状态',
en_US: 'Running State',
es_ES: 'Estado de Operación',
fr_FR: 'État de Fonctionnement',
de_DE: 'Betriebszustand',
pl_PL: 'Stan Działania',
ar_EG: 'حالة التشغيل'
},
{
label: '远方/就地状态',
englabel: 'Distance/Local State',
field: 'remoteInPlace',
value: ''
value: '',
zh_CN: '远方/就地状态',
en_US: 'Remote/Local State',
es_ES: 'Estado Remoto/Local',
fr_FR: 'État Distant/Local',
de_DE: 'Fern/Lokaler Zustand',
pl_PL: 'Stan Zdalny/Lokalny',
ar_EG: 'حالة رحلية/محلية'
},
{
label: '并网',
englabel: 'Grid',
field: 'onGrid',
value: ''
value: '',
zh_CN: '并网',
en_US: 'Grid-connected',
es_ES: 'Conectado a Red',
fr_FR: 'Connecté au Réseau',
de_DE: 'Netzverbunden',
pl_PL: 'Połączony z Siecią',
ar_EG: 'مربوط بالشبكة'
},
{
label: '离网',
englabel: 'Off-grid',
field: 'offGrid',
value: ''
value: '',
zh_CN: '离网',
en_US: 'Off-grid',
es_ES: 'Fuera de Red',
fr_FR: 'Hors Réseau',
de_DE: 'Netzunabhängig',
pl_PL: 'Poza Siecią',
ar_EG: 'خارج الشبكة'
},
{
label: '充电状态',
englabel: 'Charge state',
field: 'stateCharging',
value: ''
value: '',
zh_CN: '充电状态',
en_US: 'Charging State',
es_ES: 'Estado de Carga',
fr_FR: 'État de Charge',
de_DE: 'Ladezustand',
pl_PL: 'Stan Ładowania',
ar_EG: 'حالة الشحن'
},
{
label: '放电状态',
englabel: 'Discharge state',
field: 'stateDischarging',
value: ''
}, {
value: '',
zh_CN: '放电状态',
en_US: 'Discharging State',
es_ES: 'Estado de Descarga',
fr_FR: 'État de Décharge',
de_DE: 'Entladezustand',
pl_PL: 'Stan Rozładowania',
ar_EG: 'حالة التفريغ'
},
{
label: '待机',
englabel: 'Standby',
field: 'deviceStateStand',
value: ''
}, {
value: '',
zh_CN: '待机',
en_US: 'Standby',
es_ES: 'Espera',
fr_FR: 'En Veille',
de_DE: 'Bereitschaft',
pl_PL: 'Stan Gotowości',
ar_EG: 'الحضور في المكان'
},
{
label: '故障',
englabel: 'Fault',
field: 'deviceStateFault',
value: ''
value: '',
zh_CN: '故障',
en_US: 'Fault',
es_ES: 'Falla',
fr_FR: 'Panne',
de_DE: 'Fehler',
pl_PL: 'Usterka',
ar_EG: 'عطل'
},
{
label: '充满',
englabel: 'Full',
field: 'deviceStateFull',
value: ''
value: '',
zh_CN: '充满',
en_US: 'Fully Charged',
es_ES: 'Carga Completa',
fr_FR: 'Charge Complète',
de_DE: 'Vollgeladen',
pl_PL: 'Pełna Ładowanie',
ar_EG: 'مشحون بالكامل'
},
{
label: '放空',
englabel: 'Empty',
field: 'deviceStateEmpty',
value: ''
value: '',
zh_CN: '放空',
en_US: 'Fully Discharged',
es_ES: 'Descarga Completa',
fr_FR: 'Décharge Complète',
de_DE: 'Vollentladen',
pl_PL: 'Pełne Rozładowanie',
ar_EG: 'مفارغ بالكامل'
},
{
label: '直流断路器',
englabel: 'DC breaker',
field: 'dcBreaker',
value: ''
value: '',
zh_CN: '直流断路器',
en_US: 'DC Circuit Breaker',
es_ES: 'Interruptor de CC',
fr_FR: 'Disjoncteur CC',
de_DE: 'Gleichstromschalter',
pl_PL: 'Przerwač Prądu Stałego',
ar_EG: 'قاطع دائرة تيار مستمر'
},
{
label: '紧急停机',
englabel: 'Emergent shutdown',
field: 'eStop',
value: ''
value: '',
zh_CN: '紧急停机',
en_US: 'Emergency Shutdown',
es_ES: 'Apagón de Emergencia',
fr_FR: 'Arrêt d\'Urgence',
de_DE: 'Notabschaltung',
pl_PL: 'Awaryjne Zatrzymanie',
ar_EG: 'إيقاف طارئ'
},
{
label: 'SOC',
field: 'soc',
value: ''
value: '',
zh_CN: 'SOC',
en_US: 'SOC',
es_ES: 'SOC',
fr_FR: 'SOC',
de_DE: 'SOC',
pl_PL: 'SOC',
ar_EG: 'SOC'
}
]
export const pcsLeftTopData = [
{
label: '低压侧电压',
englabel: 'low-side voltage',
field: 'lowV',
value: '0',
unit: 'V',
zh_CN: '低压侧电压',
en_US: 'LV Side Voltage',
es_ES: 'Voltaje Lado LV',
fr_FR: 'Tension Côté LV',
de_DE: 'LV-Seite Spannung',
pl_PL: 'Napięcie Strony LV',
ar_EG: 'جهد جهة الجهد المنخفض'
},
{
label: '高压侧电压',
field: 'highV',
englabel: 'high-side voltage',
value: '0',
unit: 'A',
zh_CN: '高压侧电压',
en_US: 'HV Side Voltage',
es_ES: 'Voltaje Lado HV',
fr_FR: 'Tension Côté HV',
de_DE: 'HV-Seite Spannung',
pl_PL: 'Napięcie Strony HV',
ar_EG: 'جهد جهة الجهد العالي'
},
{
label: '低压侧电流',
englabel: 'low-side current',
field: 'lowI',
value: '0',
unit: 'V',
zh_CN: '低压侧电流',
en_US: 'LV Side Current',
es_ES: 'Corriente Lado LV',
fr_FR: 'Courant Côté LV',
de_DE: 'LV-Seite Strom',
pl_PL: 'Prąd Strony LV',
ar_EG: 'تيار جهة الجهد المنخفض'
}
]
export const pcsLeftBottomData1 = [
{
label: '有功功率',
englabel: 'operating power',
field: 'pvActivePower',
value: '0',
unit: 'kW',
zh_CN: '有功功率',
en_US: 'Active Power',
es_ES: 'Potencia Activa',
fr_FR: 'Puissance Active',
de_DE: 'Wirkleistung',
pl_PL: 'Moc Aktywna',
ar_EG: 'القوة الفعالة'
}
]
export const pcsLeftBottomData2 = [
]

View File

@ -92,9 +92,7 @@
width="20"
height="30"
:style="{
fill: break_1.length
? getBreakColor(break_1[0].value)
: '#888888',
fill: break_1.length ? getBreakColor(break_1[0].value) : '#888888',
cursor: 'pointer',
}"
style="cursor: pointer"
@ -143,7 +141,7 @@ export default {
props: {},
data() {
return {
value: 'XX直流舱',
value: 'XX' + this.$t('pcs.dCCabin'),
isChongdian: false,
isFangdian: false,
line: {
@ -275,11 +273,11 @@ export default {
},
workStatus(val) {
if (val === 0) {
return '停机'
return this.$t('pcs.shutdown')
} else if (val === 1) {
return '运行'
return this.$t('pcs.run')
} else if (val === 2) {
return '待机'
return this.$t('pcs.standby')
}
},
handleSetting() {

View File

@ -4,66 +4,78 @@
<ItemBox :title="$t('pcs.runData')">
<div v-loading="loading" class="dianbiao-container">
<div v-for="item in RunningTopData" :key="item.label" class="item-dianbiao">
<div v-if="language === 'en'" class="label">{{ item.englabel }}</div>
<div v-else class="label">{{ item.label }}</div>
<!-- <div v-if="language === 'en'" class="label">{{ item.englabel }}</div>
<div v-else class="label">{{ item.label }}</div> -->
<div class="label">{{ item[language] }}</div>
<div class="value">{{ item.value }}</div>
</div>
<div class="zhengxiang">
<div class="left">
<div v-if="language === 'en'" class="label">{{ RunningCenterData[1].englabel }}</div>
<div v-else class="label">{{ RunningCenterData[1].label }}</div>
<!-- <div v-if="language === 'en'" class="label">{{ RunningCenterData[1].englabel }}</div>
<div v-else class="label">{{ RunningCenterData[1].label }}</div> -->
<div class="label">{{ RunningCenterData[1][language] }}</div>
<div class="value">{{ RunningCenterData[1].value }}</div>
<div v-if="language === 'en'" class="label">{{ RunningCenterData[2].englabel }}</div>
<div v-else class="label">{{ RunningCenterData[2].label }}</div>
<!-- <div v-if="language === 'en'" class="label">{{ RunningCenterData[2].englabel }}</div>
<div v-else class="label">{{ RunningCenterData[2].label }}</div> -->
<div class="label">{{ RunningCenterData[2][language] }}</div>
<div class="value">{{ RunningCenterData[2].value }}</div>
</div>
<div class="center">
<div class="value">{{ RunningCenterData[0].value }}</div>
<div v-if="language === 'en'" class="label">{{ RunningCenterData[0].englabel }}</div>
<div v-else class="label">{{ RunningCenterData[0].label }}</div>
<!-- <div v-if="language === 'en'" class="label">{{ RunningCenterData[0].englabel }}</div>
<div v-else class="label">{{ RunningCenterData[0].label }}</div> -->
<div class="label">{{ RunningCenterData[0][language] }}</div>
<div class="label">(kWh)</div>
</div>
<div class="left">
<div v-if="language === 'en'" class="label">{{ RunningCenterData[3].englabel }}</div>
<div v-else class="label">{{ RunningCenterData[3].label }}</div>
<!-- <div v-if="language === 'en'" class="label">{{ RunningCenterData[3].englabel }}</div>
<div v-else class="label">{{ RunningCenterData[3].label }}</div> -->
<div class="label">{{ RunningCenterData[3][language] }}</div>
<div class="value">{{ RunningCenterData[3].value }}</div>
<div v-if="language === 'en'" class="label">{{ RunningCenterData[4].englabel }}</div>
<div v-else class="label">{{ RunningCenterData[4].label }}</div>
<!-- <div v-if="language === 'en'" class="label">{{ RunningCenterData[4].englabel }}</div>
<div v-else class="label">{{ RunningCenterData[4].label }}</div> -->
<div class="label">{{ RunningCenterData[4][language] }}</div>
<div class="value">{{ RunningCenterData[4].value }}</div>
</div>
</div>
<div class="zhengxiang">
<div class="left">
<div v-if="language === 'en'" class="label">{{ RunningCenterData[6].englabel }}</div>
<div v-else class="label">{{ RunningCenterData[6].label }}</div>
<!-- <div v-if="language === 'en'" class="label">{{ RunningCenterData[6].englabel }}</div>
<div v-else class="label">{{ RunningCenterData[6].label }}</div> -->
<div class="label">{{ RunningCenterData[6][language] }}</div>
<div class="value">{{ RunningCenterData[6].value }}</div>
<div v-if="language === 'en'" class="label">{{ RunningCenterData[7].englabel }}</div>
<div v-else class="label">{{ RunningCenterData[7].label }}</div>
<!-- <div v-if="language === 'en'" class="label">{{ RunningCenterData[7].englabel }}</div>
<div v-else class="label">{{ RunningCenterData[7].label }}</div> -->
<div class="label">{{ RunningCenterData[7][language] }}</div>
<div class="value">{{ RunningCenterData[7].value }}</div>
</div>
<div class="center">
<div class="value">{{ RunningCenterData[5].value }}</div>
<div v-if="language === 'en'" class="label">{{ RunningCenterData[5].englabel }}</div>
<div v-else class="label">{{ RunningCenterData[5].label }}</div>
<!-- <div v-if="language === 'en'" class="label">{{ RunningCenterData[5].englabel }}</div>
<div v-else class="label">{{ RunningCenterData[5].label }}</div> -->
<div class="label">{{ RunningCenterData[5][language] }}</div>
<div class="label">(kWh)</div>
</div>
<div class="left">
<div v-if="language === 'en'" class="label">{{ RunningCenterData[8].englabel }}</div>
<div v-else class="label">{{ RunningCenterData[8].label }}</div>
<!-- <div v-if="language === 'en'" class="label">{{ RunningCenterData[8].englabel }}</div>
<div v-else class="label">{{ RunningCenterData[8].label }}</div> -->
<div class="label">{{ RunningCenterData[8][language] }}</div>
<div class="value">{{ RunningCenterData[8].value }}</div>
<div v-if="language === 'en'" class="label">{{ RunningCenterData[9].englabel }}</div>
<div v-else class="label">{{ RunningCenterData[9].label }}</div>
<!-- <div v-if="language === 'en'" class="label">{{ RunningCenterData[9].englabel }}</div>
<div v-else class="label">{{ RunningCenterData[9].label }}</div> -->
<div class="label">{{ RunningCenterData[9][language] }}</div>
<div class="value">{{ RunningCenterData[9].value }}</div>
</div>
</div>
<div class="yougonglv-wrap">
<div class="top">
<div v-if="language === 'en'" class="name">{{ RunningBottomData[0].englabel }}</div>
<div v-else class="name">{{ RunningBottomData[0].label }}</div>
<!-- <div v-if="language === 'en'" class="name">{{ RunningBottomData[0].englabel }}</div>
<div v-else class="name">{{ RunningBottomData[0].label }}</div> -->
<div class="name">{{ RunningBottomData[0][language] }}</div>
<div class="top-value">
<span class="value">{{ RunningBottomData[0].value }}</span>
@ -72,18 +84,21 @@
</div>
<div class="bottom">
<div class="item">
<div v-if="language === 'en'" class="name">{{ RunningBottomData[1].englabel }}</div>
<div v-else class="name">{{ RunningBottomData[1].label }}</div>
<!-- <div v-if="language === 'en'" class="name">{{ RunningBottomData[1].englabel }}</div>
<div v-else class="name">{{ RunningBottomData[1].label }}</div> -->
<div class="name">{{ RunningBottomData[1][language] }}</div>
<span class="value">{{ RunningBottomData[1].value }}</span>
</div>
<div class="item">
<div v-if="language === 'en'" class="name">{{ RunningBottomData[2].englabel }}</div>
<div v-else class="name">{{ RunningBottomData[2].label }}</div>
<!-- <div v-if="language === 'en'" class="name">{{ RunningBottomData[2].englabel }}</div>
<div v-else class="name">{{ RunningBottomData[2].label }}</div> -->
<div class="name">{{ RunningBottomData[2][language] }}</div>
<div class="value">{{ RunningBottomData[2].value }}</div>
</div>
<div class="item">
<div v-if="language === 'en'" class="name">{{ RunningBottomData[3].englabel }}</div>
<div v-else class="name">{{ RunningBottomData[3].label }}</div>
<!-- <div v-if="language === 'en'" class="name">{{ RunningBottomData[3].englabel }}</div>
<div v-else class="name">{{ RunningBottomData[3].label }}</div> -->
<div class="name">{{ RunningBottomData[3][language] }}</div>
<div class="value">{{ RunningBottomData[3].value }}</div>
</div>
</div>
@ -91,8 +106,9 @@
<div class="yougonglv-wrap wugonglv">
<div class="top">
<div v-if="language === 'en'" class="name">{{ RunningBottomData[4].englabel }}</div>
<div v-else class="name">{{ RunningBottomData[4].label }}</div>
<!-- <div v-if="language === 'en'" class="name">{{ RunningBottomData[4].englabel }}</div>
<div v-else class="name">{{ RunningBottomData[4].label }}</div> -->
<div class="name">{{ RunningBottomData[4][language] }}</div>
<div class="top-value">
<span class="value">{{ RunningBottomData[4].value }}</span>
<span class="unit">Var</span>
@ -100,26 +116,30 @@
</div>
<div class="bottom">
<div class="item">
<div v-if="language === 'en'" class="name">{{ RunningBottomData[5].englabel }}</div>
<div v-else class="name">{{ RunningBottomData[5].label }}</div>
<!-- <div v-if="language === 'en'" class="name">{{ RunningBottomData[5].englabel }}</div>
<div v-else class="name">{{ RunningBottomData[5].label }}</div> -->
<div class="name">{{ RunningBottomData[5][language] }}</div>
<span class="value">{{ RunningBottomData[5].value }}</span>
</div>
<div class="item">
<div v-if="language === 'en'" class="name">{{ RunningBottomData[6].englabel }}</div>
<div v-else class="name">{{ RunningBottomData[6].label }}</div>
<!-- <div v-if="language === 'en'" class="name">{{ RunningBottomData[6].englabel }}</div>
<div v-else class="name">{{ RunningBottomData[6].label }}</div> -->
<div class="name">{{ RunningBottomData[6][language] }}</div>
<div class="value">{{ RunningBottomData[6].value }}</div>
</div>
<div class="item">
<div v-if="language === 'en'" class="name">{{ RunningBottomData[7].englabel }}</div>
<div v-else class="name">{{ RunningBottomData[7].label }}</div>
<!-- <div v-if="language === 'en'" class="name">{{ RunningBottomData[7].englabel }}</div>
<div v-else class="name">{{ RunningBottomData[7].label }}</div> -->
<div class="name">{{ RunningBottomData[7][language] }}</div>
<div class="value">{{ RunningBottomData[7].value }}</div>
</div>
</div>
</div>
<div class="yougonglv-wrap wugonglv">
<div class="top">
<div v-if="language === 'en'" class="name">{{ RunningBottomData[8].englabel }}</div>
<div v-else class="name">{{ RunningBottomData[8].label }}</div>
<!-- <div v-if="language === 'en'" class="name">{{ RunningBottomData[8].englabel }}</div>
<div v-else class="name">{{ RunningBottomData[8].label }}</div> -->
<div class="name">{{ RunningBottomData[8][language] }}</div>
<div class="top-value">
<span class="value">{{ RunningBottomData[8].value }}</span>
<span class="unit" />
@ -127,18 +147,21 @@
</div>
<div class="bottom">
<div class="item">
<div v-if="language === 'en'" class="name">{{ RunningBottomData[9].englabel }}</div>
<div v-else class="name">{{ RunningBottomData[9].label }}</div>
<!-- <div v-if="language === 'en'" class="name">{{ RunningBottomData[9].englabel }}</div>
<div v-else class="name">{{ RunningBottomData[9].label }}</div> -->
<div class="name">{{ RunningBottomData[9][language] }}</div>
<span class="value">{{ RunningBottomData[9].value }}</span>
</div>
<div class="item">
<div v-if="language === 'en'" class="name">{{ RunningBottomData[10].englabel }}</div>
<div v-else class="name">{{ RunningBottomData[10].label }}</div>
<!-- <div v-if="language === 'en'" class="name">{{ RunningBottomData[10].englabel }}</div>
<div v-else class="name">{{ RunningBottomData[10].label }}</div> -->
<div class="name">{{ RunningBottomData[10][language] }}</div>
<div class="value">{{ RunningBottomData[10].value }}</div>
</div>
<div class="item">
<div v-if="language === 'en'" class="name">{{ RunningBottomData[1].englabel }}</div>
<div v-else class="name">{{ RunningBottomData[1].label }}</div>
<!-- <div v-if="language === 'en'" class="name">{{ RunningBottomData[1].englabel }}</div>
<div v-else class="name">{{ RunningBottomData[1].label }}</div> -->
<div class="name">{{ RunningBottomData[1][language] }}</div>
<div class="value">{{ RunningBottomData[11].value }}</div>
</div>
</div>

View File

@ -1,192 +1,410 @@
export const RunningTopData = [
{
label: 'A相电压(V)',
englabel: 'Phase A voltage(V)',
englabel: 'Phase A Voltage (V)',
zh_CN: 'A相电压(V)',
en_US: 'Phase A Voltage (V)',
es_ES: 'Tensión de fase A (V)',
fr_FR: 'Tension de phase A (V)',
de_DE: 'Phase-A-Spannung (V)',
pl_PL: 'L1 napięcie (V)',
ar_EG: 'جهد الطور (V)A',
field: 'Ua',
value: ''
},
{
label: 'A相电流(A)',
englabel: 'Phase A current(A)',
englabel: 'Phase A Current (A)',
zh_CN: 'A相电流(A)',
en_US: 'Phase A Current (A)',
es_ES: 'Corriente de fase A (A)',
fr_FR: 'Courant de phase A (A)',
de_DE: 'Phase-A-Strom (A)',
pl_PL: 'L1 prąd (A)',
ar_EG: 'تيار الطور (A)A',
field: 'Ia',
value: ''
},
{
label: 'B相电压(V)',
englabel: 'Phase B voltage(V)',
englabel: 'Phase B Voltage (V)',
zh_CN: 'B相电压(V)',
en_US: 'Phase B Voltage (V)',
es_ES: 'Tensión de fase B (V)',
fr_FR: 'Tension de phase B (V)',
de_DE: 'Phase-B-Spannung (V)',
pl_PL: 'L2 napięcie (V)',
ar_EG: 'جهد الطور (V)B',
field: 'Ub',
value: ''
},
{
label: 'B相电流(A)',
englabel: 'Phase B current(A)',
englabel: 'Phase B Current (A)',
zh_CN: 'B相电流(A)',
en_US: 'Phase B Current (A)',
es_ES: 'Corriente de fase B (A)',
fr_FR: 'Courant de phase B (A)',
de_DE: 'Phase-B-Strom (A)',
pl_PL: 'L2 prąd (A)',
ar_EG: 'تيار الطور (A)B',
field: 'Ib',
value: ''
},
{
label: 'C相电压(V)',
englabel: 'Phase C voltage(A)',
englabel: 'Phase C Voltage (V)',
zh_CN: 'C相电压(V)',
en_US: 'Phase C Voltage (V)',
es_ES: 'Tensión de fase C (V)',
fr_FR: 'Tension de phase C (V)',
de_DE: 'Phase-C-Spannung (V)',
pl_PL: 'L3 napięcie (V)',
ar_EG: 'جهد الطور (V)C',
field: 'Uc',
value: ''
},
{
label: 'C相电流(A)',
englabel: 'Phase C current(A)',
englabel: 'Phase C Current (A)',
zh_CN: 'C相电流(A)',
en_US: 'Phase C Current (A)',
es_ES: 'Corriente de fase C (A)',
fr_FR: 'Courant de phase A (A)',
de_DE: 'Phase-C-Strom (A)',
pl_PL: 'L3 prąd (A)',
ar_EG: 'تيار الطور (A)C',
field: 'Ic',
value: ''
},
{
label: 'AB线电压(V)',
englabel: 'AB line voltage(V)',
englabel: 'Line Voltage AB (V)',
zh_CN: 'AB线电压(V)',
en_US: 'Line Voltage AB (V)',
es_ES: 'Tensión de línea AB (V)',
fr_FR: 'Tension de câble AB (V)',
de_DE: 'Leiterspannung AB (V)',
pl_PL: 'L1-L2 napięcie międzyfazowe (V)',
ar_EG: 'جهد الخط (V)AB',
field: 'Uab',
value: ''
},
{
label: 'BC线电压(V)',
englabel: 'BC line voltage(V)',
englabel: 'Line Voltage BC (V)',
zh_CN: 'BC线电压(V)',
en_US: 'Line Voltage BC (V)',
es_ES: 'Tensión de línea BC (V)',
fr_FR: 'Tension de câble BC (V)',
de_DE: 'Leiterspannung BC (V)',
pl_PL: 'L2-L3 napięcie międzyfazowe (V)',
ar_EG: 'جهد الخط (V)BC',
field: 'Ubc',
value: ''
},
{
label: 'CA线电压(V)',
englabel: 'CA line voltage(V)',
englabel: 'Line Voltage CA (V)',
zh_CN: 'CA线电压(V)',
en_US: 'Line Voltage CA (V)',
es_ES: 'Tensión de línea CA (V)',
fr_FR: 'Tension de câble CA (V)',
de_DE: 'Leiterspannung CA (V)',
pl_PL: 'L3-L1 napięcie międzyfazowe (V)',
ar_EG: 'جهد الخط (V)CA',
field: 'Uca',
value: ''
}
]
export const RunningCenterData = [
{
label: '正向有功总电量',
englabel: 'Total positive active power',
englabel: 'Total Forward Active Energy',
zh_CN: '正向有功总电量',
en_US: 'Total Forward Active Energy',
es_ES: 'Energía activa total positiva',
fr_FR: 'Énergie active positive totale',
de_DE: 'Gesamt-Wirkenergie Vorwärts',
pl_PL: 'Całkowita energia czynna pobrana',
ar_EG: 'إجمالي الطاقة الفعالة الأمامية',
field: 'totalCharge',
value: ''
},
{
label: '电量(尖)',
englabel: 'Electricity(sharp)',
englabel: 'Energy (Peak)',
zh_CN: '电量(尖)',
en_US: 'Energy (Peak)',
es_ES: 'Energía (pico extremo)',
fr_FR: 'Énergie (pointe)',
de_DE: 'Energie (Spitze)',
pl_PL: 'Energia (szczytowa)',
ar_EG: 'الطاقة (أوقات الذروة)',
field: 'forwardActE1',
value: ''
},
{
label: '电量(峰)',
englabel: 'Electricity(peak)',
englabel: 'Energy (Peak Hours)',
zh_CN: '电量(峰)',
en_US: 'Energy (Peak Hours)',
es_ES: 'Energía (pico)',
fr_FR: 'Énergie (heures de pointe)',
de_DE: 'Energie (Spitzenzeit)',
pl_PL: 'Energia (godziny szczytowe)',
ar_EG: 'الطاقة (ساعات الذروة)',
field: 'forwardActE2',
value: ''
},
{
label: '电量(平)',
englabel: 'Electricity(flat)',
englabel: 'Energy (Normal)',
zh_CN: '电量(平)',
en_US: 'Energy (Normal)',
es_ES: 'Energía (llano)',
fr_FR: 'Énergie (Pleine)',
de_DE: 'Energie (Normal)',
pl_PL: 'Energia (normalna)',
ar_EG: 'الطاقة (العادية)',
field: 'forwardActE3',
value: ''
},
{
label: '电量(谷)',
englabel: 'Electricity(valley)',
englabel: 'Energy (Off-Peak)',
zh_CN: '电量(谷)',
en_US: 'Energy (Off-Peak)',
es_ES: 'Energía (valle)',
fr_FR: 'Énergie (Creuse)',
de_DE: 'Energie (Nebenzeit)',
pl_PL: 'Energia (pozaszczytowa)',
ar_EG: 'الطاقة (خارج أوقات الذروة)',
field: 'forwardActE4',
value: ''
},
{
label: '反向有功总电量',
englabel: 'Reverse total active power',
englabel: 'Total Reverse Active Energy',
zh_CN: '反向有功总电量',
en_US: 'Total Reverse Active Energy',
es_ES: 'Energía activa total negativa',
fr_FR: 'Énergie active inverse totale',
de_DE: 'Gesamt-Wirkenergie Rückwärts',
pl_PL: 'Całkowita energia czynna oddana',
ar_EG: 'إجمالي الطاقة الفعالة العكسية',
field: 'totalDischarge',
value: ''
},
{
label: '电量(尖)',
englabel: 'Electricity(sharp)',
englabel: 'Energy (Peak)',
zh_CN: '电量(尖)',
en_US: 'Energy (Peak)',
es_ES: 'Energía (pico extremo)',
fr_FR: 'Énergie (pointe)',
de_DE: 'Energie (Spitze)',
pl_PL: 'Energia (szczytowa)',
ar_EG: 'الطاقة (أوقات الذروة)',
field: 'backwardActE1',
value: ''
},
{
label: '电量(峰)',
englabel: 'Electricity(peak)',
englabel: 'Energy (Peak Hours)',
zh_CN: '电量(峰)',
en_US: 'Energy (Peak Hours)',
es_ES: 'Energía (pico)',
fr_FR: 'Énergie (heures de pointe)',
de_DE: 'Energie (Spitzenzeit)',
pl_PL: 'Energia (godziny szczytowe)',
ar_EG: 'الطاقة (ساعات الذروة)',
field: 'backwardActE2',
value: ''
},
{
label: '电量(平)',
englabel: 'Electricity(flat)',
englabel: 'Energy (Normal)',
zh_CN: '电量(平)',
en_US: 'Energy (Normal)',
es_ES: 'Energía (llano)',
fr_FR: 'Énergie (Pleine)',
de_DE: 'Energie (Normal)',
pl_PL: 'Energia (normalna)',
ar_EG: 'الطاقة (العادية)',
field: 'backwardActE3',
value: ''
},
{
label: '电量(谷)',
englabel: 'Electricity(valley)',
englabel: 'Energy (Off-Peak)',
zh_CN: '电量(谷)',
en_US: 'Energy (Off-Peak)',
es_ES: 'Energía (valle)',
fr_FR: 'Énergie (Creuse)',
de_DE: 'Energie (Nebenzeit)',
pl_PL: 'Energia (pozaszczytowa)',
ar_EG: 'الطاقة (خارج أوقات الذروة)',
field: 'backwardActE4',
value: ''
}
]
export const RunningBottomData = [
{
label: '合相有功功率',
englabel: 'Combined active power',
englabel: 'Active Power at Connection',
zh_CN: '合相有功功率',
en_US: 'Active Power at Connection',
es_ES: 'Potencia activa trifásica combinada',
fr_FR: "Puissance active d'enclenchement",
de_DE: 'Wirkleistung am Anschluss',
pl_PL: 'Moc czynna w punkcie przyłączenia',
ar_EG: 'القدرة الفعالة عند الاتصال',
field: 'activePower',
value: ''
},
{
label: 'A相',
englabel: 'A phase',
englabel: 'Phase A',
zh_CN: 'A相',
en_US: 'Phase A',
es_ES: 'Fase A',
fr_FR: 'Phase A',
de_DE: 'Phase A',
pl_PL: 'Faza A',
ar_EG: 'الطور A',
field: 'activePowerA',
value: ''
},
{
label: 'B相',
englabel: 'B phase',
englabel: 'Phase B',
zh_CN: 'B相',
en_US: 'Phase B',
es_ES: 'Fase B',
fr_FR: 'Phase B',
de_DE: 'Phase B',
pl_PL: 'Faza B',
ar_EG: 'الطور B',
field: 'activePowerB',
value: ''
},
{
label: 'C相',
englabel: 'C phase',
englabel: 'Phase C',
zh_CN: 'C相',
en_US: 'Phase C',
es_ES: 'Fase C',
fr_FR: 'Phase C',
de_DE: 'Phase C',
pl_PL: 'Faza C',
ar_EG: 'الطور C',
field: 'activePowerC',
value: ''
},
{
label: '合相无功功率',
englabel: 'Phase reactive power',
englabel: 'Reactive Power at Connection',
zh_CN: '合相无功功率',
en_US: 'Reactive Power at Connection',
es_ES: 'Potencia reactiva trifásica combinada',
fr_FR: "Puissance réactive d'enclenchement",
de_DE: 'Blindleistung am Anschluss',
pl_PL: 'Moc bierna w punkcie przyłączenia',
ar_EG: 'القدرة غير الفعالة عند الاتصال',
field: 'reactivePower',
value: ''
},
{
label: 'A相',
englabel: 'A phase',
englabel: 'Phase A',
zh_CN: 'A相',
en_US: 'Phase A',
es_ES: 'Fase A',
fr_FR: 'Phase A',
de_DE: 'Phase A',
pl_PL: 'Faza A',
ar_EG: 'الطور A',
field: 'reactivePowerA',
value: ''
},
{
label: 'B相',
englabel: 'B phase',
englabel: 'Phase B',
zh_CN: 'B相',
en_US: 'Phase B',
es_ES: 'Fase B',
fr_FR: 'Phase B',
de_DE: 'Phase B',
pl_PL: 'Faza B',
ar_EG: 'الطور B',
field: 'reactivePowerB',
value: ''
},
{
label: 'C相',
englabel: 'C phase',
englabel: 'Phase C',
zh_CN: 'C相',
en_US: 'Phase C',
es_ES: 'Fase C',
fr_FR: 'Phase C',
de_DE: 'Phase C',
pl_PL: 'Faza C',
ar_EG: 'الطور C',
field: 'reactivePowerC',
value: ''
},
{
label: '合相功率因数',
englabel: 'Phase power factor',
englabel: 'Power Factor at Connection',
zh_CN: '合相功率因数',
en_US: 'Power Factor at Connection',
es_ES: 'Factor de potencia trifásico combinado',
fr_FR: "Facteur de puissance d'enclenchement",
de_DE: 'Leistungsfaktor am Anschluss',
pl_PL: 'Współczynnik mocy w punkcie przyłączenia',
ar_EG: 'معامل القدرة عند الاتصال',
field: 'PFactor',
value: ''
},
{
label: 'A相',
englabel: 'A phase',
englabel: 'Phase A',
zh_CN: 'A相',
en_US: 'Phase A',
es_ES: 'Fase A',
fr_FR: 'Phase A',
de_DE: 'Phase A',
pl_PL: 'Faza A',
ar_EG: 'الطور A',
field: 'PFactorA',
value: ''
},
{
label: 'B相',
englabel: 'B phase',
englabel: 'Phase B',
zh_CN: 'B相',
en_US: 'Phase B',
es_ES: 'Fase B',
fr_FR: 'Phase B',
de_DE: 'Phase B',
pl_PL: 'Faza B',
ar_EG: 'الطور B',
field: 'PFactorB',
value: ''
},
{
label: 'C相',
englabel: 'C phase',
englabel: 'Phase C',
zh_CN: 'C相',
en_US: 'Phase C',
es_ES: 'Fase C',
fr_FR: 'Phase C',
de_DE: 'Phase C',
pl_PL: 'Faza C',
ar_EG: 'الطور C',
field: 'PFactorC',
value: ''
}

View File

@ -6,8 +6,9 @@
<div class="box">
<div v-for="item in xfcRunData2" :key="item.key" class="small-box">
<div v-if="language === 'en'" class="top-title">{{ item.englabel }}</div>
<div v-else class="top-title">{{ item.label }}</div>
<!-- <div v-if="language === 'en'" class="top-title">{{ item.englabel }}</div>
<div v-else class="top-title">{{ item.label }}</div> -->
<div class="top-title">{{ item[language] }}</div>
</div>
</div>

View File

@ -4,8 +4,9 @@
<div v-loading="loading" class="center-top-container">
<div class="box">
<div v-for="(item) in xfcData" :key="item.label" class="small-box">
<div v-if="language === 'en'" class="top-title">{{ item.englabel }}</div>
<div v-else class="top-title">{{ item.label }}</div>
<!-- <div v-if="language === 'en'" class="top-title">{{ item.englabel }}</div>
<div v-else class="top-title">{{ item.label }}</div> -->
<div class="top-title">{{ item[language] }}</div>
<div class="value-box">
<div class="value-small border-right border-bottom">
<div :class="item.value1 ? 'error-value' : 'value'">{{ $t('pcs.alarm') }}</div>

View File

@ -1,103 +1,151 @@
export const xfcData = [
{
englabel: 'Detector1',
englabel: 'Detector 1',
label: '探测器1',
zh_CN: '探测器1',
en_US: 'Detector 1',
es_ES: 'Detector N°1',
fr_FR: 'Détecteur 1',
de_DE: 'Detektor 1',
pl_PL: 'Czujnik 1',
ar_EG: 'كاشف ١',
field1: 'fireAlarm1',
field2: 'fireFailure1',
field3: 'firePolice1',
field4: 'fireTemperature1',
value1: '',
value2: '',
value3: '',
value4: ''
},
{
englabel: 'Detector2',
englabel: 'Detector 2',
label: '探测器2',
zh_CN: '探测器2',
en_US: 'Detector 2',
es_ES: 'Detector N°2',
fr_FR: 'Détecteur 2',
de_DE: 'Detektor 2',
pl_PL: 'Czujnik 2',
ar_EG: 'كاشف ٢',
field1: 'fireAlarm2',
field2: 'fireFailure2',
field3: 'firePolice2',
field4: 'fireTemperature2',
value1: '',
value2: '',
value3: '',
value4: ''
},
{
englabel: 'Detector3',
englabel: 'Detector 3',
label: '探测器3',
zh_CN: '探测器3',
en_US: 'Detector 3',
es_ES: 'Detector N°3',
fr_FR: 'Détecteur 3',
de_DE: 'Detektor 3',
pl_PL: 'Czujnik 3',
ar_EG: 'كاشف ٣',
field1: 'fireAlarm3',
field2: 'fireFailure3',
field3: 'firePolice3',
field4: 'fireTemperature3',
value1: '',
value2: '',
value3: '',
value4: ''
},
{
englabel: 'Detector4',
englabel: 'Detector 4',
label: '探测器4',
zh_CN: '探测器4',
en_US: 'Detector 4',
es_ES: 'Detector N°4',
fr_FR: 'Détecteur 4',
de_DE: 'Detektor 4',
pl_PL: 'Czujnik 4',
ar_EG: 'كاشف ٤',
field1: 'fireAlarm4',
field2: 'fireFailure4',
field3: 'firePolice4',
field4: 'fireTemperature4',
value1: '',
value2: '',
value3: '',
value4: ''
},
{
englabel: 'Detector5',
englabel: 'Detector 5',
label: '探测器5',
zh_CN: '探测器5',
en_US: 'Detector 5',
es_ES: 'Detector N°5',
fr_FR: 'Détecteur 5',
de_DE: 'Detektor 5',
pl_PL: 'Czujnik 5',
ar_EG: 'كاشف ٥',
field1: 'fireAlarm5',
field2: 'fireFailure5',
field3: 'firePolice5',
field4: 'fireTemperature5',
value1: '',
value2: '',
value3: '',
value4: ''
},
{
englabel: 'Detector6',
englabel: 'Detector 6',
label: '探测器6',
zh_CN: '探测器6',
en_US: 'Detector 6',
es_ES: 'Detector N°6',
fr_FR: 'Détecteur 6',
de_DE: 'Detektor 6',
pl_PL: 'Czujnik 6',
ar_EG: 'كاشف ٦',
field1: 'fireAlarm6',
field2: 'fireFailure6',
field3: 'firePolice6',
field4: 'fireTemperature6',
value1: '',
value2: '',
value3: '',
value4: ''
},
{
englabel: 'Detector7',
englabel: 'Detector 7',
label: '探测器7',
zh_CN: '探测器7',
en_US: 'Detector 7',
es_ES: 'Detector N°7',
fr_FR: 'Détecteur 7',
de_DE: 'Detektor 7',
pl_PL: 'Czujnik 7',
ar_EG: 'كاشف ٧',
field1: 'fireAlarm7',
field2: 'fireFailure7',
field3: 'firePolice7',
field4: 'fireTemperature7',
value1: '',
value2: '',
value3: '',
value4: ''
},
{
englabel: 'Detector8',
englabel: 'Detector 8',
label: '探测器8',
zh_CN: '探测器8',
en_US: 'Detector 8',
es_ES: 'Detector N°8',
fr_FR: 'Détecteur 8',
de_DE: 'Detektor 8',
pl_PL: 'Czujnik 8',
ar_EG: 'كاشف ٨',
field1: 'fireAlarm8',
field2: 'fireFailure8',
field3: 'firePolice8',
field4: 'fireTemperature8',
value1: '',
value2: '',
value3: '',
@ -108,37 +156,79 @@ export const xfcData = [
export const xfcRunData2 = [
{
label: '消防故障',
englabel: 'Fire failure',
englabel: 'Fire Fault',
zh_CN: '消防故障',
en_US: 'Fire Fault',
es_ES: 'Avería del sistema de protección contra incendios',
fr_FR: "Défaut d'incendie",
de_DE: 'Brandfehler',
pl_PL: 'Awaria systemu pożarowego',
ar_EG: 'عطل الحريق',
field1: 'fireFailure',
value1: ''
},
{
label: '消防报警',
englabel: 'Fire alarm',
englabel: 'Fire Alarm',
zh_CN: '消防报警',
en_US: 'Fire Alarm',
es_ES: 'Alarma de protección contra incendios',
fr_FR: 'Alarme incendie',
de_DE: 'Brandalarm',
pl_PL: 'Alarm pożarowy',
ar_EG: 'إنذار الحريق',
field1: 'fireAlarm',
value1: ''
},
{
label: '消防温度',
englabel: 'Fire temperature',
englabel: 'Fire Suppression Temperature',
zh_CN: '消防温度',
en_US: 'Fire Suppression Temperature',
es_ES: 'Temperatura de protección contra incendios',
fr_FR: "Température de lutte contre l'incendie",
de_DE: 'Löschtemperatur',
pl_PL: 'Temperatura aktywacji systemu gaszenia pożaru',
ar_EG: 'درجة حرارة إخماد الحريق',
field1: 'fireTemperature',
value1: ''
},
{
label: '消防火警',
englabel: 'Fire alarms',
englabel: 'Fire Alert',
zh_CN: '消防火警',
en_US: 'Fire Alert',
es_ES: 'Alerta de incendio',
fr_FR: "Alarme d'incendie",
de_DE: 'Brandwarnung',
pl_PL: 'Ostrzeżenie pożarowe',
ar_EG: 'تحذير الحريق',
field1: 'firePolice1',
value1: ''
},
{
label: '输出状态',
englabel: 'Output state',
englabel: 'Output Status',
zh_CN: '输出状态',
en_US: 'Output Status',
es_ES: 'Estado de salida',
fr_FR: 'État de la sortie',
de_DE: 'Ausgangsstatus',
pl_PL: 'Stan wyjść',
ar_EG: 'حالة الخرج',
field1: 'outputState',
value1: ''
},
{
label: '输入状态',
englabel: 'Input state',
englabel: 'Input Status',
zh_CN: '输入状态',
en_US: 'Input Status',
es_ES: 'Estado de entrada',
fr_FR: "État de l'entrée",
de_DE: 'Eingangsstatus',
pl_PL: 'Stan wejść',
ar_EG: 'حالة الدخل',
field1: 'inputStatus',
value1: ''
}

View File

@ -27,14 +27,7 @@ export default {
data() {
return {
timeLidu: 1,
times: [
{ label: '1分钟', value: 1 },
{ label: '5分钟', value: 5 },
{ label: '10分钟', value: 10 },
{ label: '15分钟', value: 15 },
{ label: '20分钟', value: 20 },
{ label: '30分钟', value: 30 }
],
times: this.$t('pcs.times'),
options: {
title: {
text: this.$t('pcs.noData'),

View File

@ -1,6 +1,6 @@
<template>
<div class="left-bottom-wrap">
<ItemBox title="簇总压/SOC">
<ItemBox :title="$t('pcs.clusterTotalVol')">
<div v-loading="loading" class="top-bottom-container">
<Chart :options="options" :class-name="'chart'" />
@ -19,17 +19,10 @@ export default {
data() {
return {
timeLidu: 1,
times: [
{ label: '1分钟', value: 1 },
{ label: '5分钟', value: 5 },
{ label: '10分钟', value: 10 },
{ label: '15分钟', value: 15 },
{ label: '20分钟', value: 20 },
{ label: '30分钟', value: 30 }
],
times: this.$t('pcs.times'),
options: {
title: {
text: '暂无数据',
text: this.$t('pcs.noData'),
x: 'center',
y: 'center',
textStyle: {
@ -112,8 +105,8 @@ export default {
</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
}
},
@ -136,7 +129,7 @@ box-shadow: inset 0px 2px 16px 0px rgba(0, 148, 255, 0.4);' >${dataStr}</div>`
{
type: 'value',
name: '电压(V)',
name: this.$t('pcs.vol') + '(V)',
axisLabel: {
color: '#2d8cf0'
},
@ -170,7 +163,7 @@ box-shadow: inset 0px 2px 16px 0px rgba(0, 148, 255, 0.4);' >${dataStr}</div>`
],
series: [
{
name: '电压',
name: this.$t('pcs.vol'),
type: 'line',
smooth: true,
symbol: 'none',

View File

@ -1,6 +1,6 @@
<template>
<div class="center-top-wrap">
<ItemBox title="电池簇拓扑图">
<ItemBox :title="$t('pcs.batteryClusterTopo')">
<div class="center-top-container">
<div class="left">
<img :src="dianchicu" alt="">
@ -13,19 +13,19 @@
class="right-content-box"
>
<div class="title">
<span class="title-left">电池组{{ index + 1 }}</span>
<span class="title-left">{{ $t('pcs.batteryGroup') }}{{ index + 1 }}</span>
<!-- <div class="title-right" @click="seeHistory(index)" /> -->
</div>
<div class="content">
<div class="content-box margin-bottom">
<span class="d" />
<span class="label">电压</span>
<span class="label">{{ $t('pcs.vol') }}</span>
<span class="value">{{ item.volValue === 0 ? '##' : item.volValue }}</span>
<span class="unit">V</span>
</div>
<div class="content-box">
<span class="d" />
<span class="label">温度</span>
<span class="label">{{ $t('pcs.tem') }}</span>
<span class="value">{{ item.AValue === 0 ? '##' : item.AValue }}</span>
<span class="unit"></span>
</div>
@ -36,7 +36,7 @@
</ItemBox>
<TableChartDialog
:is-show.sync="visible"
title="电池簇历史数据"
:title="$t('pcs.batteryClusterHistoryData')"
:col="colValue"
:src-id="srcValue"
/>

View File

@ -1,6 +1,6 @@
<template>
<div class="left-top-wrap">
<ItemBox title="运行数据">
<ItemBox :title="$t('pcs.runData')">
<div v-loading="loading" class="top-left-container">
<div class="left">
<div
@ -10,7 +10,8 @@
>
<div class="box-title">
<div class="title">
{{ item.label }}
<!-- {{ item.label }} -->
{{ item[language] }}
<span v-if="item.isMwh">
({{ item.value | kwhUnitFormat }})
</span>
@ -28,10 +29,8 @@
<div class="right-second-content">
<span class="left">
<span class="jt" />
<span class="hight-v">平均电压</span>
<span class="v-value">{{
rightAllData.centerAvgData.AvgV.value
}}</span>
<span class="hight-v">{{ $t('pcs.avgVol') }}</span>
<span class="v-value">{{ rightAllData.centerAvgData.AvgV.value }}</span>
<span class="unit">V</span>
</span>
</div>
@ -39,10 +38,8 @@
<div class="right-second-content">
<span class="left">
<span class="jt" />
<span class="hight-v">平均温度</span>
<span class="v-value">{{
rightAllData.centerAvgData.AvgT.value
}}</span>
<span class="hight-v">{{ $t('pcs.avgTem') }}</span>
<span class="v-value">{{ rightAllData.centerAvgData.AvgT.value }}</span>
<span class="unit"></span>
</span>
</div>
@ -54,7 +51,8 @@
:key="item.label"
:class="className(item.value)"
>
<div class="label">{{ item.label }}</div>
<!-- <div class="label">{{ item.label }}</div> -->
<div class="label">{{ item[language] }}</div>
</div>
</div>
@ -62,7 +60,7 @@
<div class="right-second-content">
<span class="left">
<span class="jt" />
<span class="hight-v">最大电压差</span>
<span class="hight-v">{{ $t('pcs.maxvolDiff') }}</span>
<span class="v-value">{{
(
(rightAllData.bottomData.maxVol.value ? rightAllData.bottomData.maxVol.value : '') -
@ -77,52 +75,40 @@
<div class="right-four">
<div class="height-v">
<div class="top">
<span class="top-title">单体最高电压</span>
<span class="top-title">{{ $t('pcs.maxCellVol') }}</span>
<span class="top-value">
<span class="value">{{
rightAllData.bottomData.maxVol.value
}}</span>
<span class="value">{{ rightAllData.bottomData.maxVol.value }}</span>
<span class="unit">V</span>
</span>
</div>
<div class="bottom">
<span class="dczh">
<span class="dczh-title">电池组号</span>
<span class="dczh-value">{{
rightAllData.bottomData.maxVol.BMUValue
}}</span>
<span class="dczh-title">{{ $t('pcs.batteryGroupNum') }}</span>
<span class="dczh-value">{{ rightAllData.bottomData.maxVol.BMUValue }}</span>
</span>
<span class="dxwz">
<span class="dxwz-title">电芯位置</span>
<span class="dxwz-value">{{
rightAllData.bottomData.maxVol.boxValue
}}</span>
<span class="dxwz-title">{{ $t('pcs.cellPostion') }}</span>
<span class="dxwz-value">{{ rightAllData.bottomData.maxVol.boxValue }}</span>
</span>
</div>
</div>
<div class="low-v">
<div class="top">
<span class="top-title">单体最低电压</span>
<span class="top-title">{{ $t('pcs.minCellVol') }}</span>
<span class="top-value">
<span class="value">{{
rightAllData.bottomData.minVol.value
}}</span>
<span class="value">{{ rightAllData.bottomData.minVol.value }}</span>
<span class="unit">V</span>
</span>
</div>
<div class="bottom">
<span class="dczh">
<span class="dczh-title">电池组号</span>
<span class="dczh-value">{{
rightAllData.bottomData.minVol.BMUValue
}}</span>
<span class="dczh-title">{{ $t('pcs.batteryGroupNum') }}</span>
<span class="dczh-value">{{ rightAllData.bottomData.minVol.BMUValue }}</span>
</span>
<span class="dxwz">
<span class="dxwz-title">电芯位置</span>
<span class="dxwz-value">{{
rightAllData.bottomData.minVol.boxValue
}}</span>
<span class="dxwz-title">{{ $t('pcs.cellPostion') }}</span>
<span class="dxwz-value">{{ rightAllData.bottomData.minVol.boxValue }}</span>
</span>
</div>
</div>
@ -131,7 +117,7 @@
<div class="right-second-content">
<span class="left">
<span class="jt" />
<span class="hight-v">最大温度差</span>
<span class="hight-v">{{ $t('pcs.maxTemDiff') }}</span>
<span class="v-value">{{
(rightAllData.bottomData.maxTem.value -
rightAllData.bottomData.minTmp.value).toFixed(3)
@ -142,52 +128,40 @@
</div>
<div class="height-t">
<div class="top">
<span class="top-title">单体最高温度</span>
<span class="top-title">{{ $t('pcs.maxCellTem') }}</span>
<span class="top-value">
<span class="value">{{
rightAllData.bottomData.maxTem.value
}}</span>
<span class="value">{{ rightAllData.bottomData.maxTem.value }}</span>
<span class="unit"></span>
</span>
</div>
<div class="bottom">
<span class="dczh">
<span class="dczh-title">电池组号</span>
<span class="dczh-value">{{
rightAllData.bottomData.maxTem.BMUValue
}}</span>
<span class="dczh-title">{{ $t('pcs.batteryGroupNum') }}</span>
<span class="dczh-value">{{ rightAllData.bottomData.maxTem.BMUValue }}</span>
</span>
<span class="dxwz">
<span class="dxwz-title">电芯位置</span>
<span class="dxwz-value">{{
rightAllData.bottomData.maxTem.boxValue
}}</span>
<span class="dxwz-title">{{ $t('pcs.cellPostion') }}</span>
<span class="dxwz-value">{{ rightAllData.bottomData.maxTem.boxValue }}</span>
</span>
</div>
</div>
<div class="low-t">
<div class="top">
<span class="top-title">单体最低温度</span>
<span class="top-title">{{ $t('pcs.minCellTem') }}</span>
<span class="top-value">
<span class="value">{{
rightAllData.bottomData.minTmp.value
}}</span>
<span class="value">{{ rightAllData.bottomData.minTmp.value }}</span>
<span class="unit"></span>
</span>
</div>
<div class="bottom">
<span class="dczh">
<span class="dczh-title">电池组号</span>
<span class="dczh-value">{{
rightAllData.bottomData.minTmp.BMUValue
}}</span>
<span class="dczh-title">{{ $t('pcs.batteryGroupNum') }}</span>
<span class="dczh-value">{{ rightAllData.bottomData.minTmp.BMUValue }}</span>
</span>
<span class="dxwz">
<span class="dxwz-title">电芯位置</span>
<span class="dxwz-value">{{
rightAllData.bottomData.minTmp.boxValue
}}</span>
<span class="dxwz-title">{{ $t('pcs.cellPostion') }}</span>
<span class="dxwz-value">{{ rightAllData.bottomData.minTmp.boxValue }}</span>
</span>
</div>
</div>
@ -239,7 +213,9 @@ export default {
}
},
computed: {
language() {
return this.$store.getters.language || undefined
}
},
watch: {},
created() {
@ -310,7 +286,6 @@ export default {
this.rightAllData.bottomData.minTmp.value = res.data[this.rightAllData.bottomData.minTmp.field]?.value
this.rightAllData.bottomData.minTmp.BMUValue = res.data[this.rightAllData.bottomData.minTmp.BMUField]?.value
this.rightAllData.bottomData.minTmp.boxValue = res.data[this.rightAllData.bottomData.minTmp.boxField]?.value
console.log(6666, this.rightAllData)
} catch (error) {
console.log(error)
} finally {

View File

@ -1,56 +1,564 @@
export const centerBottomData = [
{
label: '紧急停机',
englabel: 'Emergency Stop',
zh_CN: '紧急停机',
en_US: 'Emergency Stop',
es_ES: 'Parada de emergencia',
fr_FR: "Arrêt d'urgence",
de_DE: 'Not-Aus',
pl_PL: 'STOP wyłącznik awaryjny',
ar_EG: 'إيقاف الطوارئ',
field: 'eStop',
value: ''
},
{
label: '直流输入过压',
englabel: 'DC Input Overvoltage',
zh_CN: '直流输入过压',
en_US: 'DC Input Overvoltage',
es_ES: 'Sobretensión de entrada de CC',
fr_FR: "Surtension d'entrée CC",
de_DE: 'DC-Eingangsüberspannung',
pl_PL: 'DC zbyt wysokie napięcie zasilania wejściowego',
ar_EG: 'فرط جهد دخل التيار المستمر',
field: 'dcInputOverVol',
value: ''
},
{
label: '直流输入欠压',
englabel: 'DC Input Undervoltage',
zh_CN: '直流输入欠压',
en_US: 'DC Input Undervoltage',
es_ES: 'Subtensión de entrada de CC',
fr_FR: "Sous-tension d'entrée CC",
de_DE: 'DC-Eingangsunterspannung',
pl_PL: 'DC zbyt niskie napięcie zasilania wejściowego',
ar_EG: 'انخفاض جهد دخل التيار المستمر',
field: 'dcInputDebtVol',
value: ''
},
{
label: '直流母线过压',
englabel: 'DC Bus Overvoltage',
zh_CN: '直流母线过压',
en_US: 'DC Bus Overvoltage',
es_ES: 'Sobretensión de barra de CC',
fr_FR: 'Surtension du jeu de barres CC',
de_DE: 'DC-Zwischenkreisüberspannung',
pl_PL: 'DC zbyt wysokie napięcie szyny',
ar_EG: 'فرط جهد ناقل التيار المستمر المشترك',
field: 'dcBusOverVol',
value: ''
},
{
label: '直流母线欠压',
englabel: 'DC Bus Undervoltage',
zh_CN: '直流母线欠压',
en_US: 'DC Bus Undervoltage',
es_ES: 'Subtensión de barra de CC',
fr_FR: 'Sous-tension du jeu de barres CC',
de_DE: 'DC-Zwischenkreisunterspannung',
pl_PL: 'DC zbyt niskie napięcie szyny',
ar_EG: 'انخفاض جهد ناقل التيار المستمر المشترك',
field: 'dcBusDebtVol',
value: ''
},
{
label: '直流母线电压不平衡',
englabel: 'DC Bus Voltage Imbalance',
zh_CN: '直流母线电压不平衡',
en_US: 'DC Bus Voltage Imbalance',
es_ES: 'Desequilibrio de voltaje de barra de CC',
fr_FR: 'Déséquilibre de tension du jeu de barres CC',
de_DE: 'DC-Zwischenkreis-Spannungsungleichgewicht',
pl_PL: 'DC niezrównoważenie napięcia szyny',
ar_EG: 'عدم توازن جهد ناقل التيار المستمر المشترك',
field: 'dcBusVolImbalance',
value: ''
},
{
label: '交流母线过压',
englabel: 'AC Bus Overvoltage',
zh_CN: '交流母线过压',
en_US: 'AC Bus Overvoltage',
es_ES: 'Sobretensión de barra de CA',
fr_FR: 'Surtension du jeu de barres CA',
de_DE: 'AC-Netzüberspannung',
pl_PL: 'AC zbyt wysokie napięcie szyny',
ar_EG: 'فرط جهد ناقل التيار المتردد',
field: 'acBusOverVol',
value: ''
},
{
label: '交流母线欠压',
englabel: 'AC Bus Undervoltage',
zh_CN: '交流母线欠压',
en_US: 'AC Bus Undervoltage',
es_ES: 'Subtensión de barra de CA',
fr_FR: 'Sous-tension du jeu de barres CA',
de_DE: 'AC-Netzunterspannung',
pl_PL: 'AC zbyt niskie napięcie szyny',
ar_EG: 'انخفاض جهد ناقل التيار المتردد',
field: 'acBusDebtVol',
value: ''
},
{
label: '交流母线过频',
englabel: 'AC Bus Overfrequency',
zh_CN: '交流母线过频',
en_US: 'AC Bus Overfrequency',
es_ES: 'Sobrefrecuencia de barra de CA',
fr_FR: 'Surfréquence du jeu de barres CA',
de_DE: 'AC-Überfrequenz',
pl_PL: 'AC zbyt wysoka częstotliwość szyny',
ar_EG: 'فرط تردد ناقل التيار المتردد',
field: 'acBusOverFreq',
value: ''
},
{
label: '交流母线欠频',
englabel: 'AC Bus Underfrequency',
zh_CN: '交流母线欠频',
en_US: 'AC Bus Underfrequency',
es_ES: 'Subfrecuencia de barra de CA',
fr_FR: 'Basse fréquence du jeu de barres CA',
de_DE: 'AC-Underfrequenz',
pl_PL: 'AC zbyt niska częstotliwość szyny',
ar_EG: 'انخفاض تردد ناقل التيار المتردد',
field: 'acBusDebtFreq',
value: ''
}
]
export const rightAllData = {
top: [
{
label: '累计充电量',
englabel: 'Cumulative Charged Energy',
zh_CN: '累计充电量',
en_US: 'Cumulative Charged Energy',
es_ES: 'Energía de carga acumulada',
fr_FR: 'Énergie chargée cumulée',
de_DE: 'Kumulative Ladeenergie',
pl_PL: 'Skumulowana energia ładowania',
ar_EG: 'الطاقة المشحونة التراكمية',
isMwh: true,
unit: 'kWh',
field: 'cTotalChargePower',
value: ''
},
{
label: '累计放电量',
englabel: 'Cumulative Discharged Energy',
zh_CN: '累计放电量',
en_US: 'Cumulative Discharged Energy',
es_ES: 'Energía de descarga acumulada',
fr_FR: 'Énergie déchargée cumulée',
de_DE: 'Kumulative Entladeenergie',
pl_PL: 'Skumulowana energia rozładowania',
ar_EG: 'الطاقة المستنفدة التراكمية',
isMwh: true,
unit: 'kWh',
field: 'cTotalDisChargePower',
value: ''
},
{
label: 'SOC',
englabel: 'SOC',
zh_CN: 'SOC',
en_US: 'SOC',
es_ES: 'SOC',
fr_FR: 'SOC',
de_DE: 'SOC',
pl_PL: 'SOC',
ar_EG: 'SOC',
unit: '%',
field: 'clusterSOC',
value: ''
},
{
label: 'SOH',
englabel: 'SOH',
zh_CN: 'SOH',
en_US: 'SOH',
es_ES: 'SOH',
fr_FR: 'SOH',
de_DE: 'SOH',
pl_PL: 'SOH',
ar_EG: 'SOH',
unit: '%',
field: 'clusterSOH',
value: ''
}
],
centerAvgData: {
AvgV: {
label: '平均电压',
englabel: 'Average Voltage',
zh_CN: '平均电压',
en_US: 'Average Voltage',
es_ES: 'Tensión medio',
fr_FR: 'Tension moyenne',
de_DE: 'Durchschnittsspannung',
pl_PL: 'Średnie napięcie',
ar_EG: 'الجهد المتوسط',
field: 'csingleAgeV',
value: ''
},
AvgT: {
label: '平均温度',
englabel: 'Average Temperature',
zh_CN: '平均温度',
en_US: 'Average Temperature',
es_ES: 'Temperatura media',
fr_FR: 'Température moyenne',
de_DE: 'Durchschnittstemperatur',
pl_PL: 'Średnia temperatura',
ar_EG: 'درجة الحرارة المتوسطة',
field: 'cageT',
value: ''
}
},
bottomData: {
maxVol: {
label: '最高电压',
englabel: 'Maximum Voltage',
zh_CN: '最高电压',
en_US: 'Maximum Voltage',
es_ES: 'Tensión máximo',
fr_FR: 'Tension maximale',
de_DE: 'Maximalspannung',
pl_PL: 'Maksymalne napięcie',
BMUpl_PL: 'Numer bloku baterii',
boxpl_PL: 'Pozycja ogniwa',
ar_EG: 'الجهد الأقصى',
field: 'csingleMaxVolData',
value: '',
BMULabel: '电池组号',
BMUen_US: 'Battery Block No.',
BMUzh_CN: '电池组号',
BMUfr_FR: 'No. de bloc-batterie',
BMUDel: 'Batterieblock-Nr.',
BMUes_ES: 'Número de grupo de baterías',
BMUField: 'csingleMaxVolBMUNum',
BMUValue: '',
boxLabel: '电芯位置',
boxen_US: 'Cell Position',
boxzh_CN: '电芯位置',
boxfr_FR: 'Position de la cellule',
boxDel: 'Zellposition',
boxes_ES: 'Posición de la célula',
boxField: 'csingleMaxVolBoxNum',
boxValue: ''
},
minVol: {
label: '最低电压',
englabel: 'Minimum Voltage',
zh_CN: '最低电压',
en_US: 'Minimum Voltage',
es_ES: 'Tensión mínimo',
fr_FR: 'Tension minimale',
de_DE: 'Minimalspannung',
pl_PL: 'Minimalne napięcie',
BMUpl_PL: 'Numer bloku baterii',
boxpl_PL: 'Pozycja ogniwa',
ar_EG: 'الجهد الأدنى',
field: 'csingleMinVolData',
value: '',
BMULabel: '电池组号',
BMUen_US: 'Battery Block No.',
BMUzh_CN: '电池组号',
BMUfr_FR: 'No. de bloc-batterie',
BMUDel: 'Batterieblock-Nr.',
BMUes_ES: 'Número de grupo de baterías',
BMUField: 'csingleMinVolBMUNum',
BMUValue: '',
boxLabel: '电芯位置',
boxen_US: 'Cell Position',
boxzh_CN: '电芯位置',
boxfr_FR: 'Position de la cellule',
boxDel: 'Zellposition',
boxes_ES: 'Posición de la célula',
boxField: 'csingleMinVolBoxNum',
boxValue: ''
},
maxTem: {
label: '最高温度',
englabel: 'Maximum Temperature',
zh_CN: '最高温度',
en_US: 'Maximum Temperature',
es_ES: 'Temperatura máxima',
fr_FR: 'Température maximale',
de_DE: 'Maximaltemperatur',
pl_PL: 'Maksymalna temperatura',
BMUpl_PL: 'Numer bloku baterii',
boxpl_PL: 'Pozycja ogniwa',
ar_EG: 'درجة الحرارة القصوى',
field: 'csingleMaxTemData',
value: '',
BMULabel: '电池组号',
BMUen_US: 'Battery Block No.',
BMUzh_CN: '电池组号',
BMUfr_FR: 'No. de bloc-batterie',
BMUDel: 'Batterieblock-Nr.',
BMUes_ES: 'Número de grupo de baterías',
BMUField: 'csingleMaxTemBMUNum',
BMUValue: '',
boxLabel: '电芯位置',
boxen_US: 'Cell Position',
boxzh_CN: '电芯位置',
boxfr_FR: 'Position de la cellule',
boxDel: 'Zellposition',
boxes_ES: 'Posición de la célula',
boxField: 'csingleMaxTemBoxNum',
boxValue: ''
},
minTmp: {
label: '最低温度',
englabel: 'Minimum Temperature',
zh_CN: '最低温度',
en_US: 'Minimum Temperature',
es_ES: 'Temperatura mínima',
fr_FR: 'Température minimale',
de_DE: 'Minimaltemperatur',
pl_PL: 'Minimalna temperatura',
BMUpl_PL: 'Numer bloku baterii',
boxpl_PL: 'Pozycja ogniwa',
ar_EG: 'درجة الحرارة الدنيا',
field: 'csingleMinTemData',
value: '',
BMULabel: '电池组号',
BMUen_US: 'Battery Block No.',
BMUzh_CN: '电池组号',
BMUfr_FR: 'No. de bloc-batterie',
BMUDel: 'Batterieblock-Nr.',
BMUes_ES: 'Número de grupo de baterías',
BMUField: 'csingleMinTemBMUNum',
BMUValue: '',
boxLabel: '电芯位置',
boxen_US: 'Cell Position',
boxzh_CN: '电芯位置',
boxfr_FR: 'Position de la cellule',
boxDel: 'Zellposition',
boxes_ES: 'Posición de la célula',
boxField: 'csingleMinTemBoxNum',
boxValue: ''
}
}
}
export const pcsRightData = [
{
label: '充电温度高',
englabel: 'High Charge Temperature',
zh_CN: '充电温度高',
en_US: 'High Charge Temperature',
es_ES: 'Temperatura alta durante la carga',
fr_FR: 'Température de charge élevée',
de_DE: 'Hohe Ladtemperatur',
pl_PL: 'Zbyt wysoka temperatura ładowania',
ar_EG: 'درجة حرارة الشحن العالية',
field: 'clusterAlarmCodeLBit0',
value: ''
},
{
label: '充电温度低',
englabel: 'Low Charge Temperature',
zh_CN: '充电温度低',
en_US: 'Low Charge Temperature',
es_ES: 'Temperatura baja durante la carga',
fr_FR: 'Température de charge basse',
de_DE: 'Niedrige Ladtemperatur',
pl_PL: 'Zbyt niska temperatura ładowania',
ar_EG: 'درجة حرارة الشحن المنخفضة',
field: 'clusterAlarmCodeLBit1',
value: ''
},
{
label: '放电温度高',
englabel: 'High Discharge Temperature',
zh_CN: '放电温度高',
en_US: 'High Discharge Temperature',
es_ES: 'Temperatura alta durante la descarga',
fr_FR: 'Température de décharge élevée',
de_DE: 'Hohe Entladetemperatur',
pl_PL: 'Zbyt wysoka temperatura rozładowania',
ar_EG: 'درجة حرارة التفريغ العالية',
field: 'clusterAlarmCodeLBit2',
value: ''
},
{
label: '放电温度低',
englabel: 'Low Discharge Temperature',
zh_CN: '放电温度低',
en_US: 'Low Discharge Temperature',
es_ES: 'Temperatura baja durante la descarga',
fr_FR: 'Température de décharge basse',
de_DE: 'Niedrige Entladetemperatur',
pl_PL: 'Zbyt niska temperatura rozładowania',
ar_EG: 'درجة حرارة التفريغ المنخفضة',
field: 'clusterAlarmCodeLBit3',
value: ''
},
{
label: '充电温差大',
englabel: 'High Charge Temperature Difference',
zh_CN: '充电温差大',
en_US: 'High Charge Temperature Difference',
es_ES: 'Gran diferencia de temperatura durante la carga',
fr_FR: 'Écart de température de charge élevé',
de_DE: 'Hohe Ladtemperaturdifferenz',
pl_PL: 'Zbyt duża różnica temperatur podczas ładowania',
ar_EG: 'الفارق العالي في درجة حرارة الشحن',
field: 'clusterAlarmCodeLBit4',
value: ''
},
{
label: '放电温差大',
englabel: 'High Discharge Temperature Difference',
zh_CN: '放电温差大',
en_US: 'High Discharge Temperature Difference',
es_ES: 'Gran diferencia de temperatura durante la descarga',
fr_FR: 'Écart de température de décharge élevé',
de_DE: 'Hohe Entladetemperaturdifferenz',
pl_PL: 'Zbyt duża różnica temperatur podczas rozładowania',
ar_EG: 'الفارق العالي في درجة حرارة التفريغ',
field: 'clusterAlarmCodeLBit5',
value: ''
},
{
label: '环境温度高',
englabel: 'High Ambient Temperature',
zh_CN: '环境温度高',
en_US: 'High Ambient Temperature',
es_ES: 'Temperatura ambiental alta',
fr_FR: 'Température ambiante élevée',
de_DE: 'Hohe Umgebungstemperatur',
pl_PL: 'Zbyt wysoka temperatura otoczenia',
ar_EG: 'درجة حرارة المحيط العالية',
field: 'clusterAlarmCodeLBit6',
value: ''
},
{
label: '单体电压高',
englabel: 'High Cell Voltage',
zh_CN: '单体电压高',
en_US: 'High Cell Voltage',
es_ES: 'unidad de tensión alto',
fr_FR: 'Tension de cellule élevée',
de_DE: 'Hohe Zellspannung',
pl_PL: 'Zbyt wysokie napięcie ogniwa',
ar_EG: 'جهد الخلية العالي',
field: 'clusterAlarmCodeLBit8',
value: ''
},
{
label: '单体电压低',
englabel: 'Low Cell Voltage',
zh_CN: '单体电压低',
en_US: 'Low Cell Voltage',
es_ES: 'unidad con tensión bajo',
fr_FR: 'Tension de cellule basse',
de_DE: 'Niedrige Zellspannung',
pl_PL: 'Zbyt niskie napięcie ogniwa',
ar_EG: 'جهد الخلية المنخفض',
field: 'clusterAlarmCodeLBit9',
value: ''
},
{
label: '充电压差大',
englabel: 'High Charge Voltage Difference',
zh_CN: '充电压差大',
en_US: 'High Charge Voltage Difference',
es_ES: 'Gran diferencia de tensión durante la carga',
fr_FR: 'Écart de tension de charge élevé',
de_DE: 'Hohe Ladespannungsdifferenz',
pl_PL: 'Zbyt duża różnica napięć podczas ładowania',
ar_EG: 'الفارق العالي في جهد الشحن',
field: 'clusterAlarmCodeLBit10',
value: ''
},
{
label: '放电压差大',
englabel: 'High Discharge Voltage Difference',
zh_CN: '放电压差大',
en_US: 'High Discharge Voltage Difference',
es_ES: 'Gran diferencia de tensión durante la descarga',
fr_FR: 'Écart de tension de décharge élevé',
de_DE: 'Hohe Entladespannungsdifferenz',
pl_PL: 'Zbyt duża różnica napięć podczas rozładowania',
ar_EG: 'الفارق العالي في جهد التفريغ',
field: 'clusterAlarmCodeLBit11',
value: ''
},
{
label: 'SOC低',
englabel: 'Low SOC',
zh_CN: 'SOC低',
en_US: 'Low SOC',
es_ES: 'SOC bajo',
fr_FR: 'SOC faible',
de_DE: 'Niedriger SOC',
pl_PL: 'Zbyt niski poziom naładowania (SOC)',
ar_EG: 'SOC المنخفضة',
field: 'clusterAlarmCodeLBit12',
value: ''
},
{
label: '充电电流大',
englabel: 'High Charge Current',
zh_CN: '充电电流大',
en_US: 'High Charge Current',
es_ES: 'Corriente de carga alta',
fr_FR: 'Courant de charge élevé',
de_DE: 'Hoher Ladestrom',
pl_PL: 'Zbyt wysoki prąd ładowania',
ar_EG: 'تيار الشحن العالي',
field: 'clusterAlarmCodeLBit13',
value: ''
},
{
label: '放电电流大',
englabel: 'High Discharge Current',
zh_CN: '放电电流大',
en_US: 'High Discharge Current',
es_ES: 'Corriente de descarga alta',
fr_FR: 'Courant de décharge élevé',
de_DE: 'Hoher Entladestrom',
pl_PL: 'Zbyt wysoki prąd rozładowania',
ar_EG: 'تيار التفريغ العالي',
field: 'clusterAlarmCodeLBit14',
value: ''
},
{
label: '总电压过高',
englabel: 'Total Voltage Too High',
zh_CN: '总电压过高',
en_US: 'Total Voltage Too High',
es_ES: 'Tensión total excesivo',
fr_FR: 'Tension totale trop élevée',
de_DE: 'Gesamtspannung zu hoch',
pl_PL: 'Zbyt wysokie napięcie całkowite',
ar_EG: 'الجهد الكلي مرتفع جداً',
field: 'clusterAlarmCodeLBit15',
value: ''
},
{
label: '总电压过低',
englabel: 'Total Voltage Too Low',
zh_CN: '总电压过低',
en_US: 'Total Voltage Too Low',
es_ES: 'Tensión total deficiente',
fr_FR: 'Tension totale trop faible',
de_DE: 'Gesamtspannung zu niedrig',
pl_PL: 'Zbyt niskie napięcie całkowite',
ar_EG: 'الجهد الكلي منخفض جداً',
field: 'clusterAlarmCodeLBit16',
value: ''
}
]
export const centerTopData = [
{
volLabel: '电压',
@ -174,268 +682,3 @@ export const centerTopData = [
}
]
export const rightAllData = {
top: [
{
label: '累计充电量',
isMwh: true,
unit: 'kWh',
field: 'cTotalChargePower',
value: ''
},
{
label: '累计放电量',
isMwh: true,
unit: 'kWh',
field: 'cTotalDisChargePower',
value: ''
},
// {
// label: '绝缘正电阻',
// field: 'cInsulationPositiveResistance',
// unit: 'kΩ',
// value: ''
// },
// {
// label: '绝缘负电阻',
// unit: 'kΩ',
// field: 'cInsulationNegativeResistance',
// value: ''
// },
{
label: 'SOC',
unit: '%',
field: 'clusterSOC',
value: ''
},
{
label: 'SOH',
unit: '%',
field: 'clusterSOH',
value: ''
}
],
centerAvgData: {
AvgV: {
label: '平均电压',
field: 'csingleAgeV',
value: ''
},
AvgT: {
label: '平均温度',
field: 'cageT',
value: ''
}
},
bottomData: {
maxVol: {
label: '最高电压',
field: 'csingleMaxVolData',
value: '',
BMULabel: '电池组号',
BMUField: 'csingleMaxVolBMUNum',
BMUValue: '',
boxLabel: '电芯位置',
boxField: 'csingleMaxVolBoxNum',
boxValue: ''
},
minVol: {
label: '最低电压',
field: 'csingleMinVolData',
value: '',
BMULabel: '电池组号',
BMUField: 'csingleMinVolBMUNum',
BMUValue: '',
boxLabel: '电芯位置',
boxField: 'csingleMinVolBoxNum',
boxValue: ''
},
maxTem: {
label: '最高温度',
field: 'csingleMaxTemData',
value: '',
BMULabel: '电池组号',
BMUField: 'csingleMaxTemBMUNum',
BMUValue: '',
boxLabel: '电芯位置',
boxField: 'csingleMaxTemBoxNum',
boxValue: ''
},
minTmp: {
label: '最低温度',
field: 'csingleMinTemData',
value: '',
BMULabel: '电池组号',
BMUField: 'csingleMinTemBMUNum',
BMUValue: '',
boxLabel: '电芯位置',
boxField: 'csingleMinTemBoxNum',
boxValue: ''
}
}
}
export const pcsRightData = [
{
label: '充电温度高',
field: 'clusterAlarmCodeLBit0',
value: ''
},
{
label: '充电温度低',
field: 'clusterAlarmCodeLBit1',
value: ''
},
{
label: '放电温度高',
field: 'clusterAlarmCodeLBit2',
value: ''
},
{
label: '放电温度低',
field: 'clusterAlarmCodeLBit3',
value: ''
},
{
label: '充电温差大',
field: 'clusterAlarmCodeLBit4',
value: ''
},
{
label: '放电温差大',
field: 'clusterAlarmCodeLBit5',
value: ''
},
{
label: '环境温度高',
field: 'clusterAlarmCodeLBit6',
value: ''
},
{
label: '单体电压高',
field: 'clusterAlarmCodeLBit8',
value: ''
},
{
label: '单体电压低',
field: 'clusterAlarmCodeLBit9',
value: ''
},
{
label: '充电压差大',
field: 'clusterAlarmCodeLBit10',
value: ''
},
{
label: '放电压差大',
field: 'clusterAlarmCodeLBit11',
value: ''
},
{
label: 'SOC低',
field: 'clusterAlarmCodeLBit12',
value: ''
},
{
label: '充电电流大',
field: 'clusterAlarmCodeLBit13',
value: ''
},
{
label: '放电电流大',
field: 'clusterAlarmCodeLBit14',
value: ''
},
{
label: '总电压过高',
field: 'clusterAlarmCodeLBit15',
value: ''
},
{
label: '总电压过低',
field: 'clusterAlarmCodeLBit16',
value: ''
}
]
// export const pcsRightData = [
// {
// label: '放电温度高',
// field: 'clusterAlarmCodeLBit0',
// value: ''
// },
// {
// label: '放电温度低',
// field: 'clusterAlarmCodeLBit1',
// value: ''
// },
// {
// label: '单体电压高',
// field: 'clusterAlarmCodeLBit2',
// value: ''
// },
// {
// label: '单体电压低',
// field: 'clusterAlarmCodeLBit3',
// value: ''
// },
// {
// label: 'SOC低',
// field: 'clusterAlarmCodeLBit5',
// value: ''
// },
// {
// label: 'SOC高',
// field: 'clusterAlarmCodeLBit6',
// value: ''
// },
// {
// label: '充电电流大',
// field: 'clusterAlarmCodeLBit8',
// value: ''
// },
// {
// label: '放电电流大',
// field: 'clusterAlarmCodeLBit9',
// value: ''
// },
// {
// label: '温差大',
// field: 'clusterAlarmCodeLBit10',
// value: ''
// },
// {
// label: '绝缘低',
// field: 'clusterAlarmCodeLBit11',
// value: ''
// },
// {
// label: '总压高',
// field: 'clusterAlarmCodeLBit12',
// value: ''
// },
// {
// label: '总压低',
// field: 'clusterAlarmCodeLBit13',
// value: ''
// },
// {
// label: '充电温度高',
// field: 'clusterAlarmCodeLBit14',
// value: ''
// },
// {
// label: '充电温度低',
// field: 'clusterAlarmCodeLBit15',
// value: ''
// }
// ]

View File

@ -18,14 +18,7 @@ export default {
data() {
return {
timeLidu: 1,
times: [
{ label: '1分钟', value: 1 },
{ label: '5分钟', value: 5 },
{ label: '10分钟', value: 10 },
{ label: '15分钟', value: 15 },
{ label: '20分钟', value: 20 },
{ label: '30分钟', value: 30 }
],
times: this.$t('pcs.times'),
options: {
title: {
text: this.$t('pcs.noData'),
@ -109,19 +102,15 @@ export default {
params.forEach((item) => {
dataStr += `<div>
<div style="margin: 0 8px;">
<span style="display:inline-block;margin-right:5px;width:10px;height:10px;background-color:${
item.color
};"></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 === null ? '' : 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
}
},

View File

@ -7,8 +7,9 @@
<div v-loading="loading" class="left-first">
<div v-for="item in ktstatus2" :key="item.label" class="box-title">
<span v-if="language === 'en'" class="title">{{ item.englabel }}</span>
<span v-else class="title">{{ item.label }}</span>
<!-- <span v-if="language === 'en'" class="title">{{ item.englabel }}</span>
<span v-else class="title">{{ item.label }}</span> -->
<span class="title">{{ item[language] }}</span>
<span class="value">{{ item.value }}</span>
<span v-if="item.unit" class="unit">{{ item.unit }}</span>
@ -23,16 +24,18 @@
<div class="right-first">
<div class="top-left-container">
<div v-for="item in ktLeftData" :key="item.label" :class="item.value ? 'error-item-wrap' : 'item-wrap'">
<div v-if="language === 'en'" class="label">{{ item.englabel }}</div>
<div v-else class="label">{{ item.label }}</div>
<!-- <div v-if="language === 'en'" class="label">{{ item.englabel }}</div>
<div v-else class="label">{{ item.label }}</div> -->
<div class="label">{{ item[language] }}</div>
</div>
</div>
</div>
<div class="right-first">
<div class="top-left-container">
<div v-for="item in ktLeftData2" :key="item.label" :class="item.value ? 'error-item-wrap' : 'item-wrap'">
<div v-if="language === 'en'" class="label">{{ item.englabel }}</div>
<div v-else class="label">{{ item.label }}</div>
<!-- <div v-if="language === 'en'" class="label">{{ item.englabel }}</div>
<div v-else class="label">{{ item.label }}</div> -->
<div class="label">{{ item[language] }}</div>
</div>
</div>
@ -40,8 +43,9 @@
<div class="right-first">
<div class="top-left-container">
<div v-for="item in ktLeftData3" :key="item.label" :class="item.value ? 'error-item-wrap' : 'item-wrap'">
<div v-if="language === 'en'" class="label">{{ item.englabel }}</div>
<div v-else class="label">{{ item.label }}</div>
<!-- <div v-if="language === 'en'" class="label">{{ item.englabel }}</div>
<div v-else class="label">{{ item.label }}</div> -->
<div class="label">{{ item[language] }}</div>
</div>
</div>
</div>
@ -117,13 +121,13 @@ export default {
}
})
if (this.ktstatus2[3].value === 0) {
this.ktstatus2[3].value = '关机'
this.ktstatus2[3].value = this.$t('pcs.turnOff')
} else if (this.ktstatus2[3].value === 1) {
this.ktstatus2[3].value = '制冷模式'
this.ktstatus2[3].value = this.$t('pcs.coolingMode')
} else if (this.ktstatus2[3].value === 2) {
this.ktstatus2[3].value = '制热模式'
this.ktstatus2[3].value = this.$t('pcs.HeatingMode')
} else if (this.ktstatus2[3].value === 3) {
this.ktstatus2[3].value = '自循环模式'
this.ktstatus2[3].value = this.$t('pcs.selfLoopMode')
}
this.ktLeftData.forEach((el) => {

View File

@ -1,6 +1,14 @@
export const ktstatus = [
{
label: '空调开关机',
englabel: 'Air Conditioner On/Off',
zh_CN: '空调开关机',
en_US: 'Air Conditioner On/Off',
es_ES: 'Encendido y apagado del aire acondicionado',
fr_FR: 'Marche/arrêt du climatiseur',
de_DE: 'Klimaanlage Ein/Aus',
pl_PL: 'Włącz / Wyłącz klimatyzację',
ar_EG: 'تشغيل / إيقاف المكيف',
field: 'airconditionSwitchYX',
value: '关机'
}
@ -9,28 +17,56 @@ export const ktstatus = [
export const ktstatus2 = [
{
label: '环境温度',
englabel: 'Ambient temperature',
englabel: 'Ambient Temperature',
zh_CN: '环境温度',
en_US: 'Ambient Temperature',
es_ES: 'Temperatura ambiental',
fr_FR: 'Température ambiante',
de_DE: 'Umgebungstemperatur',
pl_PL: 'Temperatura otoczenia',
ar_EG: 'الدرجة الحرارة المحيطة',
field: 'ambient_temp',
value: '0',
unit: '℃'
},
{
label: '回水温度',
englabel: 'Return water temperature',
englabel: 'Water Return Temperature',
zh_CN: '回水温度',
en_US: 'Water Return Temperature',
es_ES: 'Temperatura de agua de retorno',
fr_FR: "Température de retour d'eau",
de_DE: 'Rücklauftemperatur',
pl_PL: 'Temperatura wody powrotnej',
ar_EG: 'درجة حرارة الماء الراجع',
field: 'return_water_temp',
value: '0',
unit: '℃'
},
{
label: '出水温度',
englabel: 'Effluent temperature',
englabel: 'Water Outlet Temperature',
zh_CN: '出水温度',
en_US: 'Water Outlet Temperature',
es_ES: 'Temperatura de agua de salida',
fr_FR: "Température d'eau de sortie",
de_DE: 'Vorlauftemperatur',
pl_PL: 'Temperatura wody zasilającej',
ar_EG: 'درجة حرارة الماء الخارج',
field: 'outlet_water_temp',
value: '0',
unit: '℃'
},
{
label: 'TMS工作状态',
englabel: 'TMS working status',
englabel: 'TMS Operating Status',
zh_CN: 'TMS工作状态',
en_US: 'TMS Operating Status',
es_ES: 'Estado de funcionamiento del TMS',
fr_FR: 'État de service du TMS',
de_DE: 'TMS-Betriebsstatus',
pl_PL: 'Stan pracy systemu TMS',
ar_EG: 'حالة تشغيل TMS',
field: 'tms_workStatus',
value: '0',
unit: ''
@ -40,67 +76,144 @@ export const ktstatus2 = [
export const ktLeftData = [
{
label: 'BMS通信故障',
englabel: 'BMS communication faulty',
englabel: 'BMS Communication Fault',
zh_CN: 'BMS通信故障',
en_US: 'BMS Communication Fault',
es_ES: 'Avería de comunicación del BMS',
fr_FR: 'Défaut de communication SGB',
de_DE: 'BMS-Kommunikationsfehler',
pl_PL: 'Błąd komunikacji BMS',
ar_EG: 'عطل اتصال BMS',
field: 'fault1',
value: ''
},
{
label: '低压电压故障',
englabel: 'Low voltage fault',
englabel: 'Low Voltage Fault',
zh_CN: '低压电压故障',
en_US: 'Low Voltage Fault',
es_ES: 'Avería de voltaje de baja tensión',
fr_FR: 'Défaut de basse tension',
de_DE: 'Niederspannungsfehler',
pl_PL: 'Awaria niskiego napięcia',
ar_EG: 'عطل انخفاض الجهد',
field: 'fault2',
value: ''
},
{
label: '低压压力故障',
englabel: 'Low pressure fault',
englabel: 'Low Pressure Fault',
zh_CN: '低压压力故障',
en_US: 'Low Pressure Fault',
es_ES: 'Avería de presión de baja tensión',
fr_FR: 'Défaut de basse pression',
de_DE: 'Niederdruckfehler',
pl_PL: 'Awaria niskiego ciśnienia',
ar_EG: 'عطل انخفاض الضغط',
field: 'fault3',
value: ''
},
{
label: '高压压力故障',
englabel: 'High pressure failure',
englabel: 'High Pressure Fault',
zh_CN: '高压压力故障',
en_US: 'High Pressure Fault',
es_ES: 'Avería de presión de alta tensión',
fr_FR: 'Défaut de haute pression',
de_DE: 'Hochdruckfehler',
pl_PL: 'Awaria wysokiego ciśnienia',
ar_EG: 'عطل ارتفاع الضغط',
field: 'fault4',
value: ''
},
{
label: 'PTC过温报警',
englabel: 'PTC overtemperature alarm',
englabel: 'PTC Overtemperature Alarm',
zh_CN: 'PTC过温报警',
en_US: 'PTC Overtemperature Alarm',
es_ES: 'Alarma de sobretemperatura del PTC',
fr_FR: 'Alarme de surchauffe PTC',
de_DE: 'PTC-Überhitzungsalarm',
pl_PL: 'Alarm przegrzania PTC',
ar_EG: 'إنذار ارتفاع درجة حرارة PTC',
field: 'fault5',
value: ''
},
{
label: '蒸发温度传感器故障',
englabel: 'Evaporation temperature sensor fault',
englabel: 'Evaporator Temperature Sensor Fault',
zh_CN: '蒸发温度传感器故障',
en_US: 'Evaporator Temperature Sensor Fault',
es_ES: 'Avería del sensor de temperatura de evaporación',
fr_FR: "Défaut de sonde de température d'évaporation",
de_DE: 'Verdampfertemperatursensorfehler',
pl_PL: 'Błąd czujnika temperatury parownika',
ar_EG: 'عطل حساس درجة حرارة المبخر',
field: 'fault6',
value: ''
},
{
label: '主继电器故障',
englabel: 'Main relay fault',
englabel: 'Main Relay Fault',
zh_CN: '主继电器故障',
en_US: 'Main Relay Fault',
es_ES: 'Avería del relé principal',
fr_FR: 'Défaut du relais principal',
de_DE: 'Hauptrelaisfehler',
pl_PL: 'Awaria przekaźnika głównego',
ar_EG: 'عطل المرحل الرئيسي',
field: 'fault7',
value: ''
},
{
label: '压缩机故障',
englabel: 'Compressor failure',
englabel: 'Compressor Fault',
zh_CN: '压缩机故障',
en_US: 'Compressor Fault',
es_ES: 'Avería del compresor',
fr_FR: 'Défaut du compresseur',
de_DE: 'Kompressorfehler',
pl_PL: 'Awaria sprężarki',
ar_EG: 'عطل الضاغط',
field: 'fault8',
value: ''
},
{
label: '防冻结保护',
englabel: 'Freeze protection',
englabel: 'Anti-Freeze Protection',
zh_CN: '防冻结保护',
en_US: 'Anti-Freeze Protection',
es_ES: 'Protección contra congelación',
fr_FR: 'Protection antigel',
de_DE: 'Frostschutz',
pl_PL: 'Zabezpieczenie przeciwzamrozeniowe',
ar_EG: 'الحماية من التجمد',
field: 'fault9',
value: ''
},
{
label: '防冻结温度传感器异常',
englabel: 'Anti-freezing temperature sensor Fault',
englabel: 'Anti-Freeze Temperature Sensor Fault',
zh_CN: '防冻结温度传感器异常',
en_US: 'Anti-Freeze Temperature Sensor Fault',
es_ES: 'Anomalía del sensor de temperatura anti-congelación',
fr_FR: 'Anomalie du capteur de température antigel',
de_DE: 'Frostschutz-Temperatursensorfehler',
pl_PL: 'Błąd czujnika temperatury zabezpieczenia przeciwzamrozeniowego',
ar_EG: 'عطل حساس درجة الحرارة المضاد للتجمد',
field: 'fault10',
value: ''
},
{
label: '风机故障',
englabel: 'Fan failure',
englabel: 'Fan Fault',
zh_CN: '风机故障',
en_US: 'Fan Fault',
es_ES: 'Avería del ventilador',
fr_FR: 'Défaut du ventilateur',
de_DE: 'Lüfterfehler',
pl_PL: 'Awaria wentylatora',
ar_EG: 'عطل المروحة',
field: 'fault11',
value: ''
}
@ -109,67 +222,144 @@ export const ktLeftData = [
export const ktLeftData2 = [
{
label: '冷却压缩机通讯故障',
englabel: 'Cooling compressor communication failure',
englabel: 'Cooling Compressor Communication Fault',
zh_CN: '冷却压缩机通讯故障',
en_US: 'Cooling Compressor Communication Fault',
es_ES: 'Avería de comunicación del compresor de refrigeración',
fr_FR: 'Défaut de communication du compresseur de refroidissement',
de_DE: 'Kühlkompressor-Kommunikationsfehler',
pl_PL: 'Błąd komunikacji sprężarki chłodzenia',
ar_EG: 'عطل اتصال الضاغط',
field: 'fault12',
value: ''
},
{
label: '高压电压故障',
englabel: 'High voltage fault',
englabel: 'High Voltage Fault',
zh_CN: '高压电压故障',
en_US: 'High Voltage Fault',
es_ES: 'Avería de voltaje de alta tensión',
fr_FR: 'Défaut de haute tension',
de_DE: 'Hochspannungsfehler',
pl_PL: 'Awaria wysokiego napięcia',
ar_EG: 'عطل ارتفاع الجهد',
field: 'fault13',
value: ''
},
{
label: '排气过温报警',
englabel: 'Exhaust overtemperature alarm',
englabel: 'Exhaust Overheat Alarm',
zh_CN: '排气过温报警',
en_US: 'Exhaust Overheat Alarm',
es_ES: 'Alarma de sobretemperatura de escape',
fr_FR: "Alarme de surchauffe d'échappement",
de_DE: 'Abluft-Überhitzungsalarm',
pl_PL: 'Alarm przegrzania spalin / powietrza wylotowego',
ar_EG: 'إنذار ارتفاع درجة حرارة العادم',
field: 'fault14',
value: ''
},
{
label: '水泵故障',
englabel: 'Pump failure',
englabel: 'Water Pump Fault',
zh_CN: '水泵故障',
en_US: 'Water Pump Fault',
es_ES: 'Avería de la bomba de agua',
fr_FR: 'Défaut de la pompe à eau',
de_DE: 'Wasserpumpenfehler',
pl_PL: 'Awaria pompy wody',
ar_EG: 'عطل مضخة المياه',
field: 'fault15',
value: ''
},
{
label: '室外环境传感器故障',
englabel: 'Outdoor environment sensor fault',
englabel: 'Outdoor Environment Sensor Fault',
zh_CN: '室外环境传感器故障',
en_US: 'Outdoor Environment Sensor Fault',
es_ES: 'Avería del sensor de ambiente exterior',
fr_FR: "Défaut du capteur d'environnement extérieur",
de_DE: 'Außenumgebungssensorfehler',
pl_PL: 'Błąd czujnika warunków zewnętrznych',
ar_EG: 'عطل حساس البيئة الخارجية',
field: 'fault16',
value: ''
},
{
label: '排气温度传感器故障',
englabel: 'Exhaust gas temperature sensor fault',
englabel: 'Exhaust Temperature Sensor Fault',
zh_CN: '排气温度传感器故障',
en_US: 'Exhaust Temperature Sensor Fault',
es_ES: 'Avería del sensor de temperatura de escape',
fr_FR: "Défaut de sonde de température d'échappement",
de_DE: 'Ablufttemperatursensorfehler',
pl_PL: 'Błąd czujnika temperatury powietrza wylotowego',
ar_EG: 'عطل حساس درجة حرارة العادم',
field: 'fault17',
value: ''
},
{
label: '回水温度传感器故障',
englabel: 'Return water temperature sensor fault',
englabel: 'Water Return Temperature Sensor Fault',
zh_CN: '回水温度传感器故障',
en_US: 'Water Return Temperature Sensor Fault',
es_ES: 'Avería del sensor de temperatura de agua de retorno',
fr_FR: "Défaut de sonde de température de retour d'eau",
de_DE: 'Rücklauftemperatursensorfehler',
pl_PL: 'Błąd czujnika temperatury wody powrotnej',
ar_EG: 'عطل حساس درجة حرارة الماء العائد',
field: 'fault18',
value: ''
},
{
label: '出水温度传感器故障',
englabel: 'Water outlet temperature sensor fault',
englabel: 'Water Outlet Temperature Sensor Fault',
zh_CN: '出水温度传感器故障',
en_US: 'Water Outlet Temperature Sensor Fault',
es_ES: 'Avería del sensor de temperatura de agua de salida',
fr_FR: "Défaut de sonde de température d'eau de sortie",
de_DE: 'Vorlauftemperatursensorfehler',
pl_PL: 'Błąd czujnika temperatury wody zasilającej',
ar_EG: 'عطل حساس درجة حرارة مخرج الماء',
field: 'fault19',
value: ''
},
{
label: '出水高温',
englabel: 'High effluent temperature',
englabel: 'High Water Outlet Temperature',
zh_CN: '出水高温',
en_US: 'High Water Outlet Temperature',
es_ES: 'Temperatura de agua de salida alta',
fr_FR: "Température élevée de l'eau de sortie",
de_DE: 'Hohe Vorlauftemperatur',
pl_PL: 'Zbyt wysoka temperatura wody zasilającej',
ar_EG: 'ارتفاع درجة حرارة مخرج الماء',
field: 'fault20',
value: ''
},
{
label: '出水低温',
englabel: 'Low effluent temperature',
englabel: 'Low Water Outlet Temperature',
zh_CN: '出水低温',
en_US: 'Low Water Outlet Temperature',
es_ES: 'Temperatura de agua de salida baja',
fr_FR: "Température basse de l'eau de sortie",
de_DE: 'Niedrige Vorlauftemperatur',
pl_PL: 'Zbyt niska temperatura wody zasilającej',
ar_EG: 'انخفاض درجة حرارة مخرج الماء',
field: 'fault21',
value: ''
},
{
label: 'PTC故障',
englabel: 'PTC fault',
englabel: 'PTC Fault',
zh_CN: 'PTC故障',
en_US: 'PTC Fault',
es_ES: 'Avería del PTC',
fr_FR: 'Défaut PTC',
de_DE: 'PTC-Fehler',
pl_PL: 'Awaria PTC',
ar_EG: 'عطل سخان PTC',
field: 'fault22',
value: ''
}
@ -178,61 +368,131 @@ export const ktLeftData2 = [
export const ktLeftData3 = [
{
label: '水冷电池水箱液位低',
englabel: 'Liquid level of the water-cooled battery low',
englabel: 'Low Level of Water-Cooled Battery Tank',
zh_CN: '水冷电池水箱液位低',
en_US: 'Low Level of Water-Cooled Battery Tank',
es_ES: 'Nivel bajo de líquido en el depósito de baterías refrigeradas por agua',
fr_FR: 'Niveau bas du réservoir de batterie refroidi par eau',
de_DE: 'Niedriger Wasserstand im wassergekühlten Batterietank',
pl_PL: 'Zbyt niski poziom cieczy w zbiorniku baterii chłodzonej woda',
ar_EG: 'انخفاض مستوى خزان البطارية المبرد بالماء',
field: 'fault23',
value: ''
},
{
label: '相锁定',
englabel: 'Phase locking',
label: '相锁定',
englabel: 'Phase Loss Lockout',
zh_CN: '缺相锁定',
en_US: 'Phase Loss Lockout',
es_ES: 'Bloqueo por falta de fase',
fr_FR: 'Verrouillage par perte de phase',
de_DE: 'Phasenausfall-Sperre',
pl_PL: 'Blokada z powodu zaniku fazy',
ar_EG: 'إغلاق بسبب فقدان الطور',
field: 'fault24',
value: ''
},
{
label: '其他故障锁定',
englabel: 'Other fault locking',
englabel: 'Other Fault Lockout',
zh_CN: '其他故障锁定',
en_US: 'Other Fault Lockout',
es_ES: 'Bloqueo por otras averías',
fr_FR: 'Autre blocage de défaut',
de_DE: 'Sonstige Fehler-Sperre',
pl_PL: 'Blokada z powodu innej awarii',
ar_EG: 'إغلاق بسبب أعطال أخرى',
field: 'fault25',
value: ''
},
{
label: '副控通讯故障',
englabel: 'Secondary controller communication failure',
englabel: 'Sub-Control Communication Fault',
zh_CN: '副控通讯故障',
en_US: 'Sub-Control Communication Fault',
es_ES: 'Avería de comunicación del control secundario',
fr_FR: 'Défaut de communication de sous-contrôle',
de_DE: 'Untersteuerungs-Kommunikationsfehler',
pl_PL: 'Błąd komunikacji podsterownika',
ar_EG: 'عطل اتصال وحدة التحكم الفرعية',
field: 'fault26',
value: ''
},
{
label: '制热Pack水温高于65℃',
englabel: 'Temperature heating Pack is higher than 65℃',
englabel: 'Pack Water Temperature Above 65 °C',
zh_CN: '制热Pack水温高于65℃',
en_US: 'Pack Water Temperature Above 65 °C',
es_ES: 'Temperatura del agua del Pack de calefacción superior a 65°C',
fr_FR: "Température de l'eau du pack supérieure à 65 °C",
de_DE: 'Packs Wassertemperatur über 65 °C',
pl_PL: 'Temperatura wody pakietu powyżej 65 °C',
ar_EG: 'درجة حرارة ماء حزمة البطارية أعلى من ٦٥ درجة مئوية',
field: 'fault27',
value: ''
},
{
label: '制冷Pack水温低于5℃',
englabel: 'Pack temperature is lower than 5 ° C',
englabel: 'Pack Water Temperature Below 5 °C',
zh_CN: '制冷Pack水温低于5℃',
en_US: 'Pack Water Temperature Below 5 °C',
es_ES: 'Temperatura del agua del Pack de refrigeración inferior a 5°C',
fr_FR: "Température de l'eau du pack inférieure à 5 °C",
de_DE: 'Packs Wassertemperatur unter 5 °C',
pl_PL: 'Temperatura wody pakietu poniżej 5 °C',
ar_EG: 'درجة حرارة ماء حزمة البطارية أقل من ٥ درجة مئوية',
field: 'fault28',
value: ''
},
{
label: '模式有误',
englabel: 'Wrong mode',
englabel: 'Incorrect Mode',
zh_CN: '模式有误',
en_US: 'Incorrect Mode',
es_ES: 'Modo incorrecto',
fr_FR: 'Mode incorrect',
de_DE: 'Falscher Modus',
pl_PL: 'Nieprawidłowy tryb pracy',
ar_EG: 'وضع غير صحيح',
field: 'fault29',
value: ''
},
{
label: '进出水压力传感器故障',
englabel: 'Inlet and outlet water pressure sensor fault',
englabel: 'Inlet and Outlet Water Pressure Sensor Fault',
zh_CN: '进出水压力传感器故障',
en_US: 'Inlet and Outlet Water Pressure Sensor Fault',
es_ES: 'Avería del sensor de presión de agua de entrada y salida',
fr_FR: "Défaut des capteurs de pression d'eau d'entrée et de sortie",
de_DE: 'Einlass-/Auslasswasserdrucksensorfehler',
pl_PL: 'Błąd czujnika ciśnienia wody na wejściu i wyjściu',
ar_EG: 'عطل مستشعر ضغط الماء في المدخل والمخرج',
field: 'fault30',
value: ''
},
{
label: '水位传感器故障',
englabel: 'Water level sensor failure',
englabel: 'Water Level Sensor Fault',
zh_CN: '水位传感器故障',
en_US: 'Water Level Sensor Fault',
es_ES: 'Avería del sensor de nivel de agua',
fr_FR: "Défaut du capteur de niveau d'eau",
de_DE: 'Wassersensorsensorfehler',
pl_PL: 'Błąd czujnika poziomu wody',
ar_EG: 'عطل مستشعر مستوى الماء',
field: 'fault31',
value: ''
},
{
label: 'DCDC故障',
englabel: 'DCDC fault',
englabel: 'DCDC Fault',
zh_CN: 'DCDC故障',
en_US: 'DCDC Fault',
es_ES: 'Avería del DCDC',
fr_FR: 'Défaut DCDC',
de_DE: 'DCDC-Fehler',
pl_PL: 'Awaria przetwornicy DC/DC',
ar_EG: 'عطل DCDC',
field: 'fault32',
value: ''
}

View File

@ -193,8 +193,8 @@ export default {
</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
}
},

View File

@ -67,15 +67,15 @@
height="400"
/>
<!-- @click="handleSetting('naBattery-topu')" -->
<text x="262" y="80" fill="#ffffff" font-size="14">负载</text>
<text x="190" y="180" fill="#ffffff" font-size="14">充电</text>
<text x="340" y="330" fill="#ffffff" font-size="14">放电</text>
<text x="250" y="410" fill="#ffffff" font-size="14">绝缘材料</text>
<text x="262" y="80" fill="#ffffff" font-size="14">{{ $t('pcs.load') }}</text>
<text x="190" y="180" fill="#ffffff" font-size="14">{{ $t('pcs.charge') }}</text>
<text x="340" y="330" fill="#ffffff" font-size="14">{{ $t('pcs.discharge') }}</text>
<text x="250" y="410" fill="#ffffff" font-size="14">{{ $t('pcs.insulatingMaterial') }}</text>
<text x="50" y="235" fill="#EA802E" writing-mode="tb" glyph-orientation-vertical="0" font-size="20">
正极
{{ $t('pcs.positiveElectrode') }}
</text>
<text x="508" y="235" fill="#62A5ED" writing-mode="tb" glyph-orientation-vertical="0" font-size="20">
负极
{{ $t('pcs.negativeElectrode') }}
</text>
<!-- v-if="naBattery.length && +naBattery[0].value > 0" -->
<path
@ -162,7 +162,7 @@ export default {
return {
linePath: 'M 200 215 Q 282 158 365 215', // 充电
linePath2: 'M 362 284 Q 282 337 200 285', // 定义线条路径
value: 'XX直流舱',
value: 'XX' + this.$t('pcs.dCCabin'),
isChongdian: false,
isFangdian: false,
line: {
@ -271,11 +271,11 @@ export default {
},
workStatus(val) {
if (val === 0) {
return '停机'
return this.$t('pcs.shutdown')
} else if (val === 1) {
return '运行'
return this.$t('pcs.run')
} else if (val === 2) {
return '待机'
return this.$t('pcs.standby')
}
},
handleSetting(val) {

View File

@ -1,11 +1,11 @@
<template>
<div class="left-bottom-wrap">
<ItemBox title="总有功/PV输出功率">
<ItemBox :title="$t('pcs.totalActivePower') + '/' + $t('pcs.pvOutputPower')">
<div slot="title-right">
<div class="title-right">
<div class="title-content">
时间粒度
<el-select v-model="timeLidu" placeholder="请选择" style="width:100px" @change="changTime">
{{ $t('pcs.timeGranula') }}
<el-select v-model="timeLidu" :placeholder="$t('pcs.select')" style="width:100px" @change="changTime">
<el-option
v-for="item in times"
:key="item.value"
@ -33,17 +33,10 @@ export default {
data() {
return {
timeLidu: 1,
times: [
{ label: '1分钟', value: 1 },
{ label: '5分钟', value: 5 },
{ label: '10分钟', value: 10 },
{ label: '15分钟', value: 15 },
{ label: '20分钟', value: 20 },
{ label: '30分钟', value: 30 }
],
times: this.$t('pcs.times'),
options: {
title: {
text: '暂无数据',
text: this.$t('pcs.noData'),
x: 'center',
y: 'center',
textStyle: {
@ -125,8 +118,8 @@ export default {
</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
}
},
@ -149,7 +142,7 @@ box-shadow: inset 0px 2px 16px 0px rgba(0, 148, 255, 0.4);' >${dataStr}</div>`
{
type: 'value',
name: '总有功功率(kW)',
name: this.$t('pcs.totalActivePower') + '(kW)',
axisLabel: {
color: '#00C8FF'
},
@ -165,7 +158,7 @@ box-shadow: inset 0px 2px 16px 0px rgba(0, 148, 255, 0.4);' >${dataStr}</div>`
},
{
type: 'value',
name: 'PV输出功率(kW)',
name: this.$t('pcs.pvOutputPower') + '(kW)',
axisLabel: {
color: '#FBBB11'
},
@ -178,7 +171,6 @@ box-shadow: inset 0px 2px 16px 0px rgba(0, 148, 255, 0.4);' >${dataStr}</div>`
max: function(value) {
return Math.ceil((Math.abs(value.min) < value.max ? value.max * 1.05 : -value.min * 1.05).toFixed(2))
}
}
],
dataZoom: [
@ -196,7 +188,7 @@ box-shadow: inset 0px 2px 16px 0px rgba(0, 148, 255, 0.4);' >${dataStr}</div>`
],
series: [
{
name: '总有功功率',
name: this.$t('pcs.totalActivePower'),
type: 'line',
smooth: true,
symbol: 'none',
@ -209,7 +201,7 @@ box-shadow: inset 0px 2px 16px 0px rgba(0, 148, 255, 0.4);' >${dataStr}</div>`
data: gonglv
},
{
name: 'PV输出功率',
name: this.$t('pcs.pvOutputPower'),
type: 'line',
smooth: true,
yAxisIndex: 1,

View File

@ -1,6 +1,6 @@
<template>
<div class="center-top-wrap">
<ItemBox title="PCS拓扑图">
<ItemBox :title="$t('pcs.pcsToPoTu')">
<div class="center-top-container">
<svg
version="1.1"
@ -152,22 +152,22 @@
/>
<!-- 电池数据 -->
<text x="255" y="102" fill="#ffffff" font-size="14">
电池
{{ $t('pcs.battery') }}
</text>
<text x="60" y="39" fill="#ffffff" font-size="14">
Bus总线电压
{{ $t('pcs.busTotalVoltage') }}
</text>
<text x="150" y="39" fill="#FFB800" font-size="14">
{{ svgData.BusTotalVol }}
</text>
<text x="66" y="61" fill="#ffffff" font-size="14">
BMS总电流
{{ $t('pcs.bmsTotalCurrent') }}
</text>
<text x="150" y="61" fill="#FFB800" font-size="14">
{{ svgData.totalCurrent }}
</text>
<text x="66" y="81" fill="#ffffff" font-size="14">
BMS总电压
{{ $t('pcs.bmsTotalVoltage') }}
</text>
<text x="150" y="81" fill="#FFB800" font-size="14">
{{ svgData.totalVol }}
@ -186,19 +186,19 @@
</text>
<!-- 光伏数据 -->
<text x="255" y="395" fill="#ffffff" font-size="14">
光伏
{{ $t('pcs.photovoltaic') }}
</text>
<text x="63" y="213" fill="#ffffff" font-size="14">
PV输出功率
{{ $t('pcs.pvOutputPower') }}
</text>
<text x="150" y="213" fill="#FFB800" font-size="14">
{{ svgData.acActivePower }}
</text>
<text x="70" y="242" fill="#ffffff" font-size="14">
电流
{{ $t('pcs.curret') }}
</text>
<text x="140" y="242" fill="#ffffff" font-size="14">
电压
{{ $t('pcs.vol') }}
</text>
<text x="43" y="262" fill="#ffffff" font-size="14">
PV1
@ -293,19 +293,19 @@
<!-- ACDC 直流交流 -->
<text x="475" y="245" fill="#ffffff" font-size="14">
逆变有功
{{ $t('pcs.inverterActive') }}
</text>
<text x="540" y="245" fill="#FFB800" font-size="14">
{{ svgData.outputPower }}
</text>
<text x="475" y="265" fill="#ffffff" font-size="14">
逆变无功
{{ $t('pcs.inverterReactive') }}
</text>
<text x="540" y="265" fill="#FFB800" font-size="14">
{{ svgData.reactivePowerPCS }}
</text>
<text x="450" y="285" fill="#ffffff" font-size="14">
逆变功率因数
{{ $t('pcs.inverterPowerFactor') }}
</text>
<text x="540" y="285" fill="#FFB800" font-size="14">
{{ svgData.powerFactor }}
@ -313,34 +313,34 @@
<!-- 储能侧电表 数据 -->
<text x="680" y="410" fill="#ffffff" font-size="14">
储能侧电表
{{ $t('pcs.energyStorageSideMeter') }}
</text>
<text x="668" y="430" fill="#ffffff" font-size="14">
有功功率
{{ $t('pcs.active') }}
</text>
<text x="730" y="430" fill="#FFB800" font-size="14">
{{ svgData.torageMeter }}
</text>
<!-- 负载 数据 -->
<text x="910" y="410" fill="#ffffff" font-size="14">
负载
{{ $t('pcs.load') }}
</text>
<!-- 负载侧电表 数据 -->
<text x="965" y="290" fill="#ffffff" font-size="14">
负载侧电表
{{ $t('pcs.loadSideMeter') }}
</text>
<text x="945" y="310" fill="#ffffff" font-size="14">
有功功率
{{ $t('pcs.active') }}
</text>
<text x="1010" y="310" fill="#FFB800" font-size="14">
{{ svgData.loadMeter }}
</text>
<!-- 并网侧电表 数据 -->
<text x="1180" y="295" fill="#ffffff" font-size="14">
并网侧电表
{{ $t('pcs.gridConnectedSideMeter') }}
</text>
<text x="1160" y="315" fill="#ffffff" font-size="14">
有功功率
{{ $t('pcs.active') }}
</text>
<text x="1222" y="315" fill="#FFB800" font-size="14">
{{ svgData.gridMeter }}
@ -393,11 +393,11 @@ export default {
methods: {
workStatus(val) {
if (val === 0) {
return '停机'
return this.$t('pcs.shutdown')
} else if (val === 1) {
return '运行'
return this.$t('pcs.run')
} else if (val === 2) {
return '待机'
return this.$t('pcs.standby')
}
},
async getData(stationId, srcId) {

View File

@ -23,8 +23,9 @@
:key="item.label"
class="box-title"
>
<span v-if="language === 'en'" class="title">{{ item.englabel }}</span>
<span v-else class="title">{{ item.label }}</span>
<!-- <span v-if="language === 'en'" class="title">{{ item.englabel }}</span>
<span v-else class="title">{{ item.label }}</span> -->
<span class="title">{{ item[language] }}</span>
<span class="value">{{ item.value }}</span>
<span class="unit">{{ item.unit }}</span>
</div>
@ -40,8 +41,9 @@
:key="item.label"
class="box-title"
>
<span v-if="language === 'en'" class="title">{{ item.englabel }}</span>
<span v-else class="title">{{ item.label }}</span>
<!-- <span v-if="language === 'en'" class="title">{{ item.englabel }}</span>
<span v-else class="title">{{ item.label }}</span> -->
<span class="title">{{ item[language] }}</span>
<span class="value">{{ item.value }}</span>
<span class="unit">{{ item.unit }}</span>
</div>
@ -354,15 +356,15 @@ export default {
props: {},
data() {
return {
value: 'XX直流舱',
value: 'XX' + this.$t('pcs.dCCabin'),
times: [
{ label: 'XX直流舱', value: 'XX直流舱' },
{ label: 'XX1直流舱', value: 'XX1直流舱' },
{ label: 'XX2直流舱', value: 'XX2直流舱' },
{ label: 'XX3直流舱', value: 'XX3直流舱' }
{ label: 'XX ' + this.$t('pcs.dCCabin'), value: 'XX' + this.$t('pcs.dCCabin') },
{ label: 'XX1 ' + this.$t('pcs.dCCabin'), value: 'XX1' + this.$t('pcs.dCCabin') },
{ label: 'XX2 ' + this.$t('pcs.dCCabin'), value: 'XX2' + this.$t('pcs.dCCabin') },
{ label: 'XX3 ' + this.$t('pcs.dCCabin'), value: 'XX3' + this.$t('pcs.dCCabin') }
],
config: {
header: ['告警'],
header: [this.$t('pcs.alarm')],
data: [],
columnWidth: [],
align: ['center', 'center', 'center', 'center'],

View File

@ -3,7 +3,8 @@
<div class="left-top-wrap">
<ItemBox :title="$t('pcs.faultSign')">
<div slot="title-right" />
<ColListData v-loading="loading" :col-list-data="pcsRightData" :label-key="language === 'en' ? 'englabel' : 'label'" />
<!-- <ColListData v-loading="loading" :col-list-data="pcsRightData" :label-key="language === 'en' ? 'englabel' : 'label'" /> -->
<ColListData v-loading="loading" :col-list-data="pcsRightData" :label-key="language" />
</ItemBox>
</div>
</div>

View File

@ -10,8 +10,9 @@
<div v-loading="loading" class="top-bottom-container">
<div class="top">
<div class="item-wrap">
<div v-if="language === 'en'" class="name">{{ DehumidifierTopData[0].englabel }}</div>
<div v-else class="name">{{ DehumidifierTopData[0].label }}</div>
<!-- <div v-if="language === 'en'" class="name">{{ DehumidifierTopData[0].englabel }}</div>
<div v-else class="name">{{ DehumidifierTopData[0].label }}</div> -->
<div class="name">{{ DehumidifierTopData[0][language] }}</div>
<div class="line" />
<div class="value-wrap">
<div class="value">{{ DehumidifierTopData[0].value }}</div>
@ -19,8 +20,9 @@
</div>
</div>
<div class="item-wrap">
<div v-if="language === 'en'" class="name">{{ DehumidifierTopData[1].englabel }}</div>
<div v-else class="name">{{ DehumidifierTopData[1].label }}</div>
<!-- <div v-if="language === 'en'" class="name">{{ DehumidifierTopData[1].englabel }}</div>
<div v-else class="name">{{ DehumidifierTopData[1].label }}</div> -->
<div class="name">{{ DehumidifierTopData[1][language] }}</div>
<div class="line" />
<div class="value-wrap">
<div class="value">{{ DehumidifierTopData[1].value }}</div>
@ -28,8 +30,9 @@
</div>
</div>
<div class="item-wrap">
<div v-if="language === 'en'" class="name">{{ DehumidifierTopData[2].englabel }}</div>
<div v-else class="name">{{ DehumidifierTopData[2].label }}</div>
<!-- <div v-if="language === 'en'" class="name">{{ DehumidifierTopData[2].englabel }}</div>
<div v-else class="name">{{ DehumidifierTopData[2].label }}</div> -->
<div class="name">{{ DehumidifierTopData[2][language] }}</div>
<div class="line" />
<div class="value-wrap">
<div class="value">{{ DehumidifierTopData[2].value }}</div>
@ -37,8 +40,9 @@
</div>
</div>
<div class="item-wrap">
<div v-if="language === 'en'" class="name">{{ DehumidifierTopData[3].englabel }}</div>
<div v-else class="name">{{ DehumidifierTopData[3].label }}</div>
<!-- <div v-if="language === 'en'" class="name">{{ DehumidifierTopData[3].englabel }}</div>
<div v-else class="name">{{ DehumidifierTopData[3].label }}</div> -->
<div class="name">{{ DehumidifierTopData[3][language] }}</div>
<div class="line" />
<div class="value-wrap">
<div class="value">{{ DehumidifierTopData[3].value }}</div>
@ -47,7 +51,8 @@
</div>
</div>
<div class="bottom">
<ColListData v-loading="loading" :col-list-data="DehumidifierBottomData" :label-key="language === 'en' ? 'englabel' : 'label'" />
<!-- <ColListData v-loading="loading" :col-list-data="DehumidifierBottomData" :label-key="language === 'en' ? 'englabel' : 'label'" /> -->
<ColListData v-loading="loading" :col-list-data="DehumidifierBottomData" :label-key="language" />
</div>
</div>
</ItemBox>

View File

@ -11,16 +11,18 @@
<div v-loading="loading" class="con-box">
<div class="dianbiao-container">
<div v-for="item in ElectricityMeterData" :key="item.label" class="item-dianbiao">
<div v-if="language === 'en'" class="label">{{ item.englabel }}</div>
<div v-else class="label">{{ item.label }}</div>
<!-- <div v-if="language === 'en'" class="label">{{ item.englabel }}</div>
<div v-else class="label">{{ item.label }}</div> -->
<div class="label">{{ item[language] }}</div>
<div class="value">{{ item.value }}</div>
</div>
</div>
<div class="right-bottom">
<div class="yougonglv-wrap">
<div class="top">
<div v-if="language === 'en'" class="name">{{ ElectricityMeterBottomData[0].englabel }}</div>
<div v-else class="name">{{ ElectricityMeterBottomData[0].label }}</div>
<!-- <div v-if="language === 'en'" class="name">{{ ElectricityMeterBottomData[0].englabel }}</div>
<div v-else class="name">{{ ElectricityMeterBottomData[0].label }}</div> -->
<div class="name">{{ ElectricityMeterBottomData[0][language] }}</div>
<div class="top-value">
<span class="value">{{ ElectricityMeterBottomData[0].value }}</span>
<span class="unit">kW</span>
@ -28,26 +30,30 @@
</div>
<div class="bottom">
<div class="item">
<div v-if="language === 'en'" class="name">{{ ElectricityMeterBottomData[1].englabel }}</div>
<div v-else class="name">{{ ElectricityMeterBottomData[1].label }}</div>
<!-- <div v-if="language === 'en'" class="name">{{ ElectricityMeterBottomData[1].englabel }}</div>
<div v-else class="name">{{ ElectricityMeterBottomData[1].label }}</div> -->
<div class="name">{{ ElectricityMeterBottomData[1][language] }}</div>
<span class="value">{{ ElectricityMeterBottomData[1].value }}</span>
</div>
<div class="item">
<div v-if="language === 'en'" class="name">{{ ElectricityMeterBottomData[2].englabel }}</div>
<div v-else class="name">{{ ElectricityMeterBottomData[2].label }}</div>
<!-- <div v-if="language === 'en'" class="name">{{ ElectricityMeterBottomData[2].englabel }}</div>
<div v-else class="name">{{ ElectricityMeterBottomData[2].label }}</div> -->
<div class="name">{{ ElectricityMeterBottomData[2][language] }}</div>
<div class="value">{{ ElectricityMeterBottomData[2].value }}</div>
</div>
<div class="item">
<div v-if="language === 'en'" class="name">{{ ElectricityMeterBottomData[3].englabel }}</div>
<div v-else class="name">{{ ElectricityMeterBottomData[3].label }}</div>
<!-- <div v-if="language === 'en'" class="name">{{ ElectricityMeterBottomData[3].englabel }}</div>
<div v-else class="name">{{ ElectricityMeterBottomData[3].label }}</div> -->
<div class="name">{{ ElectricityMeterBottomData[3][language] }}</div>
<div class="value">{{ ElectricityMeterBottomData[3].value }}</div>
</div>
</div>
</div>
<div class="yougonglv-wrap wugonglv">
<div class="top">
<div v-if="language === 'en'" class="name">{{ ElectricityMeterBottomData[4].englabel }}</div>
<div v-else class="name">{{ ElectricityMeterBottomData[4].label }}</div>
<!-- <div v-if="language === 'en'" class="name">{{ ElectricityMeterBottomData[4].englabel }}</div>
<div v-else class="name">{{ ElectricityMeterBottomData[4].label }}</div> -->
<div class="name">{{ ElectricityMeterBottomData[4][language] }}</div>
<div class="top-value">
<span class="value">{{ ElectricityMeterBottomData[4].value }}</span>
<span class="unit">kVar</span>
@ -55,18 +61,21 @@
</div>
<div class="bottom">
<div class="item">
<div v-if="language === 'en'" class="name">{{ ElectricityMeterBottomData[5].englabel }}</div>
<div v-else class="name">{{ ElectricityMeterBottomData[5].label }}</div>
<!-- <div v-if="language === 'en'" class="name">{{ ElectricityMeterBottomData[5].englabel }}</div>
<div v-else class="name">{{ ElectricityMeterBottomData[5].label }}</div> -->
<div class="name">{{ ElectricityMeterBottomData[5][language] }}</div>
<span class="value">{{ ElectricityMeterBottomData[5].value }}</span>
</div>
<div class="item">
<div v-if="language === 'en'" class="name">{{ ElectricityMeterBottomData[6].englabel }}</div>
<div v-else class="name">{{ ElectricityMeterBottomData[6].label }}</div>
<!-- <div v-if="language === 'en'" class="name">{{ ElectricityMeterBottomData[6].englabel }}</div>
<div v-else class="name">{{ ElectricityMeterBottomData[6].label }}</div> -->
<div class="name">{{ ElectricityMeterBottomData[6][language] }}</div>
<div class="value">{{ ElectricityMeterBottomData[6].value }}</div>
</div>
<div class="item">
<div v-if="language === 'en'" class="name">{{ ElectricityMeterBottomData[7].englabel }}</div>
<div v-else class="name">{{ ElectricityMeterBottomData[7].label }}</div>
<!-- <div v-if="language === 'en'" class="name">{{ ElectricityMeterBottomData[7].englabel }}</div>
<div v-else class="name">{{ ElectricityMeterBottomData[7].label }}</div> -->
<div class="name">{{ ElectricityMeterBottomData[7][language] }}</div>
<div class="value">{{ ElectricityMeterBottomData[7].value }}</div>
</div>
</div>

View File

@ -3,11 +3,11 @@
<ItemBox title="IO">
<div class="center-top-container">
<div v-for="item in IODataTop" :key="item.label" class="error-item-point-wrap">
<div class="label">{{ item.label }}</div>
<div class="label">{{ item[language] }}</div>
<div class="point" :class="item.value ? 'success' : 'error'" />
</div>
<div v-for="item in IODataBottom" :key="item.label" :class="item.value ? 'error-item-wrap' : 'item-wrap'">
<div class="label">{{ item.label }}</div>
<div class="label">{{ item[language] }}</div>
</div>
</div>
</ItemBox>
@ -29,7 +29,11 @@ export default {
IODataBottom
}
},
computed: {},
computed: {
language() {
return this.$store.getters.language || undefined
}
},
watch: {},
created() {
// this.getChatData()

View File

@ -12,22 +12,24 @@
<div class="content">
<div class="center-item">
<div class="box-title">
<span v-if="language === 'en'" class="title">{{ IODataTop[0].englabel }}</span>
<span v-else class="title">{{ IODataTop[0].label }}</span>
<!-- <span v-if="language === 'en'" class="title">{{ IODataTop[0].englabel }}</span>
<span v-else class="title">{{ IODataTop[0].label }}</span> -->
<span class="title">{{ IODataTop[0][language] }}</span>
<span class="value">{{ IODataTop[0].value ? $t('pcs.on') : $t('pcs.off')
}}</span>
</div>
<div class="box-title">
<span v-if="language === 'en'" class="title">{{ IODataTop[1].englabel }}</span>
<span v-else class="title">{{ IODataTop[1].label }}</span>
<!-- <span v-if="language === 'en'" class="title">{{ IODataTop[1].englabel }}</span>
<span v-else class="title">{{ IODataTop[1].label }}</span> -->
<span class="title">{{ IODataTop[1][language] }}</span>
<span class="value">{{ IODataTop[1].value ? $t('pcs.distance') : $t('pcs.local')
}}</span>
</div>
<div class="box-title">
<span v-if="language === 'en'" class="title">{{ IODataTop[2].englabel }}</span>
<span v-else class="title">{{ IODataTop[2].label }}</span>
<!-- <span v-if="language === 'en'" class="title">{{ IODataTop[2].englabel }}</span>
<span v-else class="title">{{ IODataTop[2].label }}</span> -->
<span class="title">{{ IODataTop[2][language] }}</span>
<span class="value">{{ IODataTop[2].value ? $t('pcs.on') : $t('pcs.off')
}}</span>
@ -35,8 +37,9 @@
</div>
<div class="item-alarm">
<div v-for="item in IODataBottom" :key="item.label" :class="item.value ? 'error-item-wrap' : 'item-wrap'">
<div v-if="language === 'en'" class="label">{{ item.englabel }}</div>
<div v-else class="label">{{ item.label }}</div>
<!-- <div v-if="language === 'en'" class="label">{{ item.englabel }}</div>
<div v-else class="label">{{ item.label }}</div> -->
<div class="label">{{ item[language] }}</div>
</div>
</div>

View File

@ -10,8 +10,9 @@
<div v-loading="loading" class="top-bottom-container">
<div class="top">
<div class="item-wrap">
<div v-if="language === 'en'" class="name">{{ TemperatureControlTOPData[0].englabel }}</div>
<div v-else class="name">{{ TemperatureControlTOPData[0].label }}</div>
<!-- <div v-if="language === 'en'" class="name">{{ TemperatureControlTOPData[0].englabel }}</div>
<div v-else class="name">{{ TemperatureControlTOPData[0].label }}</div> -->
<div class="name">{{ TemperatureControlTOPData[0][language] }}</div>
<div class="line" />
<div class="value-wrap">
@ -20,8 +21,9 @@
</div>
</div>
<div class="item-wrap">
<div v-if="language === 'en'" class="name">{{ TemperatureControlTOPData[1].englabel }}</div>
<div v-else class="name">{{ TemperatureControlTOPData[1].label }}</div>
<!-- <div v-if="language === 'en'" class="name">{{ TemperatureControlTOPData[1].englabel }}</div>
<div v-else class="name">{{ TemperatureControlTOPData[1].label }}</div> -->
<div class="name">{{ TemperatureControlTOPData[1][language] }}</div>
<div class="line" />
<div class="value-wrap">
<div class="value">{{ TemperatureControlTOPData[1].value }}</div>
@ -29,8 +31,9 @@
</div>
</div>
<div class="item-wrap">
<div v-if="language === 'en'" class="name">{{ TemperatureControlTOPData[2].englabel }}</div>
<div v-else class="name">{{ TemperatureControlTOPData[2].label }}</div>
<!-- <div v-if="language === 'en'" class="name">{{ TemperatureControlTOPData[2].englabel }}</div>
<div v-else class="name">{{ TemperatureControlTOPData[2].label }}</div> -->
<div class="name">{{ TemperatureControlTOPData[2][language] }}</div>
<div class="line" />
<div class="value-wrap">
<div class="value">{{ TemperatureControlTOPData[2].value }}</div>
@ -39,7 +42,8 @@
</div>
</div>
<div class="bottom">
<ColListData v-loading="loading" :col-list-data="TemperatureControlBottomData" :label-key="language === 'en' ? 'englabel' : 'label'" />
<!-- <ColListData v-loading="loading" :col-list-data="TemperatureControlBottomData" :label-key="language === 'en' ? 'englabel' : 'label'" /> -->
<ColListData v-loading="loading" :col-list-data="TemperatureControlBottomData" :label-key="language" />
</div>
</div>
</ItemBox>

View File

@ -1,19 +1,40 @@
export const IODataTop = [
{
label: '并网柜开关位置',
englabel: 'Position of the EMU switch',
englabel: 'Interconnection Cabinet Switch Position',
zh_CN: '并网柜开关位置',
en_US: 'Interconnection Cabinet Switch Position',
es_ES: 'Posición del interruptor del armario de conexión a la red',
fr_FR: "Position d'interrupteur de l'armoire d'interconnexion",
de_DE: 'Schaltstellung des Zusammenschaltschranks',
pl_PL: 'Szafa połączeniowa pozycja przełącznika',
ar_EG: 'موضع فتح خزانة الربط النبني',
field: 'EMURingMainCabinetSwitchClosed',
value: ''
},
{
label: '并网柜远方操作',
englabel: 'EMU remote operation',
englabel: 'Interconnection Cabinet Remote Operation',
zh_CN: '并网柜远方操作',
en_US: 'Interconnection Cabinet Remote Operation',
es_ES: 'Operación remota del armario de conexión a la red',
fr_FR: "Opération distante de l'armoire d'interconnexion",
de_DE: 'Fernbedienung des Zusammenschaltschranks',
pl_PL: 'Szafa połączeniowa sterowanie zdalne',
ar_EG: 'التشغيل عن بعد لخزانة الربط النبني',
field: 'EMURemoteNetworkCabinet',
value: ''
},
{
label: '并网柜地刀位置',
englabel: 'EMU floor knife position',
englabel: 'Interconnection Cabinet Grounding Circuit Breaker Position',
zh_CN: '并网柜地刀位置',
en_US: 'Interconnection Cabinet Grounding Circuit Breaker Position',
es_ES: 'Posición del cortacircuitos a tierra del armario de conexión a la red',
fr_FR: "Position du disjoncteur de mise à la terre de l'armoire d'interconnexion",
de_DE: 'Schaltstellung des Erdungsleistungsschalters im Zusammenschaltschranks',
pl_PL: 'Szafa połączeniowa pozycja wyłącznika uziemiającego',
ar_EG: 'موضع قاطع الدارة التاريدين لخزانة الربط النبني',
field: 'EMUCabinetSwitchClosingPosition',
value: ''
}
@ -21,31 +42,66 @@ export const IODataTop = [
export const IODataBottom = [
{
label: '总告警状态',
englabel: 'Total alarm status',
englabel: 'General Alarm Status',
zh_CN: '总告警状态',
en_US: 'General Alarm Status',
es_ES: 'Estado general de alarma',
fr_FR: "État général d'alarme",
de_DE: 'Allgemeiner Alarmstatus',
pl_PL: 'Stan alarmu ogólnego',
ar_EG: 'حالة الإنذار العام',
field: 'EMUTotalEquipmentlAlarmStatus',
value: ''
},
{
label: '变压器门禁告警',
englabel: 'Transformer access control alarm',
englabel: 'Transformer Access Alarm',
zh_CN: '变压器门禁告警',
en_US: 'Transformer Access Alarm',
es_ES: 'Alarma de acceso al transformador',
fr_FR: "Alarme d'accès au transformateur",
de_DE: 'Transformatorzugangsalarm',
pl_PL: 'Alarm dostępu do transformatora',
ar_EG: 'إنذار دخول المحول',
field: 'EMUTransformerAccessControlAlarm',
value: ''
},
{
label: '烟感告警',
englabel: 'Smoke alarm',
englabel: 'Smoke Alarm',
zh_CN: '烟感告警',
en_US: 'Smoke Alarm',
es_ES: 'Alarma de detector de humo',
fr_FR: 'Alarme de fumée',
de_DE: 'Rauchalarm',
pl_PL: 'Alarm dymu',
ar_EG: 'كشف الدخان',
field: 'EMUSmokeAlarm',
value: ''
},
{
label: '温控箱告警',
englabel: 'Temperature control box alarm',
englabel: 'Thermal Regulation Cabinet Alarm',
zh_CN: '温控箱告警',
en_US: 'Thermal Regulation Cabinet Alarm',
es_ES: 'Alarma de caja de control de temperatura',
fr_FR: 'Alarme du coffret de régulation thermique',
de_DE: 'Klimaschrankalarm',
pl_PL: 'Alarm szafy regulacji termicznej',
ar_EG: 'إنذار خزانة التظمير الحراري',
field: 'EMUTemperatureControlBoxAlarm',
value: ''
},
{
label: '超温告警',
englabel: 'Over-temperature alarm',
englabel: 'Overheat Alarm',
zh_CN: '超温告警',
en_US: 'Overheat Alarm',
es_ES: 'Alarma de temperatura excesiva',
fr_FR: 'Alarme de surchauffe',
de_DE: 'Überhitzungsalarm',
pl_PL: 'Alarm przegrzania',
ar_EG: 'إنذار ارتفاع الحرارة',
field: 'EMUOverTemperatureAlarm',
value: ''
}
@ -53,6 +109,14 @@ export const IODataBottom = [
export const IODataState = [
{
label: '总设备状态',
englabel: 'Overall Equipment Status',
zh_CN: '总设备状态',
en_US: 'Overall Equipment Status',
es_ES: 'Estado general del equipo',
fr_FR: "État global de l'équipement",
de_DE: 'Gesamtgerätestatus',
pl_PL: 'Ogólny stan urządzenia',
ar_EG: 'حالة العمالة للمعدات',
field: 'EMUDeviceOnlineStatus',
value: ''
}
@ -61,20 +125,40 @@ export const IODataState = [
export const TemperatureControlTOPData = [
{
label: 'A相温度',
englabel: 'A-phase temperature',
englabel: 'Phase A Temperature',
zh_CN: 'A相温度',
en_US: 'Phase A Temperature',
es_ES: 'Temperatura de fase A',
fr_FR: 'Température de phase A',
de_DE: 'Phase-A-Temperatur',
pl_PL: 'Phase A Temperature',
ar_EG: 'درجة حرارة المطور A',
field: 'EMUBoxPhaseATemperature',
value: ''
},
{
label: 'B相温度',
englabel: 'B-phase temperature',
englabel: 'Phase B Temperature',
zh_CN: 'B相温度',
en_US: 'Phase B Temperature',
es_ES: 'Temperatura de fase B',
fr_FR: 'Température de phase B',
de_DE: 'Phase-B-Temperatur',
pl_PL: 'Phase B Temperature',
ar_EG: 'درجة حرارة المطور B',
field: 'EMUBoxPhaseBTemperature',
value: ''
},
{
label: 'C相温度',
englabel: 'C-phase temperature',
englabel: 'Phase C Temperature',
zh_CN: 'C相温度',
en_US: 'Phase C Temperature',
es_ES: 'Temperatura de fase C',
fr_FR: 'Température de phase C',
de_DE: 'Phase-C-Temperatur',
pl_PL: 'Phase C Temperature',
ar_EG: 'درجة حرارة المطور C',
field: 'EMUBoxPhaseCTemperature',
value: ''
}
@ -82,26 +166,53 @@ export const TemperatureControlTOPData = [
export const TemperatureControlBottomData = [
{
label: '风机控制',
englabel: 'Fan control',
englabel: 'Fan Control',
zh_CN: '风机控制',
en_US: 'Fan Control',
es_ES: 'Control del ventilador',
fr_FR: 'Contrôle du ventilateur',
de_DE: 'Lüftersteuerung',
pl_PL: 'Sterowanie wentylatorem',
ar_EG: 'التحكم في المروحة',
field: 'emuTempControlStateBit0',
value: ''
},
{
label: '超温跳闸',
englabel: 'Overtemperature trip',
englabel: 'Overheat Trip',
zh_CN: '超温跳闸',
en_US: 'Overheat Trip',
es_ES: 'Disparo por sobretemperatura',
fr_FR: 'Déclenchement de surchauffe',
de_DE: 'Überhitzungsauslösung',
pl_PL: 'Wyłączenie z powodu przegrzania',
ar_EG: 'فصل ارتفاع الحرارة',
field: 'emuTempControlStateBit1',
value: ''
},
{
label: '超温报警',
englabel: 'Overtemperature alarm',
englabel: 'Overheat Alarm',
zh_CN: '超温报警',
en_US: 'Overheat Alarm',
es_ES: 'Alarma de sobretemperatura',
fr_FR: 'Alarme de surchauffe',
de_DE: 'Überhitzungsalarm',
pl_PL: 'Alarm przegrzania',
ar_EG: 'إنذار ارتفاع الحرارة',
field: 'emuTempControlStateBit2',
value: ''
},
{
label: '故障报警',
englabel: 'Fault alarm',
englabel: 'Fault Alarm',
zh_CN: '故障报警',
en_US: 'Fault Alarm',
es_ES: 'Alarma de avería',
fr_FR: 'Alarme de défaut',
de_DE: 'Fehleralarm',
pl_PL: 'Alarm awarii',
ar_EG: 'إنذار عطل',
field: 'emuTempControlStateBit3',
value: ''
}
@ -109,6 +220,14 @@ export const TemperatureControlBottomData = [
export const TemperatureControlStateData = [
{
label: '温控箱状态',
englabel: 'Thermal Regulation Cabinet Status',
zh_CN: '温控箱状态',
en_US: 'Thermal Regulation Cabinet Status',
es_ES: 'Estado de la caja de control de temperatura',
fr_FR: 'État du coffret de régulation thermique',
de_DE: 'Status des Klimaschranks',
pl_PL: 'Stan szafy regulacji termicznej',
ar_EG: 'حالة خزانة التظمير الحراري',
field: 'EMUBoxOnlineStatus',
value: ''
}
@ -116,87 +235,183 @@ export const TemperatureControlStateData = [
export const ElectricityMeterData = [
{
label: 'A相电压(V)',
englabel: 'A-phase voltage(V)',
englabel: 'Phase A Voltage (V)',
zh_CN: 'A相电压(V)',
en_US: 'Phase A Voltage (V)',
es_ES: 'Voltaje de fase A (V)',
fr_FR: 'Tension de phase A (V)',
de_DE: 'Phase-A-Spannung (V)',
pl_PL: 'Faza A napięcie (V)',
ar_EG: 'جهاز المطور A',
field: 'EMUPhaseVoltageUA',
value: '123456'
},
{
label: 'A相电流(A)',
englabel: 'A-phase current(V)',
englabel: 'Phase A Current (A)',
zh_CN: 'A相电流(A)',
en_US: 'Phase A Current (A)',
es_ES: 'Corriente de fase A (A)',
fr_FR: 'Courant de phase A (A)',
de_DE: 'Phase-A-Strom (A)',
pl_PL: 'Faza A prąd (A)',
ar_EG: 'تباين المطور A',
field: 'EMUIA',
value: ''
},
{
label: 'B相电压(V)',
englabel: 'B-phase voltage(V)',
englabel: 'Phase B Voltage (V)',
zh_CN: 'B相电压(V)',
en_US: 'Phase B Voltage (V)',
es_ES: 'Voltaje de fase B (V)',
fr_FR: 'Tension de phase B (V)',
de_DE: 'Phase-B-Spannung (V)',
pl_PL: 'Faza B napięcie (V)',
ar_EG: 'جهاز المطور B',
field: 'EMUPhaseVoltageUB',
value: ''
},
{
label: 'B相电流(A)',
englabel: 'B-phase current(V)',
englabel: 'Phase B Current (A)',
zh_CN: 'B相电流(A)',
en_US: 'Phase B Current (A)',
es_ES: 'Corriente de fase B (A)',
fr_FR: 'Courant de phase B (A)',
de_DE: 'Phase-B-Strom (A)',
pl_PL: 'Faza B prąd (A)',
ar_EG: 'تباين المطور B',
field: 'EMUIB',
value: ''
},
{
label: 'C相电压(V)',
englabel: 'C-phase voltage(V)',
englabel: 'Phase C Voltage (V)',
zh_CN: 'C相电压(V)',
en_US: 'Phase C Voltage (V)',
es_ES: 'Voltaje de fase C (V)',
fr_FR: 'Tension de phase C (V)',
de_DE: 'Phase-C-Spannung (V)',
pl_PL: 'Faza C napięcie (V)',
ar_EG: 'جهاز المطور C',
field: 'EMUPhaseVoltageUC',
value: ''
},
{
label: 'C相电流(A)',
englabel: 'C-phase current(V)',
englabel: 'Phase C Current (A)',
zh_CN: 'C相电流(A)',
en_US: 'Phase C Current (A)',
es_ES: 'Corriente de fase C (A)',
fr_FR: 'Courant de phase A (A)',
de_DE: 'Phase-C-Strom (A)',
pl_PL: 'Faza C prąd (A)',
ar_EG: 'تباين المطور C',
field: 'EMUIC',
value: ''
},
{
label: 'AB线电压(V)',
englabel: 'AB line voltage(V)',
englabel: 'Line Voltage AB (V)',
zh_CN: 'AB线电压(V)',
en_US: 'Line Voltage AB (V)',
es_ES: 'Voltaje de línea AB (V)',
fr_FR: 'Tension de câble AB (V)',
de_DE: 'Leiterspannung AB (V)',
pl_PL: 'Napięcie międzyfazowe AB (V)',
ar_EG: 'الجهاز بين المطورين AB',
field: 'EMULineVoltageUAB',
value: ''
},
{
label: 'BC线电压(V)',
englabel: 'BC line voltage(V)',
englabel: 'Line Voltage BC (V)',
zh_CN: 'BC线电压(V)',
en_US: 'Line Voltage BC (V)',
es_ES: 'Voltaje de línea BC (V)',
fr_FR: 'Tension de câble BC (V)',
de_DE: 'Leiterspannung BC (V)',
pl_PL: 'Napięcie międzyfazowe BC (V)',
ar_EG: 'الجهاز بين المطورين BC',
field: 'EMULineVoltageUBC',
value: ''
},
{
label: 'CA线电压(V)',
englabel: 'CA line voltage(V)',
englabel: 'Line Voltage CA (V)',
zh_CN: 'CA线电压(V)',
en_US: 'Line Voltage CA (V)',
es_ES: 'Voltaje de línea CA (V)',
fr_FR: 'Tension de câble CA (V)',
de_DE: 'Leiterspannung CA (V)',
pl_PL: 'Napięcie międzyfazowe CA (V)',
ar_EG: 'الجهاز بين المطورين CA',
field: 'EMULineVoltageUAC',
value: ''
},
{
label: '频率(Hz)',
englabel: 'Frequency(Hz)',
englabel: 'Frequency (Hz)',
zh_CN: '频率(Hz)',
en_US: 'Frequency (Hz)',
es_ES: 'Frecuencia (Hz)',
fr_FR: 'Fréquence (Hz)',
de_DE: 'Frequenz (Hz)',
pl_PL: 'Częstotliwość (Hz)',
ar_EG: 'التردد',
field: 'EMUFrequency',
value: ''
},
{
label: '正向有功电量(kWh)',
englabel: 'Positive active charge(kWh)',
englabel: 'Forward Active Energy (kWh)',
zh_CN: '正向有功电量(kWh)',
en_US: 'Forward Active Energy (kWh)',
es_ES: 'Energía activa positiva (kWh)',
fr_FR: 'Énergie active directe (kWh)',
de_DE: 'Wirkenergie Vorwärts (kWh)',
pl_PL: 'Energia czynna pobrana (kWh)',
ar_EG: 'الطاقة الفعلية الأصلية',
field: 'EMUAbsorbingActiveElectricalEnergy',
value: ''
},
{
label: '反向有功电量(kWh)',
englabel: 'Reverse active charge(kWh)',
englabel: 'Reverse Active Energy (kWh)',
zh_CN: '反向有功电量(kWh)',
en_US: 'Reverse Active Energy (kWh)',
es_ES: 'Energía activa negativa (kWh)',
fr_FR: 'Énergie active inverse (kWh)',
de_DE: 'Wirkenergie Rückwärts (kWh)',
pl_PL: 'Energia czynna oddana (kWh)',
ar_EG: 'الطاقة الفعلية المعكوسة',
field: 'EMUReleaseActiveElectricalEnergy',
value: ''
},
{
label: '感性功电量(kVarh)',
englabel: 'Inductive energy(kVarh)',
englabel: 'Inductive Energy (kVarh)',
zh_CN: '感性功电量(kVarh)',
en_US: 'Inductive Energy (kVarh)',
es_ES: 'Energía reactiva inductiva (kVarh)',
fr_FR: 'Énergie inductive (kVarh)',
de_DE: 'Induktive Energie (kVarh)',
pl_PL: 'Energia bierna indukcyjna (kVarh)',
ar_EG: 'الطاقة التفاعلية الحالية',
field: 'EMUInductiveEnergy',
value: ''
},
{
label: '容性功电量(kVarh)',
englabel: 'Capacitive energy(kVarh)',
englabel: 'Capacitive Energy (kVarh)',
zh_CN: '容性功电量(kVarh)',
en_US: 'Capacitive Energy (kVarh)',
es_ES: 'Energía reactiva capacitiva (kVarh)',
fr_FR: 'Énergie capacitive (kVarh)',
de_DE: 'Kapazitive Energie (kVarh)',
pl_PL: 'Energia bierna pojemnościowa (kVarh)',
ar_EG: 'الطاقة التفاعلية السمعية',
field: 'EMUCapacitiveEnergy',
value: ''
}
@ -204,6 +419,14 @@ export const ElectricityMeterData = [
export const ElectricityMeterStateData = [
{
label: '电表在线状态',
englabel: 'Meter Online Status',
zh_CN: '电表在线状态',
en_US: 'Meter Online Status',
es_ES: 'Estado en línea del medidor de electricidad',
fr_FR: 'État en ligne du compteur',
de_DE: 'Zähler Online-Status',
pl_PL: 'Stan online licznika',
ar_EG: 'حالة الاتصال للمعد',
field: 'EMUOnlineStatusOfElectricityMeter',
value: ''
}
@ -211,49 +434,105 @@ export const ElectricityMeterStateData = [
export const ElectricityMeterBottomData = [
{
label: '总有功功率',
englabel: 'Total active power',
englabel: 'Total Active Power',
zh_CN: '总有功功率',
en_US: 'Total Active Power',
es_ES: 'Potencia activa total',
fr_FR: 'Puissance active totale',
de_DE: 'Gesamtwirkleistung',
pl_PL: 'Całkowita moc czynna',
ar_EG: 'القدرة الفعلية الإجمالية',
field: 'EMUPTotal',
value: ''
},
{
label: 'A相',
englabel: 'A phase',
englabel: 'Phase A',
zh_CN: 'A相',
en_US: 'Phase A',
es_ES: 'Potencia activa de fase A',
fr_FR: 'Phase A',
de_DE: 'Phase A',
pl_PL: 'Faza A',
ar_EG: 'القدرة الفعلية للمطور A',
field: 'EMUPA',
value: ''
},
{
label: 'B相',
englabel: 'B phase',
englabel: 'Phase B',
zh_CN: 'B相',
en_US: 'Phase B',
es_ES: 'Potencia activa de fase B',
fr_FR: 'Phase B',
de_DE: 'Phase B',
pl_PL: 'Faza B',
ar_EG: 'القدرة الفعلية للمطور B',
field: 'EMUPB',
value: ''
},
{
label: 'C相',
englabel: 'C phase',
englabel: 'Phase C',
zh_CN: 'C相',
en_US: 'Phase C',
es_ES: 'Potencia activa de fase C',
fr_FR: 'Phase C',
de_DE: 'Phase C',
pl_PL: 'Faza C',
ar_EG: 'القدرة الفعلية للمطور C',
field: 'EMUPC',
value: ''
},
{
label: '总无功功率',
englabel: 'Total reactive power',
englabel: 'Total Reactive Power',
zh_CN: '总无功功率',
en_US: 'Total Reactive Power',
es_ES: 'Potencia reactiva total',
fr_FR: 'Puissance réactive totale',
de_DE: 'Gesamtblindleistung',
pl_PL: 'Całkowita moc bierna',
ar_EG: 'القدرة التفاعلية الإجمالية',
field: 'EMUQTotal',
value: ''
},
{
label: 'A相',
englabel: 'A phase',
englabel: 'Phase A',
zh_CN: 'A相',
en_US: 'Phase A',
es_ES: 'Potencia reactiva de fase A',
fr_FR: 'Phase A',
de_DE: 'Phase A',
pl_PL: 'Faza A',
ar_EG: 'القدرة التفاعلية للمطور A',
field: 'EMUQA',
value: ''
},
{
label: 'B相',
englabel: 'B phase',
englabel: 'Phase B',
zh_CN: 'B相',
en_US: 'Phase B',
es_ES: 'Potencia reactiva de fase B',
fr_FR: 'Phase B',
de_DE: 'Phase B',
pl_PL: 'Faza B',
ar_EG: 'القدرة التفاعلية للمطور B',
field: 'EMUQB',
value: ''
},
{
label: 'C相',
englabel: 'C phase',
englabel: 'Phase C',
zh_CN: 'C相',
en_US: 'Phase C',
es_ES: 'Potencia reactiva de fase C',
fr_FR: 'Phase C',
de_DE: 'Phase C',
pl_PL: 'Faza C',
ar_EG: 'القدرة التفاعلية للمطور C',
field: 'EMUQC',
value: ''
}
@ -262,25 +541,52 @@ export const DehumidifierTopData = [
{
label: '温度',
englabel: 'Temperature',
zh_CN: '温度',
en_US: 'Temperature',
es_ES: 'Temperatura',
fr_FR: 'Température',
de_DE: 'Temperatur',
pl_PL: 'Temperatura',
ar_EG: 'درجة الحرارة',
field: 'EMUDehumidifier1Temperature',
value: ''
},
{
label: '湿度',
englabel: 'Humidness',
englabel: 'Humidity',
zh_CN: '湿度',
en_US: 'Humidity',
es_ES: 'Humedad',
fr_FR: 'Humidité',
de_DE: 'Luftfeuchtigkeit',
pl_PL: 'Wilgotność',
ar_EG: 'الرطوبة',
field: 'EMUDehumidifier1Humidity',
value: ''
},
{
label: '湿度启动值',
englabel: 'Humidity starting value',
englabel: 'Humidity Start Threshold',
zh_CN: '湿度启动值',
en_US: 'Humidity Start Threshold',
es_ES: 'Valor de inicio de humedad',
fr_FR: "Seuil de départ d'humidité",
de_DE: 'Feuchtigkeits-Einschaltschwelle',
pl_PL: 'Próg uruchomienia wilgotności',
ar_EG: 'حد تشغيل الرطوبة',
field: 'EMUDehumidifier1HumidityStartValue',
value: ''
},
{
label: '湿度停止值',
englabel: 'Humidity stop value',
englabel: 'Humidity Stop Threshold',
zh_CN: '湿度停止值',
en_US: 'Humidity Stop Threshold',
es_ES: 'Valor de parada de humedad',
fr_FR: "Seuil d'arrêt d'humidité",
de_DE: 'Feuchtigkeits-Ausschaltschwelle',
pl_PL: 'Próg wyłączenia wilgotności',
ar_EG: 'حد إيقاف الرطوبة',
field: 'EMUDehumidifier1HumidityStopValue',
value: ''
}
@ -288,6 +594,14 @@ export const DehumidifierTopData = [
export const DehumidifierStateData = [
{
label: '除湿器状态',
englabel: 'Dehumidifier Status',
zh_CN: '除湿器状态',
en_US: 'Dehumidifier Status',
es_ES: 'Estado del deshumidificador',
fr_FR: 'État du déshumidificateur',
de_DE: 'Entfeuchterstatus',
pl_PL: 'Stan osuszacza',
ar_EG: 'حالة مزيل الرطوبة',
field: 'EMUDehumidifier1OnlineStatus',
value: ''
}
@ -295,32 +609,66 @@ export const DehumidifierStateData = [
export const DehumidifierBottomData = [
{
label: '温度传感器故障',
englabel: 'Temperature sensor fault',
englabel: 'Temperature Sensor Fault',
zh_CN: '温度传感器故障',
en_US: 'Temperature Sensor Fault',
es_ES: 'Avería del sensor de temperatura',
fr_FR: 'Défaut de sonde de température',
de_DE: 'Temperatursensorfehler',
pl_PL: 'Awaria czujnika temperatury',
ar_EG: 'عطل مستعر درجة الحرارة',
field: 'emuDehumiStateBit0',
value: ''
},
{
label: '湿度传感器故障',
englabel: 'Humidity sensor fault',
englabel: 'Humidity Sensor Fault',
zh_CN: '湿度传感器故障',
en_US: 'Humidity Sensor Fault',
es_ES: 'Avería del sensor de humedad',
fr_FR: "Défaut de sonde d'humidité",
de_DE: 'Feuchtigkeitssensorfehler',
pl_PL: 'Awaria czujnika wilgotności',
ar_EG: 'عطل مستعر الرطوبة',
field: 'emuDehumiStateBit1',
value: ''
},
{
label: '风机故障',
englabel: 'Fan failure',
englabel: 'Fan Fault',
zh_CN: '风机故障',
en_US: 'Fan Fault',
es_ES: 'Avería del ventilador',
fr_FR: 'Défaut du ventilateur',
de_DE: 'Lüfterfehler',
pl_PL: 'Awaria wentylatora',
ar_EG: 'عطل المروحة',
field: 'emuDehumiStateBit2',
value: ''
},
{
label: '抽湿状态',
englabel: 'Dehumidified condition',
englabel: 'Dehumidification Status',
zh_CN: '抽湿状态',
en_US: 'Dehumidification Status',
es_ES: 'Estado de deshumidificación',
fr_FR: 'État de déshumidification',
de_DE: 'Entfeuchtungsstatus',
pl_PL: 'Stan osuszania',
ar_EG: 'حالة إزالة الرطوبة',
field: 'emuDehumiStateBit4',
value: ''
},
{
label: '制冷片故障',
englabel: 'Chiller failure',
englabel: 'Cooling Module Fault',
zh_CN: '制冷片故障',
en_US: 'Cooling Module Fault',
es_ES: 'Avería de la placa refrigerante',
fr_FR: 'Défaut du module de refroidissement',
de_DE: 'Kühlmodulfehler',
pl_PL: 'Awaria modułu chłodzenia',
ar_EG: 'عطل وحدة التبريد',
field: 'emuDehumiStateBit6',
value: ''
}

View File

@ -1,6 +1,6 @@
<template>
<div class="left-bottom-wrap">
<ItemBox title="SOC/堆总压">
<ItemBox :title="'SOC/' + $t('pcs.rackTotalVoltage')">
<div v-loading="loading" class="top-bottom-container">
<Chart :options="options" :class-name="'chart'" />
@ -19,17 +19,10 @@ export default {
data() {
return {
timeLidu: 1,
times: [
{ label: '1分钟', value: 1 },
{ label: '5分钟', value: 5 },
{ label: '10分钟', value: 10 },
{ label: '15分钟', value: 15 },
{ label: '20分钟', value: 20 },
{ label: '30分钟', value: 30 }
],
times: this.$t('pcs.times'),
options: {
title: {
text: '暂无数据',
text: this.$t('pcs.noData'),
x: 'center',
y: 'center',
textStyle: {
@ -137,7 +130,7 @@ box-shadow: inset 0px 2px 16px 0px rgba(0, 148, 255, 0.4);' >${dataStr}</div>`
yAxis: [
{
type: 'value',
name: '堆总压(V)',
name: this.$t('pcs.rackTotalVoltage') + '(V)',
axisLabel: {
color: '#2d8cf0'
},
@ -172,7 +165,7 @@ box-shadow: inset 0px 2px 16px 0px rgba(0, 148, 255, 0.4);' >${dataStr}</div>`
],
series: [
{
name: '堆总压',
name: this.$t('pcs.rackTotalVoltage'),
type: 'line',
smooth: true,
symbol: 'none',

View File

@ -6,19 +6,20 @@
<div v-loading="loading" class="right">
<div v-for="(item,index) in stackVolData" :key="item.label" class="right-content-box">
<div class="title">
<span class="title-left">{{ item.label }}</span>
<!-- <span class="title-left">{{ item.label }}</span> -->
<span class="title-left">{{ item[language] }}</span>
<div class="title-right" @click="seeHistory(index)" />
</div>
<div class="content">
<div class="content-box margin-bottom">
<span class="d" />
<span class="label">簇电压</span>
<span class="label">{{ $t('pcs.clusterVoltage') }}</span>
<span class="value">{{ newData[`cluster${index + 1 }Vol`] ? newData[`cluster${index + 1}Vol`] : 0 }}</span>
<span class="unit">V</span>
</div>
<div class="content-box margin-bottom">
<span class="d" />
<span class="label">簇电流</span>
<span class="label">{{ $t('pcs.clusterCurrent') }}</span>
<span class="value">{{ newData[`cluster${index + 1}Current`] ? newData[`cluster${index + 1}Current`] : 0 }}</span>
<span class="unit">A</span>
</div>
@ -39,7 +40,7 @@
</div>
</div>
<TableChartDialog :is-show.sync="visible" title="历史数据" :col="colValue" :src-id="srcValue" />
<TableChartDialog :is-show.sync="visible" :title="$t('pcs.historicalData')" :col="colValue" :src-id="srcValue" />
</div>
</template>
@ -69,7 +70,11 @@ export default {
loading: false
}
},
computed: {},
computed: {
language() {
return this.$store.getters.language || undefined
}
},
watch: {},
created() {
// this.getChatData()

View File

@ -1,31 +1,31 @@
<template>
<div class="center-top-wrap">
<ItemBox title="电池堆拓扑图">
<ItemBox :title="$t('pcs.batteryStackTopo')">
<div v-loading="loading" class="center-top-container">
<img :src="dianchidui" alt="">
<div class="bottom-left-box">
<div class="con-title">
直流舱左侧温湿度仪
{{ $t('pcs.dCCabinLeftTemHum') }}
</div>
<div class="con-box">
<div class="con-item">
<span class="title">温度</span><span class="value">{{ topInfo.cabinetTemperatureLeft }}</span><span class="unit"></span>
<span class="title">{{ $t('pcs.tem') }}</span><span class="value">{{ topInfo.cabinetTemperatureLeft }}</span><span class="unit"></span>
</div>
<div class="con-item">
<span class="title">湿度</span><span class="value">{{ topInfo.cabinetHumidityLeft }}</span><span class="unit">%</span>
<span class="title">{{ $t('pcs.hum') }}</span><span class="value">{{ topInfo.cabinetHumidityLeft }}</span><span class="unit">%</span>
</div>
</div>
</div>
<div class="bottom-right-box">
<div class="con-title">
直流舱右侧温湿度仪
{{ $t('pcs.dCCabinRightTemHum') }}
</div>
<div class="con-box">
<div class="con-item">
<span class="title">温度</span><span class="value">{{ topInfo.cabinetTemperatureRight }}</span><span class="unit"></span>
<span class="title">{{ $t('pcs.tem') }}</span><span class="value">{{ topInfo.cabinetTemperatureRight }}</span><span class="unit"></span>
</div>
<div class="con-item">
<span class="title">湿度</span><span class="value">{{ topInfo.cabinetHumidityRight }}</span><span class="unit">%</span>
<span class="title">{{ $t('pcs.hum') }}</span><span class="value">{{ topInfo.cabinetHumidityRight }}</span><span class="unit">%</span>
</div>
</div>
</div>

View File

@ -1,12 +1,13 @@
<template>
<div class="center-top-wrap">
<ItemBox title="运行数据">
<ItemBox :title="$t('pcs.runData')">
<div v-loading="loading" class="center-top-container">
<div class="top">
<div v-for="item in stackRunstate" :key="item.label" class="top-box">
<div class="top-title">
<span class="d" />
<span class="title">{{ item.label }}</span>
<!-- <span class="title">{{ item.label }}</span> -->
<span class="title">{{ item[language] }}</span>
<span class="d" />
</div>
<div class="center-line" />
@ -15,10 +16,10 @@
</div>
<div class="bottom">
<div :class="hlgData.combinerCabinetQFClosingFeedback ? 'bottom-left' : 'bottom-right'">汇流柜QF合闸</div>
<div :class="hlgData.distributionBoxQF1ClosingFeedback ? 'bottom-left' : 'bottom-right'">配电箱QF1合闸</div>
<div :class="hlgData.combinerCabinetQFClosingFeedback ? 'bottom-right' : 'bottom-left'">汇流柜QF分闸</div>
<div :class="hlgData.distributionBoxQF1ClosingFeedback ? 'bottom-right' : 'bottom-left'">配电箱QF1分闸</div>
<div :class="hlgData.combinerCabinetQFClosingFeedback ? 'bottom-left' : 'bottom-right'">{{ $t('pcs.convergenceCabinetCombined') }}</div>
<div :class="hlgData.distributionBoxQF1ClosingFeedback ? 'bottom-left' : 'bottom-right'">{{ $t('pcs.distributionBoxClose') }}</div>
<div :class="hlgData.combinerCabinetQFClosingFeedback ? 'bottom-right' : 'bottom-left'">{{ $t('pcs.convergenceCabinetCeparated') }}</div>
<div :class="hlgData.distributionBoxQF1ClosingFeedback ? 'bottom-right' : 'bottom-left'">{{ $t('pcs.distributionBoxOpen') }}</div>
</div>
</div>
@ -42,7 +43,11 @@ export default {
loading: false
}
},
computed: {},
computed: {
language() {
return this.$store.getters.language || undefined
}
},
watch: {},
created() {
// this.getChatData()

View File

@ -1,11 +1,12 @@
<template>
<div class="left-top-wrap">
<ItemBox title="运行数据">
<ItemBox :title="$t('pcs.runData')">
<div v-loading="loading" class="top-left-container">
<div class="left">
<div v-for="item in rightFirst" :key="item.label" class="left-first">
<div class="box-title">
<div class="title">{{ item.isMwh ? item.labelMwh : item.label }}</div><div class="value">{{ item.isMwh ? (item.value/1000).toFixed(2) : item.value }}</div>
<!-- <div class="title">{{ item.isMwh ? item.labelMwh : item.label }}</div><div class="value">{{ item.isMwh ? (item.value/1000).toFixed(2) : item.value }}</div> -->
<div class="title">{{ item.isMwh ? item[language + 'Mwh'] : item[language] }}</div><div class="value">{{ item.isMwh ? (item.value/1000).toFixed(2) : item.value }}</div>
</div>
</div>
@ -15,23 +16,25 @@
<div v-for="item in rightSecond" :key="item.label" class="right-second-content">
<span class="left" style="flex:3">
<span class="jt" />
<span class="hight-v">{{ item.label }}</span>
<!-- <span class="hight-v">{{ item.label }}</span> -->
<span class="hight-v">{{ item[language] }}</span>
<span class="v-value">{{ item.value }}</span>
<span class="unit">{{ item.unit }}</span>
</span>
<span class="left" style="flex:2">
<span class="jt" />
<span class="hight-v">{{ item.label2 }}</span>
<!-- <span class="hight-v">{{ item.label2 }}</span> -->
<span class="hight-v">{{ item[language + '2'] }}</span>
<span class="v-value">{{ item.value2 }}</span>
</span>
</div>
</div>
<div class="right-third">
<div v-for="item in rightThird" :key="item.label" :class="item.value ? 'error-item-wrap' : 'item-wrap'">
<div class="label">{{ item.label }}</div>
<!-- <div class="label">{{ item.label }}</div> -->
<div class="label">{{ item[language] }}</div>
</div>
</div>
@ -39,7 +42,7 @@
<div class="right-second-content">
<span class="left" style="flex:3">
<span class="jt" />
<span class="hight-v">最大电压差</span>
<span class="hight-v">{{ $t('pcs.maxvolDiff') }}</span>
<span class="v-value">{{ (newData.singleMaxVolData - newData.singleMinVolData).toFixed(3) }}</span>
<span class="unit">V</span>
</span>
@ -50,33 +53,31 @@
<div class="right-four">
<div class="height-v">
<div class="top">
<span class="top-title">单体最高电压</span>
<span class="top-title">{{ $t('pcs.maxCellVol') }}</span>
<span class="top-value">
<span class="value">{{ newData.singleMaxVolData }}</span>
<span class="unit">V</span>
</span>
</div>
<div class="bottom">
<span class="dczh">
<span class="dczh-title">电池簇号</span>
<span class="dczh-title">{{ $t('pcs.batteryClusterNum') }}</span>
<span class="dczh-value">{{ newData.singleMaxVolNum }}</span>
</span>
<span class="dczh">
<span class="dczh-title">电池组号</span>
<span class="dczh-title">{{ $t('pcs.batteryGroupNum') }}</span>
<span class="dczh-value">{{ newData.singleMaxVolBMUNum }}</span>
</span>
<span class="dxwz">
<span class="dxwz-title">电芯位置</span>
<span class="dxwz-title">{{ $t('pcs.cellPostion') }}</span>
<span class="dxwz-value">{{ newData.singleMaxVolBoxNum }}</span>
</span>
</div>
</div>
<div class="low-v">
<div class="top">
<span class="top-title">单体最低电压</span>
<span class="top-title">{{ $t('pcs.minCellVol') }}</span>
<span class="top-value">
<span class="value">{{ newData.singleMinVolData }}</span>
<span class="unit">V</span>
@ -85,15 +86,15 @@
</div>
<div class="bottom">
<span class="dczh">
<span class="dczh-title">电池簇号</span>
<span class="dczh-title">{{ $t('pcs.batteryClusterNum') }}</span>
<span class="dczh-value">{{ newData.singleMinVolNum }}</span>
</span>
<span class="dczh">
<span class="dczh-title">电池组号</span>
<span class="dczh-title">{{ $t('pcs.batteryGroupNum') }}</span>
<span class="dczh-value">{{ newData.singleMinVolBMUNum }}</span>
</span>
<span class="dxwz">
<span class="dxwz-title">电芯位置</span>
<span class="dxwz-title">{{ $t('pcs.cellPostion') }}</span>
<span class="dxwz-value">{{ newData.singleMinVolBoxNum }}</span>
</span>
@ -103,7 +104,7 @@
<div class="right-second-content">
<span class="left" style="flex:3">
<span class="jt" />
<span class="hight-v">最大温度差</span>
<span class="hight-v">{{ $t('pcs.maxTemDiff') }}</span>
<span class="v-value">{{ newData.singleMaxTemData - newData.singleMinTemData }}</span>
<span class="unit"></span>
</span>
@ -112,7 +113,7 @@
</div>
<div class="height-t">
<div class="top">
<span class="top-title">单体最高温度</span>
<span class="top-title">{{ $t('pcs.maxCellTem') }}</span>
<span class="top-value">
<span class="value">{{ newData.singleMaxTemData }}</span>
<span class="unit"></span>
@ -121,15 +122,15 @@
</div>
<div class="bottom">
<span class="dczh">
<span class="dczh-title">电池簇号</span>
<span class="dczh-title">{{ $t('pcs.batteryClusterNum') }}</span>
<span class="dczh-value">{{ newData.singleMaxTemNum }}</span>
</span>
<span class="dczh">
<span class="dczh-title">电池组号</span>
<span class="dczh-title">{{ $t('pcs.batteryGroupNum') }}</span>
<span class="dczh-value">{{ newData.singleMaxTemBMUNum }}</span>
</span>
<span class="dxwz">
<span class="dxwz-title">电芯位置</span>
<span class="dxwz-title">{{ $t('pcs.cellPostion') }}</span>
<span class="dxwz-value">{{ newData.singleMaxTemBoxNum }}</span>
</span>
@ -138,7 +139,7 @@
<div class="low-t">
<div class="top">
<span class="top-title">单体最低温度</span>
<span class="top-title">{{ $t('pcs.minCellTem') }}</span>
<span class="top-value">
<span class="value">{{ newData.singleMinTemData }}</span>
<span class="unit"></span>
@ -147,22 +148,23 @@
</div>
<div class="bottom">
<span class="dczh">
<span class="dczh-title">电池簇号</span>
<span class="dczh-title">{{ $t('pcs.batteryClusterNum') }}</span>
<span class="dczh-value">{{ newData.singleMinTemNum }}</span>
</span>
<span class="dczh">
<span class="dczh-title">电池组号</span>
<span class="dczh-title">{{ $t('pcs.batteryGroupNum') }}</span>
<span class="dczh-value">{{ newData.singleMinTemBMUNum }}</span>
</span>
<span class="dxwz">
<span class="dxwz-title">电芯位置</span>
<span class="dxwz-title">{{ $t('pcs.cellPostion') }}</span>
<span class="dxwz-value">{{ newData.singleMinTemBoxNum }}</span>
</span>
</div>
</div>
</div>
</div></ItemBox>
</div>
</ItemBox>
</div>
</template>
@ -211,7 +213,9 @@ export default {
}
},
computed: {
language() {
return this.$store.getters.language || undefined
}
},
watch: {},
created() {

View File

@ -5,33 +5,40 @@
<div v-loading="loading" class="top-bottom-container">
<div class="box">
<div v-for="item in xfcRunData1" :key="item.label" class="small-box">
<div v-if="language === 'en'" class="top-title">{{ item.enlable }}</div>
<div v-else class="top-title">{{ item.label }}</div>
<!-- <div v-if="language === 'en'" class="top-title">{{ item.enlable }}</div>
<div v-else class="top-title">{{ item.label }}</div> -->
<div class="top-title">{{ item[language] }}</div>
<div class="value-box">
<div class="value-small border-right border-bottom">
<div v-if="language === 'en'" :class="item.value1 ? 'error-value' : 'value'">Gas off zone is faulty</div>
<div v-else :class="item.value1 ? 'error-value' : 'value'">气灭区故障</div>
<!-- <div v-if="language === 'en'" :class="item.value1 ? 'error-value' : 'value'">Gas off zone is faulty</div>
<div v-else :class="item.value1 ? 'error-value' : 'value'">气灭区故障</div> -->
<div :class="item.value1 ? 'error-value' : 'value'">{{ $t('pcs.gasOffZoneFaulty') }}</div>
</div>
<div class="value-small border-bottom">
<div v-if="language === 'en'" :class="item.value2 ? 'error-value' : 'value'">Gas off zone starts</div>
<div v-else :class="item.value2 ? 'error-value' : 'value'">气灭区启动</div>
<!-- <div v-if="language === 'en'" :class="item.value2 ? 'error-value' : 'value'">Gas off zone starts</div>
<div v-else :class="item.value2 ? 'error-value' : 'value'">气灭区启动</div> -->
<div :class="item.value2 ? 'error-value' : 'value'">{{ $t('pcs.gasOffZoneStarts') }}</div>
</div>
<div class="value-small border-right border-bottom">
<div v-if="language === 'en'" :class="item.value3 ? 'error-value' : 'value'">Spray feedback</div>
<div v-else :class="item.value3 ? 'error-value' : 'value'">喷洒反馈</div>
<!-- <div v-if="language === 'en'" :class="item.value3 ? 'error-value' : 'value'">Spray feedback</div>
<div v-else :class="item.value3 ? 'error-value' : 'value'">喷洒反馈</div> -->
<div :class="item.value3 ? 'error-value' : 'value'">{{ $t('pcs.sprayFeedback') }}</div>
</div>
<div class="value-small border-bottom">
<div v-if="language === 'en'" :class="item.value4 ? 'error-value' : 'value'">Spray starts</div>
<div v-else :class="item.value4 ? 'error-value' : 'value'">喷洒启动</div>
<!-- <div v-if="language === 'en'" :class="item.value4 ? 'error-value' : 'value'">Spray starts</div>
<div v-else :class="item.value4 ? 'error-value' : 'value'">喷洒启动</div> -->
<div :class="item.value4 ? 'error-value' : 'value'">{{ $t('pcs.sprayStarts') }}</div>
</div>
<div class="value-small border-right border-bottom">
<div v-if="language === 'en'" :class="item.value5 ? 'error-value' : 'value'">Acousto-optic starts</div>
<div v-else :class="item.value5 ? 'error-value' : 'value'">声光启动</div>
<!-- <div v-if="language === 'en'" :class="item.value5 ? 'error-value' : 'value'">Acousto-optic starts</div>
<div v-else :class="item.value5 ? 'error-value' : 'value'">声光启动</div> -->
<div :class="item.value5 ? 'error-value' : 'value'">{{ $t('pcs.acoustoOpticStarts') }}</div>
</div>
<div class="value-small border-bottom">
<div v-if="language === 'en'" :class="item.value6 ? 'error-value' : 'value'">Auxiliary EQPT starts</div>
<div v-else :class="item.value6 ? 'error-value' : 'value'">辅助设备启动</div>
<!-- <div v-if="language === 'en'" :class="item.value6 ? 'error-value' : 'value'">Auxiliary EQPT starts</div>
<div v-else :class="item.value6 ? 'error-value' : 'value'">辅助设备启动</div> -->
<div :class="item.value6 ? 'error-value' : 'value'">{{ $t('pcs.auxiliaryEQPTstarts') }}</div>
</div>
<div class="lx" />
@ -40,28 +47,29 @@
</div>
<div v-for="item in xfcRunData2" :key="item.key" class="small-box">
<div v-if="language === 'en'" class="top-title">{{ item.enlable }}</div>
<div v-else class="top-title">{{ item.label }}</div>
<!-- <div v-if="language === 'en'" class="top-title">{{ item.enlable }}</div>
<div v-else class="top-title">{{ item.label }}</div> -->
<div class="top-title">{{ item[language] }}</div>
<div class="value-box">
<div class="value-small border-right border-bottom">
<div v-if="language === 'en'" :class="item.value1 ? 'error-value' : 'value'">Main power fault</div>
<div v-if="language === 'en_US'" :class="item.value1 ? 'error-value' : 'value'">Main power fault</div>
<div v-else :class="item.value1 ? 'error-value' : 'value'">主电故障</div>
</div>
<div class="value-small border-bottom">
<div v-if="language === 'en'" :class="item.value2 ? 'error-value' : 'value'">Backup fault</div>
<div v-if="language === 'en_US'" :class="item.value2 ? 'error-value' : 'value'">Backup fault</div>
<div v-else :class="item.value2 ? 'error-value' : 'value'">备电故障</div>
</div>
<div class="value-small border-right border-bottom">
<div v-if="language === 'en'" :class="item.value3 ? 'error-value' : 'value'">Manual disable</div>
<div v-if="language === 'en_US'" :class="item.value3 ? 'error-value' : 'value'">Manual disable</div>
<div v-else :class="item.value3 ? 'error-value' : 'value'">手动禁止</div>
</div>
<div class="value-small border-bottom">
<div v-if="language === 'en'" :class="item.value4 ? 'error-value' : 'value'">Auto disable</div>
<div v-if="language === 'en_US'" :class="item.value4 ? 'error-value' : 'value'">Auto disable</div>
<div v-else :class="item.value4 ? 'error-value' : 'value'">自动禁止</div>
</div>
<div class="value-big ">
<div v-if="language === 'en'" class="value">Board fault</div>
<div v-if="language === 'en_US'" class="value">Board fault</div>
<div v-else class="value">板卡故障</div>
</div>

View File

@ -4,32 +4,39 @@
<div v-loading="loading" class="center-top-container">
<div class="box">
<div v-for="(item) in xfcData" :key="item.label" class="small-box">
<div v-if="language === 'en'" class="top-title">{{ item.enlable }}</div>
<div v-else class="top-title">{{ item.label }}</div>
<!-- <div v-if="language === 'en'" class="top-title">{{ item.enlable }}</div>
<div v-else class="top-title">{{ item.label }}</div> -->
<div class="top-title">{{ item[language] }}</div>
<div class="value-box">
<div class="value-small border-right border-bottom">
<div v-if="language === 'en'" :class="item.value1 ? 'error-value' : 'value'">Fire alarm</div>
<div v-else :class="item.value1 ? 'error-value' : 'value'">火警</div>
<!-- <div v-if="language === 'en'" :class="item.value1 ? 'error-value' : 'value'">Fire alarm</div>
<div v-else :class="item.value1 ? 'error-value' : 'value'">{{ $t('pcs.fire') }}</div> -->
<div :class="item.value1 ? 'error-value' : 'value'">{{ $t('pcs.fire') }}</div>
</div>
<div class="value-small border-bottom">
<div v-if="language === 'en'" :class="item.value2 ? 'error-value' : 'value'">Fault</div>
<div v-else :class="item.value2 ? 'error-value' : 'value'">故障</div>
<!-- <div v-if="language === 'en'" :class="item.value2 ? 'error-value' : 'value'">Fault</div>
<div v-else :class="item.value2 ? 'error-value' : 'value'">{{ $t('pcs.fault') }}</div> -->
<div :class="item.value2 ? 'error-value' : 'value'">{{ $t('pcs.fault') }}</div>
</div>
<div class="value-small border-right border-bottom">
<div v-if="language === 'en'" :class="item.value3 ? 'error-value' : 'value'">Start</div>
<div v-else :class="item.value3 ? 'error-value' : 'value'">启动</div>
<!-- <div v-if="language === 'en'" :class="item.value3 ? 'error-value' : 'value'">Start</div>
<div v-else :class="item.value3 ? 'error-value' : 'value'">启动{{ $t('pcs.start') }}</div> -->
<div :class="item.value3 ? 'error-value' : 'value'">{{ $t('pcs.start') }}</div>
</div>
<div class="value-small border-bottom">
<div v-if="language === 'en'" :class="item.value4 ? 'error-value' : 'value'">Feedback</div>
<div v-else :class="item.value4 ? 'error-value' : 'value'">反馈</div>
<!-- <div v-if="language === 'en'" :class="item.value4 ? 'error-value' : 'value'">Feedback</div>
<div v-else :class="item.value4 ? 'error-value' : 'value'">反馈{{ $t('pcs.feedback') }}</div> -->
<div :class="item.value4 ? 'error-value' : 'value'">{{ $t('pcs.feedback') }}</div>
</div>
<div class="value-small border-right border-bottom">
<div v-if="language === 'en'" :class="item.value5 ? 'error-value' : 'value'">Shield</div>
<div v-else :class="item.value5 ? 'error-value' : 'value'">屏蔽</div>
<!-- <div v-if="language === 'en'" :class="item.value5 ? 'error-value' : 'value'">Shield</div>
<div v-else :class="item.value5 ? 'error-value' : 'value'">屏蔽{{ $t('pcs.shield') }}</div> -->
<div :class="item.value5 ? 'error-value' : 'value'">{{ $t('pcs.shield') }}</div>
</div>
<div class="value-small border-bottom">
<div v-if="language === 'en'" :class="item.value6 ? 'error-value' : 'value'">Regulatory</div>
<div v-else :class="item.value6 ? 'error-value' : 'value'">监管报警</div>
<!-- <div v-if="language === 'en'" :class="item.value6 ? 'error-value' : 'value'">Regulatory</div>
<div v-else :class="item.value6 ? 'error-value' : 'value'">监管报警{{ $t('pcs.regulatory') }}</div> -->
<div :class="item.value6 ? 'error-value' : 'value'">{{ $t('pcs.regulatory') }}</div>
</div>
<div class="lx" />

View File

@ -1,7 +1,14 @@
export const xfcData = [
{
label: '储能舱烟感1',
enlable: 'Energy storage cabin smoke detector 1',
enlable: 'Energy Storage Container Smoke Detector 1',
zh_CN: '储能舱烟感1',
en_US: 'Energy Storage Container Smoke Detector 1',
es_ES: 'Detector de humo de la cabina de almacenamiento de energía 1',
fr_FR: "Détecteur de fumée du conteneur de stockage d'énergie 1",
de_DE: 'Rauchmelder 1 Energiespeichercontainer',
pl_PL: 'Kontener magazynu energii czujnik dymu 1',
ar_EG: 'كاشف الدخان ١ لحاوية تخزين الطاقة',
field1: 'storageSmoke1Bit0',
field2: 'storageSmoke1Bit1',
field3: 'storageSmoke1Bit2',
@ -17,7 +24,14 @@ export const xfcData = [
},
{
label: '储能舱烟感2',
enlable: 'Energy storage cabin smoke detector 2',
enlable: 'Energy Storage Container Smoke Detector 2',
zh_CN: '储能舱烟感2',
en_US: 'Energy Storage Container Smoke Detector 2',
es_ES: 'Detector de humo de la cabina de almacenamiento de energía 2',
fr_FR: "Détecteur de fumée du conteneur de stockage d'énergie 2",
de_DE: 'Rauchmelder 2 Energiespeichercontainer',
pl_PL: 'Kontener magazynu energii czujnik dymu 2',
ar_EG: 'كاشف الدخان ٢ لحاوية تخزين الطاقة',
field1: 'storageSmoke2Bit0',
field2: 'storageSmoke2Bit1',
field3: 'storageSmoke2Bit2',
@ -33,7 +47,14 @@ export const xfcData = [
},
{
label: '储能舱烟感3',
enlable: 'Energy storage cabin smoke detector 3',
enlable: 'Energy Storage Container Smoke Detector 3',
zh_CN: '储能舱烟感3',
en_US: 'Energy Storage Container Smoke Detector 3',
es_ES: 'Detector de humo de la cabina de almacenamiento de energía 3',
fr_FR: "Détecteur de fumée du conteneur de stockage d'énergie 3",
de_DE: 'Rauchmelder 3 Energiespeichercontainer',
pl_PL: 'Kontener magazynu energii czujnik dymu 3',
ar_EG: 'كاشف الدخان ٣ لحاوية تخزين الطاقة',
field1: 'storageSmoke3Bit0',
field2: 'storageSmoke3Bit1',
field3: 'storageSmoke3Bit2',
@ -49,7 +70,14 @@ export const xfcData = [
},
{
label: '储能舱烟感4',
enlable: 'Energy storage cabin smoke detector 4',
enlable: 'Energy Storage Container Smoke Detector 4',
zh_CN: '储能舱烟感4',
en_US: 'Energy Storage Container Smoke Detector 4',
es_ES: 'Detector de humo de la cabina de almacenamiento de energía 4',
fr_FR: "Détecteur de fumée du conteneur de stockage d'énergie 4",
de_DE: 'Rauchmelder 4 Energiespeichercontainer',
pl_PL: 'Kontener magazynu energii czujnik dymu 4',
ar_EG: 'كاشف الدخان ٤ لحاوية تخزين الطاقة',
field1: 'storageSmoke4Bit0',
field2: 'storageSmoke4Bit1',
field3: 'storageSmoke4Bit2',
@ -65,7 +93,14 @@ export const xfcData = [
},
{
label: '储能舱烟感5',
enlable: 'Energy storage cabin smoke detector 5',
enlable: 'Energy Storage Container Smoke Detector 5',
zh_CN: '储能舱烟感5',
en_US: 'Energy Storage Container Smoke Detector 5',
es_ES: 'Detector de humo de la cabina de almacenamiento de energía 5',
fr_FR: "Détecteur de fumée du conteneur de stockage d'énergie 5",
de_DE: 'Rauchmelder 5 Energiespeichercontainer',
pl_PL: 'Kontener magazynu energii czujnik dymu 5',
ar_EG: 'كاشف الدخان ٥ لحاوية تخزين الطاقة',
field1: 'storageSmoke5Bit0',
field2: 'storageSmoke5Bit1',
field3: 'storageSmoke5Bit2',
@ -81,7 +116,14 @@ export const xfcData = [
},
{
label: '储能舱烟感6',
enlable: 'Energy storage cabin smoke detector 6',
enlable: 'Energy Storage Container Smoke Detector 6',
zh_CN: '储能舱烟感6',
en_US: 'Energy Storage Container Smoke Detector 6',
es_ES: 'Detector de humo de la cabina de almacenamiento de energía 6',
fr_FR: "Détecteur de fumée du conteneur de stockage d'énergie 6",
de_DE: 'Rauchmelder 6 Energiespeichercontainer',
pl_PL: 'Kontener magazynu energii czujnik dymu 6',
ar_EG: 'كاشف الدخان ٦ لحاوية تخزين الطاقة',
field1: 'storageSmoke6Bit0',
field2: 'storageSmoke6Bit1',
field3: 'storageSmoke6Bit2',
@ -97,7 +139,14 @@ export const xfcData = [
},
{
label: '储能舱温感1',
enlable: 'Energy storage cabin smoke detector 1',
enlable: 'Energy Storage Container Temperature Detector 1',
zh_CN: '储能舱温感1',
en_US: 'Energy Storage Container Temperature Detector 1',
es_ES: 'Detector de temperatura de la cabina de almacenamiento de energía 1',
fr_FR: "Détecteur de température du conteneur de stockage d'énergie 1",
de_DE: 'Temperaturmelder 1 Energiespeichercontainer',
pl_PL: 'Kontener magazynu energii czujnik temperatury 1',
ar_EG: 'كاشف درجة الحرارة ١ لحاوية تخزين الطاقة',
field1: 'storageTemperature1Bit0',
field2: 'storageTemperature1Bit1',
field3: 'storageTemperature1Bit2',
@ -113,7 +162,14 @@ export const xfcData = [
},
{
label: '储能舱温感2',
enlable: 'Energy storage cabin smoke detector 2',
enlable: 'Energy Storage Container Temperature Detector 2',
zh_CN: '储能舱温感2',
en_US: 'Energy Storage Container Temperature Detector 2',
es_ES: 'Detector de temperatura de la cabina de almacenamiento de energía 2',
fr_FR: "Détecteur de température du conteneur de stockage d'énergie 2",
de_DE: 'Temperaturmelder 2 Energiespeichercontainer',
pl_PL: 'Kontener magazynu energii czujnik temperatury 2',
ar_EG: 'كاشف درجة الحرارة ٢ لحاوية تخزين الطاقة',
field1: 'storageTemperature2Bit0',
field2: 'storageTemperature2Bit1',
field3: 'storageTemperature2Bit2',
@ -129,7 +185,14 @@ export const xfcData = [
},
{
label: '储能舱温感3',
enlable: 'Energy storage cabin smoke detector 3',
enlable: 'Energy Storage Container Temperature Detector 3',
zh_CN: '储能舱温感3',
en_US: 'Energy Storage Container Temperature Detector 3',
es_ES: 'Detector de temperatura de la cabina de almacenamiento de energía 3',
fr_FR: "Détecteur de température du conteneur de stockage d'énergie 3",
de_DE: 'Temperaturmelder 3 Energiespeichercontainer',
pl_PL: 'Kontener magazynu energii czujnik temperatury 3',
ar_EG: 'كاشف درجة الحرارة ٣ لحاوية تخزين الطاقة',
field1: 'storageTemperature3Bit0',
field2: 'storageTemperature3Bit1',
field3: 'storageTemperature3Bit2',
@ -145,7 +208,14 @@ export const xfcData = [
},
{
label: '储能舱温感4',
enlable: 'Energy storage cabin smoke detector 4',
enlable: 'Energy Storage Container Temperature Detector 4',
zh_CN: '储能舱温感4',
en_US: 'Energy Storage Container Temperature Detector 4',
es_ES: 'Detector de temperatura de la cabina de almacenamiento de energía 4',
fr_FR: "Détecteur de température du conteneur de stockage d'énergie 4",
de_DE: 'Temperaturmelder 4 Energiespeichercontainer',
pl_PL: 'Kontener magazynu energii czujnik temperatury 4',
ar_EG: 'كاشف درجة الحرارة ٤ لحاوية تخزين الطاقة',
field1: 'storageTemperature4Bit0',
field2: 'storageTemperature4Bit1',
field3: 'storageTemperature4Bit2',
@ -161,7 +231,14 @@ export const xfcData = [
},
{
label: '储能舱温感5',
enlable: 'Energy storage cabin smoke detector 5',
enlable: 'Energy Storage Container Temperature Detector 5',
zh_CN: '储能舱温感5',
en_US: 'Energy Storage Container Temperature Detector 5',
es_ES: 'Detector de temperatura de la cabina de almacenamiento de energía 5',
fr_FR: "Détecteur de température du conteneur de stockage d'énergie 5",
de_DE: 'Temperaturmelder 5 Energiespeichercontainer',
pl_PL: 'Kontener magazynu energii czujnik temperatury 5',
ar_EG: 'كاشف درجة الحرارة ٥ لحاوية تخزين الطاقة',
field1: 'storageTemperature5Bit0',
field2: 'storageTemperature5Bit1',
field3: 'storageTemperature5Bit2',
@ -177,7 +254,14 @@ export const xfcData = [
},
{
label: '储能舱温感6',
enlable: 'Energy storage cabin smoke detector 6',
enlable: 'Energy Storage Container Temperature Detector 6',
zh_CN: '储能舱温感6',
en_US: 'Energy Storage Container Temperature Detector 6',
es_ES: 'Detector de temperatura de la cabina de almacenamiento de energía 6',
fr_FR: "Détecteur de température du conteneur de stockage d'énergie 6",
de_DE: 'Temperaturmelder 6 Energiespeichercontainer',
pl_PL: 'Kontener magazynu energii czujnik temperatury 6',
ar_EG: 'كاشف درجة الحرارة ٦ لحاوية تخزين الطاقة',
field1: 'storageTemperature6Bit0',
field2: 'storageTemperature6Bit1',
field3: 'storageTemperature6Bit2',
@ -191,13 +275,19 @@ export const xfcData = [
value5: '',
value6: ''
}
]
export const xfcRunData1 = [
{
label: '储能舱气体释放灯',
enlable: 'Storage gas release lamp',
enlable: 'Energy Storage Container Gas Release Indicator',
zh_CN: '储能舱气体释放灯',
en_US: 'Energy Storage Container Gas Release Indicator',
es_ES: 'Luz de liberación de gas de la cabina de almacenamiento de energía',
fr_FR: "Voyant de libération de gaz du conteneur de stockage d'énergie",
de_DE: 'Gasfreisetzungsanzeige Energiespeichercontainer',
pl_PL: 'Kontener magazynu energii wskaźnik uwolnienia gazu',
ar_EG: 'مؤشر إطلاق الغاز لحاوية تخزين الطاقة',
field1: 'storageOutgassingLampBit0',
field2: 'storageOutgassingLampBit1',
field3: 'storageOutgassingLampBit2',
@ -215,7 +305,14 @@ export const xfcRunData1 = [
},
{
label: '储能舱声光报警器',
enlable: 'Storage sound and light alarms',
enlable: 'Energy Storage Container Audible and Visual Alarm',
zh_CN: '储能舱声光报警器',
en_US: 'Energy Storage Container Audible and Visual Alarm',
es_ES: 'Alarma acústico-óptica de la cabina de almacenamiento de energía',
fr_FR: "Alarme sonore et lumineux du conteneur de stockage d'énergie",
de_DE: 'Akustischer/optischer Alarm Energiespeichercontainer',
pl_PL: 'Kontener magazynu energii alarm dźwiękowo-świetlny',
ar_EG: 'الإنذار السمعي والبصري لحاوية تخزين الطاقة',
field1: 'storagEaudibleVisualAlarmBit0',
field2: 'storagEaudibleVisualAlarmBit1',
field3: 'storagEaudibleVisualAlarmBit2',
@ -231,13 +328,19 @@ export const xfcRunData1 = [
value6: '',
value7: ''
}
]
export const xfcRunData2 = [
{
label: '储能舱紧急启停按钮',
enlable: 'Storage emergency start and stop button',
enlable: 'Energy Storage Container Emergency Stop Button',
zh_CN: '储能舱紧急启停按钮',
en_US: 'Energy Storage Container Emergency Stop Button',
es_ES: 'Botón de arranque y parada de emergencia de la cabina de almacenamiento de energía',
fr_FR: "Bouton d'arrêt/marche d'urgence du conteneur de stockage d'énergie",
de_DE: 'Not-Aus-Taste Energiespeichercontainer',
pl_PL: 'Kontener magazynu energii przycisk wyłącznika awaryjnego',
ar_EG: 'زر التوقف الطارئ لحاوية تخزين الطاقة',
field1: 'storageEmergencyButtonBit0',
field2: 'storageEmergencyButtonBit1',
field3: 'storageEmergencyButtonBit2',
@ -255,7 +358,14 @@ export const xfcRunData2 = [
},
{
label: '储能舱手自动转换开关',
enlable: 'Storage hand automatic switch',
enlable: 'Energy Storage Container Manual/Automatic Switch',
zh_CN: '储能舱手自动转换开关',
en_US: 'Energy Storage Container Manual/Automatic Switch',
es_ES: 'Interruptor de cambio manual-automatizado de la cabina de almacenamiento de energía',
fr_FR: "Commutateur manuel/automatique du conteneur de stockage d'énergie",
de_DE: 'Manuell/Automatik-Schalter Energiespeichercontainer',
pl_PL: 'Kontener magazynu energii przełącznik ręczny/automatyczny',
ar_EG: 'مفتاح التشغيل اليدوي/التلقائي لحاوية تخزين الطاقة',
field1: 'storageTransferSwitchBit0',
field2: 'storageTransferSwitchBit1',
field3: 'storageTransferSwitchBit2',
@ -271,5 +381,4 @@ export const xfcRunData2 = [
value6: '',
value7: ''
}
]

View File

@ -87,7 +87,6 @@ export default {
getDeviceNode(node) {
const self = this
console.log(node.deviceType)
if (node.deviceType) {
if (node.deviceType.includes('pcs') && !this.isBoShi(node.stationId)) {
this.currentComponent = 'PCS'

View File

@ -29,7 +29,6 @@
</el-col>
<el-col :xs="12" :sm="12" :md="12" :lg="4" :xl="4">
<el-button type="primary" icon="el-icon-search" :loading="searchLoading" @click="on_refresh">查询</el-button>
<el-button
type="primary"

View File

@ -13,8 +13,6 @@ const leftBottomList = [
]
const topCenterList = [
{ label: '215kWh', value: 'topCenter_215' },
{ label: '261光储1', value: 'pv1AndStorage_261' },
{ label: '261光储2', value: 'pv2AndStorage_261' },
{ label: '标准', value: 'commonTopCenter' },
{ label: '单柜配置', value: 'onceTopCenter' },
{ label: '二合一', value: 'secondTopCenter' },
@ -29,7 +27,12 @@ const topCenterList = [
{ label: '八合一(配置)', value: 'eighthTopCenter' },
{ label: '九合一(配置)', value: 'ninthTopCenter' },
{ label: '十合一(配置)', value: 'tenthTopCenter' },
{ label: '一百二十合一(配置)', value: 'zzhbTopCenter' }
{ label: '一百二十合一(配置)', value: 'zzhbTopCenter' },
{ label: '261光储1单柜', value: 'pv1AndStorage_261' },
{ label: '261光储1单柜(STS)', value: 'pv1AndStorage_sts_261' }, // 新增
{ label: '261光储2单柜', value: 'pv2AndStorage_261' }, // 新增
{ label: '261光储2单柜(STS)', value: 'pv2AndStorage_sts_261' },
{ label: 'PV8四并一', value: 'pv8FourthTopCenter' }
]
const rightTopList = [
{ label: '实时告警', value: 'topRight' },

View File

@ -373,7 +373,7 @@ export default {
process.env.VUE_APP_BASE_API + '/media/otaupgrad/upgradation',
headers: {
authorization: getToken(),
lang: sessionStorage.getItem('language') === 'en' ? 'en_US' : 'zh_CN'
lang: sessionStorage.getItem('language') ? sessionStorage.getItem('language') : 'zh_CN'
},
paramsData: {

View File

@ -311,7 +311,7 @@ export default {
uploadUrl: process.env.VUE_APP_BASE_API + '/business/deviceTypeCol/importExcel',
headers: {
authorization: getToken(),
lang: sessionStorage.getItem('language') === 'en' ? 'en_US' : 'zh_CN'
lang: sessionStorage.getItem('language') ? sessionStorage.getItem('language') : 'zh_CN'
},
filters: {

View File

@ -0,0 +1,490 @@
<template>
<section class="role-container">
<el-form id="searchForm" :model="filters">
<el-row :gutter="5" class="search-row">
<el-col :xs="2" :sm="12" :md="12" :lg="6" :xl="6">
<el-form-item label="电站名称:" label-width="100px">
<el-select v-model="filters.stationId" placeholder="请选择" clearable filterable @change="selectStation">
<el-option
v-for="item in stations"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :xs="44" :sm="24" :md="24" :lg="16" :xl="16">
<el-button type="primary" icon="el-icon-search" :loading="serachLoading" @click="on_refresh">
查询
</el-button>
</el-col>
<el-col :xs="4" :sm="12" :md="12" :lg="2" :xl="2" style="text-align:right;">
<el-button v-permission="['sys:remote:add']" type="primary" icon="el-icon-plus" @click="handleAddRemote">
新增
</el-button>
<!-- <el-button
v-if="false"
type="success"
class="download-btn"
icon="el-icon-upload2"
:loading="downLoading"
@click="on_download"
>
导出
</el-button> -->
</el-col>
</el-row>
</el-form>
<div class="table-box">
<el-table
v-loading="load_data"
:data="remotesList"
element-loading-text="拼命加载中"
border
:height="$setAutoTableHeight(46,searchHeight)"
highlight-current-row
style="width: 100%"
>
<el-table-column
label="电站名称"
width="320"
show-overflow-tooltip
>
<template slot-scope="scope">
{{ scope.row.stationName }}
</template>
</el-table-column>
<el-table-column
label="远程地址"
show-overflow-tooltip
>
<template slot-scope="scope">
{{ scope.row.ip }}
</template>
</el-table-column>
<el-table-column
label="端口"
show-overflow-tooltip
>
<template slot-scope="scope">
{{ scope.row.port }}
</template>
</el-table-column>
<el-table-column
label="类型"
show-overflow-tooltip
>
<template slot-scope="scope">
{{ scope.row.type }}
</template>
</el-table-column>
<el-table-column
label="内网IP"
show-overflow-tooltip
>
<template slot-scope="scope">
{{ scope.row.intranetIp }}
</template>
</el-table-column>
<el-table-column prop="createTime" label="创建时间" show-overflow-tooltip :formatter="formatTime" />
<el-table-column
align="center"
label="操作"
width="220"
>
<template slot-scope="scope">
<el-button v-permission="['sys:remote:update']" type="text" icon="el-icon-edit" @click="handleEdit(scope)">
编辑
</el-button>
<el-button
v-permission="['sys:remote:deleted']"
type="text"
icon="el-icon-delete"
class="btn-delete-table-text"
@click="handleDelete(scope)"
>
删除
</el-button>
</template>
</el-table-column>
</el-table>
<Pagingbar>
<div slot="page">
<el-pagination
:current-page="currentPage"
:page-size="pageSize"
:page-sizes="pageSizes"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
@current-change="handleCurrentChange"
@size-change="handleSizeChange"
/>
</div>
</Pagingbar>
</div>
<el-dialog
class="remote-dialog"
width="30%"
:append-to-body="false"
:visible.sync="dialogVisible"
:title="dialogType === 'edit' ? '编辑' : '新增' "
center
:close-on-click-modal="false"
@close="on_cancel"
>
<el-form
ref="roleModel"
:model="remote"
label-width="80px"
label-position="right"
:rules="formRules"
>
<el-form-item label="电站名称" prop="stationId">
<el-select v-model="remote.stationId" placeholder="请选择" filterable :disabled="dialogType === 'edit' ? true : false" @change="selectStation">
<el-option
v-for="item in stations"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item label="远程IP" prop="ip">
<el-input
v-model="remote.ip"
type="text"
maxlength="200"
placeholder="请输入远程访问IP(例255.255.255.255)"
/>
</el-form-item>
<el-form-item label="端口" prop="port">
<el-input
v-model="remote.port"
type="text"
maxlength="200"
placeholder="请输入远程访问端口"
/>
</el-form-item>
<el-form-item label="类型" prop="type">
<el-input
v-model="remote.type"
type="text"
maxlength="200"
placeholder="请输入远程访问类型"
/>
</el-form-item>
<el-form-item label="内网IP" prop="intranetIp">
<el-input
v-model="remote.intranetIp"
type="text"
maxlength="200"
placeholder="请输入内网IP(例255.255.255.255)"
/>
</el-form-item>
<el-form-item label="内网账号" prop="userName">
<el-input
v-model="remote.userName"
type="text"
maxlength="200"
placeholder="请输入内网账号"
/>
</el-form-item>
<el-form-item label="内网密码" prop="password">
<el-input
v-model="remote.password"
maxlength="200"
placeholder="请输入内网密码"
show-password
/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button plain @click="on_cancel">
取消
</el-button>
<el-button v-preventReClick type="primary" :loading="confirmLoading" @click="confirmRemote">
确定
</el-button>
</div>
</el-dialog>
</section>
</template>
<script>
// import path from 'path'
import { generateTitle } from '@/utils/i18n'
import {
GetRemoteList,
AddUpdateRemote,
// GetRemoteDetails,
DeleteRemote
} from '@/api/system/remote-manage'
import { pageSize, pageSizes } from '@/config'
import Pagingbar from '@/components/Pagingbar'
import i18n from '@/lang'
import { parseTime } from '@/utils'
const defaultRemote = {
intranetIp: '',
ip: '',
password: '',
port: '',
stationId: null,
type: '',
userName: ''
}
export default {
components: {
Pagingbar
},
data() {
return {
submitLoading: false,
remote: Object.assign({}, defaultRemote),
routes: [],
remotesList: [],
dialogVisible: false,
dialogType: 'new',
// 当前页码
currentPage: 1,
// 数据总条目
total: 0,
// 每页显示多少条数据
pageSize: pageSize,
pageSizes: pageSizes,
// 请求时的loading效果
load_data: false,
serachLoading: false, // 搜索loading
formLoading: false,
filters: {
stationId: null
},
formRules: {
// intranetIp: '',
// ip: '',
// password: '',
// port: '',
// stationId: null,
// type: '',
// userName: '',
stationId: [
{
required: true,
message: '请选择电站',
trigger: 'blur'
}
],
sort: [
{
required: true,
message: '请排序',
trigger: 'blur'
}
]
},
levelData: [],
confirmLoading: false // 确认loading
}
},
computed: {
searchHeight() {
return this.$store.getters.searchHeight
},
stations: function() {
return this.$store.getters.stations || []
}
},
created() {
this.getRemotes()
},
methods: {
selectStation() {
this.$forceUpdate()
},
formatTime(row) {
return row.createTime ? parseTime(new Date(row.createTime), '{y}-{m}-{d} {h}:{i}') : ''
},
generateTitle,
// 刷新
async on_refresh() {
this.serachLoading = true
this.currentPage = 1
await this.getRemotes()
this.serachLoading = false
},
// 页码选择
handleCurrentChange(val) {
this.currentPage = val
this.getRemotes()
},
handleSizeChange(val) {
this.currentPage = 1
this.pageSize = val
this.getRemotes()
},
async getRemotes() {
try {
this.load_data = true
const params = {
pageNum: this.currentPage,
pageSize: this.pageSize,
stationId: this.filters.stationId
}
const res = await GetRemoteList(params)
this.remotesList = res.data.list
this.total = res.data.totalRows
this.load_data = false
} catch (error) {
this.load_data = false
}
},
i18n(routes) {
const app = routes.map((route) => {
route.title = i18n.t(`route.${route.title}`)
if (route.children) {
route.children = this.i18n(route.children)
}
return route
})
return app
},
handleAddRemote() {
this.remote = Object.assign({}, defaultRemote)
this.dialogType = 'new'
this.dialogVisible = true
// this.getLevelData()
},
async handleEdit(scope) {
const self = this
this.dialogType = 'edit'
self.remote = Object.assign({}, scope.row)
console.log(self.remote)
this.dialogVisible = true
this.$nextTick(() => {
this.$refs.roleModel.clearValidate()
})
},
handleDelete({ $index, row }) {
this.$confirm(
'此操作将删除该远程控制, 是否继续?',
'警告',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
showClose: false,
center: true
}
).then(async() => {
await DeleteRemote(row.id)
if (this.remotesList.length === 1) {
this.currentPage--
}
this.getRemotes()
this.$notify({
title: '成功',
message: '删除成功',
type: 'success',
duration: 2000
})
})
},
confirmRemote() {
this.$refs.roleModel.validate(async(valid) => {
if (valid) {
const isEdit = this.dialogType === 'edit'
this.handleToSave(isEdit)
}
})
},
on_cancel() {
this.$refs.roleModel.resetFields()
this.dialogVisible = false
},
handleToSave(isEdit) {
const params = Object.assign({}, this.remote)
this.confirmLoading = true
AddUpdateRemote(params).then((res) => {
this.dialogVisible = false
this.getRemotes()
this.$notify({
title: '成功',
message: isEdit
? '编辑成功'
: '新增成功',
type: 'success',
duration: 2000
})
}, (rej) => {}).finally(() => {
this.confirmLoading = false
})
this.$refs.roleModel.clearValidate()
}
}
}
</script>
<style lang="scss" scoped>
.role-container {
position: relative;
height: 100%;
overflow: auto;
display: flex;
flex-direction: column;
background:var(--table-bg);
padding: 10px;
box-shadow: inset 0px 2px 16px 0px rgba(0, 148, 255, 0.15);
.search-row{
display: flex;
align-items: flex-start;
}
.top-search {
width: 100%;
height: 50px;
margin-bottom: 10px;
display: flex;
flex-direction: row;
align-items: center;
padding: 0 10px;
.serach-item {
color: $text-color;
.input-box {
width: 60%;
}
}
.btns-box {
text-align: right;
.upload-btn{
background: $tiffany;
}
.download-btn{
background: $green;
}
}
}
.table-box{
flex: 1;
margin-top: 10px;
}
.permission-tree {
margin-bottom: 30px;
max-height: 200px;
min-height: 100px;
overflow: auto;
}
}
.remote-dialog /deep/ .el-select,
.remote-dialog /deep/ .el-input {
width: 100%; /* 占满父容器宽度,和其他输入框对齐 */
}
</style>