From 4ff29e301de38488db0ff04f0209c99e37cf30b4 Mon Sep 17 00:00:00 2001
From: heyujie <516346543@qq.com>
Date: 星期二, 07 十二月 2021 18:56:34 +0800
Subject: [PATCH] 对比库管理

---
 src/pages/internetData/views/helemtTable.vue |  678 ++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 608 insertions(+), 70 deletions(-)

diff --git a/src/pages/internetData/views/helemtTable.vue b/src/pages/internetData/views/helemtTable.vue
index 11cb89c..ee8972e 100644
--- a/src/pages/internetData/views/helemtTable.vue
+++ b/src/pages/internetData/views/helemtTable.vue
@@ -1,105 +1,643 @@
 <template>
-<div class="helemtTable">
-<el-table
-    :data="tableData"
-    style="width: 100%">
-    <el-table-column
-      label="搴忓彿"
-      type="index">
-    </el-table-column>
+  <div class="helemtTable">
+    <el-table
+      :data="helemtArr"
+      style="width: 100%"
+      header-align="center"
+      :highlight-current-row="true"
+    >
+      <el-table-column
+        header-align="center"
+        label="搴忓彿"
+        align="center"
+        width="60"
+        type="index"
+      >
+      </el-table-column>
 
-    <el-table-column
-      label="璁惧"
-      width="230">
-      <template slot-scope="scope">
-        <div class="index-container">
-          <div class="index">{{scope.$index}}</div>
-          <div class="info">
+      <el-table-column header-align="center" label="璁惧" width="280">
+        <template slot-scope="scope">
+          <div class="index-container">
             <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.device_sn }}</div>
+              <div class="elec">
+                鐢甸噺 :
+                <span
+                  :class="{
+                    'elec-high': scope.row.battery >= 40,
+                    'elec-middle':
+                      scope.row.battery < 40 && scope.row.battery > 0,
+                    'elec-low': scope.row.battery === 0,
+                  }"
+                  >{{ scope.row.battery }}</span
+                >
+              </div>
             </div>
           </div>
-        </div>
-      </template>
-    </el-table-column>
+        </template>
+      </el-table-column>
 
-    <el-table-column
+      <el-table-column
+        header-align="center"
+        align="center"
         prop="ip"
-        label="IP鍦板潃">
-    </el-table-column>
+        label="IP鍦板潃"
+      >
+      </el-table-column>
 
-    <el-table-column
+      <el-table-column
+        header-align="center"
+        align="center"
         prop="mac"
         label="mac鍦板潃"
-        width="150">
-    </el-table-column>
+        width="140"
+      >
+      </el-table-column>
 
-    <el-table-column
-        prop="longitude"
-        label="缁忓害">
-    </el-table-column>
+      <el-table-column
+        header-align="center"
+        align="center"
+        prop="lng"
+        label="缁忓害"
+      >
+      </el-table-column>
 
-    <el-table-column
-        prop="latitude"
-        label="绾害">
-    </el-table-column>
+      <el-table-column
+        header-align="center"
+        align="center"
+        prop="lat"
+        label="绾害"
+      >
+      </el-table-column>
 
-    <el-table-column
-        prop="latitude"
-        label="鍦板潃">
-    </el-table-column>
+      <el-table-column
+        header-align="center"
+        align="center"
+        prop="locate_state"
+        label="鍦板潃"
+      >
+      </el-table-column>
 
-    <el-table-column
-        prop="height"
-        label="楂樺害">
-    </el-table-column>
+      <el-table-column
+        header-align="center"
+        align="center"
+        prop="high"
+        label="楂樺害"
+      >
+      </el-table-column>
 
-    <el-table-column
-        prop="positon"
-        label="瀹氫綅鐘舵��">
-    </el-table-column>
+      <el-table-column
+        header-align="center"
+        align="center"
+        prop="gps_type"
+        label="瀹氫綅鐘舵��"
+      >
+      </el-table-column>
 
-    <el-table-column
-        prop="time"
-        label="璁块棶鏃堕棿">
-    </el-table-column>
+      <el-table-column
+        align="center"
+        header-align="center"
+        prop="visit_time"
+        label="璁块棶鏃堕棿"
+      >
+      </el-table-column>
 
-    <el-table-column
-      label="鎿嶄綔">
-      <template slot-scope="scope">
-        <div class="action-container">
-          <div class="icon iconfont"></div>
-          <div class="icon iconfont"></div>
-        </div>
-      </template>
-    </el-table-column>
+      <el-table-column align="center" header-align="center" label="鎿嶄綔">
+        <template slot-scope="scope">
+          <div class="action-container">
+            <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>
+    </el-table>
 
+    <el-pagination
+      background
+      :total="total"
+      @size-change="handleSizeChange"
+      @current-change="handleCurrentChange"
+      :current-page.sync="currentPage"
+      :page-sizes="[2, 10, 15, 20]"
+      :page-size="page_size"
+      popper-class="page_helemt"
+      layout="prev, pager, next,sizes,jumper"
+    >
+    </el-pagination>
 
+    <telephoneBox :tele="telephoneObj" v-if="telephoneObj" @close="closeTele" />
 
-  </el-table>
-</div>
-  
+    <div class="mask" v-if="telephoneObj"></div>
+  </div>
 </template>
 
 <script>
+import telephoneBox from "@/pages/internetData/components/telephoneBox";
+import { getHelemtData, sendAudio } from "@/api/helemt";
+
+let voiceText = "";
 export default {
-  data (){
+  name: "helemtTable",
+  data() {
     return {
+      currentPage: 1,
+      page_size: 10,
+      total: 10,
       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:"鍗曞悜瀹氫綅" },
-      ]
-    }
-  }
-}
+        {
+          code: "A123123123123",
+          elec: 79.1,
+          ip: "192.168.1.2",
+          mac: "ec:da:da:da:ed:98",
+          longitude: 120.123123,
+          latitude: 120.123123,
+          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.123123,
+          latitude: 120.123123,
+          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.123123,
+          latitude: 120.123123,
+          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.123123,
+          latitude: 120.123123,
+          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.123123,
+          latitude: 120.123123,
+          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.123123,
+          latitude: 120.123123,
+          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.123123,
+          latitude: 120.123123,
+          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.123123,
+          latitude: 120.123123,
+          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.123123,
+          latitude: 120.123123,
+          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.123123,
+          latitude: 120.123123,
+          height: "11.21",
+          time: "0.23.45",
+          positon: "鍗曞悜瀹氫綅",
+          isSend: false,
+          istele: false,
+        },
+      ],
+      helemtArr: [],
+      commentContent: "",
+      telephoneObj: null,
+    };
+  },
+  created() {
+    this.getHelemtArr({
+      page: this.currentPage,
+      pageSize: this.page_size,
+    });
+  },
+  methods: {
+    async getHelemtArr(data) {
+      const res = await getHelemtData(data);
+      console.log(res);
+      this.helemtArr = res.data.items;
+      this.total = res.data.total;
+    },
+    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) => {
+        if (action == "confirm") {
+          if (!voiceText) {
+            this.$message({
+              message: "鎸囦护涓嶈兘涓虹┖",
+              type: "warning",
+            });
+            return;
+          }
+          console.log(voiceText);
+          sendAudio(target.device_sn, voiceText).then((res) => {
+            this.$message({
+              message: "鎸囦护鍙戦�佹垚鍔�",
+              type: "success",
+            });
+          });
+          target.isSend = false;
+        } else {
+          target.isSend = false;
+        }
+      });
+    },
+    telephone(target) {
+      target.istele = true;
+      this.telephoneObj = target;
+    },
+    handleCurrentChange(val) {
+      this.currentPage = val;
+      this.getHelemtArr({
+        page: this.currentPage,
+        pageSize: this.page_size,
+      });
+    },
+    handleSizeChange(val) {
+      this.page_size = val;
+      this.getHelemtArr({
+        page: this.currentPage,
+        pageSize: this.page_size,
+      });
+    },
+    onCommentInputChange() {
+      let value = document.querySelector("#commentContent").value;
+      voiceText = 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;
+      height: 56px;
+
+      .icon {
+        font-size: 46px;
+        color: #ffaa44;
+        margin-right: 10px;
+      }
+    }
+
+    ::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: 0.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

--
Gitblit v1.8.0