Explorar el Código

autotime 5000

Changpeng Duan hace 5 años
padre
commit
88bc54792e

+ 1 - 0
src/App.vue

@@ -21,5 +21,6 @@
         -moz-osx-font-smoothing: grayscale;
         text-align: center;
         color: #2c3e50;
+        background-color: #01355B;
     }
 </style>

+ 10 - 0
src/Global.js

@@ -118,6 +118,16 @@ globaltime2String = function (time) {
     return year + "-" + month + "-" + date;
 };
 
+nonTfmtDate = function (datetime,length) {
+    if ((datetime == '') || (datetime == undefined))
+        return '';
+    if ((datetime == '1900-01-01') || (datetime == '1900-01-01 00:00:00.000'))
+        return '';
+    length = !length ? 10: length;//缺省参数
+    datetime = new Date(+new Date(datetime)+8*3600*1000).toISOString().replace(/T/g,' ').replace(/\.[\d]{3}Z/,'');
+    return datetime
+};
+
 // 校验MAC地址
 checkMac = function(val){
     var regex = "(([A-Fa-f0-9]{2}-){5}[A-Fa-f0-9]{2})|(([A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]{2})"; // 含冒号

+ 34 - 4
src/api/Navs.js

@@ -1,4 +1,35 @@
 let navs = [{
+    "clmid": "1",
+    "spclmid": "0",
+    "ordno": "1",
+    "c_level": "1",
+    "clmcode": "index",
+    "clmname": "系统首页",
+    "clmurl": "",
+    "prname": "",
+    "en": "1",
+    "show": "1",
+    "grouplist": "2,5",
+    "memo": "",
+    "icon": "icon-home",
+    "childs": [
+        {
+            "clmid": "11",
+            "spclmid": "0",
+            "ordno": "0",
+            "c_level": "2",
+            "clmcode": "icon-home",
+            "clmname": "系统首页",
+            "clmurl": "/",
+            "prname": null,
+            "en": "1",
+            "show": "1",
+            "grouplist": "2,5",
+            "memo": null,
+            "icon": "icon-home"
+        },
+    ]
+}, {
     "clmid": "2",
     "spclmid": "0",
     "ordno": "1",
@@ -45,7 +76,7 @@ let navs = [{
     "icon": "icon-list",
     "childs": [
         {
-            "clmid": "21",
+            "clmid": "31",
             "spclmid": "0",
             "ordno": "0",
             "c_level": "2",
@@ -59,7 +90,7 @@ let navs = [{
             "memo": null,
             "icon": "home_icon"
         }, {
-            "clmid": "21",
+            "clmid": "32",
             "spclmid": "0",
             "ordno": "0",
             "c_level": "2",
@@ -184,7 +215,7 @@ let navs = [{
                 "memo": null,
                 "icon": "home_icon"
             }, {
-                "clmid": "62",
+                "clmid": "63",
                 "spclmid": "0",
                 "ordno": "0",
                 "c_level": "2",
@@ -200,7 +231,6 @@ let navs = [{
             },
         ]
     },
-
 ];
 
 export default navs;

+ 23 - 0
src/api/getApiRes.js

@@ -308,3 +308,26 @@ export function GetDetectorCoords(postdata) {
     let url = headapi + 'v1/Detector/GetDetectorCoords';
     return getApiBasic(url, postdata);
 }
+// 获取全部区域选择框信息
+export function GeFullRegionSelect(postdata) {
+    // 获取检测设备坐标
+    let url = headapi + 'v1/Auth/GeFullRegionSelect';
+    return getApiBasic(url, postdata);
+}
+// 区域检测实时记录合并
+export function RegionDetDetaillist(postdata) {
+    let url = headapi + 'v1/Company/RegionDetDetaillist';
+    return getApiBasic(url, postdata);
+}
+
+// 单个设备检测实时记录合并
+export function SingleDetDetaillist(postdata) {
+    let url = headapi + 'v1/Company/SingleDetDetaillist';
+    return getApiBasic(url, postdata);
+}
+// 0-6G折线图信息传入区域Id
+export function Region06GInfolist(postdata) {
+    let url = headapi + 'v1/Detector/Region06GInfolist';
+    return getApiBasic(url, postdata);
+}
+

+ 1 - 1
src/assets/css/cube.css

@@ -62,7 +62,7 @@ em,s,i {
     right: 0;
     width:164px;
     height: 36px;
-    font-size: 18px;
+    font-size: 16px;
     line-height: 36px;
     color: #6DC1FF;
     margin: 0 auto;

+ 4 - 1
src/assets/css/panel.css

@@ -347,7 +347,7 @@
 .tabs li {
     width: 164px;
     height: 36px;
-    font-size: 18px;
+    font-size: 16px;
     line-height: 36px;
     color: #6DC1FF;
     float: left;
@@ -396,3 +396,6 @@
 .yellow {
     color:#FFDD00 ;
 }
+/deep/ .el-table__empty-text {
+    color: #015B9E;
+}

BIN
src/assets/font/UnidreamLED.ttf


+ 97 - 21
src/components/BigRader.vue

@@ -3,13 +3,13 @@
         <div class="bgCircle">
             <div class="rader animete-box">
                 <div class="dotWarning animete-1 animated heartBeat" v-if="RaderState == 1"></div>
-                <div class="dotNormal animete-2  heartBeat"></div>
-                <div class="dotNormal animete-3  heartBeat"></div>
-                <div class="dotNormal animete-4  heartBeat"></div>
                 <em class="state" v-if="RaderState == 0">区域环境安全</em>
                 <em class="warning" v-else>
                     <img src="../assets/img/main/waning.png" alt="">
                     发现可疑信号</em>
+                <div v-for="dot in dotLists" class="dotNormal  heartBeat"
+                     :style="{left:dot.x+'px',top:dot.y+'px',width:dot.s+'px',height:dot.s+'px'}"></div>
+
             </div>
             <span id="circle1"></span>
             <span id="circle2"></span>
@@ -28,28 +28,65 @@
             return {
                 seconds: 0,
                 RaderState: 0,
-                timeShow: ' 00 : 00 : 00'
+                timeShow: ' 00 : 00 : 00',
+                dotLists: [],
             }
         },
-        props: ['totalRs'],
-        watch: {
-            totalRs: function (val) {
+        props: ['totalRs','pageLevel'],
+        mounted() {
+            let that = this;
+            this.timer = setInterval(() => {
+                that.getTime();
+            }, 1000);
+        },
+        methods: {
+            createDots() {
                 let that = this;
-                this.timeShow = val.RunTime;
-                if (val.RegionDetRs) {
-                    if (val.RegionDetRs[0].WarnNum != 0) {
-                        that.RaderState = 1
-                    } else {
-                        that.RaderState = 0
-                    }
-                } else {
-                    if (val.DetRs.WarnNum != 0) {
-                        that.RaderState = 1
-                    } else {
-                        that.RaderState = 0
-                    }
+                this.dotLists = [];
+                for (var i = 0; i < 5; i++) {
+                    this.dotLists.push({
+                        x: that.getRandomInt(50, 240),
+                        y: that.getRandomInt(10, 110),
+                        s: that.getRandomInt(3, 10),
+                    })
+                }
+            },
+            getRandomInt(min, max) {
+                return Math.floor(Math.random() * (max - min + 1)) + min;
+            },
+            getTime() {
+                let date = new Date();
+                let year = date.getFullYear();
+                let month = date.getMonth() + 1;
+                let strDate = date.getDate();
+                let Hours = date.getHours();
+                let Minutes = date.getMinutes();
+                let Seconds = date.getSeconds();
+                if (month >= 1 && month <= 9) {
+                    month = "0" + month;
+                }
+                if (strDate >= 0 && strDate <= 9) {
+                    strDate = "0" + strDate;
+                }
+                if (Hours >= 0 && Hours <= 9) {
+                    Hours = "0" + Hours;
+                }
+                if (Minutes >= 0 && Minutes <= 9) {
+                    Minutes = "0" + Minutes;
+                }
+                if (Seconds >= 0 && Seconds <= 9) {
+                    Seconds = "0" + Seconds;
                 }
 
+                let thisdata = year + '-' + month + '-' + strDate + ' ' + Hours + ':' + Minutes + ':' + Seconds;
+                this.timeShow = thisdata;
+            }
+        },
+        watch: {
+            totalRs: function (val) {
+                let that = this;
+                that.createDots();
+                that.RaderState = val.BoolSafe;
             },
         },
     }
@@ -81,6 +118,14 @@
         display: block;
     }
 
+    .raderContianer {
+        width: 100%;
+        height: 100%;
+        overflow: hidden;
+        display: block;
+        margin: 0 auto;
+    }
+
     #circle1 {
         width: 30px;
         height: 30px;
@@ -95,7 +140,6 @@
         height: 10px;
         top: 90px;
         left: 210px;
-
     }
 
     #circle3 {
@@ -227,11 +271,42 @@
     }
 
     .dotNormal {
+        position: relative;
         width: 5px;
         height: 5px;
         background: #6DC1FF;
         background-size: 50px 50px;
         border-radius: 250px;
+        transform: scale(0.5);
+        animation: bulge 2s infinite ease-in-out;
+    }
+
+    .dotNormal::after {
+        z-index: -1;
+        transform: scale(1);
+        animation: blow 2s infinite ease-in-out;
+    }
+
+    @keyframes bulge {
+        50% {
+            transform: scale(1);
+        }
+    }
+
+    @keyframes blow {
+        25% {
+            opacity: 0.5;
+        }
+        50% {
+            opacity: 0.5;
+        }
+        90% {
+            opacity: 0;
+        }
+        100% {
+            transform: scale(2);
+            opacity: 0;
+        }
     }
 
     .animete-1 {
@@ -469,6 +544,7 @@
         color: #FFDD00;
         text-align: center;
         font-size: 16px;
+        z-index: 6666;
     }
 
     .warning img {

+ 45 - 2
src/components/Console.vue

@@ -8,6 +8,10 @@
             <div class="other-people-title">
                 控制台
             </div>
+            <div class="lte_panel">
+                <i class="el-icon-caret-left" @click="hidePanel" v-if="panelState == 0"></i>
+                <i class="el-icon-caret-right" @click="showPanel" v-if="panelState == 1"></i>
+            </div>
             <div class="cslist cubeContent">
                 <div :class="[{'cstitle':true},{'active':cstitle}]" @click="ClickGetInfo(0,0)">
                     安全监控首页
@@ -61,7 +65,6 @@
                     </el-row>
                 </div>
             </div>
-
         </div>
     </div>
 </template>
@@ -82,6 +85,7 @@
                 manageIndex: 0,
                 RoomIndex: 0,
                 equipIndex: 0,
+                panelState: 0,
                 cstitle: false,
             };
         },
@@ -94,6 +98,7 @@
                 // 切换到选中
                 this.loftIndex = 0;
                 this.manageIndex = 0;
+                this.RoomIndex = 0;
                 this.equipIndex = 0;
                 this.cstitle = false;
                 let thisBtn = {};
@@ -186,6 +191,14 @@
                 GetRegionAndDectorSelect(postdata).then(res => {
                     let json = res;
                     if (json.Code == 0) {
+                        if (!json.Region1Rs) {
+                            that.$message.error('区域列表为空,请先添加可用区域');
+                            return false
+                        }
+                        if (!json.DectectorRs) {
+                            that.$message.error('设备列表为空,请先添加可用设备');
+                            return false
+                        }
                         that.loftList = json.Region1Rs;//所有1级
                         that.manageList = json.Region2Rs;//所有2级
                         that.RoomList = json.Region3Rs;//所有3级
@@ -203,7 +216,15 @@
                         }
                     }
                 })
-            }
+            },
+            hidePanel() {
+                this.panelState = 1;
+                this.$emit('refresWidth', 1);
+            },
+            showPanel() {
+                this.panelState = 0;
+                this.$emit('refresWidth', 0);
+            },
         }
     }
 </script>
@@ -257,6 +278,12 @@
         font-size: 12px;
     }
 
+    .cspart .bg-purple:hover {
+        background: #0162AA;
+        border-color: #6DC1FF;
+        color: #6DC1FF
+    }
+
     .active {
         background: #0162AA;
         border-color: #6DC1FF;
@@ -266,4 +293,20 @@
     .bg-purple {
         overflow: hidden;
     }
+
+    .lte_panel {
+        position: relative;
+        left: -15px;
+        width: 10%;
+        float: left;
+        display: none;
+    }
+
+    /*响应式调整*/
+    @media only screen and (max-width: 1600px) {
+        .lte_panel {
+            display: block;
+        }
+    }
+
 </style>

+ 1 - 1
src/components/EquipInfo.vue

@@ -42,7 +42,7 @@
                         <div class="ringCircle">
                             <Ring></Ring>
                         </div>
-                        <em>{{info.Warninglog_todaycount}}</em>
+                        <em>{{info.Warninglog_todaycount}}</em>
                         <span>当日报警数</span>
                     </li>
                     <li>

+ 3 - 2
src/components/Headside.vue

@@ -1,7 +1,7 @@
 <template>
     <div id="headside">
         <nav class="navbar user-info-navbar" role="navigation">
-            <i :class="[{'icon-head':true},{'iconleft':left_panel_state}]" @click="left_hide"></i>
+            <!--<i :class="[{'icon-head':true},{'iconleft':left_panel_state}]" @click="left_hide"></i>-->
             <div class="watching">
                 <i class="dot"></i>
                 <em>检测中</em>
@@ -143,7 +143,7 @@
         height: 41px;
         border: 0;
         padding: 0;
-        margin-bottom: 0px;
+        margin-bottom: 0;
     }
 
     .user-info-navbar .user-info-menu > li > a {
@@ -546,4 +546,5 @@
         background: url("../assets/img/icon/user.png") top center no-repeat;
         background-size: 100%;
     }
+
 </style>

+ 84 - 59
src/components/HistoryRecord.vue

@@ -6,17 +6,19 @@
             <div class="image-border image-border3"></div>
             <div class="image-border image-border4"></div>
             <div class="other-people-title">
-                历史监测记录
+                实时监测详情
             </div>
             <el-table
                     :data="tableData"
                     stripe
-                    :default-sort = "{prop: 'date', order: 'descending'}"
+                    :default-sort="{prop: 'date', order: 'descending'}"
                     style="width: 100%">
                 <el-table-column
                         prop="Name"
                         label="名称"
-                        width="140">
+                        width="140"
+                        align="center"
+                >
                     <template slot-scope="scope">
                         <i :class="[{'blue':scope.row.DangerLevel == -1},{'yellow':scope.row.DangerLevel != -1}]"></i>
                         <el-tooltip class="item" effect="dark" :content="scope.row.Name" placement="top-start">
@@ -35,7 +37,7 @@
                 </el-table-column>
                 <el-table-column
                         prop="Location"
-                        label="地点"
+                        label="位置"
                         width="">
                     <template slot-scope="scope">
                         <el-tooltip class="item" effect="dark" :content="scope.row.Location" placement="top-start">
@@ -51,12 +53,14 @@
                 </el-table-column>
             </el-table>
             <br>
-            <el-pagination
-                    background
-                    :total="pageination.total"
-                    :page-size="pageination.pageItem"
-                    @current-change="pageChange"
-            ></el-pagination>
+            <div v-show="allTableData.length != 0">
+                <el-pagination
+                        background
+                        :total="pageination.total"
+                        :page-size="pageination.pageItem"
+                        @current-change="pageChange"
+                ></el-pagination>
+            </div>
         </div>
     </div>
 </template>
@@ -90,10 +94,11 @@
         watch: {
             historyRs: function (val) {
                 this.loading = false;
-                if(!val.Rs){
+
+                if (!val.Rs) {
                     this.allTableData = [];
                     this.recordsTotal = 0;
-                }else{
+                } else {
                     this.allTableData = val.Rs;
                     this.recordsTotal = val.Rs.length;
                 }
@@ -103,53 +108,53 @@
             },
         },
         methods: {
-        // 设置分页数据
-        setPaginations() {
-            // 分页属性
-            let that = this;
-            that.pageination.total = that.recordsTotal;
-            // 默认分页
-            that.tableData = that.allTableData.filter((item, index) => {
-                return index < that.pageination.pageItem;
-            });
-        },
-        // 每页显示数量
-        handleSizeChange() {
-            let that = this;
-            that.tableData = that.allTableData.filter((item, index) => {
-                return index < that.pageination.pageItem;
-            });
-            that.draw = that.pageination.pageItem;
-        },
-        // 翻页
-        pageChange(pageIndex) {
-            let that = this;
-            // 获取当前页
-            let index = that.pageination.pageItem * (pageIndex - 1);
-            // 数据总数
-            let nums = that.pageination.pageItem * pageIndex;
-            // 容器
-            let tables = [];
-            for (var i = index; i < nums; i++) {
-                if (that.allTableData[i]) {
-                    tables.push(that.allTableData[i])
+            // 设置分页数据
+            setPaginations() {
+                // 分页属性
+                let that = this;
+                that.pageination.total = that.recordsTotal;
+                // 默认分页
+                that.tableData = that.allTableData.filter((item, index) => {
+                    return index < that.pageination.pageItem;
+                });
+            },
+            // 每页显示数量
+            handleSizeChange() {
+                let that = this;
+                that.tableData = that.allTableData.filter((item, index) => {
+                    return index < that.pageination.pageItem;
+                });
+                that.draw = that.pageination.pageItem;
+            },
+            // 翻页
+            pageChange(pageIndex) {
+                let that = this;
+                // 获取当前页
+                let index = that.pageination.pageItem * (pageIndex - 1);
+                // 数据总数
+                let nums = that.pageination.pageItem * pageIndex;
+                // 容器
+                let tables = [];
+                for (var i = index; i < nums; i++) {
+                    if (that.allTableData[i]) {
+                        tables.push(that.allTableData[i])
+                    }
+                    this.tableData = tables;
                 }
-                this.tableData = tables;
-            }
-            that.start = index * that.draw;
-        },
-        // 自动排序
-        sortChange(params) {
-            console.log(params)
-        },
-        // 过滤时间
-        filterFmtDate(value, row, column) {
-            let that = this;
-            return globalfmtDate(column, 10);
-        },
-        // 过滤金额
-    }
-    ,
+                that.start = index * that.draw;
+            },
+            // 自动排序
+            sortChange(params) {
+                console.log(params)
+            },
+            // 过滤时间
+            filterFmtDate(value, row, column) {
+                let that = this;
+                return globalfmtDate(column, 10);
+            },
+            // 过滤金额
+        }
+        ,
     }
 </script>
 
@@ -250,7 +255,12 @@
         padding: 3px;
     }
 
-    /deep/ .el-table td, .el-table th {
+
+    /deep/ .el-table th {
+        padding: 3px 0;
+    }
+
+    /deep/ .el-table td {
         padding: 6px 0;
     }
 
@@ -280,4 +290,19 @@
         background: #FFDD00;
         border-radius: 250px;
     }
+
+    /deep/ .el-table .sort-caret {
+        color: #6DC1FF !important;
+    }
+
+    /deep/ .el-table__empty-text {
+        color: #015B9E;
+    }
+    /deep/ .el-pagination.is-background .btn-next,
+    /deep/ .el-pagination.is-background .btn-prev {
+        background: #002540;
+    }
+    /deep/ .el-pagination.is-background .el-pager li {
+        background:#002540 ;
+    }
 </style>

+ 0 - 23
src/components/Map.vue

@@ -1,23 +0,0 @@
-<template>
-    <div class="amap-wrapper">
-        <el-amap class="amap-box" :vid="'amap-vue'"></el-amap>
-    </div>
-</template>
-
-<script>
-    export default {
-        data () {
-            return {
-                msg: 'vue-amap向你问好!'
-            }
-        }
-    }
-    // 更多配置 参阅https://elemefe.github.io/vue-amap/#/zh-cn/coverings/marker
-</script>
-
-<style scoped>
-    .amap-wrapper {
-        width: 500px;
-        height: 500px;
-    }
-</style>

+ 37 - 23
src/components/Navside.vue

@@ -14,10 +14,10 @@
                         router
                         :collapse="isCollapse"
                 >
-                    <el-menu-item class="el-submenu" index="1" route="/" title="系统首页">
-                        <i class="icon-home"></i>
-                        <span slot="title">系统首页</span>
-                    </el-menu-item>
+                    <!--<el-menu-item class="el-submenu" index="1" route="/" title="系统首页">-->
+                    <!--<i class="icon-home"></i>-->
+                    <!--<span slot="title">系统首页</span>-->
+                    <!--</el-menu-item>-->
                     <el-submenu :index="nav.clmid" :route="nav.clmurl" v-for="nav in navs">
                         <template slot="title">
                             <i :class="nav.icon"></i>
@@ -28,10 +28,16 @@
                             </el-menu-item>
                         </el-menu-item-group>
                     </el-submenu>
-                    <el-menu-item index="99" route="#" title="退出登陆" @click="clickLogout">
-                        <i class="icon-logout"></i>
-                        <span slot="title">退出登陆</span>
-                    </el-menu-item>
+                    <el-submenu index="99">
+                        <template slot="title">
+                            <i class="icon-logout"></i>
+                            <span>退出登陆</span>
+                        </template>
+                        <el-menu-item-group>
+                            <el-menu-item @click="clickLogout">退出登陆
+                            </el-menu-item>
+                        </el-menu-item-group>
+                    </el-submenu>
                 </el-menu>
             </el-col>
         </el-row>
@@ -40,6 +46,7 @@
 <script>
     import Navs from '../api/Navs';
     import {SignOut} from '../api/getApiRes.js'
+
     let qs = require('qs');
     export default {
         data() {
@@ -79,15 +86,15 @@
                     type: 'warning'
                 }).then(() => {
                     SignOut(postdata).then(res => {
-                            that.$message({
-                                showClose: true,
-                                message: '用户已退出!',
-                                type: 'success'
-                            });
-                            localStorage.usercode = '';
-                            localStorage.token = '';
-                            that.$router.push({path: '/login', query: {status: 1}});
-                        })
+                        that.$message({
+                            showClose: true,
+                            message: '用户已退出!',
+                            type: 'success'
+                        });
+                        localStorage.usercode = '';
+                        localStorage.token = '';
+                        that.$router.push({path: '/login', query: {status: 1}});
+                    })
                 }).catch(() => {
                     this.$message({
                         type: 'info',
@@ -152,7 +159,7 @@
         font-size: 14px;
         cursor: pointer;
         height: 56px;
-        line-height: 56px;
+        /*line-height: 56px;*/
     }
 
     .logout:hover {
@@ -183,16 +190,16 @@
 
     .icon-list {
         width: 18px;
-        height: 18px;
+        height: 22px;
         float: left;
         margin-top: 20px;
         background: url("../assets/img/icon/list.png") top center no-repeat;
-        background-size: 100%;
+        background-size: 100% 100%;
     }
 
     .icon-equip {
         width: 18px;
-        height: 18px;
+        height: 22px;
         float: left;
         margin-top: 20px;
         background: url("../assets/img/icon/equip.png") top center no-repeat;
@@ -225,8 +232,15 @@
         background: url("../assets/img/icon/logout.png") top center no-repeat;
         background-size: 100%;
     }
+
     /deep/ .el-menu-item-group .el-menu-item {
-        height: 25px!important;
-        line-height: 25px!important;
+        height: 25px !important;
+        line-height: 25px !important;
     }
+
+    /deep/ .el-menu-item {
+        height: 30px;
+        line-height: 20px;
+    }
+
 </style>

+ 3 - 3
src/components/Room.vue

@@ -7,7 +7,7 @@
             <div class="RoomBg">
                 <ul>
                     <li :class="{'active':p.DetectorWarnNum != 0}" v-for="p in loftPoints"
-                        :style="{ left: p.DetselfInfo.Width+'PX', top: p.DetselfInfo.Height+'PX'}" @click="seeDet(p)">
+                        :style="{ left: p.DetselfInfo.Width*0.8+'PX', top: p.DetselfInfo.Height+'PX'}" @click="seeDet(p)">
                         <em><i></i>{{p.DetselfInfo.TagName}}</em></li>
                 </ul>
             </div>
@@ -99,8 +99,8 @@
     }
 
     .RoomBg li i {
-        width: 22px;
-        height: 22px;
+        width: 14px;
+        height: 14px;
         float: left;
         text-align: center;
         line-height: 22px;

+ 1 - 3
src/components/Scan.vue

@@ -24,9 +24,7 @@
                 loading: true,
                 chartData: {
                     columns: ['X', 'Y'],
-                    rows: [
-                        // {'页面': '1.0M', '访问量': 123},
-                    ]
+                    rows: []
                 },
                 chartExtend: {
                     color: ['#4ad2ff'],

+ 35 - 9
src/components/SingleEquipInfo.vue

@@ -11,7 +11,7 @@
             <div class="timePart">
                 <div class="lt">
                     <h5>设备运行时间 <s>EQUIP ACTIVE TIME</s></h5>
-                    <P>{{time|fmtDate}}</P>
+                    <P>{{time}}</P>
                     <span><s>可疑事件 WARNING EVENT</s>  <em>{{dangerItem }}</em></span>
                     <ul>
                         <li>
@@ -64,11 +64,17 @@
             }
         },
         props: ['totalRs'],
+        mounted() {
+            let that = this;
+            this.timer = setInterval(() => {
+                that.getTime();
+            }, 1000);
+        },
         watch: {
             totalRs: function (val) {
                 let that = this;
                 that.state = val.DetRs.WarnString == '检测安全';
-                that.time = val.DetRs.Dettime;
+                // that.time = val.DetRs.Dettime;
                 that.dangerItem = val.DetRs.WarnNum;
             },
         },
@@ -94,6 +100,25 @@
                 this.state = Math.floor(Math.random() * 2) == 2;
                 this.i = Math.floor(Math.random() * 3);
             },
+            getTime() {
+                let that = this;
+                let date = new Date();
+                let Hours = date.getHours();
+                let Minutes = date.getMinutes();
+                let Seconds = date.getSeconds();
+                if (Hours >= 0 && Hours <= 9) {
+                    Hours = "0" + Hours;
+                }
+                if (Minutes >= 0 && Minutes <= 9) {
+                    Minutes = "0" + Minutes;
+                }
+                if (Seconds >= 0 && Seconds <= 9) {
+                    Seconds = "0" + Seconds;
+                }
+
+                let thisdata = Hours + ':' + Minutes + ':' + Seconds;
+                that.time = thisdata;
+            }
         },
     }
 </script>
@@ -164,24 +189,24 @@
         margin: 0 auto;
         font-size: 16px;
         font-weight: normal;
-        color:#6DC1FF;
+        color: #6DC1FF;
         text-align: left;
     }
 
     .timePart .lt s {
-        font-size: 12px;
+        font-size: 14px;
     }
 
     .timePart .lt p {
         width: 100%;
+        height: 83px;
         overflow: hidden;
         display: block;
         margin: 0 auto;
-        font-size: 72px;
-        color:#6DC1FF;
+        font-size: 68px;
+        color: #6DC1FF;
         text-align: left;
         font-family: UniDreamLED;
-        letter-spacing: 1px;
     }
 
     .timePart .lt span {
@@ -190,9 +215,10 @@
         display: block;
         margin: 0 auto;
         font-size: 24px;
-        color:#6DC1FF;
+        color: #6DC1FF;
         text-align: right;
-
+        line-height: 20px;
+        padding-bottom: 5px;
     }
 
     .timePart .lt span em {

+ 66 - 16
src/components/SmallRader.vue

@@ -3,9 +3,8 @@
         <div class="bgCircle">
             <div class="rader animete-box">
                 <div class="dotWarning animete-1 animated heartBeat" v-if="RaderState == 1"></div>
-                <div class="dotNormal animete-2  heartBeat"></div>
-                <div class="dotNormal animete-3  heartBeat"></div>
-                <div class="dotNormal animete-4  heartBeat"></div>
+                <div v-show="dotLists" v-for="dot in dotLists" :key="dot.id" class="dotNormal  heartBeat"
+                     :style="{left:dot.x+'px',top:dot.y+'px',width:dot.s+'px',height:dot.s+'px'}"></div>
             </div>
             <span id="circle1"></span>
             <span id="circle2"></span>
@@ -16,7 +15,7 @@
             {{timeShow}}
         </div>
         <em class="state" v-if="RaderState == 0">区域环境安全</em>
-            <em class="warning" v-if="RaderState != 0"><img src="../assets/img/main/waning.png" alt="">发现可疑信号</em>
+        <em class="warning" v-if="RaderState != 0"><img src="../assets/img/main/waning.png" alt="">发现可疑信号</em>
     </div>
 </template>
 
@@ -27,23 +26,66 @@
                 seconds: 0,
                 show: true,
                 RaderState: 0,
-                timeShow: ' 00 : 00 : 00'
+                timeShow: ' 00 : 00 : 00',
+                dotLists: [],
             }
         },
-
         props: ['totalRs'],
-        watch: {
-            totalRs: function (val) {
+        mounted() {
+            let that = this;
+            this.timer = setInterval(() => {
+                that.getTime();
+            }, 1000);
+        },
+        methods: {
+            createDots() {
                 let that = this;
-                this.timeShow = val.RunTime;
-                if(!val.RegionDetRs){
-                    return false
+                this.dotLists = [];
+                for (var i = 0; i < 5; i++) {
+                    this.dotLists.push({
+                        x: that.getRandomInt(20, 120),
+                        y: that.getRandomInt(10, 110),
+                        s: that.getRandomInt(3, 10),
+                        id: i,
+                    })
+                }
+            },
+            getRandomInt(min, max) {
+                return Math.floor(Math.random() * (max - min + 1)) + min;
+            },
+            getTime() {
+                let date = new Date();
+                let year = date.getFullYear();
+                let month = date.getMonth() + 1;
+                let strDate = date.getDate();
+                let Hours = date.getHours();
+                let Minutes = date.getMinutes();
+                let Seconds = date.getSeconds();
+                if (month >= 1 && month <= 9) {
+                    month = "0" + month;
+                }
+                if (strDate >= 0 && strDate <= 9) {
+                    strDate = "0" + strDate;
+                }
+                if (Hours >= 0 && Hours <= 9) {
+                    Hours = "0" + Hours;
+                }
+                if (Minutes >= 0 && Minutes <= 9) {
+                    Minutes = "0" + Minutes;
                 }
-                if (val.RegionDetRs[0].WarnNum != 0) {
-                    that.RaderState = 1
-                } else {
-                    that.RaderState = 0
+                if (Seconds >= 0 && Seconds <= 9) {
+                    Seconds = "0" + Seconds;
                 }
+
+                let thisdata = year + '-' + month + '-' + strDate;
+                this.timeShow = thisdata;
+            }
+        },
+        watch: {
+            totalRs: function (val) {
+                let that = this;
+                that.createDots();
+                that.RaderState = val.BoolSafe;
             },
         },
     }
@@ -223,11 +265,20 @@
     }
 
     .dotNormal {
+        position: relative;
         width: 5px;
         height: 5px;
         background: #6DC1FF;
         background-size: 50px 50px;
         border-radius: 250px;
+        transform: scale(0.5);
+        animation: bulge 2s infinite ease-in-out;
+    }
+
+    .dotNormal::after {
+        z-index: -1;
+        transform: scale(1);
+        animation: blow 2s infinite ease-in-out;
     }
 
     .animete-1 {
@@ -456,7 +507,6 @@
         color: #FFDD00;
         text-align: center;
         font-size: 16px;
-        /*animation: warn 3s infinite;*/
     }
 
     .warning img {

+ 75 - 18
src/components/Watching.vue

@@ -1,13 +1,20 @@
 <template>
     <div class="watching">
         <ul>
-            <li v-for="l in list" :class="{'yellow':l.WarnNum != 0}">
+            <li v-if="safeNow">
+                <span></span>
+                <em>
+                    <i>当前环境暂时安全</i>
+                </em>
+            </li>
+            <li v-for="(l,index) in list" :class="{'yellow':l.WarnNum != 0}" :key="index">
                 <span> {{l.Dettime |fmtDate }}</span>
                 <em>
                     <i v-if="l.RegionName">{{l.RegionName}}</i>
                     <i v-if="l.DectectorName">{{l.DectectorName}}</i>
                     {{l.WarnString}}</em>
             </li>
+
             <div class="notips" v-show="!list">
                 暂无数据,等待探查信号源
             </div>
@@ -21,42 +28,50 @@
             return {
                 list: [],
                 readyList: [],
+                allLines: 18,
+                currentLine: 0,
+                listState: false,
+                safeNow: false,
             }
         },
-        props: ['totalRs'],
+        props: ['totalRs','pageLevel'],
         methods: {
             wordDisplay(word) {
-                let index = 0;
                 let that = this;
-                    setTimeout(function () {
-                        if(!word) {
-                            return false
+                if (!word) {
+                    // 当前环境暂时安全
+                    that.safeNow = true;
+                    return false
+                } else {
+                    that.safeNow = false;
+                    for (var i = 0; i < word.length; i++) {
+                        that.list.unshift(word[i]);
+                        if (that.list.length > 18) {
+                            that.list.pop()
                         }
-                        that.list.unshift(word[index]);
-                        index = index + 1 ;
-                    }, 300);
-            }
+                    }
+                }
+            },
         },
         watch: {
             totalRs: function (val) {
                 let that = this;
-                // that.list = [];
                 that.readyList = [];
                 // 逐行显示
-                if(val.RegionDetRs){
+                // 操作层级为4是单独设备
+                if (parseInt(this.pageLevel) != 4) {
                     that.wordDisplay(val.RegionDetRs);
-                }
-                if(val.DetRs){
+                }else{
                     that.wordDisplay([val.DetRs]);
                 }
             },
         },
         filters: {
             fmtDate: function (value) {
-                if(!value){
+                if (!value) {
                     return '---';
-                }else{
-                    return value.substr(11,8);
+                } else {
+                    return value.substr(11, 8);
                 }
             }
         }
@@ -75,6 +90,7 @@
         width: 100%;
         height: 345px;
         overflow: hidden;
+        overflow-y: scroll;
         display: block;
         margin: 0 auto;
     }
@@ -87,17 +103,58 @@
         background: rgba(0, 107, 184, 0.2);
         font-size: 14px;
         color: #6DC1FF;
-        text-align: left;
+        /*text-align: left;*/
         overflow: hidden;
         margin-bottom: 5px;
     }
 
+    .watching li em {
+        float: left;
+        text-align: left;
+    }
+
     .watching li span {
+        width: 50px;
+        float: left;
         font-family: UnidreamLED;
         font-size: 16px;
         margin-right: 10px;
+        text-justify: distribute-all-lines; /*ie6-8*/
+        text-align-last: justify; /* ie9*/
+        -moz-text-align-last: justify; /*ff*/
+        -webkit-text-align-last: justify; /*chrome 20+*/
+        text-align: justify;
     }
+
     .watching li.yellow {
         color: #FFDD00;
     }
+
+    .watching ul::-webkit-scrollbar { /*滚动条整体样式*/
+
+        width: 10px; /*高宽分别对应横竖滚动条的尺寸*/
+
+        height: 1px;
+
+    }
+
+    .watching ul::-webkit-scrollbar-thumb { /*滚动条里面小方块*/
+
+        border-radius: 10px;
+
+        -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+
+        background: #01355B;
+
+    }
+
+    .watching ul::-webkit-scrollbar-track { /*滚动条里面轨道*/
+
+        -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+
+        border-radius: 10px;
+
+        background: none;
+
+    }
 </style>

+ 1 - 1
src/components/dialog_referrer_list.vue

@@ -216,7 +216,7 @@
         margin: 0 auto;
         margin-top: 10px;
         text-align: center;
-        font-size: 22px;
+        font-size: 16px;
         cursor: pointer;
         color: #6DC1FF;
         font-weight: normal;

+ 72 - 13
src/components/runTimeRecord.vue

@@ -9,10 +9,23 @@
                 实时监测
             </div>
             <ul>
-                <li v-for="l in list" :class="{'yellow':l.WarnNum != 0}">
-                    <span> {{l.Dettime|fmtDate}}</span>
-                    <em>{{l.RegionName}} {{l.WarnString}}</em>
+                <li v-if="safeNow">
+                    <span></span>
+                    <em>
+                        <i>当前环境暂时安全</i>
+                    </em>
                 </li>
+                <li v-for="(l,index) in list" :class="{'yellow':l.WarnNum != 0}" :key="index">
+                    <span> {{l.Dettime |fmtDate }}</span>
+                    <em>
+                        <i v-if="l.RegionName">{{l.RegionName}}</i>
+                        <i v-if="l.DectectorName">{{l.DectectorName}}</i>
+                        {{l.WarnString}}</em>
+                </li>
+
+                <div class="notips" v-show="!list">
+                    暂无数据,等待探查信号源
+                </div>
             </ul>
         </div>
     </div>
@@ -24,27 +37,43 @@
         data() {
             return {
                 list: [],
+                readyList: [],
+                allLines: 18,
+                currentLine: 0,
+                listState: false,
+                safeNow: false,
             }
         },
-        props: ['totalRs'],
+        props: ['totalRs','pageLevel'],
         watch: {
             totalRs: function (val) {
                 let that = this;
-                that.wordDisplay(val.RegionDetRs);
+                that.readyList = [];
+                // 逐行显示
+                // 操作层级为4是单独设备
+                if (parseInt(this.pageLevel) != 4) {
+                    that.wordDisplay(val.RegionDetRs);
+                }else{
+                    that.wordDisplay([val.DetRs]);
+                }
             },
         },
         methods: {
             wordDisplay(word) {
-                let index = 0;
                 let that = this;
-                setTimeout(function () {
-                    if(!word) {
-                        return false
+                if (!word) {
+                    // 当前环境暂时安全
+                    that.safeNow = true;
+                    return false
+                } else {
+                    for (var i = 0; i < word.length; i++) {
+                        that.list.unshift(word[i]);
+                        if (that.list.length > 18) {
+                            that.list.pop()
+                        }
                     }
-                    that.list.unshift(word[index]);
-                    index = index + 1 ;
-                }, 800);
-            }
+                }
+            },
         },
         filters: {
             fmtDate: function (value) {
@@ -68,7 +97,9 @@
 
     .runTimeRecord ul {
         width: 100%;
+        height: 415px;
         overflow: hidden;
+        overflow-y: scroll;
         display: block;
         margin: 0 auto;
         margin-top: 50px;
@@ -100,4 +131,32 @@
      li.yellow {
         color: #FFDD00;
     }
+
+    .runTimeRecord ul::-webkit-scrollbar { /*滚动条整体样式*/
+
+        width: 10px; /*高宽分别对应横竖滚动条的尺寸*/
+
+        height: 1px;
+
+    }
+
+    .runTimeRecord ul::-webkit-scrollbar-thumb { /*滚动条里面小方块*/
+
+        border-radius: 10px;
+
+        -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+
+        background: #01355B;
+
+    }
+
+    .runTimeRecord ul::-webkit-scrollbar-track { /*滚动条里面轨道*/
+
+        -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+
+        border-radius: 10px;
+
+        background: none;
+
+    }
 </style>

+ 103 - 0
src/components/runTimeRecord2.vue

@@ -0,0 +1,103 @@
+<template>
+    <div class="runTimeRecord">
+        <div class="other-people">
+            <div class="image-border image-border1"></div>
+            <div class="image-border image-border2"></div>
+            <div class="image-border image-border3"></div>
+            <div class="image-border image-border4"></div>
+            <div class="other-people-title">
+                实时监测
+            </div>
+            <ul>
+                <li v-for="l in list" :class="{'yellow':l.WarnNum != 0}">
+                    <span> {{l.Dettime|fmtDate}}</span>
+                    <em>{{l.RegionName}} {{l.WarnString}}</em>
+                </li>
+            </ul>
+        </div>
+    </div>
+</template>
+
+<script>
+    import {Watching} from '../api/getApiRes.js'
+    export default {
+        data() {
+            return {
+                list: [],
+            }
+        },
+        props: ['totalRs'],
+        watch: {
+            totalRs: function (val) {
+                let that = this;
+                that.wordDisplay(val.RegionDetRs);
+            },
+        },
+        methods: {
+            wordDisplay(word) {
+                let index = 0;
+                let that = this;
+                setTimeout(function () {
+                    if(!word) {
+                        return false
+                    }
+                    that.list.unshift(word[index]);
+                    index = index + 1 ;
+                }, 800);
+            }
+        },
+        filters: {
+            fmtDate: function (value) {
+                if(!value){
+                    return '---';
+                }else{
+                    return value.substr(11,8);
+                }
+            }
+        }
+    }
+</script>
+
+<style scoped>
+    .runTimeRecord {
+        width: 100%;
+        overflow: hidden;
+        display: block;
+        margin: 0 auto;
+    }
+
+    .runTimeRecord ul {
+        width: 100%;
+        overflow: hidden;
+        display: block;
+        margin: 0 auto;
+        margin-top: 50px;
+    }
+
+    .runTimeRecord li {
+        height: 34px;
+        line-height: 34px;
+        padding-left: 20px;
+        padding-right: 10px;
+        background: rgba(0, 107, 184, 0.2);
+        font-size: 14px;
+        color: #6DC1FF;
+        text-align: left;
+        overflow: hidden;
+        margin-bottom: 5px;
+    }
+
+    .runTimeRecord li span {
+        font-family: UnidreamLED;
+        font-size: 16px;
+        margin-right: 10px;
+    }
+    .other-people {
+        width: 439px;
+        height: 480px;
+        margin-left: 0;
+    }
+     li.yellow {
+        color: #FFDD00;
+    }
+</style>

+ 2 - 23
src/router/index.js

@@ -3,17 +3,9 @@ import VueRouter from 'vue-router'
 // 加载条
 import NProgress from 'nprogress'
 import 'nprogress/nprogress.css'
-import VueAMap from 'vue-amap';
 
 Vue.use(VueRouter);
-Vue.use(VueAMap);
 
-VueAMap.initAMapApiLoader({
-    key: 'your amap key',
-    plugin: ['AMap.Autocomplete', 'AMap.PlaceSearch', 'AMap.Scale', 'AMap.OverView', 'AMap.ToolBar', 'AMap.MapType', 'AMap.PolyEditor', 'AMap.CircleEditor'],
-    // 默认高德 sdk 版本为 1.4.4
-    v: '1.4.4'
-});
 
 const routes = [
     {
@@ -84,20 +76,6 @@ const routes = [
                 meta: {
                     title: "用户管理",
                 }
-            },{
-                path: '/chart',
-                name: 'Chart',
-                component: () => import('@/views/Chart.vue'),
-                meta: {
-                    title: "图表效果",
-                }
-            },{
-                path: '/test',
-                name: 'Test',
-                component: () => import('@/views/Test.vue'),
-                meta: {
-                    title: "Test",
-                }
             },{
                 path: '/aboutUs',
                 name: 'AboutUs',
@@ -177,7 +155,7 @@ const routes = [
         name: '404',
         component: () => import( '../views/404.vue')
     },
-]
+];
 
 const originalPush = VueRouter.prototype.push;
 VueRouter.prototype.push = function push(location) {
@@ -195,6 +173,7 @@ const router = new VueRouter({
 router.beforeEach((to,from,next)=>{
     NProgress.start();
     const isLogin = localStorage.token? true : false;
+
     if(to.path == '/login' || to.path == '/register'){//'login'和'register'相当于是路由白名单
         next();
     }else{

+ 113 - 79
src/views/Equip.vue

@@ -21,7 +21,7 @@
                                 <el-option
                                         v-for="item in panel.regionidOptions"
                                         :key="item.Id"
-                                        :label="item.Name"
+                                        :label="item.DisplayName"
                                         :value="item.Id">
                                 </el-option>
                             </el-select>
@@ -52,6 +52,13 @@
                     type="selection"
                     width="55">
             </el-table-column>
+            <el-table-column
+                    type="index"
+                    label="序号"
+                    width="60"
+                    sortable
+            >
+            </el-table-column>
             <el-table-column
                     prop="Mac"
                     label="Mac"
@@ -65,11 +72,12 @@
             <el-table-column
                     prop="Location"
                     label="位置"
+                    width="260"
             >
                 <template slot-scope="scope">
                     <el-tooltip class="item" effect="dark" :content="scope.row.Location" placement="top-start">
                             <span>
-                                    {{ scope.row.Location.length > 12 ?  scope.row.Location.substr(0,12)+'...' : scope.row.Location }}
+                                    {{ scope.row.Location.length > 22 ?  scope.row.Location.substr(0,22)+'...' : scope.row.Location }}
                             </span>
                     </el-tooltip>
                 </template>
@@ -107,6 +115,8 @@
                     <span v-if="scope.row.Status == 0">已禁用</span>
                     <span v-if="scope.row.Status == 1">已启用</span>
                     <span v-if="scope.row.Status == 2">已离线</span>
+                    <span v-if="scope.row.Status == 3">已返厂</span>
+                    <span v-if="scope.row.Status == 4">已离线</span>
                 </template>
             </el-table-column>
             <el-table-column
@@ -147,38 +157,39 @@
                         <label>
                             MAC地址*
                         </label>
-                        <el-input v-model="dialog.mac" @keyup.native="autoCompleteMac"></el-input>
+                        <el-input v-model="dialog.mac" @keyup.native="autoCompleteMac"
+                                  :disabled="dialog_type == 2"></el-input>
                     </el-col>
                     <el-col :span="12">
                         <label>
                             标签名*
                         </label>
-                        <el-input v-model="dialog.tagname "></el-input>
-                    </el-col>
-                    <el-col :span="12">
-                        <label>
-                            硬件版本
-                        </label>
-                        <el-input v-model="dialog.HardwareVersion "></el-input>
-                    </el-col>
-                    <el-col :span="12">
-                        <label>
-                            esp固件版本
-                        </label>
-                        <el-input v-model="dialog.FirmwareVersion "></el-input>
-                    </el-col>
-                    <el-col :span="12">
-                        <label>
-                            M4固件版本
-                        </label>
-                        <el-input v-model="dialog.FirmwareScanM4Version "></el-input>
-                    </el-col>
-                    <el-col :span="12">
-                        <label>
-                            M0固件版本
-                        </label>
-                        <el-input v-model="dialog.FirmwareScanM0Version "></el-input>
+                        <el-input v-model="dialog.tagname"></el-input>
                     </el-col>
+                    <!--<el-col :span="12">-->
+                        <!--<label>-->
+                            <!--硬件版本-->
+                        <!--</label>-->
+                        <!--<el-input v-model="dialog.HardwareVersion"></el-input>-->
+                    <!--</el-col>-->
+                    <!--<el-col :span="12">-->
+                        <!--<label>-->
+                            <!--esp固件版本-->
+                        <!--</label>-->
+                        <!--<el-input v-model="dialog.FirmwareVersion"></el-input>-->
+                    <!--</el-col>-->
+                    <!--<el-col :span="12">-->
+                        <!--<label>-->
+                            <!--M4固件版本-->
+                        <!--</label>-->
+                        <!--<el-input v-model="dialog.FirmwareScanM4Version"></el-input>-->
+                    <!--</el-col>-->
+                    <!--<el-col :span="12">-->
+                        <!--<label>-->
+                            <!--M0固件版本-->
+                        <!--</label>-->
+                        <!--<el-input v-model="dialog.FirmwareScanM0Version"></el-input>-->
+                    <!--</el-col>-->
                     <el-col :span="12">
                         <label>
                             购买来源
@@ -189,7 +200,7 @@
                         <label>
                             设备所属区域
                         </label>
-                        <el-select class="selectStyle" ref="regionlevelOne" v-model="dialog.regionlevelOneId"
+                        <el-select class="selectStyle" ref="regionlevelOne" v-model="dialog.regionId"
                                    placeholder="请选择所属区域">
                             <el-option
                                     v-for="item in dialog.regionlevelOneIdOptions"
@@ -200,20 +211,6 @@
                             </el-option>
                         </el-select>
                     </el-col>
-                    <el-col :span="12">
-                        <label>
-                            设备所属房间
-                        </label>
-                        <el-select class="selectStyle" v-model="dialog.regionId" placeholder="请选择所属房间">
-                            <el-option
-                                    v-for="item in dialog.regionIdRoomOptions"
-                                    :key="item.Id"
-                                    :label="item.Name"
-                                    :value="item.Id"
-                            >
-                            </el-option>
-                        </el-select>
-                    </el-col>
                     <el-col :span="12">
                         <label>
                             坐标说明
@@ -224,7 +221,7 @@
                         <label>
                             备注
                         </label>
-                        <el-input type="textarea" v-model="dialog.memo"></el-input>
+                        <el-input v-model="dialog.memo"></el-input>
                     </el-col>
                     <el-col :span="24">
                         <label>
@@ -255,6 +252,7 @@
         DetectorAdd,
         DetectorEdit,
         GetDetectorCoords,
+        GeFullRegionSelect,
     } from '../api/getApiRes.js'
 
     let qs = require('qs');
@@ -277,6 +275,7 @@
                     FirmwareVersion: '',
                     FirmwareScanM4Version: '',
                     FirmwareScanM0Version: '',
+                    purchasesrc: '',
                     location: '',
                     coords_memo: '',
                     memo: '',
@@ -329,19 +328,19 @@
             }
         },
         mounted() {
-            if(this.$route.query.RegionId){
+            if (this.$route.query.RegionId) {
                 this.panel.regionid = this.$route.query.RegionId;
                 this.panel.tagname = this.$route.query.TagName;
             }
 
-
             this.getTableQuery();
         },
         methods: {
             // 页面数据查询
             getTableQuery() {
                 let that = this;
-                this.getGetChildRegionSelect(0, 1);
+                // this.getGetChildRegionSelect(0, 1);
+                this.getGeFullRegionSelect();
                 that.loading = true;
                 // 查询检测设备。上级区域id,区域id必传。regionid传0,查询supregionid对应所有子区域的检测设备。 如果supregionid,regionid都传0,默认查询企业ID下所有检测设备
                 let param = {
@@ -351,7 +350,7 @@
                     comid: 1,//
                     tagname: that.panel.tagname,//标签名
                     start: 1,//
-                    tableMax: 300,//
+                    tableMax: 9999,//
                 };
                 let postdata = qs.stringify(param);
                 DetectorQuery(postdata).then(res => {
@@ -374,29 +373,38 @@
                 })
             },
             // 获取下级列表
-            getGetChildRegionSelect(regionId, level) {
+            getGeFullRegionSelect() {
                 let that = this;
                 let param = {
                     token: localStorage.token,
-                    regionId: regionId,
                 };
                 let postdata = qs.stringify(param);
-                GetChildRegionSelect(postdata).then(res => {
+                GeFullRegionSelect(postdata).then(res => {
                     let json = res;
                     if (json.Code == 0) {
-                        if (level == 1) {
-                            that.panel.regionidOptions = json.Rs;
-                            that.panel.regionidOptions.unshift({Id: 0, Name: "全部"});
-                        } else {
-                            if (json.Rs) {
-                                that.panel.regionidOptions2 = json.Rs;
-                                that.panel.regionid2 = json.Rs[0].Id;
-                            } else {
-                                that.panel.regionidOptions2 = [];
-                                that.panel.regionid2 = '';
-                            }
-
+                        if (!json.Rs) {
+                            that.$message.error('区域列表为空,请先添加有效区域');
+                            return false
                         }
+                        that.panel.regionidOptions = json.Rs;
+                        that.panel.regionidOptions.unshift({Id: 0, Name: "全部", DisplayName: "全部"});
+                    } else {
+                        that.$message.error(json.Memo);
+                    }
+                })
+            },
+            // dialog获取下级列表
+            dialoggetGeFullRegionSelect() {
+                let that = this;
+                let param = {
+                    token: localStorage.token,
+                };
+                let postdata = qs.stringify(param);
+                GeFullRegionSelect(postdata).then(res => {
+                    let json = res;
+                    if (json.Code == 0) {
+                        that.dialog.regionlevelOneIdOptions = json.Rs;
+                        that.dialog.regionId = json.Rs[0].Id;
                     } else {
                         that.$message.error(json.Memo);
                     }
@@ -493,6 +501,10 @@
                 this.dialog_state = true;
                 this.dialog_title = '添加设备';
                 this.dialog_type = 1;
+
+                // 重载地区列表
+                this.getGeFullRegionSelect();
+
                 // clear dialog
                 this.dialog.mac = '';
                 this.dialog.regionId = '';
@@ -508,7 +520,8 @@
                 this.dialog.points = [{}];
 
                 // 加载默认的平面图
-                this.dialogGetGetChildRegionSelect(0, 1);
+                // this.dialogGetGetChildRegionSelect(0, 1);
+                this.dialoggetGeFullRegionSelect()
             },
             delList() {
                 let that = this;
@@ -590,11 +603,13 @@
                 this.dialog.FirmwareVersion = row.FirmwareVersion;
                 this.dialog.FirmwareScanM4Version = row.FirmwareScanM4Version;
                 this.dialog.FirmwareScanM0Version = row.FirmwareScanM0Version;
-                this.dialog.location = row.location;
-                this.dialog.purchasesrc = row.purchasesrc;
-                this.dialog.memo = row.memo;
-                this.dialog.coords_memo = row.coords_memo;
+                this.dialog.location = row.Location;
+                this.dialog.purchasesrc = row.PurchaseSrc;
+                this.dialog.memo = row.Memo;
+                // this.dialog.coords_memo = row.coords_memo;
 
+                // 重载地区列表
+                this.getGeFullRegionSelect();
                 let param = {
                     token: localStorage.token,
                     detectorId: row.Id,
@@ -603,11 +618,12 @@
                 GetDetectorCoords(postdata).then(res => {
                     let json = res;
                     if (json.Code == 0) {
-                        if(json.Rs.length != 0){
-                            console.log(json.Rs);
+                        if (json.Rs.length != 0) {
+                            console.log(json.Rs[0]);
                             that.dialog.points = [{x: json.Rs[0].Width, y: json.Rs[0].Height}];
                             that.dialog.CoordsId = json.Rs[0].CoordsId;
-                        }else{
+                            that.dialog.coords_memo = json.Rs[0].Memo;
+                        } else {
                             that.dialog.points = [{x: 0, y: 0}];
                             that.dialog.CoordsId = 0;
                         }
@@ -622,6 +638,9 @@
                 if (text.length == 2 || text.length == 5 || text.length == 8 || text.length == 11 || text.length == 14) {
                     this.dialog.mac = this.dialog.mac.toUpperCase() + ":"
                 }
+                if (text.length > 14) {
+                    this.dialog.mac = this.dialog.mac.toUpperCase()
+                }
             },
             // 探测记录
             goPhoneRecord(row) {
@@ -730,6 +749,7 @@
                     this.$message.error('错了哦,mac格式不正确');
                     return false
                 }
+
                 if (!that.dialog.regionId) {
                     this.$message.error('错了哦,所属区域不能为空');
                     return false
@@ -827,6 +847,7 @@
                 let param = {
                     token: localStorage.token,
                     regionID: regionID,
+                    regionId: regionID,
                 };
                 let postdata = qs.stringify(param);
                 RegionPictureGetByRegionId(postdata).then(res => {
@@ -874,12 +895,13 @@
             }
         },
         watch: {
-            'dialog.regionlevelOneId': function (val) {
-                this.dialogGetGetChildRegionSelect(val, 2)
-            },
+            // 'dialog.regionlevelOneId': function (val) {
+            //     this.dialogGetGetChildRegionSelect(val, 2)
+            // },
             'dialog.regionId': function (val) {
-                this.getRegionPictureGetByRegionId(val);
-
+                if (val) {
+                    this.getRegionPictureGetByRegionId(val);
+                }
             },
         },
         components: {
@@ -905,7 +927,11 @@
     }
 
     .content {
-        padding-left: 10px;
+        width: 98%;
+        overflow: hidden;
+        display: block;
+        margin: 0 auto;
+        padding-left: 20px;
     }
 
     .selectStyle {
@@ -958,11 +984,19 @@
     }
 
     /deep/ .modal-dialog {
-        height: 880px;
-        margin-top: 0;
+        height: 680px;
+        margin-top: 20px;
     }
 
     /deep/ textarea {
         color: #6DC1FF;
     }
+
+    /deep/ .el-table__empty-text {
+        color: #015B9E;
+    }
+
+    /deep/ .el-input.is-disabled .el-input__inner {
+        background-color: #015B9E;
+    }
 </style>

+ 20 - 24
src/views/Hardware.vue

@@ -44,10 +44,10 @@
                                     </el-option>
                                 </el-select>
                             </el-col>
-                            <el-col :span="4">
-                                <em>固件版本:</em>
-                                <el-input v-model="panel.keyword" placeholder="请输入固件版本"></el-input>
-                            </el-col>
+                            <!--<el-col :span="4">-->
+                                <!--<em>固件版本:</em>-->
+                                <!--<el-input v-model="panel.keyword" placeholder="请输入固件版本"></el-input>-->
+                            <!--</el-col>-->
                             <el-col :span="4">
                                 <el-button size="small" type="primary" @click="query">查询</el-button>
                             </el-col>
@@ -59,7 +59,9 @@
                 <!--<el-button size="small" type="primary" @click="startUpdate">开始更新</el-button>-->
                 <div class="version">
                     <em>NEW </em>
-                    <span>最新固件版本:M0固件:v{{FirmwareScanM0Version}}   M4固件: v{{FirmwareScanM4Version}}   esp固件 :v{{FirmwareVersion}} </span>
+                    <span>最新固件版本:M0固件:v{{FirmwareScanM0Version}}</span>
+                    <span>M4固件: v{{FirmwareScanM4Version}}</span>
+                    <span>ESP固件 :v{{FirmwareVersion}}</span>
                 </div>
                 <!--<el-tooltip class="item" effect="dark" content="一键更新全部设备固件" placement="top">-->
                 <!--<i class="question"></i>-->
@@ -68,7 +70,7 @@
 
                 <el-upload
                         class="upload-demo"
-                        action="/api/v1/AdminSettings/FirmwareUpdate"
+                        :action="FirmwareUpdateUrl"
                         :on-change="handleChange"
                         :on-success="successResave"
                         :before-upload="handleupload"
@@ -118,7 +120,7 @@
                 </el-table-column>
                 <el-table-column
                         prop="FirmwareVersion"
-                        label="esp固件"
+                        label="ESP固件"
                 >
                 </el-table-column>
                 <el-table-column
@@ -220,6 +222,7 @@
     export default {
         data() {
             return {
+                FirmwareUpdateUrl: headapi + 'v1/AdminSettings/FirmwareUpdate',
                 FirmwareScanM0Version: '',
                 FirmwareScanM4Version: '',
                 FirmwareVersion: '',
@@ -303,7 +306,7 @@
                     comid: 1,//
                     tagname: that.panel.tagname,//标签名
                     start: 1,//
-                    tableMax: 300,//
+                    tableMax: 9999,//
                 };
                 let postdata = qs.stringify(param);
                 DetectorQuery(postdata).then(res => {
@@ -443,7 +446,7 @@
                     this.tableData = tables;
                 }
                 that.start = index * that.draw;
-                that.getTableQuery();
+                // that.getTableQuery();
             },
             // 自动排序
             sortChange(params) {
@@ -458,18 +461,6 @@
                 this.dialog_state = true;
                 this.dialog_title = '添加设备';
             },
-            delList() {
-                // checkNum
-                if (!this.multipleSelection.length) {
-                    this.$message({
-                        showClose: true,
-                        message: '错了哦,需要先选中至少一个设备',
-                        type: 'error'
-                    });
-                    return false
-                }
-                // todo delEquip
-            },
             changeList() {
                 // checkNum
                 if (!this.multipleSelection.length) {
@@ -559,15 +550,15 @@
     @import "../assets/css/dialog.css";
 
     .content {
-        width: 100%;
+        width: 98%;
         overflow: hidden;
         display: block;
         margin: 0 auto;
-        padding-left: 10px;
+        padding-left: 20px;
     }
 
     .tabs ul {
-        width: 500px;
+        width: 558px;
     }
 
     table span {
@@ -700,6 +691,10 @@
         line-height: 30px;
     }
 
+    .version span {
+        margin-right: 10px;
+    }
+
     .allItem {
         float: right;
     }
@@ -722,6 +717,7 @@
     .upload-demo {
         /*float: right;*/
     }
+
     /deep/ .el-upload-list__item {
         width: 160px;
         float: left;

+ 15 - 14
src/views/Index.vue

@@ -14,7 +14,7 @@
                     </keep-alive>
                 </el-main>
                 <el-footer>
-                    <p class="footerP">Copyright © 2020-2022 专用场所无线信号安全监控系统 版权所有</p>
+                    <p class="footerP">Copyright © 2020 <a href="http://signal.tickdig.com:85/#/">HTTP://SIGNAL.TICKDIG.COM/</a> TICKDIG 版权所有</p>
                 </el-footer>
             </el-container>
         </el-container>
@@ -99,6 +99,10 @@
 
 <!-- Add "scoped" attribute to limit CSS to this component only -->
 <style>
+    .el-main {
+        padding: 10px;
+    }
+
     .container {
         position: absolute;
         top: 0;
@@ -164,6 +168,7 @@
     /deep/ .nav {
         width: 60px;
     }
+
     .el-main {
         /*overflow: hidden;*/
     }
@@ -176,7 +181,8 @@
         left: 55px;
         top: 60px;
     }
-    .indexContainer  {
+
+    .indexContainer {
         position: absolute;
         top: 60px;
         left: 45px;
@@ -189,38 +195,33 @@
     }
 
     .el-main::-webkit-scrollbar { /*滚动条整体样式*/
-
         width: 10px; /*高宽分别对应横竖滚动条的尺寸*/
-
         height: 1px;
-
     }
 
     .el-main::-webkit-scrollbar-thumb { /*滚动条里面小方块*/
-
         border-radius: 10px;
-
         -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
-
         background: #01355B;
-
     }
 
     .el-main::-webkit-scrollbar-track { /*滚动条里面轨道*/
-
         -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
-
         border-radius: 10px;
-
         background: none;
-
     }
+
     .footerP {
         margin: 5px 0;
         padding: 0;
     }
+
+    .footerP a {
+        color: #2c3e50;
+    }
+
     .el-footer {
-        height: 30px!important;
+        height: 30px !important;
         padding: 0 5px;
     }
 </style>

+ 130 - 49
src/views/Main.vue

@@ -1,7 +1,7 @@
 <template>
     <div class="mainContainer">
-        <div class="mlt">
-            <Console @refreshList="changPanel"></Console>
+        <div :class="[{'mlt':consoleWidth == 0},{'mltShort':consoleWidth == 1}]">
+            <Console @refreshList="changPanel" @refresWidth="changWidth"></Console>
         </div>
         <div class="mcenter">
             <div class="cube">
@@ -15,35 +15,41 @@
                             实时监测
                         </div>
                         <!--全局 和 楼栋-->
-                        <div class="totalContianer" v-if="pageLevel == 0 || pageLevel == 1 || pageLevel == 4">
-                            <div class="tlt">
-                                <h5>正在监测</h5>
-                                <BigRader :total-rs="totalRs"></BigRader>
+                        <transition name="el-zoom-in-center">
+                            <div class="totalContianer" v-if="pageLevel == 0 || pageLevel == 1 || pageLevel == 4">
+                                <div class="tlt">
+                                    <h5>正在监测</h5>
+                                    <BigRader :total-rs="totalRs" :page-level="pageLevel"></BigRader>
+                                </div>
+                                <div class="trt">
+                                    <h5>实时监测记录</h5>
+                                    <Watching :total-rs="totalRs" :page-level="pageLevel"></Watching>
+                                </div>
                             </div>
-                            <div class="trt">
-                                <h5>实时监测记录</h5>
-                                <Watching :total-rs="totalRs"></Watching>
-                            </div>
-                        </div>
+                        </transition>
                         <!--楼层-->
-                        <div class="manageContainer" v-if="pageLevel==2">
-                            <div class="tlt">
-                                <h5></h5>
-                                <SmallRader :total-rs="totalRs"></SmallRader>
+                        <transition name="el-zoom-in-center">
+                            <div class="manageContainer" v-if="pageLevel==2">
+                                <div class="tlt">
+                                    <h5></h5>
+                                    <SmallRader :total-rs="totalRs"></SmallRader>
+                                </div>
+                                <div class="trt">
+                                    <Loft :loft-points="loftPoints" :loft-map="loftMap" :loft-title="loftTitle"></Loft>
+                                </div>
                             </div>
-                            <div class="trt">
-                                <Loft :loft-points="loftPoints" :loft-map="loftMap" :loft-title="loftTitle" ></Loft>
-                            </div>
-                        </div>
-                        <div class="RoomContainer" v-if="pageLevel == 3">
-                            <div class="tlt">
-                                <h5></h5>
-                                <SmallRader :total-rs="totalRs"></SmallRader>
+                        </transition>
+                        <transition name="el-zoom-in-center">
+                            <div class="RoomContainer" v-if="pageLevel == 3">
+                                <div class="tlt">
+                                    <h5></h5>
+                                    <SmallRader :total-rs="totalRs"></SmallRader>
+                                </div>
+                                <div class="trt">
+                                    <Room :loft-points="loftPoints" :loft-map="loftMap" :loft-title="loftTitle"></Room>
+                                </div>
                             </div>
-                            <div class="trt">
-                                <Room :loft-points="loftPoints" :loft-map="loftMap" :loft-title="loftTitle"></Room>
-                            </div>
-                        </div>
+                        </transition>
                     </div>
                 </div>
             </div>
@@ -53,19 +59,27 @@
             <Scan :scan-rs="ScanRs"></Scan>
         </div>
         <div class="mrt">
-            <div class="cube" v-if="pageLevel == 0||pageLevel == 1||pageLevel == 4">
-                <HistoryRecord :history-rs="historyRs"></HistoryRecord>
-            </div>
-            <div class="cube" v-if="pageLevel == 2||pageLevel == 3">
-                <runTimeRecord :total-rs="totalRs"></runTimeRecord>
-            </div>
-            <div v-if="pageLevel != 4">
-                <EquipInfo :equip-rs="equipRs"></EquipInfo>
-            </div>
+            <transition name="el-zoom-in-center">
+                <div class="cube" v-if="pageLevel == 0||pageLevel == 1||pageLevel == 4">
+                    <HistoryRecord :history-rs="historyRs"></HistoryRecord>
+                </div>
+            </transition>
+            <transition name="el-zoom-in-center">
+                <div class="cube" v-if="pageLevel == 2||pageLevel == 3">
+                    <runTimeRecord :total-rs="totalRs" :page-level="pageLevel"></runTimeRecord>
+                </div>
+            </transition>
+            <transition name="el-zoom-in-center">
+                <div v-if="pageLevel != 4">
+                    <EquipInfo :equip-rs="equipRs"></EquipInfo>
+                </div>
+            </transition>
             <!--单个设备情况-->
-            <div v-if="pageLevel == 4">
-                <SingleEquipInfo :total-rs="totalRs"></SingleEquipInfo>
-            </div>
+            <transition name="el-zoom-in-center">
+                <div v-if="pageLevel == 4">
+                    <SingleEquipInfo :total-rs="totalRs"></SingleEquipInfo>
+                </div>
+            </transition>
         </div>
     </div>
 </template>
@@ -95,6 +109,9 @@
         RegionPictureGetByRegionId,
         GetRegiononeinfo,
         GetRegionplaneinfo,
+        RegionDetDetaillist,
+        SingleDetDetaillist,
+        Region06GInfolist,
     } from '../api/getApiRes.js'
 
     let qs = require('qs');
@@ -115,10 +132,12 @@
                 ScanRs: [],
                 historyRs: [],
                 equipRs: [],
-                loftPoints:[],
-                loftMap:'',
-                loftTitle:'',
-                autoTime: 115000,//定时刷新的时间间隔
+                loftPoints: [],
+                loftMap: '',
+                loftTitle: '',
+                consoleWidth: 0,
+                BoolSafe: 0,
+                autoTime: 5000,//定时刷新的时间间隔
                 // pageLevel: 1,//当前为楼层
                 // pageLevel: 2,//当前为楼层区域
                 // pageLevel: 3,//当前为房间
@@ -128,6 +147,12 @@
         mounted() {
             let that = this;
             that.loadingState = false;
+            if (!localStorage.Start) {
+                localStorage.Start = 0;
+            } else {
+                // localStorage.Start = 0;
+            }
+
             // 获取数据
             that.getDate();
             // 定时查询
@@ -142,6 +167,11 @@
             clearInterval(this.wordDisplay);
         },
         methods: {
+            // 改编宽度
+            changWidth(state) {
+                console.log(state);
+                this.consoleWidth = state;
+            },
             changPanel(level, btn) {
                 let that = this;
                 this.regionId = btn.Id ? btn.Id : 0;
@@ -172,17 +202,19 @@
                         et: globaltime2String(globalBt2()[1]) + ' 23:59:59',//结束时间
                         start: 1,//
                         tableMax: 10,//
+                        Start: localStorage.Start
                     };
                     let postdata = qs.stringify(param);
+
                     // wifi柱状图信息传入区域Id
                     that.getRegionWifixyInfolist(postdata);
                     // 区域检测实时记录
                     that.getRegionDetInfolist(postdata);
                     // 历史检测记录
                     // that.getLogWifiDetectedQueryByDetector(postdata);
-                    that.getLogFullDetectedQueryByDetector(postdata);
+                    that.getRegionDetDetaillist(postdata);
                     // 0-6G
-                    that.getDetector06GInfolist(postdata);
+                    that.getRegion06GInfolist(postdata);
                     that.getGetStaticinfo(postdata);
 
                     // 楼层和房间层级有平面图的
@@ -199,8 +231,10 @@
                         et: globaltime2String(globalBt2()[1]) + ' 23:59:59',//结束时间
                         start: 1,//
                         tableMax: 10,//
+                        Start: localStorage.Start
                     };
                     let postdata = qs.stringify(param);
+
                     // Wifi柱状图信息传入探测器Id
                     that.getDetectorWifixyInfolist(postdata);
                     // 单个设备检测实时记录
@@ -208,7 +242,7 @@
                     that.getDetector06GInfolist(postdata);
                     // 历史检测记录
                     // that.getLogWifiDetectedQueryByDetector(postdata);
-                    that.getLogFullDetectedQueryByDetector(postdata);
+                    that.getSingleDetDetaillist(postdata);
                 }
             },
             getDetector06GInfolist(postdata) {
@@ -222,12 +256,50 @@
                     }
                 })
             },
+            getRegion06GInfolist(postdata) {
+                let that = this;
+                Region06GInfolist(postdata).then(res => {
+                    let json = res;
+                    if (json.Code == 0) {
+                        that.ScanRs = json;
+                    } else {
+                        that.$message.error(json.Memo);
+                    }
+                })
+            },
+            // 区域检测实时记录
+            getRegionDetDetaillist(postdata) {
+                let that = this;
+                RegionDetDetaillist(postdata).then(res => {
+                    let json = res;
+                    if (json.Code == 0) {
+                        that.historyRs = json;
+                        localStorage.Start = json.LastId;
+                    } else {
+                        that.$message.error(json.Memo);
+                    }
+                })
+            },
+            // 单个设备检测实时记录
+            getSingleDetDetaillist(postdata) {
+                let that = this;
+                SingleDetDetaillist(postdata).then(res => {
+                    let json = res;
+                    if (json.Code == 0) {
+                        that.historyRs = json;
+                        localStorage.Start = json.LastId;
+                    } else {
+                        that.$message.error(json.Memo);
+                    }
+                })
+            },
             getRegionDetInfolist(postdata) {
                 let that = this;
                 RegionDetInfolist(postdata).then(res => {
                     let json = res;
                     if (json.Code == 0) {
                         that.totalRs = json;
+                        localStorage.Start = json.LastId;
                     } else {
                         that.$message.error(json.Memo);
                     }
@@ -250,6 +322,7 @@
                     let json = res;
                     if (json.Code == 0) {
                         that.totalRs = json;
+                        localStorage.Start = json.LastId;
                     } else {
                         that.$message.error(json.Memo);
                     }
@@ -370,14 +443,21 @@
         overflow: hidden;
         display: block;
         margin: 0 auto;
+        margin-top: 20px;
     }
 
     .mlt {
         width: 365px;
         float: left;
         overflow: hidden;
-        margin-right: 10px;
-        margin-left: 10px;
+        margin-right: 15px;
+        margin-left: 20px;
+    }
+
+    .mltShort {
+        width: 20px;
+        float: left;
+        overflow: hidden;
     }
 
     .mcenter {
@@ -408,7 +488,7 @@
         height: 481px;
         margin-left: 0;
         overflow: hidden;
-        background: #000F2A;
+        /*background: #000F2A;*/
     }
 
     ul, li {
@@ -557,4 +637,5 @@
         background: url("../assets/img/main/title.png") top center no-repeat;
         background-size: 100% 100%;
     }
+
 </style>

+ 33 - 24
src/views/PhoneSign.vue

@@ -12,7 +12,7 @@
                 <div class=" panel_control">
                     <el-row :gutter="20">
                         <el-col :span="4">
-                            <em>探测:</em>
+                            <em>探测设备:</em>
                             <el-select v-model="panel.detidstr">
                                 <el-option
                                         v-for="item in panel.detOptions"
@@ -59,8 +59,10 @@
                 stripe
         >
             <el-table-column
-                    prop="Id"
-                    label="Id"
+                    type="index"
+                    label="序号"
+                    width="60"
+                    sortable
             >
             </el-table-column>
             <el-table-column
@@ -78,28 +80,28 @@
             <el-table-column
                     prop="SignalIntensity"
                     label="信号强度"
-                    width="120"
+                    width="140"
             >
             </el-table-column>
             <el-table-column
                     prop="Path"
-                    label="位置">
-            </el-table-column>
-
-            <el-table-column
-                    prop="DeviceType"
-                    label="设备类型"
-                    width="120"
+                    label="位置"
             >
                 <template slot-scope="scope">
-                    <!--0:其他-->
-                    <!--1:摄像头-->
-                    <!--2:wifi-->
-                    <span v-if="scope.row.DeviceType == 1">其他</span>
-                    <span v-if="scope.row.DeviceType == 2">摄像头</span>
-                    <span v-if="scope.row.DeviceType == 3">wifi</span>
+                    <el-tooltip class="item" effect="dark" :content="scope.row.Path" placement="top-start">
+                            <span>
+                                    {{ scope.row.Path.length > 22 ?  scope.row.Path.substr(0,22)+'...' : scope.row.Path }}
+                            </span>
+                    </el-tooltip>
                 </template>
             </el-table-column>
+            <el-table-column
+                    prop="EditTime"
+                    label="检测时间"
+                    :formatter="filterFmtDate"
+                    width="180"
+            >
+            </el-table-column>
             <el-table-column
                     prop="DangerLevel"
                     label="危险等级"
@@ -185,6 +187,7 @@
         },
         methods: {
             getDetOption() {
+                let that = this;
                 let param = {
                     'token': localStorage.token,
                 };
@@ -192,6 +195,10 @@
                 GetRegionAndDectorSelect(postdata).then(res => {
                     let json = res;
                     if (json.Code == 0) {
+                        if (!json.DectectorRs) {
+                            that.$message.error('设备列表为空,请先添加有效探测设备');
+                            return false
+                        }
                         this.panel.detOptions = json.DectectorRs;//所有设备
                         this.panel.detOptions.push({Id: 0, Name: '全部'})
                     } else {
@@ -221,7 +228,7 @@
                     bt: globaltime2String(that.panel.time1[0]) + ' 00:00:01',//开始时间
                     et: globaltime2String(that.panel.time1[1]) + ' 23:59:59',//结束时间
                     start: 1,//
-                    tableMax: 300,//
+                    tableMax: 9999,//
                 };
                 let postdata = qs.stringify(param);
                 LogPhoneDetectedQueryByDetector(postdata).then(res => {
@@ -287,7 +294,7 @@
                     this.tableData = tables;
                 }
                 that.start = index * that.draw;
-                that.getTableQuery();
+                // that.getTableQuery();
             },
             // 自动排序
             sortChange(params) {
@@ -295,12 +302,10 @@
             },
             // 过滤时间
             filterFmtDate(value, row, column) {
-                let that = this;
-                return globalfmtDate(column, 11);
+                return nonTfmtDate(column, 16);
             },
             // 过滤金额
             filterMoney(value, row, column) {
-                let that = this;
                 return parseFloat(column).toFixed(2);
             },
         },
@@ -315,10 +320,14 @@
     }
 
     .content {
-        width: 100%;
+        width: 98%;
         overflow: hidden;
         display: block;
         margin: 0 auto;
-        padding-left: 10px;
+        padding-left: 20px;
+    }
+    /deep/ .el-table__empty-text {
+        color: #015B9E;
     }
+
 </style>

+ 6 - 6
src/views/Pwd.vue

@@ -22,11 +22,11 @@
                 <el-form-item label="确认密码" prop="again">
                     <el-input v-model="form.again" type="password"></el-input>
                 </el-form-item>
-                <el-form-item label="图形验证码" prop="valid">
-                    <el-input v-model="form.valid" type="password"></el-input>
-                    <img id="validImg" :src="valImgSrc" alt="" width="100px" height="30px" title="看不清?刷一下试试!"
-                         @click="changeValImg">
-                </el-form-item>
+                <!--<el-form-item label="图形验证码" prop="valid">-->
+                    <!--<el-input v-model="form.valid" type="password"></el-input>-->
+                    <!--<img id="validImg" :src="valImgSrc" alt="" width="100px" height="30px" title="看不清?刷一下试试!"-->
+                         <!--@click="changeValImg">-->
+                <!--</el-form-item>-->
                 <!--<s>-->
                 <!--<i class="el-icon-warning"></i><em>密码由6~32位字母、数字及下划线组成</em>-->
                 <!--</s>-->
@@ -212,7 +212,7 @@
     @import "../assets/css/panel.css";
 
     .tabs ul {
-        width: 500px;
+        width: 558px;
     }
 
     .image-border {

+ 111 - 23
src/views/Qrcodemanage.vue

@@ -61,6 +61,13 @@
                     type="selection"
                     width="55">
             </el-table-column>
+            <el-table-column
+                    type="index"
+                    label="序号"
+                    width="60"
+                    sortable
+            >
+            </el-table-column>
             <el-table-column
                     prop="QrId"
                     label="二维码编号"
@@ -83,7 +90,13 @@
                     prop="DetIdStr"
                     label="探测器"
                     width="180">
-                <!--探测器详细信息 todo-->
+                <template slot-scope="scope">
+                    <el-tooltip class="item" effect="dark" :content="scope.row.TagnameStr" placement="top-start">
+                        <span>
+                               {{scope.row.DetIdStr}}
+                        </span>
+                    </el-tooltip>
+                </template>
             </el-table-column>
             <el-table-column
                     prop="QrName"
@@ -103,7 +116,8 @@
                 <template slot-scope="scope">
                     <el-button class="control_btn" type="text" @click="goPoster(scope.row)">海报</el-button>
                     <el-button class="control_btn" type="text" @click="goQrcode(scope.row)">二维码</el-button>
-                    <el-button class="control_btn red" type="text" @click="pauseQrcode(scope.row)">禁用</el-button>
+                    <el-button class="control_btn red" type="text" v-if="scope.row.State == 1" @click="pauseQrcode(scope.row)">禁用</el-button>
+                    <el-button class="control_btn green" type="text" v-if="scope.row.State == 0" @click="runQrcode(scope.row)">启用</el-button>
                 </template>
             </el-table-column>
         </el-table>
@@ -114,7 +128,6 @@
                 :page-size="pageination.pageItem"
                 @current-change="pageChange"
         ></el-pagination>
-
         <dialog_referrer_list
                 :show="dialog_state"
                 :title="dialog_title"
@@ -152,10 +165,11 @@
                         <label>
                             房间所属探测器
                         </label>
-                        <!--改成list todo -->
-                        <el-checkbox-group v-model="dialog.checkList">
-                            <el-checkbox :label="det.Id" v-for="det in dialog.detOptions">{{det.Name}}</el-checkbox>
-                        </el-checkbox-group>
+                        <div class="detList">
+                            <el-checkbox-group v-model="dialog.checkList">
+                                <el-checkbox :label="det.Id" v-for="det in dialog.detOptions">{{det.Name}}</el-checkbox>
+                            </el-checkbox-group>
+                        </div>
                     </el-col>
                     <el-col :span="10">
                         <label>
@@ -370,7 +384,7 @@
                     cdtbt: globaltime2String(that.panel.time1[0]) + ' 00:00:01',//开始时间
                     cdtet: globaltime2String(that.panel.time1[1]) + ' 23:59:59',//结束时间
                     start: 1,//
-                    tableMax: 300,//
+                    tableMax: 9999,//
                 };
                 let postdata = qs.stringify(param);
                 GetQrcodeList(postdata).then(res => {
@@ -427,7 +441,7 @@
                     this.tableData = tables;
                 }
                 that.start = index * that.draw;
-                that.getTableQuery();
+                // that.getTableQuery();
             },
             // 自动排序
             sortChange(params) {
@@ -756,19 +770,54 @@
                     cancelButtonText: '取消',
                     type: 'warning'
                 }).then(() => {
-                    // // ajax todo
-                    // RegionStatusEdit(postdata).then(res => {
-                    //     let json = res;
-                    //     if (json.Code == 0) {
-                    that.$message({
-                        type: 'success',
-                        message: `禁用成功`
+                    QrcodeEditStatus(postdata).then(res => {
+                        let json = res;
+                        if (json.Code == 0) {
+                            that.$message({
+                                showClose: true,
+                                message: '禁用成功!',
+                                type: 'success'
+                            });
+                            that.getTableQuery();
+                        } else {
+                            that.$message.error(json.Memo);
+                        }
+                    })
+
+                }).catch(() => {
+                    this.$message({
+                        type: 'info',
+                        message: '已取消禁用'
                     });
-                    that.getTableQuery();
-                    // } else {
-                    //     that.$message.error(json.Memo);
-                    // }
-                    // })
+                });
+            },
+            runQrcode(row) {
+                let that = this;
+                let param = {
+                    token: localStorage.token,
+                    qrcodeid: row.QrId,
+                    status: 1//新状态0禁用1启用 9删除
+                };
+                let postdata = qs.stringify(param);
+                this.$confirm('是否启用' + row.QrName + '的二维码?', '禁用操作', {
+                    confirmButtonText: '确定',
+                    cancelButtonText: '取消',
+                    type: 'warning'
+                }).then(() => {
+                    QrcodeEditStatus(postdata).then(res => {
+                        let json = res;
+                        if (json.Code == 0) {
+                            that.$message({
+                                showClose: true,
+                                message: '启用成功!',
+                                type: 'success'
+                            });
+                            that.getTableQuery();
+                        } else {
+                            that.$message.error(json.Memo);
+                        }
+                    })
+
                 }).catch(() => {
                     this.$message({
                         type: 'info',
@@ -839,11 +888,11 @@
     }
 
     .content {
-        width: 100%;
-        height: 100%;
+        width: 98%;
         overflow: hidden;
         display: block;
         margin: 0 auto;
+        padding-left: 20px;
     }
 
     .modal-content .el-select {
@@ -912,5 +961,44 @@
         float: left;
         margin-left: 30px;
     }
+    /deep/ .el-table__empty-text {
+        color: #015B9E;
+    }
+    .detList {
+        width: 100%;
+        overflow: hidden;
+        display: block;
+        margin: 0 auto;
+        height: 220px;
+        overflow-y: scroll;
+    }
+    .detList::-webkit-scrollbar { /*滚动条整体样式*/
+
+        width: 10px; /*高宽分别对应横竖滚动条的尺寸*/
+
+        height: 1px;
+
+    }
+
+    .detList::-webkit-scrollbar-thumb { /*滚动条里面小方块*/
+
+        border-radius: 10px;
+
+        -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+
+        background: #01355B;
+
+    }
+
+    .detList::-webkit-scrollbar-track { /*滚动条里面轨道*/
+
+        -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+
+        border-radius: 10px;
+
+        background: none;
+
+    }
+
 
 </style>

+ 46 - 18
src/views/Region.vue

@@ -23,6 +23,7 @@
                         :props="defaultProps"
                         node-Key="Id"
                         default-expand-all
+                        @node-click="handleNodeClick"
                         :expand-on-click-node="false">
                      <span class="custom-tree-node" slot-scope="{ node, data }">
                     <span>{{ node.label }}</span>
@@ -43,7 +44,6 @@
                       />
                       <img src="../assets/img/region/watch.png"
                            height="18" width="18"
-                           @click="seeLoft(node)"
                       />
                       </span>
                   </span>
@@ -95,7 +95,7 @@
                             建筑平面图
                         </label>
                         <el-upload
-                                action="/api/v1/Company/RegionPictureUpload"
+                                :action="RegionPictureUploadUrl"
                                 ref="upload"
                                 list-type="picture-card"
                                 :data="dialog"
@@ -148,10 +148,10 @@
         GetRegionAndDectorSelect,
         RegionStatusEdit,
         RegionAdd,
-        GetRegiononeinfo,
         RegionPictureGetByRegionId,
         GetChildRegionSelect,
         RegionEdit,
+        GetRegionplaneinfo,
     }
         from '../api/getApiRes.js'
 
@@ -162,6 +162,7 @@
                 // dialog
                 dialog_state: false,
                 dialog_title: '',
+                RegionPictureUploadUrl: headapi + 'v1/Company/RegionPictureUpload',
                 dialog_type: '',//类型,1是添加,2是修改
                 dialog_level: 1,//类型,1是楼(有图不显示),2是楼层(有图),3是会议室(有图)
                 dialog: {
@@ -194,11 +195,12 @@
             };
         },
         mounted() {
-            this.getDate();
+            this.getDate(1);
         },
         methods: {
             // 获取建筑树列表
-            getDate() {
+            getDate(i) {
+                let that = this;
                 // 右侧先初始化
                 this.loftListState = true;
                 this.plateImg = false;
@@ -211,8 +213,14 @@
                     let json = res;
                     if (json.Code == 0) {
                         this.tree = json.FullChildlRs;//全部关系
+                        // 第一次默认加载
+                        if (i == 1) {
+                            let Name = json.FullChildlRs[0].Name;
+                            let Id = json.FullChildlRs[0].Id;
+                            that.seeFirstLoft(Name, Id)
+                        }
                     } else {
-                        that.$message.error(json.Memo);
+                        this.$message.error(json.Memo);
                     }
                 })
             },
@@ -272,7 +280,7 @@
                 that.dialog_level = node.level;//类型,1是楼(有图不显示),2是楼层(有图),3是会议室(有图)
                 that.dialog.name = node.data.Name;
                 that.dialog.regionId = node.data.Id;
-                that.getGetRegiononeinfo(node.data.Id); //读取Description
+                that.getGetRegionplaneinfo(node.data.Id); //读取Description
                 that.diglogRegionPictureGetByRegionId(node.data.Id); //读取Description
             },
             // 删除楼层
@@ -301,7 +309,7 @@
                                 message: `删除成功`
                             });
                             // 重载
-                            that.getDate();
+                            that.getDate(2);
                         } else {
                             that.$message.error(json.Memo);
                         }
@@ -350,7 +358,7 @@
                             type: 'success'
                         });
                         // 重载tree
-                        that.getDate();
+                        that.getDate(2);
                     } else {
                         that.$message.error(json.Memo);
                     }
@@ -371,7 +379,7 @@
 
                 let param = {
                     token: localStorage.token,
-                    regionid : that.dialog.regionId,
+                    regionid: that.dialog.regionId,
                     regionname: that.dialog.name,
                     comid: 1,
                     superiorid: that.dialog.superiorid,
@@ -394,7 +402,7 @@
                             type: 'success'
                         });
                         // 重载tree
-                        that.getDate();
+                        that.getDate(2);
 
                     } else {
                         that.$message.error(json.Memo);
@@ -434,8 +442,8 @@
             handleCheckChange(data, checked, indeterminate) {
                 console.log(data, checked, indeterminate);
             },
-            handleNodeClick(data) {
-                console.log(data);
+            handleNodeClick(data,Node) {
+                this.seeLoft(Node);
             },
             loadNode(node, resolve) {
                 if (node.level === 0) {
@@ -516,17 +524,27 @@
                         break;
                 }
             },
-            getGetRegiononeinfo(regionid) {
+            // 查看默认区域情况
+            seeFirstLoft(Name, Id) {
+                let that = this;
+                that.plateTitle = Name;
+                // 看列表
+                that.loftListState = true;
+                that.plateImg = false;
+                that.getGetChildRegionSelect(Id);
+            },
+            getGetRegionplaneinfo(regionid) {
                 let that = this;
                 let param = {
                     token: localStorage.token,
                     regionid: regionid,
+                    regionId: regionid,
                 };
                 let postdata = qs.stringify(param);
-                GetRegiononeinfo(postdata).then(res => {
+                GetRegionplaneinfo(postdata).then(res => {
                     let json = res;
                     if (json.Code == 0) {
-                        that.dialog.description = json.Rs.Description
+                        that.dialog.description = json.Rs.Region.Description
                     } else {
                         that.$message.error(json.Memo);
                     }
@@ -654,7 +672,7 @@
         color: #6DC1FF;
         border: 1px solid #005EA2;
         float: left;
-        margin-left: 10px;
+        margin-left: 30px;
     }
 
     .addMain {
@@ -691,7 +709,8 @@
     }
 
     .plate {
-        width: 1440px;
+        /*width: 1440px;*/
+        width: 78%;
         min-height: 780px;
         float: left;
         margin-left: 10px;
@@ -785,10 +804,19 @@
     /deep/ .modal-body textarea {
         color: #6DC1FF;
     }
+
     .editImg {
         width: 140px;
         height: 140px;
         float: left;
         margin-left: 30px;
     }
+
+    /*响应式调整*/
+    @media only screen and (max-width: 1600px) {
+        .plate {
+            width: 72%;
+        }
+    }
+
 </style>

+ 1 - 1
src/views/Setting.vue

@@ -64,7 +64,7 @@
     @import "../assets/css/panel.css";
 
     .tabs ul {
-        width: 500px;
+        width: 558px;
     }
     .pages {
         width: 96%;

+ 0 - 95
src/views/Test.vue

@@ -1,95 +0,0 @@
-<template>
-    <div>
-        <!--<Radar></Radar>-->
-        <Sankey></Sankey>
-
-        <div class="other-people">
-            <div class="image-border image-border1"></div>
-            <div class="image-border image-border2"></div>
-            <div class="image-border image-border3"></div>
-            <div class="image-border image-border4"></div>
-            <div class="other-people-title">旅客人脸图</div>
-        </div>
-
-        <Map></Map>
-    </div>
-</template>
-
-<script>
-    import Radar from '@/components/Radar.vue'
-    import Sankey from '@/components/Sankey.vue'
-    import Map from '@/components/Map.vue'
-
-    export default {
-        data() {
-            return {
-                editableTabsValue: '1'
-            }
-        },
-        components: {
-            Radar, Sankey,Map
-        }
-    }
-</script>
-
-<style scoped>
-
-    .image-border {
-        position: absolute;
-        width: 20px;
-        height: 20px;
-    }
-
-    .image-border1 {
-        top: 0px;
-        left: 0;
-        border-left: 2px solid #6DC1FF;
-        border-top: 2px solid #6DC1FF;
-    }
-
-    .image-border2 {
-        top: 0;
-        right: -2px;
-        border-right: 2px solid #6DC1FF;
-        border-top: 2px solid #6DC1FF;
-    }
-
-    .image-border3 {
-        bottom: 0;
-        left: 0;
-        border-bottom: 2px solid #6DC1FF;
-        border-left: 2px solid #6DC1FF;
-    }
-
-    .image-border4 {
-        bottom: 0;
-        right: -2px;
-        border-right: 2px solid #6DC1FF;
-        border-bottom: 2px solid #6DC1FF;
-    }
-
-    .other-people {
-        border: 1px dashed #01355B;
-        width: 200px;
-        height: 200px;
-        margin-left: 61px;
-        padding: 5px;
-        position: relative;
-    }
-
-    .other-image {
-        width: 100%;
-        height: 100%;
-    }
-
-    .other-people-title {
-        position: absolute;
-        background: rgb(21, 90, 154);
-        height: 52px;
-        opacity: 0.5;
-        font-size: 14px;
-        line-height: 52px;
-        top: 25px;
-        left: 25px;
-    }
-</style>

+ 28 - 26
src/views/WifiSign.vue

@@ -52,8 +52,10 @@
                 stripe
         >
             <el-table-column
-                    prop="Id"
-                    label="记录"
+                    type="index"
+                    label="序号"
+                    width="60"
+                    sortable
             >
             </el-table-column>
             <el-table-column
@@ -65,28 +67,30 @@
             <el-table-column
                     prop="Macstr"
                     label="Mac地址"
+                    width="160"
             >
             </el-table-column>
             <el-table-column
                     prop="ProduceCom"
                     label="品牌"
             >
-                <template slot-scope="scope">
-                    <el-tooltip class="item" effect="dark" :content="scope.row.ProduceCom" placement="top-start">
-                            <span>
-                                    {{ scope.row.ProduceCom.length > 11 ?  scope.row.ProduceCom.substr(0,11)+'...' : scope.row.ProduceCom }}
-                            </span>
-                    </el-tooltip>
-                </template>
+                <!--<template slot-scope="scope">-->
+                    <!--<el-tooltip class="item" effect="dark" :content="scope.row.ProduceCom" placement="top-start">-->
+                            <!--<span>-->
+                                    <!--{{ scope.row.ProduceCom.length > 40 ?  scope.row.ProduceCom.substr(0,40)+'...' : scope.row.ProduceCom }}-->
+                            <!--</span>-->
+                    <!--</el-tooltip>-->
+                <!--</template>-->
             </el-table-column>
             <el-table-column
                     prop="Path"
                     label="位置"
+                    width="260"
             >
                 <template slot-scope="scope">
                     <el-tooltip class="item" effect="dark" :content="scope.row.Path" placement="top-start">
                             <span>
-                                    {{ scope.row.Path.length > 17 ?  scope.row.Path.substr(0,17)+'...' : scope.row.Path }}
+                                    {{ scope.row.Path.length > 20 ?  scope.row.Path.substr(0,20)+'...' : scope.row.Path }}
                             </span>
                     </el-tooltip>
                 </template>
@@ -182,6 +186,7 @@
         },
         methods: {
             getDetOption() {
+                let that = this;
                 let param = {
                     'token': localStorage.token,
                 };
@@ -189,7 +194,10 @@
                 GetRegionAndDectorSelect(postdata).then(res => {
                     let json = res;
                     if (json.Code == 0) {
-                        console.log(json);
+                        if (!json.DectectorRs) {
+                            that.$message.error('设备列表为空,请先添加有效探测设备');
+                            return false
+                        }
                         this.panel.detOptions = json.DectectorRs;//所有设备
                         this.panel.detOptions.unshift({Id: 0, Name: '全部'});
 
@@ -220,7 +228,7 @@
                     bt: globaltime2String(that.panel.time1[0]) + ' 00:00:01',//开始时间
                     et: globaltime2String(that.panel.time1[1]) + ' 23:59:59',//结束时间
                     start: 1,//
-                    tableMax: 300,//
+                    tableMax: 9999,//
                 };
                 let postdata = qs.stringify(param);
                 LogWifiDetectedQueryByDetector(postdata).then(res => {
@@ -242,15 +250,6 @@
                     }
                 })
             },
-            // 导出excel
-            btnExpAll() {
-                let that = this;
-                let url = headapi + '?ctl=ajax&mod=czgl&act=czcx_excel';//获取
-                let bt = globaltime2String(that.panel.time1[0]);
-                let et = globaltime2String(that.panel.time1[1]);
-                let usercode = that.panel.usercode;
-                window.location = url + '&bt=' + bt + '&et=' + et + '&usercode=' + usercode;
-            },
             // 设置分页数据
             setPaginations() {
                 // 分页属性
@@ -286,7 +285,7 @@
                     this.tableData = tables;
                 }
                 that.start = index * that.draw;
-                that.getTableQuery();
+                // that.getTableQuery();
             },
             // 自动排序
             sortChange(params) {
@@ -294,12 +293,10 @@
             },
             // 过滤时间
             filterFmtDate(value, row, column) {
-                let that = this;
                 return globalfmtDate(column, 10);
             },
             // 过滤金额
             filterMoney(value, row, column) {
-                let that = this;
                 return parseFloat(column).toFixed(2);
             },
         },
@@ -314,10 +311,15 @@
     }
 
     .content {
-        width: 100%;
+        width: 98%;
         overflow: hidden;
         display: block;
         margin: 0 auto;
-        padding-left: 10px;
+        padding-left: 20px;
     }
+
+    /deep/ .el-table__empty-text {
+        color: #015B9E;
+    }
+
 </style>

+ 1 - 0
vue.config.js

@@ -5,6 +5,7 @@ module.exports = {
         proxy: {
             '/api': {
                 target: 'http://192.168.0.3:19082/',
+                // target: 'http://192.168.0.165:19082/',
                 changeOrigin: true,
                 pathRewrite: {
                     '^/api': '',