Browse Source

潞宁智能注氮系统-提交

lxh 5 months ago
parent
commit
a035c8231a

BIN
src/assets/images/zd-model.png


+ 0 - 425
src/views/vent/monitorManager/compressor/components/ceshi.json

@@ -1,425 +0,0 @@
-{
-    "success": true,
-    "message": "",
-    "code": 200,
-    "result": {
-        "cmd": "monitordata",
-        "msgTxt": [
-            {
-                "datalist": [
-                    {
-                        "msgType": null,
-                        "deviceID": "1998575087573454850",
-                        "strname": "副井制氮机房",
-                        "strinstallpos": "副井制氮机房",
-                        "fsectarea": "null",
-                        "stationname": "副井制氮机房",
-                        "stationtype": "plc",
-                        "deviceType": "nitrogen_new",
-                        "typeName": null,
-                        "netStatus": 1,
-                        "warnFlag": 0,
-                        "warnLevel": 0,
-                        "warnLevel_str": "正常",
-                        "syswarnLevel": null,
-                        "syswarnLevel_str": null,
-                        "syswarnLevel_des": null,
-                        "warnTime": null,
-                        "readTime": "2025-12-10 13:33:53",
-                        "warnDes": "",
-                        "frontGateOpenCtrl": null,
-                        "rearGateOpenCtrl": null,
-                        "readData": {
-                            "kyj2_klqsy_sj": "0.00",
-                            "kyj1_rhysy_sj": "703.00",
-                            "zd2_ld": "0.00",
-                            "kyjf_wjwd": "7.21",
-                            "kyj1_yy": "0.00",
-                            "kyj1_ylqsy_sj": "203.00",
-                            "zd2_kz": "0",
-                            "kyj1_xqwd_a": "6.00",
-                            "kyj2_xqwd_c": "5.00",
-                            "kyj1_xqwd_b": "7.00",
-                            "kyj2_xqwd_b": "4.00",
-                            "kyj2_xqwd_a": "5.00",
-                            "kyj1_djq_zd": "0.00",
-                            "kyj1_zjq_zd": "0.00",
-                            "kyj1_xqwd_c": "6.00",
-                            "kyj2_zjq_zd": "0.00",
-                            "kyj2_djq_zd": "0.01",
-                            "kyjf_hjsd": "37.21",
-                            "zd1_gz": "0",
-                            "kyj2_pqwd": "4.00",
-                            "kyj2_rhysy_sj": "0.00",
-                            "kyj1_klqsy_sj": "703.00",
-                            "cqg3_wd": "6.37",
-                            "kyj2_zjscdy": "393.00",
-                            "kyj1_jqwd": "9.30",
-                            "kyj2_zjscdl": "0.00",
-                            "kyj2_gqyl": "-0.29",
-                            "kyj1_yfqsy_sj": "703.00",
-                            "kyj1_rhzsy_sj": "703.00",
-                            "zd1_ljll": "0.00",
-                            "cqg1_wd": "11.33",
-                            "kyj2_jzsj": "0.00",
-                            "kyj1_hzc_wd": "7.00",
-                            "kyj2_xtwd": "6.00",
-                            "zd2_zt": "0",
-                            "zg_ssll": "0.00",
-                            "kyj2_yxzt": "2",
-                            "zd2_sd": "0",
-                            "kyj1_yxzt_str": "设备已停止",
-                            "zd2_cd": "0.00",
-                            "zd2_ssll": "0.00",
-                            "cqg3_yl": "0.00",
-                            "kyj1_zjh_zd": "0.00",
-                            "kyj2_yxsj": "0.00",
-                            "kyj2_gz": "19",
-                            "zd1_sd": "0",
-                            "zg_yl": "0.00",
-                            "zd2_gz": "0",
-                            "cqg1_yl": "0.00",
-                            "kyj2_zjscgl": "0.00",
-                            "sign": "0",
-                            "kyj1_zjscgl": "0.00",
-                            "pds_hhsd": "43.03",
-                            "zd1_cd": "79.00",
-                            "cqg2_wd": "4.35",
-                            "pds_hjwd": "4.18",
-                            "zd1_ssll": "0.00",
-                            "zd2_yl": "0.00",
-                            "kyj1_djh_zd": "0.00",
-                            "kyj2_yy": "0.00",
-                            "pds_zs": "64.10",
-                            "kyj1_yxsj": "703.00",
-                            "zd1_kz": "0",
-                            "kyj2_zjdl1": "0.00",
-                            "kyj2_zjdl2": "0.00",
-                            "kyj2_zjdl3": "0.00",
-                            "zg_ljll": "0.00",
-                            "zd1_ld": "-80.00",
-                            "kyj1_qzc_wd": "7.00",
-                            "kyj2_zjh_zd": "0.00",
-                            "kyj1_gz_str": "无",
-                            "kyj1_xtwd": "8.00",
-                            "zd2_yx": "0",
-                            "kyj2_yfqsy_sj": "0.00",
-                            "kyj2_rhzsy_sj": "0.00",
-                            "zd1_yl": "0.00",
-                            "kyj1_yxzt": "10",
-                            "kyj2_hzc_wd": "5.00",
-                            "kyjf_zs": "74.30",
-                            "kyj1_jzsj": "595.00",
-                            "cqg2_yl": "0.00",
-                            "kyj1_gz": "0",
-                            "zd1_yx": "0",
-                            "kyj2_jqwd": "9.20",
-                            "kyj2_ylqsy_sj": "0.00",
-                            "kyj1_gqyl": "-0.30",
-                            "kyj2_djh_zd": "0.08",
-                            "tTime": "2025-12-10 13:33:50",
-                            "zd2_ljll": "0.00",
-                            "kyj1_zjdl3": "0.00",
-                            "kyj1_zjdl2": "0.00",
-                            "kyj1_pqwd": "7.00",
-                            "kyj1_zjdl1": "0.00",
-                            "kyj1_zjscdl": "0.00",
-                            "kyj2_yxzt_str": "急停,请复位!",
-                            "zg_wd": "7.08",
-                            "kyj1_zjscdy": "391.00",
-                            "zd1_zt": "0",
-                            "kyj2_gz_str": "电压过高",
-                            "isRun": "-2",
-                            "kyj2_qzc_wd": "6.00"
-                        },
-                        "readDataDes": null,
-                        "summaryHour": [],
-                        "summaryDay": [],
-                        "history": [],
-                        "dayhistory": [],
-                        "totalInfo": null,
-                        "sign": null,
-                        "cameras": [],
-                        "links": [],
-                        "avgParam": {},
-                        "other1": null,
-                        "other2": null,
-                        "other3": null,
-                        "remarkInfo": null,
-                        "linkInfo": null,
-                        "addrIndex": null,
-                        "warnLogNotOkCount": 0,
-                        "otherInfo": null,
-                        "orderNum": 3,
-                        "testFlag": 0,
-                        "strRemark": null,
-                        "isUnderground": "0",
-                        "groupNumber": "",
-                        "deviceId": 1998575087573454850
-                    },
-                    {
-                        "msgType": null,
-                        "deviceID": "1998596138558738434",
-                        "strname": "副井空压机",
-                        "strinstallpos": "副井空压机",
-                        "fsectarea": "null",
-                        "stationname": "副井空压机",
-                        "stationtype": "plc",
-                        "deviceType": "nitrogen_kyj",
-                        "typeName": null,
-                        "netStatus": 1,
-                        "warnFlag": 0,
-                        "warnLevel": 0,
-                        "warnLevel_str": "正常",
-                        "syswarnLevel": null,
-                        "syswarnLevel_str": null,
-                        "syswarnLevel_des": null,
-                        "warnTime": null,
-                        "readTime": "2025-12-10 13:33:53",
-                        "warnDes": "",
-                        "frontGateOpenCtrl": null,
-                        "rearGateOpenCtrl": null,
-                        "readData": {
-                            "kyj2_klqsy_sj": "1186.00",
-                            "kyj1_rhysy_sj": "464.00",
-                            "kyj3_pqwd": "85.00",
-                            "kyjf_wjwd": "14.89",
-                            "kyj1_yy": "0.00",
-                            "kyj3_gqyl": "0.73",
-                            "kyj1_ylqsy_sj": "464.00",
-                            "kyj1_xqwd_a": "6.00",
-                            "kyj2_xqwd_c": "48.00",
-                            "kyj1_xqwd_b": "6.00",
-                            "kyj2_xqwd_b": "50.00",
-                            "kyj2_xqwd_a": "52.00",
-                            "kyj1_djq_zd": "0.02",
-                            "kyj1_zjq_zd": "0.00",
-                            "kyj3_xqwd_a": "73.00",
-                            "kyj3_xqwd_b": "78.00",
-                            "kyj1_xqwd_c": "7.00",
-                            "kyj2_zjq_zd": "1.21",
-                            "kyj3_xqwd_c": "77.00",
-                            "kyj3_zjdl2": "0.00",
-                            "kyj3_djq_zd": "1.63",
-                            "kyj3_zjq_zd": "1.65",
-                            "kyj3_zjdl3": "0.00",
-                            "kyj2_djq_zd": "1.93",
-                            "kyj3_zjdl1": "0.00",
-                            "kyjf_hjsd": "30.95",
-                            "kyj2_pqwd": "84.00",
-                            "kyj2_rhysy_sj": "1186.00",
-                            "kyj3_yxsj": "1938.00",
-                            "kyj1_klqsy_sj": "464.00",
-                            "kyj2_zjscdy": "391.00",
-                            "kyj3_yxzt": "8",
-                            "kyj1_jqwd": "13.70",
-                            "kyj2_zjscdl": "0.00",
-                            "kyj2_gqyl": "0.77",
-                            "kyj1_yfqsy_sj": "464.00",
-                            "kyj1_rhzsy_sj": "464.00",
-                            "kyj3_jzsj": "1852.00",
-                            "kyj2_jzsj": "4646.00",
-                            "kyj3_jqwd": "37.10",
-                            "kyj1_hzc_wd": "9.00",
-                            "kyj2_xtwd": "63.00",
-                            "zg_ssll": "0.00",
-                            "kyj3_yxzt_str": "自动加载运行",
-                            "kyj2_yxzt": "7",
-                            "kyj3_rhzsy_sj": "1938.00",
-                            "kyj3_yfqsy_sj": "1938.00",
-                            "kyj1_yxzt_str": "加热中",
-                            "kyj3_zjscdy": "390.00",
-                            "kyj1_zjh_zd": "0.00",
-                            "kyj3_zjscdl": "0.00",
-                            "kyj3_ylqsy_sj": "1437.00",
-                            "kyj2_yxsj": "5965.00",
-                            "kyj2_gz": "0",
-                            "zg_yl": "0.00",
-                            "kyj3_zjscgl": "0.00",
-                            "kyj2_zjscgl": "0.00",
-                            "sign": "0",
-                            "kyj1_zjscgl": "0.00",
-                            "pds_hhsd": "18.94",
-                            "pds_hjwd": "20.16",
-                            "kyj3_gz": "0",
-                            "kyj1_djh_zd": "0.04",
-                            "kyj2_yy": "0.36",
-                            "pds_zs": "48.30",
-                            "kyj1_yxsj": "4478.00",
-                            "kyj3_qzc_wd": "56.00",
-                            "kyj2_zjdl1": "0.00",
-                            "kyj2_zjdl2": "0.00",
-                            "kyj3_djh_zd": "2.84",
-                            "kyj2_zjdl3": "0.00",
-                            "zg_ljll": "0.00",
-                            "kyj1_qzc_wd": "10.00",
-                            "kyj2_zjh_zd": "1.34",
-                            "kyj3_gz_str": "无",
-                            "kyj1_gz_str": "无",
-                            "kyj3_rhysy_sj": "1938.00",
-                            "kyj1_xtwd": "9.00",
-                            "kyj2_yfqsy_sj": "1186.00",
-                            "kyj2_rhzsy_sj": "1186.00",
-                            "kyj3_xtwd": "79.00",
-                            "kyj3_yy": "0.73",
-                            "kyj1_yxzt": "27",
-                            "kyj2_hzc_wd": "26.00",
-                            "kyj3_hzc_wd": "30.00",
-                            "kyjf_zs": "62.90",
-                            "kyj1_jzsj": "2528.00",
-                            "kyj1_gz": "0",
-                            "kyj2_jqwd": "41.40",
-                            "kyj2_ylqsy_sj": "1186.00",
-                            "kyj1_gqyl": "0.75",
-                            "kyj2_djh_zd": "1.11",
-                            "tTime": "2025-12-10 13:33:50",
-                            "kyj1_zjdl3": "0.00",
-                            "kyj1_zjdl2": "0.00",
-                            "kyj1_pqwd": "4.00",
-                            "kyj1_zjdl1": "0.00",
-                            "kyj1_zjscdl": "0.00",
-                            "kyj2_yxzt_str": "自动卸载运行",
-                            "zg_wd": "14.35",
-                            "kyj1_zjscdy": "390.00",
-                            "kyj2_gz_str": "无",
-                            "kyj3_klqsy_sj": "1938.00",
-                            "isRun": "-2",
-                            "kyj2_qzc_wd": "45.00",
-                            "kyj3_zjh_zd": "1.92"
-                        },
-                        "readDataDes": null,
-                        "summaryHour": [],
-                        "summaryDay": [],
-                        "history": [],
-                        "dayhistory": [],
-                        "totalInfo": null,
-                        "sign": null,
-                        "cameras": [],
-                        "links": [],
-                        "avgParam": {},
-                        "other1": null,
-                        "other2": null,
-                        "other3": null,
-                        "remarkInfo": null,
-                        "linkInfo": null,
-                        "addrIndex": null,
-                        "warnLogNotOkCount": 0,
-                        "otherInfo": null,
-                        "orderNum": 4,
-                        "testFlag": 0,
-                        "strRemark": null,
-                        "isUnderground": "0",
-                        "groupNumber": "",
-                        "deviceId": 1998596138558738434
-                    },
-                    {
-                        "msgType": null,
-                        "deviceID": "1765978085252931586",
-                        "strname": "空压机",
-                        "strinstallpos": "空压机",
-                        "fsectarea": "null",
-                        "stationname": "空压机",
-                        "stationtype": "plc",
-                        "deviceType": "nitrogen_air_compressor",
-                        "typeName": "空压机",
-                        "netStatus": 0,
-                        "warnFlag": 0,
-                        "warnLevel": 0,
-                        "warnLevel_str": "正常",
-                        "syswarnLevel": null,
-                        "syswarnLevel_str": null,
-                        "syswarnLevel_des": null,
-                        "warnTime": null,
-                        "readTime": null,
-                        "warnDes": null,
-                        "frontGateOpenCtrl": null,
-                        "rearGateOpenCtrl": null,
-                        "readData": {
-                            "tTime": null
-                        },
-                        "readDataDes": null,
-                        "summaryHour": [],
-                        "summaryDay": [],
-                        "history": [],
-                        "dayhistory": [],
-                        "totalInfo": null,
-                        "sign": null,
-                        "cameras": [],
-                        "links": [],
-                        "avgParam": {},
-                        "other1": null,
-                        "other2": null,
-                        "other3": null,
-                        "remarkInfo": null,
-                        "linkInfo": null,
-                        "addrIndex": null,
-                        "warnLogNotOkCount": 0,
-                        "otherInfo": null,
-                        "orderNum": 11,
-                        "testFlag": 0,
-                        "strRemark": null
-                    },
-                    {
-                        "msgType": null,
-                        "deviceID": "1765901318806863873",
-                        "strname": "注氮机",
-                        "strinstallpos": "注氮机",
-                        "fsectarea": "null",
-                        "stationname": "注氮机",
-                        "stationtype": "plc",
-                        "deviceType": "nitrogen_auto",
-                        "typeName": "制氮机",
-                        "netStatus": 0,
-                        "warnFlag": 0,
-                        "warnLevel": 0,
-                        "warnLevel_str": "正常",
-                        "syswarnLevel": null,
-                        "syswarnLevel_str": null,
-                        "syswarnLevel_des": null,
-                        "warnTime": null,
-                        "readTime": null,
-                        "warnDes": null,
-                        "frontGateOpenCtrl": null,
-                        "rearGateOpenCtrl": null,
-                        "readData": {
-                            "tTime": null
-                        },
-                        "readDataDes": null,
-                        "summaryHour": [],
-                        "summaryDay": [],
-                        "history": [],
-                        "dayhistory": [],
-                        "totalInfo": null,
-                        "sign": null,
-                        "cameras": [],
-                        "links": [],
-                        "avgParam": {},
-                        "other1": null,
-                        "other2": null,
-                        "other3": null,
-                        "remarkInfo": null,
-                        "linkInfo": null,
-                        "addrIndex": null,
-                        "warnLogNotOkCount": 0,
-                        "otherInfo": null,
-                        "orderNum": 12,
-                        "testFlag": 0,
-                        "strRemark": null,
-                        "isUnderground": "0",
-                        "groupNumber": "",
-                        "deviceId": 1765901318806863873
-                    }
-                ],
-                "avginfo": {
-                    "warnFlag": {
-                        "value": 0
-                    }
-                },
-                "typeName": "制氮",
-                "type": "nitrogen",
-                "locallist": []
-            }
-        ]
-    },
-    "timestamp": 1765344835845
-}

+ 725 - 0
src/views/vent/monitorManager/compressor/components/model-tip.vue

@@ -0,0 +1,725 @@
+<template>
+  <div class="model-tip">
+
+    <div v-if="modelType == 'KYJ'">
+      <div class="model-name-kyj">空压机房</div>
+      <div class="model-jx-kyj">至井下</div>
+      <div class="model-cj-kyj">至车间</div>
+      <!-- 运行状态 -->
+      <div class="operate-status-kyj">
+        <div class="status-item">
+          <div class="item-warn">{{ statusData.kyj1_gz == '0' ? '无故障' : '故障' }}</div>
+          <div class="item-yx">{{ statusData.kyj1_yxzt_str }}</div>
+        </div>
+        <div class="status-item">
+          <div class="item-warn">{{ statusData.kyj2_gz == '0' ? '无故障' : '故障' }}</div>
+          <div class="item-yx">{{ statusData.kyj2_yxzt_str }}</div>
+        </div>
+        <div class="status-item">
+          <div class="item-warn">{{ statusData.kyj3_gz == '0' ? '无故障' : '故障' }}</div>
+          <div class="item-yx">{{ statusData.kyj3_yxzt_str }}</div>
+        </div>
+      </div>
+      <!-- 空压机分类 -->
+      <div class="code-kyj-1">1#空压机</div>
+      <div class="code-kyj-2">2#空压机</div>
+      <div class="code-kyj-3">3#空压机</div>
+      <!-- 主管温度 -->
+      <div class="main-temp-kyj">
+        <div class="text-label">主管温度</div>
+        <div class="text-val">
+          <span>{{ statusData.zg_wd }}</span>
+          <span class="text-label">℃</span>
+        </div>
+      </div>
+      <!-- 主管压力 -->
+      <div class="main-yl-kyj">
+        <div class="text-label">主管压力</div>
+        <div class="text-val">
+          <span>{{ statusData.zg_yl }}</span>
+          <span class="text-label">MPa</span>
+        </div>
+      </div>
+      <!-- 瞬时流量 -->
+      <div class="main-ssll-kyj">
+        <div class="text-label">瞬时流量</div>
+        <div class="text-val">
+          <span>{{ statusData.zg_ssll }}</span>
+          <span class="text-label">N.m³/min</span>
+        </div>
+      </div>
+      <!-- 压风机房 -->
+      <div class="yfj-home">
+        <div class="home-title-yfj text-label">压风机房</div>
+        <div class="home-content-yfj">
+          <div class="content-item">
+            <span class="text-label">环境温度</span>
+            <span>{{ statusData.kyjf_wjwd }}</span>
+            <span class="text-label">℃</span>
+          </div>
+          <div class="content-item">
+            <span class="text-label">环境湿度</span>
+            <span>{{ statusData.kyjf_hjsd }}</span>
+            <span class="text-label">%</span>
+          </div>
+          <div class="content-item">
+            <span class="text-label">环境噪音</span>
+            <span>{{ statusData.kyjf_zs }}</span>
+            <span class="text-label">db</span>
+          </div>
+        </div>
+      </div>
+      <!-- 配电室 -->
+      <div class="pds-home">
+        <div class="home-title-pds text-label">配电室</div>
+        <div class="home-content-pds">
+          <div class="content-item">
+            <span class="text-label">环境温度</span>
+            <span>{{ statusData.pds_hjwd }}</span>
+            <span class="text-label">℃</span>
+          </div>
+          <div class="content-item">
+            <span class="text-label">环境湿度</span>
+            <span>{{ statusData.pds_hhsd }}</span>
+            <span class="text-label">%</span>
+          </div>
+          <div class="content-item">
+            <span class="text-label">环境噪音</span>
+            <span>{{ statusData.pds_zs }}</span>
+            <span class="text-label">db</span>
+          </div>
+        </div>
+      </div>
+    </div>
+    <div v-if="modelType == 'ZDJ'">
+      <div class="model-name-zdj">制氮机房</div>
+       <div class="model-jx-zdj">至井下</div>
+      <!-- 运行状态 -->
+      <div class="operate-status-zdj">
+        <div class="status-item">
+          <div class="item-warn">{{ statusData.kyj1_gz == '0' ? '无故障' : '故障' }}</div>
+          <div class="item-yx">{{ statusData.kyj1_yxzt_str }}</div>
+        </div>
+        <div class="status-item">
+          <div class="item-warn">{{ statusData.kyj2_gz == '0' ? '无故障' : '故障' }}</div>
+          <div class="item-yx">{{ statusData.kyj2_yxzt_str }}</div>
+        </div>
+      </div>
+      <!-- 空压机分类 -->
+      <div class="code-zdj-1">1#空压机</div>
+      <div class="code-zdj-2">2#空压机</div>
+      <!-- 制氮机分类 -->
+      <div class="zd-zdj-1">1#制氮机</div>
+      <div class="zd-zdj-2">2#制氮机</div>
+      <!-- 制氮机运行状态 -->
+      <div class="status-zdj-1">{{ statusData.zd1_zt == '0' ? '停机中' : '运行中' }}</div>
+      <div class="status-zdj-2">{{ statusData.zd2_zt == '0' ? '停机中' : '运行中' }}</div>
+      <!-- 储气罐 -->
+      <div class="cqg-zdj-1">1#储气罐&nbsp(空气)</div>
+      <div class="cqg-zdj-2">2#储气罐&nbsp(空气)</div>
+      <div class="cqg-zdj-3">3#储气罐&nbsp(氮气)</div>
+      <!-- 储气温度、压力 -->
+      <div class="zdj-ll">
+        <div class="cq-zdj-item">
+          <span class="text-label">累计流量</span>
+          <span class="text-val">{{ statusData.zd1_ljll }}</span>
+          <span class="text-label">Nm³</span>
+        </div>
+        <div class="cq-zdj-item">
+          <span class="text-label">瞬时流量</span>
+          <span class="text-val">{{ statusData.zd1_ssll }}</span>
+          <span class="text-label">Nm³</span>
+        </div>
+      </div>
+       <div class="zdj-ll1">
+        <div class="cq-zdj-item">
+          <span class="text-label">累计流量</span>
+          <span class="text-val">{{ statusData.zd1_ljll }}</span>
+          <span class="text-label">Nm³</span>
+        </div>
+        <div class="cq-zdj-item">
+          <span class="text-label">瞬时流量</span>
+          <span class="text-val">{{ statusData.zd1_ssll }}</span>
+          <span class="text-label">Nm³</span>
+        </div>
+      </div>
+      <!-- 累计流量,瞬时流量 -->
+        <div class="cqg-zdj-val1">
+        <div class="cq-zdj-item">
+          <span class="text-label">储气罐温度</span>
+          <span class="text-val">{{ statusData.cqg1_wd }}</span>
+          <span class="text-label">℃</span>
+        </div>
+        <div class="cq-zdj-item">
+          <span class="text-label">储气罐压力</span>
+          <span class="text-val">{{ statusData.cqg1_yl }}</span>
+          <span class="text-label">MPa</span>
+        </div>
+      </div>
+      <div class="cqg-zdj-val2">
+        <div class="cq-zdj-item">
+          <span class="text-label">储气罐温度</span>
+          <span class="text-val">{{ statusData.cqg2_wd }}</span>
+          <span class="text-label">℃</span>
+        </div>
+        <div class="cq-zdj-item">
+          <span class="text-label">储气罐压力</span>
+          <span class="text-val">{{ statusData.cqg2_yl }}</span>
+          <span class="text-label">MPa</span>
+        </div>
+      </div>
+      <div class="cqg-zdj-val3">
+        <div class="cq-zdj-item">
+          <span class="text-label">储气罐温度</span>
+          <span class="text-val">{{ statusData.cqg3_wd }}</span>
+          <span class="text-label">℃</span>
+        </div>
+        <div class="cq-zdj-item">
+          <span class="text-label">储气罐压力</span>
+          <span class="text-val">{{ statusData.cqg3_yl }}</span>
+          <span class="text-label">MPa</span>
+        </div>
+      </div>
+      <!-- 主管瞬时流量 -->
+      <div class="main-ssll-zdj">
+        <div class="text-label">瞬时流量</div>
+        <div class="text-val">
+          <span>{{ statusData.zg_ssll }}</span>
+          <span class="text-label">N.m³/min</span>
+        </div>
+      </div>
+      <!-- 主管温度 -->
+      <div class="main-temp-zdj">
+        <div class="text-label">主管温度</div>
+        <div class="text-val">
+          <span>{{ statusData.zg_wd }}</span>
+          <span class="text-label">℃</span>
+        </div>
+      </div>
+      <!-- 主管压力 -->
+      <div class="main-yl-zdj">
+        <div class="text-label">主管压力</div>
+        <div class="text-val">
+          <span>{{ statusData.zg_yl }}</span>
+          <span class="text-label">MPa</span>
+        </div>
+      </div>
+        <!-- 压风机房 -->
+      <div class="zdj-home">
+        <div class="home-title-yfj text-label">压风机房</div>
+        <div class="home-content-yfj">
+          <div class="content-item">
+            <span class="text-label">环境温度</span>
+            <span>{{ statusData.kyjf_wjwd }}</span>
+            <span class="text-label">℃</span>
+          </div>
+          <div class="content-item">
+            <span class="text-label">环境湿度</span>
+            <span>{{ statusData.kyjf_hjsd }}</span>
+            <span class="text-label">%</span>
+          </div>
+          <div class="content-item">
+            <span class="text-label">环境噪音</span>
+            <span>{{ statusData.kyjf_zs }}</span>
+            <span class="text-label">db</span>
+          </div>
+        </div>
+      </div>
+      <!-- 配电室 -->
+      <div class="pds-home1">
+        <div class="home-title-pds text-label">配电室</div>
+        <div class="home-content-pds">
+          <div class="content-item">
+            <span class="text-label">环境温度</span>
+            <span>{{ statusData.pds_hjwd }}</span>
+            <span class="text-label">℃</span>
+          </div>
+          <div class="content-item">
+            <span class="text-label">环境湿度</span>
+            <span>{{ statusData.pds_hhsd }}</span>
+            <span class="text-label">%</span>
+          </div>
+          <div class="content-item">
+            <span class="text-label">环境噪音</span>
+            <span>{{ statusData.pds_zs }}</span>
+            <span class="text-label">db</span>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { ref } from 'vue'
+
+let props = defineProps({
+  modelType: {
+    type: String,
+    default: ''
+  },
+  statusData: {
+    type: Object,
+    default: () => {
+      return {}
+    }
+  }
+})
+
+</script>
+
+<style lang="less" scoped>
+.model-tip {
+  position: relative;
+  width: 100%;
+  height: 100%;
+  background: url('@/assets/images/zd-model.png') no-repeat center;
+  background-size: 100% 100%;
+
+  .model-name-kyj {
+    position: absolute;
+    left: 290px;
+    top: 64px;
+    color: yellow;
+    font-size: 24px;
+  }
+
+  .model-jx-kyj {
+    position: absolute;
+    left: 35px;
+    top: 215px;
+    color: yellow;
+    font-size: 24px;
+  }
+  .model-jx-zdj {
+    position: absolute;
+    left: 15px;
+    bottom: 320px;
+    color: yellow;
+    font-size: 24px;
+  }
+
+  .model-cj-kyj {
+    position: absolute;
+    left: 35px;
+    top: 270px;
+    color: yellow;
+    font-size: 24px;
+  }
+
+  .model-name-zdj {
+    position: absolute;
+    left: 290px;
+    top: 350px;
+    color: yellow;
+    font-size: 24px;
+  }
+
+  .operate-status-kyj {
+    display: flex;
+    flex-direction: column;
+    justify-content: space-between;
+    align-items: center;
+    width: 120px;
+    height: 290px;
+    position: absolute;
+    right: -40px;
+    top: 55px;
+
+    .status-item {
+      display: flex;
+      flex: 1;
+      width: 100%;
+      flex-direction: column;
+      color: #fff;
+      text-align: center;
+
+      &:nth-child(1) {
+        padding-top: 10px;
+      }
+
+      &:nth-child(2) {
+        padding-top: 35px;
+      }
+
+      &:nth-child(3) {
+        padding-top: 35px;
+      }
+    }
+
+    .item-warn {
+      color: yellow;
+    }
+
+    .item-yx {
+      color: #27f00d;
+    }
+  }
+
+  .operate-status-zdj {
+    display: flex;
+    flex-direction: column;
+    justify-content: space-between;
+    align-items: center;
+    width: 120px;
+    height: 250px;
+    position: absolute;
+    right: -48px;
+    bottom: 135px;
+
+    .status-item {
+      display: flex;
+      flex: 1;
+      width: 100%;
+      flex-direction: column;
+      color: #fff;
+      text-align: center;
+
+      &:nth-child(1) {
+        padding-top: 15px;
+      }
+
+      &:nth-child(2) {
+        padding-top: 95px;
+      }
+    }
+
+    .item-warn {
+      color: yellow;
+    }
+
+    .item-yx {
+      color: #27f00d;
+    }
+  }
+
+  .main-temp-kyj {
+    position: absolute;
+    left: 560px;
+    top: 148px;
+    font-size: 12px;
+    color: #fff;
+    display: flex;
+    justify-content: space-between;
+
+
+  }
+
+  .main-temp-zdj {
+    position: absolute;
+    left: 565px;
+    top: 315px;
+    font-size: 12px;
+    color: #fff;
+    display: flex;
+    justify-content: space-between;
+
+
+  }
+
+  .main-yl-kyj {
+    position: absolute;
+    left: 410px;
+    top: 148px;
+    font-size: 12px;
+    color: #fff;
+    display: flex;
+    justify-content: space-between;
+
+
+  }
+
+  .main-yl-zdj {
+    position: absolute;
+    left: 450px;
+    top: 315px;
+    font-size: 12px;
+    color: #fff;
+    display: flex;
+    justify-content: space-between;
+
+
+  }
+
+  .main-ssll-kyj {
+    position: absolute;
+    left: 230px;
+    top: 180px;
+    font-size: 12px;
+    color: #fff;
+    display: flex;
+    justify-content: space-between;
+  }
+
+  .main-ssll-zdj {
+    position: absolute;
+   right: 260px;
+    bottom: 440px;
+    font-size: 12px;
+    color: #fff;
+    display: flex;
+    justify-content: space-between;
+  }
+
+  .yfj-home {
+   position: absolute;
+    left: 18px;
+    top: -30px;
+    width: 120px;
+    height: 110px;
+    color: #fff;
+
+    .home-title-yfj {
+      height: 30px;
+      line-height: 30px;
+      width: 100%;
+      text-align: center;
+    }
+
+    .home-content-yfj {
+      height: calc(100% - 30px);
+      font-size: 12px;
+      display: flex;
+      flex-direction: column;
+      justify-content: space-between;
+
+      .content-item {
+        width: 100%;
+        display: flex;
+        justify-content: space-between;
+      }
+    }
+  }
+
+  .pds-home {
+    position: absolute;
+    left: 18px;
+    top: 80px;
+    width: 120px;
+    height: 110px;
+    color: #fff;
+
+    .home-title-pds {
+      height: 30px;
+      line-height: 30px;
+      width: 100%;
+      text-align: center;
+    }
+
+    .home-content-pds {
+      height: calc(100% - 30px);
+      font-size: 12px;
+      display: flex;
+      flex-direction: column;
+      justify-content: space-between;
+
+      .content-item {
+        width: 100%;
+        display: flex;
+        justify-content: space-between;
+      }
+    }
+  }
+  .zdj-home {
+  position: absolute;
+    left: 18px;
+    bottom: 490px;
+    width: 120px;
+    height: 110px;
+    color: #fff;
+
+    .home-title-yfj {
+      height: 30px;
+      line-height: 30px;
+      width: 100%;
+      text-align: center;
+    }
+
+    .home-content-yfj {
+      height: calc(100% - 30px);
+      font-size: 12px;
+      display: flex;
+      flex-direction: column;
+      justify-content: space-between;
+
+      .content-item {
+        width: 100%;
+        display: flex;
+        justify-content: space-between;
+      }
+    }
+  }
+
+  .pds-home1 {
+   position: absolute;
+    left: 18px;
+    bottom: 385px;
+    width: 120px;
+    height: 110px;
+    color: #fff;
+
+    .home-title-pds {
+      height: 30px;
+      line-height: 30px;
+      width: 100%;
+      text-align: center;
+    }
+
+    .home-content-pds {
+      height: calc(100% - 30px);
+      font-size: 12px;
+      display: flex;
+      flex-direction: column;
+      justify-content: space-between;
+
+      .content-item {
+        width: 100%;
+        display: flex;
+        justify-content: space-between;
+      }
+    }
+  }
+
+  .text-label {
+    color: #00eefffe;
+  }
+
+  .text-val {
+    margin: 0px 10px;
+  }
+
+  .code-kyj-1 {
+    position: absolute;
+    right: 265px;
+    top: 110px;
+    font-size: 12px;
+    color: #fff;
+  }
+
+  .code-kyj-2 {
+    position: absolute;
+    right: 265px;
+    top: 225px;
+     font-size: 12px;
+    color: #fff;
+  }
+
+  .code-kyj-3 {
+    position: absolute;
+    right: 265px;
+    top: 320px;
+     font-size: 12px;
+    color: #fff;
+  }
+
+  .code-zdj-1 {
+    position: absolute;
+    right: 190px;
+    bottom: 300px;
+    font-size: 12px;
+    color: #fff;
+  }
+
+  .code-zdj-2 {
+    position: absolute;
+    right: 190px;
+    bottom: 205px;
+    font-size: 12px;
+    color: #fff;
+  }
+
+  .zd-zdj-1 {
+    position: absolute;
+    left: 260px;
+    bottom: 260px;
+    font-size: 12px;
+    color: #fff;
+  }
+
+  .zd-zdj-2 {
+    position: absolute;
+    left: 260px;
+    bottom: 80px;
+    font-size: 12px;
+    color: #fff;
+  }
+
+  .status-zdj-1 {
+    position: absolute;
+    left: 380px;
+    bottom: 320px;
+    color: #27f00d;
+  }
+
+  .status-zdj-2 {
+    position: absolute;
+    left: 380px;
+    bottom: 130px;
+    color: #27f00d;
+  }
+
+  .cqg-zdj-1 {
+    position: absolute;
+    right: 300px;
+    bottom: 240px;
+    font-size: 12px;
+    color: #fff;
+  }
+
+  .cqg-zdj-2 {
+    position: absolute;
+    left: 440px;
+    bottom: 215px;
+    font-size: 12px;
+    color: #fff;
+  }
+
+  .cqg-zdj-3 {
+    position: absolute;
+    left: 130px;
+    bottom: 235px;
+    font-size: 12px;
+    color: #fff;
+  }
+
+  .cqg-zdj-val1 {
+    position: absolute;
+    right: 280px;
+    bottom: 200px;
+    color: #fff;
+    font-size: 12px;
+  }
+
+  .cqg-zdj-val2 {
+    position: absolute;
+    left: 430px;
+    bottom: 175px;
+    color: #fff;
+    font-size: 12px;
+  }
+
+  .cqg-zdj-val3 {
+    position: absolute;
+    left: 120px;
+    bottom: 200px;
+    color: #fff;
+    font-size: 12px;
+  }
+  .zdj-ll {
+    position: absolute;
+  left: 330px;
+    bottom: 245px;
+    color: #fff;
+    font-size: 12px;
+  }
+  .zdj-ll1 {
+    position: absolute;
+   left: 330px;
+    bottom: 65px;
+    color: #fff;
+    font-size: 12px;
+  }
+
+
+}
+</style>

+ 582 - 428
src/views/vent/monitorManager/compressor/components/nitrogenHome_ln.vue

@@ -1,95 +1,175 @@
 <template>
-  <div id="compressor3D" style="width: 100%; height: 100%; position: absolute; overflow: hidden"></div>
-  <template v-for="(sysItem, sysIndex) in monitorDataGroupArr" :key="sysIndex">
-    <div :id="`compressorCss3D${sysIndex + 1}`" class="threejs-Object-CSS compressorCss3D-box"
-      style="width: 100%; height: 100%; position: absolute; pointer-events: none; overflow: hidden; z-index: 2; top: 0px; left: 0px">
-    </div>
-  </template>
-  <!-- 模型卡片 -->
-  <div v-for="(sysItem, sysIndex) in monitorDataGroupArr" :key="sysIndex" style="position: absolute; z-index: -1">
-    <div v-show="monitorDataGroupFlag == sysIndex + 1" :id="`nitrogenMonitorBox${sysIndex}`">
-      <div v-for="(groupNum, index) in sysItem" :key="index" class="modal-monitor">
-        <fourBorderBg :class="`kyj${groupNum}`" :id="`nitrogenMonitor${groupNum}`">
-          <div class="title">{{ `空压机${groupNum}` }} </div>
-          <template v-for="(preMonitor, preMonitorIndex) in preMonitorList" :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.replace(prefix[0], `${prefix[0]}${groupNum}`)]
-                  ? formatNum(monitorData[preMonitor.code.replace(prefix[0], `${prefix[0]}${groupNum}`)])
-                  : preMonitor.value
-                    ? preMonitor.value
-                    : '-'
-              }}</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 :class="{
-                  'signal-round': true,
-                  'signal-round-run': signal.title != '故障信号' && monitorData[signal.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] == '1',
-                  'signal-round-warning':
-                    signal.title == '故障信号' && monitorData[signal.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] == '1',
-                  'signal-round-gry': monitorData[signal.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] != '1',
-                }"></span>
-              </div>
-            </div>
-          </template>
-        </fourBorderBg>
-        <fourBorderBg :class="`cqg${groupNum}`" :id="`cqgMonitor${groupNum}`"
-          v-if="cqgMonitorList && cqgMonitorList.length > 0">
-          <div class="title">{{ `风包${groupNum}` }}</div>
-          <template v-for="(cqgMonitor, cqgMonitorIndex) in cqgMonitorList" :key="cqgMonitorIndex">
-            <div class="monitor-item">
-              <span class="monitor-title">{{ cqgMonitor.title }}:</span>
-              <span class="monitor-val"><span class="val">{{
-                monitorData[cqgMonitor.code.replace(prefix[0], `${prefix[0]}${groupNum}`)]
-                  ? formatNum(monitorData[cqgMonitor.code.replace(prefix[0], `${prefix[0]}${groupNum}`)])
-                  : cqgMonitor.value
-                    ? cqgMonitor.value
-                    : '-'
-              }}</span><span class="unit">{{ cqgMonitor.unit }}</span></span>
-            </div>
-          </template>
-        </fourBorderBg>
-      </div>
-    </div>
+  <div class="zd-model">
+    <ModelTip :modelType="moduleTypeName" :statusData="monitorData"></ModelTip>
   </div>
   <div class="nitrogen-home">
-
-    <!-- 顶部导航提示 -->
-    <!-- <div class="total-data" v-if="totalData && totalData.length > 0">
-      <div class="vent-flex-row">
-        <div class="item" v-for="(data, index) in totalData" :key="index"
-          >{{ data.title + '(' + data.unit + ')' }}:<span class="val">{{
-            monitorData[data.code] ? formatNum(monitorData[data.code]) : data.value ? data.value : '-'
-          }}</span></div
-        >
-      </div>
-    </div> -->
-
     <div class="nitrogen-container">
-      <div v-if="monitorData['netStatus'] == 0" class="device-state">网络断开</div>
+      <!-- <div v-if="monitorNetStatus == 0" class="device-state">网络断开</div> -->
       <div class="top-box">
         <!-- 左边监测数据 -->
         <div class="lr-box left-box">
-          <div class="left-container" v-if="preFanMonitorData && preFanMonitorData.length > 0">
-            <div class="item item-l" v-for="(groupNum, index) in monitorDataGroup" :key="index">
-              <div class="monitor-box">
-                <ventBox1>
-                  <template #title>
-                    <div>{{ groupNum }}号压风机</div>
-                  </template>
-                  <template #container>
+          <template v-if="moduleTypeName == 'KYJ'">
+            <div class="item item-l" v-for="(groupNum, index) in monitorDataGroupKyjL" :key="index">
+              <ventBox1>
+                <template #title>
+                  <div>{{ groupNum }}号压风机</div>
+                </template>
+                <template #container>
+                  <div class="monitor-box">
+                    <div class="parameter-title group-parameter-title">
+                      <SvgIcon class="icon" size="38" name="device-group-paramer" /><span>机组参数</span>
+                    </div>
                     <div class="state-item">
                       <div class="item-col" v-for="(preFan, preFanIndex) in preFanMonitorData" :key="preFanIndex">
                         <span class="state-title">{{
-                          preFan.title + (preFan.unit !== 'signal' && preFan.unit !== 'warning' ? `(${preFan.unit})` :
+                          preFan.title + (preFan.unit && preFan.unit !== 'signal' && preFan.unit !== 'warning' ?
+                            `(${preFan.unit})` :
                             '')
-                          }}</span>
+                        }}</span>
                         <span v-if="preFan.unit !== 'signal' && preFan.unit !== 'warning'" class="state-val">{{
-                          monitorData[preFan.code.replace(prefix[1], prefix[1] + groupNum)] >= 0
-                            ? formatNum(Number(monitorData[preFan.code.replace(prefix[1], prefix[1] + groupNum)]))
+                          monitorData[preFan.code.replace(prefix[0], prefix[0] + groupNum)] >= 0
+                            ? formatNum(Number(monitorData[preFan.code.replace(prefix[0], prefix[0] + groupNum)]))
+                            : preFan.value
+                              ? preFan.value
+                              : '-'
+                        }}</span>
+                        <span v-else :class="{
+                          'signal-round': true,
+                          'signal-round-run':
+                            preFan.unit == 'signal' && monitorData[preFan.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] != '1',
+                          'signal-round-warning':
+                            preFan.unit == 'warning' && monitorData[preFan.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] == '1',
+                          'signal-round-gry': monitorData[preFan.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] != '1',
+                        }"></span>
+                      </div>
+                    </div>
+                  </div>
+                  <div class="monitor-box">
+                    <div class="parameter-title device-parameter-title">
+                      <SvgIcon class="icon" size="32" name="device-paramer" /><span>电机数据</span>
+                    </div>
+                    <div class="state-item">
+                      <div class="item-col" v-for="(preFan, preFanIndex) in preFanMonitorDjData" :key="preFanIndex">
+                        <span class="state-title">{{
+                          preFan.title + (preFan.unit && preFan.unit !== 'signal' && preFan.unit !== 'warning' ?
+                            `(${preFan.unit})` :
+                            '')
+                        }}</span>
+                        <span v-if="preFan.unit !== 'signal' && preFan.unit !== 'warning'" class="state-val">{{
+                          monitorData[preFan.code.replace(prefix[0], prefix[0] + groupNum)] >= 0
+                            ? formatNum(Number(monitorData[preFan.code.replace(prefix[0], prefix[0] + groupNum)]))
+                            : preFan.value
+                              ? preFan.value
+                              : '-'
+                        }}</span>
+                        <span v-else :class="{
+                          'signal-round': true,
+                          'signal-round-run':
+                            preFan.unit == 'signal' && monitorData[preFan.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] != '1',
+                          'signal-round-warning':
+                            preFan.unit == 'warning' && monitorData[preFan.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] == '1',
+                          'signal-round-gry': monitorData[preFan.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] != '1',
+                        }"></span>
+                      </div>
+                    </div>
+                  </div>
+                </template>
+              </ventBox1>
+            </div>
+          </template>
+          <template v-else>
+            <div class="item item-l" v-for="(groupNum, index) in monitorDataGroupZdjL" :key="index">
+              <ventBox1>
+                <template #title>
+                  <div>{{ groupNum }}号压风机</div>
+                </template>
+                <template #container>
+                  <div class="monitor-box">
+                    <div class="parameter-title group-parameter-title">
+                      <SvgIcon class="icon" size="38" name="device-group-paramer" /><span>机组参数</span>
+                    </div>
+                    <div class="state-item">
+                      <div class="item-col" v-for="(preFan, preFanIndex) in preFanMonitorData" :key="preFanIndex">
+                        <span class="state-title">{{
+                          preFan.title + (preFan.unit && preFan.unit !== 'signal' && preFan.unit !== 'warning' ?
+                            `(${preFan.unit})` :
+                            '')
+                        }}</span>
+                        <span v-if="preFan.unit !== 'signal' && preFan.unit !== 'warning'" class="state-val">{{
+                          monitorData[preFan.code.replace(prefix[0], prefix[0] + groupNum)] >= 0
+                            ? formatNum(Number(monitorData[preFan.code.replace(prefix[0], prefix[0] + groupNum)]))
+                            : preFan.value
+                              ? preFan.value
+                              : '-'
+                        }}</span>
+                        <span v-else :class="{
+                          'signal-round': true,
+                          'signal-round-run':
+                            preFan.unit == 'signal' && monitorData[preFan.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] != '1',
+                          'signal-round-warning':
+                            preFan.unit == 'warning' && monitorData[preFan.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] == '1',
+                          'signal-round-gry': monitorData[preFan.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] != '1',
+                        }"></span>
+                      </div>
+                    </div>
+                  </div>
+                  <div class="monitor-box">
+                    <div class="parameter-title device-parameter-title">
+                      <SvgIcon class="icon" size="32" name="device-paramer" /><span>电机数据</span>
+                    </div>
+                    <div class="state-item">
+                      <div class="item-col" v-for="(preFan, preFanIndex) in preFanMonitorDjData" :key="preFanIndex">
+                        <span class="state-title">{{
+                          preFan.title + (preFan.unit && preFan.unit !== 'signal' && preFan.unit !== 'warning' ?
+                            `(${preFan.unit})` :
+                            '')
+                        }}</span>
+                        <span v-if="preFan.unit !== 'signal' && preFan.unit !== 'warning'" class="state-val">{{
+                          monitorData[preFan.code.replace(prefix[0], prefix[0] + groupNum)] >= 0
+                            ? formatNum(Number(monitorData[preFan.code.replace(prefix[0], prefix[0] + groupNum)]))
+                            : preFan.value
+                              ? preFan.value
+                              : '-'
+                        }}</span>
+                        <span v-else :class="{
+                          'signal-round': true,
+                          'signal-round-run':
+                            preFan.unit == 'signal' && monitorData[preFan.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] != '1',
+                          'signal-round-warning':
+                            preFan.unit == 'warning' && monitorData[preFan.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] == '1',
+                          'signal-round-gry': monitorData[preFan.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] != '1',
+                        }"></span>
+                      </div>
+                    </div>
+                  </div>
+                </template>
+              </ventBox1>
+            </div>
+          </template>
+        </div>
+        <!-- 右边控制状态 -->
+        <div class="lr-box right-box">
+          <template v-if="moduleTypeName == 'KYJ'">
+            <div class="item item-l" v-for="(groupNum, index) in monitorDataGroupKyjR" :key="index">
+              <ventBox1>
+                <template #title>
+                  <div>3号压风机</div>
+                </template>
+                <template #container>
+                  <div class="monitor-box">
+                    <div class="parameter-title group-parameter-title">
+                      <SvgIcon class="icon" size="38" name="device-group-paramer" /><span>机组参数</span>
+                    </div>
+                    <div class="state-item">
+                      <div class="item-col" v-for="(preFan, preFanIndex) in preFanMonitorData" :key="preFanIndex">
+                        <span class="state-title">{{
+                          preFan.title + (preFan.unit && preFan.unit !== 'signal' && preFan.unit !== 'warning' ?
+                            `(${preFan.unit})` :
+                            '')
+                        }}</span>
+                        <span v-if="preFan.unit !== 'signal' && preFan.unit !== 'warning'" class="state-val">{{
+                          monitorData[preFan.code.replace(prefix[0], prefix[0] + groupNum)] >= 0
+                            ? formatNum(Number(monitorData[preFan.code.replace(prefix[0], prefix[0] + groupNum)]))
                             : preFan.value
                               ? preFan.value
                               : '-'
@@ -104,88 +184,181 @@
                         }"></span>
                       </div>
                     </div>
-                  </template>
-                </ventBox1>
-              </div>
+                  </div>
+                  <div class="monitor-box">
+                    <div class="parameter-title device-parameter-title">
+                      <SvgIcon class="icon" size="32" name="device-paramer" /><span>电机数据</span>
+                    </div>
+                    <div class="state-item">
+                      <div class="item-col" v-for="(preFan, preFanIndex) in preFanMonitorDjData" :key="preFanIndex">
+                        <span class="state-title">{{
+                          preFan.title + (preFan.unit && preFan.unit !== 'signal' && preFan.unit !== 'warning' ?
+                            `(${preFan.unit})` :
+                            '')
+                        }}</span>
+                        <span v-if="preFan.unit !== 'signal' && preFan.unit !== 'warning'" class="state-val">{{
+                          monitorData[preFan.code.replace(prefix[0], prefix[0] + groupNum)] >= 0
+                            ? formatNum(Number(monitorData[preFan.code.replace(prefix[0], prefix[0] + groupNum)]))
+                            : preFan.value
+                              ? preFan.value
+                              : '-'
+                        }}</span>
+                        <span v-else :class="{
+                          'signal-round': true,
+                          'signal-round-run':
+                            preFan.unit == 'signal' && monitorData[preFan.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] != '1',
+                          'signal-round-warning':
+                            preFan.unit == 'warning' && monitorData[preFan.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] == '1',
+                          'signal-round-gry': monitorData[preFan.code.replace(prefix[0], `${prefix[0]}${groupNum}`)] != '1',
+                        }"></span>
+                      </div>
+                    </div>
+                  </div>
+                </template>
+              </ventBox1>
+            </div>
+          </template>
+          <template v-else>
+            <div class="item item-l" v-for="(groupNum, index) in monitorDataGroupZdjR" :key="index">
+              <ventBox1>
+                <template #title>
+                  <div>{{ groupNum }}号制氮机</div>
+                </template>
+                <template #container>
+                  <div class="monitor-box">
+                    <div class="parameter-title group-parameter-title">
+                      <SvgIcon class="icon" size="38" name="device-group-paramer" /><span>机组参数</span>
+                    </div>
+                    <div class="state-item">
+                      <div class="item-col" v-for="(preFan, preFanIndex) in preFanMonitorDataZD" :key="preFanIndex">
+                        <span class="state-title">{{
+                          preFan.title + (preFan.unit && preFan.unit !== 'signal' && preFan.unit !== 'warning' ?
+                            `(${preFan.unit})` :
+                            '')
+                        }}</span>
+                        <span v-if="preFan.unit !== 'signal' && preFan.unit !== 'warning'" class="state-val">{{
+                          monitorData[preFan.code.replace(prefix[1], prefix[1] + groupNum)] >= 0
+                            ? formatNum(Number(monitorData[preFan.code.replace(prefix[1], prefix[1] + groupNum)]))
+                            : preFan.value
+                              ? preFan.value
+                              : '-'
+                        }}</span>
+                        <span v-else :class="{
+                          'signal-round': true,
+                          'signal-round-run':
+                            preFan.unit == 'signal' && monitorData[preFan.code.replace(prefix[1], `${prefix[1]}${groupNum}`)] != '1',
+                          'signal-round-warning':
+                            preFan.unit == 'warning' && monitorData[preFan.code.replace(prefix[1], `${prefix[1]}${groupNum}`)] == '1',
+                          'signal-round-gry': monitorData[preFan.code.replace(prefix[1], `${prefix[1]}${groupNum}`)] != '1',
+                        }"></span>
+                      </div>
+                    </div>
+                  </div>
+
+                </template>
+              </ventBox1>
             </div>
+          </template>
+          <!-- <ventBox1 class="vent-margin-t-10">
+            <template #title>
+              <div>设备实时监测曲线</div>
+            </template>
+            <template #container>
+              <BarAndLineCustom xAxisPropType="readTime" :chartData="monitorData" height="240px"
+                :propTypeArr="['flowRate']" :option="zhudanOption" />
+            </template>
+          </ventBox1> -->
+          <div class="vent-margin-t-10">
+            <!-- <LivePlayer id="fm-player1" style="height: 250px;" ref="player1" :videoUrl="flvURL1()" muted live loading controls /> -->
           </div>
         </div>
-        <div v-if="renderPlayer" ref="playerRef" class="playerBox"> </div>
       </div>
     </div>
   </div>
 </template>
 <script lang="ts" setup name="nitrogenHome">
-import { onMounted, onUnmounted, ref, onBeforeUnmount } from 'vue';
-import fourBorderBg from '../../../comment/components/fourBorderBg.vue';
-import { mountedThree, destroy, setModelType } from '../nitrogen.threejs';
-import { list } from '../nitrogen.api';
+import { computed, onMounted, onUnmounted, ref, watch, reactive, nextTick, watchEffect } from 'vue';
 import ventBox1 from '/@/components/vent/ventBox1.vue';
-import { monitorDataGroupArr, preFanMonitorData, preMonitorList, cqgMonitorList, prefix,  totalData,  } from '../nitrogen.data.lh';
+import { list } from '../nitrogen.api';
+import { SvgIcon } from '/@/components/Icon';
+import LivePlayer from '@liveqing/liveplayer-v3';
+import BarAndLineCustom from '/@/components/chart/BarAndLineCustom.vue';
+import { zhudanOption } from '../nitrogen.data.ts';
+import {  preFanMonitorDataZD, prefix, preFanMonitorData, preFanMonitorDjData } from '../nitrogen.data.ln'
 import { formatNum } from '/@/utils/ventutil';
-import { useCamera } from '/@/hooks/system/useCamera';
+import ModelTip from './model-tip.vue'
+
+
+const props = defineProps({
+  deviceId: {
+    type: String,
+    require: true,
+  },
+  modalType: {
+    type: String,
+    require: true,
+  },
+  moduleTypeName: {
+    type: String,
+    default: ''
+  }
+});
+
+const monitorDataGroupKyjL = ref(2)
+const monitorDataGroupKyjR = ref(1)
+const monitorDataGroupZdjL = ref(2)
+const monitorDataGroupZdjR = ref(2)
 
 const loading = ref(true);
-const monitorDataGroupFlag = ref(1);
-const monitorDataGroup = ref<Number[]>([]);
-const monitorData = ref<Object | []>({});
-const playerRef = ref();
-const renderPlayer = ref(true);
 
-const { getCamera, removeCamera } = useCamera();
+const flvURL1 = () => {
+  return `https://sf1-hscdn-tos.pstatp.com/obj/media-fe/xgplayer_doc_video/flv/xgplayer-demo-360p.flv`;
+  // return ''
+};
+const monitorNetStatus = ref(0);
+
+const monitorData = reactive({});
 
 // 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 () => {
-          await getDataSource();
-          if (timer) {
-            timer = null;
-          }
-          resolve(null);
-          await getMonitor(false);
-        },
-        flag ? 0 : 1000
-      );
-    });
+    timer = await setTimeout(
+      async () => {
+        if (props.deviceId) {
+          await getDataSource(props.deviceId);
+        }
+        if (timer) {
+          timer = null;
+        }
+        await getMonitor();
+      },
+      flag ? 0 : 1000
+    );
   }
 }
 
-async function getDataSource() {
-  const res = await list({ devicetype: 'forcFan', pagetype: 'normal' });
-  let dataSource = res.msgTxt[0] && res.msgTxt[0].datalist ? res.msgTxt[0].datalist[0] : [];
+async function getDataSource(systemID) {
+  const res = await list({ devicetype: 'sys',systemID:'',  type: 'all' });
+  const result = res.msgTxt;
+  if (!result || result.length < 1) return;
+  let dataSource: any = [];
+  if (props.moduleTypeName == 'KYJ') {
+    dataSource = res.msgTxt[0] && res.msgTxt[0].datalist ? res.msgTxt[0].datalist[1] : {};
+  } else {
+    dataSource = res.msgTxt[0] && res.msgTxt[0].datalist ? res.msgTxt[0].datalist[0] : {};
+  }
 
   if (dataSource) {
-    Object.assign(monitorData.value, dataSource, dataSource.readData);
+    Object.assign(monitorData, dataSource, dataSource.readData);
   }
-  loading.value = false;
-}
-
-function setMonitorGroupNum(flag) {
-  if (flag != monitorDataGroupFlag.value) monitorDataGroupFlag.value = flag;
-  const monitorGroup = monitorDataGroupArr[flag - 1];
-  setModelType('compressor' + (flag - 1));
-  monitorDataGroup.value = monitorGroup;
 }
 
 onMounted(async () => {
-  setTimeout(() => {
-    mountedThree(monitorDataGroupArr).then(async () => {
-      setMonitorGroupNum(1);
-      getMonitor(true).then(async () => {
-        if (monitorData.value && monitorData.value['deviceID']) await getCamera(monitorData.value['deviceID'], playerRef, renderPlayer);
-      });
-    });
-  }, 0);
-});
-onBeforeUnmount(() => {
-  removeCamera(playerRef);
+  await getMonitor(true);
 });
+
 onUnmounted(() => {
-  destroy();
   if (timer) {
     clearTimeout(timer);
     timer = undefined;
@@ -194,125 +367,46 @@ onUnmounted(() => {
 </script>
 
 <style lang="less" scoped>
-@import '../../comment/less/workFace.less';
 @ventSpace: zxm;
 
-.compressorCss3D-box {
-  .modal-monitor {
-    position: absolute;
-    left: 0px;
-    top: 0px;
-  }
-
-  &:deep(.win) {
-    margin: 0 !important;
-    background: #00000044;
-  }
-
-  &: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 {
-      display: flex;
-      flex-direction: row;
-      width: auto;
-      margin-bottom: 3px;
-
-      .monitor-val {
-        color: #ffb700;
-        display: flex;
-        width: auto;
-
-        .val {
-          width: 80px;
-          font-size: 14px;
-        }
-
-        .unit {
-          color: #ffffffbb;
-          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;
-
-        &::after {
-          display: block;
-          content: '';
-          position: absolute;
-          width: 12px;
-          height: 12px;
-          top: -2px;
-          left: -2px;
-          border-radius: 50%;
-        }
-      }
-
-      .signal-round-gry {
-        background-color: #858585;
-
-        &::after {
-          background-color: #85858544;
-          box-shadow: 0 0 1px 1px #85858599;
-        }
-      }
-
-      .signal-round-run {
-        background-color: #67fc00;
-
-        &::after {
-          background-color: #67fc0044;
-          box-shadow: 0 0 1px 1px #c6ff77;
-        }
-      }
-
-      .signal-round-warning {
-        background-color: #e9170b;
-
-        &::after {
-          background-color: #e9170b44;
-          box-shadow: 0 0 1px 1px #e9170b;
-        }
-      }
-    }
-  }
+.zd-model {
+  // width: calc(100% - 695px);
+  // height: calc(100% - 100px);
+  width: calc(100% - 705px);
+  height: calc(100% - 110px);
+  position: absolute;
+  left: 365px;
+  top: 90px;
+  padding-right: 25px;
+  box-sizing: border-box;
 }
 
+// .nitrogen-box {
+//   width: 100%;
+//   height: 100%;
+//   display: flex;
+//   justify-content: center;
+// }
+
+// #nitrogenCss3D {
+//   .modal-monitor {
+//     width: 200px;
+//     position: absolute;
+//     left: 0px;
+//     top: 0px;
+//   }
+
+//   &:deep(.win) {
+//     margin: 0 !important;
+//     background: #00000044;
+//   }
+// }
+
 .nitrogen-home {
   width: 100%;
-  height: calc(100%);
+  height: 100%;
   position: fixed;
-  z-index: 99;
+  z-index: 9999;
   display: flex;
   flex-direction: column;
   justify-content: center;
@@ -320,37 +414,17 @@ onUnmounted(() => {
   pointer-events: none;
   top: 60px;
 
-  .total-data {
-    position: absolute;
-    color: #e4cd00;
-    z-index: 9;
-    top: 20px;
-    right: 30px;
-    // display: flex;
-    font-size: 18px;
-
-    .item {
-      margin-left: 20px;
-
-      .val {
-        display: inline-box;
-        width: 150px;
-        color: #00d8ff;
-      }
-    }
-  }
-
   .nitrogen-container {
     width: 100%;
-    height: calc(100%);
+    height: calc(100% - 100px);
     display: flex;
     justify-content: space-between;
-    position: relative;
+    margin-bottom: 100px;
 
     .device-state {
       width: 100%;
       position: absolute;
-      top: 20px;
+      top: 70px;
       color: #e90000;
       display: flex;
       justify-content: center;
@@ -365,15 +439,17 @@ onUnmounted(() => {
       justify-content: space-between;
 
       .lr-box {
+        height: fit-content;
         display: flex;
         flex-direction: column;
         position: relative;
+        overflow: hidden;
         z-index: 9999;
         pointer-events: auto;
       }
 
       .item {
-        width: 285px;
+        width: 335px;
         height: auto;
         position: relative;
         border-radius: 5px;
@@ -383,105 +459,57 @@ onUnmounted(() => {
         color: #fff;
         overflow: hidden;
 
-        .control-item {
-          height: auto;
-          min-height: 35px;
-          display: flex;
-          flex-direction: row;
-          justify-content: space-between;
-          align-items: center;
-          padding: 5px;
-          margin: 0 10px 0 3px;
-          pointer-events: auto;
-          background: linear-gradient(to right, #0063cd22, #0063cd04);
-
-          margin-bottom: 5px;
-          border-width: 1px;
-          border-style: dashed;
-
-          border-image: linear-gradient(to right, #008ccd66, #0063cd04) 1 1;
-          border-radius: 5px;
-
-          &:last-child {
-            margin-bottom: 0;
-          }
-
-          .control-item-l {
-            display: flex;
-            align-items: center;
-            font-size: 14px;
-
-            .round {
-              display: inline-block;
-              width: 3px;
-              height: 3px;
-              padding: 1px;
-              border-radius: 50%;
-              background-color: #3df6ff;
-              margin-right: 5px;
-              box-shadow: 0 0 1px 1px #64f7ff;
-            }
-          }
-
-          .control-item-r {
-            text-align: right;
-          }
-
-          .button-box {
-            position: relative;
-            padding: 5px;
-            border: 1px transparent solid;
-            background-clip: border-box;
-            border-radius: 5px;
-            margin-left: 8px;
-          }
-
-          .a-button {
-            pointer-events: auto;
-          }
-
-          &::v-deep .a-button--mini {
-            padding: 6px 10px;
-          }
-
-          &::v-deep .a-button--mini.is-round {
-            padding: 6px 10px;
-          }
+        &:first-child {
+          margin-top: 0px;
         }
 
         .base-title {
-          width: calc(100% - 60px);
-          text-align: center;
-          color: #00d8ff;
+          color: #fff;
+          margin-bottom: 8px;
+          padding-left: 10px;
+          position: relative;
+          font-size: 16px;
+
+          &::after {
+            content: '';
+            position: absolute;
+            display: block;
+            width: 4px;
+            height: 12px;
+            top: 7px;
+            left: 0px;
+            background: #45d3fd;
+            border-radius: 4px;
+          }
         }
 
         .state-item {
-          width: 100%;
           display: flex;
           flex-direction: row;
-
+          padding: 5px;
           flex-wrap: wrap;
 
           .item-col {
-            width: 50%;
+            width: calc(50% - 5px);
             display: flex;
             justify-content: center;
             align-items: center;
-            padding: 5px;
+            padding-right: 4px;
+            background-image: linear-gradient(to right, #39a3ff00, #39a3ff10);
+
+            // &:first-child {
+            //   margin-right: 10px;
+            // }
 
             .state-title {
               color: #ffffffcc;
               flex: 9;
               font-size: 14px;
-
-              .unit {
-                // color: #ffffffbb;
-              }
             }
 
             .state-val {
               flex: 1;
-              color: #e4a300;
+              color: #00eefffe;
               margin-right: 5px;
               text-align: right;
               font-size: 14px;
@@ -537,104 +565,230 @@ onUnmounted(() => {
         }
       }
 
+      .item-l {
+        width: 100%;
 
-      .left-box {
-        height: calc(100% - 50px);
-        overflow-x: hidden;
-        overflow-y: auto;
-        pointer-events: auto;
-        direction: rtl;
-
-        .item-l {
-          width: 335px;
+        .monitor-box {
+          width: 100%;
 
-          .monitor-box {
-            background-color: #ffffff05;
+          .parameter-title {
+            position: relative;
+            width: 100%;
+            height: 14px;
+            margin-top: 10px;
+
+            .icon,
+            span {
+              position: absolute;
+              top: -10px;
+            }
           }
-        }
 
-        .left-container {
-          direction: ltr;
-        }
+          .group-parameter-title {
+            background-image: linear-gradient(to right, #39a3ff50, #39a3ff00);
 
-        .control-item {
-          height: 36px;
-        }
-      }
-    }
-  }
-
-  .playerBox {
-    z-index: 9999;
-    position: fixed;
-    // top: 200px;
-    right: 15px;
-    width: 100%;
-    height: calc(100% - 100px);
-    overflow-y: auto;
-    margin: auto;
-    pointer-events: none;
-    display: flex;
-    justify-content: end;
+            .icon {
+              left: -12px;
+              top: -17px;
+            }
 
-    &:deep(#LivePlayerBox) {
-      width: auto !important;
-      height: auto !important;
-      display: flex;
-      flex-flow: column;
-      justify-content: end;
-    }
-  }
-}
+            span {
+              left: 18px;
+            }
 
-.btn {
-  padding: 2px 12px;
-  position: relative;
-  border-radius: 2px;
-  color: #fff;
-  cursor: pointer;
-
-  &::before {
-    position: absolute;
-    display: block;
-    content: '';
-    width: calc(100% - 4px);
-    height: calc(100% - 4px);
-    top: 2px;
-    left: 2px;
-    border-radius: 2px;
-    z-index: -1;
-  }
-}
+            .item-col {
+              background-image: linear-gradient(to right, #39a3ff00, #39a3ff10);
+            }
+          }
 
-.btn1 {
-  border: 1px solid #5cfaff;
+          .device-parameter-title {
+            background-image: linear-gradient(to right, #3df6ff40, #3df6ff00);
 
-  &::before {
-    background-image: linear-gradient(#2effee92, #0cb1d592);
-  }
+            .icon {
+              left: -10px;
+              top: -14px;
+            }
 
-  &:hover {
-    border: 1px solid #5cfaffaa;
+            span {
+              left: 18px;
+            }
 
-    &::before {
-      background-image: linear-gradient(#2effee72, #0cb1d572);
-    }
-  }
-}
+            .item-col {
+              background-image: linear-gradient(to right, #3df6ff10, #3df6ff00);
+            }
+          }
+        }
+      }
 
-.btn2 {
-  border: 1px solid #e91927;
-  margin-left: 10px;
+      .right-box {
+        width: 330px;
+        margin-top: 50px;
+
+        // .control-group {
+        //   display: flex;
+        //   // justify-content: space-around;
+        //   flex-wrap: wrap;
+
+        //   .control-item {
+        //     display: flex;
+        //     flex-direction: column;
+        //     justify-content: center;
+        //     align-items: center;
+        //     padding: 0 4px;
+
+        //     .control-item-title {
+        //       color: #a6dce9;
+        //       position: relative;
+        //       top: 5px;
+        //     }
+
+        //     .control-item-state {
+        //       width: 94px;
+        //       height: 47px;
+        //       background: url('/@/assets/images/vent/control-switch-bg.png');
+        //       display: flex;
+        //       justify-content: center;
+        //       align-items: center;
+        //       color: #fff;
+        //     }
+
+        //     .button-box {
+        //       position: relative;
+        //       padding: 5px;
+        //       border: 1px transparent solid;
+        //       background-clip: border-box;
+        //       border-radius: 5px;
+        //       margin-left: 8px;
+        //     }
+
+        //     .a-button {
+        //       pointer-events: auto;
+        //     }
+
+        //     &::v-deep .a-button--mini {
+        //       padding: 6px 10px;
+        //     }
+
+        //     &::v-deep .a-button--mini.is-round {
+        //       padding: 6px 10px;
+        //     }
+        //   }
+        // }
+      }
 
-  &::before {
-    background-image: linear-gradient(#b02533, #a31f2e);
-  }
+      .left-box {
+        width: 365px;
+        margin-top: 45px;
+      }
+    }
 
-  &:hover {
-    &::before {
-      background-image: linear-gradient(#bd2e3ccc, #a31f2ecc);
+    &:deep(.win) {
+      width: 100%;
+      margin: 0 !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;
+
+//     .monitor-val {
+//       color: #ffb700;
+//       display: flex;
+//       width: auto;
+
+//       .val {
+//         width: 80px;
+//         font-size: 14px;
+//       }
+
+//       .unit {
+//         color: #ffffffbb;
+//         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;
+
+//       &::after {
+//         display: block;
+//         content: '';
+//         position: absolute;
+//         width: 12px;
+//         height: 12px;
+//         top: -2px;
+//         left: -2px;
+//         border-radius: 50%;
+//       }
+//     }
+
+//     .signal-round-gry {
+//       background-color: #858585;
+
+//       &::after {
+//         background-color: #85858544;
+//         box-shadow: 0 0 1px 1px #85858599;
+//       }
+//     }
+
+//     .signal-round-run {
+//       background-color: #67fc00;
+
+//       &::after {
+//         background-color: #67fc0044;
+//         box-shadow: 0 0 1px 1px #c6ff77;
+//       }
+//     }
+
+//     .signal-round-warning {
+//       background-color: #e9170b;
+
+//       &::after {
+//         background-color: #e9170b44;
+//         box-shadow: 0 0 1px 1px #e9170b;
+//       }
+//     }
+//   }
+// }
+
+:deep(.zxm-radio-wrapper) {
+  color: #fff !important;
+}
 </style>

+ 0 - 184
src/views/vent/monitorManager/compressor/index copy.vue

@@ -1,184 +0,0 @@
-<template>
-  <div class="nitrogen-box">
-    <customHeader
-      :fieldNames="{ label: 'systemname', value: 'id', options: 'children' }"
-      :options="options"
-      @change="getSelectRow"
-      :optionValue="optionValue"
-    >
-      智能注氮管控系统
-    </customHeader>
-    <nitrogenHome v-if="activeKey == 'nitrogen_page' && optionValue" :device-id="optionValue" :modal-type="modalType" />
-    <nitrogenEcharts v-if="activeKey == 'yfj_monitor_echarts'" />
-    <nitrogenHistory ref="historyTable" :device-id="optionValue" :device-type="optionType" v-if="activeKey == 'yfj_history'" />
-    <nitrogenHandleHistory ref="alarmHistoryTable" v-if="activeKey == 'yfj_handler_history'" />
-    <nitrogenAlarmHistory ref="handlerHistoryTable" v-if="activeKey == 'yfj_faultRecord'" />
-    <BottomMenu :nav-list="navList" @change="changeActive" />
-  </div>
-</template>
-<script lang="ts" setup>
-  import { ref, onMounted, onUnmounted, nextTick } from 'vue';
-  import customHeader from '/@/components/vent/customHeader.vue';
-  import nitrogenEcharts from './components/nitrogenEcharts.vue';
-  import nitrogenHistory from './components/nitrogenHistory.vue';
-  import nitrogenHandleHistory from './components/nitrogenHandleHistory.vue';
-  import nitrogenAlarmHistory from './components/nitrogenAlarmHistory.vue';
-  import BottomMenu from '/@/views/vent/comment/components/bottomMenu.vue';
-  import { useRouter } from 'vue-router';
-  import { navList, getMonitorComponent } from './nitrogen.data';
-  import { getTableList, systemList } from './nitrogen.api';
-
-  const nitrogenHome = getMonitorComponent();
-  type DeviceType = { deviceType: string; deviceName: string; datalist: any[] };
-
-  const { currentRoute } = useRouter();
-  const activeKey = ref('nitrogen_page');
-
-  const historyTable = ref();
-  const alarmHistoryTable = ref();
-  const handlerHistoryTable = ref();
-
-  //关联设备
-  const deviceList = ref<DeviceType[]>([]);
-  const deviceActive = ref('');
-  const deviceType = ref('');
-
-  const options = ref();
-  const optionValue = ref('');
-  const optionType = ref('');
-  const modalType = ref('');
-  const isRefresh = ref(true);
-
-  function changeActive(activeValue) {
-    activeKey.value = activeValue;
-  }
-
-  function deviceChange(index) {
-    deviceActive.value = deviceType.value = deviceList.value[index].deviceType;
-    isRefresh.value = false;
-    nextTick(() => {
-      isRefresh.value = true;
-    });
-  }
-
-  async function getDeviceList() {
-    const res = await systemList({ devicetype: 'sys', systemID: optionValue.value });
-    const result = res.msgTxt;
-    if (!result || result.length < 1) return;
-    const deviceArr = <DeviceType[]>[];
-    result.forEach((item) => {
-      const data = item['datalist'].filter((data: any) => {
-        const readData = data.readData;
-        return Object.assign(data, readData);
-      });
-      if (item.type !== 'sys') {
-        deviceArr.unshift({
-          deviceType: item.type,
-          deviceName: item['typeName'] ? item['typeName'] : item['datalist'][0]['typeName'],
-          datalist: data,
-        });
-      }
-    });
-    deviceList.value = deviceArr;
-    deviceActive.value = deviceArr[0].deviceType;
-    deviceChange(0);
-  }
-
-  async function getSysDataSource() {
-    const res = await getTableList({ strtype: 'sys_nitrogen', pagetype: 'normal' });
-    if (!options.value) {
-      // 初始时选择第一条数据
-      options.value = res.records || [];
-      if (!optionValue.value) {
-        getSelectRow(options.value[0]['id']);
-        getDeviceList();
-      }
-    }
-  }
-
-  // 切换检测数据
-  async function getSelectRow(deviceID) {
-    const currentData = options.value.find((item: any) => {
-      return item.id == deviceID;
-    });
-    optionValue.value = deviceID;
-    changeModalType(currentData);
-    getDeviceList();
-  }
-
-  // 获取模型类型
-  function changeModalType(currentData) {
-    optionType.value = currentData['strtype'];
-    if (currentData['strsystype'] === '1') {
-      // 地上
-      modalType.value = 'nitrogen';
-    } else if (currentData['strsystype'] === '2') {
-      // 地下
-      modalType.value = 'nitrogenUnderground';
-    } else {
-      // 默认是地下的注氮
-      modalType.value = 'nitrogenUnderground';
-    }
-  }
-
-  onMounted(async () => {
-    if (currentRoute.value && currentRoute.value['query'] && currentRoute.value['query']['id']) optionValue.value = currentRoute.value['query']['id'];
-    await getSysDataSource();
-    // getSelectRow(optionValue.value)
-  });
-
-  onUnmounted(() => {});
-</script>
-
-<style lang="less" scoped>
-  @import '/@/design/vent/modal.less';
-  @ventSpace: zxm;
-  .nitrogen-home-header {
-    width: 100%;
-    height: 100px;
-    position: fixed;
-    top: 0;
-    background: url('/@/assets/images/vent/new-home/header-bg.png') no-repeat;
-    background-size: contain;
-    display: flex;
-    justify-content: center;
-
-    .header-icon {
-      margin-top: 45px;
-    }
-
-    .header-text {
-      position: fixed;
-      top: 18px;
-      color: #fff;
-      font-size: 24px;
-    }
-  }
-  .nitrogen-box {
-    width: 100%;
-    height: 100%;
-    display: flex;
-    justify-content: center;
-    .bottom-btn-group {
-      display: flex;
-      position: fixed;
-      width: calc(100% - 400px);
-      height: 100px;
-      bottom: 10px;
-      align-items: center;
-      justify-content: center;
-      z-index: 2;
-      .btn-item {
-        width: 200px;
-        height: 60px;
-        margin: 10px;
-        color: #fff;
-        cursor: pointer;
-        pointer-events: auto;
-      }
-    }
-    &:deep(.win) {
-      margin: 0 !important;
-    }
-  }
-</style>

+ 5 - 1
src/views/vent/monitorManager/compressor/index.vue

@@ -8,7 +8,7 @@
     >
       智能注氮管控系统
     </customHeader>
-    <nitrogenHome v-if="activeKey == 'nitrogen_page' && optionValue" :device-id="optionValue" :modal-type="modalType" />
+    <nitrogenHome v-if="activeKey == 'nitrogen_page' && optionValue" :device-id="optionValue" :modal-type="modalType" :module-type-name="moduleTypeName" />
     <nitrogenEcharts v-if="activeKey == 'yfj_monitor_echarts'" />
     <nitrogenHistory ref="historyTable" :device-id="optionValue" :device-type="optionType" v-if="activeKey == 'yfj_history'" />
     <nitrogenHandleHistory ref="alarmHistoryTable" v-if="activeKey == 'yfj_handler_history'" />
@@ -48,6 +48,7 @@
   const optionType = ref('');
   const modalType = ref('');
   const isRefresh = ref(true);
+  let moduleTypeName=ref('')
 
   function changeActive(activeValue) {
     activeKey.value = activeValue;
@@ -112,12 +113,15 @@
     if (currentData['strsystype'] === '1') {
       // 地上
       modalType.value = 'nitrogen';
+      moduleTypeName.value='KYJ'
     } else if (currentData['strsystype'] === '2') {
       // 地下
       modalType.value = 'nitrogenUnderground';
+      moduleTypeName.value='ZDJ'
     } else {
       // 默认是地下的注氮
       modalType.value = 'nitrogenUnderground';
+       moduleTypeName.value='KYJ'
     }
   }
 

+ 308 - 65
src/views/vent/monitorManager/compressor/nitrogen.data.ln.ts

@@ -1,124 +1,367 @@
-export const nitrogenMonitorData = [
+export const monitorDataGroupArr = [1, 2, 3];
+export const monitorDataGroupArrZDJ = [1, 2, 3, 4];
+
+export const prefix = ['kyj', 'zd',];
+
+export const preMonitorList = [
   {
-    title: '管道温度',
-    code: 'pipe_temperature',
-    unit: '℃',
+    title: '运行状态',
+    code: 'kyj_yxzt_str',
+    unit: '',
+    child: [],
+    value: '',
   },
   {
-    title: '管道压力',
-    code: 'pipe_pressure',
-    unit: 'MPa',
+    title: '加载时间',
+    code: 'kyj_jzsj',
+    unit: 'h',
+    child: [],
+    value: '',
   },
   {
-    title: '氮气流量',
-    code: 'nitrogen_flow_rate',
-    unit: 'm³',
+    title: '运行时间',
+    code: 'kyj_yxsj',
+    unit: 'h',
+    value: '',
   },
   {
-    title: '氮气浓度',
-    code: 'nitrogen_concentration',
-    unit: '%',
+    title: `系统温度`,
+    code: `kyj_xtwd`,
+    unit: '℃',
+    child: [],
+    value: '',
   },
   {
-    title: '电动排氮阀开度',
-    code: 'nitrogen_discharge_opening',
-    unit: '--',
+    title: '进气温度',
+    code: 'kyj_jqwd',
+    unit: '℃',
+    child: [],
+    value: '',
   },
-];
-
-export const preMonitorList = [
   {
-    title: `主机温度`,
-    code: `host_temperature`,
+    title: `排气温度`,
+    code: `kyj_pqwd`,
     unit: '℃',
     child: [],
+    value: '',
   },
   {
-    title: `气压力`,
-    code: `exhaust_pressure`,
-    unit: 'MPa',
+    title: `气压力`,
+    code: `kyj_gqyl`,
+    unit: 'bar',
     child: [],
+    value: '',
   },
   {
-    title: `管道温度`,
-    code: `pipe_temperature`,
-    unit: '',
+    title: '主机输出功率',
+    code: 'kyj_zjscgl',
+    unit: 'KW',
     child: [],
+    value: '',
   },
   {
-    title: `管道压力`,
-    code: `pipe_pressure`,
-    unit: 'MPa',
+    title: '主机输出电流',
+    code: 'kyj_zjscdl',
+    unit: 'A',
     child: [],
+    value: '',
   },
   {
-    title: `电机定子温度`,
-    code: `stator_temperature`,
-    unit: '',
+    title: '主机输出电压',
+    code: 'kyj_zjscdy',
+    unit: 'V',
     child: [],
+    value: '',
   },
   {
-    title: `电机前端轴承温度`,
-    code: `front_axle_temperature`,
-    unit: '℃',
+    code: 'signal',
+    child: [
+      {
+        title: `故障信号`,
+        code: `kyj_gz`,
+        isWaring: false,
+      },
+    ],
+  },
+];
+export const preMonitorListZD = [
+  {
+    title: '运行状态',
+    code: 'zd_zt',
+    unit: '',
+    value: '',
+  },
+  {
+    title: '累计流量',
+    code: 'zd_ljll',
+    unit: 'm³/s',
     child: [],
+    value: '',
   },
   {
-    title: `电机后端轴承温度`,
-    code: `rear_axle_temperature`,
-    unit: '℃',
+    title: '瞬时流量',
+    code: 'zd_ssll',
+    unit: 'm³/s',
     child: [],
+    value: '',
   },
+  {
+    title: '压力',
+    code: 'zd_yl',
+    unit: 'KPa',
+    child: [],
+    value: '',
+  },
+
+  {
+    code: 'signal',
+    child: [
+      {
+        title: `远程控制信号`,
+        code: `zd_kz`,
+        isWaring: false,
+      },
+      {
+        title: `远程上电信号`,
+        code: `zd_sd`,
+        isWaring: false,
+      },
+    ],
+  },
+  {
+    code: 'signal',
+    child: [
+      {
+        title: `远程运行信号`,
+        code: `zd_yx`,
+        isWaring: false,
+      },
+      {
+        title: `远程故障信号`,
+        code: `zd_gz`,
+        isWaring: false,
+      },
+
+    ],
+  },
+
+
 ];
+
 export const preFanMonitorData = [
   {
-    title: '运行状态',
-    code: 'operation_shutdown',
+    title: '加载时间',
+    code: 'kyj_jzsj',
     unit: '',
+    value: '0',
   },
   {
     title: '运行时间',
-    code: 'operation_hours',
-    unit: 'h',
+    code: 'kyj_yxsj',
+    unit: '',
+    value: '0',
   },
   {
-    title: '油压未建立故障',
-    code: 'oil_pressure_not_established',
-    unit: 'signal',
+    title: '润滑脂使用时间',
+    code: 'kyj_rhzsy_sj',
+    unit: '',
+    value: '0',
   },
   {
-    title: '排气压力超限故障',
-    code: 'exhaust_pressure_exceeding_limit',
-    unit: 'signal',
+    title: '润滑油使用时间',
+    code: 'kyj_rhysy_sj',
+    unit: '',
+    value: '0',
   },
   {
-    title: '相序故障',
-    code: 'phase-sequence_protection',
-    unit: 'signal',
+    title: '空滤器使用时间',
+    code: 'kyj_klqsy_sj',
+    unit: '',
+    value: '0',
   },
   {
-    title: '风机1过载故障',
-    code: 'fan1_overload',
-    unit: 'signal',
+    title: '油分器使用时间',
+    code: 'kyj_yfqsy_sj',
+    unit: '',
+    value: '0',
   },
   {
-    title: '风机2过载故障',
-    code: 'fan2_overload',
-    unit: 'signal',
+    title: '油滤器使用时间',
+    code: 'kyj_ylqsy_sj',
+    unit: '',
+    value: '0',
+  },
+  {
+    title: '系统温度',
+    code: 'kyj_xtwd',
+    unit: '℃',
+    value: '0',
   },
   {
-    title: '风机3过载故障',
-    code: 'fan3_overload',
+    title: '进气温度',
+    code: 'kyj_jqwd',
+    unit: '℃',
+    value: '0',
+  },
+  {
+    title: '排气温度',
+    code: 'kyj_pqwd',
+    unit: '℃',
+    value: '0',
+  },
+  {
+    title: '供气压力',
+    code: 'kyj_gqyl',
+    unit: 'MPa',
+    value: '0',
+  },
+  {
+    title: '油压',
+    code: 'kyj_yy',
+    unit: 'MPa',
+    value: '0',
+  },
+  {
+    title: '主机输出功率',
+    code: 'kyj_zjscgl',
+    unit: 'Hz',
+    value: '0',
+  },
+  {
+    title: '主机前振动',
+    code: 'kyj_zjq_zd',
+    unit: 'Hz',
+    value: '0',
+  },
+  {
+    title: '主机后振动',
+    code: 'kyj_zjh_zd',
+    unit: 'Hz',
+    value: '0',
+  },
+  {
+    title: '前轴承温度',
+    code: 'kyj_qzc_wd',
+    unit: '℃',
+    value: '0',
+  },
+  {
+    title: '后轴承温度',
+    code: 'kyj_hzc_wd',
+    unit: '℃',
+    value: '0',
+  },
+  {
+    title: '线圈温度A',
+    code: 'kyj_xqwd_a',
+    unit: '℃',
+    value: '0',
+  },
+  {
+    title: '线圈温度B',
+    code: 'kyj_xqwd_b',
+    unit: '℃',
+    value: '0',
+  },
+
+  {
+    title: '线圈温度C',
+    code: 'kyj_xqwd_c',
+    unit: '℃',
+    value: '0',
+  },
+];
+
+export const preFanMonitorDataZD = [
+ {
+    title: `远程故障信号`,
+    code: `zd_gz`,
     unit: 'signal',
   },
   {
-    title: '风机4过载故障',
-    code: 'fan4_overload',
+    title: `远程运行信号`,
+    code: `zd_yx`,
+    unit: 'signal',
+  },
+ {
+    title: `远程控制信号`,
+    code: `zd_kz`,
     unit: 'signal',
   },
   {
-    title: '高压柜故障',
-    code: 'hvc_malfunction',
+    title: `远程上电信号`,
+    code: `zd_sd`,
     unit: 'signal',
   },
-];
+   {
+    title: '压力',
+    code: 'zd_yl',
+    unit: '',
+    value: '0',
+  },
+  {
+    title: '露点',
+    code: 'zd_ld',
+    unit: '',
+    value: '0',
+  },
+  {
+    title: '纯度',
+    code: 'zd_cd',
+    unit: '%',
+    value: '0',
+  },
+
+];
+export const preFanMonitorDjData = [
+{
+    title: '主机输出电流',
+    code: 'kyj_zjscdl',
+    unit: 'A',
+    value: '0',
+  },
+  {
+    title: '主机电流A',
+    code: 'kyj_zjdl1',
+    unit: 'A',
+    value: '0',
+  },
+  {
+    title: '主机电流B',
+    code: 'kyj_zjdl2',
+    unit: 'A',
+    value: '0',
+  },
+  {
+    title: '主机电流C',
+    code: 'kyj_zjdl3',
+    unit: 'A',
+    value: '0',
+  },
+   {
+    title: '主机输出电压',
+    code: 'kyj_zjscdy',
+    unit: 'V',
+    value: '0',
+  },
+  {
+    title: '电机前振动',
+    code: 'kyj_djq_zd',
+    unit: 'Hz',
+    value: '0',
+  },
+  {
+    title: '电机后振动',
+    code: 'kyj_djh_zd',
+    unit: 'Hz',
+    value: '0',
+  },
+];
+
+
+
+
+
+
+
+

+ 1 - 1
src/views/vent/monitorManager/compressor/nitrogen.data.ts

@@ -253,7 +253,7 @@ export function getMonitorComponent() {
     default:
       // nitrogenHome = defineAsyncComponent(() => import('./components/nitrogenHome_blt.vue'));
       // nitrogenHome = defineAsyncComponent(() => import('./components/nitrogenHome_bet.vue'));
-      //nitrogenHome = defineAsyncComponent(() => import('./components/nitrogenHome.vue'));
+     // nitrogenHome = defineAsyncComponent(() => import('./components/nitrogenHome.vue'));
       nitrogenHome = defineAsyncComponent(() => import('./components/nitrogenHome_ln.vue'));
       return nitrogenHome;
   }