From 4bf7ec9446e7dce8198a122740d73e498ec221a6 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Tue, 20 Apr 2021 17:40:25 +0800
Subject: [PATCH] Merge branch 'master' of http://s16s652780.51mypc.cn:49896/r/jfpt-Vue

---
 src/api/client/client.js                                            |   10 
 src/components/liu-legend/Legend.vue                                |   19 
 public/map/lib/layui/css/modules/layer/myskin/FlareClusterLayer.css |   19 
 src/views/security/security.vue                                     |    6 
 public/map/popup/html/FlareClusterLayer_v3 copy.html                |  318 +++++++++++
 public/map/widgets/supervisoryMap/SupervisoryMap.js                 |  125 +++
 src/views/clientManagement/clientManagement.vue                     |   85 ++
 src/views/realTimePolice/real.vue                                   |  287 ++++-----
 public/map/widgets/supervisoryMap/FlareClusterLayer_v3.js           |  236 +++++--
 public/map/popup/html/FlareClusterLayer_v3.html                     |   88 ++
 public/map/widgets/securityMap/SecurityMap.js                       |  425 +++++++++++---
 src/views/zc/zc.vue                                                 |    4 
 src/views/system/cs.vue                                             |    6 
 13 files changed, 1,212 insertions(+), 416 deletions(-)

diff --git a/public/map/lib/layui/css/modules/layer/myskin/FlareClusterLayer.css b/public/map/lib/layui/css/modules/layer/myskin/FlareClusterLayer.css
new file mode 100644
index 0000000..1f69535
--- /dev/null
+++ b/public/map/lib/layui/css/modules/layer/myskin/FlareClusterLayer.css
@@ -0,0 +1,19 @@
+.flare {
+    background: transparent;
+    border-radius: 10px;
+}
+
+/* .flare .layui-layer-title {
+    padding: 0 80px;
+    text-align: center;
+    background: rgb(63, 184, 33);
+    border: none;
+    color: #677788;
+    font-size: 20px;
+    border-radius: 10px 10px 0 0;
+} */
+
+.flare .layui-layer-content {
+    background: rgb(255, 255, 255);
+    border-radius: 5px 5px 5px 5px;
+}
\ No newline at end of file
diff --git a/public/map/popup/html/FlareClusterLayer_v3 copy.html b/public/map/popup/html/FlareClusterLayer_v3 copy.html
new file mode 100644
index 0000000..1993ef2
--- /dev/null
+++ b/public/map/popup/html/FlareClusterLayer_v3 copy.html
@@ -0,0 +1,318 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Document</title>
+    <link rel="stylesheet" href="../style/FlareClusterLayer_v3.css">
+    <script src='../../lib/jquery.js'></script>
+    <script src='../js/FlareClusterLayer_v3.js'></script>
+    <script src="https://cdn.jsdelivr.net/npm/vue@2.6.12"></script>
+    <!-- layui -->
+    <link rel="stylesheet" href="../../lib/layui/css/layui.css" media="all">
+    <style>
+        a:hover {
+            color: white;
+        }
+body{
+    width: 360px;
+    height: 484px;
+    overflow: hidden;
+}
+        #appliutwo {
+            width: 330px;
+            height: 484px;
+            border-radius: 10px;
+            margin: 16px 15px 16px 15px;
+            
+            /* border: springgreen solid 0.5px; */
+        }
+
+        .flare-liu-top {
+            width: 330px;
+            height: 90px;
+            /* border: rgb(211, 154, 31) solid 0.5px; */
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            flex-direction: column;
+            color: white;
+            border-radius: 5px 5px 5px 5px;
+        }
+
+        .f-l-t-heard {
+            width: 300px;
+            height: 30px;
+            font-size: 18px;
+            font-family: PingFangSC-Regular;
+        }
+
+        .f-l-t-right {
+            width: 300px;
+            height: 28px;
+            display: flex;
+            align-items: center;
+            color: white;
+            justify-content: space-around;
+        }
+
+        .f-l-t-r-msg {
+            width: 200px;
+            height: 28px;
+        }
+
+        .f-l-t-r-but {
+            width: 72.531px;
+            height: 28px;
+            line-height: 28px;
+            text-align: center;
+            background: rgba(255, 255, 255, .2);
+            color: white;
+            /* border: wheat 1px solid; */
+        }
+
+        .f-l-t-r-but a {
+            color: white;
+            width: 48.52px;
+            height: 16px;
+        }
+
+        .flare-liu-body {
+            width: 330px;
+            height: 361px;
+            /* border: rgb(106, 20, 187) solid 0.5px; */
+
+        }
+
+        .r-b-top {
+            height: 200px;
+            display: flex;
+
+            display: flex;
+            flex-direction: column;
+        }
+
+        .r-b-t-main {
+            display: flex;
+            align-items: center;
+            justify-content: space-between;
+
+            padding: 10px 0 10px 0;
+            margin-bottom: 5px;
+        }
+
+        .r-b-t-left {
+            display: block;
+            width: 27%;
+
+        }
+
+        .r-b-t-right {
+            display: block;
+            width: 70%;
+            color: #5d5d5d;
+            font-size: 12px;
+
+        }
+
+        .r-b-t-r-label {
+            float: left;
+            margin-right: 10px;
+            padding: 0 10px 0 10px;
+            border: 1px solid rgba(0, 0, 0, 0.5);
+            border-radius: 5px;
+        }
+
+        .r-b-t-r-imgsl {
+
+            float: left;
+            padding: 0 3px 0 3px;
+        }
+    </style>
+</head>
+
+<body>
+    <div id="appliutwo" class='police-details-box' class="layui-anim" data-anim="layui-anim-down">
+        <!-- 从layui传值给iframe 的占位input -->
+        <input type="text" id="sidIput" ref="sidIput" style="display:none">
+        <div class="flare-liu-top">
+            <div class="f-l-t-heard">{{name}}</div>
+            <div class="f-l-t-right">
+                <div class="f-l-t-r-msg"></div>
+                <div class="f-l-t-r-but"> <a href="#">查看详情</a> </div>
+            </div>
+        </div>
+        <div class="flare-liu-body">
+            <!-- layui -->
+            <div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief">
+                <ul class="layui-tab-title">
+                    <li class="layui-this">基本信息</li>
+                    <li>other</li>
+                    <!-- <li>权限分配</li>
+                    <li>商品管理</li>
+                    <li>订单管理</li> -->
+                </ul>
+                <div class="layui-tab-content" style="height: 100px;">
+                    <div class="layui-tab-item layui-show">
+                        <div class="r-b-top">
+                            <div class="r-b-t-main">
+                                <span class="r-b-t-left">设备名称</span>
+                                <span class="r-b-t-right">{{ name }}</span>
+                            </div>
+                            <div class="r-b-t-main">
+                                <span class="r-b-t-left">设备联系人</span>
+                                <span class="r-b-t-right">{{ contacts }}: {{ calls }}</span>
+                            </div>
+                            <!-- 设备标签待定 -->
+                            <!-- <div class="r-b-t-main">
+                                <span class="r-b-t-left">设备标签</span>
+                                <span class="r-b-t-right">
+                                    <div 
+                                    class="r-b-t-r-label" 
+                                    v-for="(value,index) in labels" 
+                                    :key="index"
+                                    >
+                                         {{value}} 
+                                    </div>
+                                </span>
+                            </div> -->
+                            <!-- 图暂时没有 -->
+                            <div class="r-b-t-main">
+                                <span class="r-b-t-left" style="position: relative; top: -27px">部署图片</span>
+                                <span class="r-b-t-right">
+                                    <div class="r-b-t-r-imgsl" v-for="(value, index) in imgsl" :key="index">
+                                        <el-image style="width: 68px; height: 68px" :src="value"
+                                            :preview-src-list="imgsl" v-show="value != 'no'">
+                                        </el-image>
+                                        <div v-show="value == 'no'" style="
+                      width: 68px;
+                      height: 68px;
+                      text-algin: center;
+                      color: rgba(0, 0, 0, 0.5);
+                    ">
+                                            无图片
+                                        </div>
+                                    </div>
+                                </span>
+                            </div>
+                            <div class="r-b-t-main">
+                                <span class="r-b-t-left">部署时间</span>
+                                <span class="r-b-t-right">{{ deploymentTime }}</span>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="layui-tab-item">
+
+                    </div>
+                    <!-- <div class="layui-tab-item">内容3</div>
+                    <div class="layui-tab-item">内容4</div>
+                    <div class="layui-tab-item">内容5</div> -->
+                </div>
+            </div>
+        </div>
+        <script src="../../lib/layui/layui.js" charset="utf-8"></script>
+        <script>
+            // var index = parent.layer.getFrameIndex(window.name);
+
+        </script>
+        <script>
+            var me = new Vue({
+                el: '#appliutwo',
+                data: {
+                    num: '',
+                    name: '',
+                    //详细信息data
+                    ourData: '',
+                    // names: '',
+                    contacts: '',
+                    calls: '',
+                    imgsl: [],
+                    deploymentTime: '',
+                    oldtime: '',
+                    newtime: ''
+                },
+                methods: {
+                    getdatas(dat) {
+                        this.name = dat.deviceName;
+                        me.num = dat.deviceNumber;
+                        this.evaluate = "空气质量";
+                        this.machineCode = "无数据" && dat.deviceNumber;
+                        this.smoke = "烟雾";
+                        this.proportion = "电量";
+                        this.ReportTime = "最近上报:" + dat.heartbeat;
+                        this.contacts = "无数据" && dat.oneContacts;
+                        this.calls = "无数据" && dat.onePhone;
+                        this.labels = ["无数据"] && [dat.deviceType];
+                        var imgD = ["no"];
+                        this.imgsl = ["no"] && imgD;
+                        this.deploymentTime = "无数据" && dat.stime;
+
+                        var ct = document.getElementsByClassName('flare-liu-top')[0];
+                        if (dat.onlineStatus == 1) {
+                            ct.style.backgroundImage = 'linear-gradient(to right, #3DDEA8 , #1FBD9A';
+                        } else {
+                            ct.style.backgroundImage = 'linear-gradient(to right, #787878 , #5F5F5F';
+
+                        }
+                    }
+                },
+                mounted() {
+                    this.oldtime = setTimeout(() => {//需要同步数据处理,input中value在mounted中没有直接传值
+                        clearTimeout(this.oldtime);
+                        this.ourData = JSON.parse(this.$refs.sidIput.value);//json对象转js对象
+                        // console.log(this.ourData);
+                        this.getdatas(this.ourData);
+                    }, 20);
+
+                    window.onload = () => {
+                        layui.use('element', function () {
+                            var $ = layui.jquery
+                                , element = layui.element; //Tab的切换功能,切换事件监听等,需要依赖element模块
+
+                            //触发事件
+                            var active = {
+                                // tabAdd: function () {
+                                //     //新增一个Tab项
+                                //     element.tabAdd('demo', {
+                                //         title: '新选项' + (Math.random() * 1000 | 0) //用于演示
+                                //         , content: '内容' + (Math.random() * 1000 | 0)
+                                //         , id: new Date().getTime() //实际使用一般是规定好的id,这里以时间戳模拟下
+                                //     })
+                                // }
+                                // , tabDelete: function (othis) {
+                                //     //删除指定Tab项
+                                //     element.tabDelete('demo', '44'); //删除:“商品管理”
+
+
+                                //     othis.addClass('layui-btn-disabled');
+                                // }
+                                // ,
+                                tabChange: function () {
+                                    //切换到指定Tab项
+                                    element.tabChange('demo', '22'); //切换到:用户管理
+                                }
+                            };
+
+                            $('.site-demo-active').on('click', function () {
+                                var othis = $(this), type = othis.data('type');
+                                active[type] ? active[type].call(this, othis) : '';
+                            });
+
+                            //Hash地址的定位
+                            var layid = location.hash.replace(/^#test=/, '');
+                            element.tabChange('test', layid);
+
+                            element.on('tab(test)', function (elem) {
+                                location.hash = 'test=' + $(this).attr('lay-id');
+                            });
+
+                        });
+
+                    }
+                }
+            })
+        </script>
+</body>
+
+</html>
\ No newline at end of file
diff --git a/public/map/popup/html/FlareClusterLayer_v3.html b/public/map/popup/html/FlareClusterLayer_v3.html
index c696572..6944d37 100644
--- a/public/map/popup/html/FlareClusterLayer_v3.html
+++ b/public/map/popup/html/FlareClusterLayer_v3.html
@@ -12,19 +12,51 @@
     <!-- layui -->
     <link rel="stylesheet" href="../../lib/layui/css/layui.css" media="all">
     <style>
-        
+        body {
+            /* border: 1px solid rgb(48, 170, 48); */
+        }
+
+        #appliu {
+            /* border: 1px solid #000; */
+            border-radius: 5px 5px 5px 5px;
+        }
+
+        .names {
+            width: 200px;
+            height: 45px;
+            color: #fff;
+            border-radius: 5px 5px 5px 5px;
+            line-height: 45px;
+            padding-left: 8px;
+            background-color: #fff;
+            /* border: 1px solid rgb(223, 52, 52); */
+            /* background-4356765795678953423465989-9=\][;'\.,/.,1i123ge: linear-gradient(to right, #FFC031, #F49055);
+            background-image: linear-gradient(to right, #3DDEA8, #1FBD9A);
+            background-image: linear-gradient(to right, #787878, #5F5F5F); */
+        }
+
+        .msgs {
+            width: 200px;
+            height: 30px;
+            line-height: 30px;
+            padding-left: 8px;
+            /* border: 1px solid rgb(30, 160, 192); */
+        }
     </style>
 </head>
 
 <body>
     <div id="appliu" class='police-details-box' class="layui-anim" data-anim="layui-anim-down">
-        <div>{{name}}</div>
-        <div>{{num}}</div>
-        <div class="layui-anim" data-anim="layui-anim-scale">平滑放大</div>
+        <!-- 从layui传值给iframe 的占位#input1 -->
+        <input type="text" id="input1" ref="sidIputoine" style="display:none">
+        <!-- 从layui传值给iframe 的占位#input2
+        <input type="text" id="input2" ref="ip2" style="display:none" v-model='ip2'> -->
+        <div class="names">{{name}}</div>
+        <div class="msgs">{{num}}</div>
         <script src="../../lib/layui/layui.js" charset="utf-8"></script>
         <script>
             // var index = parent.layer.getFrameIndex(window.name);
-            
+
         </script>
         <script>
             var me = new Vue({
@@ -33,26 +65,46 @@
                     num: '',
                     name: ''
                 },
+                ourData: '',
+                // ip2: '',
+                // computed: {
+                //     ip2s() {
+                //         // var a = JSON.parse(this.$refs.ip2.value);
+                //         var a = me.ip2;
+                //         console.log(a, 'computed');
+                //         return a;
+                //     }
+                // },
                 methods: {
-                    GetQueryString(useName) {
-                        var reg = new RegExp("(^|&)" + useName + "=([^&]*)(&|$)", "i");
-                        var r = window.location.search.substr(1).match(reg);
-                        if (r != null) {
-                            return decodeURI(r[2]);
+                    getdatas(dat) {
+                        me.name = dat.deviceName.length >= 13 ? dat.deviceName.substring(0, 13) + '···' : dat.deviceName;
+                        this.num = "无数据" && dat.deviceNumber;
+                        var ct = document.getElementsByClassName('names')[0];
+                        if (dat.onlineStatus == 1) {
+                            ct.style.backgroundImage = 'linear-gradient(to right, #3DDEA8 , #1FBD9A';
                         } else {
-                            return null;
+                            ct.style.backgroundImage = 'linear-gradient(to right, #787878 , #5F5F5F';
+
                         }
                     }
                 },
                 mounted() {
-                    window.onload = () => {
-                        // console.log(me);
-                        // console.log(window.location.href)
-                        me.num = me.GetQueryString("num");
-                        me.name = me.GetQueryString("name");
-                        // console.log(me.num,me.name);
-                    }
+                    this.oldtime = setTimeout(() => {//需要同步数据处理,input中value在mounted中没有直接传值
+                        clearTimeout(this.oldtime);
+                        this.ourData = JSON.parse(this.$refs.sidIputoine.value);//json对象转js对象
+                        // console.log(this.ourData);
+                        this.getdatas(this.ourData);
+                    }, 20);
 
+                    // window.onload = () => {
+
+                    // }
+
+                },
+                watch: {
+                    ip2s() {
+                        console.log(this.ip2s)
+                    }
                 }
             })
         </script>
diff --git a/public/map/widgets/securityMap/SecurityMap.js b/public/map/widgets/securityMap/SecurityMap.js
index 2404d1d..00dd42c 100644
--- a/public/map/widgets/securityMap/SecurityMap.js
+++ b/public/map/widgets/securityMap/SecurityMap.js
@@ -131,6 +131,19 @@
         addEntitys: null,
         entitysData: [],
 
+
+        // 用来存储区域名称
+        globalRegionName: null,
+
+        // 用来区域得最大最小经纬度
+        currentDrawing: [],
+
+        // 存储新增点,线,面,数据的地方
+        polygonData: [],
+        polygonFlag: false,
+        editToolbar: null,
+        addPolygonEntitys: null,
+
         // 巡逻区域或者巡逻路线的描述
         routeOrRegionDescribe: null,
 
@@ -143,12 +156,13 @@
         y: 0,
         offset: null,
         moveThis: null,
+
         // 电子围栏需要新增的Id
         newElectronicFenceId: null,
 
         // 新增路线时,派发人员,人员名称,以及人员id
-        peopleRealName: null,
-        pepleRealId: null,
+        anumber: null,
+        realname: null,
 
         //存放聚合实体
         clusterLayer: null,
@@ -164,6 +178,7 @@
             this.addPolygonEntitys = new GraphicsLayer({
                 id: 'addPolygonEntitys'
             });
+
             // 添加所有图层的地方
             this.entityPolygonAll = new GraphicsLayer({
                 id: 'entityPolygonAll'
@@ -171,17 +186,13 @@
 
 
             this._map.addLayer(this.addEntitys);
-
-
             this._map.addLayer(this.addPolygonEntitys);
             this._map.addLayer(this.entityPolygonAll);
 
         },
 
         startup: function() {
-
             objThis._map.addLayer(objThis._siteLayer);
-
         },
 
         //根据key 取value值
@@ -189,17 +200,313 @@
             return (document.location.search.match(new RegExp("(?:^\\?|&)" + key + "=(.*?)(?=&|$)")) || ['', null])[1];
         },
 
+        //带有中文的解码
+        getQueryString: function(name) {
+            var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
+            var r = window.location.search.substr(1).match(reg);
+            if (r != null) return decodeURI(r[2]);
+            return null;
+        },
+
         //页面打开后,获取参数数据
         open: function() {
             var that = this;
             var lgtd = that.getQueryStringByKey('jd');
             var lttd = that.getQueryStringByKey('wd');
+            if (lgtd == null || lgtd == "") {
+                return;
+            }
+            anumber = that.getQueryStringByKey('code');
+            realname = that.getQueryString('name');
+            //所在位置标记
             that.addPoint(that.addEntitys, lgtd, lttd, './images/security.png');
+            //获取当前处警员的电子围栏信息
+            $.ajax({
+                //https://web.byisf.com/api/blade-jfpts/enclosure/enclosure/selectEnclosureDetail
+                url: 'http://localhost:89/enclosure/enclosure/selectEnclosureDetail',
+                type: 'GET',
+                dataType: 'JSON',
+                data: {
+                    anumber: anumber
+                },
+                success: function(result) {
+                    //如果已有电子围栏信息,展示出围栏区域,并且可以编辑
+                    if (result.code == 200) {
+                        if (JSON.stringify(result.data) != "{}") {
+                            var entityArr = [];
+                            var coordinate = result.data.coordinate.match(/\(([^)]*)\)/).toString();
+                            var a = coordinate.indexOf("(");
+                            var b = coordinate.indexOf(")");
+                            coordinate = coordinate.substring(a + 1, b) + "";
+                            if (coordinate && coordinate != '') {
+                                coordinate = coordinate.split(',');
+                                for (var i = 0; i < coordinate.length; i++) {
+                                    entityArr.push([Number(coordinate[i].split(' ')[0]), Number(coordinate[i].split(' ')[1])]);
+                                }
+                            }
+                            that.addPolygon(that.addPolygonEntitys, entityArr);
+                        } else {
+                            //如果无电子围栏信息,则提示请编辑电子围栏信息
+                            //编辑好电子围栏信息后,将当前处警员的电子围栏信息保存到数据库
+                            that.newElectronicFenceId = null;
+
+                            layui.use('layer', function() {
+                                layui.layer.msg('请开始划分电子围栏');
+                            })
+                            that.polygonFlag = true;
+                            that.newElectronicFenceId = anumber;
+                        }
+
+                    }
+                }
+            })
+
+            //调用点击事件
+            that.clickHand();
+
+            //鼠标右击事件
+            document.getElementById('mainMapWidget').onmousedown = function(event) {
+                if (event.button == 2) {
+                    if (that.polygonData.length < 2) {
+                        layui.use('layer', function() {
+                            layui.layer.msg('不能形成区域,请继续划分!!!')
+                        })
+                        return;
+                    }
+                    if (that.polygonFlag == true) {
+                        // 勾画最后一个点
+                        var normalizedVal = webMercatorUtils.xyToLngLat(event.mapPoint.x, event.mapPoint.y);
+                        that.polygonData.push([normalizedVal[0], normalizedVal[1]]);
+                        // 声明空字符串,存储数据
+                        var dataStr = '';
+                        var data = null;
+                        if (that.patrolIndex == 1) {
+                            that.addPolyline(that.addPolygonEntitys, that.polygonData);
+                            // 获取数据
+                            data = that.addPolygonEntitys.graphics[0].geometry.paths[0];
+                        } else {
+                            that.addPolygon(that.addPolygonEntitys, that.polygonData);
+                            // 获取数据
+                            data = that.addPolygonEntitys.graphics[0].geometry.rings[0];
+                        }
+
+                        // 组装数据
+                        for (var i = 0; i < data.length; i++) {
+                            dataStr += (data[i][0] + ' ' + data[i][1] + ',');
+                        }
+                        dataStr = dataStr.substring(0, dataStr.length - 1);
+
+                        //将数据存入数据库
+                        $.ajax({
+                            //url: 'https://web.byisf.com/api/blade-jfpts/enclosure/enclosure/updatee',
+                            url: 'http://localhost:89/enclosure/enclosure/insertes',
+                            type: 'POST',
+                            dataType: 'JSON',
+                            data: {
+                                aname: realname,
+                                anumber: anumber,
+                                routeInfo: dataStr
+                            },
+                            success: function(result) {
+                                if (result.code == 200) {}
+                            }
+                        })
+                    }
+                    that.polygonFlag = false;
+
+                }
+            }
         },
 
-        close: function() {
+        // 鼠标点击事件
+        clickHand: function() {
+
+            var self = this;
+            self._map.onClick = mapClick;
+
+            function mapClick(evt) {
+                debugger;
+                var normalizedVal = webMercatorUtils.xyToLngLat(evt.mapPoint.x, evt.mapPoint.y);
+                var y = self._map.toMap({
+                    spatialReference: '4326',
+                    type: "point",
+                    x: evt.screenPoint.x,
+                    y: evt.screenPoint.y,
+                });
+
+
+                // 编辑中的
+                if (self.polygonFlag == true) {
+                    if (self.polygonData.length == 0) {
+                        self.polygonData.push([normalizedVal[0], normalizedVal[1]]);
+                        self.addPoint(self.addPolygonEntitys, normalizedVal[0], normalizedVal[1]);
+                    } else if (self.polygonData.length == 1) {
+                        self.polygonData.push([normalizedVal[0], normalizedVal[1]]);
+                        self.addPolyline(self.addPolygonEntitys, self.polygonData);
+                        return;
+                    } else if (self.polygonData.length > 1) {
+                        self.polygonData.push([normalizedVal[0], normalizedVal[1]]);
+                        self.addPolygon(self.addPolygonEntitys, self.polygonData);
+                    }
+
+                } else { // 不在编辑中
+                    if (evt.graphic) { // 点击在图形上
+                        // 保存当前点击得图形
+                        // self.currentDrawing = evt.graphic;
+
+                        self.modifyPolygon();
+
+                        self.activateToolbar(evt.graphic);
+                    } else { // 点击不在图形上
+
+                        self.modifyPolygon()
+                    }
+                }
+
+            }
+
+            // 提示信息
+            $(document).off('mousemove').mousemove(function(e) {
+                var y = e.clientY + 10;
+                var x = e.clientX + 20;
+
+                if (e.clientX < 40) {
+                    var x = 40;
+                }
+
+                if (e.clientY < 42) {
+                    y = 42;
+                }
+
+                if (e.clientY > ($(window).height() - 82)) {
+                    y = ($(window).height() - 66);
+                }
+
+                if (e.clientX > ($(window).width() - 184)) {
+                    x = ($(window).width() - 184);
+                }
+
+                if (self.tabIndex == 1 || self.tabIndex == 2) {
+
+                    if (self.polygonFlag == true) {
+                        $('.police-dispatching .tips').stop().show();
+
+                        if (self.polygonData.length == 0) {
+                            $('.police-dispatching .tips').text('单击左键开始绘制。');
+                        } else {
+                            if (e.clientY > ($(window).height() - 98)) {
+                                y = ($(window).height() - 88);
+                            }
+                            $('.police-dispatching .tips').text('单击左键新增加点。单击右键完成绘制。');
+                        }
+
+                        $('.police-dispatching .tips').css({
+                            'top': y,
+                            'left': x,
+                        })
+                    } else {
+                        $('.police-dispatching .tips').stop().hide();
+                    }
+
+                } else {
+                    $('.police-dispatching .tips').stop().hide();
+                }
+            })
+        },
+
+        //新增线
+        addPolyline: function(entitys, path) {
+            entitys.clear();
+            var polylineSymbol = new SimpleLineSymbol();
+            polylineSymbol.color = [255, 0, 0, 1];
+            polylineSymbol.width = 4;
+            var polyline = new Polyline({
+                "paths": [path],
+                "spatialReference": {
+                    "wkid": 4326
+                }
+            });
+
+            entitys.add(new Graphic(polyline, polylineSymbol));
+        },
+
+
+        //编辑电子围栏(多边形)
+        modifyPolygon: function() {
+            var self = this;
+            if (self.editToolbar != null) {
+                //获取当前的多边形数据
+                var polygon = self.editToolbar.getCurrentState();
+
+                //释放编辑后
+                self.editToolbar.deactivate();
+
+                self.editToolbar = null;
+
+                // 声明空字符串,存储数据
+                var dataStr = '';
+
+                // 获取数据
+                var data = polygon.graphic.geometry.rings[0];
+
+                // 组装数据
+                for (var i = 0; i < data.length; i++) {
+                    dataStr += (data[i][0] + ' ' + data[i][1] + ',');
+                }
+                dataStr = dataStr.substring(0, dataStr.length - 1);
+
+                //更新电子围栏数据
+                $.ajax({
+                    //url: 'https://web.byisf.com/api/blade-jfpts/enclosure/enclosure/updatee',
+                    url: 'http://localhost:89/enclosure/enclosure/updatee',
+                    type: 'POST',
+                    dataType: 'JSON',
+                    data: {
+                        anumber: anumber,
+                        routeInfo: dataStr
+                    },
+                    success: function(result) {
+                        if (result.code == 200) {}
+                    }
+                })
+
+            }
+        },
+
+
+        activateToolbar: function(graphic) {
+            var tool = 0;
+
+            this.editToolbar = new Edit(this._map);
+
+            // if (registry.byId("tool_move").checked) {
+            tool = tool | Edit.MOVE;
+            // }
+            // if (registry.byId("tool_vertices").checked) {
+            tool = tool | Edit.EDIT_VERTICES;
+            // }
+            // if (registry.byId("tool_scale").checked) {
+            tool = tool | Edit.SCALE;
+            // }
+            // if (registry.byId("tool_rotate").checked) {
+            tool = tool | Edit.ROTATE;
+            // }
+            // enable text editing if a graphic uses a text symbol
+            // if ( graphic.symbol.declaredClass === "esri.symbol.TextSymbol" ) {
+            tool = tool | Edit.EDIT_TEXT;
+            // }
+
+            var options = {
+                allowAddVertices: true,
+                allowDeleteVertices: true,
+                uniformScaling: true
+            };
+            this.editToolbar.activate(tool, graphic, options);
 
         },
+
+        close: function() {},
+
         // 获取当前时间,以及昨天现在的时间
         getTime: function getTime() {
             var timestamp = Date.parse(new Date());
@@ -246,13 +553,12 @@
             pt.entityData = item;
             var graphic = new esri.Graphic(pt, symbol);
             entitys.add(graphic);
-
-
             entityContent.push(item);
         },
 
+        //在地图上新增点
         addPoint: function(entitys, lgtd, lttd, img) {
-            var symbol = new esri.symbol.PictureMarkerSymbol(img, 33, 48);
+            var symbol = new esri.symbol.PictureMarkerSymbol(img, 22, 22);
             var pt = new Point(lgtd, lttd, new SpatialReference({
                 wkid: 4326
             }));
@@ -260,99 +566,20 @@
             entitys.add(graphic);
         },
 
-        addPoints: function(entitys, lgtd, lttd, img) {
-            var symbol = new esri.symbol.PictureMarkerSymbol(img, 33, 48);
-            var pt = new Point(lgtd, lttd, new SpatialReference({
-                wkid: 4326
-            }));
-            var graphic = new esri.Graphic(pt, symbol);
-            entitys.add(graphic);
-        },
-
-        //聚合图层事件
-        flareClusterLayer: function(datas) {
-
-            console.log(1);
-
-            var that = this;
-
-            var preClustered = false;
-            var displaySingleFlaresAtCount = 10;
-            var areaDisplayMode = "";
-            // var allData = JSON.parse(DATA);
-            // DataManager.setData(allData);
-
-            //init the layer, more options are available and explained in the cluster layer constructor
-            that.clusterLayer = new FlareClusterLayer({
-                id: "flare-cluster-layer",
-                spatialReference: new esri.SpatialReference({
+        //绘制多边形
+        addPolygon: function(entitys, rings) {
+            entitys.clear();
+            var polygonSymbol = new SimpleFillSymbol();
+            polygonSymbol.color = [24, 255, 243, 0.411];
+            var polygon = new Polygon({
+                "rings": [rings],
+                "spatialReference": {
                     "wkid": 4326
-                }),
-                subTypeFlareProperty: "facilityType",
-                singleFlareTooltipProperty: "name",
-                displaySubTypeFlares: true,
-                displaySingleFlaresAtCount: displaySingleFlaresAtCount,
-                flareShowMode: "mouse",
-                preClustered: preClustered,
-                clusterRatio: 75,
-                clusterAreaDisplay: areaDisplayMode,
-                clusteringBegin: function(e) {
-                    console.log(e, "clustering begin");
-                },
-                clusteringComplete: function() {
-                    console.log("clustering complete");
                 }
             });
-
-            //set up a class breaks renderer to render different symbols based on the cluster count. Use the required clusterCount property to break on.
-            var defaultSym = new PictureMarkerSymbol("./images/jingbaored.png", 33, 48).setOffset(0, 15);
-            var renderer = new ClassBreaksRenderer(defaultSym, "clusterCount");
-            var xlSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 32, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new dojo.Color([200, 52, 59, 0.8]), 1), new dojo.Color([250, 65, 74, 0.8]));
-            var lgSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 28, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new dojo.Color([41, 163, 41, 0.8]), 1), new dojo.Color([51, 204, 51, 0.8]));
-            var mdSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 24, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new dojo.Color([82, 163, 204, 0.8]), 1), new dojo.Color([102, 204, 255, 0.8]));
-            var smSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 52, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new dojo.Color([230, 184, 92, 0.8]), 1), new dojo.Color([255, 204, 102, 0.8]));
-            renderer.addBreak(0, 19, smSymbol);
-            renderer.addBreak(20, 150, mdSymbol);
-            renderer.addBreak(151, 1000, lgSymbol);
-            renderer.addBreak(1001, Infinity, xlSymbol);
-
-            that.clusterLayer.setRenderer(renderer); //use standard setRenderer.
-
-            //set up a popup template
-            var template = new PopupTemplate({
-                title: "{name}",
-                fieldInfos: [{
-                        fieldName: "facilityType",
-                        label: "Facility Type",
-                        visible: true
-                    },
-                    {
-                        fieldName: "postcode",
-                        label: "Post Code",
-                        visible: true
-                    },
-                    {
-                        fieldName: "isOpen",
-                        label: "Opening Hours",
-                        visible: true
-                    }
-                ]
-            });
-
-            //clusterLayer.infoTemplate = template;
-            that._map.infoWindow.titleInBody = false;
-
-            that._map.addLayer(that.clusterLayer);
-
-            //var data = DataManager.getData();
-            that.clusterLayer.addData(datas);
-
-        },
-        clearLayer: function() {
-            var that = this;
-            that._map.removeLayer(that.clusterLayer);
-            that.clusterLayer = null;
+            entitys.add(new Graphic(polygon, polygonSymbol));
         }
+
     });
     return Widget;
 });
\ No newline at end of file
diff --git a/public/map/widgets/supervisoryMap/FlareClusterLayer_v3.js b/public/map/widgets/supervisoryMap/FlareClusterLayer_v3.js
index 2199920..f56d68e 100644
--- a/public/map/widgets/supervisoryMap/FlareClusterLayer_v3.js
+++ b/public/map/widgets/supervisoryMap/FlareClusterLayer_v3.js
@@ -169,7 +169,7 @@
     },
     _mapClick: function (e) {//地图全局点击事件 标记不能点击
       // console.log('地图全局点击事件');
-      
+
       if (!e.target) {
         return;
       }
@@ -189,62 +189,144 @@
 
     onClick: function (evt) { //标志以及聚合表示点击事件
       var eour = evt.graphic.attributes.clusterCount;
-      if(eour == undefined){
-        var dataO = evt
+      if (eour == undefined) {
+        var dataO = evt;
+        var aa = evt.graphic.screenX;
+        var bb = evt.graphic.screenX;
         var data = {
-          nums : evt.graphic.attributes.deviceNumber,
-          nams : evt.graphic.attributes.deviceName,
+          nums: evt.graphic.attributes.deviceNumber,
+          nams: evt.graphic.attributes.deviceName,
+          type: evt.graphic.attributes.jtype,
         }
-        console.log(dataO);
-        
-        var rightCard = (num,name,posi)=>{
-          var that = this;
-          var url = './popup/html/FlareClusterLayer_v3.html?num=' + num + '&name=' + name;
-            layui.use('layer', function () {
-                that.layuiLayer = layui.layer;
-                // that.layuiLayer.config({
-                //     extend: 'myskin/police-details.css'
-                // });
-                that.layuiLayer.close(that.layuiLayer.index);
-                that.layuiLayer.open({
-                    title: '',
-                    type: 2,
-                    shadeClose: true,
-                    shade: false,
-                    skin: 'demo-class',
-                    id: 'onelyOne',
-                    maxmin: false, //开启最大化最小化按钮
-                    // area: ['500px', '400px'],
-                    offset: posi,
-                    skin: 'police-details',
-                    content: [url,'no'],
-                    resize: false,
-                    closeBtn: 1,
-                    success: function(layero, index){//成功后添加全局点击关闭
-                      console.log(layero, index);
-                      
-                      // var a = window.onmousedown  = ()=>{
-                      //   // parent[0].layer.close(index);
-                      //   // begins();
-                      // }
-                      var d = document.onclick = ()=>{
-                        parent[0].layer.close(index);
-                        d = '';
-                      }
-                    },
-                });
+        // console.log(dataO);
+        // console.log(aa - bb);
+
+        var fCard = (posi) => {
+          var that = this,
+            url = './popup/html/FlareClusterLayer_v3.html',
+            clickD = null,
+            downs = null,
+            moves = null,
+            ups = null;
+          layui.use('layer', function () {
+            that.layuiLayer = layui.layer;
+            that.layuiLayer.config({
+              extend: 'myskin/FlareClusterLayer.css'
+            });
+            // layer.alert('layer 新皮肤');
+            that.layuiLayer.close(that.layuiLayer.index);
+            that.layuiLayer.open({
+              title: '',
+              type: 2,
+              shadeClose: false,
+              shade: false,
+              skin: 'demo-class',
+              id: 'onelyOne',
+              maxmin: false, //开启最大化最小化按钮
+              area: ['200px', '75px'],
+              // area: 'auto',
+              offset: posi,
+              skin: 'flare',
+              closeBtn: 0,//关闭按钮,可通过配置1和2来展示,0关闭
+              content: [url, 'no'],
+              resize: false,
+              scrollbar: false,
+              tipsMore: true, //允许多个tipe
+              // content: num,
+              success: function (layero, index) {//成功后添加全局点击关闭
+                $("#layui-layer-iframe" + index).contents().find("#input1").val(JSON.stringify(evt.graphic.attributes));
+                // console.log(layero, index);
+                layero[0].style.position = 'absolute';
+                downs = document.onmousedown = () => {
+                  // console.log('down');//start
+                  // downs = document.onmousedown = null;
+                  var mx = window.event.clientX//鼠标初始位置
+                    , my = window.event.clientY
+                    , cx = this.offset[1].replace("px","")//初始位置
+                    , cy = this.offset[0].replace("px","");
+                  moves = document.onmousemove = () => {
+                    // console.log('move');//move
+                    // console.log(this.offset)
+                    var ux = window.event.clientX//记录实时位置
+                      , uy = window.event.clientY;
+                    var endx = +cx + (ux - mx)// 初始位置+(鼠标初始位置-实时位置)
+                      , endy = +cy + (uy - my);
+                    layero[0].style.left = endx + 'px';
+                    layero[0].style.top = endy + 'px';
+                    // console.log(+cx, +cy,'初始位置');
+                    // console.log(mx, my,'鼠标初始位置');
+                    // console.log(ux, uy,'记录实时位置');
+                    // console.log(ux, uy,'最后位置');
+                    
+                    ups = document.onmouseup = () => {
+                      // console.log('up');//end
+                      downs = document.onmousedown = null;
+                      moves = document.onmousemove = null;
+                      ups = document.onmouseup = null;
+                    }
+                  }
+                }
+
+                clickD = document.onclick = () => {
+                  parent[0].layer.close(index);
+                  parent[0].layer.close(+index + 1);
+                  // parent[0].layer.closeAll();
+                  // console.log(111111111111)
+                  clickD = document.onclick = null;
+                }
+
+              },
+              end: function () {//关闭事件
+
+              }
+            });
+            that.layuiLayer.open({//第二个iframe
+              title: '',
+              type: 2,
+              shadeClose: true,
+              shade: false,
+              skin: 'demo-class',
+              id: 'onelyTwo',
+              maxmin: false, //开启最大化最小化按钮
+              area: ['360px', '484px'],
+              // area: 'auto',
+              offset: 'r',
+              skin: 'flare',
+              isOutAnim: false,
+              closeBtn: 0,//关闭按钮,可通过配置1和2来展示,0关闭
+              content: ['./popup/html/FlareClusterLayer_v3 copy.html'],
+              resize: false,
+              scrollbar: false,
+              // tipsMore: true, //允许多个tipe
+              // content: num,
+              success: function (layero, index) {//成功后添加全局点击关闭
+                // var z = document.onclick = ()=>{
+                //   parent[0].layer.close(index);
+                // //   // parent[0].layer.close(+index + 1);
+                //   z = null;
+                // }
+                //尝试传值
+                //js对象转json对象
+                $("#layui-layer-iframe" + index).contents().find("input").val(JSON.stringify(evt.graphic.attributes));
+              },
             })
+          })
         }
-        var offsetMy = [+evt.screenY - 370 + 'px',+evt.screenX - 370 + 'px'];
-        rightCard  (data.nums,data.nams,offsetMy);
-        var begins = ()=>{
-          var offsetMy = [+evt.screenY - 370 + 'px',+evt.screenX - 370 + 'px'];
-          rightCard  (data.nums,data.nams,offsetMy);
+        var offsetMy = [+evt.screenY - 300 + 'px', +evt.screenX - 172.5 + 'px'];
+        // var offsetMy = [+evt.graphic._shape.shape.y - 80 + 'px',+evt.graphic._shape.shape.x  + 'px'];
+        fCard(offsetMy);
+        var begins = (xy) => {
+          var offsetMy = [xy.y + 'px', xy.x + 'px'];
+          fCard(offsetMy);
         }
-      }else {
-        console.log(num,'zoom');
+      } else {
+        // var taxLotExtent = evt.graphic.geometry.getExtent(); 
+        // this.map.setExtent(evt.graphic._extent)
+        this.map.setZoom(this.map.getZoom() + 1)//地图中心缩放
+        // this.map.setZoom(18);
+        // console.log('111:', this.map.zoomToFullExtent(), '222:', evt, evt.graphic._extent, 'zoom');
       }
-      console.log(evt)
+      // console.log(evt)
       this._restoreInfoWindowSettings();
 
       if (evt.graphic.attributes.isCluster) {
@@ -444,7 +526,7 @@
       dojo.query("g.cluster-group:empty", this.getNode()).forEach(dojo.destroy);
     },
 
-    
+
     _graphicDraw: function (e) {
       var g = e.graphic;
       if (g.attributes.isCluster) {
@@ -810,11 +892,11 @@
       //add a text element for the label to display the count and add to the group
       var shapeCenter = this._getShapeCenter(cluster.graphicShape);
       var textShape = groupShape.createText({
-          x: shapeCenter.x,
-          y: shapeCenter.y + (this.textSymbol.font.size / 2 - 2),
-          text: cluster.clusterCount,
-          align: 'middle'
-        })
+        x: shapeCenter.x,
+        y: shapeCenter.y + (this.textSymbol.font.size / 2 - 2),
+        text: cluster.clusterCount,
+        align: 'middle'
+      })
         .setFont({
           size: this.textSymbol.font.size,
           family: this.textSymbol.font.family,
@@ -938,10 +1020,10 @@
       //create a transparent circle that contains the boundary of the flares, this is to make sure the mouse events don't fire moving in between flares
       var conCircleRadius = (center.x - (bbox.x - radius - buffer)) + radius; //get the radius of the circle to contain everything
       var containerCircle = groupShape.createCircle({
-          cx: center.x,
-          cy: center.y,
-          r: conCircleRadius
-        })
+        cx: center.x,
+        cy: center.y,
+        r: conCircleRadius
+      })
         //.setStroke({ width: 1, color: "000" })
         .setFill(new Color([0, 0, 0, 0]));
       containerCircle.rawNode.setAttribute("class", "flare-object cluster-object");
@@ -1242,11 +1324,11 @@
       var textShapes = [];
       for (var i = 0, len = lines.length; i < len; i++) {
         var textShape = tooltipGroup.createText({
-            x: xPos,
-            y: yPos + (i * 10),
-            text: lines[i],
-            align: 'middle'
-          })
+          x: xPos,
+          y: yPos + (i * 10),
+          text: lines[i],
+          align: 'middle'
+        })
           .setFill("#000")
           .setFont({
             size: 8,
@@ -1260,12 +1342,12 @@
       var rectPadding = 2;
       var textBox = tooltipGroup.getBoundingBox();
       var rectShape = tooltipGroup.createRect({
-          x: textBox.x - rectPadding,
-          y: textBox.y - rectPadding,
-          width: textBox.width + (rectPadding * 2),
-          height: textBox.height + (rectPadding * 2),
-          r: 0
-        })
+        x: textBox.x - rectPadding,
+        y: textBox.y - rectPadding,
+        width: textBox.width + (rectPadding * 2),
+        height: textBox.height + (rectPadding * 2),
+        r: 0
+      })
         .setFill(new Color([255, 255, 255, 0.9]))
         .setStroke({
           color: "#000",
@@ -1401,11 +1483,11 @@
       //Have to add the flare text after the flare group animation otherwise Edge just reloads the page and dies for some reason?
       if (this.shape.flareText) {
         var flareText = this.shape.createText({
-            x: this.shape.flareText.location.x,
-            y: this.shape.flareText.location.y,
-            text: this.shape.flareText.text,
-            align: 'middle'
-          })
+          x: this.shape.flareText.location.x,
+          y: this.shape.flareText.location.y,
+          text: this.shape.flareText.text,
+          align: 'middle'
+        })
           .setFill(layer.textSymbol.color)
           .setFont({
             size: this.shape.flareText.textSize,
diff --git a/public/map/widgets/supervisoryMap/SupervisoryMap.js b/public/map/widgets/supervisoryMap/SupervisoryMap.js
index da07b11..4192bdc 100644
--- a/public/map/widgets/supervisoryMap/SupervisoryMap.js
+++ b/public/map/widgets/supervisoryMap/SupervisoryMap.js
@@ -126,7 +126,7 @@
     layuiLayer: null,
     layuiLadate: null,
     tabIndex: 0,
-
+    heatmapfeatureLayer: null,//liu热力图
     // 保留添加实体图层的变量
     addEntitys: null,
     entitysData: [],
@@ -190,7 +190,7 @@
     getQueryStringByKey: function (key) {
       return (document.location.search.match(new RegExp("(?:^\\?|&)" + key + "=(.*?)(?=&|$)")) || ['', null])[1];
     },
-
+    entityData: [],
     open: function () {
       var that = this;
       $.ajax({
@@ -198,18 +198,101 @@
         type: 'get',
         dataType: 'JSON',
         success: function (res) {
-         
+
           var datas = res.data;
+
+
+          var heatmapRenderer = null;
+          that.entityData = [];
+
+
+
           for (var i = 0; i < datas.length; i++) {
             datas[i].x = Number(datas[i].jd);
             datas[i].y = Number(datas[i].wd);
+            // that.entityData[i].lgtd = Number(datas[i].jd);
+            // that.entityData[i].lttd = Number(datas[i].wd);
+            that.entityData.push({
+              lgtd: Number(datas[i].jd),
+              lttd: Number(datas[i].wd)
+            })
           }
+          // console.log(that.entityData, 444444444444444444444)
+          // console.log(datas,444444444444444444444)
           that.flareClusterLayer(datas);
+
+          that.heatmapfeatureLayer = that.heatmFeaLayers();
+
+          // console.log(that.heatmapfeatureLayer);
           
+          that._map.addLayer(that.heatmapfeatureLayer);
+          
+          that.checkBoxSelect();
+          
+          // console.log(that.heatmapfeatureLayer);
         }
       })
 
     },
+    heatmFeaLayers: function () {// liu 热力图渲染器,加载热力图
+
+      var layerDefinition = {
+        "geometryType": "esriGeometryPoint",
+        "fields": [{
+          "num": "num",
+          editable: true,
+          nullable: true,
+          "type": "esriFieldTypeInteger",
+          "alias": "数量"
+        }]
+      };
+      var featureCollection = {
+        layerDefinition: layerDefinition,
+        featureSet: null
+      };
+      //创建 FeatureLayer 图层
+      var featureLayer = new esri.layers.FeatureLayer(featureCollection, {
+        mode: esri.layers.FeatureLayer.MODE_SNAPSHOT,
+        outFields: ["*"],
+        opacity: .8
+      });
+      //设置渲染方式
+
+      return featureLayer;
+    },
+
+    checkBoxSelect: function (self) {
+      var that = this;
+      var heatmapRenderer = null;
+      // // return
+      // 选中
+      // if ($(self).prop('checked') == true) {
+      // if (1) {
+        heatmapRenderer = new HeatmapRenderer({
+          colorStops: [
+            { ratio: 0.45, color: "rgba(000,000,255,0)" },
+            { ratio: 0.55, color: "rgb(000,255,255)" },
+            { ratio: 0.65, color: "rgb(000,255,000)" },
+            { ratio: 0.75, color: "rgb(234,126,15)" },
+            { ratio: 1.00, color: "rgb(255,000,000)" },
+          ],
+          blurRadius: 42,
+          maxPixelIntensity: 184,
+          minPixelIntensity: 0
+        });
+        this.heatmapfeatureLayer.setRenderer(heatmapRenderer);
+        // 取消选中
+        var point = null;
+        for (var i = 0; i < that.entityData.length; i++) {
+          point = new esri.geometry.Point(this.entityData[i].lgtd, this.entityData[i].lttd, new esri.SpatialReference({ wkid: 4326 }));
+          this.heatmapfeatureLayer.add(new esri.Graphic(point));
+        }
+      // } else {
+      //   this.heatmapfeatureLayer.clear();
+      //   this.heatmapfeatureLayer.setRenderer();
+      // }
+    },
+
     close: function () {
 
     },
@@ -284,14 +367,16 @@
 
     clickHand: function (e) {//top点击事件,导航
       console.log(e);
-    }, 
+    },
+    
+    
     //聚合图层事件
     flareClusterLayer: function (datas) {  //top聚合事件,导航
 
       var that = this;
 
       var preClustered = false;
-      var displaySingleFlaresAtCount = 10;
+      var displaySingleFlaresAtCount = 20;
       var areaDisplayMode = "";
       // var allData = JSON.parse(DATA);
       // DataManager.setData(allData);
@@ -308,7 +393,7 @@
         displaySingleFlaresAtCount: displaySingleFlaresAtCount,
         flareShowMode: "mouse",
         preClustered: preClustered,
-        clusterRatio: 75,
+        clusterRatio: 120,
         clusterAreaDisplay: areaDisplayMode,
         clusteringBegin: function (e) {
           console.log(e, "clustering begin");
@@ -336,20 +421,20 @@
       var template = new PopupTemplate({
         title: "{name}",
         fieldInfos: [{
-            fieldName: "facilityType",
-            label: "Facility Type",
-            visible: true
-          },
-          {
-            fieldName: "postcode",
-            label: "Post Code",
-            visible: true
-          },
-          {
-            fieldName: "isOpen",
-            label: "Opening Hours",
-            visible: true
-          }
+          fieldName: "facilityType",
+          label: "Facility Type",
+          visible: true
+        },
+        {
+          fieldName: "postcode",
+          label: "Post Code",
+          visible: true
+        },
+        {
+          fieldName: "isOpen",
+          label: "Opening Hours",
+          visible: true
+        }
         ]
       });
 
diff --git a/src/api/client/client.js b/src/api/client/client.js
index b8c1451..1f77856 100644
--- a/src/api/client/client.js
+++ b/src/api/client/client.js
@@ -87,3 +87,13 @@
   })
 }
 
+export const getBaTree = (id) => {
+  return request({
+    url: '/api/blade-user/pages',
+    method: 'get',
+    params: {
+      id,
+    }
+  })
+}
+
diff --git a/src/components/liu-legend/Legend.vue b/src/components/liu-legend/Legend.vue
index 72570c6..ed41264 100644
--- a/src/components/liu-legend/Legend.vue
+++ b/src/components/liu-legend/Legend.vue
@@ -16,11 +16,11 @@
         return{
             datalist:[//示例数据格式
                 {
-                    color: 'rgb(233, 39, 25)',
+                    color: 'rgb(236, 83, 37)',
                     text: '掉线'
                 },
                 {
-                    color: 'black',
+                    color: 'rgb(49, 49, 49)',
                     text: '在线'
                 }
             ]
@@ -34,21 +34,22 @@
     position: absolute;
     right: 0;
     .l-l-o{
-        color: rgba($color: #000000, $alpha: .5);
+        color: rgba($color: #000000, $alpha: .8);
+        color: rgb(49, 49, 49);
         position: relative;
         right: 150px;
         margin-left: 10px;
-        font-size: 12px;
-        font-weight: 300;
+        font-size: 14px;
+        font-weight: 500;
         font-family: 'Chinese Quote,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol';
     }
     .l-l-Img{
         display: inline-block;
-        width: 7px;
-        height: 7px;
+        width: 10px;
+        height: 10px;
         // border: 1px solid rgb(17, 198, 253);
-        border-radius: 7px;
-        margin-right: 7px;
+        border-radius: 3px;
+        margin-right: 8px;
     }
 }
 </style>
\ No newline at end of file
diff --git a/src/views/clientManagement/clientManagement.vue b/src/views/clientManagement/clientManagement.vue
index 3933876..3e8b720 100644
--- a/src/views/clientManagement/clientManagement.vue
+++ b/src/views/clientManagement/clientManagement.vue
@@ -193,10 +193,11 @@
 </template>
 
 <script>
-  import {getList, remove, update, add, getclient, getDeptLazyTree, getAll, updates} from "@/api/client/client";
+  import {getList, remove, update, add, getclient, getDeptLazyTree, getAll, updates,getBaTree} from "@/api/client/client";
   import {mapGetters} from "vuex";
   import axios from "axios";
   import Legend from '../../components/liu-legend/Legend'
+  import AvueMap from "avue-plugin-map";
 
   export default {
     components:{
@@ -210,11 +211,11 @@
         //legend-liu数据
         datalistLIU:[
                 {
-                    color: 'rgb(233, 39, 25)',
+                    color: 'rgb(236, 83, 37)',
                     text: '掉线'
                 },
                 {
-                    color: 'black',
+                    color: 'rgb(49, 49, 49)',
                     text: '在线'
                 }
             ],
@@ -315,7 +316,6 @@
               label: "设备编号",
               prop: "deviceNumber",
               width: 130,
-              editDisabled: true,
               rules: [
                 {
                   required: false,
@@ -336,7 +336,7 @@
               rules: [
                 {
                   required: false,
-                  message: "请选择上级菜单",
+                  message: "请选择使用方",
                   trigger: "click"
                 }
               ]
@@ -403,25 +403,7 @@
               addDisplay: false,
               editDisplay: false
             },
-            {
-              label: "设备类型",
-              prop: "deviceType",
-              width: 100,
-              search: true,
-              searchSpan: 3,
-              searchLabelWidth: 80,
-              searchPlaceholder: "请选择",
-              type: "select",
-              props: {
-                label: "dictValue",
-                value: "dictValue"
-              },
-              dicUrl: "/api/blade-system/dict-biz/child-list?parentId=1357568691367661569",
-              hide: true,
-              addDisplay: true,
-              editDisplay: true,
-              viewDisplay: true,
-            },
+
             {
               label: "省份",
               prop: "province",
@@ -497,8 +479,32 @@
               viewDisplay: true,
             },
             {
+              label: "地址",
+              prop: "map",
+              hide: true,
+              span: 24,
+              component: "AvueMap",
+            },
+            {
+              label: "经度",
+              hide: true,
+              addDisplay: false,
+              prop: "jd",
+            },
+            {
+              label: "纬度",
+              hide: true,
+              addDisplay: false,
+              prop: "wd",
+            },
+            {
               label: "负责人",
-              prop: "oneContacts",
+              prop: "oneId",
+              type: "tree",
+              dicUrl: "/api/blade-system/dept/Batrees",
+              props: {
+                label: "title"
+              },
               width: 72,
               hide: true,
               addDisplay: true,
@@ -559,6 +565,31 @@
         },
         data: []
       };
+    },
+    watch: {
+      "form.map": {
+        // form是表单或者表格绑定的数据集,v-model='form'
+        handler(val) {
+          debugger
+          if (val) {
+            this.form.wd = val.latitude;
+            this.form.jd = val.longitude;
+            this.form.street = val.formattedAddress;
+          }
+        },
+        immediate: true,
+      },
+      "form.oneId":{
+        handler(val) {
+          var that = this;
+          getBaTree(val).then(res => {
+            if (res) {
+              that.form.onePhone = res.data.data.records[0].phone;
+              that.form.oneContacts = res.data.data.records[0].name;
+            }
+          });
+        },
+      }
     },
     computed: {
       ...mapGetters(["permission"]),
@@ -834,9 +865,9 @@
         //console.log(document.body.clientHeight,event.clientY,cha)
         // 防止菜单太靠底,根据可视高度调整菜单出现位置
         if (cha < 150) {
-          menu.style.top = event.clientY -120 - (70) + 'px'
+          menu.style.top = event.clientY -120 - (100) + 'px'
         } else {
-          menu.style.top = event.clientY -10 - (70) + 'px'
+          menu.style.top = event.clientY -10 - (100) + 'px'
         }
         menu.style.left = event.clientX + 10 - (60) + 'px'
         document.addEventListener('click', this.foo); // 给整个document新增监听鼠标事件,点击任何位置执行foo方法
diff --git a/src/views/realTimePolice/real.vue b/src/views/realTimePolice/real.vue
index 3a34c25..f68c3e3 100644
--- a/src/views/realTimePolice/real.vue
+++ b/src/views/realTimePolice/real.vue
@@ -1,9 +1,3 @@
-/*
- * @Author: Morpheus
- * @Date: 2021-03-17 15:21:33
- * @Last Modified by: Morpheus
- * @Last Modified time: 2021-04-19 14:32:44
- */
 <template>
   <basic-container>
     <avue-crud
@@ -40,7 +34,7 @@
           >删 除
         </el-button>
       </template>
-
+ 
       <template slot="menuLeft">
         <el-button
           v-bind:class="activeClass == 0 ? 'btn-color' : ''"
@@ -67,27 +61,23 @@
           >全部
         </el-button>
       </template>
-
+ 
       <template slot="menuLeft">
-        <el-button
-          type="warning"
-          size="mini"
-          plain
-          icon="el-icon-download"
-          @click="handleExport"
-          >导出
+        <el-button type="warning"
+                    size="mini"
+                    plain
+                    icon="el-icon-download"
+                    @click="handleExport">导出
         </el-button>
-        <el-button
-          type="warning"
-          style="display: none"
-          size="small"
-          plain
-          icon="el-icon-download"
-          @click="handleExportStatis"
-          >导出报表
+        <el-button type="warning"
+                    size="small"
+                    plain
+                    icon="el-icon-pie-chart"
+                    @click="handleExportStatis">导出报表
         </el-button>
       </template>
-
+ 
+ 
       <template slot-scope="{ row }" slot="jtype">
         <el-tag
           >{{
@@ -102,7 +92,7 @@
           }}
         </el-tag>
       </template>
-
+ 
       <template slot-scope="{ type, size, row }" slot="menu">
         <el-button
           icon="el-icon-s-order"
@@ -143,7 +133,7 @@
         </el-button>
       </template>
     </avue-crud>
-
+ 
     <el-dialog
       class="real-dialog"
       title="警情核实"
@@ -171,7 +161,7 @@
           controls
         ></video>
       </el-dialog>
-
+ 
       <el-dialog
         class="ss-video-dialog"
         :modal="false"
@@ -193,7 +183,7 @@
           controls
         ></video>
       </el-dialog>
-
+ 
       <el-form
         :model="form"
         label-position="right"
@@ -329,7 +319,7 @@
             </el-form-item>
           </el-col>
         </el-row>
-
+ 
         <el-row>
           <el-col span="12">
             <el-form-item label="报警时间">
@@ -363,7 +353,7 @@
             </el-form-item>
           </el-col>
         </el-row>
-
+ 
         <el-row>
           <el-col span="12">
             <el-form-item label="备注">
@@ -371,7 +361,7 @@
             </el-form-item>
           </el-col>
         </el-row>
-
+ 
         <el-row :align="center">
           <el-col class="opt-btn">
             <el-form-item>
@@ -386,14 +376,14 @@
                 @click.stop="updateJtyep(form, 1, '办结')"
                 >办结
               </el-button>
-
+ 
               <img
                 src="/img/police-num.png"
                 style="margin-top: -20px; height: 80px; vertical-align: middle"
                 alt=""
                 @click.stop="updateJtyep(form, 1, '推送110')"
               />
-
+ 
               <el-button
                 type="primary"
                 @click.stop="updateJtyep(form, 1, '派送保安')"
@@ -404,7 +394,7 @@
         </el-row>
       </el-form>
     </el-dialog>
-
+ 
     <el-drawer title="电子地图" append-to-body="true" :visible.sync="showMap">
       <iframe
         id="mapDiv"
@@ -417,17 +407,17 @@
     </el-drawer>
   </basic-container>
 </template>
-
+ 
 <script>
 import { getList, remove, update, add, getclient } from "@/api/real/real";
 import { mapGetters } from "vuex";
-
+ 
 import Hls from "hls.js";
-
+ 
 import axios from "axios";
-
+ 
 import Recorder from "js-audio-recorder";
-
+ 
 export default {
   data() {
     return {
@@ -498,7 +488,7 @@
             type: "datetime",
             format: "yyyy-MM-dd",
             valueFormat: "yyyy-MM-dd",
-            searchValue: [this.getStartTime(), this.getEndTime()],
+            searchValue:[this.getStartTime(),this.getEndTime()],
             searchRange: true,
             searchSpan: 5,
             hide: true,
@@ -844,7 +834,7 @@
       let values = {
         ...params,
       };
-
+ 
       if (
         this.$route.query.waringType &&
         this.$route.query != undefined &&
@@ -886,7 +876,7 @@
             endTime: this.dateTime.day.endTime,
           };
         }
-
+ 
         if (
           this.$route.query.startTime != undefined &&
           this.$route.query.startTime != null &&
@@ -899,7 +889,7 @@
           };
         }
       }
-
+ 
       if (releaseTimeRange) {
         values = {
           ...params,
@@ -914,7 +904,7 @@
           ...this.query,
         };
       }
-
+ 
       if (this.$route.query.timeDesc) {
         values = {
           ...params,
@@ -922,7 +912,7 @@
           ...this.query,
         };
       }
-
+ 
       this.loading = true;
       getList(page.currentPage, page.pageSize, values).then((res) => {
         const data = res.data.data;
@@ -930,13 +920,13 @@
           item.waringType == "紧急求救" ? (item.waringType = "一键求助") : "";
         });
         this.page.total = data.total;
-
+ 
         data.records.sort((a, b) => {
           return a.jtype - b.jtype;
         });
-
+ 
         this.data = data.records;
-
+ 
         this.loading = false;
         this.selectionClear();
       });
@@ -945,7 +935,7 @@
       // 当前时间
       var timestamp = Date.parse(new Date());
       var serverDate = new Date(timestamp);
-
+ 
       // 本周周一的时间
       var mondayTime =
         timestamp - (serverDate.getDay() - 1) * 24 * 60 * 60 * 1000;
@@ -991,7 +981,7 @@
         currentData.getSeconds() < 10
           ? "0" + currentData.getSeconds()
           : currentData.getSeconds();
-
+ 
       return {
         day: {
           beginTime: currentY + "-" + currentM + "-" + currentD + " 00:00:00",
@@ -1132,6 +1122,18 @@
         };
       });
     },
+    getStartTime(){
+           if (this.$route.query.startTime != undefined && this.$route.query.startTime != null && this.$route.query.startTime != "" ) {
+             return this.$route.query.startTime
+           }
+           return '';
+      },
+      getEndTime(){
+           if (this.$route.query.endTime != undefined && this.$route.query.endTime != null && this.$route.query.endTime != "" ) {
+             return this.$route.query.endTime
+           }
+           return '';
+      },
     handleManage(row) {
       this.form = row;
       this.peopleList = [
@@ -1145,7 +1147,7 @@
     },
     updateJtyep(row, jtype, t) {
       var that = this;
-
+ 
       axios
         .post(
           "/api/blade-jfpts/alarm/alarm/updateJtype",
@@ -1165,7 +1167,7 @@
         )
         .then(function () {
           that.dialogTableVisible = false;
-
+ 
           axios({
             method: "post",
             url: `/api/blade-jfpts/rvideo/stop`,
@@ -1173,7 +1175,7 @@
               jid: row.id,
             },
           }).then((resdata) => {});
-
+ 
           that.onLoad(that.page, that.query);
           that.$router.push({
             path: "/policeTracking/track",
@@ -1183,54 +1185,54 @@
     },
     beginTimeOrEndTime(time) {
       var beginTime = new Date(time);
-
+ 
       var endTime = new Date(new Date(time).valueOf() - 1000 * 60 * 60 * 3);
-
+ 
       var beginY = beginTime.getFullYear();
-
+ 
       var beginM =
         beginTime.getMonth() + 1 < 10
           ? "0" + (beginTime.getMonth() + 1)
           : beginTime.getMonth() + 1;
-
+ 
       var beginD =
         beginTime.getDate() < 10
           ? "0" + beginTime.getDate()
           : beginTime.getDate();
-
+ 
       var beginH =
         beginTime.getHours() < 10
           ? "0" + beginTime.getHours()
           : beginTime.getHours();
-
+ 
       var beginm =
         beginTime.getMinutes() < 10
           ? "0" + beginTime.getMinutes()
           : beginTime.getMinutes();
-
+ 
       var begins =
         beginTime.getSeconds() < 10
           ? "0" + beginTime.getSeconds()
           : beginTime.getSeconds();
-
+ 
       var endY = endTime.getFullYear();
-
+ 
       var endM =
         endTime.getMonth() + 1 < 10
           ? "0" + (endTime.getMonth() + 1)
           : endTime.getMonth() + 1;
-
+ 
       var endD =
         endTime.getDate() < 10 ? "0" + endTime.getDate() : endTime.getDate();
-
+ 
       var endH =
         endTime.getHours() < 10 ? "0" + endTime.getHours() : endTime.getHours();
-
+ 
       var endm =
         endTime.getMinutes() < 10
           ? "0" + endTime.getMinutes()
           : endTime.getMinutes();
-
+ 
       var ends =
         endTime.getSeconds() < 10
           ? "0" + endTime.getSeconds()
@@ -1250,7 +1252,7 @@
           "Content-type": "application/x-www-form-urlencoded",
         },
       });
-
+ 
       //this.form.serialNumber
       newAxios
         .post(
@@ -1269,22 +1271,22 @@
             )
             .then((result) => {
               that.videoSource = result.data.data.m3u8;
-
+ 
               if (Hls.isSupported()) {
                 var dom = document.getElementById("real_video_conversation");
-
+ 
                 that.hls = new Hls();
-
+ 
                 var m3u8Url = decodeURIComponent(that.videoSource);
-
+ 
                 that.hls.loadSource(m3u8Url);
-
+ 
                 that.hls.attachMedia(dom);
-
+ 
                 that.hls.on(Hls.Events.MANIFEST_PARSED, function () {
                   dom.play();
                 });
-
+ 
                 that.hls.on(Hls.Events.ERROR, function (event, data) {
                   console.log(data, 4566824159, "视频播放有问题!!!");
                   if (data.fatal) {
@@ -1315,12 +1317,12 @@
     },
     closeRealVideoBox() {
       var dom = document.getElementById("real_video_conversation");
-
+ 
       if (dom.getAttribute("src") != "") {
         dom.pause();
-
+ 
         dom.setAttribute("src", "");
-
+ 
         this.hls.destroy();
       }
     },
@@ -1334,7 +1336,7 @@
       var dom = document.getElementById("real_old_video");
       dom.pause();
     },
-
+ 
     aKeyToCall() {
       this.isActive = true;
       var that = this;
@@ -1346,7 +1348,7 @@
           // compiling: false,(0.x版本中生效,1.x增加中)  // 是否边录边转换,默认是false
         });
       }
-
+ 
       // 一键呼叫相关函数
       that.recorder.start().then(
         () => {
@@ -1358,7 +1360,7 @@
         }
       );
     },
-
+ 
     // 序列号后期待修改
     aKeyStopCall() {
       this.isActive = false;
@@ -1369,14 +1371,14 @@
           "Content-Type": "application/json;",
         },
       });
-
+ 
       var wavAxios = axios.create({
         baseURL: "https://web.byisf.com",
         withCredentials: false,
       });
-
+ 
       var that = this;
-
+ 
       newCallAxios
         .post(
           `/api_control`,
@@ -1390,15 +1392,15 @@
         .then((result) => {
           var formData = new FormData();
           // that.recorder.downloadWAV("新文件");
-
+ 
           var blob = that.recorder.getPCMBlob(); //获取pcm格式音频数据
           //此处获取到blob对象后需要设置fileName满足当前项目上传需求,其它项目可直接传把blob作为file塞入formData
           var newbolb = new Blob([blob], { type: "audio/pcm" });
           var fileOfBlob = new File([newbolb], new Date().getTime() + ".pcm");
           formData.append("file", fileOfBlob);
-
+ 
           var wavBlob = that.recorder.getWAVBlob();
-
+ 
           var wavformData = new FormData();
           var wavform = new File([wavBlob], new Date().getTime() + ".wav");
           wavformData.append("file", wavform);
@@ -1409,7 +1411,7 @@
             wavformData.entries(),
             132
           );
-
+ 
           axios({
             method: "post",
             url: "/api/blade-jfpts/xlfeedback/xlfeedback/put-objecty",
@@ -1420,7 +1422,7 @@
           }).then((resdata) => {
             console.log(resdata);
           });
-
+ 
           newCallAxios
             .post(`/api_control`, blob, {
               params: {
@@ -1438,7 +1440,7 @@
             });
         });
     },
-
+ 
     peopleOrPhone(e) {
       this.peopleList.forEach((item) => {
         if (item.label == e) {
@@ -1459,139 +1461,104 @@
       this.$confirm("是否导出实时警情数据?", "提示", {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
-        type: "warning",
+        type: "warning"
       }).then(() => {
-        window.open(
-          `/api/blade-jfpts/alarm/alarm/export-alarm?beginTime=${this.$route.query.startTime}&endTime=${this.$route.query.endTime}&waringType=${this.$route.query.waringType}&timeDesc=${this.$route.query.timeDesc}`
-        );
+        window.open(`/api/blade-jfpts/alarm/alarm/export-alarm?beginTime=${this.$route.query.startTime}&endTime=${this.$route.query.endTime}&waringType=${this.$route.query.waringType}&timeDesc=${this.$route.query.timeDesc}`);
       });
     },
     //数据报表导出
-    handleExportStatis() {
-      this.$confirm("是否导出实时警情数据?", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      }).then(() => {
-        let beginTime =
-          this.$route.query.startTime == undefined
-            ? ""
-            : this.$route.query.startTime;
-        let endTime =
-          this.$route.query.endTime == undefined
-            ? ""
-            : this.$route.query.endTime;
-        let waringType =
-          this.$route.query.waringType == undefined
-            ? ""
-            : this.$route.query.waringType;
-        let timeDesc =
-          this.$route.query.timeDesc == undefined
-            ? ""
-            : this.$route.query.timeDesc;
-        window.open(
-          `http://localhost:8108/ureport/excel?_u=blade-alarm.statis.ureport.xml&beginTime=${beginTime}&endTime=${endTime}&waringType=${waringType}&timeDesc=${timeDesc}`
-        );
-      });
-    },
-    getStartTime() {
-      if (
-        this.$route.query.startTime != undefined &&
-        this.$route.query.startTime != null &&
-        this.$route.query.startTime != ""
-      ) {
-        return this.$route.query.startTime;
+      handleExportStatis() {
+        this.$confirm("是否导出实时警情数据?", "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(() => {
+          let beginTime = this.$route.query.startTime==undefined? '':this.$route.query.startTime;
+          let endTime = this.$route.query.endTime==undefined? '':this.$route.query.endTime;
+          let waringType = this.$route.query.waringType==undefined? '':this.$route.query.waringType;
+          let timeDesc = this.$route.query.timeDesc==undefined? '':this.$route.query.timeDesc;
+          window.open(`http://localhost:8108/ureport/preview?_u=blade-alarm.statis.ureport.xml&beginTime=${beginTime}&endTime=${endTime}&waringType=${waringType}&timeDesc=${timeDesc}`);
+          //window.open(`http://localhost:8108/ureport/excel?_u=blade-alarm.statis.ureport.xml&beginTime=${beginTime}&endTime=${endTime}&waringType=${waringType}&timeDesc=${timeDesc}`);
+        });
       }
-      return "";
-    },
-    getEndTime() {
-      if (
-        this.$route.query.endTime != undefined &&
-        this.$route.query.endTime != null &&
-        this.$route.query.endTime != ""
-      ) {
-        return this.$route.query.endTime;
-      }
-      return "";
-    },
   },
 };
 </script>
-
+ 
 <style>
 .el-card__body .waringTypeClass {
   width: 12%;
 }
-
+ 
 /*页面样式*/
 .el-card__body .cityClass1 {
   width: 155px;
   padding-right: 0px !important;
 }
-
+ 
 .el-card__body .cityClass2 {
   width: 100px;
   padding-left: 0px !important;
   padding-right: 0px !important;
 }
-
+ 
 .el-card__body .cityClass3 {
   width: 100px;
   padding-left: 0px !important;
   padding-right: 0px !important;
 }
-
+ 
 /*新增窗体样式*/
 .el-dialog .cityClass1 {
   width: 220px;
   padding-right: 0px !important;
 }
-
+ 
 .el-dialog .cityClass2 {
   width: 110px;
   padding-left: 5px !important;
   padding-right: 5px !important;
 }
-
+ 
 .el-dialog .cityClass3 {
   width: 110px;
   padding-left: 0px !important;
   padding-right: 0px !important;
 }
-
+ 
 .cityClassParams .avue-form__group.avue-form__group--flex {
   display: flex;
   justify-content: space-between;
 }
-
+ 
 .cityClassParams .cityClassSelect {
   flex: 1;
   margin: 0 !important;
   padding-left: 0px !important;
   padding-right: 0px !important;
 }
-
+ 
 .cityClassParams .cityClassSelect:nth-child(2) {
   margin: 0 10px !important;
 }
-
+ 
 .cityClassParams .cityClassSelect .el-form-item {
   margin-bottom: 0px !important;
 }
-
+ 
 .cityClassParams .cityClassSelect .el-form-item .el-input__inner {
   height: 28px !important;
   line-height: 28px !important;
 }
-
+ 
 .cityClass2 div label {
   display: none;
 }
-
+ 
 .cityClass3 div label {
   display: none;
 }
-
+ 
 .old-video-dialog {
   position: absolute !important;
   top: 0 !important;
@@ -1602,7 +1569,7 @@
   height: 100% !important;
   width: 476px !important;
 }
-
+ 
 .old-video-dialog .el-dialog {
   position: absolute !important;
   top: 0 !important;
@@ -1613,23 +1580,23 @@
   margin-top: 15vh !important;
   height: 538px;
 }
-
+ 
 .old-video-dialog .el-dialog .el-dialog__body {
   height: calc(100% - 54px);
   box-sizing: border-box;
 }
-
+ 
 .el-button.active {
   background: #ff0000 !important;
 }
-
+ 
 .el-button.btn-color {
   color: rgb(255, 255, 255);
   background-color: rgb(64, 158, 255);
   border-color: rgb(64, 158, 255);
 }
-
+ 
 .tabFontSize {
   font-size: 15px;
 }
-</style>
+</style>
\ No newline at end of file
diff --git a/src/views/security/security.vue b/src/views/security/security.vue
index ab70287..62f4cdb 100644
--- a/src/views/security/security.vue
+++ b/src/views/security/security.vue
@@ -248,13 +248,11 @@
             });
           });
       },
+      //打开地图
       handleMap(row) {
-        
         var that =this;
-        that.baseUrl = `/map/index.html?ISinit=1&openid=SecurityMap&jd=${row.jd}&wd=${row.wd}`;
+        that.baseUrl = `/map/index.html?ISinit=1&openid=SecurityMap&jd=${row.jd}&wd=${row.wd}&code=${row.code}&name=${row.realName}`;
         this.showMap=true;
-        console.log(this.$refs,111);
-        console.log(this.$refs.securityMap,222);
         this.$refs.securityMap.onload = () => {
           if (window.frames[0].init) {
             window.frames[0].init("SecurityMap", {
diff --git a/src/views/system/cs.vue b/src/views/system/cs.vue
index b9e1236..a4d1ba8 100644
--- a/src/views/system/cs.vue
+++ b/src/views/system/cs.vue
@@ -662,6 +662,7 @@
             );
           } else if (row.type == "1") {
             insertss(
+              row.dj,
               row.nature,
               row.had,
               row.motto,
@@ -671,6 +672,7 @@
             );
           } else if (row.type == "2") {
             insertsr(
+              row.dj,
               row.category,
               row.attributes,
               row.developers,
@@ -705,6 +707,7 @@
         );
       } else if (row.type == "1") {
         updateInfos(
+          row.dj,
           row.nature,
           row.had,
           row.motto,
@@ -714,6 +717,7 @@
         );
       } else if (row.type == "2") {
         updateInfor(
+          row.dj,
           row.category,
           row.attributes,
           row.developers,
@@ -770,6 +774,7 @@
             selectTs(this.form.tenantName).then((re) => {
               const data = res.data.data;
               data.nature = re.data.data[0].nature;
+              data.dj = re.data.data[0].dj;
               data.motto = re.data.data[0].motto;
               data.ctime = re.data.data[0].ctime;
               data.had = re.data.data[0].had;
@@ -789,6 +794,7 @@
           } else if (this.form.type == "2") {
             selectTr(this.form.tenantName).then((re) => {
               const data = res.data.data;
+              data.dj = re.data.data[0].dj;
               data.category = re.data.data[0].category;
               data.attributes = re.data.data[0].attributes;
               data.developers = re.data.data[0].developers;
diff --git a/src/views/zc/zc.vue b/src/views/zc/zc.vue
index 51180ee..620642d 100644
--- a/src/views/zc/zc.vue
+++ b/src/views/zc/zc.vue
@@ -167,10 +167,10 @@
       ...mapGetters(["permission"]),
       permissionList() {
         return {
-         addBtn: this.vaildData(this.permission.zc_add, true),
+         addBtn: this.vaildData(this.permission.zc_add, false),
           viewBtn: this.vaildData(this.permission.zc_view, true),
           delBtn: this.vaildData(this.permission.zc_delete, false),
-          editBtn: this.vaildData(this.permission.zc_edit, true)
+          editBtn: this.vaildData(this.permission.zc_edit, false)
         };
       },
       ids() {

--
Gitblit v1.9.3