Browse Source

风窗开度调整

hongrunxia 1 year ago
parent
commit
d165e2c1d6

+ 2 - 2
public/js/config.js

@@ -4,8 +4,8 @@ const VUE_APP_URL = {
   webRtcUrl: '//192.168.183.216:8000' // rtsp服务器IP地址
 }
 const History_Type = {
-  type: 'remote', // remote、vent  (remote 代表的是历史查询走的装备院的接口,vent是走的咱们的,目前神东的项目都用remote, 其他矿用vent)
-  // type: 'vent', // remote、vent
+  // type: 'remote', // remote、vent  (remote 代表的是历史查询走的装备院的接口,vent是走的咱们的,目前神东的项目都用remote, 其他矿用vent)
+  type: 'vent', // remote、vent
   deviceType: []
 }
 

+ 1 - 0
src/components/Table/src/components/TableAction.vue

@@ -139,6 +139,7 @@
       }
 
       function onCellClick(e: MouseEvent) {
+        debugger
         if (!props.stopButtonPropagation) return;
         const path = e.composedPath() as HTMLElement[];
         const isInButton = path.find((ele) => {

+ 3 - 1
src/views/monitor/quartz/index.vue

@@ -21,7 +21,7 @@
         </a-dropdown>
       </template>
       <template #action="{ record }">
-        <TableAction :actions="getActions(record)" :dropDownActions="getDropDownAction(record)" />
+        <TableAction :actions="getActions(record)" :dropDownActions="getDropDownAction(record)"/>
       </template>
       <!-- <template #action="{ record }">
         <a class="table-action-link" @click="handleEdit(record)">编辑</a>
@@ -168,6 +168,7 @@
    * 暂停
    */
   async function handlerPause(record) {
+    debugger;
     await pauseJob({ id: record.id }, reload);
   }
 
@@ -175,6 +176,7 @@
    * 启动
    */
   async function handlerResume(record) {
+    debugger;
     await resumeJob({ id: record.id }, reload);
   }
 

+ 2 - 0
src/views/monitor/quartz/quartz.api.ts

@@ -63,6 +63,7 @@ export const deleteQuartz = (params, handleSuccess) => {
  * @param params
  */
 export const resumeJob = (params, handleSuccess) => {
+  debugger;
   return defHttp.get({ url: Api.resume, params }).then(() => {
     handleSuccess();
   });
@@ -73,6 +74,7 @@ export const resumeJob = (params, handleSuccess) => {
  * @param params
  */
 export const pauseJob = (params, handleSuccess) => {
+  debugger;
   return defHttp.get({ url: Api.pause, params }).then(() => {
     handleSuccess();
   });

+ 1 - 1
src/views/vent/deviceManager/substationTabel/substation.data.ts

@@ -111,7 +111,7 @@ export const formSchema: FormSchema[] = [
         placeholder: '请选择分站用途',
         onChange: (e: any) => {
           const { updateSchema } = formActionType;
-          if (e == 'plc') {
+          if (e == 'plc' || e == 'modbus') {
             updateSchema({
               field: 'plcType',
               show: true,

+ 1 - 4
src/views/vent/monitorManager/deviceMonitor/components/device/device.data.ts

@@ -246,7 +246,7 @@ export const surfaceChartsColumns = [
   },
 ];
 
-export const ballvalveColumns = [
+export const ballvalveColumns: BasicColumn[] = [
   {
     title: '设备编号',
     dataIndex: 'deviceNum',
@@ -276,9 +276,6 @@ export const ballvalveColumns = [
     dataIndex: 'SmokeRealtime485',
     align: 'center',
     width: 50,
-    customRender: () => {
-      return `正常`;
-    },
   },
   {
     title: '是否报警',

+ 3 - 7
src/views/vent/monitorManager/deviceMonitor/components/device/index.vue

@@ -588,12 +588,11 @@ function goDetail(record?) {
       currentModal.value = DustModal
       modalVisible.value = true;
     } else if (deviceType.value.startsWith('bundletube')) {
-      // currentModal.value = BundleModal
+      currentModal.value = BundleModal
+      modalVisible.value = true;
+    } else if (deviceType.value.startsWith('BallvalveModal')) {
       currentModal.value = BallvalveModal
       modalVisible.value = true;
-    } else if (deviceType.value.startsWith('bundletube')) {
-      // currentModal.value = BundleModal
-      // modalVisible.value = true;
     } else if (deviceType.value.indexOf("gate") != -1) {
       const newPage = router.resolve({ path: '/monitorChannel/monitor-gate', query: { id: activeID.value } })
       window.open(newPage.href, '_blank')
@@ -697,9 +696,6 @@ async function findTreeDataValue(obj) {
         selectedKeys.value = [item.key]
         expandedKeys.value = [item.key]
         treeNodeTitle.value = item.title
-
-        console.log('99999999999999999999999', selectedKeys.value, )
-
         return true
       }
       return false

+ 61 - 131
src/views/vent/monitorManager/deviceMonitor/components/device/modal/ballvalve.modal.vue

@@ -13,57 +13,57 @@
         <div class="base-box">
           <div class="base-item">
             <span class="title">所属区域:</span>
-            <span class="value">采区水泵房</span>
+            <span class="value">{{ posMonitor['beltName'] ? posMonitor['beltName'] : '-' }}</span>
           </div>
           <div class="base-item">
             <span class="title">当前区域名称:</span>
-            <span class="value">分区1</span>
+            <span class="value">{{ posMonitor['areaName'] ? posMonitor['areaName'] : '-' }}</span>
           </div>
           <div class="base-item">
             <span class="title">设备编号:</span>
-            <span class="value">001</span>
+            <span class="value">{{ posMonitor['deviceNum'] ? posMonitor['deviceNum'] : '-' }}</span>
           </div>
           <div class="base-item">
             <span class="title">监测区域范围:</span>
-            <span class="value">{{ 0 }}m - {{ 1 }}m</span>
+            <span class="value">{{ posMonitor['startArea'] ? posMonitor['startArea'] : '-' }}m - {{ posMonitor['engArea'] ? posMonitor['engArea'] : '-' }}m</span>
           </div>
           <div class="base-item">
             <span class="title">开启温度:</span>
-            <span class="value">{{ 60 }}℃</span>
+            <span class="value">{{ (posMonitor['tempStart'] !== undefined && posMonitor['tempStart'] !== null) ? posMonitor['tempStart'] : '-' }}℃</span>
           </div>
           <div class="base-item">
             <span class="title">关闭温度:</span>
-            <span class="value">{{ 30 }}℃</span>
+            <span class="value">{{ (posMonitor['tempStop'] !== undefined && posMonitor['tempStop'] !== null) ? posMonitor['tempStop'] : '-' }}℃</span>
           </div>
         </div>
         <span class="base-title">实时监测参数</span>
         <div class="right-top">
           <!-- 温度 -->
-           <div class="top-item">
+          <div class="top-item">
             <div class="icon">
-              <SvgIcon class="icon-style max-temperature" size="38" name="max-temperature" />
+              <SvgIcon class="icon-style aveg-temperature" size="38" name="aveg-temperature" />
             </div>
             <div class="item-container">
-              <div class="title">最高温度</div>
-              <div class="value">{{ posMonitor.fmax }} <span>℃</span> </div>
+              <div class="title">平均温度</div>
+              <div class="value">{{ (posMonitor['tempAvg'] !== undefined && posMonitor['tempAvg'] !== null) ? posMonitor['tempAvg'] : '-' }} <span>℃</span></div>
             </div>
           </div>
-          <div class="top-item">
+           <div class="top-item">
             <div class="icon">
-              <SvgIcon class="icon-style min-temperature" size="38" name="min-temperature" />
+              <SvgIcon class="icon-style max-temperature" size="38" name="max-temperature" />
             </div>
             <div class="item-container">
-              <div class="title">最温度</div>
-              <div class="value">{{ posMonitor.fmin }} <span>℃</span></div>
+              <div class="title">最温度</div>
+              <div class="value">{{ (posMonitor['tempMax'] !== undefined && posMonitor['tempMax'] !== null) ? posMonitor['tempMax'] : '-' }} <span>℃</span> </div>
             </div>
           </div>
           <div class="top-item">
             <div class="icon">
-              <SvgIcon class="icon-style aveg-temperature" size="38" name="aveg-temperature" />
+              <SvgIcon class="icon-style min-temperature" size="38" name="min-temperature" />
             </div>
             <div class="item-container">
-              <div class="title">平均温度</div>
-              <div class="value">{{ posMonitor.favg }} <span>℃</span></div>
+              <div class="title">最低温度</div>
+              <div class="value">{{ (posMonitor['tempMin'] !== undefined && posMonitor['tempMin'] !== null) ? posMonitor['tempMin'] : '-' }} <span>℃</span></div>
             </div>
           </div>
           <div class="top-item warning-box">
@@ -71,8 +71,8 @@
               <SvgIcon class="icon-style" size="38" name="risk-level" />
             </div>
             <div class="item-container">
-              <div class="title">风险等级</div>
-              <div class="warning-value">低风险</div>
+              <div class="title">设备状态</div>
+              <div class="warning-value">{{ posMonitor['devicesSTAT'] == 0 ? '关闭' : posMonitor['devicesSTAT'] == 1 ? '开启' : '离线'}}</div>
             </div>
           </div>
           <div class="top-item item-data">
@@ -80,58 +80,52 @@
               <SvgIcon class="icon-style" name="temp" style="width: 62px; height: 38px; margin-top: 10px;" />
             </div>
             <div class="item-container">
-              <div class="title">温度监测</div>
-              <div class="value">{{ (posMonitor.coval !== undefined && posMonitor.coval !== null) ? posMonitor.coval : '-'
-              }} <span>ppm</span> </div>
+              <div class="title">温度监测<span :class="{'state-close': posMonitor['devicesSTAT'] == 0, 'state-open': posMonitor['devicesSTAT'] == 1, 'state-offline': posMonitor['devicesSTAT'] == 2 }">({{ posMonitor['devicesSTAT'] == 0 ? '关闭' : posMonitor['devicesSTAT'] == 1 ? '开启' : posMonitor['devicesSTAT'] == 2 ? '离线' :'' }})</span></div>
+              <div class="value" :class="{'alarm-value': posMonitor['isWarn'] == 2 }">{{ (posMonitor['tempRealtime'] !== undefined && posMonitor['tempRealtime'] !== null) ? posMonitor['tempRealtime'] : '-'
+              }} <span></span> </div>
             </div>
-            <div class="rang">报警阈值:小于-10或大于100</div>
+            <div class="rang">报警阈值:小于<span class="rang-data">{{ posMonitor['warmLow'] ? posMonitor['warmLow'] : '-' }}</span>或大于<span class="rang-data">{{ posMonitor['warnUp'] ? posMonitor['warnUp'] : '-' }}</span></div>
           </div>
           <div class="top-item item-data">
             <div class="icon">
               <SvgIcon class="icon-style" name="coval" style="width: 62px; height: 38px; margin-top: 10px;" />
             </div>
             <div class="item-container">
-              <div class="title">CO监测</div>
-              <div class="value">{{ (posMonitor.coval !== undefined && posMonitor.coval !== null) ? posMonitor.coval : '-'
+              <div class="title">CO监测<span :class="{ 'state-close': posMonitor['COSensorSTAT'] == 0, 'state-open': posMonitor['COSensorSTAT'] == 1, 'state-offline': posMonitor['COSensorSTAT'] == 2 }">({{ posMonitor['COSensorSTAT'] == 0 ? '关闭' : posMonitor['COSensorSTAT'] == 1 ? '开启' : posMonitor['COSensorSTAT'] == 2 ? '离线' : '' }})</span></div>
+              <div class="value" :class="{ 'alarm-value': posMonitor['COSensorStatus'] == 2 }">{{ (posMonitor['CORealtime'] !== undefined && posMonitor['CORealtime'] !== null) ? posMonitor['CORealtime'] : '-'
               }} <span>ppm</span> </div>
             </div>
-            <div class="rang">报警阈值:12</div>
+            <div class="rang">报警阈值:<span class="rang-data">{{ posMonitor['COWarn'] ? posMonitor['COWarn'] : '-' }}</span></div>
           </div>
           <div class="top-item item-data">
             <div class="icon">
               <SvgIcon class="icon-style" name="smoke" style="width: 72px; height: 46px;" />
             </div>
             <div class="item-container">
-              <div class="title">烟雾监测</div>
-              <div class="value">{{ (posMonitor.co2val !== undefined && posMonitor.co2val !== null) ? posMonitor.co2val :
-                '-' }} <span>%</span></div>
+              <div class="title">烟雾监测<span :class="{ 'state-close': posMonitor['SmokeSTAT485'] == 0, 'state-open': posMonitor['SmokeSTAT485'] == 1, 'state-offline': posMonitor['SmokeSTAT485'] == 2 }">({{ posMonitor['SmokeSTAT485'] == 0 ? '关闭' : posMonitor['SmokeSTAT485'] == 1 ? '开启' : posMonitor['SmokeSTAT485'] == 2 ? '离线' : '' }})</span></div>
+              <div class="value" :class="{ 'alarm-value': posMonitor['SmokeStatus485'] == 2 }">{{ (posMonitor['SmokeRealtime485'] !== undefined && posMonitor['SmokeRealtime485'] !== null) ? posMonitor['SmokeRealtime485'] : '-' }} <span>%</span></div>
             </div>
-            <div class="rang">报警阈值:12</div>
+            <div class="rang">报警阈值:<span class="rang-data">{{ posMonitor['SmokeWarn485'] ? posMonitor['SmokeWarn485'] : '-' }}</span></div>
           </div>
           <div class="top-item item-data">
             <div class="icon">
               <SvgIcon class="icon-style" name="pressure" style="width: 62px; height: 38px;" />
             </div>
             <div class="item-container">
-              <div class="title">压力监测</div>
-              <div class="value">{{ (posMonitor.gasval !== undefined && posMonitor.gasval !== null) ? posMonitor.gasval :
-                '-' }} <span>%</span></div>
+              <div class="title">压力监测<span :class="{ 'state-close': posMonitor['PressureSensorSTAT'] == 0, 'state-open': posMonitor['PressureSensorSTAT'] == 1, 'state-offline': posMonitor['PressureSensorSTAT'] == 2 }">({{ posMonitor['PressureSensorSTAT'] == 0 ? '关闭' : posMonitor['PressureSensorSTAT'] == 1 ? '开启' : posMonitor['PressureSensorSTAT'] == 2 ? '离线' : '' }})</span></div>
+              <div class="value" :class="{ 'alarm-value': posMonitor['PressureSensorStatus'] == 2 }">{{ (posMonitor['PressureRealtime'] !== undefined && posMonitor['PressureRealtime'] !== null) ? posMonitor['PressureRealtime'] : '-' }} <span>%</span></div>
             </div>
-            <div class="rang">报警阈值:12</div>
+            <div class="rang">报警阈值:<span class="rang-data">{{ posMonitor['PressureWarn'] ? posMonitor['PressureWarn'] : '-' }}</span></div>
           </div>
         </div>
         <div class="right-bottom">
           <span class="base-title">设备监测曲线</span>
-          <!-- <div class="echarts-box">
-            <BarAndLine class="echarts-line" xAxisPropType="time" :dataSource="historyList" height="100%"
-              :chartsColumns="chartsColumns" :option="echatsOption" chartsType="listMonitor" />
-          </div> -->
           <a-table
             size="small"
             :columns="ballvalveColumns"
             :data-source="[]"
             :pagination="false"
-            :scroll="{ y: 200 }"
+            :scroll="{ y: 300 }"
           />
         </div>
       </div>
@@ -163,94 +157,7 @@ export default defineComponent({
     const posList = ref<any[]>([])
     const posMonitor = shallowRef({})
 
-    const echatsOption = {
-      grid: {
-        top: '25%',
-        left: '30',
-        right: '45',
-        bottom: '3%',
-        containLabel: true
-      },
-      toolbox: {
-        feature: {}
-      },
-    }
 
-    const chartsColumns = [
-      {
-        legend: '一氧化碳',
-        seriesName: '(ppm)',
-        ymax: 10,
-        yname: 'ppm',
-        linetype: 'line',
-        yaxispos: 'left',
-        color: '#FDB146',
-        sort: 1,
-        xRotate: 0,
-        dataIndex: 'coval',
-      },
-      {
-        legend: '乙炔',
-        seriesName: '',
-        ymax: 10,
-        yname: 'ppm',
-        linetype: 'line',
-        yaxispos: 'left',
-        color: '#00FFA8',
-        sort: 1,
-        xRotate: 0,
-        dataIndex: 'chval',
-      },
-      {
-        legend: '乙烯',
-        seriesName: '',
-        ymax: 10,
-        yname: 'ppm',
-        linetype: 'line',
-        yaxispos: 'left',
-        color: '#AE19FF',
-        sort: 1,
-        xRotate: 0,
-        dataIndex: 'ch2val',
-      },
-      {
-        legend: '二氧化碳',
-        seriesName: '(%)',
-        ymax: 20,
-        yname: '1%',
-        linetype: 'line',
-        yaxispos: 'right',
-        color: '#9C83D9',
-        sort: 2,
-        xRotate: 0,
-        dataIndex: 'co2val',
-      },
-      {
-        legend: '甲烷',
-        seriesName: '',
-        ymax: 20,
-        yname: '1%',
-        linetype: 'line',
-        yaxispos: 'right',
-        color: '#DA3914',
-        sort: 2,
-        xRotate: 0,
-        dataIndex: 'gasval',
-      },
-      {
-        legend: '氧气',
-        seriesName: '(氧气%)',
-        ymax: 30,
-        yname: '2%',
-        linetype: 'line',
-        yaxispos: 'right',
-        color: '#03C2EC',
-        sort: 3,
-        xRotate: 0,
-        dataIndex: 'o2val',
-      },
-
-    ]
     const [register, { setModalProps, closeModal }] = useModalInner();
 
     function handleVisibleChange(visible) {
@@ -301,7 +208,7 @@ export default defineComponent({
       })
     })
 
-    return { register, model: modelRef, currentTime, handleVisibleChange, selectDevice, handleOk, handleCancel, deviceList, historyList, activeDeviceID, posMonitor, echatsOption, posList, chartsColumns };
+    return { register, model: modelRef, currentTime, handleVisibleChange, selectDevice, handleOk, handleCancel, ballvalveColumns,  deviceList, historyList, activeDeviceID, posMonitor };
   },
 
 });
@@ -457,7 +364,13 @@ export default defineComponent({
             }
 
           }
-
+          .alarm-value{
+            text-shadow: 0 0 25px #fe1500;
+            background: linear-gradient(0deg, #fd4545, #fd5e45, #dd7461, #dd6161);
+            -webkit-background-clip: text;
+            background-clip: text;
+            -webkit-text-fill-color: transparent;
+          }
         }
       }
       .item-data{
@@ -465,22 +378,39 @@ export default defineComponent({
         height: 130px;
         padding-top: 0;
         .icon{
-          margin-right: 30px;
-          margin-top: 25px;
+          position: absolute;
+          left: 20px;
+          top: 30px;
+          // margin-right: 30px;
+          // margin-top: 25px;
         }
         .item-container{
+          width: 140px;
+          position: absolute;
           padding-top: 18px;
           justify-content: flex-start;
+          right: 0;
           .value{
             top: 0px;
           }
-          
+          .state-close{
+            color: #b9b9b9;
+          }
+          .state-open{
+            color: #00ff88;
+          }
+          .state-offline{
+            color: #ffd000;
+          }
         }
         .rang{
           position: absolute;
           color: #ff8331;
           bottom: 10px;
           right: 20px;
+          .rang-data{
+            padding: 0 5px;
+          }
         }
       }
 

+ 5 - 3
src/views/vent/monitorManager/fanLocalMonitor/fanLocal.three.ts

@@ -139,7 +139,9 @@ export const addText = (selectData) => {
       y: 165,
     },
     {
-      text: `${selectData.fchimenylength ? selectData.fchimenylength : '-'}`,
+      text: `${
+        selectData.fchimenylength ? selectData.fchimenylength : selectData.airSupplyDistence_merge ? selectData.airSupplyDistence_merge : '-'
+      }`,
       font: 'normal 30px Arial',
       color: '#009900',
       strokeStyle: '#002200',
@@ -147,7 +149,7 @@ export const addText = (selectData) => {
       y: 165,
     },
     {
-      text: `风筒直径(m): `,
+      text: `风筒直径(mm): `,
       font: 'normal 30px Arial',
       color: '#009900',
       strokeStyle: '#002200',
@@ -155,7 +157,7 @@ export const addText = (selectData) => {
       y: 220,
     },
     {
-      text: ` ${selectData.fchimenydiamlimit ? selectData.fchimenydiamlimit : '-'}`,
+      text: ` ${selectData.fchimenydiamlimit ? selectData.fchimenydiamlimit : selectData.ductDiameter_merge ? selectData.ductDiameter_merge : '-'}`,
       font: 'normal 30px Arial',
       color: '#009900',
       strokeStyle: '#002200',

+ 49 - 38
src/views/vent/monitorManager/fanLocalMonitor/index.vue

@@ -255,6 +255,8 @@
   <div style="z-index: -1; position: absolute; top: 50px; right: 10px; width: 300px; height: 280px; margin: auto" class="player1">
     <LivePlayer id="jb-player1" ref="player1" :videoUrl="flvURL1()" muted live loading controls />
   </div>
+  <div ref="playerRef" style="z-index: 999; position: absolute; top: 100px; right: 15px; width: 300px; height: 280px; margin: auto">
+  </div>
   <a-modal v-model:visible="modalIsShow" :title="modalTitle" @ok="handleOk">
     <div class="modal-container">
       <div class="vent-flex-row">
@@ -485,6 +487,7 @@
   const scroll = reactive({
     y: 180
   })
+  const playerRef = ref()
   const MonitorDataTable = ref()
   const modalSensor = ref(null);
   const loading = ref(false);
@@ -586,22 +589,26 @@
   }
   //
   async function getDataSource(){
-    const res = await list({ devicetype: devicekide.value, pagetype: 'normal' });
-    if(res.msgTxt && res.msgTxt[0] && res.msgTxt[0].datalist && res.msgTxt[0].datalist.length > 0){
-      const dataArr = res.msgTxt[0].datalist || [];
-      dataSource.value = [];
-      dataArr.forEach((data) => {
-        const readData = data.readData;
-        data = Object.assign(data, readData);
-        dataSource.value.push(data);
-      });
-      if (MonitorDataTable.value && selectRowIndex.value == -1) {
-        MonitorDataTable.value.setSelectedRowKeys([dataSource.value[0]['deviceID']])
+    if(devicekide.value){
+      const res = await list({ devicetype: devicekide.value, pagetype: 'normal' });
+      if (res.msgTxt && res.msgTxt[0] && res.msgTxt[0].datalist && res.msgTxt[0].datalist.length > 0) {
+        const dataArr = res.msgTxt[0].datalist || [];
+        dataSource.value = [];
+        dataArr.forEach((data) => {
+          const readData = data.readData;
+          data = Object.assign(data, readData);
+          dataSource.value.push(data);
+        });
+        if (MonitorDataTable.value && selectRowIndex.value == -1) {
+          MonitorDataTable.value.setSelectedRowKeys([dataSource.value[0]['deviceID']])
+        }
+        const data: any = toRaw(dataSource.value[selectRowIndex.value]); //maxarea
+        return data;
+      } else {
+        return dataSource.value = []
       }
-      const data: any = toRaw(dataSource.value[selectRowIndex.value]); //maxarea
-      return data;
     }else{
-      return dataSource.value = []
+      dataSource.value = [];
     }
   };
 
@@ -619,17 +626,20 @@
             MonitorDataTable.value.setSelectedRowKeys(dataSource.value[0]['deviceID'])
           }
         }
-        deviceType.value = dataSource.value[selectRowIndex.value]['deviceType']
         for (const key in selectData) {
           selectData[key] = ''
         }
+        
         if(dataSource.value.length > 0 && dataSource.value[selectRowIndex.value]){
-          Object.assign(selectData, dataSource.value[selectRowIndex.value])
-        }
-        playSmoke(selectData)
-        addText(selectData);
-        if (timer) {
-          timer = null;
+          deviceType.value = dataSource.value[selectRowIndex.value]['deviceType']
+          if (dataSource.value.length > 0 && dataSource.value[selectRowIndex.value]) {
+            Object.assign(selectData, dataSource.value[selectRowIndex.value])
+          }
+          playSmoke(selectData)
+          addText(selectData);
+          if (timer) {
+            timer = null;
+          }
         }
         getMonitor();
       }, flag ? 0 :1000);
@@ -665,25 +675,26 @@
       });
       
       const data = dataSource.value[selectIndex];
-      if (data['Fan1StartStatus'] == 1) {
-        mainWindIsShow1.value = 'open';
-        mainWindIsShow2.value = 'stop';
-        selectDevice('warningMonitorRowIndex', 0)
-        selectDevice('dataMonitorRowIndex', 0)
-      } else if (data['Fan2StartStatus'] == 1) {
-        mainWindIsShow2.value = 'open';
-        mainWindIsShow1.value = 'stop';
-        selectDevice('warningMonitorRowIndex', 1)
-        selectDevice('dataMonitorRowIndex', 1)
-      }
-
-      const xAxisDataGasArr = []
-      for (const key in selectData) {
-        if (key.startsWith('gas') && key.length < 5) {
-          xAxisDataGasArr.push({key: 'T'+ key.substring(3), valueKey: key })
+      if(data){
+        if (data['Fan1StartStatus'] == 1) {
+          mainWindIsShow1.value = 'open';
+          mainWindIsShow2.value = 'stop';
+          selectDevice('warningMonitorRowIndex', 0)
+          selectDevice('dataMonitorRowIndex', 0)
+        } else if (data['Fan2StartStatus'] == 1) {
+          mainWindIsShow2.value = 'open';
+          mainWindIsShow1.value = 'stop';
+          selectDevice('warningMonitorRowIndex', 1)
+          selectDevice('dataMonitorRowIndex', 1)
+        }
+        const xAxisDataGasArr = []
+        for (const key in selectData) {
+          if (key.startsWith('gas') && key.length < 5) {
+            xAxisDataGasArr.push({ key: 'T' + key.substring(3), valueKey: key })
+          }
         }
+        xAxisDataGas.value = xAxisDataGasArr
       }
-      xAxisDataGas.value = xAxisDataGasArr
     })
     
     

+ 2 - 2
src/views/vent/monitorManager/nitrogen/components/nitrogenHome.vue

@@ -60,8 +60,8 @@
           <div class="item">总压力(bar):<span class="val">{{ monitorData[`PreSys_TotalOutPipePre${monitorDataGroupFlag}`] ? formatNum(monitorData[`PreSys_TotalOutPipePre${monitorDataGroupFlag}`]): '-' }}</span></div>
         </div>
         <div class="" style="margin-left: 30px; margin-top: 10px;">
-          <div style="color: red;">总流量异常</div>
-          <div style="color: red;">总压力异常</div>
+          <div v-if="Number(monitorData[`PreSys_TotalOutPipeFlow${monitorDataGroupFlag}`]) < 0" style="color: red;">总流量异常</div>
+          <div v-if="Number(monitorData[`PreSys_TotalOutPipePre${monitorDataGroupFlag}`]) < 0" style="color: red;">总压力异常</div>
         </div>
       </div>
       <div class="nitrogen-container">

+ 2 - 2
src/views/vent/monitorManager/nitrogen/components/nitrogenHome1.vue

@@ -108,8 +108,8 @@
           <div class="item">总压力(bar):<span class="val">{{ monitorData[`PreSys_TotalOutPipePre${monitorDataGroupFlag}`] ? formatNum(monitorData[`PreSys_TotalOutPipePre${monitorDataGroupFlag}`]) : '-' }}</span></div>
         </div>
         <div class="" style="margin-left: 30px; margin-top: 10px;">
-          <div style="color: red;">总流量异常</div>
-          <div style="color: red;">总压力异常</div>
+          <div v-if="Number(monitorData[`PreSys_TotalOutPipeFlow${monitorDataGroupFlag}`]) < 0" style="color: red;">总流量异常</div>
+          <div v-if="Number(monitorData[`PreSys_TotalOutPipePre${monitorDataGroupFlag}`]) < 0" style="color: red;">总压力异常</div>
         </div>
       </div>
       <div class="nitrogen-container">

+ 7 - 2
src/views/vent/monitorManager/windowMonitor/dandaoFc.threejs.ts

@@ -63,7 +63,7 @@ class singleWindow {
         y: 145,
       },
       {
-        text: `过风面积(m2): `,
+        text: `${selectData.maxarea == 100 ? '当前开度(%):' : '过风面积(m2):'} `,
         font: 'normal 30px Arial',
         color: '#009900',
         strokeStyle: '#002200',
@@ -120,7 +120,12 @@ class singleWindow {
         y: 200,
       },
       {
-        text: selectData.maxarea && selectData.maxarea !== '-' ? `0~${selectData.maxarea}` : '-',
+        text:
+          selectData.maxarea && selectData.maxarea !== '-'
+            ? selectData.maxarea == 100
+              ? `0~${selectData.maxarea}°%`
+              : `0~${selectData.maxarea}`
+            : '-',
         font: 'normal 30px Arial',
         color: '#009900',
         strokeStyle: '#002200',