2023-05-12 08:41:33 +00:00
|
|
|
<template>
|
|
|
|
<div>
|
|
|
|
<!-- <div class="topTip">
|
|
|
|
<toptip ref="toptip1"></toptip>
|
|
|
|
</div> -->
|
|
|
|
<div style="display: flex;">
|
|
|
|
<div style="width: 20%; height: 250px; margin-bottom: 10px; display: flex; align-items: center; justify-content: space-evenly;" v-for="item in store.newVerticalNum">
|
|
|
|
<verticalNumLoop :title="item.title" :icon="item.icon" :limit="item.limit" :unit="item.unit" :value="item.value"></verticalNumLoop>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div>
|
|
|
|
<el-row>
|
|
|
|
<el-col :span="6">
|
|
|
|
<pressure ref="perssure1" name="east" :title="t('messages.EastPumpPressure_Mpa')"></pressure>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="6">
|
|
|
|
<pressure ref="perssure2" name="west" :title="t('messages.WestPumpPressure_Mpa')"></pressure>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="12">
|
|
|
|
<pipe ref="pipe1" :title="t('messages.PipelinePressure_Mpa')"></pipe>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
|
import pressure from "./chart/pressure.vue"
|
|
|
|
import pipe from "./chart/pipe.vue"
|
|
|
|
// import toptip from "./chart/toptip.vue"
|
|
|
|
import {onMounted, reactive, ref, watch} from "vue"
|
|
|
|
import { calcWH } from "@/components/ts/selfAdaption";
|
|
|
|
import verticalNumLoop from './chart/verticalNumLoop.vue'
|
|
|
|
// import { getPressureData,getSafeWarningData } from "@/http/environment";
|
|
|
|
import { getPressureData,getSafeWarningData,getpipeData } from "@/http/realtimeSecurity";
|
|
|
|
import { useSocketStore } from "@/store/moduleSocket"
|
|
|
|
import {gettime,clacendTime} from "@/utils/time"
|
|
|
|
import { useI18n } from 'vue-i18n'
|
|
|
|
let {t} = useI18n();
|
|
|
|
const store = useSocketStore()
|
|
|
|
let props=defineProps<{
|
|
|
|
width:number,
|
|
|
|
height:number,
|
|
|
|
}>()
|
|
|
|
watch(()=>props,(newVal, oldVal)=>{
|
|
|
|
//监听父组件宽高变化,随时重置本组件尺寸
|
|
|
|
|
|
|
|
reset(newVal)
|
|
|
|
},{immediate:true,deep:true,flush:'post'})
|
|
|
|
|
|
|
|
// let toptip1=ref()
|
|
|
|
let perssure1=ref()
|
|
|
|
let perssure2=ref()
|
|
|
|
let pipe1=ref()
|
|
|
|
|
|
|
|
const verticalType = {
|
|
|
|
'TVOC': {icon: 'icon-TVOC-Outlined',title:t('messages.TVOCDetection'), unit: 'mg/m³'},
|
|
|
|
'Smoke': {icon: 'icon-yanwubaojingqi',title:t('messages.smokeDetection'), unit: "ppm"},
|
|
|
|
'Methane': {icon: 'icon-ranqi',title:t('messages.gasDetection'), unit: null},
|
|
|
|
'CH2O': {icon: 'icon-app_icons--',title:t('messages.CH2ODetection'), unit: 'mg/m³'},
|
|
|
|
'FIRE': {icon: 'icon-weibiaoti1',title:t('messages.flameDetection'), unit: null},
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function reset(val:any){
|
|
|
|
//宽高为0时跳出该方法
|
|
|
|
|
|
|
|
if(!val.width && !val.height) return
|
|
|
|
|
|
|
|
//重置盒子尺寸
|
|
|
|
PressureBox(val.width,val.height)
|
|
|
|
pipeBox(val.width,val.height)
|
|
|
|
verticalNumBox(val.width,val.height)
|
|
|
|
// toptip1.value.setchartWH()
|
|
|
|
}
|
|
|
|
const PressureBox=(width:any,height:any)=>{
|
|
|
|
let a=calcWH(height,width,3,4,0)
|
|
|
|
//修改高度
|
|
|
|
perssure1.value.setchartWH(a.oWidth-50,a.oHeight*2)
|
|
|
|
perssure2.value.setchartWH(a.oWidth-50,a.oHeight*2)
|
|
|
|
}
|
|
|
|
|
|
|
|
const pipeBox=(width:any,height:any)=>{
|
|
|
|
let a=calcWH(height,width,3,2,0)
|
|
|
|
//修改高度
|
2023-05-22 03:44:13 +00:00
|
|
|
// pipe1.value.setchartWH(a.oWidth-50,a.oHeight*2)
|
2023-05-12 08:41:33 +00:00
|
|
|
pipe1.value.setchartWH(a.oWidth-50,a.oHeight*2)
|
|
|
|
}
|
|
|
|
|
|
|
|
const verticalNumBox=(width:any,height:any)=>{
|
|
|
|
let a=calcWH(height,width,3,5,0)
|
|
|
|
a.oHeight=a.oHeight-40
|
|
|
|
}
|
|
|
|
|
|
|
|
watch(
|
|
|
|
() => store.Pressure,
|
|
|
|
(newVal, oldVal) => {
|
|
|
|
//动态更新echarts
|
|
|
|
//泵房气压
|
|
|
|
perssure1.value.setData(newVal.east,2)
|
|
|
|
perssure2.value.setData(newVal.west,2)
|
|
|
|
},
|
|
|
|
{ deep: true, flush: "post" }
|
|
|
|
);
|
|
|
|
async function getPressureDatafun(){
|
|
|
|
let result:any = await getPressureData()
|
|
|
|
|
|
|
|
if(result.code==200){
|
|
|
|
perssure1.value.setData(result.data.east,1)
|
|
|
|
perssure2.value.setData(result.data.west,1)
|
|
|
|
store.changePressure({east: result.data.east, west: result.data.west})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
let vertical= reactive([])
|
|
|
|
async function getSafeWarningDatafun(){
|
|
|
|
let result:any = await getSafeWarningData()
|
|
|
|
if(result.code==200){
|
|
|
|
let datetime = new Date().getTime();
|
|
|
|
let handle_vertical = result.data.map((item:any)=>{
|
|
|
|
item.value.forEach(element => {
|
|
|
|
|
|
|
|
if (element.val>item.limit) {
|
|
|
|
element.date = gettime(element.ts),
|
|
|
|
element.time = element.ts||datetime
|
2023-05-18 06:57:42 +00:00
|
|
|
element.continuous = clacendTime(datetime,element.ts||datetime)
|
2023-05-12 08:41:33 +00:00
|
|
|
} else {
|
|
|
|
element.date = null
|
|
|
|
element.time = null
|
|
|
|
element.continuous = null
|
|
|
|
}
|
|
|
|
});
|
|
|
|
return {
|
|
|
|
type:item.type,
|
|
|
|
icon:verticalType[item.type].icon,
|
|
|
|
title:verticalType[item.type].title,
|
|
|
|
limit:item.limit,
|
|
|
|
unit:verticalType[item.type].unit,
|
|
|
|
value:item.value
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
|
|
|
//console.log(result.data,'安全预警----------');
|
|
|
|
store.setNewVerticalNum(handle_vertical)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
watch(
|
|
|
|
() => store.pipe,
|
|
|
|
(newVal, oldVal) => {
|
|
|
|
//动态更新echarts
|
|
|
|
//泵房气压
|
|
|
|
pipe1.value.setData(newVal,2)
|
|
|
|
},
|
|
|
|
{ deep: true, flush: "post" }
|
|
|
|
);
|
|
|
|
async function getpipeDatafun(){
|
|
|
|
let result:any = await getpipeData({})
|
|
|
|
|
|
|
|
if(result.code==200){
|
|
|
|
//设置组件样式
|
|
|
|
pipe1.value.setData({listData:result.data.listData,top:result.data.top},1)
|
|
|
|
|
|
|
|
//将数据存入pinia
|
|
|
|
store.changePipe({listData:result.data.listData,top:result.data.top})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
onMounted(()=>{
|
|
|
|
getPressureDatafun()
|
|
|
|
getSafeWarningDatafun()
|
|
|
|
getpipeDatafun()
|
|
|
|
})
|
|
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<style scoped>
|
|
|
|
.topTip{
|
|
|
|
width:100%;
|
|
|
|
height:150px;
|
|
|
|
}
|
|
|
|
</style>
|