LAPTOP-U5GOA5HA\zz před 1 rokem
rodič
revize
ea630bad92

+ 287 - 0
app/src/views/Iot/components/AlarmHandling.vue

@@ -0,0 +1,287 @@
+<template>
+    <div class="maintenance-supervision" >
+      <div class="maintenance-supervision_header" >
+        <div style="display: flex; ">
+          <el-select v-model="value" placeholder="告警年限">
+            <el-option
+              v-for="item in options"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            >
+            </el-option>
+          </el-select>
+          <el-select v-model="value" placeholder="告警类型">
+            <el-option
+              v-for="item in options"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            >
+            </el-option>
+          </el-select>
+          <el-select v-model="value" placeholder="处置状态">
+            <el-option
+              v-for="item in options"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            >
+            </el-option>
+          </el-select>
+        </div>
+  
+        <el-button>搜索</el-button>
+      </div>
+      <div >
+        <div class="row header">
+          <span class="num">序号</span>
+          <span class="time">区域</span>
+          <span class="person">未处理</span>
+          <span class="result">已处理</span>
+        </div>
+        <VueSeamlessScroll :data="list1" :class-option="classOption" class="warp">
+          <ul class="item">
+            <li class="row" v-for="(item, index) in list1" :key="index">
+              <span class="num">{{ index + 1 }}</span>
+              <span class="time">{{ item[0] }}</span>
+              <span class="person">{{ item[1] }}</span>
+              <LinearText
+              class="result"
+                style="display: inline-block"
+                text="676"
+                fontSize="16px"
+                
+              ></LinearText
+              >
+            </li>
+          </ul>
+        </VueSeamlessScroll>
+      </div>
+    </div>
+  </template>
+  <script>
+  import VueSeamlessScroll from "vue-seamless-scroll";
+  
+  export default {
+    name: "MaintenanceSupervision",
+    data() {
+      return {
+        search: "",
+        options: [
+          {
+            value: '1',
+            label: '1111'
+          },
+          {
+            value: '2',
+            label: '2222'
+          },
+          {
+            value: '3',
+            label: '3333'
+          }
+        ],
+        list1: [
+          ["万州区", "1200", "8765"],
+          ["万州区", "1200", "8765"],
+          ["万州区", "1200", "8765"],
+          ["万州区", "1200", "8765"],
+          ["万州区", "1200", "8765"],
+          ["万州区", "1200", "8765"],
+          ["万州区", "1200", "8765"],
+          ["万州区", "1200", "8765"],
+          ["万州区", "1200", "8765"],
+          ["万州区", "1200", "8765"],
+        ],
+        value: "",
+  
+        checked: 0,
+      };
+    },
+    components: {
+      VueSeamlessScroll,
+    },
+    computed: {
+      classOption() {
+        return {
+          singleHeight: 43,
+        };
+      },
+    },
+    methods: {
+      change(idx) {
+        this.checked = idx;
+        console.log("切换索引", idx);
+      },
+      resultType(text) {
+        return {
+          合格: "#23f59d",
+          不合格: "#df575b",
+          是: "#23f59d",
+          否: "#df575b",
+        }[text];
+      },
+    },
+  };
+  </script>
+  
+  <style scoped lang="less">
+  .maintenance-supervision {
+    // padding: 10px 10px 0px 20px;
+    ::v-deep(.el-input__inner) {
+      border: none;
+      background: linear-gradient(360deg, rgba(0,148,255, .5) 0%, rgba(0,148,255, .31) 100%);
+      color: #fff;
+    }
+    ::v-deep(.el-button) {
+      border: none;
+      background: linear-gradient(360deg, #0094ff90 0%, #0094ff10 100%);
+      color: #fff;
+    }
+    .maintenance-supervision_header {
+      display: flex;
+      justify-content: space-around;
+      border-bottom: 1px solid #154956;
+      padding-bottom: 2px;
+      margin: 10px 6px 6px;
+      font-size: 12px;
+      color: rgb(79, 149, 186);
+    }
+    .warp {
+      height: 520px;
+      margin: 0 auto;
+      overflow: hidden;
+      .item {
+        list-style: none;
+        padding: 0;
+        margin: 0 auto;
+        cursor: pointer;
+      }
+    }
+  
+    .header {
+      color: #fff;
+      height: 33px !important;
+      line-height: 33px !important;
+      background-color: rgba(0, 163, 255, 0.3) !important;
+      color: #61dbff;
+      margin-top: 15px;
+      margin-bottom: 6px;
+    }
+  
+    .row,
+    li,
+    a {
+      display: block;
+      height: 39px;
+      line-height: 39px;
+      margin-bottom: 4px;
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+      font-size: 16px;
+      background-color: rgba(0, 0, 0, 0.2);
+      .time,
+      .num,
+      .person,
+      .result {
+        flex: 0.33;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+      }
+      .num {
+        flex: 0.15;
+      }
+    }
+  }
+  
+  
+  /deep/.el-input__inner {
+    background-color: #184254;
+    width: 100px;
+    height: 30px;
+    margin-bottom: 5px;
+    margin-right: 5px;
+  }
+
+  /deep/.el-button {
+    width: 120px;
+    height: 32px;
+    font-size: 14px;
+    line-height: 2px;
+    background: #184254;
+    margin: 0 20px 0 30px;
+    color: #fff;
+    border-radius: 5px;
+    border: none;
+  }
+  // /deep/.el-select-dropdown{
+  
+  //     background-color:#184254 !important;
+  //     position: fixed;
+  
+  //   }
+
+  // /deep/.el-select-dropdown{
+  //      border: none;
+  //      background-color: #184254 ;
+  //  }
+  //输入框
+  //  /deep/.el-input__inner{
+  //      color:#eee;
+  //      border-color: #00fff6;
+  //      background-color: rgba(1, 28, 82, 0.8);
+  //  }
+  //  //聚焦时的样式
+  //  /deep/.el-select .el-input.is-focus .el-input__inner{
+  //      border-color: #0B61AA;
+  //      background-color: rgba(1, 28, 82, 0.8);
+  //      color:#00D3E9;
+  //  }
+  //  //下拉框选中
+  //  /deep/.el-select-dropdown__item{
+  //      color: #eee;
+  //  }
+  //  //鼠标经过下拉框
+  //  /deep/.el-select-dropdown__item.hover,
+  //  /deep/.el-select-dropdown__item:hover{
+  //      color:#00D3E9;
+  //      background-color: #0F3360;
+  //  }
+  </style>
+  
+  
+  <style>
+  
+  .el-select-dropdown.el-popper {
+    background-color: #4167a0;
+  }
+  .el-popper[x-placement^=bottom] .popper__arrow::after  {
+    border-bottom-color: #4167a0 !important;
+  }
+  .el-select-dropdown.el-popper {
+    border: 1px solid rgba(0, 213, 255, 0.6) !important;
+  }
+  .el-select-dropdown.el-popper li.el-select-dropdown__item span {
+    color: #fff;
+  }
+  .el-select-dropdown.el-popper
+    li.el-select-dropdown__item.selected
+    span {
+    color: #2f7df2;
+  }
+  .el-select-dropdown.el-popper .el-select-dropdown__item.hover {
+    background-color: #2f7df2;
+  }
+  .el-select-dropdown.el-popper
+    li.el-select-dropdown__item.hover.selected
+    span {
+    color: #fff !important;
+  }
+ .select_btn {
+margin-left: -10px;
+  }
+  </style>
+  

+ 25 - 0
app/src/views/Iot/components/IotVideo.vue

@@ -0,0 +1,25 @@
+<template>
+  <div class="v-ideo">
+    <div class="v-one">视频1</div>
+    <div class="v-one">视频2</div>
+  </div>
+</template>
+
+<script></script>
+
+<style lang="less" scoped>
+.v-ideo {
+  display: flex;
+  flex-direction: column;
+  padding: 10px 15px;
+
+  .v-one {
+    width: 100%;
+    height: 185px;
+    border: 1px solid #ccc;
+  }
+  .v-one:first-child{
+    margin-bottom: 10px;
+  }
+}
+</style>

+ 11 - 8
app/src/views/Iot/components/TotalityInfo.vue

@@ -57,12 +57,12 @@
             <div class="on-line">
              <div>
                 <span class="online lines"></span>
-              <span  style="font-size: 18px;">{{ item.line }}</span
+              <span  style="font-size: 20px;">{{ item.line }}</span
               >(个/栋)
              </div>
               <div>
                 <span class="offline lines"></span>
-              <span style="font-size: 18px;">{{ item.offNum }}</span
+              <span style="font-size: 20px;">{{ item.offNum }}</span
               >(个/栋)
               </div>
             </div>
@@ -70,7 +70,7 @@
         </div>
       </div>
       <div class="last-line">
-        <div style="width: 90%;">
+        <div style="width: 90%; padding: 0px 15px;">
             <div class="inline-bor">
               <span style="font-size: 14px">消防控制室人员离岗</span>
                 <div>
@@ -88,15 +88,15 @@
               >个/栋
                 </div>
             </div>
-            <div class="on-line">
-             <div>
+            <div class="on-line-two">
+             <div style="margin-right: 48px;">
                 <span class="online lines"></span>
-              <span  style="font-size: 18px;">2613</span
+              <span  style="font-size: 20px;">2613</span
               >(个/栋)
              </div>
               <div>
                 <span class="offline lines"></span>
-              <span style="font-size: 18px;">613</span
+              <span style="font-size: 20px;">613</span
               >(个/栋)
               </div>
             </div>
@@ -289,8 +289,11 @@ export default {
     .inline-bor{
         display: flex;
         justify-content: space-between;
-       
+        border-bottom: 1px dotted #7789CD;
         font-size: 16px;
     }
+   .on-line-two{
+    display: flex;
+   }
 }
 </style>

+ 7 - 5
app/src/views/Iot/index.vue

@@ -12,7 +12,7 @@
         </border-panel>
         <border-panel height="450px"  :header-type="4" 
           width="544px"   style="margin-bottom: 6px" title="视频监控">
-      
+            <IotVideo/>
         </border-panel>
       </div>
   
@@ -20,24 +20,26 @@
         <border-panel
           height="521px"
           style="margin-bottom: 6px"
-          title="建筑管理单位分布"
+          title="区域分布"
         >
      
         </border-panel>
         <border-panel
           height="421px"
           style="margin-bottom: 6px"
-          title="建筑管理单位信息"
+          title="告警处置"
         >
-
+        <AlarmHandling/>
         </border-panel>
       </div>
     </div>
   </template>
   <script>
 import TotalityInfo from './components/TotalityInfo.vue';
+import IotVideo from './components/IotVideo.vue'
+import AlarmHandling from './components/AlarmHandling.vue'
   export default {
-    components: {  TotalityInfo},
+    components: {  TotalityInfo,IotVideo,AlarmHandling},
   };
   </script>