From ea4f93ac21611943cd2111b7f1680540f66df7cf Mon Sep 17 00:00:00 2001
From: ZZJ <zzjdsg2300@163.com>
Date: 星期一, 08 十一月 2021 18:15:25 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.5.5:10010/r/web/vue-smart-ai

---
 src/pages/shuohuangMonitorAnalyze/components/transferDeviceManage.vue |  419 ++++++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 271 insertions(+), 148 deletions(-)

diff --git a/src/pages/shuohuangMonitorAnalyze/components/transferDeviceManage.vue b/src/pages/shuohuangMonitorAnalyze/components/transferDeviceManage.vue
index 67917d6..217bbd1 100644
--- a/src/pages/shuohuangMonitorAnalyze/components/transferDeviceManage.vue
+++ b/src/pages/shuohuangMonitorAnalyze/components/transferDeviceManage.vue
@@ -4,92 +4,108 @@
       <el-tabs v-model="actTab" @tab-click="checkTab">
         <el-tab-pane :name="tab.ID" v-for="tab in devices" :key="tab.ID">
           <div slot="label" class="label-slot">
-            <span>{{tab.Name}}</span>
+            <span
+              class="title"
+              :style="tab.Status == 1 ? { color: '#8A98B8' } : {}"
+              >{{ tab.Name }}</span
+            >
             <span
               class="capsule"
-              :class="{'online':tab.Status==0,'offline':tab.Status==1}"
-            >{{tab.Status==0?"鍦ㄧ嚎":"绂荤嚎"}}</span>
+              :class="{ online: tab.Status == 0, offline: tab.Status == 1 }"
+              >{{ tab.Status == 0 ? "鍦ㄧ嚎" : "绂荤嚎" }}</span
+            >
           </div>
         </el-tab-pane>
-        <!-- <el-tab-pane name="dev2">
-          <div slot="label" class="label-slot">
-            <span>杞偍璁惧2</span>
-            <span class="capsule offline">绂荤嚎</span>
-          </div>
-        </el-tab-pane>-->
       </el-tabs>
-      <div class="btn-add-dev" @click="showAddDevice">
-        <i class="el-icon-circle-plus"></i>
+      <!-- <div class="btn-add-dev" @click="showAddDevice">
+        <span class="icon iconfont">&#xe602; </span>
         <span>娣诲姞璁惧</span>
-      </div>
+      </div> -->
     </div>
-    <div class="general-view">
-      <div class="indicator">
-        <el-button>璁惧閲嶅惎</el-button>
-      </div>
-      <div
-        class="indicator"
-        :class="{'lastOne':index==generalIndicators.length-1}"
-        v-for="(indicator,index) in generalIndicators"
-        :key="indicator.id"
-      >
-        <div class="title">
-          <span
-            class="dot"
-            :class="{'kx':indicator.id=='kx','dx':indicator.id=='dx','ccgz':indicator.id=='ccgz'}"
-          ></span>
-          <span class="word">{{indicator.title}}</span>
-        </div>
-        <div class="indicator-val">{{indicator.slots.length}}</div>
-      </div>
-    </div>
-    <div class="table-area">
-      <div class="filter-bar flex-box">
-        <!-- <div>
-          <label>璁惧鍦板潃:</label>
-          <div>
-            <el-input v-model="deviceAddr" size="small"></el-input>
-          </div>
-        </div>-->
-        <div>
-          <label>璁惧鐘舵��:</label>
-          <div>
-            <el-select v-model="deviceState" size="small">
-              <el-option value="" label="鍏ㄩ儴"></el-option>
-              <el-option value="1" label="璇诲啓涓�"></el-option>
-              <el-option value="0" label="绌洪棽涓�"></el-option>
-              <el-option value="2" label="鎻掓Ы鏁呴殰"></el-option>
-            </el-select>
+    <div class="t-d-content">
+      <div class="general-view">
+        <div class="indicator">
+          <div class="icon-wrap">
+            <div class="icon-div"><span class="iconfont">&#xe660;</span></div>
+
+            <span class="text">璁惧閲嶅惎</span>
           </div>
         </div>
-        <div class="btns">
-          <el-button @click="findDeviceIfo" type="primary" size="small">鏌ヨ</el-button>
+        <div
+          class="indicator"
+          :class="{ lastOne: index == generalIndicators.length - 1 }"
+          v-for="(indicator, index) in generalIndicators"
+          :key="indicator.id"
+        >
+          <div class="img-desc">
+            <img class="icon" :src="indicator.path" />
+          </div>
+          <div class="title">
+            <div class="indicator-val" :style="{ color: indicator.color }">
+              <span
+                style="font-size: 24px"
+                :style="{ color: indicator.color }"
+                >{{ indicator.slots.length }}</span
+              >
+              涓�
+            </div>
+            <span class="word">{{ indicator.title }}</span>
+          </div>
         </div>
       </div>
-      <el-table class="thbg" :data="tableData" fit>
-        <el-table-column type="index" width="100" label="搴忓彿"></el-table-column>
-        <el-table-column prop="Name" label="鎻掓Ы鍚嶇О"></el-table-column>
-        <el-table-column prop="Status" label="鐘舵��">
-          <template slot-scope="scope">
+      <div class="table-area">
+        <div class="filter-bar flex-box">
+          <div>
+            <label>璁惧鐘舵��:</label>
             <div>
-              <span v-if="scope.row.Status==0">绌洪棽涓�</span>
-              <span v-if="scope.row.Status==1">璇诲啓涓�</span>
-              <span v-if="scope.row.Status==2">鎻掓Ы鏁呴殰</span>
+              <el-select v-model="deviceState" size="small">
+                <el-option value="" label="鍏ㄩ儴"></el-option>
+                <el-option value="1" label="璇诲啓涓�"></el-option>
+                <el-option value="0" label="绌洪棽涓�"></el-option>
+                <el-option value="2" label="鎻掓Ы鏁呴殰"></el-option>
+              </el-select>
             </div>
-          </template>
-        </el-table-column>
-        <!-- <el-table-column prop="state" label="璁惧鐘舵��"></el-table-column>
-        <el-table-column prop="pic" label="鐜板満鍥剧墖"></el-table-column>
-        <el-table-column prop="addr" label="璁惧鍦板潃"></el-table-column>
-        <el-table-column prop="tel" label="鎶ヤ慨鐢佃瘽"></el-table-column>
-        <el-table-column label="鎿嶄綔">
-          <template slot-scope="scope">
-            <div class="operation">
-              <span @click="checkSlot(scope.row)">鏌ョ湅鎻掓Ы</span>
-            </div>
-          </template>
-        </el-table-column>-->
-      </el-table>
+          </div>
+          <div class="btns">
+            <el-button @click="findDeviceIfo" type="primary" size="small"
+              >鏌ヨ</el-button
+            >
+          </div>
+        </div>
+        <el-table
+          class="thbg"
+          :data="tableData"
+          fit
+          stripe
+          :header-cell-style="{
+            background: '#2D52D7',
+            color: '#fff',
+            height: '50px',
+          }"
+        >
+          <el-table-column
+            type="index"
+            width="240"
+            label="搴忓彿"
+          ></el-table-column>
+          <el-table-column prop="Name" label="鎻掓Ы鍚嶇О"></el-table-column>
+          <el-table-column prop="Status" label="鐘舵��">
+            <template slot-scope="scope">
+              <div>
+                <span style="color: #6297f2" v-if="scope.row.Status == 0"
+                  >绌洪棽涓�</span
+                >
+                <span style="color: #fea425" v-if="scope.row.Status == 1"
+                  >璇诲啓涓�</span
+                >
+                <span style="color: #ed663e" v-if="scope.row.Status == 2"
+                  >鎻掓Ы鏁呴殰</span
+                >
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
     </div>
     <el-dialog
       :visible="visibleOfialogAddDev"
@@ -107,28 +123,54 @@
           <el-input v-model="IP"></el-input>
         </div>
         <div slot="footer" class="btns">
-          <el-button type="primary" size="small" @click="toAddDevice">纭畾</el-button>
-          <el-button size="small" @click="visibleOfialogAddDev=false">鍙栨秷</el-button>
+          <el-button type="primary" size="small" @click="toAddDevice"
+            >纭畾</el-button
+          >
+          <el-button size="small" @click="visibleOfialogAddDev = false"
+            >鍙栨秷</el-button
+          >
         </div>
       </div>
     </el-dialog>
   </div>
 </template>
 <script>
-import { addDevice, getDeviceList, getDeviceInfo } from '@/api/shuohuang';
+import { addDevice, getDeviceList, getDeviceInfo } from "@/api/shuohuang";
 export default {
   data() {
     return {
-      actTab: 'dev1',
+      actTab: "dev1",
       devices: [],
-      generalIndicators: [{ id: 'dx', title: '璇诲啓涓�', slots: [] }, { id: 'kx', title: '绌洪棽涓�', slots: [] }, { id: 'ccgz', title: '鎻掓Ы鏁呴殰', slots: [] }],
-      deviceAddr: '',
-      deviceState: '',
+      generalIndicators: [
+        {
+          id: "dx",
+          title: "璇诲啓涓�",
+          slots: [],
+          color: "#FEA425",
+          path: "/images/shuohuang/缁� 780.png",
+        },
+        {
+          id: "kx",
+          title: "绌洪棽涓�",
+          slots: [],
+          color: "#6297F2",
+          path: "/images/shuohuang/缁� 781.png",
+        },
+        {
+          id: "ccgz",
+          title: "鎻掓Ы鏁呴殰",
+          slots: [],
+          color: "#ED663E",
+          path: "/images/shuohuang/缁� 782.png",
+        },
+      ],
+      deviceAddr: "",
+      deviceState: "",
       tableData: [],
       visibleOfialogAddDev: false,
-      Name: '',
-      IP: '',
-    }
+      Name: "",
+      IP: "",
+    };
   },
   mounted() {
     this.findDeviceList();
@@ -136,74 +178,84 @@
   methods: {
     findDeviceList() {
       let _this = this;
-      getDeviceList().then(res => {
+      getDeviceList().then((res) => {
         _this.devices = res.data;
         _this.actTab = _this.devices[0].ID;
-        _this.findDeviceIfo()
-      })
+        _this.findDeviceIfo();
+      });
     },
     findDeviceIfo() {
       let _this = this;
-      getDeviceInfo({ 
+      getDeviceInfo({
         DeviceID: this.actTab,
-        Status:this.deviceState
-        }).then(res => {
+        Status: this.deviceState,
+      }).then((res) => {
         // debugger
         _this.tableData = res.data;
         //缁熻褰撳墠鎻掓Ы鐘舵��
-        let dx = _this.generalIndicators.find(indicator => indicator.id == 'dx');
-        let kx = _this.generalIndicators.find(indicator => indicator.id == 'kx');
-        let ccgz = _this.generalIndicators.find(indicator => indicator.id == 'ccgz');
+        let dx = _this.generalIndicators.find(
+          (indicator) => indicator.id == "dx"
+        );
+        let kx = _this.generalIndicators.find(
+          (indicator) => indicator.id == "kx"
+        );
+        let ccgz = _this.generalIndicators.find(
+          (indicator) => indicator.id == "ccgz"
+        );
         dx.slots = [];
         kx.slots = [];
         ccgz.slots = [];
-        res.data.forEach(slot => {
+        res.data.forEach((slot) => {
           if (slot.Status == 0) {
-            kx.slots.push(slot)
+            kx.slots.push(slot);
           }
           if (slot.Status == 1) {
-            dx.slots.push(slot)
+            dx.slots.push(slot);
           }
           if (slot.Status == 2) {
-            ccgz.slots.push(slot)
+            ccgz.slots.push(slot);
           }
-        })
+        });
         //_this.generalIndicators
-      })
+      });
     },
     toAddDevice() {
       let _this = this;
       let params = {
         Name: this.Name,
-        IP: this.IP
-      }
-      addDevice(params).then(res => {
+        IP: this.IP,
+      };
+      addDevice(params).then((res) => {
         if (res.success) {
           this.$notify({
-            type: 'success',
-            message: res.msg
-          })
+            type: "success",
+            message: res.msg,
+          });
           _this.visibleOfialogAddDev = true;
         }
-      })
+      });
     },
     showAddDevice() {
       this.visibleOfialogAddDev = true;
-
     },
     checkTab(tab, event) {
       this.findDeviceIfo();
     },
-    checkSlot(row) {
-
-    }
-  }
-}
+    checkSlot(row) {},
+  },
+};
 </script>
 
 <style lang="scss">
 .transfer-device-manage {
-  padding: 20px;
+  // padding: 20px;
+  // .el-tabs__nav-scroll {
+  //   overflow-x: scroll;
+  // }
+  .el-tabs__nav-wrap.is-scrollable {
+    padding-right: 90px;
+  }
+
   .el-tabs__item {
     height: 45px;
     line-height: 45px;
@@ -213,48 +265,104 @@
   }
   .header-with-tab {
     position: relative;
+    background: #ffffff;
+    box-shadow: 0px 3px 6px rgba(160, 174, 230, 0.56);
+    border-radius: 10px;
+    padding: 0 35px;
+    padding-top: 15px;
+    .el-tabs__header {
+      margin: 0;
+    }
+    .el-tabs__item.is-active .label-slot .title {
+      color: #2d52d7;
+    }
     .label-slot {
       display: flex;
       align-items: center;
       padding: 0 20px;
       font-weight: bold;
+      position: relative;
+      .title {
+        font-size: 14px;
+      }
       .capsule {
-        width: 42px;
-        height: 20px;
+        width: 36px;
+        height: 18px;
         margin-left: 10px;
-        line-height: 20px;
+        line-height: 18px;
+        position: absolute;
+        text-align: center;
+        top: 0px;
         text-align: center;
         border-radius: 20px;
         font-size: 12px;
         font-weight: normal;
         color: #fff;
+        right: -20px;
         &.online {
-          background: #00a854;
+          background: #2ace7c;
         }
         &.offline {
-          background: #f04134;
+          background: #8a98b8;
         }
       }
     }
-    .btn-add-dev {
-      cursor: pointer;
-      position: absolute;
-      right: 0;
-      top: 10px;
-      color: #1890ff;
-      font-size: 14px;
-      i {
-        padding-right: 4px;
-        font-size: 16px;
-      }
+    // .btn-add-dev {
+    //   cursor: pointer;
+    //   position: absolute;
+    //   right: 25px;
+    //   top: 20px;
+    //   /* color: #1890ff; */
+    //   font-size: 16px;
+    // }
+  }
+  .t-d-content {
+    background: #fff;
+    margin-top: 20px;
+    border-radius: 10px;
+    box-shadow: 0px 3px 6px rgb(160 174 230 / 56%);
+    padding: 30px 45px;
+    button span {
+      color: #fff;
     }
   }
   .general-view {
     display: flex;
-    padding: 30px;
     .indicator {
-      flex: 1;
       position: relative;
+      background: #f4f6f9;
+      width: 263px;
+      height: 101px;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      margin-right: 50px;
+
+      .img-desc {
+        margin-right: 8px;
+
+        img {
+          width: 53px;
+        }
+      }
+      .icon-wrap {
+        display: flex;
+        flex-direction: column;
+        .icon-div {
+          background: #26d4b4;
+          width: 42px;
+          height: 42px;
+          line-height: 42px;
+
+          border-radius: 21px;
+          box-shadow: 0 0 0 8px #caf0eb;
+          margin-bottom: 10px;
+          span {
+            font-size: 32px;
+            color: #fff;
+          }
+        }
+      }
       &:not(.lastOne):after {
         content: "";
         width: 1px;
@@ -267,28 +375,43 @@
       }
       .title {
         display: flex;
-        align-items: center;
-        justify-content: center;
         font-size: 14px;
         color: #999;
-        margin-bottom: 10px;
-        .dot {
-          width: 10px;
-          height: 10px;
-          margin-right: 5px;
-          border-radius: 50%;
-          background: #01a854;
-          &.kx {
-            background: #0f77d1;
-          }
-          &.ccgz {
-            background: #f04235;
-          }
+        flex-direction: column;
+        .indicator-val {
+          font-size: 16px;
+          font-weight: bold;
         }
       }
-      .indicator-val {
-        font-size: 24px;
-      }
+    }
+  }
+  .table-area {
+    margin-top: 25px;
+    button {
+      background: #2d52d7 !important;
+      border-color: #2d52d7 !important;
+    }
+    .el-table--striped
+      .el-table__body
+      tr.el-table__row--striped
+      td.el-table__cell {
+      background: #f4f6f9;
+    }
+    th.el-table__cell > .cell {
+      color: #fff;
+    }
+    .thbg {
+      margin-top: 15px;
+      border: none;
+    }
+    .el-table__row > td {
+      border: none;
+    }
+    .el-table th.is-leaf {
+      border: none;
+    }
+    .el-table::before {
+      height: 0px;
     }
   }
   .filter-bar.flex-box {

--
Gitblit v1.8.0