修改台账管理页面 优化实时数据
This commit is contained in:
@@ -4,7 +4,6 @@
|
||||
<div id="rmsp" :style="`height:${vh};overflow: hidden;`">
|
||||
<div class="bx" id="rms"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!-- <el-button
|
||||
style="position: absolute; right: 10px; top: 0px; z-index: 20000"
|
||||
@@ -86,7 +85,14 @@ export default {
|
||||
titles: "",
|
||||
vh: null,
|
||||
vw: null,
|
||||
echartlist: null
|
||||
echartlist: null,
|
||||
myChartess: null,
|
||||
myChartess1: null,
|
||||
myChartess2: null,
|
||||
myChartess3: null,
|
||||
myChartess4: null,
|
||||
myChartess5: null,
|
||||
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
@@ -123,20 +129,32 @@ export default {
|
||||
// this.$rms = $("#rms").eq(0);
|
||||
this.query();
|
||||
},
|
||||
beforeDestroy() {
|
||||
this.backbxlb()
|
||||
},
|
||||
methods: {
|
||||
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 = []
|
||||
this.echartlist.forEach(item => {
|
||||
item.dispose(); // 销毁echarts实例
|
||||
// if (this.echartlist.length > 0) {
|
||||
|
||||
// this.waveDatas = []
|
||||
// this.echartlist.forEach(item => {
|
||||
// item.dispose(); // 销毁echarts实例
|
||||
|
||||
|
||||
})
|
||||
// })
|
||||
|
||||
|
||||
}
|
||||
// }
|
||||
},
|
||||
download() {
|
||||
// 转换成canvas
|
||||
@@ -1182,7 +1200,8 @@ export default {
|
||||
myChartes.resize();
|
||||
this.loading = false;
|
||||
}, 500);
|
||||
this.echartlist.push(myChartes)
|
||||
// this.echartlist.push(myChartes)
|
||||
this.myChartess=myChartes
|
||||
//第一个波形图数据绘制完毕后,绘制后续的波形图
|
||||
if (waveDatas !== null && waveDatas.length > 1) {
|
||||
let waveDatasTemp = waveDatas.slice(1);
|
||||
@@ -1557,7 +1576,8 @@ export default {
|
||||
myChartes.resize();
|
||||
this.loading = false;
|
||||
}, 500);
|
||||
this.echartlist.push(myChartes)
|
||||
// this.echartlist.push(myChartes)
|
||||
this[`myChartess${step}`]=myChartes
|
||||
echarts.connect([myChartes1, myChartes]);
|
||||
},
|
||||
//根据多个值的比较返回其中最大值
|
||||
|
||||
@@ -72,7 +72,14 @@ export default {
|
||||
vh: null,
|
||||
vw: null,
|
||||
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() {
|
||||
@@ -110,20 +117,36 @@ export default {
|
||||
this.query()
|
||||
})
|
||||
},
|
||||
beforeDestroy() {
|
||||
this.backbxlb()
|
||||
},
|
||||
methods: {
|
||||
backbxlb() {
|
||||
|
||||
if (this.echartlist.length > 0) {
|
||||
console.log(123111);
|
||||
this.waveDatas = []
|
||||
this.echartlist.forEach(item => {
|
||||
item.dispose(); // 销毁echarts实例
|
||||
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; }
|
||||
|
||||
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() {
|
||||
// 转换成canvas
|
||||
@@ -241,7 +264,7 @@ export default {
|
||||
},
|
||||
//获取横向一个波形的全部数据,包括瞬时波形的一次、二次值,如果是电压的话,还需要计算出对应的最大最小值
|
||||
fliteWaveData(wp, step) {
|
||||
|
||||
|
||||
let shunData = wp.listWaveData
|
||||
let pt = Number(wp.pt) / 1000
|
||||
let ct = Number(wp.ct)
|
||||
@@ -413,7 +436,7 @@ export default {
|
||||
},
|
||||
//开始画图
|
||||
initWave(waveDatas, time, type, severity, isOpen) {
|
||||
this.echartlist = []
|
||||
|
||||
//清除之前增加的div
|
||||
// $("#wave ~ .bx1").remove();
|
||||
$('div.bx1').remove()
|
||||
@@ -814,7 +837,8 @@ export default {
|
||||
myChartes.resize()
|
||||
this.loading = false
|
||||
}, 400)
|
||||
this.echartlist.push(myChartes)
|
||||
// this.echartlist[0]=(myChartes)
|
||||
this.myChartess=myChartes
|
||||
|
||||
//第一个波形图数据绘制完毕后,绘制后续的波形图
|
||||
if (waveDatas !== null && waveDatas.length > 1) {
|
||||
@@ -1165,7 +1189,9 @@ export default {
|
||||
myChartes.resize()
|
||||
this.loading = false
|
||||
}, 400)
|
||||
this.echartlist.push(myChartes)
|
||||
// this.echartlist[step]=(myChartes)
|
||||
this[`myChartess${step}`]=myChartes
|
||||
|
||||
echarts.connect([myChartes1, myChartes])
|
||||
},
|
||||
//根据多个值的比较返回其中最大值
|
||||
|
||||
@@ -132,12 +132,13 @@ const open = async (row: any) => {
|
||||
})
|
||||
}
|
||||
const bxhandleClick = (tab: any) => {
|
||||
if (shushiboxiRef.value) shushiboxiRef.value.backbxlb()
|
||||
if (rmsboxiRef.value) rmsboxiRef.value.backbxlb()
|
||||
|
||||
loading.value = true
|
||||
if (tab.name == 'ssbx') {
|
||||
if (rmsboxiRef.value) rmsboxiRef.value.backbxlb()
|
||||
bxactiveName.value = 'ssbx'
|
||||
} else if (tab.name == 'rmsbx') {
|
||||
if (shushiboxiRef.value) shushiboxiRef.value.backbxlb()
|
||||
bxactiveName.value = 'rmsbx'
|
||||
}
|
||||
setTimeout(() => {
|
||||
@@ -173,6 +174,8 @@ const AdvancedAnalytics = () => {
|
||||
})
|
||||
}
|
||||
const changeView = () => {
|
||||
if (shushiboxiRef.value) shushiboxiRef.value.backbxlb()
|
||||
if (rmsboxiRef.value) rmsboxiRef.value.backbxlb()
|
||||
showBoxi.value = false
|
||||
setTimeout(() => {
|
||||
showBoxi.value = true
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
<!-- 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>
|
||||
</div>
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -5,8 +5,9 @@
|
||||
<div class="view_btn" v-if="time">
|
||||
<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="Download" @click="downloadTxt">下载数据</el-button>
|
||||
</div>
|
||||
<el-collapse v-model.trim="activeNames">
|
||||
<el-collapse v-model.trim="activeNames" @change="handleChange">
|
||||
<el-collapse-item title="基础数据" name="1">
|
||||
<div class="view_top">
|
||||
<!-- 左侧仪表盘 -->
|
||||
@@ -85,8 +86,8 @@
|
||||
</el-collapse-item>
|
||||
</el-collapse>
|
||||
|
||||
<div class="view_bot">
|
||||
<vxe-table border height="" :data="webMsgSend" :tooltip-config="{ enterable: true }">
|
||||
<div class="view_bot" :style="height">
|
||||
<vxe-table border :data="webMsgSend" :tooltip-config="{ enterable: true }">
|
||||
<vxe-colgroup align="center" title="电压有效值(kV)">
|
||||
<vxe-column
|
||||
align="center"
|
||||
@@ -139,7 +140,7 @@
|
||||
</vxe-colgroup>
|
||||
</vxe-table>
|
||||
<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"
|
||||
@@ -189,7 +190,7 @@
|
||||
</vxe-colgroup>
|
||||
</vxe-table>
|
||||
<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-column
|
||||
align="center"
|
||||
@@ -261,7 +262,7 @@
|
||||
</vxe-colgroup>
|
||||
</vxe-table>
|
||||
<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-column
|
||||
v-if="ptName == 'star'"
|
||||
@@ -339,11 +340,13 @@ import { useMonitoringPoint } from '@/stores/monitoringPoint'
|
||||
import { useDictData } from '@/stores/dictData'
|
||||
import { timeFormat } from '@/utils/common'
|
||||
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 trend from './trend.vue'
|
||||
import { getLineDetail } from '@/api/device-boot/communicate'
|
||||
import { mainHeight } from '@/utils/layout'
|
||||
// import { getRealTimeTableList } from '@/api/cs-device-boot/EquipmentDelivery'
|
||||
const height = ref(mainHeight(580))
|
||||
const monitoringPoint = useMonitoringPoint()
|
||||
const dictData = useDictData()
|
||||
const adminInfo = useAdminInfo()
|
||||
@@ -376,6 +379,10 @@ const echartsDataA3: any = ref({})
|
||||
const dataSocket = reactive({
|
||||
socketServe: socketClient.Instance
|
||||
})
|
||||
const handleChange = () => {
|
||||
height.value = mainHeight(activeNames.value.length == 0 ? 160 : 580)
|
||||
}
|
||||
const txtContent = ref('')
|
||||
//渲染中间相角图
|
||||
const initRadioCharts = () => {
|
||||
echartsData1.value = {
|
||||
@@ -470,8 +477,9 @@ const initRadioCharts = () => {
|
||||
|
||||
// 指针设置
|
||||
pointer: {
|
||||
length: '80%',
|
||||
width: 4,
|
||||
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%',
|
||||
width: 15,
|
||||
opacity: 1
|
||||
},
|
||||
detail: {
|
||||
@@ -574,9 +582,10 @@ const initRadioCharts = () => {
|
||||
|
||||
// 指针设置
|
||||
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%',
|
||||
width: 6,
|
||||
opacity: 0.5
|
||||
width: 15,
|
||||
opacity: 1
|
||||
},
|
||||
detail: {
|
||||
show: false
|
||||
@@ -749,62 +758,62 @@ const init = () => {
|
||||
let pids = monitoringPoint.state.pid.split(',')
|
||||
dataSocket.socketServe.connect(`${adminInfo.id},${monitoringPoint.state.lineId},${pids[pids.length - 2]}`)
|
||||
dataSocket.socketServe.registerCallBack('message', (res: any) => {
|
||||
txtContent.value = res.value
|
||||
let data = JSON.parse(res.value)
|
||||
// console.log('🚀 ~ dataSocket.socketServe.registerCallBack ~ data:', data)
|
||||
time.value = data.TIME - 0
|
||||
webMsgSend.value = [
|
||||
{
|
||||
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相电压
|
||||
vRmsC: ptName.value == 'star' ? data.V.C.VRMS : data.V.C.VRMS_LVR, //C相电压
|
||||
iRmsA: data.I.A.IRMS, //A相电流
|
||||
iRmsB: data.I.B.IRMS, //B相电流
|
||||
iRmsC: data.I.C.IRMS, //C相电流
|
||||
v1AngA: data.V.A.V_ANGLE, //A相基波电压相位
|
||||
v1AngB: data.V.B.V_ANGLE, //B相基波电压相位
|
||||
v1AngC: data.V.C.V_ANGLE, //C相基波电压相位
|
||||
i1AngA: data.I.A.I_ANGLE, //A相基波电流相位
|
||||
i1AngB: data.I.A.I_ANGLE, //B相基波电流相位
|
||||
i1AngC: data.I.A.I_ANGLE, //C相基波电流相位
|
||||
freq: data.V.T.FREQ, //频率
|
||||
freqDev: data.V.T.DELTA_FREQ, //频率偏差
|
||||
vUnbalance: data.V.T.V_UNBAN, //电压不平衡度
|
||||
iUnbalance: data.I.T.I_UNBAN, //电流不平衡度
|
||||
v1A: data.V.A.V1, //A相基波电压相位
|
||||
v1B: data.V.B.V1, //A相基波电压相位
|
||||
v1C: data.V.C.V1, //A相基波电压相位
|
||||
i1A: data.I.A.I1, //A相基波电流相位
|
||||
i1B: data.I.B.I1, //A相基波电流相位
|
||||
i1C: data.I.C.I1, //A相基波电流相位
|
||||
vDevA: data.V.A.DELTA_V, //A相电压偏差
|
||||
vDevB: data.V.B.DELTA_V, //B相电压偏差
|
||||
vDevC: data.V.C.DELTA_V, //C相电压偏差
|
||||
vThdA: data.V.A.VTHD, //A相电压总谐波畸变率
|
||||
vThdB: data.V.B.VTHD, //B相电压总谐波畸变率
|
||||
vThdC: data.V.C.VTHD, //C相电压总谐波畸变率
|
||||
iThdA: data.I.A.ITHD, //A相电流总谐波畸变率
|
||||
iThdB: data.I.B.ITHD, //B相电流总谐波畸变率
|
||||
iThdC: data.I.C.ITHD, //C相电流总谐波畸变率
|
||||
pA: data.PQ.A.P, //A相有功功率
|
||||
pB: data.PQ.B.P, //B相有功功率
|
||||
pC: data.PQ.C.P, //C相有功功率
|
||||
pTot: data.PQ.T.P, //总有功功率
|
||||
qA: data.PQ.A.Q, //A相无功功率
|
||||
qB: data.PQ.B.Q, //B相无功功率
|
||||
qC: data.PQ.C.Q, //C相无功功率
|
||||
qTot: data.PQ.T.Q, //总无功功率
|
||||
sA: data.PQ.A.S, //A相视在功率
|
||||
sB: data.PQ.B.S, //B相视在功率
|
||||
sC: data.PQ.C.S, //C相视在功率
|
||||
sTot: data.PQ.T.S, //总视在功率
|
||||
pfA: data.PQ.A.PF, //A相功率因数
|
||||
pfB: data.PQ.B.PF, //B相功率因数
|
||||
pfC: data.PQ.C.PF, //C相功率因数
|
||||
pfTot: data.PQ.T.PF, //总功率因数
|
||||
dpfA: data.PQ.A.DF, //A相基波功率因数
|
||||
dpfB: data.PQ.B.DF, //B相基波功率因数
|
||||
dpfC: data.PQ.C.DF, //C相基波功率因数
|
||||
dpfTot: data.PQ.T.DF //总基波功率因数
|
||||
iRmsA: data.I.A?.IRMS, //A相电流
|
||||
iRmsB: data.I.B?.IRMS, //B相电流
|
||||
iRmsC: data.I.C?.IRMS, //C相电流
|
||||
v1AngA: data.V.A?.VFUND_ANGLE, //A相基波电压相位
|
||||
v1AngB: data.V.B?.VFUND_ANGLE, //B相基波电压相位
|
||||
v1AngC: data.V.C?.VFUND_ANGLE, //C相基波电压相位
|
||||
i1AngA: data.I.A?.I_ANGLE, //A相基波电流相位
|
||||
i1AngB: data.I.B?.I_ANGLE, //B相基波电流相位
|
||||
i1AngC: data.I.C?.I_ANGLE, //C相基波电流相位
|
||||
freq: data.V.T?.FREQ, //频率
|
||||
freqDev: data.V.T?.DELTA_FREQ, //频率偏差
|
||||
vUnbalance: data.V.T?.V_UNBAN, //电压不平衡度
|
||||
iUnbalance: data.I.T?.I_UNBAN, //电流不平衡度
|
||||
v1A: data.V.A?.V1, //A相基波电压幅值
|
||||
v1B: data.V.B?.V1, //A相基波电压幅值
|
||||
v1C: data.V.C?.V1, //A相基波电压幅值
|
||||
i1A: data.I.A?.I1, //A相基波电流相位
|
||||
i1B: data.I.B?.I1, //A相基波电流相位
|
||||
i1C: data.I.C?.I1, //A相基波电流相位
|
||||
vDevA: data.V.A?.DELTA_V, //A相电压偏差
|
||||
vDevB: data.V.B?.DELTA_V, //B相电压偏差
|
||||
vDevC: data.V.C?.DELTA_V, //C相电压偏差
|
||||
vThdA: data.V.A?.VTHD, //A相电压总谐波畸变率
|
||||
vThdB: data.V.B?.VTHD, //B相电压总谐波畸变率
|
||||
vThdC: data.V.C?.VTHD, //C相电压总谐波畸变率
|
||||
iThdA: data.I.A?.ITHD, //A相电流总谐波畸变率
|
||||
iThdB: data.I.B?.ITHD, //B相电流总谐波畸变率
|
||||
iThdC: data.I.C?.ITHD, //C相电流总谐波畸变率
|
||||
pA: data.PQ.A?.P, //A相有功功率
|
||||
pB: data.PQ.B?.P, //B相有功功率
|
||||
pC: data.PQ.C?.P, //C相有功功率
|
||||
pTot: data.PQ.T?.P, //总有功功率
|
||||
qA: data.PQ.A?.Q, //A相无功功率
|
||||
qB: data.PQ.B?.Q, //B相无功功率
|
||||
qC: data.PQ.C?.Q, //C相无功功率
|
||||
qTot: data.PQ.T?.Q, //总无功功率
|
||||
sA: data.PQ.A?.S, //A相视在功率
|
||||
sB: data.PQ.B?.S, //B相视在功率
|
||||
sC: data.PQ.C?.S, //C相视在功率
|
||||
sTot: data.PQ.T?.S, //总视在功率
|
||||
pfA: data.PQ.A?.PF, //A相功率因数
|
||||
pfB: data.PQ.B?.PF, //B相功率因数
|
||||
pfC: data.PQ.C?.PF, //C相功率因数
|
||||
pfTot: data.PQ.T?.PF, //总功率因数
|
||||
dpfA: data.PQ.A?.DF, //A相基波功率因数
|
||||
dpfB: data.PQ.B?.DF, //B相基波功率因数
|
||||
dpfC: data.PQ.C?.DF, //C相基波功率因数
|
||||
dpfTot: data.PQ.T?.DF //总基波功率因数
|
||||
}
|
||||
]
|
||||
spectrumRef.value?.init(data)
|
||||
@@ -814,12 +823,27 @@ const init = () => {
|
||||
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数据
|
||||
|
||||
const loading = ref(false)
|
||||
|
||||
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([])
|
||||
|
||||
@@ -127,13 +127,17 @@ const init = (row: any) => {
|
||||
let SvData: any = {}
|
||||
for (let i = 1; i < 50; i++) {
|
||||
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}`] =
|
||||
Math.floor(Math.max(...[row.V.A[`SV_` + i], row.V.B[`SV_` + i], row.V.C[`SV_` + i]].map(Number)) * 100) /
|
||||
100
|
||||
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`] =
|
||||
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
|
||||
|
||||
barCharts.value[activeName.value]?.setOptions({
|
||||
title: {
|
||||
text: tabsList.value[activeName.value].groupName
|
||||
},
|
||||
xAxis: {
|
||||
data: xData.map(num => `${num}次`)
|
||||
},
|
||||
@@ -182,7 +189,7 @@ const init = (row: any) => {
|
||||
const echarts = (num: number) => {
|
||||
return {
|
||||
title: {
|
||||
text: tabsList.value[num].groupName
|
||||
text: ''
|
||||
},
|
||||
xAxis: {
|
||||
name: tabsList.value[num].unit,
|
||||
|
||||
@@ -190,64 +190,64 @@ const init = (row: any) => {
|
||||
case '电压总有效值(kV)':
|
||||
item.echartsData.series[0].data.push([
|
||||
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([
|
||||
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([
|
||||
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
|
||||
case '电流总有效值(A)':
|
||||
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[2].data.push([time, Math.floor(row.I.C.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[2].data.push([time, Math.floor(row.I.C?.IRMS * 100) / 100])
|
||||
break
|
||||
case '有功功率(kW)':
|
||||
if (props.ptName == 'star') {
|
||||
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[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[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[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])
|
||||
} 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
|
||||
case '无功功率(kW)':
|
||||
if (props.ptName == 'star') {
|
||||
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[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[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[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])
|
||||
} 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
|
||||
case '基波电压总有效值(kV)':
|
||||
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[2].data.push([time, Math.floor(row.V.C.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[2].data.push([time, Math.floor(row.V.C?.V1 * 100) / 100])
|
||||
break
|
||||
case '基波电流总有效值(A)':
|
||||
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[2].data.push([time, Math.floor(row.I.C.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[2].data.push([time, Math.floor(row.I.C?.I1 * 100) / 100])
|
||||
break
|
||||
case '频率(Hz)':
|
||||
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[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])
|
||||
break
|
||||
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
|
||||
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
|
||||
}
|
||||
item.echartsData.series.forEach((item1: any) => {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<template>
|
||||
<div class="default-main">
|
||||
|
||||
<DatePicker ref="datePickerRef" theCurrentTime style="display: none" />
|
||||
<!-- 搜索框 -->
|
||||
<div class="query-box-wrap">
|
||||
@@ -100,7 +101,7 @@
|
||||
<!-- 行政区划 -->
|
||||
<div v-if='zoom <= 11'>
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
@@ -171,7 +172,7 @@ const AreaData: any = ref([])
|
||||
const PopKey: any = ref(2)
|
||||
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 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([
|
||||
{
|
||||
orgName: '唐山',
|
||||
|
||||
Reference in New Issue
Block a user