From 38f098f7d4ca5831a513a8d50e2efee08d452e03 Mon Sep 17 00:00:00 2001
From: ZZJ <zzjdsg2300@163.com>
Date: 星期五, 22 十月 2021 18:55:59 +0800
Subject: [PATCH] 暂存

---
 src/pages/internetEquipment/module/historyModule.vue       |   38 +
 public/images/InternetData/视频_点击.png                       |    0 
 public/images/InternetData/语音_点击.png                       |    0 
 src/pages/internetEquipment/views/helemetEquipment.vue     |  146 ++++++
 public/images/InternetData/安全帽-线-1 1.png                   |    0 
 src/pages/internetEquipment/components/tabSingle.vue       |   59 ++
 public/images/InternetData/语音.png                          |    0 
 public/apps.json                                           |   23 +
 src/pages/internetEquipment/index/index.vue                |   81 +++
 public/images/InternetData/Mask Group-2.png                |    0 
 public/images/InternetData/Mask Group.png                  |    0 
 src/pages/internetEquipment/index/main.ts                  |   12 
 src/pages/internetData/components/telephoneBox.vue         |  124 +++++
 public/images/InternetData/安全帽-线 1.png                     |    0 
 public/images/InternetData/Mask Group-1.png                |    0 
 src/pages/internetEquipment/components/warnDescription.vue |   37 +
 src/pages/internetEquipment/module/realTimeModule.vue      |   62 ++
 src/pages/internetEquipment/components/headCard.vue        |   74 +++
 src/pages/internetData/views/helemtTable.vue               |  415 +++++++++++++++++
 public/images/InternetData/Group 488.png                   |    0 
 src/pages/internetEquipment/module/mapIndex.vue            |   21 
 src/pages/internetEquipment/components/helemetEchart.vue   |  122 +++++
 src/pages/internetEquipment/components/helemetHead.vue     |   54 ++
 src/pages/internetEquipment/components/realTimeItem.vue    |   29 +
 public/images/InternetData/视频.png                          |    0 
 src/pages/internetEquipment/module/elecModule.vue          |   40 +
 26 files changed, 1,323 insertions(+), 14 deletions(-)

diff --git a/public/apps.json b/public/apps.json
index 4c34d51..cc63f42 100644
--- a/public/apps.json
+++ b/public/apps.json
@@ -645,6 +645,29 @@
       "installed": true,
       "isUpgrade": false,
       "progressMsg": ""
+    },
+    {
+      "id": "fa5674ee-70cf-4e22-8a06-c17426fb737",
+      "name": "浜掕仈缃戣澶囩鐞�",
+      "package": "internetEquipment",
+      "type": "2",
+      "url": "/view/internetEquipment/",
+      "title": "浜掕仈缃戣澶囩鐞�",
+      "width": 1440,
+      "height": 900,
+      "iconBlob": "",
+      "icon": "../../images/app-mid/visual.png",
+      "version": "1.0.0",
+      "create_time": "2020-10-09 14:00:08",
+      "create_by": "",
+      "update_time": "",
+      "update_by": "",
+      "isDelete": 0,
+      "isDefault": false,
+      "remoteVersion": "",
+      "installed": true,
+      "isUpgrade": false,
+      "progressMsg": ""
     }
   ],
   "msg": "璇锋眰澶勭悊鎴愬姛",
diff --git a/public/images/InternetData/Group 488.png b/public/images/InternetData/Group 488.png
new file mode 100644
index 0000000..284a871
--- /dev/null
+++ b/public/images/InternetData/Group 488.png
Binary files differ
diff --git a/public/images/InternetData/Mask Group-1.png b/public/images/InternetData/Mask Group-1.png
new file mode 100644
index 0000000..d0c72a2
--- /dev/null
+++ b/public/images/InternetData/Mask Group-1.png
Binary files differ
diff --git a/public/images/InternetData/Mask Group-2.png b/public/images/InternetData/Mask Group-2.png
new file mode 100644
index 0000000..c3c584c
--- /dev/null
+++ b/public/images/InternetData/Mask Group-2.png
Binary files differ
diff --git a/public/images/InternetData/Mask Group.png b/public/images/InternetData/Mask Group.png
new file mode 100644
index 0000000..3c6ffcb
--- /dev/null
+++ b/public/images/InternetData/Mask Group.png
Binary files differ
diff --git "a/public/images/InternetData/\345\256\211\345\205\250\345\270\275-\347\272\277 1.png" "b/public/images/InternetData/\345\256\211\345\205\250\345\270\275-\347\272\277 1.png"
new file mode 100644
index 0000000..6ca58e5
--- /dev/null
+++ "b/public/images/InternetData/\345\256\211\345\205\250\345\270\275-\347\272\277 1.png"
Binary files differ
diff --git "a/public/images/InternetData/\345\256\211\345\205\250\345\270\275-\347\272\277-1 1.png" "b/public/images/InternetData/\345\256\211\345\205\250\345\270\275-\347\272\277-1 1.png"
new file mode 100644
index 0000000..55897a1
--- /dev/null
+++ "b/public/images/InternetData/\345\256\211\345\205\250\345\270\275-\347\272\277-1 1.png"
Binary files differ
diff --git "a/public/images/InternetData/\350\247\206\351\242\221.png" "b/public/images/InternetData/\350\247\206\351\242\221.png"
new file mode 100644
index 0000000..f323e19
--- /dev/null
+++ "b/public/images/InternetData/\350\247\206\351\242\221.png"
Binary files differ
diff --git "a/public/images/InternetData/\350\247\206\351\242\221_\347\202\271\345\207\273.png" "b/public/images/InternetData/\350\247\206\351\242\221_\347\202\271\345\207\273.png"
new file mode 100644
index 0000000..f53b3ee
--- /dev/null
+++ "b/public/images/InternetData/\350\247\206\351\242\221_\347\202\271\345\207\273.png"
Binary files differ
diff --git "a/public/images/InternetData/\350\257\255\351\237\263.png" "b/public/images/InternetData/\350\257\255\351\237\263.png"
new file mode 100644
index 0000000..a275bac
--- /dev/null
+++ "b/public/images/InternetData/\350\257\255\351\237\263.png"
Binary files differ
diff --git "a/public/images/InternetData/\350\257\255\351\237\263_\347\202\271\345\207\273.png" "b/public/images/InternetData/\350\257\255\351\237\263_\347\202\271\345\207\273.png"
new file mode 100644
index 0000000..1c0de69
--- /dev/null
+++ "b/public/images/InternetData/\350\257\255\351\237\263_\347\202\271\345\207\273.png"
Binary files differ
diff --git a/src/pages/internetData/components/telephoneBox.vue b/src/pages/internetData/components/telephoneBox.vue
new file mode 100644
index 0000000..228229c
--- /dev/null
+++ b/src/pages/internetData/components/telephoneBox.vue
@@ -0,0 +1,124 @@
+<template>
+  <div class="telephone-box">
+      <div class="title">
+          <span class="icon iconfont">&#xe7cc;</span>
+          <span>鍘荤數</span>
+      </div>
+      <div class="info">
+          <div class="id">1139</div>
+          <div class="sip">sip:1139@47.112.193.0</div>
+      </div>
+
+      <div class="video">1</div>
+
+      <div class="control">
+          <span class="icon iconfont">&#xe740;</span>
+          <span class="icon iconfont mid">&#xe740;</span>
+          <span class="icon iconfont">&#xe740;</span>
+      </div>
+
+      <div class="close el-icon-close" @click="close"></div>
+  </div>
+</template>
+
+<script>
+export default {
+    props:{
+        tele:{
+            type:Object
+        }
+    },
+    data (){
+        return {
+    
+        }
+    },
+    
+    methods:{
+        close (){
+            this.$emit("close",this.tele)
+        }
+    }
+}
+</script>
+
+<style scoped lang="scss">
+.telephone-box {
+    box-sizing: border-box;
+    position: fixed;
+    z-index: 2;
+    padding: 32px 28px 28px 55px;
+
+    width: 420px;
+    height: 382px;
+    left: 50%;
+    top: 50%;
+    margin-top: -15%;
+    margin-left: -15%;
+
+    background: #FFFFFF;
+    border-radius: 8px;
+        color: #4F4F4F;
+
+    .title {
+        text-align: left;
+        font-size: 16px;
+        font-weight: 700;
+
+        .icon {
+            margin-right: 2px;
+            font-size: 18px;
+            font-weight: normal;
+        }
+    }
+
+    .info {
+        margin-top: 18px;
+        font-weight: bold;
+        font-size: 16px;
+
+        .sip {
+            margin-top: 2px;
+            font-size: 12px;
+            font-weight: normal;
+        }
+    }
+
+    .video {
+        margin: 0 auto;
+        margin-top: 20px;
+        box-sizing: border-box;
+        width: 104px;
+        height: 104px;
+        background: #454141;
+        border: 5px solid #FFAA44;
+        border-radius: 50%;
+
+        font-size: 36px;
+        color: #fff;
+        line-height: 94px;
+    }
+
+    .control {
+        margin-top: 50px;
+
+        .icon {
+            font-size: 37px;
+        }
+
+        .mid {
+            margin: 0 37px;
+        }
+    }
+
+    .close {
+        position: absolute;
+        top: 12px;
+        right: 12px;
+        font-size: 12px;
+        font-weight: 700;
+    }
+
+}
+
+</style>
\ No newline at end of file
diff --git a/src/pages/internetData/views/helemtTable.vue b/src/pages/internetData/views/helemtTable.vue
index 11cb89c..6cdce5a 100644
--- a/src/pages/internetData/views/helemtTable.vue
+++ b/src/pages/internetData/views/helemtTable.vue
@@ -2,76 +2,117 @@
 <div class="helemtTable">
 <el-table
     :data="tableData"
-    style="width: 100%">
+    style="width: 100%"
+    header-align="center"
+    :highlight-current-row="true"
+    >
     <el-table-column
+      header-align="center"
       label="搴忓彿"
+      align="center"
+      width="80"
       type="index">
     </el-table-column>
 
     <el-table-column
+      header-align="center"
       label="璁惧"
-      width="230">
+      width="260">
       <template slot-scope="scope">
         <div class="index-container">
-          <div class="index">{{scope.$index}}</div>
-          <div class="info">
             <div class="icon iconfont">&#xe8a0;</div>
             <div class="right">
-              <div class="code">{{scope.row.code}}</div>
-              <div class="elec">鐢甸噺 : <span class="elec-number">{{scope.row.elec}}</span></div>
+              <div class="code">璁惧缂栫爜 : {{scope.row.code}}</div>
+              <div class="elec">鐢甸噺 : 
+                <span  
+                :class="{ 'elec-high': scope.row.elec >= 40,
+                'elec-middle': scope.row.elec < 40 && scope.row.elec > 0,
+                'elec-low': scope.row.elec === 0}" 
+                >{{scope.row.elec}}</span></div>
             </div>
-          </div>
         </div>
       </template>
     </el-table-column>
 
     <el-table-column
+      header-align="center"
+       align="center"
         prop="ip"
         label="IP鍦板潃">
     </el-table-column>
 
     <el-table-column
+      header-align="center"
+       align="center"
         prop="mac"
         label="mac鍦板潃"
-        width="150">
+        width="140">
     </el-table-column>
 
     <el-table-column
+      header-align="center"
+       align="center"
         prop="longitude"
         label="缁忓害">
     </el-table-column>
 
     <el-table-column
+      header-align="center"
+       align="center"
         prop="latitude"
         label="绾害">
     </el-table-column>
 
     <el-table-column
+        header-align="center"
+         align="center"
         prop="latitude"
         label="鍦板潃">
     </el-table-column>
 
     <el-table-column
+        header-align="center"
+        align="center"
         prop="height"
         label="楂樺害">
     </el-table-column>
 
     <el-table-column
+        header-align="center"
+        align="center"
         prop="positon"
         label="瀹氫綅鐘舵��">
     </el-table-column>
 
     <el-table-column
+        align="center"
+        header-align="center"
         prop="time"
         label="璁块棶鏃堕棿">
     </el-table-column>
 
     <el-table-column
+      align="center"
+      header-align="center"
       label="鎿嶄綔">
-      <template slot-scope="scope">
+        <template slot-scope="scope">
         <div class="action-container">
-          <div class="icon iconfont"></div>
-          <div class="icon iconfont"></div>
+          <img src="/images/InternetData/瑙嗛.png" alt=""
+          v-if="!scope.row.isSend"
+          @click="sendVoice(scope.row)"
+          >
+          <img src="/images/InternetData/瑙嗛_鐐瑰嚮.png" alt=""
+          v-else
+          @click="sendVoice(scope.row)"
+          >
+          <img src="/images/InternetData/璇煶.png" alt=""
+          v-if="!scope.row.istele"
+          @click="telephone(scope.row)"
+          >
+          <img src="/images/InternetData/璇煶_鐐瑰嚮.png" alt=""
+          v-else
+          @click="telephone(scope.row)"
+          >
         </div>
       </template>
     </el-table-column>
@@ -79,27 +120,373 @@
 
 
   </el-table>
+  
+  <el-pagination
+  background
+  :total="100"
+  @size-change="handleSizeChange"
+  @current-change="handleCurrentChange"
+  :current-page.sync="currentPage"
+  :page-sizes="[5, 10, 15, 20]"
+  :page-size="10"
+  popper-class="page_helemt"
+  layout="prev, pager, next,sizes,jumper"
+  >
+ </el-pagination>
+
+ <telephoneBox :tele="telephoneObj" v-if="telephoneObj" @close="closeTele"/>
+
+ <div class="mask" v-if="telephoneObj"></div>
+
 </div>
   
 </template>
 
 <script>
+import telephoneBox from '@/pages/internetData/components/telephoneBox' 
 export default {
   data (){
     return {
+      currentPage:1,
       tableData: [
         {code: "A123123123123", elec:79.1, ip:"192.168.1.2", mac:"ec:da:da:da:ed:98",
-        longitude:120.1231231, latitude:120.1231231,height:"11.21",time:"0.23.45",positon:"鍗曞悜瀹氫綅" },
-      ]
+        longitude:120.1231231, latitude:120.1231231,height:"11.21",time:"0.23.45",positon:"鍗曞悜瀹氫綅",
+        isSend:false,istele:false
+         },
+         {code: "A123123123123", elec:29.1, ip:"192.168.1.2", mac:"ec:da:da:da:ed:98",
+        longitude:120.1231231, latitude:120.1231231,height:"11.21",time:"0.23.45",positon:"鍗曞悜瀹氫綅",
+        isSend:false,istele:false
+         },
+         {code: "A123123123123", elec:0, ip:"192.168.1.2", mac:"ec:da:da:da:ed:98",
+        longitude:120.1231231, latitude:120.1231231,height:"11.21",time:"0.23.45",positon:"鍗曞悜瀹氫綅",
+        isSend:false,istele:false
+         },
+         {code: "A123123123123", elec:79.1, ip:"192.168.1.2", mac:"ec:da:da:da:ed:98",
+        longitude:120.1231231, latitude:120.1231231,height:"11.21",time:"0.23.45",positon:"鍗曞悜瀹氫綅",
+        isSend:false,istele:false
+         },
+         {code: "A123123123123", elec:79.1, ip:"192.168.1.2", mac:"ec:da:da:da:ed:98",
+        longitude:120.1231231, latitude:120.1231231,height:"11.21",time:"0.23.45",positon:"鍗曞悜瀹氫綅",
+        isSend:false,istele:false
+         },
+         {code: "A123123123123", elec:79.1, ip:"192.168.1.2", mac:"ec:da:da:da:ed:98",
+        longitude:120.1231231, latitude:120.1231231,height:"11.21",time:"0.23.45",positon:"鍗曞悜瀹氫綅",
+        isSend:false,istele:false
+         },
+         {code: "A123123123123", elec:79.1, ip:"192.168.1.2", mac:"ec:da:da:da:ed:98",
+        longitude:120.1231231, latitude:120.1231231,height:"11.21",time:"0.23.45",positon:"鍗曞悜瀹氫綅",
+        isSend:false,istele:false
+         },
+          {code: "A123123123123", elec:79.1, ip:"192.168.1.2", mac:"ec:da:da:da:ed:98",
+        longitude:120.1231231, latitude:120.1231231,height:"11.21",time:"0.23.45",positon:"鍗曞悜瀹氫綅",
+        isSend:false,istele:false
+         },
+          {code: "A123123123123", elec:79.1, ip:"192.168.1.2", mac:"ec:da:da:da:ed:98",
+        longitude:120.1231231, latitude:120.1231231,height:"11.21",time:"0.23.45",positon:"鍗曞悜瀹氫綅",
+        isSend:false,istele:false
+         },
+          {code: "A123123123123", elec:79.1, ip:"192.168.1.2", mac:"ec:da:da:da:ed:98",
+        longitude:120.1231231, latitude:120.1231231,height:"11.21",time:"0.23.45",positon:"鍗曞悜瀹氫綅",
+        isSend:false,istele:false
+         },
+      ],
+      commentContent:'',
+      telephoneObj:null
     }
+  },
+  methods :{
+    sendVoice (target){
+      target.isSend = true
+
+      const h = this.$createElement;
+      this.$msgbox({
+        message: h(
+          "div",
+          {
+            attrs: {
+              class: "el-textarea"
+            }
+          },
+          [  h(
+          "div",
+          {
+            attrs: {
+              class: "el-title"
+            }
+          },[h("span",{
+            attrs: {
+              class: "icon iconfont"
+            }
+          },"\ue7cc"),h("span",null,"鍙戦�佽闊�")]),
+            h("textarea", {
+              attrs: {
+                placeholder: "璇疯緭鍏ヨ闊冲懡浠�",
+                maxlength:"20",
+                class: "el-textarea__inner",
+                autocomplete: "off",
+                rows: 3,
+                id: "commentContent",
+
+              },
+              value: this.commentContent,
+              on: { input: this.onCommentInputChange }
+            }),
+            h("div",{attrs:{class:"info",id: "comment_info"}},"杩樺彲杈撳叆20涓瓧绗�")
+          ]
+        ),
+        showCancelButton: true,
+        confirmButtonText: "纭畾",
+        confirmButtonClass:"hele_btn_save",
+        cancelButtonClass:"hele_btn_cancel",
+        cancelButtonText: "鍙栨秷",
+        beforeClose: (action, instance, done) => {
+       document.querySelector("#commentContent").value = ''
+       document.querySelector("#comment_info").innerHTML = `杩樺彲杈撳叆20涓瓧绗
+            target.isSend = false
+            done();
+        }
+      }).then(action => {
+        target.isSend = false
+
+      });
+
+
+
+    },
+    telephone (target){
+      target.istele = true
+      this.telephoneObj = target
+    },
+    handleCurrentChange (){
+
+    },
+    handleSizeChange (){
+
+    },
+    onCommentInputChange(){
+      let value = document.querySelector("#commentContent").value
+      console.log(value);
+      let cont = 20-value.length
+      document.querySelector("#comment_info").innerHTML = `杩樺彲杈撳叆${cont}涓瓧绗
+    },
+    closeTele(e){
+      e.istele = false
+      this.telephoneObj = null
+    }
+  },
+  components :{
+    telephoneBox
   }
 }
 </script>
 
 <style scoped lang="scss">
 .helemtTable {
-  ::v-deep .el-table {
+  position: relative;
+   .el-table {
+    overflow-y: scroll;
+    height: 660px;
     font-size: 12px;
+    font-weight: 700;
+
+    img {
+      width: 22px;
+      height: 22px;
+
+      &:first-child {
+        margin-right: 10px;
+      }
+    }
+
+    .index-container {
+      display: flex;
+      align-items: center;
+      justify-content: space-around;
+      height: 56px;
+
+      .icon {
+        font-size: 46px;
+        color: #FFAA44;
+      }
+    }
+
+    ::v-deep .el-table__row{
+      td {
+         border-bottom: 2px solid #fff;
+         border-top: 2px solid #fff;
+
+         &:first-child {
+           border-radius: 20px 0 0 20px;
+           border-left: 2px solid #fff;
+           border-bottom: 2px solid #fff;
+           }
+
+          &:last-child {
+           border-radius: 0 20px 20px 0;
+           border-right: 2px solid #fff;
+           border-bottom: 2px solid #fff;
+           }
+      }
+
+      &:hover {
+        background-color: rgb(242, 242, 247) ;
+
+        td {
+         border-bottom: 2px solid rgb(242, 242, 247);
+         border-top: 2px solid rgb(242, 242, 247);
+
+         &:first-child {
+           border-radius: 20px 0 0 20px;
+           border-left: 2px solid rgb(242, 242, 247);
+           border-bottom: 2px solid rgb(242, 242, 247);
+           }
+
+          &:last-child {
+           border-radius: 0 20px 20px 0;
+           border-right: 2px solid rgb(242, 242, 247);
+           border-bottom: 2px solid rgb(242, 242, 247);
+           }
+      }
+      }
+
+      &.current-row {
+
+        td {
+         background-color: #fff;
+         border-top: 2px solid rgb(17, 170, 102);
+         border-bottom: 2px solid rgb(17, 170, 102);
+
+         &:first-child {
+           border-radius: 20px 0 0 20px;
+           border-left: 2px solid rgb(17, 170, 102);
+           border-bottom: 2px solid rgb(17, 170, 102);
+           }
+
+          &:last-child {
+           border-radius: 0 20px 20px 0;
+           border-right: 2px solid rgb(17, 170, 102);
+           border-bottom: 2px solid rgb(17, 170, 102);
+           }
+      }
+      }
+
+    }
+
+    .elec-high {
+      color: rgb(17, 170, 102);
+    }
+    .elec-middle {
+      color: rgb(255, 170, 68);
+    }
+    .elec-low {
+      color: rgb(255, 100, 100);
+    }
   }
+
+  ::v-deep .el-pagination {
+    margin-top: 20px;
+    .el-pager li:not(.disabled):not(.active):hover {
+    color: #11AA66;
+    }
+   .el-pager li:not(.disabled).active {
+      background-color: #11AA66;
+    }
+
+    input:focus, input:hover {
+      border: 1px solid #11AA66 !important;
+    }
+
+    .el-input.is-focus input{
+      border: 1px solid #11AA66 !important;
+    }
+
+    
+  }
+
+  ::v-deep .has-gutter {
+    height: 70px;
+  }
+
+   .mask {
+      position: fixed;
+    top: 0;
+    bottom: 0;
+    left: 0;
+    right: 0;
+    text-align: center;
+    z-index: 1;
+    background-color: black;
+    opacity: .5;
+    }
+
+ 
+}
+
+ .el-textarea {
+    height: 150px;
+    padding: 0 15px;
+
+    .el-title {
+      margin-top: 20px;
+      margin-bottom: 15px;
+      color:  #4F4F4F;
+      font-size: 16px;
+      font-weight: 700;
+
+      .icon {
+        font-weight: normal;
+        font-size: 19px;
+      }
+      
+    }
+
+    .el-textarea__inner {
+        width: 357px;
+
+        &:focus {
+border: 1px solid #11AA66 ;
+
+        }
+      }
+
+    .info {
+      font-size: 12px;
+      color: #828282;
+      text-align: right;
+      padding-right: 38px;
+    }
+
+   
+  }
+</style>
+
+<style lang="scss">
+.page_helemt {
+    .el-select-dropdown__item.selected span{
+      color: #11AA66;
+    }
+}
+.hele_btn_save {
+  width: 175px;
+  height: 40px;
+
+background: #11AA66 !important;
+border: 1px solid #11AA66 !important;
+border-radius: 25px !important;
+margin: 10px 17px 12px 10px !important;
+
+&:hover {
+background: #11AA66 !important;
+border: 1px solid #11AA66 !important;
+}
+}
+
+.hele_btn_cancel {
+width: 175px;
+height: 40px;
+
+border: 1px solid #E0E0E0;
+box-sizing: border-box;
+border-radius: 25px !important;
 }
 </style>
\ No newline at end of file
diff --git a/src/pages/internetEquipment/components/headCard.vue b/src/pages/internetEquipment/components/headCard.vue
new file mode 100644
index 0000000..9159c44
--- /dev/null
+++ b/src/pages/internetEquipment/components/headCard.vue
@@ -0,0 +1,74 @@
+<template>
+  <div class="head-card">
+      <div class="card-left">
+          <div class="number" :style="colorStyle">{{number}}</div>
+          <div class="info">{{info}}</div>
+      </div>
+      <div class="card-right icon iconfont">&#xe743;</div>
+  </div>
+</template>
+
+<script>
+export default {
+    props: {
+        number: {
+            require: true
+        },
+        info: {
+            require: true
+        },
+        icon: {
+            require: true
+        },
+        color: {
+            require: true
+        }
+    },
+    data (){
+        return {
+            
+        }
+    },
+    computed: {
+        colorStyle (){
+            return {
+                "--color":this.color
+            }
+        }
+    }
+}
+</script>
+
+<style scoped lang="scss">
+.head-card {
+    box-sizing: border-box;
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    padding: 20px;
+    width: 187px;
+    height: 90px;
+    background: #FFFFFF;
+    box-shadow: 0px 2px 10px rgba(141, 164, 187, 0.25);
+    border-radius: 15px;
+
+    .card-left {
+        .number {
+            font-size: 24px;
+            font-weight: 700;
+            color: var(--color);
+        }
+        .info {
+            font-size: 12px;
+            color: #4F4F4F;
+;
+        }
+    }
+
+    .card-right {
+        font-size: 58px;
+        color: var(--color);
+
+    }
+}
+</style>
\ No newline at end of file
diff --git a/src/pages/internetEquipment/components/helemetEchart.vue b/src/pages/internetEquipment/components/helemetEchart.vue
new file mode 100644
index 0000000..9f8a2cf
--- /dev/null
+++ b/src/pages/internetEquipment/components/helemetEchart.vue
@@ -0,0 +1,122 @@
+<template>
+  <div class="helemet-echart">
+      <div id="echart-cotainer" ></div>
+  </div>
+</template>
+
+<script>
+import echarts from "echarts";
+
+export default {
+    data (){
+        return {
+            option : {
+              grid: {
+                  show :false,
+                  bottom: 20,
+                  top: 20,
+                  left: 40,
+                  right: 20
+              },
+              xAxis: {
+                type: 'category',
+                boundaryGap: false,
+                data: ['1', '2021-09-02 00:00', '1', '2021-09-02 00:00', '1', '2021-09-02 00:00', '1'],
+                axisLine: {
+                    show: false  //涓嶆樉绀哄潗鏍囪酱杞寸嚎
+                },
+                axisTick: {
+                    show: false  //涓嶆樉绀哄潗鏍囪酱鍒诲害
+                },
+                spiltLine:{
+                    show: false  //鎯宠涓嶆樉绀虹綉鏍肩嚎锛屾敼涓篺alse
+                }
+              },
+              yAxis: {
+                type: 'value',
+                splitLine : {
+                    show: false
+                },
+                axisLine: {
+                    show: false  //涓嶆樉绀哄潗鏍囪酱杞寸嚎
+                },
+                axisTick: {
+                    show: false  //涓嶆樉绀哄潗鏍囪酱鍒诲害
+                },
+              },
+              series: [
+                {
+                  data: [820, 932, 901, 934, 1290, 1330, 1320],
+                  type: 'line',
+                  areaStyle: {},
+                  areaStyle: {
+				        normal: {
+					    color: '#FFF8EB' //鏀瑰彉鍖哄煙棰滆壊
+				                }
+     			            },
+                  itemStyle: {
+                      normal: {
+                          lineStyle: {
+                              color: '#FFAA44'
+                          }
+                      }
+                  }
+
+                                
+/* itemStyle: {
+    normal: {
+        color: '#f7ba0e',
+        label: {
+            show: true,
+            position: 'top',
+            formatter:this.format,
+            rich: {
+                color1: {
+                    color: '#f7ba0e'
+                },
+                color2: {
+                    color: '#42a1fe'
+                }
+            },
+            textStyle: {
+                color: '#333'
+            }
+        }
+    }
+} */
+                }
+              ],
+
+            }
+        }
+    },
+    mounted (){
+         let myChart = echarts.init(document.getElementById('echart-cotainer'))
+         myChart.setOption(this.option);
+    },
+    methods :{
+      /*   format (params) {
+            console.log(params);
+                for (var i = 0,
+                l = this.option.xAxis.data.length; i < l; i++) {
+                    if (this.option.xAxis.data[i] == params.name) {
+                       
+                        var val1 = params.value || 0;
+                         console.log(this);
+                        var val2 = this.option.series[0].data[i] || 0;
+
+                        return '{color1|' + val1 + '}/{color2|' + val2 + '}';
+                    }
+                }
+        } */
+    }
+}
+</script>
+
+<style scoped lang="scss">
+.helemet-echart {
+    #echart-cotainer {
+        height: 100%;
+    }
+}
+</style>
\ No newline at end of file
diff --git a/src/pages/internetEquipment/components/helemetHead.vue b/src/pages/internetEquipment/components/helemetHead.vue
new file mode 100644
index 0000000..ee54200
--- /dev/null
+++ b/src/pages/internetEquipment/components/helemetHead.vue
@@ -0,0 +1,54 @@
+<template>
+  <div class="helemetHead">
+      <headCard v-for="(item,index) in cardData"
+      :key="index"
+      :number="item.number"
+      :info="item.info"
+      :icon="item.icon"
+      :color="item.color"
+      />
+
+      <helemetEchart />
+
+  </div>
+</template>
+
+<script>
+import headCard from '@/pages/internetEquipment/components/headCard'
+import helemetEchart from '@/pages/internetEquipment/components/helemetEchart'
+
+export default {
+    data (){
+        return {
+            cardData: [
+                {number:233,info:"璁惧鎬婚噺",icon:"\ue743",color:"#4E94FF"},
+                {number:34,info:"鏈湀鏂板",icon:"\ue743",color:"#FFAA44"},
+                {number:45,info:"浠婃棩棰勮",icon:"\ue743",color:"#FF6464"},
+            ]
+        }
+    },
+    components :{
+        headCard,
+        helemetEchart
+    }
+
+}
+</script>
+
+<style scoped lang="scss">
+.helemetHead {
+    display: flex;
+
+    .head-card {
+        margin-right: 10px;
+    }
+
+    .helemet-echart {
+        margin-left: 10px;
+        width: 570px;
+        height: 90px;
+        box-shadow: 0px 2px 10px rgba(141, 164, 187, 0.25);
+        border-radius: 15px;
+    }
+}
+</style>
\ No newline at end of file
diff --git a/src/pages/internetEquipment/components/realTimeItem.vue b/src/pages/internetEquipment/components/realTimeItem.vue
new file mode 100644
index 0000000..791da22
--- /dev/null
+++ b/src/pages/internetEquipment/components/realTimeItem.vue
@@ -0,0 +1,29 @@
+<template>
+  <div class="realTimeItem">
+      <warnDescription/>
+  </div>
+</template>
+
+<script>
+import warnDescription from '@/pages/internetEquipment/components/warnDescription'
+
+export default {
+    props :{
+        warnObj:{
+            type:Object
+        },
+    },
+    components :{
+        warnDescription
+    }
+}
+</script>
+
+<style scoped lang="scss">
+.realTimeItem {
+    display: flex;
+    flex-direction: column;
+    width: 167px;
+    height: 134px;
+}
+</style>
\ No newline at end of file
diff --git a/src/pages/internetEquipment/components/tabSingle.vue b/src/pages/internetEquipment/components/tabSingle.vue
new file mode 100644
index 0000000..6f72438
--- /dev/null
+++ b/src/pages/internetEquipment/components/tabSingle.vue
@@ -0,0 +1,59 @@
+<template>
+  <div class="tab_single" :class="{'active' : id ===activeTab}">
+    <div class="icon iconfont">{{icon}}</div>
+    <div class="title">{{title}}</div>
+  </div>
+</template>
+
+<script>
+export default {
+    props: {
+        icon: {
+            type : String,
+            require :true
+        },
+        title: {
+            type : String,
+            require :true
+        },
+        id: {
+            type : Number,
+            require :true
+        },
+        activeTab: {
+            type : Number,
+            require :true
+        }
+    }
+}
+</script>
+
+<style scoped lang="scss">
+.tab_single {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    padding: 0 30px;
+    height: 50px;
+    width: 190px;
+    border-radius: 15px;
+    background-color: #fff;
+    color: #4F4F4F;
+    cursor: pointer;
+
+    .icon {
+        font-size: 25px;
+    }
+
+    .title {
+        width: 82px;
+        text-align: left;
+        font-size: 16px;
+    }
+
+    &.active {
+        background-color: #11AA66;
+        color: #fff;
+    }
+}
+</style>
\ No newline at end of file
diff --git a/src/pages/internetEquipment/components/warnDescription.vue b/src/pages/internetEquipment/components/warnDescription.vue
new file mode 100644
index 0000000..6c933d3
--- /dev/null
+++ b/src/pages/internetEquipment/components/warnDescription.vue
@@ -0,0 +1,37 @@
+<template>
+  <div class="warn-description">
+      <div class="code"><span>璁惧缂栫爜: </span>{{warnDes.code}}</div>
+      <div class="location" v-if="warnDes.location">{{warnDes.location}}</div>
+      <div class="time"><span>鏃堕棿: </span>{{warnDes.time}}</div>
+      <div class="position" v-if="warnDes.longitude"><span>缁忓害: </span>{{warnDes.longitude}} <span>绾害: </span>{{warnDes.latitude}}</div>
+      <div class="warnIcon" v-if="warnDes.warn"><span class="icon iconfont">&#xe71c;</span> {{warnDes.warn}}</div>
+  </div>
+</template>
+
+<script>
+export default {
+  props :{
+    warnDes : {
+      type: Object
+    }
+  }
+}
+</script>
+
+<style scoped lang="scss">
+.warn-description {
+  .code, .location, .time, .position, .warnIcon {
+  text-align: left;
+  margin-bottom: 5px;
+  }
+
+  span {
+    font-weight: 700;
+  }
+
+  .warnIcon {
+    color: #FF6464;
+  }
+
+}
+</style>
\ No newline at end of file
diff --git a/src/pages/internetEquipment/index/index.vue b/src/pages/internetEquipment/index/index.vue
new file mode 100644
index 0000000..b8b1994
--- /dev/null
+++ b/src/pages/internetEquipment/index/index.vue
@@ -0,0 +1,81 @@
+<template>
+  <div class="internert-equipment">
+    <!-- 宸︿晶tab鏍� -->
+    <div class="left_tab">
+      <tab-single 
+       v-for="(item,index) in tabArr"
+       :id="index"
+       :key="index"
+       :icon="item.icon" 
+       :title="item.title"
+       :activeTab="activeTab"
+       @click.native="toggleActive(index)"
+      />
+    </div>
+
+    <!-- 鍙充晶鍐呭 -->
+    <div class="right_content">
+      <!-- 瀹夊叏甯借澶� -->
+      <helemetEquipment v-if="activeTab === 0"/>
+
+    </div>
+  </div>
+</template>
+
+<script>
+import tabSingle from "../components/tabSingle.vue";
+import helemetEquipment from '@/pages/internetEquipment/views/helemetEquipment'
+
+export default {
+  data (){
+    return {
+      // 宸︿晶tab鏁版嵁
+      tabArr: [
+      {icon: "\ue77f", title: "瀹夊叏甯借澶�"},
+      {icon: "\ue767", title: "渚涢厤鐢佃澶�"},
+      {icon: "\ue763", title: "娑堥槻璁惧"},
+      {icon: "\ue765", title: "鑳芥簮璁惧"},
+      {icon: "\ue7c0", title: "缁欐帓姘磋澶�"},
+      ],
+      activeTab: 0
+    }
+  },
+  components: {
+    tabSingle,
+    helemetEquipment
+  },
+  methods :{
+    toggleActive (index){
+      this.activeTab = index
+    }
+  }
+}
+</script>
+
+<style scoped lang="scss">
+* {
+  box-sizing: border-box;
+}
+
+.internert-equipment {
+  display: flex;
+  height: 100%;
+  background-color: #fff;
+  border-top: 1px solid #E0E0E0;
+
+  .left_tab {
+  padding: 20px;
+  width: 230px;
+  height: 100%;
+
+  .tab_single {
+    margin-bottom: 10px;
+    }
+  }
+
+  .right_content {
+    height: 100%;
+    width: 100%;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/pages/internetEquipment/index/main.ts b/src/pages/internetEquipment/index/main.ts
new file mode 100644
index 0000000..3afd407
--- /dev/null
+++ b/src/pages/internetEquipment/index/main.ts
@@ -0,0 +1,12 @@
+import Vue from 'vue';
+import App from './index.vue';
+
+import ElementUI from 'element-ui';
+import 'element-ui/lib/theme-chalk/index.css';
+// import "@/assets/css/element-variables.scss";
+Vue.use(ElementUI)
+
+new Vue({
+  el: '#app',
+  render: h => h(App)
+})
diff --git a/src/pages/internetEquipment/module/elecModule.vue b/src/pages/internetEquipment/module/elecModule.vue
new file mode 100644
index 0000000..c157c30
--- /dev/null
+++ b/src/pages/internetEquipment/module/elecModule.vue
@@ -0,0 +1,40 @@
+<template>
+  <div class="elec-module">
+      <div class="title"></div>
+
+      <div class="elec-item"
+       v-for="(item,index) in warnArr"
+       :key="index">
+          <warnDescription 
+        :warnDes="{code:item.code,
+        time:item.time,
+        location:item.location}"/>
+      </div>
+      
+  </div>
+</template>
+
+<script>
+import warnDescription from '@/pages/internetEquipment/components/warnDescription'
+export default {
+    props :{
+         warnArr:{
+            type: Array
+        }
+    },
+    components :{
+        warnDescription
+    }
+}
+</script>
+
+<style scoped lang="scss">
+.elec-module {
+    width: 280px;
+    height: 292px;
+    background-color: #fff;
+    box-shadow: 0px 2px 10px rgba(141, 164, 187, 0.25);
+    border-radius: 15px;
+    overflow-y: scroll;
+}
+</style>
\ No newline at end of file
diff --git a/src/pages/internetEquipment/module/historyModule.vue b/src/pages/internetEquipment/module/historyModule.vue
new file mode 100644
index 0000000..73d05a5
--- /dev/null
+++ b/src/pages/internetEquipment/module/historyModule.vue
@@ -0,0 +1,38 @@
+<template>
+  <div class="history-module">
+      <div class="title"></div>
+      <div class="history-item" 
+      v-for="(item,index) in warnArr"
+      :key="index">
+          <warnDescription  
+        :warnDes="{code:item.code,
+        time:item.time,
+        warn:item.warn}"/>
+      </div>
+  </div>
+</template>
+
+<script>
+import warnDescription from '@/pages/internetEquipment/components/warnDescription'
+export default {
+    props :{
+        warnArr : {
+            type: Array
+        }
+    },
+    components :{
+        warnDescription
+    }
+}
+</script>
+
+<style scoped lang="scss">
+.history-module {
+    width: 280px;
+    height: 292px;
+    background-color: #fff;
+    box-shadow: 0px 2px 10px rgba(141, 164, 187, 0.25);
+    border-radius: 15px;
+    overflow-y: scroll;
+}
+</style>
\ No newline at end of file
diff --git a/src/pages/internetEquipment/module/mapIndex.vue b/src/pages/internetEquipment/module/mapIndex.vue
new file mode 100644
index 0000000..c00944a
--- /dev/null
+++ b/src/pages/internetEquipment/module/mapIndex.vue
@@ -0,0 +1,21 @@
+<template>
+  <div class="map-index">
+
+  </div>
+</template>
+
+<script>
+export default {
+
+}
+</script>
+
+<style scoped lang="scss">
+.map-index  {
+    width: 1170px;
+    height: 396px;
+    border-radius: 15px;
+    background-color: skyblue
+}
+
+</style>
\ No newline at end of file
diff --git a/src/pages/internetEquipment/module/realTimeModule.vue b/src/pages/internetEquipment/module/realTimeModule.vue
new file mode 100644
index 0000000..f0d8f92
--- /dev/null
+++ b/src/pages/internetEquipment/module/realTimeModule.vue
@@ -0,0 +1,62 @@
+<template>
+  <div class="real-time-module">
+      <div class="title">瀹炴椂鎶撴媿棰勮</div>
+      <div class="real-time-item" 
+      v-for="(item,index) in warnArr"
+      :key="index">
+          <img :src="item.image" alt="" class="warnArea">
+          <warnDescription  
+        :warnDes="{code:item.code,
+        time:item.time,
+        longitude:item.longitude,
+        latitude:item.latitude,
+        warn:item.warn}"/>
+      </div>
+  </div>
+</template>
+
+<script>
+import warnDescription from '@/pages/internetEquipment/components/warnDescription'
+export default {
+    props :{
+        warnArr:{
+            type: Array
+        }
+    },
+    components :{
+        warnDescription
+    }
+}
+</script>
+
+<style scoped lang="scss">
+.real-time-module {
+    display: flex;
+    flex-wrap: wrap;
+    padding: 20px;
+    padding-right: 0px;
+    width: 570px;
+    height: 292px;
+    background-color: #fff;
+    box-shadow: 0px 2px 10px rgba(141, 164, 187, 0.25);
+    border-radius: 15px;
+    overflow-y: scroll;
+
+    .title {
+        margin-bottom: 10px;
+        font-size: 14px;
+        font-weight: 700;
+        width: 530px;
+        text-align: left;
+    }
+
+    .real-time-item {
+        margin-right: 14px;
+    }
+    .warnArea {
+        width: 167px;
+        height: 104px;
+        border-radius: 5px;
+    }
+}
+</style>
\ No newline at end of file
diff --git a/src/pages/internetEquipment/views/helemetEquipment.vue b/src/pages/internetEquipment/views/helemetEquipment.vue
new file mode 100644
index 0000000..31a83f4
--- /dev/null
+++ b/src/pages/internetEquipment/views/helemetEquipment.vue
@@ -0,0 +1,146 @@
+<template>
+  <div class="helmet-equipment">
+    <helemetHead />
+    <mapIndex />
+    <div class="footer">
+      <realTimeModule :warnArr="warnArr"/>
+      <elecModule :warnArr="warnArr"/>
+      <historyModule :warnArr="warnArr"/>
+    </div>
+  </div>
+</template>
+
+<script>
+import helemetHead from '@/pages/internetEquipment/components/helemetHead'
+import mapIndex from '@/pages/internetEquipment/module/mapIndex'
+import realTimeModule from '@/pages/internetEquipment/module/realTimeModule'
+import elecModule from '@/pages/internetEquipment/module/elecModule'
+import historyModule from '@/pages/internetEquipment/module/historyModule'
+export default {
+  data (){
+    return {
+      warnArr:[{
+        code:"A100640819DA3B",
+        image:"/images/settings/background.png",
+        location:"鏈濋槼绉戞妧鍥�",
+        time:"2021-09-21 12:23",
+        longitude:"23.2344",
+        latitude:"45.4455",
+        warn:"鏈湪鐢靛瓙鍥存爮鍖哄煙"
+      },{
+        code:"A100640819DA3B",
+        image:"/images/settings/background.png",
+        location:"鏈濋槼绉戞妧鍥�",
+        time:"2021-09-21 12:23",
+        longitude:"23.2344",
+        latitude:"45.4455",
+        warn:"鏈湪鐢靛瓙鍥存爮鍖哄煙"
+      },
+      {
+        code:"A100640819DA3B",
+        image:"/images/settings/background.png",
+        location:"鏈濋槼绉戞妧鍥�",
+        time:"2021-09-21 12:23",
+        longitude:"23.2344",
+        latitude:"45.4455",
+        warn:"鏈湪鐢靛瓙鍥存爮鍖哄煙"
+      },
+      {
+        code:"A100640819DA3B",
+        image:"/images/settings/background.png",
+        location:"鏈濋槼绉戞妧鍥�",
+        time:"2021-09-21 12:23",
+        longitude:"23.2344",
+        latitude:"45.4455",
+        warn:"鏈湪鐢靛瓙鍥存爮鍖哄煙"
+      },
+      {
+        code:"A100640819DA3B",
+        image:"/images/settings/background.png",
+        location:"鏈濋槼绉戞妧鍥�",
+        time:"2021-09-21 12:23",
+        longitude:"23.2344",
+        latitude:"45.4455",
+        warn:"鏈湪鐢靛瓙鍥存爮鍖哄煙"
+      },
+      {
+        code:"A100640819DA3B",
+        image:"/images/settings/background.png",
+        location:"鏈濋槼绉戞妧鍥�",
+        time:"2021-09-21 12:23",
+        longitude:"23.2344",
+        latitude:"45.4455",
+        warn:"鏈湪鐢靛瓙鍥存爮鍖哄煙"
+      },
+      {
+        code:"A100640819DA3B",
+        image:"/images/settings/background.png",
+        location:"鏈濋槼绉戞妧鍥�",
+        time:"2021-09-21 12:23",
+        longitude:"23.2344",
+        latitude:"45.4455",
+        warn:"鏈湪鐢靛瓙鍥存爮鍖哄煙"
+      },
+      {
+        code:"A100640819DA3B",
+        image:"/images/settings/background.png",
+        location:"鏈濋槼绉戞妧鍥�",
+        time:"2021-09-21 12:23",
+        longitude:"23.2344",
+        latitude:"45.4455",
+        warn:"鏈湪鐢靛瓙鍥存爮鍖哄煙"
+      },
+      {
+        code:"A100640819DA3B",
+        image:"/images/settings/background.png",
+        location:"鏈濋槼绉戞妧鍥�",
+        time:"2021-09-21 12:23",
+        longitude:"23.2344",
+        latitude:"45.4455",
+        warn:"鏈湪鐢靛瓙鍥存爮鍖哄煙"
+      },
+      {
+        code:"A100640819DA3B",
+        image:"/images/settings/background.png",
+        location:"鏈濋槼绉戞妧鍥�",
+        time:"2021-09-21 12:23",
+        longitude:"23.2344",
+        latitude:"45.4455",
+        warn:"鏈湪鐢靛瓙鍥存爮鍖哄煙"
+      }]
+    }
+  },
+  components: {
+    helemetHead,
+    mapIndex,
+    realTimeModule,
+    elecModule,
+    historyModule
+  }
+
+}
+</script>
+
+<style scoped lang="scss">
+* {
+  box-sizing: border-box;
+}
+
+.helmet-equipment {
+    padding: 20px;
+    width: 100%;
+    height: 100%;
+    background: #FBFCFE;
+
+    .map-index {
+      margin: 20px 0;
+    }
+
+    .footer {
+      height: 292px;
+      display: flex;
+      justify-content: space-between;
+      color: #4F4F4F;
+    }
+}
+</style>
\ No newline at end of file

--
Gitblit v1.8.0