修改台账管理页面 优化实时数据
This commit is contained in:
@@ -4,7 +4,6 @@
|
|||||||
<div id="rmsp" :style="`height:${vh};overflow: hidden;`">
|
<div id="rmsp" :style="`height:${vh};overflow: hidden;`">
|
||||||
<div class="bx" id="rms"></div>
|
<div class="bx" id="rms"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<!-- <el-button
|
<!-- <el-button
|
||||||
style="position: absolute; right: 10px; top: 0px; z-index: 20000"
|
style="position: absolute; right: 10px; top: 0px; z-index: 20000"
|
||||||
@@ -86,7 +85,14 @@ export default {
|
|||||||
titles: "",
|
titles: "",
|
||||||
vh: null,
|
vh: null,
|
||||||
vw: null,
|
vw: null,
|
||||||
echartlist: null
|
echartlist: null,
|
||||||
|
myChartess: null,
|
||||||
|
myChartess1: null,
|
||||||
|
myChartess2: null,
|
||||||
|
myChartess3: null,
|
||||||
|
myChartess4: null,
|
||||||
|
myChartess5: null,
|
||||||
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
@@ -123,20 +129,32 @@ export default {
|
|||||||
// this.$rms = $("#rms").eq(0);
|
// this.$rms = $("#rms").eq(0);
|
||||||
this.query();
|
this.query();
|
||||||
},
|
},
|
||||||
|
beforeDestroy() {
|
||||||
|
this.backbxlb()
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
backbxlb() {
|
backbxlb() {
|
||||||
|
this.waveDatas = []
|
||||||
|
if(this.myChartess){this.myChartess.dispose(); this.myChartess=null; }
|
||||||
|
if(this.myChartess1){this.myChartess1.dispose(); this.myChartess1=null; }
|
||||||
|
if(this.myChartess2){this.myChartess2.dispose(); this.myChartess2=null; }
|
||||||
|
if(this.myChartess3){this.myChartess3.dispose(); this.myChartess3=null; }
|
||||||
|
if(this.myChartess4){this.myChartess4.dispose(); this.myChartess4=null; }
|
||||||
|
if(this.myChartess5){this.myChartess5.dispose(); this.myChartess5=null; }
|
||||||
|
|
||||||
if (this.echartlist.length > 0) {
|
echarts.disconnect([this.myChartess,this.myChartess1,this.myChartess2,this.myChartess3,this.myChartess4,this.myChartess5])
|
||||||
|
|
||||||
this.waveDatas = []
|
// if (this.echartlist.length > 0) {
|
||||||
this.echartlist.forEach(item => {
|
|
||||||
item.dispose(); // 销毁echarts实例
|
// this.waveDatas = []
|
||||||
|
// this.echartlist.forEach(item => {
|
||||||
|
// item.dispose(); // 销毁echarts实例
|
||||||
|
|
||||||
|
|
||||||
})
|
// })
|
||||||
|
|
||||||
|
|
||||||
}
|
// }
|
||||||
},
|
},
|
||||||
download() {
|
download() {
|
||||||
// 转换成canvas
|
// 转换成canvas
|
||||||
@@ -1182,7 +1200,8 @@ export default {
|
|||||||
myChartes.resize();
|
myChartes.resize();
|
||||||
this.loading = false;
|
this.loading = false;
|
||||||
}, 500);
|
}, 500);
|
||||||
this.echartlist.push(myChartes)
|
// this.echartlist.push(myChartes)
|
||||||
|
this.myChartess=myChartes
|
||||||
//第一个波形图数据绘制完毕后,绘制后续的波形图
|
//第一个波形图数据绘制完毕后,绘制后续的波形图
|
||||||
if (waveDatas !== null && waveDatas.length > 1) {
|
if (waveDatas !== null && waveDatas.length > 1) {
|
||||||
let waveDatasTemp = waveDatas.slice(1);
|
let waveDatasTemp = waveDatas.slice(1);
|
||||||
@@ -1557,7 +1576,8 @@ export default {
|
|||||||
myChartes.resize();
|
myChartes.resize();
|
||||||
this.loading = false;
|
this.loading = false;
|
||||||
}, 500);
|
}, 500);
|
||||||
this.echartlist.push(myChartes)
|
// this.echartlist.push(myChartes)
|
||||||
|
this[`myChartess${step}`]=myChartes
|
||||||
echarts.connect([myChartes1, myChartes]);
|
echarts.connect([myChartes1, myChartes]);
|
||||||
},
|
},
|
||||||
//根据多个值的比较返回其中最大值
|
//根据多个值的比较返回其中最大值
|
||||||
|
|||||||
@@ -72,7 +72,14 @@ export default {
|
|||||||
vh: null,
|
vh: null,
|
||||||
vw: null,
|
vw: null,
|
||||||
zoom: '',
|
zoom: '',
|
||||||
echartlist: null
|
echartlist: [null, null, null, null, null, null, null, null],
|
||||||
|
myChartess: null,
|
||||||
|
myChartess1: null,
|
||||||
|
myChartess2: null,
|
||||||
|
myChartess3: null,
|
||||||
|
myChartess4: null,
|
||||||
|
myChartess5: null,
|
||||||
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
@@ -110,20 +117,36 @@ export default {
|
|||||||
this.query()
|
this.query()
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
beforeDestroy() {
|
||||||
|
this.backbxlb()
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
backbxlb() {
|
backbxlb() {
|
||||||
|
|
||||||
if (this.echartlist.length > 0) {
|
|
||||||
console.log(123111);
|
|
||||||
this.waveDatas = []
|
this.waveDatas = []
|
||||||
this.echartlist.forEach(item => {
|
if(this.myChartess){this.myChartess.dispose(); this.myChartess=null; }
|
||||||
item.dispose(); // 销毁echarts实例
|
if(this.myChartess1){this.myChartess1.dispose(); this.myChartess1=null; }
|
||||||
|
if(this.myChartess2){this.myChartess2.dispose(); this.myChartess2=null; }
|
||||||
|
if(this.myChartess3){this.myChartess3.dispose(); this.myChartess3=null; }
|
||||||
|
if(this.myChartess4){this.myChartess4.dispose(); this.myChartess4=null; }
|
||||||
|
if(this.myChartess5){this.myChartess5.dispose(); this.myChartess5=null; }
|
||||||
|
|
||||||
|
echarts.disconnect([this.myChartess,this.myChartess1,this.myChartess2,this.myChartess3,this.myChartess4,this.myChartess5])
|
||||||
|
|
||||||
|
|
||||||
})
|
// this.echartlist.forEach(item => {
|
||||||
|
// if (item) {
|
||||||
|
// item.dispose(); // 销<><E99480>echarts实例
|
||||||
|
// echarts.disconnect(item)
|
||||||
|
// item=null
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
}
|
// })
|
||||||
|
// setTimeout(()=>{
|
||||||
|
// console.log("🚀 ~ backbxlb ~ this.echartlist:", this.echartlist)
|
||||||
|
|
||||||
|
// },1000)
|
||||||
|
|
||||||
},
|
},
|
||||||
download() {
|
download() {
|
||||||
// 转换成canvas
|
// 转换成canvas
|
||||||
@@ -241,7 +264,7 @@ export default {
|
|||||||
},
|
},
|
||||||
//获取横向一个波形的全部数据,包括瞬时波形的一次、二次值,如果是电压的话,还需要计算出对应的最大最小值
|
//获取横向一个波形的全部数据,包括瞬时波形的一次、二次值,如果是电压的话,还需要计算出对应的最大最小值
|
||||||
fliteWaveData(wp, step) {
|
fliteWaveData(wp, step) {
|
||||||
|
|
||||||
let shunData = wp.listWaveData
|
let shunData = wp.listWaveData
|
||||||
let pt = Number(wp.pt) / 1000
|
let pt = Number(wp.pt) / 1000
|
||||||
let ct = Number(wp.ct)
|
let ct = Number(wp.ct)
|
||||||
@@ -413,7 +436,7 @@ export default {
|
|||||||
},
|
},
|
||||||
//开始画图
|
//开始画图
|
||||||
initWave(waveDatas, time, type, severity, isOpen) {
|
initWave(waveDatas, time, type, severity, isOpen) {
|
||||||
this.echartlist = []
|
|
||||||
//清除之前增加的div
|
//清除之前增加的div
|
||||||
// $("#wave ~ .bx1").remove();
|
// $("#wave ~ .bx1").remove();
|
||||||
$('div.bx1').remove()
|
$('div.bx1').remove()
|
||||||
@@ -814,7 +837,8 @@ export default {
|
|||||||
myChartes.resize()
|
myChartes.resize()
|
||||||
this.loading = false
|
this.loading = false
|
||||||
}, 400)
|
}, 400)
|
||||||
this.echartlist.push(myChartes)
|
// this.echartlist[0]=(myChartes)
|
||||||
|
this.myChartess=myChartes
|
||||||
|
|
||||||
//第一个波形图数据绘制完毕后,绘制后续的波形图
|
//第一个波形图数据绘制完毕后,绘制后续的波形图
|
||||||
if (waveDatas !== null && waveDatas.length > 1) {
|
if (waveDatas !== null && waveDatas.length > 1) {
|
||||||
@@ -1165,7 +1189,9 @@ export default {
|
|||||||
myChartes.resize()
|
myChartes.resize()
|
||||||
this.loading = false
|
this.loading = false
|
||||||
}, 400)
|
}, 400)
|
||||||
this.echartlist.push(myChartes)
|
// this.echartlist[step]=(myChartes)
|
||||||
|
this[`myChartess${step}`]=myChartes
|
||||||
|
|
||||||
echarts.connect([myChartes1, myChartes])
|
echarts.connect([myChartes1, myChartes])
|
||||||
},
|
},
|
||||||
//根据多个值的比较返回其中最大值
|
//根据多个值的比较返回其中最大值
|
||||||
|
|||||||
@@ -132,12 +132,13 @@ const open = async (row: any) => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
const bxhandleClick = (tab: any) => {
|
const bxhandleClick = (tab: any) => {
|
||||||
|
if (shushiboxiRef.value) shushiboxiRef.value.backbxlb()
|
||||||
|
if (rmsboxiRef.value) rmsboxiRef.value.backbxlb()
|
||||||
|
|
||||||
loading.value = true
|
loading.value = true
|
||||||
if (tab.name == 'ssbx') {
|
if (tab.name == 'ssbx') {
|
||||||
if (rmsboxiRef.value) rmsboxiRef.value.backbxlb()
|
|
||||||
bxactiveName.value = 'ssbx'
|
bxactiveName.value = 'ssbx'
|
||||||
} else if (tab.name == 'rmsbx') {
|
} else if (tab.name == 'rmsbx') {
|
||||||
if (shushiboxiRef.value) shushiboxiRef.value.backbxlb()
|
|
||||||
bxactiveName.value = 'rmsbx'
|
bxactiveName.value = 'rmsbx'
|
||||||
}
|
}
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
@@ -173,6 +174,8 @@ const AdvancedAnalytics = () => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
const changeView = () => {
|
const changeView = () => {
|
||||||
|
if (shushiboxiRef.value) shushiboxiRef.value.backbxlb()
|
||||||
|
if (rmsboxiRef.value) rmsboxiRef.value.backbxlb()
|
||||||
showBoxi.value = false
|
showBoxi.value = false
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
showBoxi.value = true
|
showBoxi.value = true
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
<!-- image -->
|
<!-- image -->
|
||||||
<div v-if="field.render == 'image' && fieldValue" class="ba-render-image">
|
<div v-if="field.render == 'image' && fieldValue" class="ba-render-image">
|
||||||
<el-image :hide-on-click-modal="true" :preview-teleported="true" :preview-src-list="[fullUrl(fieldValue)]"
|
<el-image :hide-on-click-modal="true" :preview-teleported="true" :preview-src-list="[fieldValue]"
|
||||||
:src="fieldValue.length > 100 ? fieldValue : fullUrl(fieldValue)"></el-image>
|
:src="fieldValue.length > 100 ? fieldValue : fullUrl(fieldValue)"></el-image>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -5,8 +5,9 @@
|
|||||||
<div class="view_btn" v-if="time">
|
<div class="view_btn" v-if="time">
|
||||||
<el-button type="primary" :icon="DataLine" @click="view = 2">谐波频谱</el-button>
|
<el-button type="primary" :icon="DataLine" @click="view = 2">谐波频谱</el-button>
|
||||||
<el-button type="primary" :icon="TrendCharts" @click="view = 3">实时趋势</el-button>
|
<el-button type="primary" :icon="TrendCharts" @click="view = 3">实时趋势</el-button>
|
||||||
|
<el-button type="primary" :icon="Download" @click="downloadTxt">下载数据</el-button>
|
||||||
</div>
|
</div>
|
||||||
<el-collapse v-model.trim="activeNames">
|
<el-collapse v-model.trim="activeNames" @change="handleChange">
|
||||||
<el-collapse-item title="基础数据" name="1">
|
<el-collapse-item title="基础数据" name="1">
|
||||||
<div class="view_top">
|
<div class="view_top">
|
||||||
<!-- 左侧仪表盘 -->
|
<!-- 左侧仪表盘 -->
|
||||||
@@ -85,8 +86,8 @@
|
|||||||
</el-collapse-item>
|
</el-collapse-item>
|
||||||
</el-collapse>
|
</el-collapse>
|
||||||
|
|
||||||
<div class="view_bot">
|
<div class="view_bot" :style="height">
|
||||||
<vxe-table border height="" :data="webMsgSend" :tooltip-config="{ enterable: true }">
|
<vxe-table border :data="webMsgSend" :tooltip-config="{ enterable: true }">
|
||||||
<vxe-colgroup align="center" title="电压有效值(kV)">
|
<vxe-colgroup align="center" title="电压有效值(kV)">
|
||||||
<vxe-column
|
<vxe-column
|
||||||
align="center"
|
align="center"
|
||||||
@@ -139,7 +140,7 @@
|
|||||||
</vxe-colgroup>
|
</vxe-colgroup>
|
||||||
</vxe-table>
|
</vxe-table>
|
||||||
<br />
|
<br />
|
||||||
<vxe-table border height="" :data="webMsgSend" :tooltip-config="{ enterable: true }">
|
<vxe-table border :data="webMsgSend" :tooltip-config="{ enterable: true }">
|
||||||
<vxe-column align="center" field="freq" width="140" title="频率(Hz)" :formatter="formatter" />
|
<vxe-column align="center" field="freq" width="140" title="频率(Hz)" :formatter="formatter" />
|
||||||
<vxe-column
|
<vxe-column
|
||||||
align="center"
|
align="center"
|
||||||
@@ -189,7 +190,7 @@
|
|||||||
</vxe-colgroup>
|
</vxe-colgroup>
|
||||||
</vxe-table>
|
</vxe-table>
|
||||||
<br />
|
<br />
|
||||||
<vxe-table border height="" :data="webMsgSend" :tooltip-config="{ enterable: true }">
|
<vxe-table border :data="webMsgSend" :tooltip-config="{ enterable: true }">
|
||||||
<vxe-colgroup align="center" title="电压偏差(%)">
|
<vxe-colgroup align="center" title="电压偏差(%)">
|
||||||
<vxe-column
|
<vxe-column
|
||||||
align="center"
|
align="center"
|
||||||
@@ -261,7 +262,7 @@
|
|||||||
</vxe-colgroup>
|
</vxe-colgroup>
|
||||||
</vxe-table>
|
</vxe-table>
|
||||||
<br />
|
<br />
|
||||||
<vxe-table border height="" :data="webMsgSend" :tooltip-config="{ enterable: true }">
|
<vxe-table border :data="webMsgSend" :tooltip-config="{ enterable: true }">
|
||||||
<vxe-colgroup align="center" title="无功功率(kVar)">
|
<vxe-colgroup align="center" title="无功功率(kVar)">
|
||||||
<vxe-column
|
<vxe-column
|
||||||
v-if="ptName == 'star'"
|
v-if="ptName == 'star'"
|
||||||
@@ -339,11 +340,13 @@ import { useMonitoringPoint } from '@/stores/monitoringPoint'
|
|||||||
import { useDictData } from '@/stores/dictData'
|
import { useDictData } from '@/stores/dictData'
|
||||||
import { timeFormat } from '@/utils/common'
|
import { timeFormat } from '@/utils/common'
|
||||||
import { useAdminInfo } from '@/stores/adminInfo'
|
import { useAdminInfo } from '@/stores/adminInfo'
|
||||||
import { TrendCharts, DataLine } from '@element-plus/icons-vue'
|
import { TrendCharts, DataLine, Download } from '@element-plus/icons-vue'
|
||||||
import spectrum from './spectrum.vue'
|
import spectrum from './spectrum.vue'
|
||||||
import trend from './trend.vue'
|
import trend from './trend.vue'
|
||||||
import { getLineDetail } from '@/api/device-boot/communicate'
|
import { getLineDetail } from '@/api/device-boot/communicate'
|
||||||
|
import { mainHeight } from '@/utils/layout'
|
||||||
// import { getRealTimeTableList } from '@/api/cs-device-boot/EquipmentDelivery'
|
// import { getRealTimeTableList } from '@/api/cs-device-boot/EquipmentDelivery'
|
||||||
|
const height = ref(mainHeight(580))
|
||||||
const monitoringPoint = useMonitoringPoint()
|
const monitoringPoint = useMonitoringPoint()
|
||||||
const dictData = useDictData()
|
const dictData = useDictData()
|
||||||
const adminInfo = useAdminInfo()
|
const adminInfo = useAdminInfo()
|
||||||
@@ -376,6 +379,10 @@ const echartsDataA3: any = ref({})
|
|||||||
const dataSocket = reactive({
|
const dataSocket = reactive({
|
||||||
socketServe: socketClient.Instance
|
socketServe: socketClient.Instance
|
||||||
})
|
})
|
||||||
|
const handleChange = () => {
|
||||||
|
height.value = mainHeight(activeNames.value.length == 0 ? 160 : 580)
|
||||||
|
}
|
||||||
|
const txtContent = ref('')
|
||||||
//渲染中间相角图
|
//渲染中间相角图
|
||||||
const initRadioCharts = () => {
|
const initRadioCharts = () => {
|
||||||
echartsData1.value = {
|
echartsData1.value = {
|
||||||
@@ -470,8 +477,9 @@ const initRadioCharts = () => {
|
|||||||
|
|
||||||
// 指针设置
|
// 指针设置
|
||||||
pointer: {
|
pointer: {
|
||||||
length: '80%',
|
icon: 'path://m368.01136,209.80637l173.00807,-193.72679c19.14653,-21.43943 50.16392,-21.43943 69.31045,0l172.93149,193.72679c1.22537,1.37213 1.22537,3.51607 0,4.8882l-47.63657,53.34133c-1.22538,1.37213 -3.14003,1.37213 -4.36541,0l-113.65381,-127.26452c-1.91465,-2.14395 -5.20785,-0.60031 -5.20785,2.40122l0,731.94254c0,1.88667 -1.37855,3.43031 -3.06345,3.43031l-67.39579,0c-1.6849,0 -3.06345,-1.54364 -3.06345,-3.43031l0,-731.94254c0,-3.08728 -3.2932,-4.54517 -5.20785,-2.40122l-113.65381,127.26452c-1.22538,1.37213 -3.14003,1.37213 -4.36541,0l-47.63657,-53.34133c-1.22537,-1.37213 -1.22537,-3.51607 0,-4.88819l0,-0.00001M539,861.23064h73v800h-73z',
|
||||||
width: 4,
|
length: '90%',
|
||||||
|
width: 15,
|
||||||
opacity: 1
|
opacity: 1
|
||||||
},
|
},
|
||||||
detail: {
|
detail: {
|
||||||
@@ -574,9 +582,10 @@ const initRadioCharts = () => {
|
|||||||
|
|
||||||
// 指针设置
|
// 指针设置
|
||||||
pointer: {
|
pointer: {
|
||||||
|
icon: 'path://m368.01136,209.80637l173.00807,-193.72679c19.14653,-21.43943 50.16392,-21.43943 69.31045,0l172.93149,193.72679c1.22537,1.37213 1.22537,3.51607 0,4.8882l-47.63657,53.34133c-1.22538,1.37213 -3.14003,1.37213 -4.36541,0l-113.65381,-127.26452c-1.91465,-2.14395 -5.20785,-0.60031 -5.20785,2.40122l0,731.94254c0,1.88667 -1.37855,3.43031 -3.06345,3.43031l-67.39579,0c-1.6849,0 -3.06345,-1.54364 -3.06345,-3.43031l0,-731.94254c0,-3.08728 -3.2932,-4.54517 -5.20785,-2.40122l-113.65381,127.26452c-1.22538,1.37213 -3.14003,1.37213 -4.36541,0l-47.63657,-53.34133c-1.22537,-1.37213 -1.22537,-3.51607 0,-4.88819l0,-0.00001M539,861.23064h73v800h-73z',
|
||||||
length: '90%',
|
length: '90%',
|
||||||
width: 6,
|
width: 15,
|
||||||
opacity: 0.5
|
opacity: 1
|
||||||
},
|
},
|
||||||
detail: {
|
detail: {
|
||||||
show: false
|
show: false
|
||||||
@@ -749,62 +758,62 @@ const init = () => {
|
|||||||
let pids = monitoringPoint.state.pid.split(',')
|
let pids = monitoringPoint.state.pid.split(',')
|
||||||
dataSocket.socketServe.connect(`${adminInfo.id},${monitoringPoint.state.lineId},${pids[pids.length - 2]}`)
|
dataSocket.socketServe.connect(`${adminInfo.id},${monitoringPoint.state.lineId},${pids[pids.length - 2]}`)
|
||||||
dataSocket.socketServe.registerCallBack('message', (res: any) => {
|
dataSocket.socketServe.registerCallBack('message', (res: any) => {
|
||||||
|
txtContent.value = res.value
|
||||||
let data = JSON.parse(res.value)
|
let data = JSON.parse(res.value)
|
||||||
// console.log('🚀 ~ dataSocket.socketServe.registerCallBack ~ data:', data)
|
|
||||||
time.value = data.TIME - 0
|
time.value = data.TIME - 0
|
||||||
webMsgSend.value = [
|
webMsgSend.value = [
|
||||||
{
|
{
|
||||||
vRmsA: ptName.value == 'star' ? data.V.A.VRMS : data.V.A.VRMS_LVR, //A相电压
|
vRmsA: ptName.value == 'star' ? data.V.A.VRMS : data.V.A.VRMS_LVR, //A相电压
|
||||||
vRmsB: ptName.value == 'star' ? data.V.B.VRMS : data.V.B.VRMS_LVR, //B相电压
|
vRmsB: ptName.value == 'star' ? data.V.B.VRMS : data.V.B.VRMS_LVR, //B相电压
|
||||||
vRmsC: ptName.value == 'star' ? data.V.C.VRMS : data.V.C.VRMS_LVR, //C相电压
|
vRmsC: ptName.value == 'star' ? data.V.C.VRMS : data.V.C.VRMS_LVR, //C相电压
|
||||||
iRmsA: data.I.A.IRMS, //A相电流
|
iRmsA: data.I.A?.IRMS, //A相电流
|
||||||
iRmsB: data.I.B.IRMS, //B相电流
|
iRmsB: data.I.B?.IRMS, //B相电流
|
||||||
iRmsC: data.I.C.IRMS, //C相电流
|
iRmsC: data.I.C?.IRMS, //C相电流
|
||||||
v1AngA: data.V.A.V_ANGLE, //A相基波电压相位
|
v1AngA: data.V.A?.VFUND_ANGLE, //A相基波电压相位
|
||||||
v1AngB: data.V.B.V_ANGLE, //B相基波电压相位
|
v1AngB: data.V.B?.VFUND_ANGLE, //B相基波电压相位
|
||||||
v1AngC: data.V.C.V_ANGLE, //C相基波电压相位
|
v1AngC: data.V.C?.VFUND_ANGLE, //C相基波电压相位
|
||||||
i1AngA: data.I.A.I_ANGLE, //A相基波电流相位
|
i1AngA: data.I.A?.I_ANGLE, //A相基波电流相位
|
||||||
i1AngB: data.I.A.I_ANGLE, //B相基波电流相位
|
i1AngB: data.I.B?.I_ANGLE, //B相基波电流相位
|
||||||
i1AngC: data.I.A.I_ANGLE, //C相基波电流相位
|
i1AngC: data.I.C?.I_ANGLE, //C相基波电流相位
|
||||||
freq: data.V.T.FREQ, //频率
|
freq: data.V.T?.FREQ, //频率
|
||||||
freqDev: data.V.T.DELTA_FREQ, //频率偏差
|
freqDev: data.V.T?.DELTA_FREQ, //频率偏差
|
||||||
vUnbalance: data.V.T.V_UNBAN, //电压不平衡度
|
vUnbalance: data.V.T?.V_UNBAN, //电压不平衡度
|
||||||
iUnbalance: data.I.T.I_UNBAN, //电流不平衡度
|
iUnbalance: data.I.T?.I_UNBAN, //电流不平衡度
|
||||||
v1A: data.V.A.V1, //A相基波电压相位
|
v1A: data.V.A?.V1, //A相基波电压幅值
|
||||||
v1B: data.V.B.V1, //A相基波电压相位
|
v1B: data.V.B?.V1, //A相基波电压幅值
|
||||||
v1C: data.V.C.V1, //A相基波电压相位
|
v1C: data.V.C?.V1, //A相基波电压幅值
|
||||||
i1A: data.I.A.I1, //A相基波电流相位
|
i1A: data.I.A?.I1, //A相基波电流相位
|
||||||
i1B: data.I.B.I1, //A相基波电流相位
|
i1B: data.I.B?.I1, //A相基波电流相位
|
||||||
i1C: data.I.C.I1, //A相基波电流相位
|
i1C: data.I.C?.I1, //A相基波电流相位
|
||||||
vDevA: data.V.A.DELTA_V, //A相电压偏差
|
vDevA: data.V.A?.DELTA_V, //A相电压偏差
|
||||||
vDevB: data.V.B.DELTA_V, //B相电压偏差
|
vDevB: data.V.B?.DELTA_V, //B相电压偏差
|
||||||
vDevC: data.V.C.DELTA_V, //C相电压偏差
|
vDevC: data.V.C?.DELTA_V, //C相电压偏差
|
||||||
vThdA: data.V.A.VTHD, //A相电压总谐波畸变率
|
vThdA: data.V.A?.VTHD, //A相电压总谐波畸变率
|
||||||
vThdB: data.V.B.VTHD, //B相电压总谐波畸变率
|
vThdB: data.V.B?.VTHD, //B相电压总谐波畸变率
|
||||||
vThdC: data.V.C.VTHD, //C相电压总谐波畸变率
|
vThdC: data.V.C?.VTHD, //C相电压总谐波畸变率
|
||||||
iThdA: data.I.A.ITHD, //A相电流总谐波畸变率
|
iThdA: data.I.A?.ITHD, //A相电流总谐波畸变率
|
||||||
iThdB: data.I.B.ITHD, //B相电流总谐波畸变率
|
iThdB: data.I.B?.ITHD, //B相电流总谐波畸变率
|
||||||
iThdC: data.I.C.ITHD, //C相电流总谐波畸变率
|
iThdC: data.I.C?.ITHD, //C相电流总谐波畸变率
|
||||||
pA: data.PQ.A.P, //A相有功功率
|
pA: data.PQ.A?.P, //A相有功功率
|
||||||
pB: data.PQ.B.P, //B相有功功率
|
pB: data.PQ.B?.P, //B相有功功率
|
||||||
pC: data.PQ.C.P, //C相有功功率
|
pC: data.PQ.C?.P, //C相有功功率
|
||||||
pTot: data.PQ.T.P, //总有功功率
|
pTot: data.PQ.T?.P, //总有功功率
|
||||||
qA: data.PQ.A.Q, //A相无功功率
|
qA: data.PQ.A?.Q, //A相无功功率
|
||||||
qB: data.PQ.B.Q, //B相无功功率
|
qB: data.PQ.B?.Q, //B相无功功率
|
||||||
qC: data.PQ.C.Q, //C相无功功率
|
qC: data.PQ.C?.Q, //C相无功功率
|
||||||
qTot: data.PQ.T.Q, //总无功功率
|
qTot: data.PQ.T?.Q, //总无功功率
|
||||||
sA: data.PQ.A.S, //A相视在功率
|
sA: data.PQ.A?.S, //A相视在功率
|
||||||
sB: data.PQ.B.S, //B相视在功率
|
sB: data.PQ.B?.S, //B相视在功率
|
||||||
sC: data.PQ.C.S, //C相视在功率
|
sC: data.PQ.C?.S, //C相视在功率
|
||||||
sTot: data.PQ.T.S, //总视在功率
|
sTot: data.PQ.T?.S, //总视在功率
|
||||||
pfA: data.PQ.A.PF, //A相功率因数
|
pfA: data.PQ.A?.PF, //A相功率因数
|
||||||
pfB: data.PQ.B.PF, //B相功率因数
|
pfB: data.PQ.B?.PF, //B相功率因数
|
||||||
pfC: data.PQ.C.PF, //C相功率因数
|
pfC: data.PQ.C?.PF, //C相功率因数
|
||||||
pfTot: data.PQ.T.PF, //总功率因数
|
pfTot: data.PQ.T?.PF, //总功率因数
|
||||||
dpfA: data.PQ.A.DF, //A相基波功率因数
|
dpfA: data.PQ.A?.DF, //A相基波功率因数
|
||||||
dpfB: data.PQ.B.DF, //B相基波功率因数
|
dpfB: data.PQ.B?.DF, //B相基波功率因数
|
||||||
dpfC: data.PQ.C.DF, //C相基波功率因数
|
dpfC: data.PQ.C?.DF, //C相基波功率因数
|
||||||
dpfTot: data.PQ.T.DF //总基波功率因数
|
dpfTot: data.PQ.T?.DF //总基波功率因数
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
spectrumRef.value?.init(data)
|
spectrumRef.value?.init(data)
|
||||||
@@ -814,12 +823,27 @@ const init = () => {
|
|||||||
setRealData()
|
setRealData()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
// 下载txt
|
||||||
|
const downloadTxt = () => {
|
||||||
|
const content = txtContent.value // 文件内容
|
||||||
|
const blob = new Blob([content], { type: 'text/plain' }) // 创建 Blob 对象
|
||||||
|
const url = URL.createObjectURL(blob) // 生成下载链接
|
||||||
|
|
||||||
|
// 创建 <a> 标签并触发下载
|
||||||
|
const link = document.createElement('a')
|
||||||
|
link.href = url
|
||||||
|
link.download = '实时数据.txt' // 文件名
|
||||||
|
link.click()
|
||||||
|
|
||||||
|
// 释放 URL 对象
|
||||||
|
URL.revokeObjectURL(url)
|
||||||
|
}
|
||||||
//接收父组件传递的table数据
|
//接收父组件传递的table数据
|
||||||
|
|
||||||
const loading = ref(false)
|
const loading = ref(false)
|
||||||
|
|
||||||
const formatter = (row: any) => {
|
const formatter = (row: any) => {
|
||||||
return Math.floor(row.cellValue * 100) / 100
|
return row.cellValue == undefined ? '/' : Math.floor(row.cellValue * 100) / 100
|
||||||
}
|
}
|
||||||
//电流相角数组&电压相角数组
|
//电流相角数组&电压相角数组
|
||||||
const iRadioList: any = ref([])
|
const iRadioList: any = ref([])
|
||||||
|
|||||||
@@ -127,13 +127,17 @@ const init = (row: any) => {
|
|||||||
let SvData: any = {}
|
let SvData: any = {}
|
||||||
for (let i = 1; i < 50; i++) {
|
for (let i = 1; i < 50; i++) {
|
||||||
vData[`h${i + 1}`] =
|
vData[`h${i + 1}`] =
|
||||||
Math.floor(Math.max(...[row.V.A[`V` + i], row.V.B[`V` + i], row.V.C[`V` + i]].map(Number)) * 100) / 100
|
Math.floor(
|
||||||
|
Math.max(...[row.V.A[`V` + (i + 1)], row.V.B[`V` + (i + 1)], row.V.C[`V` + (i + 1)]].map(Number)) * 100
|
||||||
|
) / 100
|
||||||
|
|
||||||
SvData[`h${i - 0.5}`] =
|
SvData[`h${i - 0.5}`] =
|
||||||
Math.floor(Math.max(...[row.V.A[`SV_` + i], row.V.B[`SV_` + i], row.V.C[`SV_` + i]].map(Number)) * 100) /
|
Math.floor(Math.max(...[row.V.A[`SV_` + i], row.V.B[`SV_` + i], row.V.C[`SV_` + i]].map(Number)) * 100) /
|
||||||
100
|
100
|
||||||
iData[`h${i + 1}`] =
|
iData[`h${i + 1}`] =
|
||||||
Math.floor(Math.max(...[row.I.A[`I` + i], row.I.B[`I` + i], row.I.C[`I` + i]].map(Number)) * 100) / 100
|
Math.floor(
|
||||||
|
Math.max(...[row.I.A[`I` + (i + 1)], row.I.B[`I` + (i + 1)], row.I.C[`I` + (i + 1)]].map(Number)) * 100
|
||||||
|
) / 100
|
||||||
}
|
}
|
||||||
SvData[`h49.5`] =
|
SvData[`h49.5`] =
|
||||||
Math.floor(Math.max(...[row.V.A[`SV_50`], row.V.B[`SV_50`], row.V.C[`SV_50`]].map(Number)) * 100) / 100
|
Math.floor(Math.max(...[row.V.A[`SV_50`], row.V.B[`SV_50`], row.V.C[`SV_50`]].map(Number)) * 100) / 100
|
||||||
@@ -150,6 +154,9 @@ const init = (row: any) => {
|
|||||||
: tabsList.value[activeName.value].title
|
: tabsList.value[activeName.value].title
|
||||||
|
|
||||||
barCharts.value[activeName.value]?.setOptions({
|
barCharts.value[activeName.value]?.setOptions({
|
||||||
|
title: {
|
||||||
|
text: tabsList.value[activeName.value].groupName
|
||||||
|
},
|
||||||
xAxis: {
|
xAxis: {
|
||||||
data: xData.map(num => `${num}次`)
|
data: xData.map(num => `${num}次`)
|
||||||
},
|
},
|
||||||
@@ -182,7 +189,7 @@ const init = (row: any) => {
|
|||||||
const echarts = (num: number) => {
|
const echarts = (num: number) => {
|
||||||
return {
|
return {
|
||||||
title: {
|
title: {
|
||||||
text: tabsList.value[num].groupName
|
text: ''
|
||||||
},
|
},
|
||||||
xAxis: {
|
xAxis: {
|
||||||
name: tabsList.value[num].unit,
|
name: tabsList.value[num].unit,
|
||||||
|
|||||||
@@ -190,64 +190,64 @@ const init = (row: any) => {
|
|||||||
case '电压总有效值(kV)':
|
case '电压总有效值(kV)':
|
||||||
item.echartsData.series[0].data.push([
|
item.echartsData.series[0].data.push([
|
||||||
time,
|
time,
|
||||||
Math.floor((props.ptName == 'star' ? row.V.A.VRMS : row.V.A.VRMS_LVR) * 100) / 100
|
Math.floor((props.ptName == 'star' ? row.V.A?.VRMS : row.V.A?.VRMS_LVR) * 100) / 100
|
||||||
])
|
])
|
||||||
item.echartsData.series[1].data.push([
|
item.echartsData.series[1].data.push([
|
||||||
time,
|
time,
|
||||||
Math.floor((props.ptName == 'star' ? row.V.B.VRMS : row.V.B.VRMS_LVR) * 100) / 100
|
Math.floor((props.ptName == 'star' ? row.V.B?.VRMS : row.V.B?.VRMS_LVR) * 100) / 100
|
||||||
])
|
])
|
||||||
item.echartsData.series[2].data.push([
|
item.echartsData.series[2].data.push([
|
||||||
time,
|
time,
|
||||||
Math.floor((props.ptName == 'star' ? row.V.C.VRMS : row.V.C.VRMS_LVR) * 100) / 100
|
Math.floor((props.ptName == 'star' ? row.V.C?.VRMS : row.V.C?.VRMS_LVR) * 100) / 100
|
||||||
])
|
])
|
||||||
break
|
break
|
||||||
case '电流总有效值(A)':
|
case '电流总有效值(A)':
|
||||||
item.echartsData.series[0].data.push([time, Math.floor(row.I.A.IRMS * 100) / 100])
|
item.echartsData.series[0].data.push([time, Math.floor(row.I.A?.IRMS * 100) / 100])
|
||||||
item.echartsData.series[1].data.push([time, Math.floor(row.I.B.IRMS * 100) / 100])
|
item.echartsData.series[1].data.push([time, Math.floor(row.I.B?.IRMS * 100) / 100])
|
||||||
item.echartsData.series[2].data.push([time, Math.floor(row.I.C.IRMS * 100) / 100])
|
item.echartsData.series[2].data.push([time, Math.floor(row.I.C?.IRMS * 100) / 100])
|
||||||
break
|
break
|
||||||
case '有功功率(kW)':
|
case '有功功率(kW)':
|
||||||
if (props.ptName == 'star') {
|
if (props.ptName == 'star') {
|
||||||
item.echartsData.series[0].data.push([time, Math.floor(row.PQ.A.P * 100) / 100])
|
item.echartsData.series[0].data.push([time, Math.floor(row.PQ.A?.P * 100) / 100])
|
||||||
item.echartsData.series[1].data.push([time, Math.floor(row.PQ.B.P * 100) / 100])
|
item.echartsData.series[1].data.push([time, Math.floor(row.PQ.B?.P * 100) / 100])
|
||||||
item.echartsData.series[2].data.push([time, Math.floor(row.PQ.C.P * 100) / 100])
|
item.echartsData.series[2].data.push([time, Math.floor(row.PQ.C?.P * 100) / 100])
|
||||||
item.echartsData.series[3].data.push([time, Math.floor(row.PQ.T.P * 100) / 100])
|
item.echartsData.series[3].data.push([time, Math.floor(row.PQ.T?.P * 100) / 100])
|
||||||
} else {
|
} else {
|
||||||
item.echartsData.series[0].data.push([time, Math.floor(row.PQ.T.P * 100) / 100])
|
item.echartsData.series[0].data.push([time, Math.floor(row.PQ.T?.P * 100) / 100])
|
||||||
}
|
}
|
||||||
|
|
||||||
break
|
break
|
||||||
case '无功功率(kW)':
|
case '无功功率(kW)':
|
||||||
if (props.ptName == 'star') {
|
if (props.ptName == 'star') {
|
||||||
item.echartsData.series[0].data.push([time, Math.floor(row.PQ.A.Q * 100) / 100])
|
item.echartsData.series[0].data.push([time, Math.floor(row.PQ.A?.Q * 100) / 100])
|
||||||
item.echartsData.series[1].data.push([time, Math.floor(row.PQ.B.Q * 100) / 100])
|
item.echartsData.series[1].data.push([time, Math.floor(row.PQ.B?.Q * 100) / 100])
|
||||||
item.echartsData.series[2].data.push([time, Math.floor(row.PQ.C.Q * 100) / 100])
|
item.echartsData.series[2].data.push([time, Math.floor(row.PQ.C?.Q * 100) / 100])
|
||||||
item.echartsData.series[3].data.push([time, Math.floor(row.PQ.T.Q * 100) / 100])
|
item.echartsData.series[3].data.push([time, Math.floor(row.PQ.T?.Q * 100) / 100])
|
||||||
} else {
|
} else {
|
||||||
item.echartsData.series[0].data.push([time, Math.floor(row.PQ.T.Q * 100) / 100])
|
item.echartsData.series[0].data.push([time, Math.floor(row.PQ.T?.Q * 100) / 100])
|
||||||
}
|
}
|
||||||
|
|
||||||
break
|
break
|
||||||
case '基波电压总有效值(kV)':
|
case '基波电压总有效值(kV)':
|
||||||
item.echartsData.series[0].data.push([time, Math.floor(row.V.A.V1 * 100) / 100])
|
item.echartsData.series[0].data.push([time, Math.floor(row.V.A?.V1 * 100) / 100])
|
||||||
item.echartsData.series[1].data.push([time, Math.floor(row.V.B.V1 * 100) / 100])
|
item.echartsData.series[1].data.push([time, Math.floor(row.V.B?.V1 * 100) / 100])
|
||||||
item.echartsData.series[2].data.push([time, Math.floor(row.V.C.V1 * 100) / 100])
|
item.echartsData.series[2].data.push([time, Math.floor(row.V.C?.V1 * 100) / 100])
|
||||||
break
|
break
|
||||||
case '基波电流总有效值(A)':
|
case '基波电流总有效值(A)':
|
||||||
item.echartsData.series[0].data.push([time, Math.floor(row.I.A.I1 * 100) / 100])
|
item.echartsData.series[0].data.push([time, Math.floor(row.I.A?.I1 * 100) / 100])
|
||||||
item.echartsData.series[1].data.push([time, Math.floor(row.I.B.I1 * 100) / 100])
|
item.echartsData.series[1].data.push([time, Math.floor(row.I.B?.I1 * 100) / 100])
|
||||||
item.echartsData.series[2].data.push([time, Math.floor(row.I.C.I1 * 100) / 100])
|
item.echartsData.series[2].data.push([time, Math.floor(row.I.C?.I1 * 100) / 100])
|
||||||
break
|
break
|
||||||
case '频率(Hz)':
|
case '频率(Hz)':
|
||||||
item.echartsData.series[0].data.push([time, Math.floor(row.V.T.FREQ * 100) / 100])
|
item.echartsData.series[0].data.push([time, Math.floor(row.V.T?.FREQ * 100) / 100])
|
||||||
item.echartsData.series[1].data.push([time, Math.floor(row.V.T.DELTA_FREQ * 100) / 100])
|
item.echartsData.series[1].data.push([time, Math.floor(row.V.T?.DELTA_FREQ * 100) / 100])
|
||||||
break
|
break
|
||||||
case '电压不平衡度(%)':
|
case '电压不平衡度(%)':
|
||||||
item.echartsData.series[0].data.push([time, Math.floor(row.V.T.V_UNBAN * 100) / 100])
|
item.echartsData.series[0].data.push([time, Math.floor(row.V.T?.V_UNBAN * 100) / 100])
|
||||||
|
|
||||||
break
|
break
|
||||||
case '电流不平衡度(%)':
|
case '电流不平衡度(%)':
|
||||||
item.echartsData.series[0].data.push([time, Math.floor(row.I.T.I_UNBAN * 100) / 100])
|
item.echartsData.series[0].data.push([time, Math.floor(row.I.T?.I_UNBAN * 100) / 100])
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
item.echartsData.series.forEach((item1: any) => {
|
item.echartsData.series.forEach((item1: any) => {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="default-main">
|
<div class="default-main">
|
||||||
|
|
||||||
<DatePicker ref="datePickerRef" theCurrentTime style="display: none" />
|
<DatePicker ref="datePickerRef" theCurrentTime style="display: none" />
|
||||||
<!-- 搜索框 -->
|
<!-- 搜索框 -->
|
||||||
<div class="query-box-wrap">
|
<div class="query-box-wrap">
|
||||||
@@ -100,7 +101,7 @@
|
|||||||
<!-- 行政区划 -->
|
<!-- 行政区划 -->
|
||||||
<div v-if='zoom <= 11'>
|
<div v-if='zoom <= 11'>
|
||||||
<div v-for="item in AreaData">
|
<div v-for="item in AreaData">
|
||||||
<bm-polygon v-for="timeK in item.boundary" :path="timeK" :strokeWeight="2" strokeColor="#fff"
|
<bm-polygon v-for="timeK in item.boundary" :path="timeK" :strokeWeight="2" strokeColor="#0e8780"
|
||||||
:strokeOpacity="1" :fillColor="item.background || ''" :fillOpacity="0.5"></bm-polygon>
|
:strokeOpacity="1" :fillColor="item.background || ''" :fillOpacity="0.5"></bm-polygon>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -171,7 +172,7 @@ const AreaData: any = ref([])
|
|||||||
const PopKey: any = ref(2)
|
const PopKey: any = ref(2)
|
||||||
const imgUrl0 = new URL('@/assets/img/BDZ-ZS.png', import.meta.url).href
|
const imgUrl0 = new URL('@/assets/img/BDZ-ZS.png', import.meta.url).href
|
||||||
const imgUrl1 = new URL('@/assets/img/ZD-ZS.png', import.meta.url).href
|
const imgUrl1 = new URL('@/assets/img/ZD-ZS.png', import.meta.url).href
|
||||||
const imgUrl2 = new URL('@/assets/img/JCD-ZS.png', import.meta.url).href
|
const imgUrl2 = new URL('@/assets/img/JCD-ZS.png', import.meta.url).hre
|
||||||
const boundaryList: any = ref([
|
const boundaryList: any = ref([
|
||||||
{
|
{
|
||||||
orgName: '唐山',
|
orgName: '唐山',
|
||||||
|
|||||||
Reference in New Issue
Block a user