dedsudiyu 1 年之前
父节点
当前提交
52cc3609c7
共有 21 个文件被更改,包括 331 次插入204 次删除
  1. 12 6
      src/assets/styles/index.scss
  2. 1 1
      src/views/integratedManagement/laboratoryManagement/subject/index.vue
  3. 152 81
      src/views/integratedManagement/laboratoryManagement/subject/indexRightPage/hardwarePage.vue
  4. 2 2
      src/views/integratedManagement/laboratoryManagement/subject/indexRightPage/indexRightPage.vue
  5. 85 59
      src/views/integratedManagement/laboratoryManagement/subject/indexRightPage/sensorPage.vue
  6. 16 3
      src/views/integratedManagement/laboratoryManagement/subject/indexRightPage/videoPage.vue
  7. 1 1
      src/views/iotDevice/appManage/applyUpgrades/index.vue
  8. 1 1
      src/views/iotDevice/hardwareManagement/hardwareClassification/index.vue
  9. 1 1
      src/views/iotDevice/hardwareManagement/hardwareEquipment/index.vue
  10. 1 1
      src/views/iotDevice/intelligenceIot/classConfig/addPage.vue
  11. 4 4
      src/views/iotDevice/intelligenceIot/classConfig/index.vue
  12. 13 10
      src/views/iotDevice/intelligenceIot/iotClassification/attributePage.vue
  13. 3 3
      src/views/iotDevice/intelligenceIot/iotClassification/index.vue
  14. 6 5
      src/views/iotDevice/intelligenceIot/iotHardware/addPage.vue
  15. 1 1
      src/views/iotDevice/monitoringWarning/warningLog/index.vue
  16. 1 1
      src/views/iotDevice/monitoringWarning/warningMode/index.vue
  17. 1 1
      src/views/iotDevice/operationManagement/monitorLog/index.vue
  18. 2 2
      src/views/iotDevice/operationManagement/networkComponent/index.vue
  19. 26 21
      src/views/iotDevice/operationManagement/protocolManagement/index.vue
  20. 1 0
      src/views/systemManagement/smallProgramConfig/smallProgramPageConfig/homeMenuConfig.vue
  21. 1 0
      src/views/systemManagement/smallProgramConfig/smallProgramPageConfig/mineMenuConfig.vue

+ 12 - 6
src/assets/styles/index.scss

@@ -422,8 +422,10 @@ aside {
 }
 .scrollbar-box::-webkit-scrollbar-thumb{
   border-radius: 5px;
-  -webkit-box-shadow: inset 0 0 5px $acquiesceThemeScrollbarB;
-  background: $acquiesceThemeScrollbarA;
+  //-webkit-box-shadow: inset 0 0 5px $acquiesceThemeScrollbarB;
+  //background: $acquiesceThemeScrollbarA;
+  -webkit-box-shadow: inset 0 0 5px rgba(255,255,255,0);
+  background: rgba(255,255,255,0);
 }
 .scrollbar-box::-webkit-scrollbar-track{
   -webkit-box-shadow: inset 0 0 5px rgba(255,255,255,0);
@@ -442,8 +444,10 @@ aside {
 }
 .scrollbar-x-box::-webkit-scrollbar-thumb{
   border-radius: 5px;
-  -webkit-box-shadow: inset 0 0 5px $acquiesceThemeScrollbarB;
-  background: $acquiesceThemeScrollbarA;
+  //-webkit-box-shadow: inset 0 0 5px $acquiesceThemeScrollbarB;
+  //background: $acquiesceThemeScrollbarA;
+  -webkit-box-shadow: inset 0 0 5px rgba(255,255,255,0);
+  background: rgba(255,255,255,0);
 }
 .scrollbar-x-box::-webkit-scrollbar-track{
   -webkit-box-shadow: inset 0 0 5px rgba(255,255,255,0);
@@ -460,8 +464,10 @@ aside {
 }
 .el-textarea__inner::-webkit-scrollbar-thumb{
   border-radius: 5px;
-  -webkit-box-shadow: inset 0 0 5px $acquiesceThemeScrollbarB;
-  background: $acquiesceThemeScrollbarA;
+  //-webkit-box-shadow: inset 0 0 5px $acquiesceThemeScrollbarB;
+  //background: $acquiesceThemeScrollbarA;
+  -webkit-box-shadow: inset 0 0 5px rgba(255,255,255,0);
+  background: rgba(255,255,255,0);
 }
 .el-textarea__inner::-webkit-scrollbar-track{
   -webkit-box-shadow: inset 0 0 5px rgba(255,255,255,0);

+ 1 - 1
src/views/integratedManagement/laboratoryManagement/subject/index.vue

@@ -90,7 +90,7 @@
                 <div class="table-button-box">
                   <p class="table-button-null"></p>
                   <p class="table-button-p" v-hasPermi="['laboratory:subject:query']"
-                     @click="clickPage(7,scope.row)">详情</p>
+                     @click.stop="clickPage(7,scope.row)">详情</p>
                   <el-dropdown trigger="click" size="mini" @command="(command) => handleCommand(command, scope.row)">
                     <p class="table-button-p">更多>></p>
                     <el-dropdown-menu slot="dropdown" style="margin:0!important;">

+ 152 - 81
src/views/integratedManagement/laboratoryManagement/subject/indexRightPage/hardwarePage.vue

@@ -2,34 +2,37 @@
 <template>
   <div class="indexRightPage-hardwarePage scrollbar-box">
     <img class="null-img" src="@/assets/ZDimages/basicsModules/null-data-1.png" v-if="!hardwareList[0]">
-    <div class="for-hardware-max-big-box" :class="!item.online?'offLineColor':'onLineColor'"
-         v-for="(item,index) in hardwareList" :key="index">
-      <div class="for-hardware-big-box">
-        <div class="for-hardware-text-box" >
-          <el-tooltip class="item" effect="dark" :content="item.hardwareName" placement="bottom">
-            <p>{{item.hardwareName}}</p>
-          </el-tooltip>
-          <p v-if="!item.online">离线</p>
-        </div>
-        <div class="for-hardware-switch-box">
-          <div class="for-hardware-switch-title">
-            <p v-if="item.online">{{item.reservedThree}}</p>
+    <div class="for-hardware-max-big-box scrollbar-box">
+      <div class="for-hardware-big-box" :class="!item.online?'offLineColor':'onLineColor'"
+           v-for="(item,index) in hardwareList" :key="index">
+        <div class="for-hardware-box">
+          <div class="for-hardware-text-box" >
+            <el-tooltip class="item" effect="dark" :content="item.hardwareName" placement="bottom">
+              <p>{{item.hardwareName}}</p>
+            </el-tooltip>
+            <p v-if="!item.online">离线</p>
           </div>
-          <div class="for-hardware-switch" v-if="item.online">
-            <el-switch
-              class="switch"
-              @click.native="changeIsNeedCaptcha(item)"
-              v-model="item.operatingState"
-              :active-value="false"
-              :inactive-value="true"
-              active-text="开启"
-              inactive-text="关闭"
-              disabled>
-            </el-switch>
+          <div class="for-hardware-switch-box">
+            <div class="for-hardware-switch-title">
+              <p v-if="item.online && item.operatingState">{{item.reservedThree}}</p>
+            </div>
+            <div class="for-hardware-switch" v-if="item.online">
+              <el-switch
+                class="switch"
+                @click.native="changeIsNeedCaptcha(item)"
+                v-model="item.operatingState"
+                :active-value="true"
+                :inactive-value="false"
+                active-text="开启"
+                inactive-text="关闭"
+                disabled>
+              </el-switch>
+            </div>
           </div>
         </div>
       </div>
     </div>
+    <p class="bottom-time-p" v-if="lastOnlineTime">数据上报时间:{{parseTime(lastOnlineTime)}}</p>
   </div>
 </template>
 
@@ -42,7 +45,11 @@
     name: 'hardwarePage',
     data(){
       return{
+        //MQTT请求参数-传感器
+        mtOpic:"iot/device/hardware/sub/",
+        client:{},
         hardwareList:[],
+        lastOnlineTime:'',
       }
     },
     created(){
@@ -53,8 +60,8 @@
     },
     methods:{
       initialize(){
-        console.log(this.$parent.subId)
         this.iotHardwareFindBySubId();
+        this.offMQTT('on');
       },
       //查询传感器数据
       iotHardwareFindBySubId(){
@@ -65,11 +72,7 @@
       // 开启关闭验证
       async changeIsNeedCaptcha (row) {
         let self = this;
-        console.log(row)
-        if(row.operatingState!=3 && row.operatingState!=4){
-          return
-        }
-        let text = row.operatingState==3?'关闭':(row.operatingState==4?'开启':'')
+        let text = row.operatingState?'关闭':'开启';
         this.$confirm(`是否`+text+`此设备`, "提示", {
           confirmButtonText: "确定",
           cancelButtonText: "取消",
@@ -91,8 +94,66 @@
             this.msgSuccess("操作成功")
           }
         });
-
       },
+      //MQTT订阅
+      sensorMQTT(){
+        let self = this;
+        this.client = mqtt.connect(localStorage.getItem('mqttUrl'), {
+          username: localStorage.getItem('mqttUser'),
+          password:localStorage.getItem('mqttPassword')
+        });
+        this.client.on("connect", e =>{
+          this.client.subscribe(this.mtOpic+self.$parent.subId, (err) => {
+            if (!err) {
+              // console.log("订阅成功:" + this.mtOpic+self.$parent.subId);
+            }else{
+              // console.log("连接错误:" + err);
+            }
+          });
+        });
+        this.client.on("message", (topic, message) => {
+          if (message){
+            let data = JSON.parse(message)
+            // let list = JSON.parse(JSON.stringify(this.sensorList))
+            // list.forEach((item)=>{
+            //   data.forEach((minItem)=>{
+            //     if(item.deviceNo == minItem.deviceNo){
+            //       item.deviceValue = minItem.deviceValue;
+            //       item.online = minItem.online;
+            //     }
+            //   })
+            // })
+            // if(data[0].lastOnlineTime){
+            //   this.$set(this,'lastOnlineTime',data[0].lastOnlineTime);
+            // }else{
+            //   this.$set(this,'lastOnlineTime','');
+            // }
+            // this.$set(this,'sensorList',list);
+          }
+        });
+      },
+      //取消订阅关闭MQTT连接
+      offMQTT(type){
+        let self = this;
+        if(self.client.unsubscribe){
+          self.client.unsubscribe(self.mtOpic+self.$parent.subId, error => {
+            if (error) {
+              // console.log('mqtt关闭连接错误:', error)
+            }
+          })
+          self.client.end();
+          this.$set(this,'client',{});
+        }
+        //判断传入参数如果存在 发起一次新的连接
+        if(type){
+          this.sensorMQTT();
+        }
+      },
+    },
+    beforeDestroy() {
+      //清除定时器
+      let self = this;
+      self.offMQTT();
     },
   }
 </script>
@@ -100,72 +161,82 @@
 <style scoped lang="scss">
   .indexRightPage-hardwarePage{
     flex:1;
+    display: flex;
+    flex-direction: column;
+    overflow: hidden;
     .null-img{
       display: block;
       margin:80px 0 0 150px;
       width:150px;
     }
     .for-hardware-max-big-box{
-      display: inline-block;
-      overflow: hidden;
-      width: 180px;
-      height: 70px;
-      padding:10px 14px;
-      margin: 0 0 11px 16px;
-      border-radius: 10px;
+      flex:1;
       .for-hardware-big-box{
-        .for-hardware-text-box{
-          display: flex;
-          flex:1;
-          p{
-            overflow: hidden;
-            font-size: 14px;
-            line-height: 24px;
-          }
-          p:nth-child(1){
-            flex:1;
-            display:block;
-            overflow:hidden;
-            text-overflow:ellipsis;
-            white-space:nowrap;
-            margin-right:10px;
-          }
-          p:nth-child(2){
-          }
-        }
-        .for-hardware-switch-box{
-          flex:1;
-          display: flex;
-          margin-top: 7px;
-          overflow: hidden;
-          .for-hardware-switch-title{
+        display: inline-block;
+        overflow: hidden;
+        width: 180px;
+        height: 70px;
+        padding:10px 14px;
+        margin: 0 0 11px 16px;
+        border-radius: 10px;
+        .for-hardware-box{
+          .for-hardware-text-box{
+            display: flex;
             flex:1;
             p{
-              width: 70px;
-              height: 20px;
-              border-radius: 10px;
-              opacity: 1;
-              border: 1px solid #0183FA;
-              font-size: 12px;
-              font-weight: 400;
-              color: #0183FA;
-              line-height: 17px;
-              text-align: center;
+              overflow: hidden;
+              font-size: 14px;
+              line-height: 24px;
+            }
+            p:nth-child(1){
+              flex:1;
+              display:block;
+              overflow:hidden;
+              text-overflow:ellipsis;
+              white-space:nowrap;
+              margin-right:10px;
+            }
+            p:nth-child(2){
             }
           }
-          .for-hardware-switch{
-
+          .for-hardware-switch-box{
+            flex:1;
+            display: flex;
+            margin-top: 7px;
+            overflow: hidden;
+            .for-hardware-switch-title{
+              flex:1;
+              p{
+                width: 70px;
+                height: 20px;
+                border-radius: 10px;
+                opacity: 1;
+                border: 1px solid #0183FA;
+                font-size: 12px;
+                font-weight: 400;
+                color: #0183FA;
+                line-height: 17px;
+                text-align: center;
+              }
+            }
           }
         }
       }
+      .offLineColor{
+        color:#333;
+        background-color: #E0E0E0;
+      }
+      .onLineColor{
+        color:#333;
+        background-color: #E5F2FF;
+      }
     }
-    .offLineColor{
-      color:#333;
-      background-color: #E0E0E0;
-    }
-    .onLineColor{
-      color:#333;
-      background-color: #E5F2FF;
+    .bottom-time-p{
+      font-size:14px;
+      color:#999;
+      text-align: center;
+      height:40px;
+      line-height:40px;
     }
   }
 </style>

+ 2 - 2
src/views/integratedManagement/laboratoryManagement/subject/indexRightPage/indexRightPage.vue

@@ -4,8 +4,8 @@
       <div :class="rightButtonType == 1 ? 'buttonColorA' : 'buttonColorB'" @click="rightButtonClick(1)">传感器监测</div>
       <div :class="rightButtonType == 2 ? 'buttonColorA' : 'buttonColorB'" @click="rightButtonClick(2)">物联控制</div>
       <div :class="rightButtonType == 3 ? 'buttonColorA' : 'buttonColorB'" @click="rightButtonClick(3)">视频监控</div>
-      <div :class="rightButtonType == 4 ? 'buttonColorA' : 'buttonColorB'" @click="rightButtonClick(4)">声光报警</div>
-      <div :class="rightButtonType == 5 ? 'buttonColorA' : 'buttonColorB'" @click="rightButtonClick(5)">智能门禁</div>
+      <!--<div :class="rightButtonType == 4 ? 'buttonColorA' : 'buttonColorB'" @click="rightButtonClick(4)">声光报警</div>-->
+      <!--<div :class="rightButtonType == 5 ? 'buttonColorA' : 'buttonColorB'" @click="rightButtonClick(5)">智能门禁</div>-->
     </div>
     <div class="bottom-content-max-big-box">
       <div class="bottom-content-address-box">

+ 85 - 59
src/views/integratedManagement/laboratoryManagement/subject/indexRightPage/sensorPage.vue

@@ -2,22 +2,25 @@
 <template>
   <div class="indexRightPage-sensorPage scrollbar-box">
     <img class="null-img" src="@/assets/ZDimages/basicsModules/null-data-1.png" v-if="!sensorList[0]">
-    <div class="for-sensor-max-big-box" :class="item.online?'onLineColor':'offLineColor'"
-         v-for="(item,index) in sensorList" :key="index">
-      <div class="for-sensor-big-box">
-        <div class="for-sensor-img-box" >
-          <img :src="item.icon">
-        </div>
-        <div class="for-sensor-text-box">
-          <el-tooltip class="item" effect="dark" :content="item.deviceName" placement="bottom">
-            <p>{{item.deviceName}}</p>
-          </el-tooltip>
-          <el-tooltip class="item" effect="dark" :content="item.deviceValue?item.deviceValue+item.unit:'--'" placement="bottom">
-            <p>{{item.deviceValue?item.deviceValue+item.unit:'--'}}</p>
-          </el-tooltip>
+    <div class="for-sensor-max-big-box scrollbar-box">
+      <div class="for-sensor-big-box" :class="item.online?'onLineColor':'offLineColor'"
+           v-for="(item,index) in sensorList" :key="index">
+        <div class="for-sensor-box">
+          <div class="for-sensor-img-box" >
+            <img :src="item.icon">
+          </div>
+          <div class="for-sensor-text-box">
+            <el-tooltip class="item" effect="dark" :content="item.deviceName" placement="bottom">
+              <p>{{item.deviceName}}</p>
+            </el-tooltip>
+            <el-tooltip class="item" effect="dark" :content="item.deviceValue?item.deviceValue+item.unit:'--'" placement="bottom">
+              <p>{{item.deviceValue?item.deviceValue+item.unit:'--'}}</p>
+            </el-tooltip>
+          </div>
         </div>
       </div>
     </div>
+    <p class="bottom-time-p" v-if="lastOnlineTime">数据上报时间:{{parseTime(lastOnlineTime)}}</p>
   </div>
 </template>
 
@@ -34,6 +37,7 @@
         mtOpic:"iot/device/sensor/sub/",
         client:{},
         sensorList:[],
+        lastOnlineTime:'',
       }
     },
     created(){
@@ -57,27 +61,36 @@
       sensorMQTT(){
         let self = this;
         this.client = mqtt.connect(localStorage.getItem('mqttUrl'), {
-        // this.client = mqtt.connect('ws://192.168.1.43:1884', {
-        // this.client = mqtt.connect('ws://192.168.1.8:1884', {
           username: localStorage.getItem('mqttUser'),
           password:localStorage.getItem('mqttPassword')
         });
         this.client.on("connect", e =>{
-          console.log(e,"连接成功");
-          console.log("连接成功");
           this.client.subscribe(this.mtOpic+self.$parent.subId, (err) => {
             if (!err) {
-              console.log("订阅成功:" + this.mtOpic+self.$parent.subId);
+              // console.log("订阅成功:" + this.mtOpic+self.$parent.subId);
             }else{
-              console.log("连接错误:" + err);
+              // console.log("连接错误:" + err);
             }
           });
         });
         this.client.on("message", (topic, message) => {
-          console.log('message',message)
           if (message){
             let data = JSON.parse(message)
-            console.log('data',data)
+            let list = JSON.parse(JSON.stringify(this.sensorList))
+            list.forEach((item)=>{
+              data.forEach((minItem)=>{
+                if(item.deviceNo == minItem.deviceNo){
+                  item.deviceValue = minItem.deviceValue;
+                  item.online = minItem.online;
+                }
+              })
+            })
+            if(data[0].lastOnlineTime){
+              this.$set(this,'lastOnlineTime',data[0].lastOnlineTime);
+            }else{
+              this.$set(this,'lastOnlineTime','');
+            }
+            this.$set(this,'sensorList',list);
           }
         });
       },
@@ -87,7 +100,7 @@
         if(self.client.unsubscribe){
           self.client.unsubscribe(self.mtOpic+self.$parent.subId, error => {
             if (error) {
-              console.log('mqtt关闭连接错误:', error)
+              // console.log('mqtt关闭连接错误:', error)
             }
           })
           self.client.end();
@@ -110,56 +123,69 @@
 <style scoped lang="scss">
   .indexRightPage-sensorPage{
     flex:1;
+    display: flex;
+    flex-direction: column;
+    overflow: hidden;
     .null-img{
       display: block;
       margin:80px 0 0 150px;
       width:150px;
     }
     .for-sensor-max-big-box{
-      display: inline-block;
-      overflow: hidden;
-      width: 180px;
-      height: 60px;
-      margin: 0 0 11px 16px;
-      border-radius: 10px;
+      flex:1;
       .for-sensor-big-box{
-        display: flex;
-        .for-sensor-img-box{
-          img{
-            width: 26px;
-            height: 26px;
-            margin: 17px 11px;
+        display: inline-block;
+        overflow: hidden;
+        width: 180px;
+        height: 60px;
+        margin: 0 0 11px 16px;
+        border-radius: 10px;
+        .for-sensor-box{
+          display: flex;
+          .for-sensor-img-box{
+            img{
+              width: 26px;
+              height: 26px;
+              margin: 17px 11px;
+            }
           }
-        }
-        .for-sensor-text-box{
-          flex:1;
-          overflow: hidden;
-          margin:9px 0;
-          p{
+          .for-sensor-text-box{
+            flex:1;
             overflow: hidden;
-            display:block;
-            text-overflow:ellipsis;
-            white-space:nowrap;
-            margin-right:10px;
-          }
-          p:nth-child(1){
-            font-size: 14px;
-            line-height: 20px;
-          }
-          p:nth-child(2){
-            font-size: 16px;
-            line-height: 22px;
+            margin:9px 0;
+            p{
+              overflow: hidden;
+              display:block;
+              text-overflow:ellipsis;
+              white-space:nowrap;
+              margin-right:10px;
+            }
+            p:nth-child(1){
+              font-size: 14px;
+              line-height: 20px;
+            }
+            p:nth-child(2){
+              font-size: 16px;
+              line-height: 22px;
+            }
           }
         }
       }
+      .offLineColor{
+        color:#fff;
+        background-color: #E0E0E0;
+      }
+      .onLineColor{
+        color:#fff;
+        background-color: #80D164;
+      }
     }
-    .offLineColor{
-      color:#fff;
-      background-color: #E0E0E0;
-    }
-    .onLineColor{
-      color:#fff;
-      background-color: #80D164;
+    .bottom-time-p{
+      font-size:14px;
+      color:#999;
+      text-align: center;
+      height:40px;
+      line-height:40px;
     }
   }
 </style>

+ 16 - 3
src/views/integratedManagement/laboratoryManagement/subject/indexRightPage/videoPage.vue

@@ -1,8 +1,10 @@
 <!--视频模块-->
 <template>
   <div class="indexRightPage-videoPage scrollbar-box">
-    <mpegts-video style="display: inline-block" :videoProps="item" v-for="(item,index) in videoList" :key="index"></mpegts-video>
-
+    <img class="null-img" src="@/assets/ZDimages/basicsModules/null-data-1.png" v-if="!videoList[0]">
+    <div class="video-max-big-box scrollbar-box">
+      <mpegts-video style="display: inline-block" :videoProps="item" v-for="(item,index) in videoList" :key="index"></mpegts-video>
+    </div>
   </div>
 </template>
 
@@ -44,6 +46,17 @@
 <style scoped lang="scss">
   .indexRightPage-videoPage{
     flex:1;
-    padding:0 0 10px 15px;
+    display: flex;
+    flex-direction: column;
+    overflow: hidden;
+    .null-img{
+      display: block;
+      margin:80px 0 0 150px;
+      width:150px;
+    }
+    .video-max-big-box{
+      flex:1;
+      padding:0 0 10px 15px;
+    }
   }
 </style>

+ 1 - 1
src/views/iotDevice/appManage/applyUpgrades/index.vue

@@ -9,7 +9,7 @@
             <el-input
               maxLength="30"
               v-model="queryParams.searchValue"
-              placeholder="请输入设备"
+              placeholder="请输入设备名称"
               clearable
               style="width: 200px"
             />

+ 1 - 1
src/views/iotDevice/hardwareManagement/hardwareClassification/index.vue

@@ -9,7 +9,7 @@
             <el-input
               maxLength="30"
               v-model="queryParams.searchValue"
-              placeholder="请输入名称标识"
+              placeholder="请输入名称/标识"
               style="width: 200px"
             />
           </el-form-item>

+ 1 - 1
src/views/iotDevice/hardwareManagement/hardwareEquipment/index.vue

@@ -9,7 +9,7 @@
             <el-input
               maxLength="30"
               v-model="queryParams.searchValue"
-              placeholder="请输入名称编号"
+              placeholder="请输入名称/编号"
               style="width: 200px"
             />
           </el-form-item>

+ 1 - 1
src/views/iotDevice/intelligenceIot/classConfig/addPage.vue

@@ -7,7 +7,7 @@
           <el-input
             maxLength="30"
             v-model="queryParams.searchValue"
-            placeholder="请输入关键词"
+            placeholder="请输入名称"
             clearable
             style="width: 200px"
           />

+ 4 - 4
src/views/iotDevice/intelligenceIot/classConfig/index.vue

@@ -9,7 +9,7 @@
             <el-input
               maxLength="30"
               v-model="queryParams.searchValue"
-              placeholder="请输入关键词关键词"
+              placeholder="请输入标题/字段/类型"
               clearable
               style="width: 200px"
             />
@@ -96,10 +96,10 @@
                :close-on-click-modal="false" :close-on-press-escape="false">
       <el-form :model="dialogForm" ref="dialogForm" :inline="true" :rules="dialogRules" class="addCheckPage-min" label-width="80px">
         <el-form-item label="标题" prop="label">
-          <el-input v-model="dialogForm.label" placeholder="请输入名称" maxLength="8" style="width:320px;"/>
+          <el-input v-model="dialogForm.label" placeholder="请输入标题" maxLength="8" style="width:320px;"/>
         </el-form-item>
         <el-form-item label="字段" prop="field">
-          <el-input v-model="dialogForm.field" placeholder="请输入标识" maxLength="20" style="width:320px;"/>
+          <el-input v-model="dialogForm.field" placeholder="请输入字段" maxLength="20" style="width:320px;"/>
         </el-form-item>
         <el-form-item label="类型" prop="type">
           <el-select v-model="dialogForm.type" placeholder="请选择类型" clearable style="width:320px;">
@@ -127,7 +127,7 @@
         <el-form-item label="是否必须" prop="required">
           <el-radio-group v-model="dialogForm.required" style="width:320px;">
             <el-radio :label="true">必须</el-radio>
-            <el-radio :label="false">非必</el-radio>
+            <el-radio :label="false">非必</el-radio>
           </el-radio-group>
         </el-form-item>
         <el-form-item label="状态" prop="state">

+ 13 - 10
src/views/iotDevice/intelligenceIot/iotClassification/attributePage.vue

@@ -4,17 +4,17 @@
     <div class="table-title-box">
       <el-form :model="queryParams" class="form-box" ref="queryForm"
                :inline="true" style="width:100%;">
-        <el-form-item label="关键词" prop="searchValue " label-width="90px">
+        <el-form-item label="" prop="searchValue " label-width="90px">
           <el-input
             maxLength="30"
             v-model="queryParams.searchValue"
-            placeholder="请输入关键词"
+            placeholder="请输入名称/标识"
             clearable
             style="width: 200px"
           />
         </el-form-item>
-        <el-form-item label="状态" prop="state ">
-          <el-select v-model="queryParams.state " clearable placeholder="请选择" style="width: 200px">
+        <el-form-item label="" prop="state ">
+          <el-select v-model="queryParams.state " clearable placeholder="请选择状态" style="width: 200px">
             <el-option
               v-for="dict in options"
               :key="dict.value"
@@ -23,10 +23,8 @@
             />
           </el-select>
         </el-form-item>
-        <el-form-item>
-          <p class="page-inquire-common-style-button" @click="handleQuery" style="margin-right:10px;">查询</p>
-          <p class="page-reset-common-style-button" @click="resetQuery">重置</p>
-        </el-form-item>
+        <p class="page-inquire-common-style-button" @click="handleQuery" style="margin-right:10px;">查询</p>
+        <p class="page-reset-common-style-button" @click="resetQuery">重置</p>
         <el-form-item label="" prop="title" style="float: right">
           <el-col :span="1.5" style="margin-right:10px;">
             <p class="page-submit-common-style-button"
@@ -53,7 +51,11 @@
         <el-table-column label="属性" align="left" prop="attrName" show-overflow-tooltip/>
         <el-table-column label="单位" align="left" prop="unit" width="100" show-overflow-tooltip/>
         <el-table-column label="排序" align="left" prop="sort" width="80" show-overflow-tooltip/>
-        <el-table-column label="波动范围" align="left" prop="fluctuationRange" width="100" show-overflow-tooltip/>
+        <el-table-column label="波动范围" align="left" prop="fluctuationRange" width="100" show-overflow-tooltip>
+          <template slot-scope="scope">
+            <span>{{scope.row.isFluctuation?scope.row.fluctuationRange:''}}</span>
+          </template>
+        </el-table-column>
         <el-table-column label="备注" align="left" prop="remark" width="150" show-overflow-tooltip/>
         <el-table-column label="状态" align="left" prop="state" width="100" show-overflow-tooltip>
           <template slot-scope="scope">
@@ -197,7 +199,7 @@
               </div>
               <el-form-item label="网络组件:" prop="networkId">
                 <el-select v-model="dialogForm.networkId"
-                           placeholder="请选网络组件"
+                           placeholder="请选网络组件"
                            clearable style="width:320px;">
                   <el-option
                     v-for="dict in networkOptions"
@@ -651,6 +653,7 @@
     overflow: hidden;
     .table-title-box{
       margin-top:20px;
+      margin-left:20px;
     }
     .table-content-box{
       flex:1;

+ 3 - 3
src/views/iotDevice/intelligenceIot/iotClassification/index.vue

@@ -9,7 +9,7 @@
             <el-input
               maxLength="30"
               v-model="queryParams.searchValue "
-              placeholder="请输入关键词"
+              placeholder="请输入名称/标识"
               clearable
               style="width: 200px"
             />
@@ -160,8 +160,8 @@
             { required: true, message: "请输入名称", validator: this.spaceJudgment, trigger: "blur" }
           ],
           typeKey: [
-            { required: true, message: "请输入标识", trigger: "blur" },
-            { required: true, message: "请输入标识", validator: this.spaceJudgment, trigger: "blur" }
+            { required: true, message: "请选择类型", trigger: "blur" },
+            { required: true, message: "请选择类型", validator: this.spaceJudgment, trigger: "blur" }
           ],
           state: [
             { required: true, message: "请选择状态", trigger: "blur" },

+ 6 - 5
src/views/iotDevice/intelligenceIot/iotHardware/addPage.vue

@@ -14,10 +14,10 @@
               <el-input v-model="newData.deviceName" placeholder="请输入名称" maxLength="20" style="width:500px;"></el-input>
             </el-form-item>
             <el-form-item label="编号:" prop="deviceNo">
-              <el-input v-model="newData.deviceNo" :disabled="!!propsData.id" placeholder="请输入名称" maxLength="20" style="width:500px;"></el-input>
+              <el-input v-model="newData.deviceNo" :disabled="!!propsData.id" placeholder="请输入编号" maxLength="20" style="width:500px;"></el-input>
             </el-form-item>
             <el-form-item label="设备类型:" prop="typeId">
-              <el-select v-model="newData.typeId " @change="selectChange" placeholder="请选择类型" style="width: 500px">
+              <el-select v-model="newData.typeId " @change="selectChange" placeholder="请选择设备类型" style="width: 500px">
                 <el-option
                   v-for="dict in options"
                   :key="dict.typeId"
@@ -26,7 +26,7 @@
               </el-select>
             </el-form-item>
             <el-form-item label="设备属性:" prop="attributeId">
-              <el-select v-model="newData.attributeId " @change="selectChangeStats" placeholder="请选择类型" style="width: 500px">
+              <el-select v-model="newData.attributeId " @change="selectChangeStats" placeholder="请选择设备属性" style="width: 500px">
                 <el-option
                   v-for="dict in optionsStats"
                   :key="dict.id"
@@ -37,7 +37,7 @@
             <el-form-item label="状态:" prop="state">
               <el-radio-group v-model="newData.state">
                 <el-radio :label="true">启用</el-radio>
-                <el-radio :label="false">用</el-radio>
+                <el-radio :label="false">用</el-radio>
               </el-radio-group>
             </el-form-item>
             <el-form-item label="楼栋楼层:" prop="address">
@@ -45,11 +45,12 @@
                 style="width:500px;"
                 v-model="newData.address"
                 @change="cascaderChange"
+                placeholder="请选择楼栋楼层"
                 :props="{value: 'id', label: 'name',children:'buildFloorVoList'}"
                 :options="treeOptions" :show-all-levels="false"></el-cascader>
             </el-form-item>
             <el-form-item label="实验室:" prop="subId">
-              <el-select v-model="newData.subId" placeholder="请选择类型" style="width: 500px">
+              <el-select v-model="newData.subId" placeholder="请选择实验室" style="width: 500px">
                 <el-option v-for="item in subOptions" :key="item.subId" :label="item.subName" :value="item.subId"/>
               </el-select>
             </el-form-item>

+ 1 - 1
src/views/iotDevice/monitoringWarning/warningLog/index.vue

@@ -9,7 +9,7 @@
             <el-input
               maxLength="30"
               v-model="queryParams.searchValue"
-              placeholder="请输入关键词"
+              placeholder="请输入标题/内容"
               clearable
               style="width: 200px"
             />

+ 1 - 1
src/views/iotDevice/monitoringWarning/warningMode/index.vue

@@ -9,7 +9,7 @@
             <el-input
               maxLength="30"
               v-model="queryParams.name"
-              placeholder="请输入关键词"
+              placeholder="请输入名称"
               clearable
               style="width: 200px"
             />

+ 1 - 1
src/views/iotDevice/operationManagement/monitorLog/index.vue

@@ -9,7 +9,7 @@
             <el-input
               maxLength="30"
               v-model="queryParams.searchValue"
-              placeholder="请输入"
+              placeholder="请输入设备名称"
               style="width: 200px"
             />
           </el-form-item>

+ 2 - 2
src/views/iotDevice/operationManagement/networkComponent/index.vue

@@ -9,7 +9,7 @@
             <el-input
               maxLength="30"
               v-model="queryParams.searchValue"
-              placeholder="请输入关键词"
+              placeholder="请输入名称"
               clearable
               style="width: 200px"
             />
@@ -108,7 +108,7 @@
           </el-form-item>
           <el-form-item label="类型:" prop="moduleType">
             <el-select v-model="dialogForm.moduleType"
-                       placeholder="请选类型"
+                       placeholder="请选类型"
                        :disabled="dialogLookType"
                        clearable style="width:360px;">
               <el-option

+ 26 - 21
src/views/iotDevice/operationManagement/protocolManagement/index.vue

@@ -9,7 +9,7 @@
             <el-input
               maxLength="30"
               v-model="queryParams.searchValue "
-              placeholder="请输入关键词"
+              placeholder="请输入名称"
               clearable
               style="width: 200px"
             />
@@ -94,6 +94,7 @@
             <div v-if="dialogForm.type == 1">
               <el-upload
                 class="certificate-avatar-uploader"
+                style="height:40px;"
                 :action="uploadImgUrl"
                 :show-file-list="false"
                 :on-success="handleAvatarSuccess"
@@ -194,26 +195,30 @@
       },
       //弹层确定
       dialogSubmit(){
-        // let obj = JSON.parse(JSON.stringify(this.dialogForm))
-        let obj = {
-          name:this.dialogForm.name,
-          type:this.dialogForm.type,
-          addr:this.dialogForm.addr,
-          remark:this.dialogForm.remark,
-        }
-        if(this.dialogForm.id){
-          obj.id = this.dialogForm.id;
-          iotProtocolUpdate(obj).then(response => {
-            this.msgSuccess(response.message);
-            this.getList();
-          });
-        }else{
-          iotProtocolAdd(obj).then(response => {
-            this.msgSuccess(response.message);
-            this.getList();
-          });
-        }
-        this.$set(this,'dialogType',false);
+        this.$refs["dialogForm"].validate(valid => {
+          if (valid) {
+            // let obj = JSON.parse(JSON.stringify(this.dialogForm))
+            let obj = {
+              name:this.dialogForm.name,
+              type:this.dialogForm.type,
+              addr:this.dialogForm.addr,
+              remark:this.dialogForm.remark,
+            }
+            if(this.dialogForm.id){
+              obj.id = this.dialogForm.id;
+              iotProtocolUpdate(obj).then(response => {
+                this.msgSuccess(response.message);
+                this.getList();
+              });
+            }else{
+              iotProtocolAdd(obj).then(response => {
+                this.msgSuccess(response.message);
+                this.getList();
+              });
+            }
+            this.$set(this,'dialogType',false);
+          }
+        })
       },
       handleQuery(){
         this.$set(this.queryParams,'page',1);

+ 1 - 0
src/views/systemManagement/smallProgramConfig/smallProgramPageConfig/homeMenuConfig.vue

@@ -447,6 +447,7 @@
           height:48px;
         }
         .center-max-box{
+          overflow-x: hidden;
           flex:1;
           .add-button-box{
             cursor: pointer;

+ 1 - 0
src/views/systemManagement/smallProgramConfig/smallProgramPageConfig/mineMenuConfig.vue

@@ -445,6 +445,7 @@
           height:47px;
         }
         .center-max-box{
+          overflow-x: hidden;
           flex:1;
           .add-button-box{
             cursor: pointer;