dedsudiyu před 2 roky
rodič
revize
dfb0ca6b0f

+ 43 - 21
src/views/comprehensive/laboratoryManagement/subject/index.vue

@@ -332,13 +332,15 @@
             pageSize:10,
           },
           hardwareData:[],
+          //mqtt实验室id
+          mqttIdList:[],
         }
       },
       created() {
       },
       mounted(){
         this.getDeptList();
-        this.subscriptionMQTT();
+        // this.subscriptionMQTT();
         this.getList();
       },
       methods:{
@@ -843,6 +845,7 @@
         /** 查询实验室列表 */
         getList() {
           this.loading = true;
+          this.offMQTT();
           authListSubject(this.queryParams).then(response => {
             this.subjectList = response.rows;
             this.total = response.total;
@@ -851,6 +854,12 @@
               this.$refs.multipleTable.setCurrentRow(response.rows[0]);
               this.subjectInfo(response.rows[0].id);
             }
+            let idList = [];
+            for(let i=0;i<response.rows.length;i++){
+              idList.push(response.rows[i].id)
+            }
+            this.$set(this,'mqttIdList',idList);
+            this.subscriptionMQTT();
           });
         },
         /** 查询学院列表 */
@@ -868,23 +877,26 @@
           });
           this.client.on("connect", e =>{
             console.log("连接成功");
-            this.client.subscribe(this.mtopic, (err) => {
-              if (!err) {
-                console.log("订阅成功:" + this.mtopic);
-              }
-            });
-            this.client.subscribe(this.mtopicOne, (err) => {
-              if (!err) {
-                console.log("订阅成功:" + this.mtopicOne);
-              }
-            });
+            for(let i = 0; i< self.mqttIdList.length;i++){
+              this.client.subscribe(this.mtopic+self.mqttIdList[i], (err) => {
+                if (!err) {
+                  console.log("订阅成功:" + this.mtopic+self.mqttIdList[i]);
+                }
+              });
+              this.client.subscribe(this.mtopicOne+self.mqttIdList[i], (err) => {
+                if (!err) {
+                  console.log("订阅成功:" + this.mtopicOne+self.mqttIdList[i]);
+                }
+              });
+            }
           });
           this.client.on("message", (topic, message) => {
             if (message){
               let data = JSON.parse(message)
-              if(topic == this.mtopic){
+              // console.log("MQTT----message",data)
+              if(data.data.subId){
                 //传感器
-                console.log("传感器",data);
+                // console.log("传感器",data.data.subId,'---------',data);
                 if(self.checkedSubject.id){
                   if(data.data.subId&&data.data.subId == self.checkedSubject.id){
                     self.$set(self.checkedSubject,'sensorFunctionStatusList',data.data.functionStatuses);
@@ -897,9 +909,9 @@
                     self.$set(self.newData.sensorFunctionStatusList[0],'sendDate',data.sendDate);
                   }
                 }
-              }else if(topic == this.mtopicOne){
+              }else{
                 //硬件
-                console.log("硬件",data);
+                // console.log("硬件",data);
                 for (let i = 0; i < data.data.length; i++) {
                   if (self.checkedSubject.labHardwareVOList) {
                     for (let k = 0; k < self.checkedSubject.labHardwareVOList.length; k++) {
@@ -934,13 +946,23 @@
         },
         //取消订阅关闭MQTT连接
         offMQTT(){
-          this.client.unsubscribe(this.mtopic, error => {
-            if (error) {
-              console.log('Unsubscribe error', error)
+          let self = this;
+          if (self.mqttIdList[0]){
+            for(let i=0;i<self.mqttIdList.length;i++){
+              self.client.unsubscribe(self.mtopic+self.mqttIdList[i], error => {
+                if (error) {
+                  console.log('Unsubscribe error', error)
+                }
+              })
+              self.client.unsubscribe(self.mtopicOne+self.mqttIdList[i], error => {
+                if (error) {
+                  console.log('Unsubscribe error', error)
+                }
+              })
             }
-          })
-          this.client.end();
-          this.client = {};
+            self.client.end();
+            self.client = {};
+          }
         },
         //视频方法
         videoFunction(){

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 1859
src/views/comprehensive/laboratoryManagement/subject/indexTwo.vue


+ 0 - 60
src/views/emergencyManagement/smartLoT/hardware/index.vue

@@ -144,9 +144,6 @@ export default {
       AI_VENTILATION:"AI_VENTILATION",
       ONE_MACHINE:"ONE_MACHINE",
       newData:{},
-      //MQTT请求参数-设备
-      mtopic:"lab/hardware/data",
-      mtopicOne:"lab/video",
       msg:"",
       client:{},
       // 查询参数
@@ -170,7 +167,6 @@ export default {
   },
   mounted(){
     this.getStatistics()
-    this.subscriptionMQTT();
     this.getDeptList();
   },
   methods: {
@@ -254,62 +250,6 @@ export default {
         this.pageType = type;
       }
     },
-    //MQTT订阅
-    subscriptionMQTT(){
-      let self = this;
-      this.client = mqtt.connect(process.env.VUE_APP_BASE_MQTT_API, {
-        username: process.env.VUE_APP_BASE_MQTT_USERNAME,
-        password: process.env.VUE_APP_BASE_MQTT_PASSWORD
-      });
-      this.client.on("connect", e =>{
-        console.log("连接成功");
-        this.client.subscribe(this.mtopic, (err) => {
-          if (!err) {
-            console.log("订阅成功:" + this.mtopic);
-          }
-        });
-        this.client.subscribe(this.mtopicOne, (err) => {
-          if (!err) {
-            console.log("订阅成功:" + this.mtopicOne);
-          }
-        });
-      });
-      this.client.on("message", (topic, message) => {
-        if (message){
-          let data = JSON.parse(message)
-          this.getStatistics();
-          console.log('topic',topic);
-          console.log('message',message);
-          if(topic == this.mtopic){
-            if (this.pageType == 'SWITCH'){
-              this.$refs.power.getList();
-            }else if(this.pageType == 'AI_VENTILATION'){
-              this.$refs.smart.getList();
-            }
-          }else if(topic == this.mtopicOne){
-            if (this.pageType == 'VIDEO_MONITOR'){
-              this.$refs.surveillance.getList();
-            }
-          }
-        }
-      });
-    },
-    //取消订阅关闭MQTT连接
-    offMQTT(){
-      this.client.unsubscribe(this.mtopic, error => {
-        if (error) {
-          console.log('Unsubscribe error', error)
-        }
-      })
-      this.client.end();
-      this.client = {};
-    },
-  },
-  beforeDestroy() {
-    //清除定时器
-    let self = this;
-    self.offMQTT();
-    console.log("beforeDestroy");
   },
 };
 </script>

+ 81 - 134
src/views/emergencyManagement/smartLoT/hardware/powerControl.vue

@@ -1,59 +1,6 @@
 <!--硬件管理/电源控制-->
 <template>
   <div class="powerControl">
-    <!--<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px" class="form-box">-->
-
-      <!--<el-form-item label="学院" prop="deptId">-->
-        <!--<el-select v-model="queryParams.deptId" placeholder="请选择学院" clearable @change="handleNodeClick">-->
-          <!--<el-option-->
-            <!--v-for="dict in deptOptions"-->
-            <!--:key="dict.deptId"-->
-            <!--:label="dict.deptName"-->
-            <!--:value="dict.deptId"-->
-          <!--&gt;</el-option>-->
-        <!--</el-select>-->
-      <!--</el-form-item>-->
-      <!--&lt;!&ndash;<el-form-item label="学院" prop="type">&ndash;&gt;-->
-        <!--&lt;!&ndash;<el-select v-model="queryParams.name" placeholder="请选择学院" clearable size="small">&ndash;&gt;-->
-          <!--&lt;!&ndash;<el-option label="请选择字典生成" value="" />&ndash;&gt;-->
-        <!--&lt;!&ndash;</el-select>&ndash;&gt;-->
-      <!--&lt;!&ndash;</el-form-item>&ndash;&gt;-->
-      <!--<el-form-item label="实验室" prop="subjectId">-->
-        <!--<el-select v-model="queryParams.subjectId" clearable placeholder="请选择实验室">-->
-          <!--<el-option-->
-            <!--v-for="item in subjectOptions"-->
-            <!--:key="item.id"-->
-            <!--:label="item.name"-->
-            <!--:value="item.id">-->
-          <!--</el-option>-->
-        <!--</el-select>-->
-      <!--</el-form-item>-->
-      <!--&lt;!&ndash;<el-form-item label="实验室" prop="type">&ndash;&gt;-->
-        <!--&lt;!&ndash;<el-select v-model="queryParams.factory" placeholder="请选择实验室" clearable size="small">&ndash;&gt;-->
-          <!--&lt;!&ndash;<el-option label="请选择字典生成" value="" />&ndash;&gt;-->
-        <!--&lt;!&ndash;</el-select>&ndash;&gt;-->
-      <!--&lt;!&ndash;</el-form-item>&ndash;&gt;-->
-      <!--<el-form-item label="状态" prop="operate">-->
-        <!--<el-select v-model="queryParams.operate" placeholder="请选择状态" clearable size="small">-->
-          <!--<el-option label="在线" value="ONLINE" />-->
-          <!--<el-option label="离线" value="OFFLINE" />-->
-          <!--<el-option label="开启" value="OPEN" />-->
-          <!--<el-option label="关闭" value="CLOSE" />-->
-        <!--</el-select>-->
-      <!--</el-form-item>-->
-      <!--<el-form-item style="float: right;">-->
-        <!--<el-col :span="1.5">-->
-          <!--<p class="add-button-one-120"-->
-             <!--@click="handleAdd"-->
-             <!--v-hasPermi="['laboratory:hardware:add']"-->
-          <!--&gt;<i class="el-icon-plus"></i>新增硬件</p>-->
-        <!--</el-col>-->
-      <!--</el-form-item>-->
-      <!--<el-form-item>-->
-        <!--<p class="inquire-button-one" @click="handleQuery">查询</p>-->
-        <!--<p class="reset-button-one" @click="resetQuery">重置</p>-->
-      <!--</el-form-item>-->
-    <!--</el-form>-->
     <el-table v-loading="loading" border :data="hardwareList" @selection-change="handleSelectionChange">
       <el-table-column label="名称" align="left" prop="name" />
       <el-table-column label="学院" align="left" prop="deptName" />
@@ -151,15 +98,6 @@
                 </el-option>
               </el-select>
             </el-form-item>
-<!--            <el-form-item label="MAC地址" prop="macAdd">-->
-<!--              <el-input-->
-<!--                v-model="form.macAdd"-->
-<!--                placeholder="请输入MAC地址"-->
-<!--                clearable-->
-<!--                size="small"-->
-<!--                @keyup.enter.native="handleQuery"-->
-<!--              />-->
-<!--            </el-form-item>-->
             <el-form-item label="实验室" prop="subjectId">
               <el-select v-model="form.subjectId" placeholder="请选择实验室">
                 <el-option v-for="lab in labListOptions"
@@ -169,13 +107,11 @@
                 </el-option>
               </el-select>
             </el-form-item>
-
             <el-form-item label="继电器类型" label-width="1rem">
               <el-radio-group v-model="form.hardwareType" @change="radioChange">
                 <el-radio :label="item.value" :key="item.value" v-for="(item,index) in hardwardTypeList">{{item.label}}</el-radio>
               </el-radio-group>
             </el-form-item>
-
             <el-form-item label="绑定继电器" prop="relayCode" v-if="form.hardwareType==1">
               <el-select v-model="form.relayCode" placeholder="请选择继电器" clearable @change="loadRelayNum" @clear="loadClear">
                 <el-option v-for="relay in relayList"
@@ -185,7 +121,6 @@
                 </el-option>
               </el-select>
             </el-form-item>
-
             <el-form-item label="继电器编号"  prop="relayCode" v-if="form.hardwareType==2">
               <el-input
                 v-model="form.relayCode"
@@ -195,7 +130,6 @@
                 maxlength="20"
               />
             </el-form-item>
-
             <el-form-item label="继电器位置" prop="bit" >
               <el-select v-model="form.bit" placeholder="请选择继电器位置" clearable >
                 <el-option v-for="lab in relayNumList"
@@ -205,18 +139,6 @@
                 </el-option>
               </el-select>
             </el-form-item>
-            <!--<el-form-item label="硬件位置" prop="position">-->
-              <!--<div class="map-box" :style="'width:'+mapData.widthData*3+'px;height:'+mapData.heightData*3+'px;'">-->
-                <!--<div v-for="(item,index1) in mapData.list" v-if="isUpdate"-->
-                     <!--:style="'top:'+item.y*3+'px;left:'+item.x*3+'px;'"-->
-                     <!--@mouseenter="moveClick(index1)"-->
-                     <!--@mousedown="move">-->
-                  <!--{{form.name?form.name:'未命名'}}-->
-                <!--</div>-->
-                <!--<p class="map-p" v-for="(item) in mapList"  :style="'top:'+item.y*3+'px;left:'+item.x*3+'px;'">{{item.name}}</p>-->
-              <!--</div>-->
-            <!--</el-form-item>-->
-
             <el-form-item label="配置名称"  prop="relayCode" v-if="form.hardwareType==2">
               <el-input
                 v-model="form.configName"
@@ -226,8 +148,6 @@
                 maxLength="15"
               />
             </el-form-item>
-
-
             <el-form-item label="配置状态"  prop="relayCode" v-if="form.hardwareType==2">
               <el-input
                 v-model="form.configStatus"
@@ -237,7 +157,6 @@
                 maxLength="8"
               />
             </el-form-item>
-
           </el-form>
         </div>
         <div class="videoSurveillance-bottom-button-box">
@@ -247,43 +166,11 @@
         </div>
       </div>
     </el-drawer>
-    <!--<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body class="hardware-dialog">-->
-      <!--<el-form ref="form" :model="form" :rules="rules" label-width="80px">-->
-        <!--<el-form-item label="设备名称" prop="name">-->
-          <!--<el-input v-model="form.name" placeholder="请输入设备名称" />-->
-        <!--</el-form-item>-->
-        <!--<el-form-item label="设备类型" prop="type" v-if="pageType==''">-->
-          <!--<el-select v-model="form.type" placeholder="请选择设备类型">-->
-            <!--<el-option label="请选择设备类型" value="" />-->
-            <!--<el-option v-for="hardType in hardTypeOptions"-->
-            <!--:key="hardType.enumName"-->
-            <!--:label="hardType.name"-->
-            <!--:value="hardType.enumName">-->
-            <!--</el-option>-->
-          <!--</el-select>-->
-        <!--</el-form-item>-->
-        <!--<el-form-item label="mac地址" prop="macAdd">-->
-          <!--<el-input v-model="form.macAdd" placeholder="请输入mac地址" />-->
-        <!--</el-form-item>-->
-        <!--<el-form-item label="实验室" prop="subjectId">-->
-          <!--<el-select v-model="form.subjectId" placeholder="请选择实验室">-->
-          <!--<el-option v-for="lab in labListOptions"-->
-                     <!--:key="lab.id"-->
-                     <!--:label="lab.name"-->
-                     <!--:value="lab.id">-->
-          <!--</el-option>-->
-          <!--</el-select>-->
-        <!--</el-form-item>-->
-      <!--</el-form>-->
-      <!--<div slot="footer" class="dialog-footer">-->
-        <!--<el-button type="primary" @click="submitForm">确 定</el-button>-->
-        <!--<el-button @click="cancel">取 消</el-button>-->
-      <!--</div>-->
-    <!--</el-dialog>-->
   </div>
 </template>
 
 <script>
+  import mqtt from 'mqtt'
   import { subjectDictList } from "@/api/laboratory/group";
   import { listDepartments } from "@/api/system/dept";
   import { listHardware, getHardware, delHardware, addHardware, updateHardware,queryHardwareType,getHardwareDetail,getSubjectLayout,hardWareControl  } from "@/api/laboratory/hardware";
@@ -326,20 +213,6 @@
         deptOptions: [],
         subjectOptions: undefined,
         isUpdate:false,
-        // 查询参数
-        // queryParams: {
-        //   pageNum: 1,
-        //   pageSize: 10,
-        //   name: null,
-        //   factory: null,
-        //   type: null,
-        //   macAdd: null,
-        //   subjectId: null,
-        //   deptId: null,
-        //   deptName: null,
-        //   operate: null,
-        //   userId: null,
-        // },
         // 表单参数
         form: {
           hardwareType:1
@@ -353,9 +226,6 @@
             type: [
                 { required: true, message: "请选择硬件类型", trigger: "blur" }
             ],
-            // macAdd: [
-            //     { required: true, message: "请输入MAC地址", trigger: "blur" },
-            // ],
             subjectId:[
                 { required: true, message: "请选择实验室", trigger: "blur" },
             ]
@@ -400,7 +270,10 @@
         hardwardTypeList:[
           {value:1,label:"老继电器"},
           {value:2,label:"新继电器"}
-        ]
+        ],
+        mtopic:"lab/hardware/data",
+        //mqtt发送id数组
+        mqttIdList:[],
       };
     },
     created() {
@@ -537,12 +410,65 @@
       },
       /** 查询硬件列表 */
       getList() {
+        this.offMQTT();
         this.loading = true;
         this.queryParams.type = this.pageType;
         listHardware(this.queryParams).then(response => {
           this.hardwareList = response.rows;
           this.total = response.total;
           this.loading = false;
+          //处理实验室id
+          let list = [];
+          for(let i=0;i<response.rows.length;i++){
+            let num = 0;
+            for(let o=0;o<list.length;o++){
+              if(response.rows[i].subjectId == list){
+                num++
+              }
+            }
+            if(num == 0){
+              list.push(response.rows[i].subjectId)
+            }
+          }
+          this.$set(this,'mqttIdList',list);
+          this.subscriptionMQTT();
+        });
+      },
+      //MQTT订阅
+      subscriptionMQTT(){
+        let self = this;
+        this.client = mqtt.connect(process.env.VUE_APP_BASE_MQTT_API, {
+          username: process.env.VUE_APP_BASE_MQTT_USERNAME,
+          password: process.env.VUE_APP_BASE_MQTT_PASSWORD
+        });
+        this.client.on("connect", e =>{
+          console.log("连接成功");
+          for(let i=0;i<self.mqttIdList.length;i++){
+            this.client.subscribe(this.mtopic+self.mqttIdList[i], (err) => {
+              if (!err) {
+                console.log("订阅成功:" + this.mtopic+self.mqttIdList[i]);
+              }
+            });
+          }
+        });
+        this.client.on("message", (topic, message) => {
+          if (message){
+            let data = JSON.parse(message)
+            // this.getStatistics();
+            for(let i=0;i<data.data.length;i++){
+              for(let o=0;o<self.hardwareList.length;o++){
+                if(data.data[i].num == self.hardwareList[o].id){
+                  if (data.data[i].hardwareOperate == 'CLOSE') {
+                    self.$set(self.hardwareList[o],'status',4);
+                  } else if (data.data[i].hardwareOperate == 'OPEN') {
+                    self.$set(self.hardwareList[o],'status',3);
+                  } else if (data.data[i].hardwareOperate == 'OFFLINE') {
+                    self.$set(self.hardwareList[o],'status',0);
+                  }
+                }
+              }
+            }
+          }
         });
       },
       // 查询继电器列表
@@ -816,8 +742,29 @@
         this.download('laboratory/hardware/export', {
           ...this.queryParams
         }, `laboratory_hardware.xlsx`)
-      }
-    }
+      },
+      //取消订阅关闭MQTT连接
+      offMQTT(){
+        let self = this;
+        if (self.mqttIdList[0]) {
+          for (let i = 0; i < self.mqttIdList.length; i++) {
+            self.client.unsubscribe(this.mtopic + self.mqttIdList[i], error => {
+              if (error) {
+                console.log('Unsubscribe error', error)
+              }
+            })
+          }
+          self.client.end();
+          self.client = {};
+        }
+      },
+    },
+    beforeDestroy() {
+      //清除定时器
+      let self = this;
+      self.offMQTT();
+      console.log("beforeDestroy");
+    },
   };
 </script>
 

+ 81 - 143
src/views/emergencyManagement/smartLoT/hardware/smartVentilation.vue

@@ -1,59 +1,6 @@
 <!--硬件管理/智能通风-->
 <template>
   <div class="smartVentilation">
-    <!--<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px" class="form-box">-->
-
-      <!--<el-form-item label="学院" prop="deptId">-->
-        <!--<el-select v-model="queryParams.deptId" placeholder="请选择学院" clearable @change="handleNodeClick">-->
-          <!--<el-option-->
-            <!--v-for="dict in deptOptions"-->
-            <!--:key="dict.deptId"-->
-            <!--:label="dict.deptName"-->
-            <!--:value="dict.deptId"-->
-          <!--&gt;</el-option>-->
-        <!--</el-select>-->
-      <!--</el-form-item>-->
-      <!--&lt;!&ndash;<el-form-item label="学院" prop="type">&ndash;&gt;-->
-        <!--&lt;!&ndash;<el-select v-model="queryParams.name" placeholder="请选择学院" clearable size="small">&ndash;&gt;-->
-          <!--&lt;!&ndash;<el-option label="请选择字典生成" value="" />&ndash;&gt;-->
-        <!--&lt;!&ndash;</el-select>&ndash;&gt;-->
-      <!--&lt;!&ndash;</el-form-item>&ndash;&gt;-->
-      <!--<el-form-item label="实验室" prop="subjectId">-->
-        <!--<el-select v-model="queryParams.subjectId" clearable placeholder="请选择实验室">-->
-          <!--<el-option-->
-            <!--v-for="item in subjectOptions"-->
-            <!--:key="item.id"-->
-            <!--:label="item.name"-->
-            <!--:value="item.id">-->
-          <!--</el-option>-->
-        <!--</el-select>-->
-      <!--</el-form-item>-->
-      <!--&lt;!&ndash;<el-form-item label="实验室" prop="type">&ndash;&gt;-->
-        <!--&lt;!&ndash;<el-select v-model="queryParams.factory" placeholder="请选择实验室" clearable size="small">&ndash;&gt;-->
-          <!--&lt;!&ndash;<el-option label="请选择字典生成" value="" />&ndash;&gt;-->
-        <!--&lt;!&ndash;</el-select>&ndash;&gt;-->
-      <!--&lt;!&ndash;</el-form-item>&ndash;&gt;-->
-      <!--<el-form-item label="状态" prop="operate">-->
-        <!--<el-select v-model="queryParams.operate" placeholder="请选择状态" clearable size="small">-->
-          <!--<el-option label="在线" value="ONLINE" />-->
-          <!--<el-option label="离线" value="OFFLINE" />-->
-          <!--<el-option label="开启" value="OPEN" />-->
-          <!--<el-option label="关闭" value="CLOSE" />-->
-        <!--</el-select>-->
-      <!--</el-form-item>-->
-      <!--<el-form-item style="float: right;">-->
-        <!--<el-col :span="1.5">-->
-          <!--<p class="add-button-one-120"-->
-             <!--@click="handleAdd"-->
-             <!--v-hasPermi="['laboratory:hardware:add']"-->
-          <!--&gt;<i class="el-icon-plus"></i>新增硬件</p>-->
-        <!--</el-col>-->
-      <!--</el-form-item>-->
-      <!--<el-form-item>-->
-        <!--<p class="inquire-button-one" @click="handleQuery">查询</p>-->
-        <!--<p class="reset-button-one" @click="resetQuery">重置</p>-->
-      <!--</el-form-item>-->
-    <!--</el-form>-->
     <el-table v-loading="loading" border :data="hardwareList" @selection-change="handleSelectionChange">
       <el-table-column label="名称" align="left" prop="name" />
       <el-table-column label="学院" align="left" prop="deptName" />
@@ -66,7 +13,6 @@
       </el-table-column>
       <el-table-column label="开关" align="left" >
         <template slot-scope="scope" class="captcha-img">
-          <!--@change="(event)=>switchChange(event,scope.row.id)"-->
           <el-switch
             v-if="scope.row.status == 3||scope.row.status == 4"
             @click.native="changeIsNeedCaptcha(scope.row)"
@@ -127,25 +73,6 @@
                 maxLength="8"
               />
             </el-form-item>
-            <!--<el-form-item label="硬件类型" v-if="pageType==''" prop="type">-->
-              <!--<el-select v-model="form.type" placeholder="请选择硬件类型">-->
-                <!--<el-option label="请选择硬件类型" value="" />-->
-                <!--<el-option v-for="hardType in hardTypeOptions"-->
-                           <!--:key="hardType.enumName"-->
-                           <!--:label="hardType.name"-->
-                           <!--:value="hardType.enumName">-->
-                <!--</el-option>-->
-              <!--</el-select>-->
-            <!--</el-form-item>-->
-<!--            <el-form-item label="MAC地址" prop="macAdd">
-              <el-input
-                v-model="form.macAdd"
-                placeholder="请输入MAC地址"
-                clearable
-                size="small"
-                @keyup.enter.native="handleQuery"
-              />
-            </el-form-item>-->
             <el-form-item label="实验室" prop="subjectId">
               <el-select v-model="form.subjectId" placeholder="请选择实验室">
                 <el-option v-for="lab in labListOptions"
@@ -155,14 +82,11 @@
                 </el-option>
               </el-select>
             </el-form-item>
-
-
             <el-form-item label="继电器类型" label-width="1rem" @change="radioChange">
               <el-radio-group v-model="form.hardwareType">
                 <el-radio :label="item.value" :key="item.value" v-for="item in hardwardTypeList">{{item.label}}</el-radio>
               </el-radio-group>
             </el-form-item>
-
             <el-form-item label="绑定继电器" prop="relayCode" v-if="form.hardwareType==1">
               <el-select v-model="form.relayCode" placeholder="请选择继电器" clearable @change="loadRelayNum" @clear="loadClear">
                 <el-option v-for="relay in relayList"
@@ -172,7 +96,6 @@
                 </el-option>
               </el-select>
             </el-form-item>
-
             <el-form-item label="继电器编号"  prop="relayCode" v-if="form.hardwareType==2">
               <el-input
                 v-model="form.relayCode"
@@ -182,7 +105,6 @@
                 maxLength="15"
               />
             </el-form-item>
-
             <el-form-item label="继电器位置" prop="bit">
               <el-select v-model="form.bit" placeholder="请选择继电器位置" clearable>
                 <el-option v-for="lab in relayNumList"
@@ -192,18 +114,6 @@
                 </el-option>
               </el-select>
             </el-form-item>
-            <!--<el-form-item label="硬件位置" prop="position">-->
-              <!--<div class="map-box" :style="'width:'+mapData.widthData*3+'px;height:'+mapData.heightData*3+'px;'">-->
-                <!--<div v-for="(item,index1) in mapData.list" v-if="isUpdate"-->
-                     <!--:style="'top:'+item.y*3+'px;left:'+item.x*3+'px;'"-->
-                     <!--@mouseenter="moveClick(index1)"-->
-                     <!--@mousedown="move">-->
-                  <!--{{form.name?form.name:'未命名'}}-->
-                <!--</div>-->
-                <!--<p class="map-p" v-for="(item) in mapList"  :style="'top:'+item.y*3+'px;left:'+item.x*3+'px;'">{{item.name}}</p>-->
-              <!--</div>-->
-            <!--</el-form-item>-->
-
             <el-form-item label="配置名称"  prop="relayCode" v-if="form.hardwareType==2">
               <el-input
                 v-model="form.configName"
@@ -213,8 +123,6 @@
                 maxLength="8"
               />
             </el-form-item>
-
-
             <el-form-item label="配置状态"  prop="relayCode" v-if="form.hardwareType==2">
               <el-input
                 v-model="form.configStatus"
@@ -224,7 +132,6 @@
                 maxLength="8"
               />
             </el-form-item>
-
           </el-form>
         </div>
         <div class="videoSurveillance-bottom-button-box">
@@ -234,38 +141,11 @@
         </div>
       </div>
     </el-drawer>
-    <!--<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body class="hardware-dialog">-->
-      <!--<el-form ref="form" :model="form" :rules="rules" label-width="80px">-->
-        <!--<el-form-item label="设备名称" prop="name">-->
-          <!--<el-input v-model="form.name" placeholder="请输入设备名称" />-->
-        <!--</el-form-item>-->
-        <!--<el-form-item label="设备类型" prop="type" v-if="pageType==''">-->
-          <!--<el-select v-model="form.type" placeholder="请选择设备类型" >-->
-            <!--<el-option label="请选择字典生成" value="" />-->
-          <!--</el-select>-->
-        <!--</el-form-item>-->
-        <!--<el-form-item label="mac地址" prop="macAdd">-->
-          <!--<el-input v-model="form.macAdd" placeholder="请输入mac地址" />-->
-        <!--</el-form-item>-->
-        <!--<el-form-item label="实验室" prop="subjectId">-->
-          <!--<el-select v-model="form.subjectId" placeholder="请选择实验室">-->
-            <!--<el-option v-for="lab in labListOptions"-->
-                       <!--:key="lab.id"-->
-                       <!--:label="lab.name"-->
-                       <!--:value="lab.id">-->
-            <!--</el-option>-->
-          <!--</el-select>-->
-        <!--</el-form-item>-->
-      <!--</el-form>-->
-      <!--<div slot="footer" class="dialog-footer">-->
-        <!--<el-button type="primary" @click="submitForm">确 定</el-button>-->
-        <!--<el-button @click="cancel">取 消</el-button>-->
-      <!--</div>-->
-    <!--</el-dialog>-->
   </div>
 </template>
 
 <script>
+  import mqtt from 'mqtt'
   import { subjectDictList } from "@/api/laboratory/group";
   import { listDepartments } from "@/api/system/dept";
   import { listHardware, getHardware, delHardware, addHardware, updateHardware,queryHardwareType,getHardwareDetail,getSubjectLayout,hardWareControl } from "@/api/laboratory/hardware";
@@ -274,7 +154,6 @@
   import Treeselect from "@riophae/vue-treeselect";
   import "@riophae/vue-treeselect/dist/vue-treeselect.css";
   import { listRelay } from "@/api/laboratory/relay";
-
   export default {
     props:{
       pageType:{},
@@ -310,20 +189,6 @@
         isUpdate:false,
         switch:0,
         disabledType: "",
-        // 查询参数
-        // queryParams: {
-        //   pageNum: 1,
-        //   pageSize: 10,
-        //   name: null,
-        //   factory: null,
-        //   type: null,
-        //   macAdd: null,
-        //   subjectId: null,
-        //   deptId: null,
-        //   deptName: null,
-        //   operate: null,
-        //   userId: null,
-        // },
         // 表单参数
         form: {
           hardwareType: 1,
@@ -338,9 +203,6 @@
             type: [
                 { required: true, message: "请选择硬件类型", trigger: "blur" }
             ],
-            // macAdd: [
-            //     { required: true, message: "请输入MAC地址", trigger: "blur" },
-            // ],
             subjectId:[
                 { required: true, message: "请选择实验室", trigger: "blur" },
             ]
@@ -380,7 +242,10 @@
         hardwardTypeList:[
           {value:1,label:"老继电器"},
           {value:2,label:"新继电器"}
-        ]
+        ],
+        mtopic:"lab/hardware/data",
+        //mqtt发送id数组
+        mqttIdList:[],
       };
     },
     created() {
@@ -511,13 +376,65 @@
       },
       /** 查询硬件列表 */
       getList() {
-        let self = this;
+        this.offMQTT();
         this.loading = true;
         this.queryParams.type = this.pageType;
         listHardware(this.queryParams).then(response => {
           this.hardwareList = response.rows;
           this.total = response.total;
           this.loading = false;
+          //处理实验室id
+          let list = [];
+          for(let i=0;i<response.rows.length;i++){
+            let num = 0;
+            for(let o=0;o<list.length;o++){
+              if(response.rows[i].subjectId == list){
+                num++
+              }
+            }
+            if(num == 0){
+              list.push(response.rows[i].subjectId)
+            }
+          }
+          this.$set(this,'mqttIdList',list);
+          this.subscriptionMQTT();
+        });
+      },
+      //MQTT订阅
+      subscriptionMQTT(){
+        let self = this;
+        this.client = mqtt.connect(process.env.VUE_APP_BASE_MQTT_API, {
+          username: process.env.VUE_APP_BASE_MQTT_USERNAME,
+          password: process.env.VUE_APP_BASE_MQTT_PASSWORD
+        });
+        this.client.on("connect", e =>{
+          console.log("连接成功");
+          for(let i=0;i<self.mqttIdList.length;i++){
+            this.client.subscribe(this.mtopic+self.mqttIdList[i], (err) => {
+              if (!err) {
+                console.log("订阅成功:" + this.mtopic+self.mqttIdList[i]);
+              }
+            });
+          }
+        });
+        this.client.on("message", (topic, message) => {
+          if (message){
+            let data = JSON.parse(message)
+            // this.getStatistics();
+            for(let i=0;i<data.data.length;i++){
+              for(let o=0;o<self.hardwareList.length;o++){
+                if(data.data[i].num == self.hardwareList[o].id){
+                  if (data.data[i].hardwareOperate == 'CLOSE') {
+                    self.$set(self.hardwareList[o],'status',4);
+                  } else if (data.data[i].hardwareOperate == 'OPEN') {
+                    self.$set(self.hardwareList[o],'status',3);
+                  } else if (data.data[i].hardwareOperate == 'OFFLINE') {
+                    self.$set(self.hardwareList[o],'status',0);
+                  }
+                }
+              }
+            }
+          }
         });
       },
       // 查询继电器列表
@@ -800,8 +717,29 @@
         this.download('laboratory/hardware/export', {
           ...this.queryParams
         }, `laboratory_hardware.xlsx`)
-      }
-    }
+      },
+      //取消订阅关闭MQTT连接
+      offMQTT(){
+        let self = this;
+        if (self.mqttIdList[0]) {
+          for (let i = 0; i < self.mqttIdList.length; i++) {
+            self.client.unsubscribe(this.mtopic + self.mqttIdList[i], error => {
+              if (error) {
+                console.log('Unsubscribe error', error)
+              }
+            })
+          }
+          self.client.end();
+          self.client = {};
+        }
+      },
+    },
+    beforeDestroy() {
+      //清除定时器
+      let self = this;
+      self.offMQTT();
+      console.log("beforeDestroy");
+    },
   };
 </script>
 

+ 0 - 45
src/views/emergencyManagement/smartLoT/sensor/index.vue

@@ -243,7 +243,6 @@ export default {
         ]
       },
       //MQTT请求参数-设备
-      mtopic:"lab/sensor",
       msg:"",
     };
   },
@@ -252,46 +251,8 @@ export default {
   mounted(){
     this.getList();
     this.getDeptList();
-    this.subscriptionMQTT();
   },
   methods: {
-    //MQTT订阅
-    subscriptionMQTT(){
-      let self = this;
-      this.client = mqtt.connect(process.env.VUE_APP_BASE_MQTT_API, {
-        username: process.env.VUE_APP_BASE_MQTT_USERNAME,
-        password: process.env.VUE_APP_BASE_MQTT_PASSWORD
-      });
-      this.client.on("connect", e =>{
-        console.log("连接成功");
-        this.client.subscribe(this.mtopic, (err) => {
-          if (!err) {
-            console.log("订阅成功:" + this.mtopic);
-          }
-        });
-      });
-      this.client.on("message", (topic, message) => {
-        if (message){
-          let data = JSON.parse(message)
-          console.log("接受到",this.mtopic)
-          if(topic == this.mtopic){
-            console.log('topic',topic);
-            console.log('message',message);
-            self.getList();
-          }
-        }
-      });
-    },
-    //取消订阅关闭MQTT连接
-    offMQTT(){
-      this.client.unsubscribe(this.mtopic, error => {
-        if (error) {
-          console.log('Unsubscribe error', error)
-        }
-      })
-      this.client.end();
-      this.client = {};
-    },
     /** 查询实验室字典列表 */
     getSubjectDictList (deptId) {
       this.subjectOptions = null;
@@ -455,12 +416,6 @@ export default {
       }, `laboratory_sensor.xlsx`)
     }
   },
-  beforeDestroy() {
-    //清除定时器
-    let self = this;
-    self.offMQTT();
-    console.log("beforeDestroy");
-  },
 };
 </script>
 <style scoped lang="scss">

+ 0 - 59
src/views/medicUniversity-3_1/chemicalManagement/deviceManagement/IntelligentTerminal/index.vue

@@ -154,7 +154,6 @@
 </template>
 
 <script>
-  import mqtt from 'mqtt'
   import { hxpSmartTerminal,filterDept,getSubList,addHxpSmartTerminal,putHxpSmartTerminal,getHxpSmartTerminal,delHxpSmartTerminal } from "@/api/medicUniversity-3_1/index";
   import { listHardware, delHardware, addHardware, updateHardware } from "@/api/medicUniversity-3_1/index";
   import { listDepartments } from "@/api/system/dept";
@@ -163,8 +162,6 @@
     name: "IntelligentTerminal",
     data() {
       return {
-        //MQTT请求参数-设备
-        mtopic:"lab/hardware/data",
         client:{},
         // table操作按钮校验
         tableButtonType:this.hasPermiDom(['laboratory:hardware5:edit','laboratory:hardware5:remove']),
@@ -230,7 +227,6 @@
 
     },
     mounted(){
-      this.subscriptionMQTT();
       this.filterDept();
       this.listDepartments();
       this.getList();
@@ -435,61 +431,6 @@
         }
         return type;
       },
-      //MQTT订阅
-      subscriptionMQTT(){
-        let self = this;
-        this.client = mqtt.connect(process.env.VUE_APP_BASE_MQTT_API, {
-          username: process.env.VUE_APP_BASE_MQTT_USERNAME,
-          password: process.env.VUE_APP_BASE_MQTT_PASSWORD
-        });
-        this.client.on("connect", e =>{
-          console.log("连接成功");
-          this.client.subscribe(this.mtopic, (err) => {
-            if (!err) {
-              console.log("订阅成功:" + this.mtopic);
-            }
-          });
-        });
-        this.client.on("message", (topic, message) => {
-          if (message){
-            let data = JSON.parse(message)
-            if(topic == this.mtopic){
-              for(let i=0;i<data.data.length;i++){
-                for(let o=0;o<self.tableList.length;o++){
-                  if(data.data[i].num == self.tableList[o].id){
-                    if(data.data[i].hardwareOperate == 'CLOSE'){
-                      //停用并上线
-                      self.$set(self.tableList[o],'status',4);
-                    }else if(data.data[i].hardwareOperate == 'OPEN'){
-                      //启用并上线
-                      self.$set(self.tableList[o],'status',3);
-                    }else if(data.data[i].hardwareOperate == 'OFFLINE'){
-                      //离线
-                      self.$set(self.tableList[o],'status',0);
-                    }
-                  }
-                }
-              }
-            }
-          }
-        });
-      },
-      //取消订阅关闭MQTT连接
-      offMQTT(){
-        this.client.unsubscribe(this.mtopic, error => {
-          if (error) {
-            console.log('Unsubscribe error', error)
-          }
-        })
-        this.client.end();
-        this.client = {};
-      },
-    },
-    beforeDestroy() {
-      //清除定时器
-      let self = this;
-      self.offMQTT();
-      console.log("beforeDestroy");
     },
   }
 </script>

+ 0 - 59
src/views/medicUniversity-3_1/chemicalManagement/deviceManagement/SmartAccessControl/index.vue

@@ -154,7 +154,6 @@
 </template>
 
 <script>
-  import mqtt from 'mqtt'
   import { hxpSmartTerminal,filterDept,getSubList,addHxpSmartTerminal,putHxpSmartTerminal,getHxpSmartTerminal,delHxpSmartTerminal } from "@/api/medicUniversity-3_1/index";
   import { listHardware, delHardware, addHardware, updateHardware } from "@/api/medicUniversity-3_1/index";
   import { listDepartments } from "@/api/system/dept";
@@ -163,8 +162,6 @@
     name: "SmartAccessControl",
     data() {
       return {
-        //MQTT请求参数-设备
-        mtopic:"lab/hardware/data",
         // table操作按钮校验
         tableButtonType:this.hasPermiDom(['laboratory:hardware6:edit','laboratory:hardware6:remove']),
         //上传相关配置
@@ -229,7 +226,6 @@
 
     },
     mounted(){
-      this.subscriptionMQTT();
       this.filterDept();
       this.listDepartments();
       this.getList();
@@ -434,61 +430,6 @@
         }
         return type;
       },
-      //MQTT订阅
-      subscriptionMQTT(){
-        let self = this;
-        this.client = mqtt.connect(process.env.VUE_APP_BASE_MQTT_API, {
-          username: process.env.VUE_APP_BASE_MQTT_USERNAME,
-          password: process.env.VUE_APP_BASE_MQTT_PASSWORD
-        });
-        this.client.on("connect", e =>{
-          console.log("连接成功");
-          this.client.subscribe(this.mtopic, (err) => {
-            if (!err) {
-              console.log("订阅成功:" + this.mtopic);
-            }
-          });
-        });
-        this.client.on("message", (topic, message) => {
-          if (message){
-            let data = JSON.parse(message)
-            if(topic == this.mtopic){
-              for(let i=0;i<data.data.length;i++){
-                for(let o=0;o<self.tableList.length;o++){
-                  if(data.data[i].num == self.tableList[o].id){
-                    if(data.data[i].hardwareOperate == 'CLOSE'){
-                      //停用并上线
-                      self.$set(self.tableList[o],'status',4);
-                    }else if(data.data[i].hardwareOperate == 'OPEN'){
-                      //启用并上线
-                      self.$set(self.tableList[o],'status',3);
-                    }else if(data.data[i].hardwareOperate == 'OFFLINE'){
-                      //离线
-                      self.$set(self.tableList[o],'status',0);
-                    }
-                  }
-                }
-              }
-            }
-          }
-        });
-      },
-      //取消订阅关闭MQTT连接
-      offMQTT(){
-        this.client.unsubscribe(this.mtopic, error => {
-          if (error) {
-            console.log('Unsubscribe error', error)
-          }
-        })
-        this.client.end();
-        this.client = {};
-      },
-    },
-    beforeDestroy() {
-      //清除定时器
-      let self = this;
-      self.offMQTT();
-      console.log("beforeDestroy");
     },
   }
 </script>

+ 0 - 59
src/views/medicUniversity-3_1/chemicalManagement/deviceManagement/rfidIdentifier/index.vue

@@ -154,7 +154,6 @@
 </template>
 
 <script>
-  import mqtt from 'mqtt'
   import { hxpSmartTerminal,filterDept,getSubList,addHxpSmartTerminal,putHxpSmartTerminal,getHxpSmartTerminal,delHxpSmartTerminal } from "@/api/medicUniversity-3_1/index";
   import { listHardware, delHardware, addHardware, updateHardware } from "@/api/medicUniversity-3_1/index";
   import { listDepartments } from "@/api/system/dept";
@@ -163,8 +162,6 @@
     name: "rfidIdentifier",
     data() {
       return {
-        //MQTT请求参数-设备
-        mtopic:"lab/hardware/data",
         // table操作按钮校验
         tableButtonType:this.hasPermiDom(['laboratory:hardware7:edit','laboratory:hardware7:remove']),
         //上传相关配置
@@ -229,7 +226,6 @@
 
     },
     mounted(){
-      this.subscriptionMQTT();
       this.filterDept();
       this.listDepartments();
       this.getList();
@@ -434,61 +430,6 @@
         }
         return type;
       },
-      //MQTT订阅
-      subscriptionMQTT(){
-        let self = this;
-        this.client = mqtt.connect(process.env.VUE_APP_BASE_MQTT_API, {
-          username: process.env.VUE_APP_BASE_MQTT_USERNAME,
-          password: process.env.VUE_APP_BASE_MQTT_PASSWORD
-        });
-        this.client.on("connect", e =>{
-          console.log("连接成功");
-          this.client.subscribe(this.mtopic, (err) => {
-            if (!err) {
-              console.log("订阅成功:" + this.mtopic);
-            }
-          });
-        });
-        this.client.on("message", (topic, message) => {
-          if (message){
-            let data = JSON.parse(message)
-            if(topic == this.mtopic){
-              for(let i=0;i<data.data.length;i++){
-                for(let o=0;o<self.tableList.length;o++){
-                  if(data.data[i].num == self.tableList[o].id){
-                    if(data.data[i].hardwareOperate == 'CLOSE'){
-                      //停用并上线
-                      self.$set(self.tableList[o],'status',4);
-                    }else if(data.data[i].hardwareOperate == 'OPEN'){
-                      //启用并上线
-                      self.$set(self.tableList[o],'status',3);
-                    }else if(data.data[i].hardwareOperate == 'OFFLINE'){
-                      //离线
-                      self.$set(self.tableList[o],'status',0);
-                    }
-                  }
-                }
-              }
-            }
-          }
-        });
-      },
-      //取消订阅关闭MQTT连接
-      offMQTT(){
-        this.client.unsubscribe(this.mtopic, error => {
-          if (error) {
-            console.log('Unsubscribe error', error)
-          }
-        })
-        this.client.end();
-        this.client = {};
-      },
-    },
-    beforeDestroy() {
-      //清除定时器
-      let self = this;
-      self.offMQTT();
-      console.log("beforeDestroy");
     },
   }
 </script>

+ 0 - 59
src/views/medicUniversity-3_1/chemicalManagement/deviceManagement/smartAlarm/index.vue

@@ -264,7 +264,6 @@
 </template>
 
 <script>
-  import mqtt from 'mqtt'
   import { hxpSmartTerminal,filterDept,getSubList,addHxpSmartTerminal,putHxpSmartTerminal,getHxpSmartTerminal,delHxpSmartTerminal,updateStatus,alarmSettings } from "@/api/medicUniversity-3_1/index";
   import { listHardware, delHardware, addHardware, updateHardware, hardWareControl } from "@/api/medicUniversity-3_1/index";
   import { listRelay } from "@/api/laboratory/relay";
@@ -274,8 +273,6 @@
     name: "smartAlarm",
     data() {
       return {
-        //MQTT请求参数-设备
-        mtopic:"lab/hardware/data",
         // table操作按钮校验
         tableButtonType:this.hasPermiDom(['laboratory:hardware8:edit','laboratory:hardware8:remove']),
         //上传相关配置
@@ -380,7 +377,6 @@
 
     },
     mounted(){
-      this.subscriptionMQTT();
       this.filterDept();
       this.listDepartments();
       this.getList();
@@ -696,61 +692,6 @@
       getRowKeys(row) {
         return row.id
       },
-      //MQTT订阅
-      subscriptionMQTT(){
-        let self = this;
-        this.client = mqtt.connect(process.env.VUE_APP_BASE_MQTT_API, {
-          username: process.env.VUE_APP_BASE_MQTT_USERNAME,
-          password: process.env.VUE_APP_BASE_MQTT_PASSWORD
-        });
-        this.client.on("connect", e =>{
-          console.log("连接成功");
-          this.client.subscribe(this.mtopic, (err) => {
-            if (!err) {
-              console.log("订阅成功:" + this.mtopic);
-            }
-          });
-        });
-        this.client.on("message", (topic, message) => {
-          if (message){
-            let data = JSON.parse(message)
-            if(topic == this.mtopic){
-              for(let i=0;i<data.data.length;i++){
-                for(let o=0;o<self.tableList.length;o++){
-                  if(data.data[i].num == self.tableList[o].id){
-                    if(data.data[i].hardwareOperate == 'CLOSE'){
-                      //停用并上线
-                      self.$set(self.tableList[o],'status',4);
-                    }else if(data.data[i].hardwareOperate == 'OPEN'){
-                      //启用并上线
-                      self.$set(self.tableList[o],'status',3);
-                    }else if(data.data[i].hardwareOperate == 'OFFLINE'){
-                      //离线
-                      self.$set(self.tableList[o],'status',0);
-                    }
-                  }
-                }
-              }
-            }
-          }
-        });
-      },
-      //取消订阅关闭MQTT连接
-      offMQTT(){
-        this.client.unsubscribe(this.mtopic, error => {
-          if (error) {
-            console.log('Unsubscribe error', error)
-          }
-        })
-        this.client.end();
-        this.client = {};
-      },
-    },
-    beforeDestroy() {
-      //清除定时器
-      let self = this;
-      self.offMQTT();
-      console.log("beforeDestroy");
     },
   }
 </script>

+ 0 - 59
src/views/medicUniversity-3_1/chemicalManagement/deviceManagement/smartLocker/index.vue

@@ -235,7 +235,6 @@
 </template>
 
 <script>
-  import mqtt from 'mqtt'
   import { hxpSmartTerminal,filterDept,getSubList,addHxpSmartTerminal,putHxpSmartTerminal,getHxpSmartTerminal,delHxpSmartTerminal } from "@/api/medicUniversity-3_1/index";
   import { listHardware, delHardware, addHardware, updateHardware,setLock,getCabinetLockList } from "@/api/medicUniversity-3_1/index";
   import { listDepartments } from "@/api/system/dept";
@@ -257,8 +256,6 @@
         }
       }
       return {
-        //MQTT请求参数-设备
-        mtopic:"lab/hardware/data",
         client:{},
         // table操作按钮校验
         tableButtonType:this.hasPermiDom(['chemical:locklog:list','laboratory:hardware5:edit','laboratory:hardware5:remove']),
@@ -360,7 +357,6 @@
 
     },
     mounted(){
-      this.subscriptionMQTT();
       this.filterDept();
       this.listDepartments();
       this.getList();
@@ -649,61 +645,6 @@
       getRowKeys(row) {
         return row.id
       },
-      //MQTT订阅
-      subscriptionMQTT(){
-        let self = this;
-        this.client = mqtt.connect(process.env.VUE_APP_BASE_MQTT_API, {
-          username: process.env.VUE_APP_BASE_MQTT_USERNAME,
-          password: process.env.VUE_APP_BASE_MQTT_PASSWORD
-        });
-        this.client.on("connect", e =>{
-          console.log("连接成功");
-          this.client.subscribe(this.mtopic, (err) => {
-            if (!err) {
-              console.log("订阅成功:" + this.mtopic);
-            }
-          });
-        });
-        this.client.on("message", (topic, message) => {
-          if (message){
-            let data = JSON.parse(message)
-            if(topic == this.mtopic){
-              for(let i=0;i<data.data.length;i++){
-                for(let o=0;o<self.tableList.length;o++){
-                  if(data.data[i].num == self.tableList[o].id){
-                    if(data.data[i].hardwareOperate == 'CLOSE'){
-                      //停用并上线
-                      self.$set(self.tableList[o],'status',4);
-                    }else if(data.data[i].hardwareOperate == 'OPEN'){
-                      //启用并上线
-                      self.$set(self.tableList[o],'status',3);
-                    }else if(data.data[i].hardwareOperate == 'OFFLINE'){
-                      //离线
-                      self.$set(self.tableList[o],'status',0);
-                    }
-                  }
-                }
-              }
-            }
-          }
-        });
-      },
-      //取消订阅关闭MQTT连接
-      offMQTT(){
-        this.client.unsubscribe(this.mtopic, error => {
-          if (error) {
-            console.log('Unsubscribe error', error)
-          }
-        })
-        this.client.end();
-        this.client = {};
-      },
-    },
-    beforeDestroy() {
-      //清除定时器
-      let self = this;
-      self.offMQTT();
-      console.log("beforeDestroy");
     },
   }
 </script>