|
@@ -1,238 +1,14 @@
|
|
|
<template>
|
|
<template>
|
|
|
- <div class="bg" style="width: 100%; height: 100%; display: flex; justify-content: center; align-items: center; overflow: hidden">
|
|
|
|
|
- <!-- <a-spin :spinning="loading" /> -->
|
|
|
|
|
- <div
|
|
|
|
|
- id="main3DCSS"
|
|
|
|
|
- class="threejs-Object-CSS"
|
|
|
|
|
- style="width: 100%; height: 100%; position: absolute; pointer-events: none; overflow: hidden; z-index: 1; top: 0"
|
|
|
|
|
- >
|
|
|
|
|
- <div style="position: relative" v-if="selectData['modalTyoe']">
|
|
|
|
|
- <div class="elementTag" id="inputBox1" v-if="backMonitorIsShow && false">
|
|
|
|
|
- <div class="elementContent elementContent-r">
|
|
|
|
|
- <!-- <div class="element-item"><span class="data-title">风机气压(Pa):</span><span>{{ selectData.DataPa ? selectData.DataPa : '-' }}</span></div> -->
|
|
|
|
|
- <div class="element-item"
|
|
|
|
|
- ><span class="data-title">风机负压(Pa):</span><span>{{ selectData.Fan2FanPre ? selectData.Fan2FanPre : '-' }}</span></div
|
|
|
|
|
- >
|
|
|
|
|
- <div class="element-item"
|
|
|
|
|
- ><span class="data-title">风机风量(m³/s):</span><span>{{ selectData.Fan2m3 ? selectData.Fan2m3 : '-' }}</span></div
|
|
|
|
|
- >
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="elementTag" id="inputBox" v-if="frontMonitorIsShow && false">
|
|
|
|
|
- <div class="elementContent elementContent-r">
|
|
|
|
|
- <!-- <div class="element-item"><span class="data-title">风机全压(Pa):</span><span>{{ selectData.DataPa ? selectData.DataPa : '-' }}</span></div> -->
|
|
|
|
|
- <div class="element-item"
|
|
|
|
|
- ><span class="data-title">风机负压(Pa):</span><span>{{ selectData.Fan1FanPre ? selectData.Fan1FanPre : '-' }}</span></div
|
|
|
|
|
- >
|
|
|
|
|
- <div class="element-item"
|
|
|
|
|
- ><span class="data-title">风机风量(m³/s):</span><span>{{ selectData.Fan1m3 ? selectData.Fan1m3 : '-' }}</span></div
|
|
|
|
|
- >
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="elementTag" id="inputBox2" v-if="centerMonitorIsShow && false">
|
|
|
|
|
- <div class="elementContent elementContent-r">
|
|
|
|
|
- <!-- <div class="element-item"><span class="data-title">风机气压(Pa):</span><span>{{ selectData.DataPa ? selectData.DataPa : '-' }}</span></div> -->
|
|
|
|
|
- <div class="element-item"
|
|
|
|
|
- ><span class="data-title">风机负压(Pa):</span><span>{{ selectData.Fan3FanPre ? selectData.Fan3FanPre : '-' }}</span></div
|
|
|
|
|
- >
|
|
|
|
|
- <div class="element-item"
|
|
|
|
|
- ><span class="data-title">风机风量(m³/s):</span><span>{{ selectData.Fan3m3 ? selectData.Fan3m3 : '-' }}</span></div
|
|
|
|
|
- >
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <!-- 18模拟反风锁井 -->
|
|
|
|
|
- <!-- <div v-if="hasPermission('mainFan:ffsjMonitor')" class="elementTag" id="fbm">
|
|
|
|
|
- <div class="elementContent elementContent-r fbm-box">
|
|
|
|
|
- <div class="fbm-video">
|
|
|
|
|
- <LivePlayer id="main-player2" ref="player2" :videoUrl="flvURL2()" muted live />
|
|
|
|
|
- <div class="vent-flex-row-between vent-margin-t-20">
|
|
|
|
|
- <span class="data-title">风门开启状态:</span>
|
|
|
|
|
- <template v-if="selectData['ExplosionVentOpen'] == 1 && selectData['ExplosionVentClose'] == 0">
|
|
|
|
|
- <span class="data-title"><span class="signal-round signal-round-blue vent-margin-r-8"></span>开启</span>
|
|
|
|
|
- </template>
|
|
|
|
|
- <template v-else-if="selectData['ExplosionVentOpen'] == 0 && selectData['ExplosionVentClose'] == 1">
|
|
|
|
|
- <span class="data-title"><span class="signal-round signal-round-gry vent-margin-r-8"></span>关闭</span>
|
|
|
|
|
- </template>
|
|
|
|
|
- <template v-else>
|
|
|
|
|
- <div class="vent-margin-l-10"
|
|
|
|
|
- ><span class="signal-round signal-round-warning vent-margin-r-8"></span>防爆门正在运行 或 数据异常</div
|
|
|
|
|
- >
|
|
|
|
|
- </template>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="vent-flex-row-between vent-margin-t-10">
|
|
|
|
|
- <span class="data-title">反风锁紧状态:</span>
|
|
|
|
|
- <template
|
|
|
|
|
- v-if="
|
|
|
|
|
- selectData['Lock1Open'] == 1 && selectData['Lock1Close'] == 0 && selectData['Lock2Open'] == 1 && selectData['Lock2Close'] == '0'
|
|
|
|
|
- "
|
|
|
|
|
- >
|
|
|
|
|
- <span class="data-title"><span class="signal-round signal-round-blue vent-margin-r-8"></span>锁1开</span>
|
|
|
|
|
- <span class="data-title"><span class="signal-round signal-round-blue vent-margin-r-8"></span>锁2开</span>
|
|
|
|
|
- </template>
|
|
|
|
|
- <template
|
|
|
|
|
- v-else-if="
|
|
|
|
|
- selectData['Lock1Open'] == '0' && selectData['Lock1Close'] == 1 && selectData['Lock2Open'] == '0' && selectData['Lock2Close'] == 1
|
|
|
|
|
- "
|
|
|
|
|
- >
|
|
|
|
|
- <span class="data-title"><span class="signal-round signal-round-gry vent-margin-r-8"></span>锁1关</span>
|
|
|
|
|
- <span class="data-title"><span class="signal-round signal-round-gry vent-margin-r-8"></span>锁2关</span>
|
|
|
|
|
- </template>
|
|
|
|
|
- <template v-else>
|
|
|
|
|
- <div class="vent-margin-l-10"
|
|
|
|
|
- ><span class="signal-round signal-round-warning vent-margin-r-8"></span>反风锁紧正在运行 或 数据异常</div
|
|
|
|
|
- >
|
|
|
|
|
- </template>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="fbm-data">
|
|
|
|
|
- <div class="element-item"
|
|
|
|
|
- ><span class="data-title">井口负压(kPa):</span
|
|
|
|
|
- ><span>{{ selectData.Fan1FanPre ? selectData.Fan1FanPre : selectData.Fan2FanPre ? selectData.Fan2FanPre : '-' }}</span></div
|
|
|
|
|
- >
|
|
|
|
|
- <div class="element-item"><span class="data-title">井口正压(kPa):</span><span>0</span></div>
|
|
|
|
|
- <div class="element-item"><span class="data-title">井口温度(℃):</span><span>19.132</span></div>
|
|
|
|
|
- <div class="element-item"><span class="data-title">甲烷浓度(%):</span><span>0.36</span></div>
|
|
|
|
|
- <div class="element-item"><span class="data-title">CO浓度(%):</span><span>0</span></div>
|
|
|
|
|
- <div class="vent-flex-row-between">
|
|
|
|
|
- <span class="data-title">操作方式:</span>
|
|
|
|
|
- <span class="data-title"><span class="signal-round signal-round-blue vent-margin-r-8"></span>远程</span>
|
|
|
|
|
- <span class="data-title"><span class="signal-round signal-round-gry vent-margin-r-8"></span>就地</span>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div> -->
|
|
|
|
|
- <div v-if="hasPermission('mainFan:ffsjMonitor')">
|
|
|
|
|
- <div class="elementContent elementContent-r fbm-box">
|
|
|
|
|
- <div class="fbm-video">
|
|
|
|
|
- <div class="vent-flex-row-between vent-margin-t-20">
|
|
|
|
|
- <span class="data-title">风门开启状态:</span>
|
|
|
|
|
- <template v-if="explosionDoorData['gate_1_kai'] == 1">
|
|
|
|
|
- <span class="data-title"
|
|
|
|
|
- ><span
|
|
|
|
|
- class="signal-round vent-margin-r-8"
|
|
|
|
|
- :class="{ 'signal-round-blue': explosionDoorData['gate_1_kai'] == 1, 'signal-round-gry': explosionDoorData['gate_1_kai'] == 0 }"
|
|
|
|
|
- ></span
|
|
|
|
|
- >门1开启</span
|
|
|
|
|
- >
|
|
|
|
|
- </template>
|
|
|
|
|
- <template v-else-if="explosionDoorData['gate_2_kai'] == 1">
|
|
|
|
|
- <span class="data-title"
|
|
|
|
|
- ><span
|
|
|
|
|
- class="signal-round vent-margin-r-8"
|
|
|
|
|
- :class="{ 'signal-round-blue': explosionDoorData['gate_1_kai'] == 1, 'signal-round-gry': explosionDoorData['gate_1_kai'] == 0 }"
|
|
|
|
|
- ></span
|
|
|
|
|
- >门2开启</span
|
|
|
|
|
- >
|
|
|
|
|
- </template>
|
|
|
|
|
- <template v-else>
|
|
|
|
|
- <div class="vent-margin-l-10"
|
|
|
|
|
- ><span class="signal-round signal-round-warning vent-margin-r-8"></span>防爆门正在运行 或 数据异常</div
|
|
|
|
|
- >
|
|
|
|
|
- </template>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="vent-flex-row-between vent-margin-t-10">
|
|
|
|
|
- <span class="data-title">反风锁紧状态:</span>
|
|
|
|
|
- <div>
|
|
|
|
|
- <span class="data-title"
|
|
|
|
|
- ><span
|
|
|
|
|
- class="signal-round vent-margin-r-8"
|
|
|
|
|
- :class="{ 'signal-round-blue': explosionDoorData['suo1_kai'] == 1, 'signal-round-gry': explosionDoorData['suo1_kai'] == 0 }"
|
|
|
|
|
- ></span
|
|
|
|
|
- >锁1开</span
|
|
|
|
|
- >
|
|
|
|
|
- <span class="data-title"
|
|
|
|
|
- ><span
|
|
|
|
|
- class="signal-round vent-margin-r-8"
|
|
|
|
|
- :class="{ 'signal-round-blue': explosionDoorData['suo1_guan'] == 1, 'signal-round-gry': explosionDoorData['suo1_guan'] == 0 }"
|
|
|
|
|
- ></span
|
|
|
|
|
- >锁1关</span
|
|
|
|
|
- >
|
|
|
|
|
- </div>
|
|
|
|
|
- <div>
|
|
|
|
|
- <span class="data-title"
|
|
|
|
|
- ><span
|
|
|
|
|
- class="signal-round vent-margin-r-8"
|
|
|
|
|
- :class="{ 'signal-round-blue': explosionDoorData['suo2_kai'] == 1, 'signal-round-gry': explosionDoorData['suo2_kai'] == 0 }"
|
|
|
|
|
- ></span
|
|
|
|
|
- >锁1开</span
|
|
|
|
|
- >
|
|
|
|
|
- <span class="data-title"
|
|
|
|
|
- ><span
|
|
|
|
|
- class="signal-round vent-margin-r-8"
|
|
|
|
|
- :class="{ 'signal-round-blue': explosionDoorData['suo2_guan'] == 1, 'signal-round-gry': explosionDoorData['suo2_guan'] == 0 }"
|
|
|
|
|
- ></span
|
|
|
|
|
- >锁2关</span
|
|
|
|
|
- >
|
|
|
|
|
- </div>
|
|
|
|
|
- <div>
|
|
|
|
|
- <span class="data-title"
|
|
|
|
|
- ><span
|
|
|
|
|
- class="signal-round vent-margin-r-8"
|
|
|
|
|
- :class="{ 'signal-round-blue': explosionDoorData['suo3_kai'] == 1, 'signal-round-gry': explosionDoorData['suo3_kai'] == 0 }"
|
|
|
|
|
- ></span
|
|
|
|
|
- >锁3开</span
|
|
|
|
|
- >
|
|
|
|
|
- <span class="data-title"
|
|
|
|
|
- ><span
|
|
|
|
|
- class="signal-round vent-margin-r-8"
|
|
|
|
|
- :class="{ 'signal-round-blue': explosionDoorData['suo3_guan'] == 1, 'signal-round-gry': explosionDoorData['suo3_guan'] == 0 }"
|
|
|
|
|
- ></span
|
|
|
|
|
- >锁3关</span
|
|
|
|
|
- >
|
|
|
|
|
- </div>
|
|
|
|
|
- <div>
|
|
|
|
|
- <span class="data-title"
|
|
|
|
|
- ><span
|
|
|
|
|
- class="signal-round vent-margin-r-8"
|
|
|
|
|
- :class="{ 'signal-round-blue': explosionDoorData['suo4_kai'] == 1, 'signal-round-gry': explosionDoorData['suo4_kai'] == 0 }"
|
|
|
|
|
- ></span
|
|
|
|
|
- >锁4开</span
|
|
|
|
|
- >
|
|
|
|
|
- <span class="data-title"
|
|
|
|
|
- ><span
|
|
|
|
|
- class="signal-round vent-margin-r-8"
|
|
|
|
|
- :class="{ 'signal-round-blue': explosionDoorData['suo4_guan'] == 1, 'signal-round-gry': explosionDoorData['suo4_guan'] == 0 }"
|
|
|
|
|
- ></span
|
|
|
|
|
- >锁4关</span
|
|
|
|
|
- >
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="fbm-data">
|
|
|
|
|
- <div class="vent-flex-row-between">
|
|
|
|
|
- <span class="data-title">操作方式:</span>
|
|
|
|
|
- <span class="data-title"
|
|
|
|
|
- ><span
|
|
|
|
|
- class="signal-round signal-round-blue vent-margin-r-8"
|
|
|
|
|
- :class="{ 'signal-round-blue': explosionDoorData['jd_yc'] == 1 }"
|
|
|
|
|
- ></span
|
|
|
|
|
- >远程</span
|
|
|
|
|
- >
|
|
|
|
|
- <span class="data-title"
|
|
|
|
|
- ><span class="signal-round vent-margin-r-8" :class="{ 'signal-round-blue': explosionDoorData['jd_yc'] == 0 }"></span>就地</span
|
|
|
|
|
- >
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="vent-flex-row-between">
|
|
|
|
|
- <span class="data-title">是否检修:</span>
|
|
|
|
|
- <span class="data-title"
|
|
|
|
|
- ><span
|
|
|
|
|
- class="signal-round signal-round-blue vent-margin-r-8"
|
|
|
|
|
- :class="{ 'signal-round-blue': explosionDoorData['zc_jx'] == 1 }"
|
|
|
|
|
- ></span
|
|
|
|
|
- >正常</span
|
|
|
|
|
- >
|
|
|
|
|
- <span class="data-title"
|
|
|
|
|
- ><span class="signal-round vent-margin-r-8" :class="{ 'signal-round-blue': explosionDoorData['zc_jx'] == 0 }"></span>检修</span
|
|
|
|
|
- >
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div id="main3D" style="width: 100%; height: 100%; position: absolute; overflow: hidden"> </div>
|
|
|
|
|
- <FanEchrats id="fan-echarts" :chartData="selectData" style="position: absolute; z-index: -1" />
|
|
|
|
|
- </div>
|
|
|
|
|
|
|
+ <component
|
|
|
|
|
+ ref="modelRef"
|
|
|
|
|
+ :loading="loading"
|
|
|
|
|
+ :is="modelComponent"
|
|
|
|
|
+ :centerMonitorIsShow="centerMonitorIsShow"
|
|
|
|
|
+ :frontMonitorIsShow="frontMonitorIsShow"
|
|
|
|
|
+ :backMonitorIsShow="backMonitorIsShow"
|
|
|
|
|
+ :explosionDoorData="explosionDoorData"
|
|
|
|
|
+ :selectData="selectData"
|
|
|
|
|
+ />
|
|
|
<!-- 控制模式 -->
|
|
<!-- 控制模式 -->
|
|
|
<div v-if="hasPermission('fan:remote')" class="top-right">
|
|
<div v-if="hasPermission('fan:remote')" class="top-right">
|
|
|
<div class="control-title">控制模式:</div>
|
|
<div class="control-title">控制模式:</div>
|
|
@@ -852,13 +628,13 @@
|
|
|
import FanDeviceEcharts from '../comment/FanDeviceEcharts.vue';
|
|
import FanDeviceEcharts from '../comment/FanDeviceEcharts.vue';
|
|
|
import BarAndLine from '../../../../components/chart/BarAndLine.vue';
|
|
import BarAndLine from '../../../../components/chart/BarAndLine.vue';
|
|
|
import FanEchrats from '/@/views/vent/monitorManager/mainFanMonitor/fanEchrats.vue';
|
|
import FanEchrats from '/@/views/vent/monitorManager/mainFanMonitor/fanEchrats.vue';
|
|
|
- import { onBeforeMount, unref, ref, onMounted, inject, onUnmounted, reactive, toRaw, watch, nextTick, defineAsyncComponent } from 'vue';
|
|
|
|
|
|
|
+ import { onBeforeMount, unref, ref, onMounted, inject, onUnmounted, reactive, toRaw, watch, nextTick, defineAsyncComponent, shallowRef } from 'vue';
|
|
|
import GroupMonitorTable from '../comment/GroupMonitorTable.vue';
|
|
import GroupMonitorTable from '../comment/GroupMonitorTable.vue';
|
|
|
// // import HistoryTable from '../comment/HistoryTable.vue';
|
|
// // import HistoryTable from '../comment/HistoryTable.vue';
|
|
|
// import HistoryTable from '../../../vent/comment/history/HistoryTable.vue';
|
|
// import HistoryTable from '../../../vent/comment/history/HistoryTable.vue';
|
|
|
import AlarmHistoryTable from '../comment/AlarmHistoryTable.vue';
|
|
import AlarmHistoryTable from '../comment/AlarmHistoryTable.vue';
|
|
|
import HandlerHistoryTable from '../comment/HandlerHistoryTable.vue';
|
|
import HandlerHistoryTable from '../comment/HandlerHistoryTable.vue';
|
|
|
- import { modalTypeArr, fbmControlData, faultDeviceHeader, PointMonitorType } from './main.data';
|
|
|
|
|
|
|
+ import { modalTypeArr, fbmControlData, faultDeviceHeader, PointMonitorType, getModelComponent } from './main.data';
|
|
|
import { deviceControlApi } from '/@/api/vent/index';
|
|
import { deviceControlApi } from '/@/api/vent/index';
|
|
|
import { mountedThree, destroy, addText, setModelType, playAnimate, resetEcharts } from './main.threejs';
|
|
import { mountedThree, destroy, addText, setModelType, playAnimate, resetEcharts } from './main.threejs';
|
|
|
import LivePlayer from '@liveqing/liveplayer-v3';
|
|
import LivePlayer from '@liveqing/liveplayer-v3';
|
|
@@ -902,6 +678,11 @@
|
|
|
y: 180,
|
|
y: 180,
|
|
|
});
|
|
});
|
|
|
const modelList = ref<{ text: string; value: string }[]>([]);
|
|
const modelList = ref<{ text: string; value: string }[]>([]);
|
|
|
|
|
+
|
|
|
|
|
+ const modelRef = ref();
|
|
|
|
|
+ /** 模型对应的组件,根据实际情况分为二维三维 */
|
|
|
|
|
+ const modelComponent = shallowRef(getModelComponent(globalConfig.is2DModel));
|
|
|
|
|
+
|
|
|
let modeValue: null | string | number = null;
|
|
let modeValue: null | string | number = null;
|
|
|
const playerRef = ref();
|
|
const playerRef = ref();
|
|
|
const isSimulation = true; // 是否模拟状态
|
|
const isSimulation = true; // 是否模拟状态
|
|
@@ -1225,6 +1006,7 @@
|
|
|
|
|
|
|
|
addText();
|
|
addText();
|
|
|
playAnimate(selectData);
|
|
playAnimate(selectData);
|
|
|
|
|
+ modelRef.value?.animate?.(selectData);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if (timer) {
|
|
if (timer) {
|