hongrunxia před 1 dnem
rodič
revize
5d000295b3

+ 962 - 949
src/views/vent/monitorManager/compressor/components/nitrogenHome_dltj.vue

@@ -1,7 +1,10 @@
 <template>
   <div id="nitrogen3D" style="width: 100%; height: 100%; position: absolute; overflow: hidden"></div>
-  <div id="nitrogenCss3D" class="threejs-Object-CSS"
-    style="width: 100%; height: 100%; position: absolute; pointer-events: none; overflow: hidden; z-index: 2; top: 0px; left: 0px">
+  <div
+    id="nitrogenCss3D"
+    class="threejs-Object-CSS"
+    style="width: 100%; height: 100%; position: absolute; pointer-events: none; overflow: hidden; z-index: 2; top: 0px; left: 0px"
+  >
     <a-spin :spinning="loading" />
     <div v-for="groupNum in monitorDataGroupNum" :key="groupNum" class="modal-monitor">
       <fourBorderBg :class="`kyj${groupNum}`" :id="`nitrogenMonitor${groupNum}`">
@@ -17,27 +20,29 @@
         <template v-for="(preMonitor, preMonitorIndex) in preMonitorListData" :key="preMonitorIndex">
           <div v-if="preMonitor.code !== 'signal'" class="monitor-item">
             <span class="monitor-title">{{ preMonitor.title }}:</span>
-            <span class="monitor-val"><span class="val">{{ monitorData[preMonitor.code + groupNum] ?
-              formatNum(monitorData[preMonitor.code + groupNum]) : '-' }}</span><span class="unit">{{ preMonitor.unit
-                }}</span></span>
+            <span class="monitor-val"
+              ><span class="val">{{ monitorData[preMonitor.code + groupNum] ? formatNum(monitorData[preMonitor.code + groupNum]) : '-' }}</span
+              ><span class="unit">{{ preMonitor.unit }}</span></span
+            >
           </div>
           <div v-else class="signal-item">
             <div class="signal" v-for="(signal, childIndex) in preMonitor.child" :key="childIndex">
               <span class="monitor-title">{{ signal.title }}</span>
               <span style="display: inline-block; width: 30px; text-align: center" v-if="signal.isFault == -2">{{
-                monitorData[signal.code + groupNum] == '0' ? '就地' : monitorData[signal.code + groupNum] == '1' ? '远程' :
-                  '-'
-                }}</span>
+                monitorData[signal.code + groupNum] == '0' ? '就地' : monitorData[signal.code + groupNum] == '1' ? '远程' : '-'
+              }}</span>
               <span style="display: inline-block; width: 30px; text-align: center" v-else-if="signal.isFault == -1">{{
-                monitorData[signal.code + groupNum] == '1' ? '加载' : monitorData[signal.code + groupNum] == '0' ? '卸载' :
-                  '-'
-                }}</span>
-              <span v-else :class="{
-                'signal-round': true,
-                'signal-round-run': !signal.isFault && monitorData[signal.code + groupNum] == '1',
-                'signal-round-warning': signal.isFault && monitorData[signal.code + groupNum] == '1',
-                'signal-round-gry': monitorData[signal.code + groupNum] != '1',
-              }"></span>
+                monitorData[signal.code + groupNum] == '1' ? '加载' : monitorData[signal.code + groupNum] == '0' ? '卸载' : '-'
+              }}</span>
+              <span
+                v-else
+                :class="{
+                  'signal-round': true,
+                  'signal-round-run': !signal.isFault && monitorData[signal.code + groupNum] == '1',
+                  'signal-round-warning': signal.isFault && monitorData[signal.code + groupNum] == '1',
+                  'signal-round-gry': monitorData[signal.code + groupNum] != '1',
+                }"
+              ></span>
             </div>
           </div>
         </template>
@@ -56,8 +61,7 @@
           </div>
           <div class="top-center">
             <div class="top-c-label">通信状态:</div>
-            <div class="top-c-val">{{ monitorData['netStatus'] == 1 ? '连接' : monitorData['netStatus'] == 0 ? '断开' : '未知'
-              }}</div>
+            <div class="top-c-val">{{ monitorData['netStatus'] == 1 ? '连接' : monitorData['netStatus'] == 0 ? '断开' : '未知' }}</div>
           </div>
           <div class="top-right">
             <div class="control-type" v-if="monitorData['RemSelect'] !== undefined">
@@ -88,22 +92,23 @@
                 <div v-if="preFan.unit !== 'signal' && preFan.unit !== 'warning'" class="value">{{
                   monitorData[preFan.code] >= 0 ? formatNum(Number(monitorData[preFan.code])) : '-'
                 }}</div>
-                <div v-else :class="{
-                  'signal-round': true,
-                  'signal-round-warning': monitorData[preFan.code] == '1' && preFan.unit == 'warning',
-                  'signal-round-run': monitorData[preFan.code] == '1' && preFan.unit == 'signal',
-                  'signal-round-gry': monitorData[preFan.code] != '1',
-                }"></div>
-                <div class="unit">{{ preFan.unit !== 'signal' && preFan.unit !== 'warning' ? `(${preFan.unit})` : '' }}
-                </div>
+                <div
+                  v-else
+                  :class="{
+                    'signal-round': true,
+                    'signal-round-warning': monitorData[preFan.code] == '1' && preFan.unit == 'warning',
+                    'signal-round-run': monitorData[preFan.code] == '1' && preFan.unit == 'signal',
+                    'signal-round-gry': monitorData[preFan.code] != '1',
+                  }"
+                ></div>
+                <div class="unit">{{ preFan.unit !== 'signal' && preFan.unit !== 'warning' ? `(${preFan.unit})` : '' }} </div>
               </div>
             </template>
           </ventBox1>
           <div class="item item-l" v-for="groupNum in monitorDataGroupNum" :key="groupNum">
             <ventBox1>
               <template #title>
-                <div>{{ monitorData && monitorData['strname' + groupNum] ? monitorData['strname' + groupNum] : '注氮机' +
-                  groupNum }}</div>
+                <div>{{ monitorData && monitorData['strname' + groupNum] ? monitorData['strname' + groupNum] : '注氮机' + groupNum }}</div>
               </template>
               <template #container>
                 <div class="monitor-box">
@@ -113,15 +118,17 @@
                         preFan.title + (preFan.unit !== 'signal' && preFan.unit !== 'warning' ? `(${preFan.unit})` : '')
                       }}</div>
                       <div v-if="preFan.unit !== 'signal' && preFan.unit !== 'warning'" class="value">{{
-                        monitorData[preFan.code + groupNum] >= 0 ? formatNum(Number(monitorData[preFan.code +
-                          groupNum])) : '-'
-                        }}</div>
-                      <div v-else :class="{
-                        'signal-round': true,
-                        'signal-round-warning': monitorData[preFan.code + groupNum] == '1' && preFan.unit == 'warning',
-                        'signal-round-run': monitorData[preFan.code + groupNum] == '1' && preFan.unit == 'signal',
-                        'signal-round-gry': monitorData[preFan.code + groupNum] != '1',
-                      }"></div>
+                        monitorData[preFan.code + groupNum] >= 0 ? formatNum(Number(monitorData[preFan.code + groupNum])) : '-'
+                      }}</div>
+                      <div
+                        v-else
+                        :class="{
+                          'signal-round': true,
+                          'signal-round-warning': monitorData[preFan.code + groupNum] == '1' && preFan.unit == 'warning',
+                          'signal-round-run': monitorData[preFan.code + groupNum] == '1' && preFan.unit == 'signal',
+                          'signal-round-gry': monitorData[preFan.code + groupNum] != '1',
+                        }"
+                      ></div>
                     </div>
                   </div>
                 </div>
@@ -160,8 +167,14 @@
               <div>设备实时监测曲线</div>
             </template>
             <template #container>
-              <BarAndLine v-if="chartsColumns.length > 0" xAxisPropType="readTime" :dataSource="echartData"
-                height="320px" :chartsColumns="chartsColumns" :option="echatsOption" />
+              <BarAndLine
+                v-if="chartsColumns.length > 0"
+                xAxisPropType="readTime"
+                :dataSource="echartData"
+                height="320px"
+                :chartsColumns="chartsColumns"
+                :option="echatsOption"
+              />
             </template>
           </ventBox1>
         </div>
@@ -173,1060 +186,1060 @@
         <div class="title">下风测监测 </div>
         <div class="monitor-item" v-for="(data, index) in downWindData" :key="index">
           <span class="monitor-title">{{ data.title }} :</span>
-          <span class="monitor-val" v-if="!refresh"><span class="val">
-              {{ monitorData && monitorData[data.code] ? (data.raw ? monitorData[data.code] :
-                parseFloat(monitorData[data.code]).toFixed(2)) : '-' }}
+          <span class="monitor-val" v-if="!refresh"
+            ><span class="val">
+              {{ monitorData && monitorData[data.code] ? (data.raw ? monitorData[data.code] : parseFloat(monitorData[data.code]).toFixed(2)) : '-' }}
             </span>
-            <span class="unit">{{ data.unit }}</span></span>
+            <span class="unit">{{ data.unit }}</span></span
+          >
         </div>
       </fourBorderBg>
     </div>
   </div>
 </template>
 <script lang="ts" setup name="nitrogenHome">
-import { onMounted, onUnmounted, ref, watch, reactive, defineProps, nextTick, inject, unref } from 'vue';
-import ventBox1 from '/@/components/vent/ventBox1.vue';
-import fourBorderBg from '../../../comment/components/fourBorderBg.vue';
-import { mountedThree, destroy, setModelType } from '../nitrogen.threejs';
-import { getDevice } from '../nitrogen.api';
-import BarAndLine from '/@/components/chart/BarAndLine.vue';
-import { deviceControlApi } from '/@/api/vent/index';
-// import { preMonitorListData, preFanMonitor, nitrogenMonitor } from '../nitrogen.data.dltj';
-import { downWindData } from '../nitrogen.data';
-import { formatNum } from '/@/utils/ventutil';
-import { useCamera } from '/@/hooks/system/useCamera';
-import { message } from 'ant-design-vue';
-import lodash from 'lodash';
-import { getTableHeaderColumns } from '/@/hooks/web/useWebColumns';
-
-const globalConfig = inject('globalConfig');
-
-const props = defineProps({
-  deviceId: {
-    type: String,
-    require: true,
-  },
-  modalType: {
-    type: String,
-    require: true,
-  },
-});
-
-const playerRef = ref();
-const refresh = ref(false);
-const modalTitle = ref(''); // 模态框标题显示内容,根据设备操作类型决定
-const modalType = ref(''); // 模态框内容显示类型,设备操作类型
-const modalIsShow = ref<boolean>(false); // 是否显示模态框
-const loading = ref(true);
-let kzParam = reactive<any>({
-  data: {},
-  isFw: null,
-});
-
-// const kyjs = ['1号空压机', '1号空压机', '1号空压机', '1号空压机'];
-const flvURL1 = () => {
-  // return `https://sf1-hscdn-tos.pstatp.com/obj/media-fe/xgplayer_doc_video/flv/xgplayer-demo-360p.flv`;
-  return '';
-};
-const colors = ['#FDB146', '#EE6666', '#9BCB75', '#03C2EC', '#DA3914', '#9C83D9'];
-const echatsOption = {
-  grid: {
-    top: '35%',
-    left: '15%',
-    right: '20px',
-    bottom: '8%',
-    // containLabel: true
-  },
-  toolbox: {
-    feature: {},
-  },
-};
-const preMonitorListData = ref<any[]>([]);
-const preFanMonitor = ref<any[]>([]);
-const nitrogenMonitor = ref<any[]>([]);
-
-const deviceType = ref('');
-const monitorNetStatus = ref(0);
-const monitorDataGroupNum = ref(2);
-
-let airCompressorState = reactive<any[]>([]);
-
-// const chartsColumns = ref([
-//   {
-//     legend: '瞬时流量',
-//     seriesName: '(m³/h)',
-//     ymax: 2000,
-//     yname: 'm³/h',
-//     linetype: 'line',
-//     yaxispos: 'left',
-//     color: '#FDB146',
-//     sort: 1,
-//     xRotate: 0,
-//     dataIndex: 'InputFlux',
-//   },
-// ]);
-const chartsColumns = ref(getTableHeaderColumns('sys_nitrogen_chart'));
-
-const { getCamera, removeCamera } = useCamera();
-
-const monitorData = ref({});
-
-//图表数据
-let echartData = ref<any>([]);
-
-// https获取监测数据
-let timer: null | NodeJS.Timeout = null;
-async function getMonitor(flag?) {
-  if (Object.prototype.toString.call(timer) === '[object Null]') {
-    return new Promise(async (resolve) => {
-      timer = await setTimeout(
-        async () => {
-          if (props.deviceId) {
-            await getDataSource(props.deviceId);
-          }
-          if (timer) {
-            timer = null;
-          }
-          resolve(null);
-          await getMonitor();
-        },
-        flag ? 0 : 3000
-      );
-    });
+  import { onMounted, onUnmounted, ref, watch, reactive, defineProps, nextTick, inject, unref } from 'vue';
+  import ventBox1 from '/@/components/vent/ventBox1.vue';
+  import fourBorderBg from '../../../comment/components/fourBorderBg.vue';
+  import { mountedThree, destroy, setModelType } from '../nitrogen.threejs';
+  import { getDevice } from '../nitrogen.api';
+  import BarAndLine from '/@/components/chart/BarAndLine.vue';
+  import { deviceControlApi } from '/@/api/vent/index';
+  // import { preMonitorListData, preFanMonitor, nitrogenMonitor } from '../nitrogen.data.dltj';
+  import { downWindData } from '../nitrogen.data';
+  import { formatNum } from '/@/utils/ventutil';
+  import { useCamera } from '/@/hooks/system/useCamera';
+  import { message } from 'ant-design-vue';
+  import lodash from 'lodash';
+  import { getTableHeaderColumns } from '/@/hooks/web/useWebColumns';
+
+  const globalConfig = inject('globalConfig');
+
+  const props = defineProps({
+    deviceId: {
+      type: String,
+      require: true,
+    },
+    modalType: {
+      type: String,
+      require: true,
+    },
+  });
+
+  const playerRef = ref();
+  const refresh = ref(false);
+  const modalTitle = ref(''); // 模态框标题显示内容,根据设备操作类型决定
+  const modalType = ref(''); // 模态框内容显示类型,设备操作类型
+  const modalIsShow = ref<boolean>(false); // 是否显示模态框
+  const loading = ref(true);
+  let kzParam = reactive<any>({
+    data: {},
+    isFw: null,
+  });
+
+  // const kyjs = ['1号空压机', '1号空压机', '1号空压机', '1号空压机'];
+  const flvURL1 = () => {
+    // return `https://sf1-hscdn-tos.pstatp.com/obj/media-fe/xgplayer_doc_video/flv/xgplayer-demo-360p.flv`;
+    return '';
+  };
+  const colors = ['#FDB146', '#EE6666', '#9BCB75', '#03C2EC', '#DA3914', '#9C83D9'];
+  const echatsOption = {
+    grid: {
+      top: '35%',
+      left: '15%',
+      right: '20px',
+      bottom: '8%',
+      // containLabel: true
+    },
+    toolbox: {
+      feature: {},
+    },
+  };
+  const preMonitorListData = ref<any[]>([]);
+  const preFanMonitor = ref<any[]>([]);
+  const nitrogenMonitor = ref<any[]>([]);
+
+  const deviceType = ref('');
+  const monitorNetStatus = ref(0);
+  const monitorDataGroupNum = ref(2);
+
+  let airCompressorState = reactive<any[]>([]);
+
+  // const chartsColumns = ref([
+  //   {
+  //     legend: '瞬时流量',
+  //     seriesName: '(m³/h)',
+  //     ymax: 2000,
+  //     yname: 'm³/h',
+  //     linetype: 'line',
+  //     yaxispos: 'left',
+  //     color: '#FDB146',
+  //     sort: 1,
+  //     xRotate: 0,
+  //     dataIndex: 'InputFlux',
+  //   },
+  // ]);
+  const chartsColumns = ref(getTableHeaderColumns('sys_nitrogen_chart'));
+
+  const { getCamera, removeCamera } = useCamera();
+
+  const monitorData = ref({});
+
+  //图表数据
+  let echartData = ref<any>([]);
+
+  // https获取监测数据
+  let timer: null | NodeJS.Timeout = null;
+  async function getMonitor(flag?) {
+    if (Object.prototype.toString.call(timer) === '[object Null]') {
+      return new Promise(async (resolve) => {
+        timer = await setTimeout(
+          async () => {
+            if (props.deviceId) {
+              await getDataSource(props.deviceId);
+            }
+            if (timer) {
+              timer = null;
+            }
+            resolve(null);
+            await getMonitor();
+          },
+          flag ? 0 : 3000
+        );
+      });
+    }
   }
-}
-
-async function getDataSource(systemID) {
-  const res = await getDevice({ devicetype: 'sys', systemID, type: 'all' });
-  if (res) {
-    const result = res;
-
-    // const result = {
-    //   cmd: 'monitordata',
-    //   msgTxt: [
-    //     {
-    //       datalist: [
-    //         {
-    //           msgType: null,
-    //           deviceID: '1818548876779245569',
-    //           strname: '52507注氮机-2',
-    //           strinstallpos: '52507注氮机-2',
-    //           fsectarea: 'null',
-    //           stationname: '52507注氮机-2',
-    //           stationtype: 'redis',
-    //           deviceType: 'nitrogen_525072',
-    //           typeName: '52507注氮机2',
-    //           netStatus: 1,
-    //           warnFlag: 0,
-    //           warnLevel: 0,
-    //           warnLevel_str: '正常',
-    //           syswarnLevel: null,
-    //           syswarnLevel_str: null,
-    //           syswarnLevel_des: null,
-    //           warnTime: null,
-    //           readTime: '2024-08-04 17:59:25',
-    //           warnDes: '',
-    //           frontGateOpenCtrl: null,
-    //           rearGateOpenCtrl: null,
-    //           readData: {
-    //             FluxTotal12: '0.0',
-    //             RunTime42: '131072000',
-    //             NitrogenPurity2: '26',
-    //             ExhaustTemp2: '25.0',
-    //             Status2: '0',
-    //             RunTime2: '0',
-    //             sign: '0',
-    //             OilGasBarrel_SeparatorFault2: '0',
-    //             TotalFailureSignal2: '0',
-    //             InputFlux2: '5',
-    //             PhaseFailureFault12: '0',
-    //             RunTime22: '3080192',
-    //             LowVoltageFault2: '0',
-    //             SysVoltage2: '1158',
-    //             Fan_Current2: '0',
-    //             CtrlMode2: '1',
-    //             ExhaustPreHighFault2: '0',
-    //             ShortCutFaul2: '0',
-    //             OilGasBarrel_OverTempAlarm2: '0',
-    //             CloseFail2: '0',
-    //             OilGasBarrel_FilterBlockageFault2: '0',
-    //             HMIStartStop2: '0',
-    //             OilGasBarrel_OverTempAlarm12: '0',
-    //             OverVoltageFault2: '0',
-    //             OilGasBarrel_HighPressureFault2: '0',
-    //             Fan_OverloadFault2: '0',
-    //             OilPressureLowFault2: '0',
-    //             PhaseSequenceFault2: '0',
-    //             PhaseFailureFault2: '0',
-    //             RunTime32: '35323904',
-    //             MainMotor_OverTempFault2: '0',
-    //             FluxTotal22: '0.0',
-    //             PowerFault2: '0',
-    //             LoadorUnload2: '0',
-    //             PreMembraneTemperature2: '-19',
-    //             PhaseSequenceFault12: '0',
-    //             RunTime12: '393216',
-    //             ExhaustTemp12: '0',
-    //             TotalFailureSignal12: '0',
-    //             UnbalanceFault2: '0',
-    //             ExhaustPre2: '0',
-    //             MainMotor_OverloadFault2: '0',
-    //             NoWaterFault2: '0',
-    //             LoadTime2: '539',
-    //             MainMotor_Current2: '0',
-    //             isRun: '-2',
-    //             LeakageLock2: '0',
-    //             OpenFail2: '0',
-    //           },
-    //           readDataDes: null,
-    //           summaryHour: [],
-    //           summaryDay: [],
-    //           history: [],
-    //           dayhistory: [],
-    //           totalInfo: null,
-    //           sign: null,
-    //           cameras: [],
-    //           links: [],
-    //           other1: null,
-    //           other2: null,
-    //           other3: null,
-    //           remarkInfo: null,
-    //           linkInfo: null,
-    //           addrIndex: null,
-    //           warnLogNotOkCount: 0,
-    //         },
-    //       ],
-    //       avginfo: {
-    //         warnFlag: {
-    //           value: 0,
-    //         },
-    //       },
-    //       typeName: '52507注氮机2',
-    //       type: 'nitrogen_525072',
-    //     },
-    //     {
-    //       datalist: [
-    //         {
-    //           msgType: null,
-    //           deviceID: '1818546650996330498',
-    //           strname: '52507注氮机-1',
-    //           strinstallpos: '52507注氮机-1',
-    //           fsectarea: 'null',
-    //           stationname: '52507注氮机-1',
-    //           stationtype: 'redis',
-    //           deviceType: 'nitrogen_525071',
-    //           typeName: '52507注氮机1',
-    //           netStatus: 1,
-    //           warnFlag: 0,
-    //           warnLevel: 0,
-    //           warnLevel_str: '正常',
-    //           syswarnLevel: null,
-    //           syswarnLevel_str: null,
-    //           syswarnLevel_des: null,
-    //           warnTime: null,
-    //           readTime: '2024-08-04 17:59:25',
-    //           warnDes: '',
-    //           frontGateOpenCtrl: null,
-    //           rearGateOpenCtrl: null,
-    //           readData: {
-    //             RunTime41: '131072000',
-    //             NitrogenPurity1: '12',
-    //             ExhaustTemp1: '82.0',
-    //             RunTime21: '786432',
-    //             RunTime1: '1',
-    //             sign: '0',
-    //             OilGasBarrel_SeparatorFault1: '0',
-    //             InputFlux1: '13',
-    //             PhaseFailureFault11: '0',
-    //             LowVoltageFault1: '0',
-    //             SysVoltage1: '1149',
-    //             TotalFailureSignal1: '0',
-    //             Fan_Current1: '0',
-    //             ExhaustPreHighFault1: '0',
-    //             ShortCutFaul1: '0',
-    //             OilGasBarrel_OverTempAlarm1: '0',
-    //             CloseFail1: '0',
-    //             OilGasBarrel_FilterBlockageFault1: '0',
-    //             OilGasBarrel_OverTempAlarm11: '0',
-    //             HMIStartStop1: '0',
-    //             CtrlMode1: '1',
-    //             Fan_OverloadFault1: '0',
-    //             OilPressureLowFault1: '0',
-    //             OverVoltageFault1: '0',
-    //             OilGasBarrel_HighPressureFault1: '0',
-    //             PhaseFailureFault1: '0',
-    //             RunTime31: '70516736',
-    //             FluxTotal21: '0.0',
-    //             FluxTotal1: '0.01',
-    //             MainMotor_OverTempFault1: '0',
-    //             PhaseSequenceFault1: '0',
-    //             PowerFault1: '0',
-    //             LoadorUnload1: '0',
-    //             RunTime11: '3342336',
-    //             PhaseSequenceFault11: '0',
-    //             PreMembraneTemperature1: '25',
-    //             TotalFailureSignal11: '0',
-    //             UnbalanceFault1: '0',
-    //             ExhaustTemp11: '0',
-    //             ExhaustPre1: '89',
-    //             MainMotor_OverloadFault1: '0',
-    //             NoWaterFault1: '0',
-    //             Status1: '0',
-    //             LoadTime1: '1086',
-    //             isRun: '-2',
-    //             LeakageLock1: '0',
-    //             MainMotor_Current1: '95',
-    //             OpenFail1: '0',
-    //             o2Val: '20.23',
-    //             temperature: '19.5',
-    //             fumes_str: '0.2',
-    //           },
-    //           readDataDes: null,
-    //           summaryHour: [],
-    //           summaryDay: [],
-    //           history: [],
-    //           dayhistory: [],
-    //           totalInfo: null,
-    //           sign: null,
-    //           cameras: [],
-    //           links: [],
-    //           other1: null,
-    //           other2: null,
-    //           other3: null,
-    //           remarkInfo: null,
-    //           linkInfo: null,
-    //           addrIndex: null,
-    //           warnLogNotOkCount: 0,
-    //         },
-    //       ],
-    //       avginfo: {
-    //         warnFlag: {
-    //           value: 0,
-    //         },
-    //       },
-    //       typeName: '52507注氮机1',
-    //       type: 'nitrogen_525071',
-    //     },
-    //     {
-    //       subtype: 'sys_nitrogen',
-    //       datalist: [
-    //         {
-    //           msgType: '2',
-    //           deviceID: '1818821502634352642',
-    //           strname: '52507注氮系统',
-    //           strinstallpos: '52507注氮系统',
-    //           fsectarea: 'null',
-    //           stationname: null,
-    //           stationtype: null,
-    //           deviceType: 'sys_nitrogen',
-    //           typeName: '注氮系统',
-    //           netStatus: null,
-    //           warnFlag: 0,
-    //           warnLevel: null,
-    //           warnLevel_str: null,
-    //           syswarnLevel: 0,
-    //           syswarnLevel_str: null,
-    //           syswarnLevel_des: null,
-    //           warnTime: null,
-    //           readTime: '2024-08-01 09:56:28',
-    //           warnDes: '',
-    //           frontGateOpenCtrl: null,
-    //           rearGateOpenCtrl: null,
-    //           readData: {
-    //             sign: '0',
-    //             isRun: '-2',
-    //           },
-    //           readDataDes: null,
-    //           summaryHour: [],
-    //           summaryDay: [],
-    //           history: null,
-    //           dayhistory: [],
-    //           totalInfo: null,
-    //           sign: null,
-    //           cameras: [],
-    //           links: [],
-    //           other1: null,
-    //           other2: null,
-    //           other3: null,
-    //           remarkInfo: null,
-    //           linkInfo: null,
-    //           addrIndex: null,
-    //           warnLogNotOkCount: 0,
-    //         },
-    //       ],
-    //       typeName: '综合监测系统',
-    //       type: 'sys',
-    //     },
-    //   ],
-    // };
-
-    if (!result || result.msgTxt.length < 1) return;
-    let dataSoreDatas = {};
-    let netStatus = 0;
-    result.msgTxt.forEach((item, index) => {
-      if (item.type && item.type.startsWith('nitrogen')) {
-        airCompressorState.length = 0;
-
-        if (item.type.startsWith('nitrogen_52507')) {
-          if (deviceType.value !== 'nitrogen_52507') deviceType.value = 'nitrogen_52507';
-          dataSoreDatas = Object.assign(dataSoreDatas, item['datalist'][0], item['datalist'][0]['readData']);
-          dataSoreDatas['strname' + (index + 1)] = item['datalist'][0]['strname'];
-          if (item['datalist'][0]['netStatus']) {
-            netStatus = 1;
-          }
-        } else {
-          deviceType.value = '';
-          monitorData.value = Object.assign(item['datalist'][0], item['datalist'][0]['readData']);
-          if (monitorData.value['netStatus'] == 1) {
-            netStatus = 1;
+
+  async function getDataSource(systemID) {
+    const res = await getDevice({ devicetype: 'sys', systemID, type: 'all' });
+    if (res) {
+      const result = res;
+
+      // const result = {
+      //   cmd: 'monitordata',
+      //   msgTxt: [
+      //     {
+      //       datalist: [
+      //         {
+      //           msgType: null,
+      //           deviceID: '1818548876779245569',
+      //           strname: '52507注氮机-2',
+      //           strinstallpos: '52507注氮机-2',
+      //           fsectarea: 'null',
+      //           stationname: '52507注氮机-2',
+      //           stationtype: 'redis',
+      //           deviceType: 'nitrogen_525072',
+      //           typeName: '52507注氮机2',
+      //           netStatus: 1,
+      //           warnFlag: 0,
+      //           warnLevel: 0,
+      //           warnLevel_str: '正常',
+      //           syswarnLevel: null,
+      //           syswarnLevel_str: null,
+      //           syswarnLevel_des: null,
+      //           warnTime: null,
+      //           readTime: '2024-08-04 17:59:25',
+      //           warnDes: '',
+      //           frontGateOpenCtrl: null,
+      //           rearGateOpenCtrl: null,
+      //           readData: {
+      //             FluxTotal12: '0.0',
+      //             RunTime42: '131072000',
+      //             NitrogenPurity2: '26',
+      //             ExhaustTemp2: '25.0',
+      //             Status2: '0',
+      //             RunTime2: '0',
+      //             sign: '0',
+      //             OilGasBarrel_SeparatorFault2: '0',
+      //             TotalFailureSignal2: '0',
+      //             InputFlux2: '5',
+      //             PhaseFailureFault12: '0',
+      //             RunTime22: '3080192',
+      //             LowVoltageFault2: '0',
+      //             SysVoltage2: '1158',
+      //             Fan_Current2: '0',
+      //             CtrlMode2: '1',
+      //             ExhaustPreHighFault2: '0',
+      //             ShortCutFaul2: '0',
+      //             OilGasBarrel_OverTempAlarm2: '0',
+      //             CloseFail2: '0',
+      //             OilGasBarrel_FilterBlockageFault2: '0',
+      //             HMIStartStop2: '0',
+      //             OilGasBarrel_OverTempAlarm12: '0',
+      //             OverVoltageFault2: '0',
+      //             OilGasBarrel_HighPressureFault2: '0',
+      //             Fan_OverloadFault2: '0',
+      //             OilPressureLowFault2: '0',
+      //             PhaseSequenceFault2: '0',
+      //             PhaseFailureFault2: '0',
+      //             RunTime32: '35323904',
+      //             MainMotor_OverTempFault2: '0',
+      //             FluxTotal22: '0.0',
+      //             PowerFault2: '0',
+      //             LoadorUnload2: '0',
+      //             PreMembraneTemperature2: '-19',
+      //             PhaseSequenceFault12: '0',
+      //             RunTime12: '393216',
+      //             ExhaustTemp12: '0',
+      //             TotalFailureSignal12: '0',
+      //             UnbalanceFault2: '0',
+      //             ExhaustPre2: '0',
+      //             MainMotor_OverloadFault2: '0',
+      //             NoWaterFault2: '0',
+      //             LoadTime2: '539',
+      //             MainMotor_Current2: '0',
+      //             isRun: '-2',
+      //             LeakageLock2: '0',
+      //             OpenFail2: '0',
+      //           },
+      //           readDataDes: null,
+      //           summaryHour: [],
+      //           summaryDay: [],
+      //           history: [],
+      //           dayhistory: [],
+      //           totalInfo: null,
+      //           sign: null,
+      //           cameras: [],
+      //           links: [],
+      //           other1: null,
+      //           other2: null,
+      //           other3: null,
+      //           remarkInfo: null,
+      //           linkInfo: null,
+      //           addrIndex: null,
+      //           warnLogNotOkCount: 0,
+      //         },
+      //       ],
+      //       avginfo: {
+      //         warnFlag: {
+      //           value: 0,
+      //         },
+      //       },
+      //       typeName: '52507注氮机2',
+      //       type: 'nitrogen_525072',
+      //     },
+      //     {
+      //       datalist: [
+      //         {
+      //           msgType: null,
+      //           deviceID: '1818546650996330498',
+      //           strname: '52507注氮机-1',
+      //           strinstallpos: '52507注氮机-1',
+      //           fsectarea: 'null',
+      //           stationname: '52507注氮机-1',
+      //           stationtype: 'redis',
+      //           deviceType: 'nitrogen_525071',
+      //           typeName: '52507注氮机1',
+      //           netStatus: 1,
+      //           warnFlag: 0,
+      //           warnLevel: 0,
+      //           warnLevel_str: '正常',
+      //           syswarnLevel: null,
+      //           syswarnLevel_str: null,
+      //           syswarnLevel_des: null,
+      //           warnTime: null,
+      //           readTime: '2024-08-04 17:59:25',
+      //           warnDes: '',
+      //           frontGateOpenCtrl: null,
+      //           rearGateOpenCtrl: null,
+      //           readData: {
+      //             RunTime41: '131072000',
+      //             NitrogenPurity1: '12',
+      //             ExhaustTemp1: '82.0',
+      //             RunTime21: '786432',
+      //             RunTime1: '1',
+      //             sign: '0',
+      //             OilGasBarrel_SeparatorFault1: '0',
+      //             InputFlux1: '13',
+      //             PhaseFailureFault11: '0',
+      //             LowVoltageFault1: '0',
+      //             SysVoltage1: '1149',
+      //             TotalFailureSignal1: '0',
+      //             Fan_Current1: '0',
+      //             ExhaustPreHighFault1: '0',
+      //             ShortCutFaul1: '0',
+      //             OilGasBarrel_OverTempAlarm1: '0',
+      //             CloseFail1: '0',
+      //             OilGasBarrel_FilterBlockageFault1: '0',
+      //             OilGasBarrel_OverTempAlarm11: '0',
+      //             HMIStartStop1: '0',
+      //             CtrlMode1: '1',
+      //             Fan_OverloadFault1: '0',
+      //             OilPressureLowFault1: '0',
+      //             OverVoltageFault1: '0',
+      //             OilGasBarrel_HighPressureFault1: '0',
+      //             PhaseFailureFault1: '0',
+      //             RunTime31: '70516736',
+      //             FluxTotal21: '0.0',
+      //             FluxTotal1: '0.01',
+      //             MainMotor_OverTempFault1: '0',
+      //             PhaseSequenceFault1: '0',
+      //             PowerFault1: '0',
+      //             LoadorUnload1: '0',
+      //             RunTime11: '3342336',
+      //             PhaseSequenceFault11: '0',
+      //             PreMembraneTemperature1: '25',
+      //             TotalFailureSignal11: '0',
+      //             UnbalanceFault1: '0',
+      //             ExhaustTemp11: '0',
+      //             ExhaustPre1: '89',
+      //             MainMotor_OverloadFault1: '0',
+      //             NoWaterFault1: '0',
+      //             Status1: '0',
+      //             LoadTime1: '1086',
+      //             isRun: '-2',
+      //             LeakageLock1: '0',
+      //             MainMotor_Current1: '95',
+      //             OpenFail1: '0',
+      //             o2Val: '20.23',
+      //             temperature: '19.5',
+      //             fumes_str: '0.2',
+      //           },
+      //           readDataDes: null,
+      //           summaryHour: [],
+      //           summaryDay: [],
+      //           history: [],
+      //           dayhistory: [],
+      //           totalInfo: null,
+      //           sign: null,
+      //           cameras: [],
+      //           links: [],
+      //           other1: null,
+      //           other2: null,
+      //           other3: null,
+      //           remarkInfo: null,
+      //           linkInfo: null,
+      //           addrIndex: null,
+      //           warnLogNotOkCount: 0,
+      //         },
+      //       ],
+      //       avginfo: {
+      //         warnFlag: {
+      //           value: 0,
+      //         },
+      //       },
+      //       typeName: '52507注氮机1',
+      //       type: 'nitrogen_525071',
+      //     },
+      //     {
+      //       subtype: 'sys_nitrogen',
+      //       datalist: [
+      //         {
+      //           msgType: '2',
+      //           deviceID: '1818821502634352642',
+      //           strname: '52507注氮系统',
+      //           strinstallpos: '52507注氮系统',
+      //           fsectarea: 'null',
+      //           stationname: null,
+      //           stationtype: null,
+      //           deviceType: 'sys_nitrogen',
+      //           typeName: '注氮系统',
+      //           netStatus: null,
+      //           warnFlag: 0,
+      //           warnLevel: null,
+      //           warnLevel_str: null,
+      //           syswarnLevel: 0,
+      //           syswarnLevel_str: null,
+      //           syswarnLevel_des: null,
+      //           warnTime: null,
+      //           readTime: '2024-08-01 09:56:28',
+      //           warnDes: '',
+      //           frontGateOpenCtrl: null,
+      //           rearGateOpenCtrl: null,
+      //           readData: {
+      //             sign: '0',
+      //             isRun: '-2',
+      //           },
+      //           readDataDes: null,
+      //           summaryHour: [],
+      //           summaryDay: [],
+      //           history: null,
+      //           dayhistory: [],
+      //           totalInfo: null,
+      //           sign: null,
+      //           cameras: [],
+      //           links: [],
+      //           other1: null,
+      //           other2: null,
+      //           other3: null,
+      //           remarkInfo: null,
+      //           linkInfo: null,
+      //           addrIndex: null,
+      //           warnLogNotOkCount: 0,
+      //         },
+      //       ],
+      //       typeName: '综合监测系统',
+      //       type: 'sys',
+      //     },
+      //   ],
+      // };
+
+      if (!result || result.msgTxt.length < 1) return;
+      let dataSoreDatas = {};
+      let netStatus = 0;
+      result.msgTxt.forEach((item, index) => {
+        if (item.type && item.type.startsWith('nitrogen')) {
+          airCompressorState.length = 0;
+
+          if (item.type.startsWith('nitrogen_52507')) {
+            if (deviceType.value !== 'nitrogen_52507') deviceType.value = 'nitrogen_52507';
+            dataSoreDatas = Object.assign(dataSoreDatas, item['datalist'][0], item['datalist'][0]['readData']);
+            dataSoreDatas['strname' + (index + 1)] = item['datalist'][0]['strname'];
+            if (item['datalist'][0]['netStatus']) {
+              netStatus = 1;
+            }
+          } else {
+            deviceType.value = '';
+            monitorData.value = Object.assign(item['datalist'][0], item['datalist'][0]['readData']);
+            if (monitorData.value['netStatus'] == 1) {
+              netStatus = 1;
+            }
+            airCompressorState.push({
+              id: monitorData.value['deviceID'],
+              deviceType: monitorData.value['deviceType'],
+              HMIStart: monitorData.value['HMIStart'],
+              HMIStop: monitorData.value['HMIStop'],
+            });
           }
-          airCompressorState.push({
-            id: monitorData.value['deviceID'],
-            deviceType: monitorData.value['deviceType'],
-            HMIStart: monitorData.value['HMIStart'],
-            HMIStop: monitorData.value['HMIStop'],
-          });
         }
+      });
+      if (JSON.stringify(dataSoreDatas) !== '{}') {
+        monitorData.value = dataSoreDatas;
       }
-    });
-    if (JSON.stringify(dataSoreDatas) !== '{}') {
-      monitorData.value = dataSoreDatas;
+      monitorNetStatus.value = netStatus;
+      const dataArr = lodash.cloneDeep(echartData.value);
+
+      const airCompressor = { readTime: monitorData.value['readTime'].substring(11) };
+      if (JSON.stringify(dataSoreDatas) === '{}') {
+        airCompressor[`FluxTotal`] = monitorData.value['FluxTotal'] || 0;
+      }
+      // airCompressor[`InputFlux`] = Number(monitorData.value['InputFlux1']) + Number(monitorData.value['InputFlux2']) || null;
+      // if (!airCompressor[`InputFlux`]) {
+      //   airCompressor[`InputFlux`] = monitorData.value['InputFlux'];
+      // }
+      // airCompressor[`InputFlux`] =
+      //   monitorData.value['InputFlux'] || Number(monitorData.value['InputFlux1']) + Number(monitorData.value['InputFlux2']);
+      airCompressor[`InputFlux`] = Number(monitorData.value['InputFlux1'] || 0) + Number(monitorData.value['InputFlux2'] || 0);
+
+      //图表数据
+      if (dataArr.length <= 5) {
+        dataArr.push(airCompressor);
+      } else {
+        dataArr.shift();
+        dataArr.push(airCompressor);
+      }
+      echartData.value = dataArr;
+      refresh.value = true;
+      nextTick(() => {
+        refresh.value = false;
+      });
     }
-    monitorNetStatus.value = netStatus;
-    const dataArr = lodash.cloneDeep(echartData.value);
+  }
 
-    const airCompressor = { readTime: monitorData.value['readTime'].substring(11) };
-    if (JSON.stringify(dataSoreDatas) === '{}') {
-      airCompressor[`FluxTotal`] = monitorData.value['FluxTotal'] || 0;
+  function handlerDevice(data, bol) {
+    kzParam.data = data;
+    kzParam.isFw = bol;
+    if (bol) {
+      modalTitle.value = '一键复位';
+      modalType.value = '1';
+      modalIsShow.value = true;
+      kzParam.data.HMIReset = !data.HMIReset;
+    } else {
+      modalTitle.value = '一键启停';
+      modalType.value = '2';
+      modalIsShow.value = true;
+      kzParam.data.HMIStartStop = !data.HMIStartStop;
     }
-    // airCompressor[`InputFlux`] = Number(monitorData.value['InputFlux1']) + Number(monitorData.value['InputFlux2']) || null;
-    // if (!airCompressor[`InputFlux`]) {
-    //   airCompressor[`InputFlux`] = monitorData.value['InputFlux'];
+  }
+  function handleOK(passWord, handlerState) {
+    console.log(kzParam, 'kz----------');
+    // if (passWord !== '123456') {
+    //   message.warning('密码不正确,请重新输入');
+    //   return;
     // }
-    // airCompressor[`InputFlux`] =
-    //   monitorData.value['InputFlux'] || Number(monitorData.value['InputFlux1']) + Number(monitorData.value['InputFlux2']);
-    airCompressor[`InputFlux`] = monitorData.value['InputFlux'] || 0;
-    airCompressor[`InputFlux1`] = monitorData.value['InputFlux1'] || 0;
-
-    monitorData.value['FluxTotal'] = airCompressor[`InputFlux`];
-    //图表数据
-    if (dataArr.length <= 5) {
-      dataArr.push(airCompressor);
+
+    let data = {};
+    if (kzParam.isFw) {
+      data = {
+        deviceid: kzParam.data.id,
+        devicetype: kzParam.data.deviceType,
+        password: passWord,
+        HMIReset: kzParam.data.HMIReset,
+      };
     } else {
-      dataArr.shift();
-      dataArr.push(airCompressor);
+      data = {
+        deviceid: kzParam.data.id,
+        password: passWord,
+        devicetype: kzParam.data.deviceType,
+        HMIStartStop: kzParam.data.HMIStartStop,
+      };
     }
-    echartData.value = dataArr;
-    refresh.value = true;
-    nextTick(() => {
-      refresh.value = false;
+
+    deviceControlApi(data).then((res) => {
+      // 模拟时开启
+      if (res.success) {
+        modalIsShow.value = false;
+        getDataSource(props.deviceId);
+        if (globalConfig.History_Type == 'remote') {
+          message.success('指令已下发至生产管控平台成功!');
+        } else {
+          message.success('指令已下发成功!');
+        }
+      }
     });
   }
-}
-
-function handlerDevice(data, bol) {
-  kzParam.data = data;
-  kzParam.isFw = bol;
-  if (bol) {
-    modalTitle.value = '一键复位';
-    modalType.value = '1';
-    modalIsShow.value = true;
-    kzParam.data.HMIReset = !data.HMIReset;
-  } else {
-    modalTitle.value = '一键启停';
-    modalType.value = '2';
-    modalIsShow.value = true;
-    kzParam.data.HMIStartStop = !data.HMIStartStop;
-  }
-}
-function handleOK(passWord, handlerState) {
-  console.log(kzParam, 'kz----------');
-  // if (passWord !== '123456') {
-  //   message.warning('密码不正确,请重新输入');
-  //   return;
-  // }
-
-  let data = {};
-  if (kzParam.isFw) {
-    data = {
-      deviceid: kzParam.data.id,
-      devicetype: kzParam.data.deviceType,
-      password: passWord,
-      HMIReset: kzParam.data.HMIReset,
-    };
-  } else {
-    data = {
-      deviceid: kzParam.data.id,
-      password: passWord,
-      devicetype: kzParam.data.deviceType,
-      HMIStartStop: kzParam.data.HMIStartStop,
-    };
+  function handleCancel() {
+    modalIsShow.value = false;
+    modalTitle.value = '';
+    modalType.value = '';
   }
 
-  deviceControlApi(data).then((res) => {
-    // 模拟时开启
-    if (res.success) {
-      modalIsShow.value = false;
-      getDataSource(props.deviceId);
-      if (globalConfig.History_Type == 'remote') {
-        message.success('指令已下发至生产管控平台成功!');
-      } else {
-        message.success('指令已下发成功!');
+  watch([monitorDataGroupNum, loading], ([newMonitorDataGroupNum, newLoading]) => {
+    nextTick(() => {
+      if (newMonitorDataGroupNum && !newLoading) {
+        setModelType(props.modalType, newMonitorDataGroupNum);
       }
-    }
+    });
   });
-}
-function handleCancel() {
-  modalIsShow.value = false;
-  modalTitle.value = '';
-  modalType.value = '';
-}
-
-watch([monitorDataGroupNum, loading], ([newMonitorDataGroupNum, newLoading]) => {
-  nextTick(() => {
-    if (newMonitorDataGroupNum && !newLoading) {
-      setModelType(props.modalType, newMonitorDataGroupNum);
+  // 多套系统,不同点表
+  watch(
+    () => unref(deviceType),
+    async (type: string) => {
+      if (type == 'nitrogen_52507') {
+        const { preMonitorList, preFanMonitorData, nitrogenMonitorData } = await import('../nitrogen.data.dlt1');
+        preMonitorListData.value = preMonitorList;
+        preFanMonitor.value = preFanMonitorData;
+        nitrogenMonitor.value = nitrogenMonitorData;
+      } else {
+        const { preMonitorList, preFanMonitorData, nitrogenMonitorData } = await import('../nitrogen.data.dltj');
+        preMonitorListData.value = preMonitorList;
+        preFanMonitor.value = preFanMonitorData;
+        nitrogenMonitor.value = nitrogenMonitorData;
+      }
+      echartData.value = [];
+    },
+    { immediate: true }
+  );
+
+  watch(
+    () => props.deviceId,
+    async (deviceId) => {
+      if (deviceId) await getCamera(deviceId, playerRef.value);
     }
+  );
+
+  onMounted(async () => {
+    await getMonitor(true);
+    await mountedThree().then(() => {
+      loading.value = false;
+    });
+    // await getCamera(props.deviceId, playerRef.value);
   });
-});
-// 多套系统,不同点表
-watch(
-  () => unref(deviceType),
-  async (type: string) => {
-    if (type == 'nitrogen_52507') {
-      const { preMonitorList, preFanMonitorData, nitrogenMonitorData } = await import('../nitrogen.data.dlt1');
-      preMonitorListData.value = preMonitorList;
-      preFanMonitor.value = preFanMonitorData;
-      nitrogenMonitor.value = nitrogenMonitorData;
-    } else {
-      const { preMonitorList, preFanMonitorData, nitrogenMonitorData } = await import('../nitrogen.data.dltj');
-      preMonitorListData.value = preMonitorList;
-      preFanMonitor.value = preFanMonitorData;
-      nitrogenMonitor.value = nitrogenMonitorData;
-    }
-  },
-  { immediate: true }
-);
-
-watch(
-  () => props.deviceId,
-  async (deviceId) => {
-    if (deviceId) await getCamera(deviceId, playerRef.value);
-  }
-);
 
-onMounted(async () => {
-  await getMonitor(true);
-  await mountedThree().then(() => {
-    loading.value = false;
+  onUnmounted(() => {
+    destroy();
+    if (timer) {
+      clearTimeout(timer);
+      timer = undefined;
+    }
+    removeCamera();
   });
-  // await getCamera(props.deviceId, playerRef.value);
-});
-
-onUnmounted(() => {
-  destroy();
-  if (timer) {
-    clearTimeout(timer);
-    timer = undefined;
-  }
-  removeCamera();
-});
 </script>
 
 <style lang="less" scoped>
-@import '/@/design/theme.less';
-@ventSpace: zxm;
-
-.nitrogen-box {
-  width: 100%;
-  height: 100%;
-  display: flex;
-  justify-content: center;
-}
-
-#nitrogenCss3D {
-  .modal-monitor {
-    width: 200px;
-    position: absolute;
-    left: 0px;
-    top: 0px;
-  }
+  @import '/@/design/theme.less';
+  @ventSpace: zxm;
 
-  &:deep(.win) {
-    margin: 0 !important;
-    background: #00000044;
-  }
-}
-
-.nitrogen-home {
-  width: 100%;
-  height: 100%;
-  position: fixed;
-  z-index: 9999;
-  display: flex;
-  flex-direction: column;
-  justify-content: center;
-  align-items: center;
-  pointer-events: none;
-  top: 20px;
-
-  .nitrogen-container {
+  .nitrogen-box {
     width: 100%;
-    height: calc(100% - 100px);
+    height: 100%;
     display: flex;
-    justify-content: space-between;
-    margin-bottom: 100px;
-    position: relative;
+    justify-content: center;
+  }
 
-    .device-state {
-      width: 100%;
+  #nitrogenCss3D {
+    .modal-monitor {
+      width: 200px;
       position: absolute;
-      top: 20px;
-      color: #e90000;
-      display: flex;
-      justify-content: center;
-      font-size: 20px;
+      left: 0px;
+      top: 0px;
+    }
+
+    &:deep(.win) {
+      margin: 0 !important;
+      background: #00000044;
     }
+  }
 
-    .top-box {
+  .nitrogen-home {
+    width: 100%;
+    height: 100%;
+    position: fixed;
+    z-index: 9999;
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    align-items: center;
+    pointer-events: none;
+    top: 20px;
+
+    .nitrogen-container {
       width: 100%;
-      padding: 10px;
-      overflow: hidden;
+      height: calc(100% - 100px);
       display: flex;
       justify-content: space-between;
-      // margin-top: 40px;
+      margin-bottom: 100px;
+      position: relative;
 
-      .center-item-box {
+      .device-state {
+        width: 100%;
         position: absolute;
-        left: 50%;
-        top: 50px;
-        transform: translate(-48%, 0);
-        width: calc(100% - 720px);
-        height: 50px;
+        top: 20px;
+        color: #e90000;
         display: flex;
-        align-items: center;
-        pointer-events: auto;
+        justify-content: center;
+        font-size: 20px;
+      }
 
-        .top-left {
+      .top-box {
+        width: 100%;
+        padding: 10px;
+        overflow: hidden;
+        display: flex;
+        justify-content: space-between;
+        // margin-top: 40px;
+
+        .center-item-box {
+          position: absolute;
+          left: 50%;
+          top: 50px;
+          transform: translate(-48%, 0);
+          width: calc(100% - 720px);
+          height: 50px;
           display: flex;
-          flex: 1.5;
-          color: #fff;
+          align-items: center;
+          pointer-events: auto;
 
-          .button-box {
-            position: relative;
-            width: auto;
-            height: 32px;
+          .top-left {
             display: flex;
-            align-items: center;
-            justify-content: center;
-            border-radius: 5px;
+            flex: 1.5;
             color: #fff;
-            padding: 10px 15px;
-            margin: 0px 10px;
-            box-sizing: border-box;
-            cursor: pointer;
-            background: linear-gradient(#1fa6cb, #127cb5);
-
-            &:hover {
-              background: linear-gradient(#1fa6cbcc, #127cb5cc);
+
+            .button-box {
+              position: relative;
+              width: auto;
+              height: 32px;
+              display: flex;
+              align-items: center;
+              justify-content: center;
+              border-radius: 5px;
+              color: #fff;
+              padding: 10px 15px;
+              margin: 0px 10px;
+              box-sizing: border-box;
+              cursor: pointer;
+              background: linear-gradient(#1fa6cb, #127cb5);
+
+              &:hover {
+                background: linear-gradient(#1fa6cbcc, #127cb5cc);
+              }
             }
           }
-        }
 
-        .top-center {
-          display: flex;
-          flex: 1;
-          justify-content: center;
-          align-items: center;
-          font-size: 20px;
-          color: #fff;
+          .top-center {
+            display: flex;
+            flex: 1;
+            justify-content: center;
+            align-items: center;
+            font-size: 20px;
+            color: #fff;
 
-          .top-c-label {
-            color: yellow;
+            .top-c-label {
+              color: yellow;
+            }
           }
-        }
-
-        .top-right {
-          display: flex;
-          flex: 2;
-          justify-content: right;
-          align-items: center;
-          color: #fff;
 
-          .control-type {
+          .top-right {
             display: flex;
+            flex: 2;
+            justify-content: right;
+            align-items: center;
             color: #fff;
 
-            .control-title {
-              color: #73e8fe;
+            .control-type {
+              display: flex;
+              color: #fff;
+
+              .control-title {
+                color: #73e8fe;
+              }
             }
           }
         }
-      }
-
-      .lr-box {
-        height: 100%;
-        display: flex;
-        flex-direction: column;
-        position: relative;
-        // overflow: hidden;
-        z-index: 9999;
-        pointer-events: auto;
-        overflow-y: auto;
-        overflow-x: hidden;
 
-        .input-item {
+        .lr-box {
+          height: 100%;
           display: flex;
-          justify-content: space-between;
-          align-items: center;
-          padding: 4px 8px;
-          margin: 6px 0;
-          background-image: linear-gradient(to right, #39deff15, #3977e500);
+          flex-direction: column;
+          position: relative;
+          // overflow: hidden;
+          z-index: 9999;
+          pointer-events: auto;
+          overflow-y: auto;
+          overflow-x: hidden;
 
-          .title {
-            width: 200px;
-          }
+          .input-item {
+            display: flex;
+            justify-content: space-between;
+            align-items: center;
+            padding: 4px 8px;
+            margin: 6px 0;
+            background-image: linear-gradient(to right, #39deff15, #3977e500);
 
-          .title-auto {
-            width: auto;
-          }
+            .title {
+              width: 200px;
+            }
 
-          .input-value {
-            width: 80px;
-            height: 28px;
-            line-height: 28px !important;
-            background: transparent !important;
-            border-color: #228da2 !important;
-            color: #fff !important;
-          }
+            .title-auto {
+              width: auto;
+            }
 
-          .value {
-            width: 100px;
-            color: #00d8ff;
-            padding-right: 20px;
-          }
+            .input-value {
+              width: 80px;
+              height: 28px;
+              line-height: 28px !important;
+              background: transparent !important;
+              border-color: #228da2 !important;
+              color: #fff !important;
+            }
 
-          .unit {
-            width: 80px;
-            text-align: right;
-          }
-        }
-      }
+            .value {
+              width: 100px;
+              color: #00d8ff;
+              padding-right: 20px;
+            }
 
-      .item {
-        width: 305px;
-        height: auto;
-        position: relative;
-        border-radius: 5px;
-        margin-top: 10px;
-        margin-bottom: 0px;
-        pointer-events: auto;
-        color: #fff;
-        // overflow: hidden;
-
-        &:first-child {
-          margin-top: 0px;
+            .unit {
+              width: 80px;
+              text-align: right;
+            }
+          }
         }
 
-        .base-title {
-          color: #fff;
-          margin-bottom: 8px;
-          padding-left: 10px;
+        .item {
+          width: 305px;
+          height: auto;
           position: relative;
-          font-size: 16px;
-
-          &::after {
-            content: '';
-            position: absolute;
-            display: block;
-            width: 4px;
-            height: 12px;
-            top: 7px;
-            left: 0px;
-            background: #45d3fd;
-            border-radius: 4px;
-          }
-        }
+          border-radius: 5px;
+          margin-top: 10px;
+          margin-bottom: 0px;
+          pointer-events: auto;
+          color: #fff;
+          // overflow: hidden;
 
-        .monitor-item {
-          width: 100%;
-          display: flex;
-          flex-direction: row;
-          flex-wrap: wrap;
+          &:first-child {
+            margin-top: 0px;
+          }
 
-          .state-item {
-            width: 50%;
-            padding: 5px;
-            display: flex;
-            align-items: center;
-            justify-content: space-between;
+          .base-title {
+            color: #fff;
+            margin-bottom: 8px;
+            padding-left: 10px;
+            position: relative;
+            font-size: 16px;
 
-            .state-title {
-              width: 100px;
-              color: #ffffffdd;
-              flex: 9;
-              font-size: 14px;
+            &::after {
+              content: '';
+              position: absolute;
+              display: block;
+              width: 4px;
+              height: 12px;
+              top: 7px;
+              left: 0px;
+              background: #45d3fd;
+              border-radius: 4px;
+            }
+          }
 
-              .unit {
-                // color: #ffffffbb;
+          .monitor-item {
+            width: 100%;
+            display: flex;
+            flex-direction: row;
+            flex-wrap: wrap;
+
+            .state-item {
+              width: 50%;
+              padding: 5px;
+              display: flex;
+              align-items: center;
+              justify-content: space-between;
+
+              .state-title {
+                width: 100px;
+                color: #ffffffdd;
+                flex: 9;
+                font-size: 14px;
+
+                .unit {
+                  // color: #ffffffbb;
+                }
+
+                .value {
+                  color: #00d8ff;
+                }
               }
 
-              .value {
-                color: #00d8ff;
+              .state-val {
+                flex: 1;
+                color: #e4a300;
+                margin-right: 5px;
+                text-align: right;
+                font-size: 14px;
               }
             }
-
-            .state-val {
-              flex: 1;
-              color: #e4a300;
-              margin-right: 5px;
-              text-align: right;
-              font-size: 14px;
-            }
           }
-        }
 
-        .signal-box {
-          margin: 5px 0;
-          display: flex;
-          align-items: center;
+          .signal-box {
+            margin: 5px 0;
+            display: flex;
+            align-items: center;
 
-          .signal-title {
-            color: #7af5ff;
-            margin: 0 5px;
-          }
+            .signal-title {
+              color: #7af5ff;
+              margin: 0 5px;
+            }
 
-          &:last-child {
-            margin-right: 0px;
+            &:last-child {
+              margin-right: 0px;
+            }
           }
-        }
 
-        .list-item {
-          padding: 0 10px;
-          display: flex;
-          justify-content: space-between;
-          align-items: center;
+          .list-item {
+            padding: 0 10px;
+            display: flex;
+            justify-content: space-between;
+            align-items: center;
 
-          .item-data-key {
-            color: #ffffff99;
+            .item-data-key {
+              color: #ffffff99;
+            }
           }
-        }
 
-        .item-data-box {
-          color: #fff;
+          .item-data-box {
+            color: #fff;
 
-          .state-icon {
-            display: inline-block;
-            width: 12px;
-            height: 12px;
-            border-radius: 12px;
-          }
+            .state-icon {
+              display: inline-block;
+              width: 12px;
+              height: 12px;
+              border-radius: 12px;
+            }
 
-          .open {
-            border: 5px solid #133a56;
-            background: #4ecb73;
-          }
+            .open {
+              border: 5px solid #133a56;
+              background: #4ecb73;
+            }
 
-          .close {
-            border: 5px solid #192961;
-            background: #6d7898;
+            .close {
+              border: 5px solid #192961;
+              background: #6d7898;
+            }
           }
         }
-      }
 
-      .item-l {
-        width: 100%;
-
-        .monitor-box {
+        .item-l {
           width: 100%;
 
-          .parameter-title {
-            position: relative;
+          .monitor-box {
             width: 100%;
-            height: 14px;
-            margin-top: 10px;
 
-            .icon,
-            span {
-              position: absolute;
-              top: -10px;
+            .parameter-title {
+              position: relative;
+              width: 100%;
+              height: 14px;
+              margin-top: 10px;
+
+              .icon,
+              span {
+                position: absolute;
+                top: -10px;
+              }
             }
-          }
 
-          .group-parameter-title {
-            background-image: linear-gradient(to right, #39a3ff50, #39a3ff00);
+            .group-parameter-title {
+              background-image: linear-gradient(to right, #39a3ff50, #39a3ff00);
 
-            .icon {
-              left: -12px;
-              top: -17px;
-            }
+              .icon {
+                left: -12px;
+                top: -17px;
+              }
 
-            span {
-              left: 18px;
-            }
+              span {
+                left: 18px;
+              }
 
-            .item-col {
-              background-image: linear-gradient(to right, #39a3ff00, #39a3ff10);
+              .item-col {
+                background-image: linear-gradient(to right, #39a3ff00, #39a3ff10);
+              }
             }
-          }
 
-          .device-parameter-title {
-            background-image: linear-gradient(to right, #3df6ff40, #3df6ff00);
+            .device-parameter-title {
+              background-image: linear-gradient(to right, #3df6ff40, #3df6ff00);
 
-            .icon {
-              left: -10px;
-              top: -14px;
-            }
+              .icon {
+                left: -10px;
+                top: -14px;
+              }
 
-            span {
-              left: 18px;
-            }
+              span {
+                left: 18px;
+              }
 
-            .item-col {
-              background-image: linear-gradient(to right, #3df6ff10, #3df6ff00);
+              .item-col {
+                background-image: linear-gradient(to right, #3df6ff10, #3df6ff00);
+              }
             }
-          }
 
-          .monitor-item {
-            .value {
-              color: #00d8ff;
+            .monitor-item {
+              .value {
+                color: #00d8ff;
+              }
             }
           }
         }
-      }
 
-      .right-box {
-        width: 300px;
-        margin-top: 50px;
-      }
+        .right-box {
+          width: 300px;
+          margin-top: 50px;
+        }
 
-      .left-box {
-        width: 335px;
-        margin-top: 80px;
+        .left-box {
+          width: 335px;
+          margin-top: 80px;
+        }
       }
-    }
 
-    &:deep(.win) {
-      width: 100%;
-      margin: 0 !important;
+      &:deep(.win) {
+        width: 100%;
+        margin: 0 !important;
+      }
     }
-  }
 
-  .player-box {
-    position: absolute;
-    height: auto;
-    // width: 100%;
-    right: 0px;
-    bottom: 110px;
-    z-index: 99999;
-    display: flex;
+    .player-box {
+      position: absolute;
+      height: auto;
+      // width: 100%;
+      right: 0px;
+      bottom: 110px;
+      z-index: 99999;
+      display: flex;
 
-    #LivePlayerBox {
-      width: auto !important;
+      #LivePlayerBox {
+        width: auto !important;
+      }
     }
   }
-}
-
-&:deep(.main) {
-  .title {
-    height: 34px;
-    text-align: center;
-    font-weight: 600;
-    color: #7af5ff;
-    // background-image: url('../../../assets/img/yfj/light.png');
-    background-repeat: no-repeat;
-    background-position-x: center;
-    background-position-y: 100%;
-    background-size: 80%;
-    font-size: 16px;
-  }
 
-  .monitor-item {
-    width: 200px;
-    display: flex;
-    flex-direction: row;
-    width: auto;
-    margin-bottom: 3px;
+  &:deep(.main) {
+    .title {
+      height: 34px;
+      text-align: center;
+      font-weight: 600;
+      color: #7af5ff;
+      // background-image: url('../../../assets/img/yfj/light.png');
+      background-repeat: no-repeat;
+      background-position-x: center;
+      background-position-y: 100%;
+      background-size: 80%;
+      font-size: 16px;
+    }
 
-    .monitor-val {
-      color: #ffb700;
+    .monitor-item {
+      width: 200px;
       display: flex;
+      flex-direction: row;
       width: auto;
+      margin-bottom: 3px;
 
-      .val {
-        width: 80px;
-        font-size: 14px;
-      }
+      .monitor-val {
+        color: #ffb700;
+        display: flex;
+        width: auto;
 
-      .unit {
-        color: #ffffffbb;
-        font-size: 14px;
+        .val {
+          width: 80px;
+          font-size: 14px;
+        }
+
+        .unit {
+          color: #ffffffbb;
+          font-size: 14px;
+        }
       }
     }
-  }
 
-  .monitor-title {
-    width: 100px;
-    color: #7af5ff;
-    font-weight: 400;
-    font-size: 14px;
-  }
+    .monitor-title {
+      width: 100px;
+      color: #7af5ff;
+      font-weight: 400;
+      font-size: 14px;
+    }
 
-  .signal-item {
-    display: flex;
-    justify-content: space-between;
-
-    // margin-bottom: 5px;
-    .signal-round {
-      display: inline-block;
-      width: 8px;
-      height: 8px;
-      border-radius: 50%;
-      margin: 0 10px;
-      position: relative;
+    .signal-item {
+      display: flex;
+      justify-content: space-between;
 
-      &::after {
-        display: block;
-        content: '';
-        position: absolute;
-        width: 12px;
-        height: 12px;
-        top: -2px;
-        left: -2px;
+      // margin-bottom: 5px;
+      .signal-round {
+        display: inline-block;
+        width: 8px;
+        height: 8px;
         border-radius: 50%;
+        margin: 0 10px;
+        position: relative;
+
+        &::after {
+          display: block;
+          content: '';
+          position: absolute;
+          width: 12px;
+          height: 12px;
+          top: -2px;
+          left: -2px;
+          border-radius: 50%;
+        }
       }
-    }
 
-    .signal-round-gry {
-      background-color: #858585;
+      .signal-round-gry {
+        background-color: #858585;
 
-      &::after {
-        background-color: #85858544;
-        box-shadow: 0 0 1px 1px #85858599;
+        &::after {
+          background-color: #85858544;
+          box-shadow: 0 0 1px 1px #85858599;
+        }
       }
-    }
 
-    .signal-round-run {
-      background-color: #67fc00;
+      .signal-round-run {
+        background-color: #67fc00;
 
-      &::after {
-        background-color: #67fc0044;
-        box-shadow: 0 0 1px 1px #c6ff77;
+        &::after {
+          background-color: #67fc0044;
+          box-shadow: 0 0 1px 1px #c6ff77;
+        }
       }
-    }
 
-    .signal-round-warning {
-      background-color: #e9170b;
+      .signal-round-warning {
+        background-color: #e9170b;
 
-      &::after {
-        background-color: #e9170b44;
-        box-shadow: 0 0 1px 1px #e9170b;
+        &::after {
+          background-color: #e9170b44;
+          box-shadow: 0 0 1px 1px #e9170b;
+        }
       }
     }
   }
-}
 
-:deep(.zxm-radio-wrapper) {
-  color: #fff !important;
-}
+  :deep(.zxm-radio-wrapper) {
+    color: #fff !important;
+  }
 </style>

+ 23 - 24
src/views/vent/monitorManager/gateMonitor/gate.threejs.ts

@@ -161,7 +161,7 @@ export function computePlay(data, maxarea, isFirst = false) {
   // data['frontArea'] = 70;
   // data['rearArea'] = 40;
 
-  if (data.rearPresentValue1 || data.frontPresentValue1 || data.rearPresentValue2 || data.frontPresentValue2) {
+  if (fmType === 'fmWindowHjg' && (data.rearPresentValue1 || data.frontPresentValue1 || data.rearPresentValue2 || data.frontPresentValue2)) {
     maxarea = 90;
     rotationParam.frontLeftDeg0 = (90 / maxarea) * Number(isFirst ? 0 : data.frontPresentValue1);
     rotationParam.frontRightDeg0 = (90 / maxarea) * Number(isFirst ? 0 : data.rearPresentValue1);
@@ -174,28 +174,24 @@ export function computePlay(data, maxarea, isFirst = false) {
 
     // rotationParam.backLeftDeg1 = 90;
 
-    if (fmType === 'fmWindowHjg' && fmWindowHjg) {
-      fmWindowHjg.playWindow(rotationParam, 1);
-      fmWindowHjg.playWindow(rotationParam, 2);
-      fmWindowHjg.playWindow(rotationParam, 3);
-      fmWindowHjg.playWindow(rotationParam, 4);
-    }
-  } else if (data.frontArea && data.rearArea) {
+    fmWindowHjg.playWindow(rotationParam, 1);
+    fmWindowHjg.playWindow(rotationParam, 2);
+    fmWindowHjg.playWindow(rotationParam, 3);
+    fmWindowHjg.playWindow(rotationParam, 4);
+  } else if (fmType === 'fmWindow' && data.frontPresentValue1 && data.frontPresentValue2 && data.rearPresentValue1 && data.rearPresentValue2) {
     maxarea = 90;
-    rotationParam.frontLeftDeg0 = (90 / maxarea) * Number(isFirst ? 0 : data.frontArea);
-    rotationParam.frontRightDeg0 = (90 / maxarea) * Number(isFirst ? 0 : data.frontArea);
-    rotationParam.frontLeftDeg1 = (90 / maxarea) * Number(data.frontArea) || 0;
-    rotationParam.frontRightDeg1 = (90 / maxarea) * Number(data.frontArea) || 0;
-    rotationParam.backLeftDeg0 = (90 / maxarea) * Number(isFirst ? 0 : data.rearArea);
-    rotationParam.backRightDeg0 = (90 / maxarea) * Number(isFirst ? 0 : data.rearArea);
-    rotationParam.backLeftDeg1 = (90 / maxarea) * Number(data.rearArea) || 0;
-    rotationParam.backRightDeg1 = (90 / maxarea) * Number(data.rearArea) || 0;
-    if (fmType === 'fmWindow' && fmWindow) {
-      fmWindow.playWindow(rotationParam, 1);
-      fmWindow.playWindow(rotationParam, 2);
-      fmWindow.playWindow(rotationParam, 3);
-      fmWindow.playWindow(rotationParam, 4);
-    }
+    rotationParam.frontLeftDeg0 = (90 / maxarea) * Number(isFirst ? 0 : data.frontPresentValue1);
+    rotationParam.frontRightDeg0 = (90 / maxarea) * Number(isFirst ? 0 : data.frontPresentValue2);
+    rotationParam.frontLeftDeg1 = (90 / maxarea) * Number(data.frontPresentValue1) || 0;
+    rotationParam.frontRightDeg1 = (90 / maxarea) * Number(data.frontPresentValue2) || 0;
+    rotationParam.backLeftDeg0 = (90 / maxarea) * Number(isFirst ? 0 : data.rearPresentValue1);
+    rotationParam.backRightDeg0 = (90 / maxarea) * Number(isFirst ? 0 : data.rearPresentValue2);
+    rotationParam.backLeftDeg1 = (90 / maxarea) * Number(data.rearPresentValue1) || 0;
+    rotationParam.backRightDeg1 = (90 / maxarea) * Number(data.rearPresentValue2) || 0;
+    fmWindow.playWindow(rotationParam, 1);
+    fmWindow.playWindow(rotationParam, 2);
+    fmWindow.playWindow(rotationParam, 3);
+    fmWindow.playWindow(rotationParam, 4);
   }
 }
 
@@ -501,6 +497,7 @@ export const mountedThree = (playerDom) => {
         fmTwoSs.mountedThree(playerDom);
         fmXr = new FmXR(model);
         fmXr.mountedThree(playerDom);
+        resolve(null);
         break;
       case 'zmjthjg': //黄家沟
         const FmNoSubStation = await import('./gate.threejs.noStation');
@@ -508,6 +505,7 @@ export const mountedThree = (playerDom) => {
         if (fm3) fm3.mountedThree(playerDom);
         fmXr = new FmXR(model);
         fmXr.mountedThree(playerDom);
+        resolve(null);
         break;
       case 'gsgszdek': //大海则
         fmWindowHjg = new FmDc(model);
@@ -516,6 +514,7 @@ export const mountedThree = (playerDom) => {
         fm3.mountedThree(playerDom);
         fmXr = new FmXR(model);
         fmXr.mountedThree(playerDom);
+        resolve(null);
         break;
       case 'sdmtjtbltmk': //补连塔
         fm3 = new Fm3(model);
@@ -525,12 +524,12 @@ export const mountedThree = (playerDom) => {
         // 三道门
         fmThreeTl = new FmThreeTl(model);
         if (fmThreeTl) fmThreeTl.mountedThree(playerDom);
+        resolve(null);
         break;
       default:
-        debugger;
         // 根据字典加载模型
         const dictCodes = getDictItemsByCode('gateStyle');
-        if (dictCodes.length > 0) {
+        if (dictCodes && dictCodes.length > 0) {
           for (let i = 0; i < dictCodes.length; i++) {
             const dict = dictCodes[i];
             switch (dict.value) {

+ 4 - 0
src/views/vent/monitorManager/gateMonitor/gate.threejs.window.hjg.ts

@@ -370,6 +370,10 @@ class FmDcHJG {
 
   playWindow(rotationParam, flag) {
     if (
+      !this.windowsActionArr.frontLeftWindow ||
+      !this.windowsActionArr.frontRightWindow ||
+      !this.windowsActionArr.backLeftWindow ||
+      !this.windowsActionArr.backRightWindow ||
       this.windowsActionArr.frontLeftWindow.length <= 0 ||
       this.windowsActionArr.frontRightWindow.length <= 0 ||
       this.windowsActionArr.backLeftWindow.length <= 0 ||

+ 4 - 0
src/views/vent/monitorManager/gateMonitor/gate.threejs.window.ts

@@ -370,6 +370,10 @@ class FmDc {
 
   playWindow(rotationParam, flag) {
     if (
+      !this.windowsActionArr.frontLeftWindow ||
+      !this.windowsActionArr.frontRightWindow ||
+      !this.windowsActionArr.backLeftWindow ||
+      !this.windowsActionArr.backRightWindow ||
       this.windowsActionArr.frontLeftWindow.length <= 0 ||
       this.windowsActionArr.frontRightWindow.length <= 0 ||
       this.windowsActionArr.backLeftWindow.length <= 0 ||

+ 28 - 4
src/views/vent/monitorManager/gateMonitor/index.vue

@@ -29,11 +29,17 @@
         <div v-if="hasPermission('btn:control') && selectData.ndoorcount == '3'" class="button-box" @click="playAnimation(9)">关闭中间门</div>
         <div v-if="hasPermission('btn:control')" class="button-box" @click="playAnimation(3)">打开后门</div>
         <div v-if="hasPermission('btn:control')" class="button-box" @click="playAnimation(4)">关闭后门</div>
-        <div v-if="hasPermission('btn:totalControl') || selectData['isShowGatesContrl']" class="button-box" @click="playAnimation(5)">同时打开</div>
-        <div v-if="hasPermission('btn:totalControl') || selectData['isShowGatesContrl']" class="button-box" @click="playAnimation(6)">同时关闭</div>
+        <div v-if="hasPermission('btn:totalControl') || selectData['isShowGatesContrl'] == 1" class="button-box" @click="playAnimation(5)"
+          >同时打开</div
+        >
+        <div v-if="hasPermission('btn:totalControl') || selectData['isShowGatesContrl'] == 1" class="button-box" @click="playAnimation(6)"
+          >同时关闭</div
+        >
         <template v-if="selectData['gateStyle'] && selectData['gateStyle'].includes('fm_fc')">
           <div v-if="hasPermission('btn:controlWindow')" class="button-box" @click="playAnimation(10)">A窗控制</div>
           <div v-if="hasPermission('btn:controlWindow')" class="button-box" @click="playAnimation(11)">B窗控制</div>
+          <div v-if="hasPermission('btn:controlWindow')" class="button-box" @click="playAnimation(12)">C窗控制</div>
+          <div v-if="hasPermission('btn:controlWindow')" class="button-box" @click="playAnimation(13)">D窗控制</div>
         </template>
       </div>
       <!-- 控制模式 -->
@@ -650,6 +656,16 @@
         modalType.value = '11';
         modalIsShow.value = true;
         break;
+      case 12: // 风窗控制
+        modalTitle.value = 'C窗控制';
+        modalType.value = '12';
+        modalIsShow.value = true;
+        break;
+      case 13: // 风窗控制
+        modalTitle.value = 'D窗控制';
+        modalType.value = '13';
+        modalIsShow.value = true;
+        break;
     }
 
     if (globalConfig?.simulatedPassword) {
@@ -859,11 +875,19 @@
         }
         break;
       case '10': // 前(A)窗控制
-        data.paramcode = 'frontSetValue';
+        data.paramcode = 'frontSetValue1';
         data.value = value;
         break;
       case '11': // 后(B)窗控制
-        data.paramcode = 'rearSetValue';
+        data.paramcode = 'frontSetValue2';
+        data.value = value;
+        break;
+      case '12': // 后(B)窗控制
+        data.paramcode = 'rearSetValue1';
+        data.value = value;
+        break;
+      case '13': // 后(B)窗控制
+        data.paramcode = 'rearSetValue2';
         data.value = value;
         break;
     }

+ 1 - 1
src/views/vent/monitorManager/gateMonitor/modal.vue

@@ -5,7 +5,7 @@
         <ExclamationCircleFilled style="color: #ffb700; font-size: 30px" />
         <div class="warning-text">您是否要进行{{ title }}操作?</div>
       </div>
-      <div v-if="type == '10' || type == '11'">
+      <div v-if="type == '10' || type == '11' || type == '12' || type == '13'">
         <div class="vent-flex-row input-box">
           <div class="label">风窗开启角度:</div>
           <a-input-number size="small" placeholder="0" :min="0" v-model:value="value" />