|
@@ -0,0 +1,464 @@
|
|
|
+<template>
|
|
|
+ <div class="external-mb">
|
|
|
+ <div class="title-b">采空区密闭参数</div>
|
|
|
+ <div class="card-btn">
|
|
|
+ <div :class="activeIndex == 0 ? 'content-box1' : 'content-box'" @click="btnClick({ label: 'O₂', dw: '(%)' }, 0)">
|
|
|
+ <div class="btn-label">
|
|
|
+ <span>O₂</span>
|
|
|
+ <span>(%)</span>
|
|
|
+ </div>
|
|
|
+ <div class="box-item box-item1">
|
|
|
+ <span class="text-t">浓度:</span>
|
|
|
+ <span class="text-v">{{ mbData.o2 }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="box-item box-item2">
|
|
|
+ <span class="text-t">时间:</span>
|
|
|
+ <span class="text-v">{{ mbData.o2time }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="box-item box-item3">
|
|
|
+ <span class="text-t">位置:</span>
|
|
|
+ <span class="text-v">{{ mbData.o2address }}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div :class="activeIndex == 1 ? 'content-box1' : 'content-box'" @click="btnClick({ label: 'CO', dw: '(ppm)' }, 1)">
|
|
|
+ <div class="btn-label">
|
|
|
+ <span>CO</span>
|
|
|
+ <span>(ppm)</span>
|
|
|
+ </div>
|
|
|
+ <div class="box-item box-item1">
|
|
|
+ <span class="text-t">浓度:</span>
|
|
|
+ <span class="text-v">{{ mbData.co }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="box-item box-item2">
|
|
|
+ <span class="text-t">时间:</span>
|
|
|
+ <span class="text-v">{{ mbData.cotime }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="box-item box-item3">
|
|
|
+ <span class="text-t">位置:</span>
|
|
|
+ <span class="text-v">{{ mbData.coaddress }}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div :class="activeIndex == 2 ? 'content-box1' : 'content-box'" @click="btnClick({ label: 'CO₂', dw: '(%)' }, 2)">
|
|
|
+ <div class="btn-label">
|
|
|
+ <span>CO₂</span>
|
|
|
+ <span>(%)</span>
|
|
|
+ </div>
|
|
|
+ <div class="box-item box-item1">
|
|
|
+ <span class="text-t">浓度:</span>
|
|
|
+ <span class="text-v">{{ mbData.co2 }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="box-item box-item2">
|
|
|
+ <span class="text-t">时间:</span>
|
|
|
+ <span class="text-v">{{ mbData.co2time }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="box-item box-item3">
|
|
|
+ <span class="text-t">位置:</span>
|
|
|
+ <span class="text-v">{{ mbData.co2address }}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div :class="activeIndex == 3 ? 'content-box1' : 'content-box'" @click="btnClick({ label: 'CH₄', dw: '(%)' }, 3)">
|
|
|
+ <div class="btn-label">
|
|
|
+ <span>CH₄</span>
|
|
|
+ <span>(%)</span>
|
|
|
+ </div>
|
|
|
+ <div class="box-item box-item1">
|
|
|
+ <span class="text-t">浓度:</span>
|
|
|
+ <span class="text-v">{{ mbData.ch4 }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="box-item box-item2">
|
|
|
+ <span class="text-t">时间:</span>
|
|
|
+ <span class="text-v">{{ mbData.ch4time }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="box-item box-item3">
|
|
|
+ <span class="text-t">位置:</span>
|
|
|
+ <span class="text-v">{{ mbData.ch4address }}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div :class="activeIndex == 4 ? 'content-box1' : 'content-box'" @click="btnClick({ label: 'C₂H₂', dw: '(ppm)' }, 4)">
|
|
|
+ <div class="btn-label">
|
|
|
+ <span>C₂H₂</span>
|
|
|
+ <span>(ppm)</span>
|
|
|
+ </div>
|
|
|
+ <div class="box-item box-item1">
|
|
|
+ <span class="text-t">浓度:</span>
|
|
|
+ <span class="text-v">{{ mbData.c2h2 }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="box-item box-item2">
|
|
|
+ <span class="text-t">时间:</span>
|
|
|
+ <span class="text-v">{{ mbData.c2h2time }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="box-item box-item3">
|
|
|
+ <span class="text-t">位置:</span>
|
|
|
+ <span class="text-v">{{ mbData.c2h2address }}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div :class="activeIndex == 5 ? 'content-box1' : 'content-box'" @click="btnClick({ label: 'C₂H₄', dw: '(ppm)' }, 5)">
|
|
|
+ <div class="btn-label">
|
|
|
+ <span>C₂H₄</span>
|
|
|
+ <span>(ppm)</span>
|
|
|
+ </div>
|
|
|
+ <div class="box-item box-item1">
|
|
|
+ <span class="text-t">浓度:</span>
|
|
|
+ <span class="text-v">{{ mbData.c2h4 }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="box-item box-item2">
|
|
|
+ <span class="text-t">时间:</span>
|
|
|
+ <span class="text-v">{{ mbData.c2h4time }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="box-item box-item3">
|
|
|
+ <span class="text-t">位置:</span>
|
|
|
+ <span class="text-v">{{ mbData.c2h4address }}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="echart-box">
|
|
|
+ <div class="title-f">
|
|
|
+ <div class="title-text">
|
|
|
+ {{ `${type}趋势` }} <span style="color: red">{{ netStatus != 1 ? '(设备未连接)' : '' }}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="echarts-box">
|
|
|
+ <echartLine1 :echartDataSg="echartDataSg1" :lengedDataName="echartDataSg1.lengedDataName" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script setup lang="ts">
|
|
|
+import { ref, reactive, watch } from 'vue'
|
|
|
+import echartLine1 from './echartLine1.vue';
|
|
|
+
|
|
|
+let props = defineProps({
|
|
|
+ externalTSgData: {
|
|
|
+ type: Array,
|
|
|
+ default: () => {
|
|
|
+ return []
|
|
|
+ }
|
|
|
+ },
|
|
|
+ selectData:{
|
|
|
+ type:String,
|
|
|
+ default:'',
|
|
|
+ },
|
|
|
+ warnLevel:{
|
|
|
+ type:String,
|
|
|
+ default:''
|
|
|
+ }
|
|
|
+})
|
|
|
+
|
|
|
+//束管监测当前密闭参数激活选项
|
|
|
+let activeIndex = ref(0);
|
|
|
+let bundletube = ref<any[]>([])
|
|
|
+//束管监测密闭参数列表
|
|
|
+let mbData = reactive({
|
|
|
+ o2: '',
|
|
|
+ o2time: '',
|
|
|
+ o2address: '',
|
|
|
+ co: '',
|
|
|
+ cotime: '',
|
|
|
+ coaddress: '',
|
|
|
+ co2: '',
|
|
|
+ co2time: '',
|
|
|
+ co2address: '',
|
|
|
+ ch4: '',
|
|
|
+ ch4time: '',
|
|
|
+ ch4address: '',
|
|
|
+ c2h2: '',
|
|
|
+ c2h2time: '',
|
|
|
+ c2h2address: '',
|
|
|
+ c2h4: '',
|
|
|
+ c2h4time: '',
|
|
|
+ c2h4address: ''
|
|
|
+})
|
|
|
+//束管监测当前激活密闭参数类型
|
|
|
+let type = ref('O₂');
|
|
|
+let echartDataSg1 = reactive({
|
|
|
+ xData: [],
|
|
|
+ yData: [],
|
|
|
+ lengedData: 'O₂',
|
|
|
+ lengedDataName: '(%)',
|
|
|
+});
|
|
|
+let echartDataSgList = ref<any[]>([]);
|
|
|
+ let netStatus = ref(0);
|
|
|
+
|
|
|
+//束管监测密闭参数选项切换
|
|
|
+function btnClick(item, ind) {
|
|
|
+ activeIndex.value = ind;
|
|
|
+ type.value = item.label;
|
|
|
+ echartDataSg1.xData.length = 0;
|
|
|
+ echartDataSg1.yData.length = 0;
|
|
|
+ echartDataSg1.lengedData = type.value;
|
|
|
+ echartDataSg1.lengedDataName = item.dw;
|
|
|
+
|
|
|
+ switch (type.value) {
|
|
|
+ case 'O₂':
|
|
|
+ echartDataSgList.value.forEach((el) => {
|
|
|
+ echartDataSg1.xData.push(el.time);
|
|
|
+ echartDataSg1.yData.push(el.o2val);
|
|
|
+ });
|
|
|
+ break;
|
|
|
+ case 'C₂H₄':
|
|
|
+ echartDataSgList.value.forEach((el) => {
|
|
|
+ echartDataSg1.xData.push(el.time);
|
|
|
+ echartDataSg1.yData.push(el.ch2val);
|
|
|
+ });
|
|
|
+ break;
|
|
|
+ case 'CO':
|
|
|
+ echartDataSgList.value.forEach((el) => {
|
|
|
+ echartDataSg1.xData.push(el.time);
|
|
|
+ echartDataSg1.yData.push(el.coval);
|
|
|
+ });
|
|
|
+ break;
|
|
|
+ case 'CH₄':
|
|
|
+ echartDataSgList.value.forEach((el) => {
|
|
|
+ echartDataSg1.xData.push(el.time);
|
|
|
+ echartDataSg1.yData.push(el.gasval);
|
|
|
+ });
|
|
|
+ break;
|
|
|
+ case 'CO₂':
|
|
|
+ echartDataSgList.value.forEach((el) => {
|
|
|
+ echartDataSg1.xData.push(el.time);
|
|
|
+ echartDataSg1.yData.push(el.co2val);
|
|
|
+ });
|
|
|
+ break;
|
|
|
+ case 'C₂H₂':
|
|
|
+ echartDataSgList.value.forEach((el) => {
|
|
|
+ echartDataSg1.xData.push(el.time);
|
|
|
+ echartDataSg1.yData.push(el.chval);
|
|
|
+ });
|
|
|
+ break;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+watch(() => props.externalTSgData, (newV, oldV) => {
|
|
|
+ echartDataSg1.xData.length = 0;
|
|
|
+ echartDataSg1.yData.length = 0;
|
|
|
+ if (newV.length != 0 && props.selectData) {
|
|
|
+ bundletube.value = newV
|
|
|
+ let dataVal =bundletube.value.filter((v) => v.strinstallpos == props.selectData)[0]
|
|
|
+ let times = dataVal.readTime.substring(0, dataVal.readTime.lastIndexOf(':')) || '--';
|
|
|
+ let address = dataVal.strinstallpos || '--';
|
|
|
+ mbData.o2 = dataVal.readData.o2val || '--';
|
|
|
+ mbData.o2time = times
|
|
|
+ mbData.o2address = address
|
|
|
+ mbData.co = dataVal.readData.coval || '--';
|
|
|
+ mbData.cotime = times
|
|
|
+ mbData.coaddress = address;
|
|
|
+ mbData.co2 = dataVal.readData.co2val || '--';
|
|
|
+ mbData.co2time = times
|
|
|
+ mbData.co2address = address;
|
|
|
+ mbData.ch4 = dataVal.readData.gasval || '--';
|
|
|
+ mbData.ch4time =times
|
|
|
+ mbData.ch4address = address;
|
|
|
+ mbData.c2h2 = dataVal.readData.chval || '--';
|
|
|
+ mbData.c2h2time = times
|
|
|
+ mbData.c2h2address = address;
|
|
|
+ mbData.c2h4 = dataVal.readData.ch2val || '--';
|
|
|
+ mbData.c2h4time = times
|
|
|
+ mbData.c2h4address = address;
|
|
|
+
|
|
|
+ echartDataSgList.value = dataVal.history;
|
|
|
+ netStatus.value = dataVal['netStatus'];
|
|
|
+ btnClick(
|
|
|
+ {
|
|
|
+ label: type.value,
|
|
|
+ dw: echartDataSg1.lengedDataName,
|
|
|
+ },
|
|
|
+ activeIndex.value
|
|
|
+ );
|
|
|
+ }
|
|
|
+}, { immediate: true })
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="less" scoped>
|
|
|
+@import '/@/design/theme.less';
|
|
|
+
|
|
|
+@{theme-deepblue} {
|
|
|
+ .external-mb {
|
|
|
+ --image-bj1: url('/@/assets/images/themify/deepblue/fire/bj1.png');
|
|
|
+ --image-max: url('/@/assets/images/themify/deepblue/fire/max.svg');
|
|
|
+ --image-min: url('/@/assets/images/themify/deepblue/fire/min.svg');
|
|
|
+ --image-pj: url('/@/assets/images/themify/deepblue/fire/pj.svg');
|
|
|
+ --image-1: url('/@/assets/images/themify/deepblue/fire/1.png');
|
|
|
+ --image-contetn: url('/@/assets/images/themify/deepblue/fire/contetn.png');
|
|
|
+ --image-2: url('/@/assets/images/themify/deepblue/fire/2.png');
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.external-mb {
|
|
|
+ --image-zwnr: url('/@/assets/images/fire/wy-zwnr.png');
|
|
|
+ --image-z: url('/@/assets/images/fire/wy-z.png');
|
|
|
+ --image-zt: url('/@/assets/images/fire/wy-zt.png');
|
|
|
+ --image-zt1: url('/@/assets/images/fire/wy-zt2.png');
|
|
|
+ --image-time: url('/@/assets/images/fire/wy-time.png');
|
|
|
+ --image-time1: url('/@/assets/images/fire/wy-time2.png');
|
|
|
+ --image-title: url('/@/assets/images/fire/wy-title.png');
|
|
|
+ --image-bj2: url('/@/assets/images/fire/wy-bj.png');
|
|
|
+ --image-max: url('/@/assets/images/fire/max.svg');
|
|
|
+ --image-min: url('/@/assets/images/fire/min.svg');
|
|
|
+ --image-pj: url('/@/assets/images/fire/pj.svg');
|
|
|
+ --image-1: url('/@/assets/images/fire/1.png');
|
|
|
+ --image-contetn: url('/@/assets/images/fire/contetn.png');
|
|
|
+ --image-2: url('/@/assets/images/fire/2.png');
|
|
|
+ --border-image-2: linear-gradient(to bottom, transparent, #024688, transparent);
|
|
|
+ position: relative;
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+
|
|
|
+ .title-b {
|
|
|
+ height: 30px;
|
|
|
+ line-height: 30px;
|
|
|
+ font-family: 'douyuFont';
|
|
|
+ font-size: 14px;
|
|
|
+ color: #fff;
|
|
|
+ }
|
|
|
+
|
|
|
+ .card-btn {
|
|
|
+ height: 28%;
|
|
|
+ margin-bottom: 10px;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+
|
|
|
+ .content-box {
|
|
|
+ position: relative;
|
|
|
+ width: 16%;
|
|
|
+ height: 100%;
|
|
|
+ background: var(--image-1) no-repeat center;
|
|
|
+ background-size: 100% 100%;
|
|
|
+ cursor: pointer;
|
|
|
+
|
|
|
+ .btn-label {
|
|
|
+ position: absolute;
|
|
|
+ left: 50%;
|
|
|
+ top: 0;
|
|
|
+ transform: translate(-50%);
|
|
|
+ font-size: 16px;
|
|
|
+ color: #fff;
|
|
|
+ }
|
|
|
+
|
|
|
+ .box-item {
|
|
|
+ position: absolute;
|
|
|
+ left: 50%;
|
|
|
+ transform: translate(-50%, 0);
|
|
|
+ width: 89%;
|
|
|
+ height: 16%;
|
|
|
+ padding: 0px 10px;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ background: var(--image-contetn) no-repeat center;
|
|
|
+ background-size: 100% 100%;
|
|
|
+
|
|
|
+ .text-t {
|
|
|
+ width: 17%;
|
|
|
+ color: #fff;
|
|
|
+ font-size: 12px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .text-v {
|
|
|
+ width: 83%;
|
|
|
+ font-family: 'douyuFont';
|
|
|
+ font-size: 10px;
|
|
|
+ color: var(--vent-table-action-link);
|
|
|
+ display: flex;
|
|
|
+ justify-content: flex-end;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .box-item1 {
|
|
|
+ top: 24%;
|
|
|
+ }
|
|
|
+
|
|
|
+ .box-item2 {
|
|
|
+ top: 50%;
|
|
|
+ }
|
|
|
+
|
|
|
+ .box-item3 {
|
|
|
+ top: 75%;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .content-box1 {
|
|
|
+ position: relative;
|
|
|
+ width: 16%;
|
|
|
+ height: 100%;
|
|
|
+ background: var(--image-2) no-repeat center;
|
|
|
+ background-size: 100% 100%;
|
|
|
+ cursor: pointer;
|
|
|
+
|
|
|
+ .btn-label {
|
|
|
+ position: absolute;
|
|
|
+ left: 50%;
|
|
|
+ top: 0;
|
|
|
+ transform: translate(-50%);
|
|
|
+ font-size: 16px;
|
|
|
+ color: #fff;
|
|
|
+ }
|
|
|
+
|
|
|
+ .box-item {
|
|
|
+ position: absolute;
|
|
|
+ left: 50%;
|
|
|
+ transform: translate(-50%, 0);
|
|
|
+ width: 89%;
|
|
|
+ height: 16%;
|
|
|
+ padding: 0px 10px;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ background: var(--image-contetn) no-repeat center;
|
|
|
+ background-size: 100% 100%;
|
|
|
+
|
|
|
+ .text-t {
|
|
|
+ width: 17%;
|
|
|
+ color: #fff;
|
|
|
+ font-size: 12px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .text-v {
|
|
|
+ width: 83%;
|
|
|
+ font-family: 'douyuFont';
|
|
|
+ font-size: 10px;
|
|
|
+ color: var(--vent-table-action-link);
|
|
|
+ display: flex;
|
|
|
+ justify-content: flex-end;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .box-item1 {
|
|
|
+ top: 19%;
|
|
|
+ }
|
|
|
+
|
|
|
+ .box-item2 {
|
|
|
+ top: 41%;
|
|
|
+ }
|
|
|
+
|
|
|
+ .box-item3 {
|
|
|
+ top: 63%;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .echart-box {
|
|
|
+ height: calc(72% - 41px);
|
|
|
+ border: 1px solid #114aac;
|
|
|
+
|
|
|
+ .title-f {
|
|
|
+ height: 40px;
|
|
|
+ padding: 0px 10px;
|
|
|
+ box-sizing: border-box;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+
|
|
|
+ .title-text {
|
|
|
+ font-family: 'douyuFont';
|
|
|
+ font-size: 14px;
|
|
|
+ color: #fff;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .echarts-box {
|
|
|
+ height: calc(100% - 40px);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|