Administrator
2021-07-26 9969576896f182ac69b55a1df0107b3be0e36376
巡逻区域修改提交
5 files modified
5 files added
10666 ■■■■ changed files
public/map/popup/html/region-name.html 8 ●●●● patch | view | raw | blame | history
public/map/widgets/patrolManagement/PatrolManagement copy.js 2071 ●●●●● patch | view | raw | blame | history
public/map/widgets/patrolManagement/PatrolManagement.css 182 ●●●●● patch | view | raw | blame | history
public/map/widgets/patrolManagement/PatrolManagement.js 4374 ●●●● patch | view | raw | blame | history
public/map/widgets/patrolManagement/PatrolManagement01.js 2116 ●●●●● patch | view | raw | blame | history
public/map/widgets/patrolManagement/template copy.html 261 ●●●●● patch | view | raw | blame | history
public/map/widgets/patrolManagement/template.html 270 ●●●●● patch | view | raw | blame | history
public/map/widgets/patrolManagement/template01.html 262 ●●●●● patch | view | raw | blame | history
src/views/policeInformationDistribution/patrolManagement copy.vue 1119 ●●●●● patch | view | raw | blame | history
src/views/policeInformationDistribution/patrolManagement.vue 3 ●●●● patch | view | raw | blame | history
public/map/popup/html/region-name.html
@@ -16,12 +16,12 @@
            <li>
                <input type="text" placeholder="请输入区域名称" class='region-name-input'>
            </li>
            <li>
            <!-- <li>
                <textarea placeholder="请输入区域描述" style="resize:none;outline:none;" class='region-name-textarea'></textarea>
            </li>
            <li>
            </li> -->
            <!-- <li>
                <input type="button" value='开始编辑' class="start-editing">
            </li>
            </li> -->
        </ul>
    </div>
</body>
public/map/widgets/patrolManagement/PatrolManagement copy.js
New file
@@ -0,0 +1,2071 @@
/*
 * @Description:
 * @Version: 1.0
 * @Author: yangsx
 * @Date: 2019-12-09 19:01:40
 * @LastEditors: yangsx
 * @LastEditTime: 2019-12-14 14:44:57
 */
define([
    "dojo",
    "dojo/_base/declare",
    "dojo/_base/lang",
    "base/BaseWidget",
    "dojo/text!widgets/patrolManagement/template.html",
    "base/AppEvent",
    "base/ConfigData",
    "widgets/patrolManagement/config",
    "dojo/dom",
    "dojo/dom-construct",
    "dojo/dom-attr",
    "dojo/dom-style",
    "dojo/on",
    "esri/layers/ArcGISDynamicMapServiceLayer",
    "esri/layers/ArcGISTiledMapServiceLayer",
    "esri/layers/FeatureLayer",
    "controls/tab/TabControl",
    "esri/dijit/SymbolStyler",
    "esri/styles/basic",
    "dojo/_base/array",
    "esri/InfoTemplate",
    "esri/tasks/query",
    "esri/tasks/QueryTask",
    "esri/Color",
    "esri/toolbars/edit",
    "esri/graphic",
    "esri/geometry/Point",
    "esri/geometry/Polyline",
    "esri/geometry/Polygon",
    "esri/geometry/Extent",
    "esri/tasks/FeatureSet",
    "esri/renderers/HeatmapRenderer",
    "esri/symbols/SimpleLineSymbol",
    "esri/symbols/SimpleFillSymbol",
    "esri/symbols/PictureMarkerSymbol",
    "esri/symbols/SimpleMarkerSymbol",
    "esri/SpatialReference",
    "esri/tasks/GeometryService",
    "esri/tasks/ProjectParameters",
    "esri/layers/GraphicsLayer",
    "esri/layers/LabelLayer",
    "esri/symbols/TextSymbol",
    "esri/renderers/SimpleRenderer",
    "esri/renderers/ClassBreaksRenderer",
    "esri/tasks/Geoprocessor",
    "esri/tasks/DataFile",
    "esri/geometry/webMercatorUtils",
    "esri/symbols/Font",
    "esri/geometry/ScreenPoint",
    "esri/layers/ImageParameters",
    "esri/geometry/geometryEngine",
    "esri/dijit/PopupTemplate",
    "widgets/clientManagement/FlareClusterLayer_v3",
    "dojo/domReady!"
], function(
    dojo,
    declare,
    lang,
    BaseWidget,
    template,
    AppEvent,
    ConfigData,
    config,
    dom,
    domConstruct,
    domAttr,
    domStyle,
    on,
    ArcGISDynamicMapServiceLayer,
    ArcGISTiledMapServiceLayer,
    FeatureLayer,
    TabControl,
    SymbolStyler,
    basic,
    arrayUtils,
    InfoTemplate,
    Query,
    QueryTask,
    Color,
    Edit,
    Graphic,
    Point,
    Polyline,
    Polygon,
    Extent,
    FeatureSet,
    HeatmapRenderer,
    SimpleLineSymbol,
    SimpleFillSymbol,
    PictureMarkerSymbol,
    SimpleMarkerSymbol,
    SpatialReference,
    GeometryService,
    ProjectParameters,
    GraphicsLayer,
    LabelLayer,
    TextSymbol,
    SimpleRenderer,
    ClassBreaksRenderer,
    Geoprocessor,
    DataFile,
    webMercatorUtils,
    Font,
    ScreenPoint,
    ImageParameters,
    geometryEngine,
    PopupTemplate,
    FlareClusterLayer
) {
    var Widget = declare([BaseWidget], {
        widgetName: "PatrolManagement",
        label: "巡逻管理",
        templateString: template,
        _map: null,
        objThis: null,
        _siteLayer: new GraphicsLayer(),
        layuiLayer: null,
        layuiLadate: null,
        tabIndex: 0,
        // 保留添加实体图层的变量
        addEntitys: null,
        entitysData: [],
        // 是否派发保安的 文字
        treatmentIndex: null,
        securityFlag: false,
        editParentInd: null,
        // 存储新增点,线,面,数据的地方
        polygonData: [],
        polygonFlag: false,
        editToolbar: null,
        addPolygonEntitys: null,
        // 所有的面图层
        entityPolygonAll: null,
        // 用来存储区域名称
        globalRegionName: null,
        // 用来区域得最大最小经纬度
        currentDrawing: [],
        // 巡逻区域或者巡逻路线的描述
        routeOrRegionDescribe: null,
        // 用来记录巡逻区域或者巡逻路线的下标的
        patrolIndex: 0,
        // 拖拽
        isDown: false,
        x: 0,
        y: 0,
        offset: null,
        moveThis: null,
        // 电子围栏需要新增的Id
        newElectronicFenceId: null,
        // 新增路线时,派发人员,人员名称,以及人员id
        peopleRealName: null,
        pepleRealId: null,
        constructor: function(options, srcRefNode) {
            this._map = options.map;
            objThis = this;
            this.addEntitys = new GraphicsLayer({ id: 'addEntitys' });
            // 添加点面线的图层
            this.addPolygonEntitys = new GraphicsLayer({ id: 'addPolygonEntitys' });
            // 添加所有图层的地方
            this.entityPolygonAll = new GraphicsLayer({ id: 'entityPolygonAll' });
            this._map.addLayer(this.addEntitys);
            this._map.addLayer(this.addPolygonEntitys);
            this._map.addLayer(this.entityPolygonAll);
        },
        startup: function() {
            //加载树
            layui.use('tree', function() {
                var tree = layui.tree;
                //渲染
                var inst1 = tree.render({
                    elem: '#region-tree',
                    data: [{
                        title: '江西',
                        id: 1,
                        spread: true,
                        children: [{
                            title: '南昌',
                            id: 10,
                            children: [{
                                title: '高新区',
                                id: 20
                            }]
                        }]
                    }],
                    showLine: false,
                    click: function(obj) {
                        var data = obj.data; //获取当前点击的节点数据
                        layer.msg('状态:' + obj.state + '<br>节点数据:' + JSON.stringify(data));
                    }
                });
            });
            objThis._map.addLayer(objThis._siteLayer);
            var that = this;
            // 顶部tab得切换事件
            $('.police-dispatching-tab li').click(function() {
                    if (that.tabIndex == $(this).index()) return;
                    if (that.entitysData.length > 0) {
                        that.addEntitys.clear();
                        that.entitysData = [];
                    }
                    that.patrolIndex = 0;
                    that.polygonFlag = false;
                    that.entityPolygonAll.clear();
                    that.modifyPolygon();
                    // 切换时清除新增点线面数组中保存得数据,与清除地图上得实体
                    that.polygonData = [];
                    that.addPolygonEntitys.clear();
                    $(this).addClass('on').siblings().removeClass('on');
                    var ind = $(this).index();
                    $($('.police-container > div')[ind]).stop().show().siblings().stop().hide();
                    if (ind == 0) {
                        $('#distributeCategory div:eq(0)').html('全部' + '<i></i>');
                        $('#distributeState div:eq(0)').html('全部' + '<i></i>');
                        that.getPoliceTable($('.police-container-distribute').find('.tbody tbody'), $('#dispatchingStartTime').val(), $('#dispatchingEndTime').val(), '', '', '');
                    } else if (ind == 1) {
                        // that.getOwnerTable($($('.analysis-container > div')[ind]).find('.tbody tbody'), '', '');
                        $('.police-dispatching .police-container .police-container-patrol .tab-header li:eq(0)').addClass('on').siblings().removeClass('on');
                        $('.police-dispatching .police-container .police-container-patrol .main-content>li:eq(0)').stop().show().siblings().hide();
                        that.patrolArea($('.police-dispatching .police-container .police-container-patrol .main-content>li:eq(0) .table .tbody tbody'), '');
                    } else if (ind == 2) {
                        that.getSecurityPeople($('.police-dispatching .police-container .police-container-policeforce .table .tbody tbody'), '');
                    }
                    that.tabIndex = $(this).index();
                })
                // 警情分发中的行点击事件
            $('.police-container .police-container-distribute .table .tbody').off('click', 'tr').on('click', 'tr', function() {
                    var lgtd = Number($(this).attr('lgtd'));
                    var lttd = Number($(this).attr('lttd'));
                    var position = new esri.geometry.Point(lgtd, lttd, new esri.SpatialReference({ wkid: 4326 })); //根据输入坐标信息找地图上的点
                    that._map.centerAndZoom(position, 18); //缩放,10是缩放级别,可以自定义,数值越大缩放越大
                })
                // 编辑,跟进按钮元素的父元素的点击事件
            $('.police-container .police-container-distribute .table .tbody').off('click', '.operation').on('click', '.operation', function(event) {
                    event.stopPropagation();
                })
                // 警情分发中的编辑按钮的点击事件
            $('.police-container .police-container-distribute .table .tbody').off('click', '.edit').on('click', '.edit', function(event) {
                    event.stopPropagation();
                    that.editParentInd = null;
                    that.editParentInd = $(this).parent().parent().index();
                    var id = $(this).attr('term-list');
                    that.treatmentIndex = null;
                    if (!$('.police-container-distribute-details .security-guard-nearby').is(':hidden')) {
                        $('.police-container-distribute-details .security-guard-nearby').stop().hide();
                    }
                    if (!$('.police-container-distribute-details').is(':hidden')) {
                        $('.police-container-distribute-details').stop().hide();
                    }
                    $('.police-container-distribute-details .content table tbody').empty();
                    var str = '';
                    $.ajax({
                        url: 'http://s16s652780.51mypc.cn/api/jingdan/jingdan/selectdInfo?deviceNumber=&id=' + id,
                        type: 'POST',
                        dataType: 'JSON',
                        success: function(data) {
                            var result = data.data[0];
                            var t = result.galarmTime.substr(0, 10);
                            var e = result.galarmTime.substr(11);
                            var time = t + '&nbsp;' + e;
                            str += "<tr> <td>报警人姓名:</td> <td>" + result.galarmPeople + "</td> <td>联系方式:</td> <td>" + result.phoneNumber + "</td> </tr>";
                            str += "<tr> <td>事发地址:</td> <td>" + result.place + "</td> <td>行政区:</td> <td>" + result.addvnm + "</td> </>";
                            str += "<tr> <td>报警时间:</td> <td>" + time + "</td> <td>报警内容:</td> <td>" + result.content + "</td> </tr>";
                            str += "<tr> <td>警情级别:</td> <td>" + result.level + "</td> <td>警情类别:</td> <td>" + result.waringType + "</td> </tr>";
                            str += "<tr> <td>处理方式:</td> <td class='treatment-method'> <input type='radio' name='treatmentMethod' value='派发保安' lgtd=" + result.jd + " lttd=" + result.wd + "> <span>派发保安</span> <input type='radio' name='treatmentMethod' value='提示业主'> <span>提示业主</span> </td> <td>处理人:</td> <td class='securityname'></td> </tr>";
                            str += "<tr> <td>是否上报110:</td> <td class='report-oneonezero'> <input type='radio' name='callPhone' value='是'> <span>是</span> <input type='radio' name='callPhone' value='否'> <span>否</span> </td> <td>设备编号:</td> <td>" + result.deviceNumber + "</td> </tr>";
                            $('.police-container-distribute-details .content table tbody').append(str);
                            $('.police-container-distribute-details .handle-button .confirm').attr('police-id', result.id);
                            $('.police-container-distribute-details .handle-button').stop().show();
                            $('.police-container-distribute-details .header h4').text('警情分发');
                            $('.police-container-distribute-details').stop().show();
                            $('.police-container-distribute-details .content table tbody').off('click', '.treatment-method input').on('click', '.treatment-method input', function() {
                                if (that.treatmentIndex != $(this).val()) {
                                    if ($(this).val() == '派发保安') {
                                        var str = '';
                                        $('.police-container-distribute-details .security-guard-nearby .security-staff-content tbody').empty();
                                        $.ajax({
                                            url: 'http://s16s652780.51mypc.cn/api/position/position/selectry',
                                            type: 'POST',
                                            data: {
                                                coordinate: "point(" + $(this).attr('lgtd') + "," + $(this).attr('lttd') + ")"
                                            },
                                            dataType: 'JSON',
                                            success: function(data) {
                                                var result = data.data;
                                                for (var i = 0; i < result.length; i++) {
                                                    str += "<tr> <td>" + (Number(i) + 1) + "</td> <td>" + result[i].sname + "</td> <td>" + result[i].distance.toFixed(2) + "</td> <td><input type='radio' name='securityStaff' securityid=" + result[i].snumber + " securityname=" + result[i].sname + "> </td> </tr>"
                                                }
                                                $('.police-container-distribute-details .security-guard-nearby .security-staff-content tbody').append(str);
                                            }
                                        })
                                        $('.police-container-distribute-details .security-guard-nearby').stop().show();
                                    } else {
                                        $('.police-container-distribute-details .content table tbody .securityname').text('');
                                        $('.police-container-distribute-details .security-guard-nearby').stop().hide();
                                    }
                                    that.treatmentIndex = $(this).val();
                                }
                            })
                        }
                    })
                })
                // 警情分发中的详情的确认按钮
            $('.police-container-distribute-details .handle-button .confirm').off('click').click(function() {
                    var self = this;
                    layui.use('layer', function() {
                        var layer = layui.layer;
                        if (that.treatmentIndex == null) {
                            layer.msg('请选择处理方式', {
                                shade: [0.8, '#393D49'],
                                time: 1000
                            })
                            return
                        } else {
                            if (that.treatmentIndex == '派发保安') {
                                if (that.securityFlag == false) {
                                    layer.msg('请选取保安', {
                                        shade: [0.8, '#393D49'],
                                        time: 1000
                                    })
                                    return
                                }
                            }
                        }
                        var id = $(self).attr('police-id');
                        var handletype = null;
                        if (that.treatmentIndex != null) {
                            if (that.treatmentIndex == '派发保安') {
                                handletype = '0';
                            } else {
                                handletype = '1';
                            }
                        }
                        // 发送请求修改警单数据
                        $.ajax({
                            url: 'http://s16s652780.51mypc.cn/api/jingdan/jingdan/updateInfo',
                            type: 'POST',
                            data: {
                                id: id,
                                // handleP: $('.police-container-distribute-details .content table tbody tr:eq(4) td:eq(3)').attr('people-id'),
                                // handName: $('.police-container-distribute-details .content table tbody tr:eq(4) td:eq(3)').text(),
                                handleP: $('.police-container-distribute-details .content table tbody .securityname').attr('id'),
                                handName: $('.police-container-distribute-details .content table tbody .securityname').text(),
                                handletype: handletype,
                                type: '2'
                            },
                            dataType: 'JSON',
                            success: function(data) {
                                if (data.code == 200) {
                                    if (!$('.police-container-distribute-details .security-guard-nearby').is(':hidden')) {
                                        $('.police-container-distribute-details .security-guard-nearby').stop().hide();
                                    }
                                    $('.police-container-distribute-details').stop().hide();
                                    $('.police-container .police-container-distribute .table .tbody tr:eq(' + that.editParentInd + ') td:eq(2)').text('处理中');
                                    $('.police-container .police-container-distribute .table .tbody tr:eq(' + that.editParentInd + ') td:eq(4)').html("<input class='follow-up' type='button' value='跟进' >");
                                }
                            }
                        })
                    });
                })
                // 警情分发中的跟进按钮的点击事件
            $('.police-container .police-container-distribute .table .tbody').off('click', '.follow-up').on('click', '.follow-up', function() {
                    var id = $(this).attr('term-list');
                    if (!$('.police-container-distribute-details').is(':hidden')) {
                        $('.police-container-distribute-details').stop().hide();
                    }
                    $('.police-container-distribute-details .content table tbody').empty();
                    var str = '';
                    $.ajax({
                        url: 'http://s16s652780.51mypc.cn/api/jingdan/jingdan/selectdInfo?deviceNumber=&id=' + id,
                        type: 'POST',
                        dataType: 'JSON',
                        success: function(data) {
                            var result = data.data[0];
                            var t = result.galarmTime.substr(0, 10);
                            var e = result.galarmTime.substr(11);
                            var time = t + '&nbsp;' + e;
                            str += "<tr> <td>报警人姓名:</td> <td>" + result.galarmPeople + "</td> <td>联系方式:</td> <td>" + result.phoneNumber + "</td> </tr>";
                            str += "<tr> <td>事发地址:</td> <td>" + result.place + "</td> <td>行政区:</td> <td>" + result.addvnm + "</td> </>";
                            str += "<tr> <td>报警时间:</td> <td>" + time + "</td> <td>报警内容:</td> <td>" + result.content + "</td> </tr>";
                            str += "<tr> <td>警情级别:</td> <td>" + result.level + "</td> <td>警情类别:</td> <td>" + result.waringType + "</td> </tr>";
                            str += "<tr> <td>处理方式:</td> <td class='treatment-method'> " + (result.type == 2 ? '处理中' : '待处理') + " </td> <td>处理人:</td> <td class='securityname'> " + result.handName + " </td> </tr>";
                            str += "<tr> <td>是否上报110:</td> <td class='report-oneonezero'> <input type='radio' name='callPhone' value='是'> <span>是</span> <input type='radio' name='callPhone' value='否'> <span>否</span> </td> <td>设备编号:</td> <td>" + 1111 + "</td> </tr>";
                            $('.police-container-distribute-details .content table tbody').append(str);
                            $('.police-container-distribute-details .header h4').text('警情跟进');
                            $('.police-container-distribute-details .handle-button').stop().hide();
                            $('.police-container-distribute-details').stop().show();
                        }
                    })
                })
                // 警情分发中的详情的取消按钮
            $('.police-container-distribute-details .handle-button .cancel').off('click').click(function() {
                    if (!$('.police-container-distribute-details .security-guard-nearby').is(':hidden')) {
                        $('.police-container-distribute-details .security-guard-nearby').stop().hide();
                    }
                    $('.police-container-distribute-details').stop().hide();
                })
                // 警情分发中详情的关闭按钮
            $('.police-container-distribute-details .header .close').off('click').click(function() {
                    if (!$('.police-container-distribute-details .security-guard-nearby').is(':hidden')) {
                        $('.police-container-distribute-details .security-guard-nearby').stop().hide();
                    }
                    $('.police-container-distribute-details').stop().hide();
                })
                // 派发保安的确认按钮
            $('.police-container-distribute-details .security-guard-nearby .security-staff-confirm input').off('click').click(function() {
                    var list = $('.police-container-distribute-details .security-guard-nearby .security-staff-content input');
                    that.securityFlag = false;
                    var id = null;
                    var securityname = null;
                    for (var i = 0; i < list.length; i++) {
                        if ($(list[i]).prop('checked') == true) {
                            that.securityFlag = true;
                            id = $(list[i]).attr('securityid');
                            securityname = $(list[i]).attr('securityname');
                            break;
                        }
                    }
                    if (that.securityFlag == false) {
                        layui.use('layer', function() {
                            var layer = layui.layer;
                            layer.msg('请选取保安', {
                                shade: [0.8, '#393D49'],
                                time: 1000
                            })
                        });
                    } else {
                        $('.police-container-distribute-details .content table tbody .securityname').attr('id', id).text(securityname);
                        $('.police-container-distribute-details .security-guard-nearby').stop().hide();
                    }
                })
                // 警情信息中类别移入事件
            $('#distributeCategory').mouseenter(function() {
                    if ($('#distributeCategory .select-list').is(':hidden')) {
                        $('#distributeCategory .select-list').stop().slideDown(0);
                    }
                })
                // 警情信息中得类别移出事件
            $('#distributeCategory').mouseleave(function() {
                    if (!$('#distributeCategory .select-list').is(':hidden')) {
                        $('#distributeCategory .select-list').stop().slideUp(0);
                    }
                })
                // 警情信息中类别移入事件
            $('#distributeState').mouseenter(function() {
                    if ($('#distributeState .select-list').is(':hidden')) {
                        $('#distributeState .select-list').stop().slideDown(0);
                    }
                })
                // 警情信息中得类别移出事件
            $('#distributeState').mouseleave(function() {
                    if (!$('#distributeState .select-list').is(':hidden')) {
                        $('#distributeState .select-list').stop().slideUp(0);
                    }
                })
                //  警情信息类,业主信息类,设备信息类别,具体项的点击事件
            $('.police-container > div .select-list').off('click', 'li').on('click', 'li', function(event) {
                    var text = $(this).text();
                    $(this).parent().parent().prev().html(text + '<i></i>');
                    $(this).parent().parent().stop().slideUp(0);
                    if (text == '全部') text = '';
                    var textOrr = '';
                    var textList = '';
                    var stateType = '';
                    if (that.tabIndex == 0) {
                        // that.getPoliceTable($('.analysis-container-police').find('.tbody tbody'), $('#dispatchingStartTime').val(), $('#dispatchingEndTime').val(), text);
                        if ($(this).attr('key')) {
                            textOrr = $('#distributeState div:eq(0)').text().trim();
                            textList = $('.police-dispatching .police-container .distribute-state .select-list ul li');
                            for (var i = 0; i < textList.length; i++) {
                                if (textOrr == $(textList[i]).text()) {
                                    stateType = $(textList[i]).attr('statetype');
                                }
                            }
                            that.getPoliceTable($('.police-container-distribute').find('.tbody tbody'), $('#dispatchingStartTime').val(), $('#dispatchingEndTime').val(), '', $(this).attr('addvcd'), stateType);
                        } else {
                            textOrr = $('#distributeCategory div:eq(0)').text().trim();
                            textList = $('.police-dispatching .police-container .distribute-district .select-list ul li');
                            for (var i = 0; i < textList.length; i++) {
                                if (textOrr == $(textList[i]).text()) {
                                    stateType = $(textList[i]).attr('addvcd');
                                }
                            }
                            that.getPoliceTable($('.police-container-distribute').find('.tbody tbody'), $('#dispatchingStartTime').val(), $('#dispatchingEndTime').val(), '', stateType, $(this).attr('stateType'));
                        }
                    }
                })
                // 时间查询
            $('#dispatchingSelectTime').off('click').click(function() {
                    var times = $(this).prevAll();
                    // 开始时间
                    var startTime = $(times[1]).val();
                    // 结束时间
                    var endTime = $(times[0]).val();
                    var textOne = $('#distributeCategory div:eq(0)').text().trim();
                    var addvcd = '';
                    var list = $('.police-dispatching .police-container .distribute-district .select-list ul li');
                    if (textOne == '全部') {
                        addvcd = '';
                    } else {
                        if (list.length > 0) {
                            for (var i = 0; i < list.length; i++) {
                                if (textOne == $(list[i]).text()) {
                                    addvcd = $(list[i]).attr('addvcd')
                                }
                            }
                        }
                    }
                    var textTwo = $('#distributeState div:eq(0)').text().trim();
                    var stateType = '';
                    var stateList = $('.police-dispatching .police-container .distribute-state .select-list ul li');
                    if (textTwo == '全部') {
                        stateType = '';
                    } else {
                        if (stateList.length > 0) {
                            for (var i = 0; i < stateList.length; i++) {
                                if (textTwo == $(stateList[i]).text()) {
                                    stateType = $(stateList[i]).attr('statetype')
                                }
                            }
                        }
                    }
                    that.getPoliceTable($('.police-container-distribute').find('.tbody tbody'), startTime, endTime, '', addvcd, stateType);
                })
                //  巡逻区域中的行点击事件
            $('.police-container .police-container-patrol .main-content>li:eq(0) .table .tbody').off('click', 'tr').on('click', 'tr', function() {
                    var flyid = $(this).attr('flyid');
                    var flyname = $(this).attr('flyname');
                    var extent = null;
                    for (var i = 0; i < that.currentDrawing.length; i++) {
                        if (flyid == that.currentDrawing[i].id && flyname == that.currentDrawing[i].regionName) {
                            extent = that.currentDrawing[i].extent;
                        }
                    }
                    // debugger
                    that._map.setExtent(extent.expand(1.5));
                    // var myFeatureExtent = new Extent(extent.)
                    // thisObj._map.setExtent(myFeatureExtent.expand(2));
                    // var lgtd = Number($(this).attr('lgtd'));
                    // var lttd = Number($(this).attr('lttd'));
                    // var position = new esri.geometry.Point(lgtd, lttd, new esri.SpatialReference({ wkid: 4326 }));//根据输入坐标信息找地图上的点
                    // that._map.centerAndZoom(position, 14);//缩放,10是缩放级别,可以自定义,数值越大缩放越大
                })
                // 巡逻区域的新增按钮
            $('.police-container .police-container-patrol .main-content>li:eq(0) .distribute-table-content .operation .add').off('click').click(function() {
                    var url = './popup/html/region-name.html';
                    layui.use('layer', function() {
                        that.layuiLayer = layui.layer;
                        that.layuiLayer.config({
                            extend: 'myskin/region-name.css'
                        });
                        that.layuiLayer.close(that.layuiLayer.index);
                        that.layuiLayer.open({
                            title: '区域名称',
                            type: 2,
                            shadeClose: false,
                            shade: 0.3,
                            maxmin: false, //开启最大化最小化按钮
                            area: ['320px', '206px'],
                            offset: 'auto',
                            skin: 'region-name',
                            content: url,
                            closeBtn: 1,
                            success: function(layero, index) {
                                layero.find('iframe').contents().find(".start-editing").off('click').click(function() {
                                    // 区域名称
                                    var regionName = layero.find('iframe').contents().find('.region-name-input').val();
                                    var regionDescribe = layero.find('iframe').contents().find('.region-name-textarea').val();
                                    if (regionName == '') {
                                        that.layuiLayer.msg('请填写区域名称', {
                                            time: 1000
                                        })
                                        return
                                    }
                                    if (regionDescribe == '') {
                                        that.layuiLayer.msg('请填写区域描述', {
                                            time: 1000
                                        })
                                        return
                                    }
                                    that.globalRegionName = regionName;
                                    that.routeOrRegionDescribe = regionDescribe;
                                    // 开启,可以勾选线段
                                    that.polygonFlag = true;
                                    that.layuiLayer.close(index);
                                })
                            }
                        });
                    })
                })
                // 查找按钮
            $('.police-container .police-container-patrol .main-content>li:eq(0) .distribute-table-content .operation .query').off('click').click(function() {
                var routerName = $('.police-container .police-container-patrol .main-content>li:eq(0) .distribute-table-content .route-name').val();
                // if (routerName == '') {
                //   layui.use('layer', function () {
                //     layui.layer.msg('请填写区域名称', {
                //       time: 1000
                //     })
                //   })
                //   return
                // }
                that.patrolArea($('.police-dispatching .police-container .police-container-patrol .table .tbody tbody'), routerName);
                $('.police-container .police-container-patrol .main-content>li:eq(0) .distribute-table-content .route-name').val('');
            })
            // 保安出警管理表格中点击事件
            $('.police-dispatching .police-container .police-container-policeforce .table .tbody tbody').off('click', 'input').on('click', 'input', function(event) {
                event.stopPropagation();
                var lgtd = Number($(this).parent().parent().attr('lgtd'));
                var lttd = Number($(this).parent().parent().attr('lttd'));
                var position = new esri.geometry.Point(lgtd, lttd, new esri.SpatialReference({ wkid: 4326 })); //根据输入坐标信息找地图上的点
                that.newElectronicFenceId = null;
                that._map.centerAndZoom(position, 18); //缩放,10是缩放级别,可以自定义,数值越大缩放越大
                var graphic = that.entityPolygonAll.graphics;
                for (var i = 0; i < graphic.length; i++) {
                    if (graphic[i].objId.id == $(this).attr('resultid')) {
                        if (graphic[i].geometry.rings[0].length > 0) {
                            that.polygonFlag = false;
                            that.electronicFence();
                            that.activateToolbar(graphic[i]);
                        } else {
                            layui.use('layer', function() {
                                layui.layer.msg('请开始划分电子围栏');
                            })
                            that.polygonFlag = true;
                            that.newElectronicFenceId = graphic[i].objId;
                        }
                    }
                }
            })
            $('.police-dispatching .police-container .police-container-policeforce .table .tbody tbody').off('click', 'tr').on('click', 'tr', function(event) {
                event.stopPropagation();
                var lgtd = Number($(this).attr('lgtd'));
                var lttd = Number($(this).attr('lttd'));
                var position = new esri.geometry.Point(lgtd, lttd, new esri.SpatialReference({ wkid: 4326 })); //根据输入坐标信息找地图上的点
                that._map.centerAndZoom(position, 18); //缩放,10是缩放级别,可以自定义,数值越大缩放越大
                var snumber = $(this).attr('term-snumber');
                var url = './popup/html/personnel-information-management.html?id=' + snumber;
                layui.use('layer', function() {
                    that.layuiLayer = layui.layer;
                    that.layuiLayer.config({
                        extend: 'myskin/personnel-information-management.css'
                    });
                    that.layuiLayer.close(that.layuiLayer.index);
                    that.layuiLayer.open({
                        title: '保安人员信息',
                        type: 2,
                        shadeClose: true,
                        shade: false,
                        maxmin: false, //开启最大化最小化按钮
                        area: ['400px', '220px'],
                        offset: 'auto',
                        skin: 'personnel-information-management',
                        content: url,
                        closeBtn: 1,
                    });
                })
            })
            $('.police-dispatching .police-container .police-container-policeforce .table .tbody tbody').off('click', 'tr td').on('click', 'tr td', function(event) {
                if ($(this).index() == 4) {
                    event.stopPropagation();
                    return;
                }
            })
            // 巡逻管理中,巡逻路线和巡逻区域的切换换
            $('.police-dispatching .police-container .police-container-patrol .tab-header li').off('click').click(function() {
                    if (that.patrolIndex == $(this).index()) return;
                    $(this).addClass('on').siblings().removeClass('on');
                    $(".police-dispatching .police-container .police-container-patrol .main-content li:eq(" + $(this).index() + ")").stop().show().siblings().stop().hide();
                    that.polygonFlag = false;
                    that.entityPolygonAll.clear();
                    that.modifyPolygon();
                    // 切换时清除新增点线面数组中保存得数据,与清除地图上得实体
                    that.polygonData = [];
                    that.addPolygonEntitys.clear();
                    if ($(this).index() == 1) {
                        $('.police-dispatching .police-container .police-container-patrol .main-content .select-list ul').empty();
                        $.ajax({
                            url: 'http://s16s652780.51mypc.cn/api/regions/regions/selectqy',
                            type: 'GET',
                            dataType: 'JSON',
                            success: function(res) {
                                var result = res.data;
                                $('.police-dispatching .police-container .police-container-patrol .main-content .select>ul>li>div:eq(0)').html(result[0].regionName + '<i></i>').attr('regionId', result[0].regionId);
                                for (var i = 0; i < result.length; i++) {
                                    $('.police-dispatching .police-container .police-container-patrol .main-content .select-list ul').append($("<li regionId='" + result[i].regionId + "'>" + result[i].regionName + "</li>"))
                                }
                            }
                        })
                        that.getRouteInformation($('.police-dispatching .police-container .police-container-patrol .main-content>li:eq(1) .table .tbody tbody'), '');
                    } else {
                        that.patrolArea($('.police-dispatching .police-container .police-container-patrol .main-content>li:eq(0) .table .tbody tbody'), '');
                    }
                    that.patrolIndex = $(this).index();
                })
                // 巡逻管理下面的巡逻路线中的select选择框的移入事件
            $('#patrolRoute').mouseenter(function() {
                    if ($('#patrolRoute .select-list').is(':hidden')) {
                        $('#patrolRoute .select-list').stop().slideDown(0);
                    }
                })
                // 巡逻管理下面的巡逻路线中的select选择框的移出事件
            $('#patrolRoute').mouseleave(function() {
                    if (!$('#patrolRoute .select-list').is(':hidden')) {
                        $('#patrolRoute .select-list').stop().slideUp(0);
                    }
                })
                // 巡逻路线中区域选择的具体项的点击事件
            $('.police-dispatching .police-container .police-container-patrol .select-list').off('click', 'li').on('click', 'li', function(event) {
                    var text = $(this).text();
                    $(this).parent().parent().prev().html(text + '<i></i>').attr('regionId', $(this).attr('regionId'));
                    $(this).parent().parent().stop().slideUp(0);
                })
                // 巡逻路线中的新增按钮的点击事件
            $('.police-dispatching .police-container .police-container-patrol .main-content>li:eq(1) .add').off('click').click(function() {
                    var url = './popup/html/route-name-layer.html';
                    layui.use('layer', function() {
                        that.layuiLayer = layui.layer;
                        that.layuiLayer.config({
                            extend: 'myskin/route-name-layer.css'
                        });
                        that.layuiLayer.closeAll();
                        that.layuiLayer.open({
                            title: '路线名称及描述',
                            type: 2,
                            shadeClose: false,
                            shade: 0.3,
                            maxmin: false, //开启最大化最小化按钮
                            area: ['320px', '266px'],
                            offset: 'auto',
                            skin: 'route-name-layer',
                            content: url,
                            closeBtn: 1,
                            resize: false,
                            success: function(layero, index) {
                                layero.find('iframe').contents().find(".start-editing").off('click').click(function() {
                                    // 区域名称 or 路线名称
                                    var routeName = layero.find('iframe').contents().find('.route-name-layer-input').val();
                                    var routeDescribe = layero.find('iframe').contents().find('.route-name-layer-textarea').val();
                                    var peopleRealName = layero.find('iframe').contents().find('.route-personnel').val();
                                    var pepleRealId = layero.find('iframe').contents().find('.route-personnel').attr('peopleid');
                                    if (routeName == '') {
                                        that.layuiLayer.msg('请填写路线名称', {
                                            time: 1000
                                        })
                                        return
                                    }
                                    if (routeDescribe == '') {
                                        that.layuiLayer.msg('请填写路线描述', {
                                            time: 1000
                                        })
                                        return
                                    }
                                    if (pepleRealId == '') {
                                        that.layuiLayer.msg('请选择人员', {
                                            time: 1000
                                        })
                                        return
                                    }
                                    that.peopleRealName = peopleRealName;
                                    that.pepleRealId = pepleRealId;
                                    that.globalRegionName = routeName;
                                    that.routeOrRegionDescribe = routeDescribe;
                                    // // 开启,可以勾选线段
                                    that.polygonFlag = true;
                                    that.layuiLayer.close(index);
                                })
                            }
                        });
                    })
                })
                // 巡逻路线行点击事件
            $('.police-container .police-container-patrol .main-content>li:eq(1) .table .tbody').off('click', 'tr').on('click', 'tr', function() {
                var flyid = $(this).attr('flyid');
                var flyname = $(this).attr('flyname');
                var extent = null;
                for (var i = 0; i < that.currentDrawing.length; i++) {
                    if (flyid == that.currentDrawing[i].id && flyname == that.currentDrawing[i].routeName) {
                        extent = that.currentDrawing[i].extent;
                    }
                }
                that._map.setExtent(extent.expand(1.5));
            })
            $('.police-container .police-container-patrol .main-content>li:eq(1) .table .tbody').off('click', 'tr td').on('click', 'tr td', function(event) {
                if ($(this).index() == 4) {
                    event.stopPropagation();
                    return;
                }
            })
            $('.police-container .police-container-patrol .main-content>li:eq(1) .table .tbody').off('click', 'input').on('click', 'input', function(event) {
                event.stopPropagation();
                var routeName = $(this).parent().parent().children('td:eq(2)').text();
                var routeId = $(this).parent().parent().attr('flyid');
                var peopleName = $(this).parent().parent().children('td:eq(1)').text();
                var self = this;
                var url = './popup/html/routename-and-peoplename.html?routeName=' + routeName + '&routeId=' + routeId + '&peopleName=' + peopleName;
                layui.use('layer', function() {
                    that.layuiLayer = layui.layer;
                    that.layuiLayer.config({
                        extend: 'myskin/routename-and-peoplename.css'
                    });
                    that.layuiLayer.closeAll();
                    that.layuiLayer.open({
                        title: '路线巡逻人员',
                        type: 2,
                        shadeClose: false,
                        shade: 0.3,
                        maxmin: false, //开启最大化最小化按钮
                        area: ['320px', '172px'],
                        offset: 'auto',
                        skin: 'routename-and-peoplename',
                        content: url,
                        closeBtn: 1,
                        resize: false,
                        success: function(layero, index) {
                            layero.find('iframe').contents().find(".confirm-update").off('click').click(function() {
                                // 区域名称 or 路线名称
                                var peoplelayerName = layero.find('iframe').contents().find('.peoplename-update').val();
                                var peoplelayerId = layero.find('iframe').contents().find('.peoplename-update').attr('peopleid');
                                console.log(peoplelayerName, peoplelayerId);
                                if (peoplelayerName == peopleName) {
                                    that.layuiLayer.close(index);
                                    that.layuiLayer.msg('人员未更改!');
                                } else {
                                    $.ajax({
                                        url: 'http://s16s652780.51mypc.cn/api/duty/duty/updatedtInfo',
                                        type: 'POST',
                                        data: {
                                            rid: routeId,
                                            snumber: peoplelayerId,
                                            sname: peoplelayerName
                                        },
                                        dataType: 'JSON',
                                        success: function(res) {
                                            if (res.code == 200) {
                                                that.layuiLayer.close(index);
                                                $(self).parent().parent().children('td:eq(1)').text(peoplelayerName);
                                                that.layuiLayer.msg('人员已更改!');
                                            }
                                        }
                                    })
                                }
                            })
                        }
                    });
                })
            })
            // 查找按钮
            $('.police-container .police-container-patrol .main-content>li:eq(1) .distribute-table-content .operation .query').off('click').click(function() {
                var routerName = $('.police-container .police-container-patrol .main-content>li:eq(1) .distribute-table-content .route-name').val();
                // if (routerName == '') {
                //   layui.use('layer', function () {
                //     layui.layer.msg('请填写区域名称', {
                //       time: 1000
                //     })
                //   })
                //   return
                // }
                that.getRouteInformation($('.police-dispatching .police-container .police-container-patrol .main-content>li:eq(1) .table .tbody tbody'), routerName);
                $('.police-container .police-container-patrol .main-content>li:eq(1) .distribute-table-content .route-name').val('');
            })
        },
        open: function() {
            var that = this;
            $("#tabcontainer").css("width", "360px");
            $('#mapcontentClass').addClass('client-max-map'); //追加样式
            AppEvent.dispatchAppEvent(AppEvent.APPLICATION_RESIZE, {});
            document.oncontextmenu = function(event) {
                event.preventDefault();
            };
            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);
                        if (that.tabIndex == 1) {
                            if (that.patrolIndex == 1) {
                                $.ajax({
                                    url: 'http://s16s652780.51mypc.cn/api/routeIn/routein/insertlx',
                                    type: 'POST',
                                    dataType: 'JSON',
                                    data: {
                                        routeName: that.globalRegionName,
                                        regionId: $('#patrolRoute div:eq(0)').attr('regionid'),
                                        routeInfo: dataStr,
                                        remarks: that.routeOrRegionDescribe,
                                        creatName: ''
                                    },
                                    success: function(result) {
                                        if (result.code == 200) {
                                            that.addPolygonEntitys.clear();
                                            that.polygonData = [];
                                            that.getRouteInformation($('.police-dispatching .police-container .police-container-patrol .table .tbody tbody'), '');
                                            $.ajax({
                                                url: 'http://s16s652780.51mypc.cn/api/duty/duty/insertduty',
                                                type: 'POST',
                                                dataType: 'JSON',
                                                data: {
                                                    sname: that.peopleRealName,
                                                    snumber: that.pepleRealId,
                                                    rid: result.data,
                                                    regionId: $('#patrolRoute div:eq(0)').attr('regionid'),
                                                    type: 0
                                                },
                                                success: function(data) {
                                                    if (data.code == 200) {
                                                        alert(1);
                                                    }
                                                }
                                            })
                                        }
                                    }
                                })
                                // that.peopleRealName = peopleRealName;
                                // that.pepleRealId = pepleRealId;
                            } else {
                                $.ajax({
                                    url: 'http://s16s652780.51mypc.cn/api/regions/regions/insterqy',
                                    type: 'POST',
                                    dataType: 'JSON',
                                    data: {
                                        regionName: that.globalRegionName,
                                        coordinate: dataStr,
                                        remarks: that.routeOrRegionDescribe
                                    },
                                    success: function(result) {
                                        if (result.code == 200) {
                                            that.addPolygonEntitys.clear();
                                            that.polygonData = [];
                                            that.patrolArea($('.police-dispatching .police-container .police-container-patrol .table .tbody tbody'), '');
                                        }
                                    }
                                })
                            }
                        } else if (that.tabIndex == 2) {
                            $.ajax({
                                url: 'http://s16s652780.51mypc.cn/api/enclosure/enclosure/insertes',
                                type: 'POST',
                                dataType: 'JSON',
                                data: {
                                    anumber: that.newElectronicFenceId.anumber,
                                    aname: that.newElectronicFenceId.aname,
                                    routeInfo: dataStr
                                },
                                success: function(result) {
                                    if (result.code == 200) {
                                        that.addPolygonEntitys.clear();
                                        that.polygonData = [];
                                        that.getSecurityPeople($('.police-dispatching .police-container .police-container-policeforce .table .tbody tbody'), '');
                                    }
                                }
                            })
                        }
                    }
                    that.polygonFlag = false;
                    // that.polygonData = [];
                }
            }
            that.treatmentIndex = null;
            that.tabIndex = 0;
            $('.police-dispatching-tab li:eq(0)').addClass('on').siblings().removeClass('on');
            $($('.police-container > div')[0]).stop().show().siblings().stop().hide();
            $('.police-dispatching .police-container .distribute-district .select-list ul').empty();
            $('.police-dispatching .police-container .distribute-district .select-list ul').append("<li key='addvcd' addvcd=''>全部</li>");
            $.ajax({
                url: 'http://s16s652780.51mypc.cn/api/district/district/selectList',
                type: 'POST',
                dataType: 'JSON',
                success: function(data) {
                    for (var i = 0; i < data.data.length; i++) {
                        $('.police-dispatching .police-container .distribute-district .select-list ul').append("<li key='addvcd' addvcd=" + data.data[i].addvcd + ">" + data.data[i].addvnm + "</li>");
                    }
                }
            })
            layui.use('laydate', function() {
                that.layuiLadate = layui.laydate;
                //执行一个laydate实例 开始
                that.layuiLadate.render({
                    elem: '#dispatchingStartTime', //指定元素
                    type: "datetime",
                    format: 'yyyy-MM-dd HH:mm',
                    btns: ['confirm'],
                    trigger: 'click',
                });
                // 结束
                that.layuiLadate.render({
                    elem: '#dispatchingEndTime', //指定元素
                    type: "datetime",
                    format: 'yyyy-MM-dd HH:mm',
                    btns: ['confirm'],
                    trigger: 'click',
                });
            });
            // that.getPoliceTable($('.police-container-distribute').find('.tbody tbody'), $('#dispatchingStartTime').val(), $('#dispatchingEndTime').val(), '', '', '');
            that.clickHand();
            $('.police-dispatching-tab li:eq(1)').trigger('click');
        },
        close: function() {
            $("#tabcontainer").css("width", "66%");
            $('#mapcontentClass').removeClass('client-max-map'); //删除样式
            this.entitysData = [];
            this.addEntitys.clear();
            this.entityPolygonAll.clear();
            this.modifyPolygon();
            // 切换时清除新增点线面数组中保存得数据,与清除地图上得实体
            this.polygonData = [];
            this.addPolygonEntitys.clear();
        },
        // 鼠标点击事件
        clickHand: function() {
            var self = this;
            self._map.onClick = mapClick;
            // $('#mainMapWidget')[0].ondblclick = function (event) {
            //   event.preventDefault();
            //   // if ()
            //   self.activateToolbar(event.graphic);
            //   return false;
            // };
            function mapClick(evt) {
                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.tabIndex == 0) {
                    if (evt.graphic) {
                        var result = evt.graphic.geometry.entityData;
                        // var liText = evt.graphic.symbol.name;
                        self.policeDetails(result.id);
                    }
                } else if (self.tabIndex == 1) {
                    if (self.patrolIndex == 1) {
                        // 编辑中的
                        if (self.polygonFlag == true) {
                            var normalizedVal = webMercatorUtils.xyToLngLat(evt.mapPoint.x, evt.mapPoint.y);
                            if (self.polygonData.length == 0) {
                                self.polygonData.push([normalizedVal[0], normalizedVal[1]]);
                                self.addPoint(self.addPolygonEntitys, normalizedVal[0], normalizedVal[1]);
                            } else {
                                self.polygonData.push([normalizedVal[0], normalizedVal[1]]);
                                self.addPolyline(self.addPolygonEntitys, self.polygonData);
                                return;
                            }
                        } else { // 不在编辑中
                            if (evt.graphic) { // 点击在图形上
                                // 保存当前点击得图形
                                // self.currentDrawing = evt.graphic;
                                self.modifyPolygon();
                                self.activateToolbar(evt.graphic);
                            } else { // 点击不在图形上
                                self.modifyPolygon()
                            }
                        }
                    } else {
                        // 编辑中的
                        if (self.polygonFlag == true) {
                            var normalizedVal = webMercatorUtils.xyToLngLat(evt.mapPoint.x, evt.mapPoint.y);
                            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()
                            }
                        }
                    }
                } else if (self.tabIndex == 2) {
                    if (self.polygonFlag == true) {
                        var normalizedVal = webMercatorUtils.xyToLngLat(evt.mapPoint.x, evt.mapPoint.y);
                        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.electronicFence();
                            self.activateToolbar(evt.graphic);
                        } else { // 点击不在图形上
                            self.electronicFence()
                        }
                    }
                    // self.equipmentDetails(result.id);
                }
            }
            // 提示信息
            $(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();
                }
            })
        },
        // 警情详情弹框
        /**
         *
         * @param {number} id 警情ID
         */
        policeDetails: function(id) {
            var that = this;
            var url = './popup/html/police-details.html?obj=' + id;
            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,
                    maxmin: false, //开启最大化最小化按钮
                    area: ['500px', '400px'],
                    offset: 'auto',
                    skin: 'police-details',
                    content: url,
                    closeBtn: 1,
                });
            })
        },
        // 业主详情弹框
        /**
         *
         * @param {number} id 警情ID
         */
        ownerDetails: function(id) {
            var that = this;
            var url = './popup/html/owner-details.html?id=' + id;
            layui.use('layer', function() {
                that.layuiLayer = layui.layer;
                that.layuiLayer.config({
                    extend: 'myskin/owner-details.css'
                });
                that.layuiLayer.close(that.layuiLayer.index);
                that.layuiLayer.open({
                    title: '业主详情',
                    type: 2,
                    shadeClose: true,
                    shade: false,
                    maxmin: false, //开启最大化最小化按钮
                    area: ['500px', '340px'],
                    offset: 'auto',
                    skin: 'owner-details',
                    content: url,
                    closeBtn: 1,
                });
            })
        },
        // 设备详情弹框
        /**
         *
         * @param {number} id 设备ID
         */
        equipmentDetails: function(id) {
            var that = this;
            var url = './popup/html/equipment-details.html?obj=' + id;
            layui.use('layer', function() {
                that.layuiLayer = layui.layer;
                that.layuiLayer.config({
                    extend: 'myskin/equipment-details.css'
                });
                that.layuiLayer.close(that.layuiLayer.index);
                that.layuiLayer.open({
                    title: '警情详情',
                    type: 2,
                    shadeClose: true,
                    shade: false,
                    maxmin: false, //开启最大化最小化按钮
                    area: ['520px', '320px'],
                    offset: 'auto',
                    skin: 'equipment-details',
                    content: url,
                    closeBtn: 1,
                });
            })
        },
        // 获取当前时间,以及昨天现在的时间
        getTime: function getTime() {
            var timestamp = Date.parse(new Date());
            // 当前时间
            var currentTime = new Date(timestamp);
            // 年
            var currentY = currentTime.getFullYear();
            // 月
            var currentM = currentTime.getMonth() + 1 < 10 ? '0' + (currentTime.getMonth() + 1) : currentTime.getMonth() + 1;
            // 日
            var currentD = currentTime.getDate() < 10 ? '0' + currentTime.getDate() : currentTime.getDate();
            // 时
            var currentH = currentTime.getHours() < 10 ? '0' + currentTime.getHours() : currentTime.getHours();
            // 分
            var currentDd = currentTime.getMinutes() < 10 ? '0' + currentTime.getMinutes() : currentTime.getMinutes();
            // 明天
            var tomorrowTime = new Date(timestamp - 60 * 60 * 24 * 1000);
            // 年
            var tomorrowY = tomorrowTime.getFullYear();
            // 月
            var tomorrowM = tomorrowTime.getMonth() + 1 < 10 ? '0' + (tomorrowTime.getMonth() + 1) : tomorrowTime.getMonth() + 1;
            // 日
            var tomorrowD = tomorrowTime.getDate() < 10 ? '0' + tomorrowTime.getDate() : tomorrowTime.getDate();
            // 时
            var tomorrowH = tomorrowTime.getHours() < 10 ? '0' + tomorrowTime.getHours() : tomorrowTime.getHours();
            // 分
            var tomorrowDd = tomorrowTime.getMinutes() < 10 ? '0' + tomorrowTime.getMinutes() : tomorrowTime.getMinutes();
            return {
                current: currentY + '-' + currentM + '-' + currentD + ' ' + currentH + ':' + currentDd,
                tomorrow: tomorrowY + '-' + tomorrowM + '-' + tomorrowD + ' ' + tomorrowH + ':' + tomorrowDd,
                month: currentM + currentD
            };
        },
        // 获取警情信息列表
        /**
         *
         * @param {object} dom jq对象
         * @param {string} beginTime 开始时间
         * @param {string} endTime 结束时间
         * @param {*} waringType 警情的类别
         */
        getPoliceTable: function(dom, beginTime, endTime, waringType, addvcd, type) {
            dom.empty();
            var that = this;
            $.ajax({
                url: 'http://s16s652780.51mypc.cn/api/jingdan/jingdan/selectList',
                type: 'POST',
                dataType: 'JSON',
                data: {
                    beginTime: beginTime,
                    endTime: endTime,
                    waringType: waringType,
                    addvcd: addvcd,
                    type: type
                },
                success: function(data) {
                    var result = data.data;
                    var str = '';
                    that.entitysData = [];
                    that.addEntitys.clear();
                    for (var a, time, t, e, y, h, i = 0; i < result.length; i++) {
                        if (result[i].type != 1) {
                            that.createEntitys(that.addEntitys, that.entitysData, '警情信息', {
                                lgtd: result[i].jd,
                                lttd: result[i].wd,
                                id: result[i].id
                            }, result[i].jd, result[i].wd, './images/jingbaored.png');
                            t = result[i].galarmTime.substr(0, 10);
                            e = result[i].galarmTime.substr(11);
                            time = t + '&nbsp;' + e;
                            y = result[i].galarmTime.substr(5, 5);
                            h = result[i].galarmTime.substr(11, 5);
                            a = Number(i) + 1;
                            str += '<tr term-list=' + result[i].id + ' lgtd=' + result[i].jd + ' lttd=' + result[i].wd + '>';
                            str += '<td>' + a + '</td>';
                            str += '<td title=' + result[i].addvnm + '>' + result[i].addvnm + '</td>';
                            str += '<td title=' + (result[i].type == 2 ? '处理中' : '待处理') + '>' + (result[i].type == 2 ? '处理中' : '待处理') + '</td>';
                            str += "<td><a href='javascript:;' title=" + time + ">" + y + ' ' + h + "</a></td>";
                            if (result[i].type == 2) {
                                str += "<td class='operation'> <input class='follow-up' type='button' value='跟进' term-list=" + result[i].id + "> </td>";
                            } else {
                                str += "<td class='operation'> <input class='edit' type='button' value='编辑' term-list=" + result[i].id + "> </td>";
                            }
                            str += '</tr>';
                            dom.append(str);
                            str = '';
                        }
                    }
                    for (var i = 0; i < 1000; i++) {
                        var dd = Math.random();
                        var cc = Math.random();
                    }
                }
            })
        },
        // 获取区域信息列表
        patrolArea: function(dom, regionName) {
            dom.empty();
            var that = this;
            that.currentDrawing = [];
            that.entityPolygonAll.clear();
            $.ajax({
                url: 'http://s16s652780.51mypc.cn/api/regions/regions/selectList',
                type: 'POST',
                dataType: 'JSON',
                data: {
                    regionName: regionName
                },
                success: function(data) {
                    var result = data.data;
                    var str = '';
                    var entityArr = [];
                    var objId = {};
                    var entityData = '';
                    for (var i = 0; i < result.length; i++) {
                        entityArr = [];
                        objId = {};
                        entityData = result[i].coordinate.match(/\(([^)]*)\)/);
                        // 此时result=["(dsfasjfj3124123)", "dsfasjfj3124123"];
                        if (entityData && entityData != '') {
                            entityData = entityData[1].split(',');
                            for (var j = 0; j < entityData.length; j++) {
                                entityArr.push([Number(entityData[j].split(' ')[0]), Number(entityData[j].split(' ')[1])]);
                            }
                        }
                        objId.id = result[i].id;
                        objId.regionId = result[i].regionId;
                        objId.regionName = result[i].regionName;
                        objId.remarks = result[i].remarks;
                        that.addPolygonAll(that.entityPolygonAll, entityArr, objId);
                        str += "<tr flyid=" + result[i].id + " flyname=" + result[i].regionName + "> <td>" + (Number(i) + 1) + "</td> <td>" + result[i].regionName + "</td> <td>" + result[i].ttime + "</td> </tr>";
                        dom.append(str);
                        str = '';
                    }
                }
            })
        },
        // 获取路线信息列表
        getRouteInformation: function(dom, routeName) {
            dom.empty();
            var that = this;
            that.currentDrawing = [];
            that.entityPolygonAll.clear();
            $.ajax({
                url: 'http://s16s652780.51mypc.cn/api/routeIn/routein/selectList',
                type: 'POST',
                dataType: 'JSON',
                data: {
                    routeName: routeName
                },
                success: function(data) {
                    var result = data.data;
                    var str = '';
                    var entityArr = [];
                    var objId = {};
                    var entityData = '';
                    for (var i = 0; i < result.length; i++) {
                        entityArr = [];
                        objId = {};
                        entityData = result[i].routeInfo.match(/\(([^)]*)\)/);
                        // 此时result=["(dsfasjfj3124123)", "dsfasjfj3124123"];
                        if (entityData && entityData != '') {
                            entityData = entityData[1].split(',');
                            for (var j = 0; j < entityData.length; j++) {
                                entityArr.push([Number(entityData[j].split(' ')[0]), Number(entityData[j].split(' ')[1])]);
                            }
                        }
                        objId.id = result[i].id;
                        objId.regionId = result[i].regionId;
                        objId.routeName = result[i].routeName;
                        objId.remarks = result[i].remarks;
                        that.addPolygonAll(that.entityPolygonAll, entityArr, objId);
                        str += "<tr flyid=" + result[i].id + " flyname=" + result[i].routeName + "> <td>" + (Number(i) + 1) + "</td> <td>" + result[i].sname + "</td> <td>" + result[i].routeName + "</td> <td> <a href='javascript:;' title=" + result[i].rtime + ">" + result[i].rtime.substr(5, 11) + "</a></td> <td><input type='button' value='编辑'></td> </tr>";
                        dom.append(str);
                        str = '';
                    }
                }
            })
        },
        // 获取保安人员信息列表
        getSecurityPeople: function(dom, deviceType) {
            dom.empty();
            var that = this;
            that.currentDrawing = [];
            that.entityPolygonAll.clear();
            $.ajax({
                url: 'http://s16s652780.51mypc.cn/api/security/security/selectList',
                type: 'POST',
                dataType: 'JSON',
                success: function(data) {
                    var result = data.data;
                    var str = '';
                    that.entitysData = [];
                    that.addEntitys.clear();
                    var entityArr = [];
                    var objId = {};
                    var entityData = '';
                    for (var a, i = 0; i < result.length; i++) {
                        that.createEntitys(that.addEntitys, that.entitysData, '出警信息', {
                            lgtd: result[i].jd,
                            lttd: result[i].wd,
                            id: result[i].id
                        }, result[i].jd, result[i].wd, './images/security.png');
                        entityArr = [];
                        objId = {};
                        entityData = result[i].coordinate.match(/\(([^)]*)\)/);
                        a = Number(i) + 1;
                        str += "<tr term-snumber=" + snumber + " lgtd=" + result[i].jd + " lttd=" + result[i].wd + ">";
                        str += '<td>' + a + '</td>';
                        str += '<td title=' + result[i].snumber + '>' + result[i].snumber + '</td>';
                        str += '<td title=' + result[i].sname + '>' + result[i].sname + '</td>';
                        str += '<td title=' + result[i].phone + '>' + result[i].phone + '</td>';
                        str += "<td> <input type='button' value='编辑' resultid=" + result[i].id + "> </td>";
                        str += '</tr>';
                        dom.append(str);
                        str = '';
                        // 此时result=["(dsfasjfj3124123)", "dsfasjfj3124123"];
                        if (entityData && entityData != '') {
                            entityData = entityData[1].split(',');
                            for (var j = 0; j < entityData.length; j++) {
                                entityArr.push([Number(entityData[j].split(' ')[0]), Number(entityData[j].split(' ')[1])]);
                            }
                        }
                        objId.id = result[i].id;
                        objId.anumber = result[i].snumber;
                        objId.aname = result[i].sname;
                        that.addPolygonAll(that.entityPolygonAll, entityArr, objId);
                    }
                }
            })
        },
        // 创建实体图层
        createEntitys: function(entitys, entityContent, name, item, lgtd, lttd, outlineColors) {
            var symbol = new esri.symbol.PictureMarkerSymbol(outlineColors, 26, 26);
            symbol.name = name;
            var pt = new Point(lgtd, lttd, new esri.SpatialReference({ wkid: 4326 }));
            pt.entityData = item;
            var graphic = new esri.Graphic(pt, symbol);
            entitys.add(graphic);
            entityContent.push(item);
        },
        addPoint: function(entitys, lgtd, lttd) {
            var symbol = new esri.symbol.PictureMarkerSymbol('./images/real-time-callPolice.png', 10, 10);
            var pt = new Point(lgtd, lttd, new SpatialReference({ wkid: 4326 }));
            var graphic = new esri.Graphic(pt, symbol);
            entitys.add(graphic);
        },
        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));
        },
        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
                }
            });
            entitys.add(new Graphic(polygon, polygonSymbol));
        },
        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);
        },
        addPolygonAll: function(entitys, rings, objId) {
            // entitys.clear();
            var graphic = null;
            if (this.patrolIndex == 1) {
                var polylineSymbol = new SimpleLineSymbol();
                polylineSymbol.color = [255, 0, 0, 1];
                polylineSymbol.width = 4;
                var polyline = new Polyline({
                    "paths": [rings],
                    "spatialReference": {
                        "wkid": 4326
                    }
                });
                graphic = new Graphic(polyline, polylineSymbol)
            } else {
                var polygonSymbol = new SimpleFillSymbol();
                polygonSymbol.color = [24, 255, 243, 0.411];
                var polygon = new Polygon({
                    "rings": [rings],
                    "spatialReference": {
                        "wkid": 4326
                    }
                });
                graphic = new Graphic(polygon, polygonSymbol);
            }
            graphic.objId = objId;
            if (this.tabIndex == 1) {
                if (this.patrolIndex == 1) {
                    this.currentDrawing.push({
                        id: objId.id,
                        regionId: objId.regionId,
                        routeName: objId.routeName,
                        remarks: objId.remarks,
                        extent: graphic.geometry.getExtent()
                    });
                } else {
                    this.currentDrawing.push({
                        id: objId.id,
                        regionId: objId.regionId,
                        regionName: objId.regionName,
                        remarks: objId.remarks,
                        extent: graphic.geometry.getExtent()
                    });
                }
            } else {
                this.currentDrawing.push({
                    id: objId.id,
                    aname: objId.aname,
                    anumber: objId.anumber,
                    extent: graphic.geometry.getExtent()
                });
            }
            entitys.add(graphic);
        },
        modifyPolygon: function() {
            var self = this;
            if (self.editToolbar != null) {
                if (self.patrolIndex == 1) {
                    var polygon = self.editToolbar.getCurrentState();
                    for (var i = 0; i < self.currentDrawing.length; i++) {
                        if (self.currentDrawing[i].id == polygon.graphic.objId.id) {
                            self.currentDrawing[i].extent = polygon.graphic.geometry.getExtent();
                        }
                    }
                    self.editToolbar.deactivate();
                    self.editToolbar = null;
                    // 声明空字符串,存储数据
                    var dataStr = '';
                    // 获取数据
                    var data = polygon.graphic.geometry.paths[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: 'http://s16s652780.51mypc.cn/api/routeIn/routein/updatelx',
                        type: 'POST',
                        dataType: 'JSON',
                        data: {
                            id: polygon.graphic.objId.id,
                            regionId: polygon.graphic.objId.regionId,
                            routeName: polygon.graphic.objId.routeName,
                            routeInfo: dataStr,
                            remarks: polygon.graphic.objId.remarks,
                        },
                        success: function(result) {
                            if (result.code == 200) {
                            }
                        }
                    })
                } else {
                    var polygon = self.editToolbar.getCurrentState();
                    for (var i = 0; i < self.currentDrawing.length; i++) {
                        if (self.currentDrawing[i].id == polygon.graphic.objId.id) {
                            self.currentDrawing[i].extent = polygon.graphic.geometry.getExtent();
                        }
                    }
                    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: 'http://s16s652780.51mypc.cn/api/regions/regions/updateqy',
                        type: 'POST',
                        dataType: 'JSON',
                        data: {
                            id: polygon.graphic.objId.id,
                            regionId: polygon.graphic.objId.regionId,
                            regionName: polygon.graphic.objId.regionName,
                            coordinate: dataStr,
                            remarks: polygon.graphic.objId.remarks
                        },
                        success: function(result) {
                            if (result.code == 200) {
                            }
                        }
                    })
                }
            }
        },
        electronicFence: function() {
            var self = this;
            if (self.editToolbar != null) {
                var polygon = self.editToolbar.getCurrentState();
                for (var i = 0; i < self.currentDrawing.length; i++) {
                    if (self.currentDrawing[i].id == polygon.graphic.objId.id) {
                        self.currentDrawing[i].extent = polygon.graphic.geometry.getExtent();
                    }
                }
                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: 'http://s16s652780.51mypc.cn/api/enclosure/enclosure/updatee',
                    type: 'POST',
                    dataType: 'JSON',
                    data: {
                        id: polygon.graphic.objId.id,
                        aname: polygon.graphic.objId.aname,
                        anumber: polygon.graphic.objId.anumber,
                        routeInfo: dataStr
                    },
                    success: function(result) {
                        if (result.code == 200) {
                        }
                    }
                })
            }
        },
        //聚合图层事件
        flareClusterLayer: function(datas) {
            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({ "wkid": 4326 }),
                subTypeFlareProperty: "facilityType",
                singleFlareTooltipProperty: "name",
                displaySubTypeFlares: true,
                displaySingleFlaresAtCount: displaySingleFlaresAtCount,
                flareShowMode: "mouse",
                preClustered: preClustered,
                clusterRatio: 75,
                clusterAreaDisplay: areaDisplayMode,
                clusteringBegin: function() {
                    console.log("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/ceshi.png", 32, 32).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, 22, 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;
        }
    });
    return Widget;
});
public/map/widgets/patrolManagement/PatrolManagement.css
@@ -7,7 +7,6 @@
}
div[open-li='police-dispatching']>ul {
    display: none;
    height: 36px;
    line-height: 36px;
@@ -33,7 +32,9 @@
    background: rgb(255, 255, 255);
}
/* 分析研判内容容器 */
.police-container {
    position: relative;
    height: calc(100%);
@@ -49,12 +50,13 @@
    left: 0;
}
.police-container>div:first-child {
    display: block;
}
/* 显示信息得表格 */
.police-container .police-container-distribute .distribute-table-content {
    height: calc(100% - 80px);
}
@@ -90,13 +92,11 @@
    scrollbar-width: thin;
}
.police-container .table table {
    width: 360px;
    border-collapse: collapse;
    table-layout: fixed;
    box-sizing: border-box;
}
.police-container .table table tr {
@@ -114,7 +114,6 @@
    font-weight: 400;
    color: #677788;
    box-sizing: border-box;
    overflow: hidden;
    /*超出的文字隐藏*/
    text-overflow: ellipsis;
@@ -132,9 +131,7 @@
.police-container .table table tr:first-child td {
    border-top: none;
}
.police-container .table .tbody tr {
    cursor: pointer;
@@ -164,8 +161,12 @@
    cursor: default;
}
/* 编辑和查看 按钮的样式定义 */
/* 巡逻路线中的编辑按钮样式 */
.police-dispatching .police-container .police-container-policeforce .table .tbody tbody td input,
.police-container .police-container-distribute .table .tbody tr td input,
.police-dispatching .police-container .police-container-patrol .main-content>li:nth-child(2) table tr td:nth-child(5) input {
@@ -189,12 +190,10 @@
}
/* 
.police-container .police-container-distribute .table .tbody tr td:nth-child(5),
.police-container .police-container-distribute .table .thead tr th:nth-child(5), */
.police-container .police-container-patrol .table .tbody tr td:nth-child(5),
.police-container .police-container-patrol .table .thead tr th:nth-child(5),
.police-container .police-container-policeforce .table .tbody tr td:nth-child(5),
@@ -227,13 +226,8 @@
}
/* 警情分发详情样式 */
.police-dispatching .police-container-distribute-details {
    position: fixed;
    top: 0;
@@ -243,7 +237,7 @@
    margin: auto;
    width: 740px;
    height: 308px;
    background:rgb(255, 255, 255);
    background: rgb(255, 255, 255);
    border-radius: 10px;
}
@@ -258,7 +252,6 @@
    color: #677788;
    font-size: 24px;
}
.police-dispatching .police-container-distribute-details .header .close,
.police-dispatching .police-container-distribute-details .security-staff-header .close {
@@ -300,8 +293,8 @@
.police-dispatching .police-container-distribute-details .content table td {
    flex: 1;
    padding: 0 10px;
    border-top:1px solid rgba(231, 234, 243, 0.7);
    border-left:1px solid rgba(231, 234, 243, 0.7);
    border-top: 1px solid rgba(231, 234, 243, 0.7);
    border-left: 1px solid rgba(231, 234, 243, 0.7);
    width: 25%;
    height: auto !important;
    line-height: 36px;
@@ -312,19 +305,23 @@
}
.police-dispatching .police-container-distribute-details .content table tr td:last-child {
    border-right:1px solid rgba(231, 234, 243, 0.7);
    border-right: 1px solid rgba(231, 234, 243, 0.7);
}
.police-dispatching .police-container-distribute-details .content table tr:last-child td {
    border-bottom:1px solid rgba(231, 234, 243, 0.7);
    border-bottom: 1px solid rgba(231, 234, 243, 0.7);
}
.police-dispatching .police-container-distribute-details .content table tr td:nth-child(odd) {
    color: #15a2fe;
}
/* 警情分发中具体某行,以及具体某行的子项的样式 */
/* 时间 */
.police-dispatching .police-container-distribute-details .content table tr td .processing-time {
    width: calc(100% - 10px);
    height: 24px;
@@ -335,7 +332,7 @@
    background: url(../../images/laydata-bg.png) no-repeat;
    background-size: 20px 14px;
    background-position: 98% center;
    border:1px solid rgba(231, 234, 243, 0.7);
    border: 1px solid rgba(231, 234, 243, 0.7);
}
.police-dispatching .police-container-distribute-details .content table tr .report-oneonezero input,
@@ -343,9 +340,6 @@
    vertical-align: middle;
    cursor: pointer;
}
.police-dispatching .police-container-distribute-details .handle-button,
.police-dispatching .police-container-distribute-details .security-staff-confirm {
@@ -383,7 +377,6 @@
}
/* 派发保安----附近保安人员选择 */
.police-dispatching .police-container-distribute-details .security-guard-nearby {
@@ -395,12 +388,11 @@
    background: rgba(255, 255, 255, 1);
}
.police-dispatching .police-container-distribute-details .security-staff-content table th,
.police-dispatching .police-container-distribute-details .security-staff-content table td {
    flex: 1;
    /* padding: 0 4px; */
    border:1px solid rgba(231, 234, 243, 0.7);
    border: 1px solid rgba(231, 234, 243, 0.7);
    height: auto !important;
    line-height: 28px;
    font-weight: normal;
@@ -424,12 +416,10 @@
    flex: 2;
}
.police-dispatching .police-container-distribute-details .security-staff-content table th:last-child,
.police-dispatching .police-container-distribute-details .security-staff-content table td:last-child {
    flex: 1;
}
.police-dispatching .police-container-distribute-details .security-staff-content table th {
    color: #15a2fe;
@@ -440,13 +430,8 @@
}
/* 类别选择,级别选择,以及热力图 */
.police-container .distribute-district,
.police-container .distribute-state {
    width: 100%;
@@ -478,12 +463,13 @@
    flex: 6;
    color: #677788;
    background: rgb(255, 255, 255);
    border:1px solid rgba(231, 234, 243, 0.7);
    border: 1px solid rgba(231, 234, 243, 0.7);
    box-sizing: border-box;
}
/* 类别选择中得下拉框 */
.police-container .distribute-district>ul>li:first-child div:first-child,
.police-container .distribute-state>ul>li:first-child div:first-child {
    position: absolute;
@@ -495,7 +481,6 @@
    padding-left: 10px;
    box-sizing: border-box;
    cursor: pointer;
}
.police-container .distribute-district>ul>li:first-child div:first-child i,
@@ -521,7 +506,6 @@
    width: calc(100% + 2px);
}
.police-container .distribute-district>ul>li:first-child ul,
.police-container .distribute-state>ul>li:first-child ul {
    display: flex;
@@ -531,10 +515,9 @@
    height: auto;
    overflow-y: auto;
    overflow-x: hidden;
    border:1px solid rgba(231, 234, 243, 0.7);
    border: 1px solid rgba(231, 234, 243, 0.7);
    border-top: none;
    box-sizing: border-box;
}
.police-container .distribute-district>ul>li:first-child ul li,
@@ -542,7 +525,7 @@
    flex: 1;
    padding-left: 10px;
    height: 34px;
    border-top: 1px solid rgba(231, 234, 243, 0.7);
    border-top: 1px solid rgba(231, 234, 243, 0.7);
    background: rgb(255, 255, 255);
    color: #677788;
    box-sizing: border-box;
@@ -561,11 +544,8 @@
}
/* 时间选择 */
.police-container .distribute-selection-criteria {
    display: flex;
    padding: 4px 6px;
@@ -601,11 +581,6 @@
}
/* 巡逻管理得样式 */
.police-container .police-container-patrol .distribute-table-content .operation {
@@ -620,15 +595,19 @@
.police-container .police-container-patrol .distribute-table-content .operation>div {
    flex: 8;
}
.police-container .police-container-patrol .distribute-table-content .operation input[type='text']::-webkit-input-placeholder {
    color: #fff;
  }
  input::-moz-input-placeholder {
}
input::-moz-input-placeholder {
    color: #fff;
  }
  input::-ms-input-placeholder {
}
input::-ms-input-placeholder {
    color: #fff;
  }
}
.police-container .police-container-patrol .distribute-table-content .operation input[type='text'] {
    flex: 8;
    padding: 0 10px;
@@ -651,13 +630,14 @@
    border-radius: 5px;
}
/* 
.police-container .police-container-patrol .distribute-table-content .operation input.query {
} */
/* 保安人员出警管理样式调整 */
.police-dispatching .police-container .police-container-policeforce .table .thead th:nth-child(2),
.police-dispatching .police-container .police-container-policeforce .table .tbody td:nth-child(2) {
    width: 68px;
@@ -669,8 +649,9 @@
}
/* 巡逻区域和巡逻路线的切换按钮样式 */
/* 默认巡逻区域 */
.police-dispatching .police-container .police-container-patrol .tab-header {
@@ -709,8 +690,8 @@
}
/* 类别选择,级别选择,以及热力图 */
.police-container .main-content .select {
    position: relative;
    padding: 0 10px;
@@ -751,6 +732,7 @@
/* 类别选择中得下拉框 */
.police-container .main-content .select>ul>li:first-child div:first-child {
    position: absolute;
    top: 0;
@@ -761,7 +743,6 @@
    padding-left: 10px;
    box-sizing: border-box;
    cursor: pointer;
}
.police-container .main-content .select>ul>li:first-child div:first-child i {
@@ -785,7 +766,6 @@
    width: calc(100% + 2px);
}
.police-container .main-content .select>ul>li:first-child ul {
    display: flex;
    flex-direction: column;
@@ -797,7 +777,6 @@
    border: 1px solid rgba(231, 234, 243, 1);
    border-top: none;
    box-sizing: border-box;
}
.police-container .main-content .select>ul>li:first-child ul li {
@@ -824,7 +803,6 @@
    border: none;
}
.police-dispatching .tips {
    display: none;
    padding: 2px 4px;
@@ -838,9 +816,6 @@
    border-radius: 5px;
    letter-spacing: 1px;
}
/* 巡逻路线中表格区域内的样式调整 */
@@ -860,7 +835,78 @@
    width: 68px;
}
.client-max-map{
.client-max-map {
    width: calc(100% - 360px) !important;
    left: 360px !important;
}
.layui-tree-txt {
    color: #fff !important;
}
.mapBtn {
    position: fixed;
    z-index: 999;
    align-items: center;
    left: 50%;
    top: 30px;
    background-color: #fff;
    width: 180px;
    border-radius: 10px;
    height: 30px;
    line-height: 30px;
}
.insBtn {
    float: left;
    margin-left: 10px;
}
.editBtn {
    float: left;
}
.insert {
    color: #757575;
}
.edit {
    color: #757575;
}
.delete {
    color: #757575;
}
.layui-layer-title {
    background-color: #004CA7;
    color: #fff;
}
.layui-layer {
    background-color: #004CA7;
}
.layui-layer-input {
    background-color: #0246E1;
}
.layui-layer-prompt .layui-layer-input {
    color: #fff;
}
.layui-layer-btn .layui-layer-btn0 {
    border-color: #1D5CE4;
    background-color: #1D5CE4;
    color: #fff;
}
.layui-layer-btn a {
    border: 1px solid #1D5CE4;
    background-color: #1D5CE4;
    color: #fff;
}
.layui-layer-dialog .layui-layer-content {
    color: #fff;
}
public/map/widgets/patrolManagement/PatrolManagement.js
Diff too large
public/map/widgets/patrolManagement/PatrolManagement01.js
New file
@@ -0,0 +1,2116 @@
/*
 * @Description:
 * @Version: 1.0
 * @Author: yangsx
 * @Date: 2019-12-09 19:01:40
 * @LastEditors: yangsx
 * @LastEditTime: 2019-12-14 14:44:57
 */
define([
  "dojo",
  "dojo/_base/declare",
  "dojo/_base/lang",
  "base/BaseWidget",
  "dojo/text!widgets/patrolManagement/template.html",
  "base/AppEvent",
  "base/ConfigData",
  "widgets/patrolManagement/config",
  "dojo/dom",
  "dojo/dom-construct",
  "dojo/dom-attr",
  "dojo/dom-style",
  "dojo/on",
  "esri/layers/ArcGISDynamicMapServiceLayer",
  "esri/layers/ArcGISTiledMapServiceLayer",
  "esri/layers/FeatureLayer",
  "controls/tab/TabControl",
  "esri/dijit/SymbolStyler",
  "esri/styles/basic",
  "dojo/_base/array",
  "esri/InfoTemplate",
  "esri/tasks/query",
  "esri/tasks/QueryTask",
  "esri/Color",
  "esri/toolbars/edit",
  "esri/graphic",
  "esri/geometry/Point",
  "esri/geometry/Polyline",
  "esri/geometry/Polygon",
  "esri/geometry/Extent",
  "esri/tasks/FeatureSet",
  "esri/renderers/HeatmapRenderer",
  "esri/symbols/SimpleLineSymbol",
  "esri/symbols/SimpleFillSymbol",
  "esri/symbols/PictureMarkerSymbol",
  "esri/symbols/SimpleMarkerSymbol",
  "esri/SpatialReference",
  "esri/tasks/GeometryService",
  "esri/tasks/ProjectParameters",
  "esri/layers/GraphicsLayer",
  "esri/layers/LabelLayer",
  "esri/symbols/TextSymbol",
  "esri/renderers/SimpleRenderer",
  "esri/renderers/ClassBreaksRenderer",
  "esri/tasks/Geoprocessor",
  "esri/tasks/DataFile",
  "esri/geometry/webMercatorUtils",
  "esri/symbols/Font",
  "esri/geometry/ScreenPoint",
  "esri/layers/ImageParameters",
  "esri/geometry/geometryEngine",
  "esri/dijit/PopupTemplate",
  "widgets/clientManagement/FlareClusterLayer_v3",
  "dojo/domReady!"
], function (
  dojo,
  declare,
  lang,
  BaseWidget,
  template,
  AppEvent,
  ConfigData,
  config,
  dom,
  domConstruct,
  domAttr,
  domStyle,
  on,
  ArcGISDynamicMapServiceLayer,
  ArcGISTiledMapServiceLayer,
  FeatureLayer,
  TabControl,
  SymbolStyler,
  basic,
  arrayUtils,
  InfoTemplate,
  Query,
  QueryTask,
  Color,
  Edit,
  Graphic,
  Point,
  Polyline,
  Polygon,
  Extent,
  FeatureSet,
  HeatmapRenderer,
  SimpleLineSymbol,
  SimpleFillSymbol,
  PictureMarkerSymbol,
  SimpleMarkerSymbol,
  SpatialReference,
  GeometryService,
  ProjectParameters,
  GraphicsLayer,
  LabelLayer,
  TextSymbol,
  SimpleRenderer,
  ClassBreaksRenderer,
  Geoprocessor,
  DataFile,
  webMercatorUtils,
  Font,
  ScreenPoint,
  ImageParameters,
  geometryEngine,
  PopupTemplate,
  FlareClusterLayer
) {
  var Widget = declare([BaseWidget], {
    widgetName: "PatrolManagement",
    label: "巡逻管理",
    templateString: template,
    _map: null,
    objThis: null,
    _siteLayer: new GraphicsLayer(),
    layuiLayer: null,
    layuiLadate: null,
    tabIndex: 0,
    // 保留添加实体图层的变量
    addEntitys: null,
    entitysData: [],
    // 是否派发保安的 文字
    treatmentIndex: null,
    securityFlag: false,
    editParentInd: null,
    // 存储新增点,线,面,数据的地方
    polygonData: [],
    polygonFlag: false,
    editToolbar: null,
    addPolygonEntitys: null,
    // 所有的面图层
    entityPolygonAll: null,
    // 用来存储区域名称
    globalRegionName: null,
    // 用来区域得最大最小经纬度
    currentDrawing: [],
    // 巡逻区域或者巡逻路线的描述
    routeOrRegionDescribe: null,
    // 用来记录巡逻区域或者巡逻路线的下标的
    patrolIndex: 0,
    // 拖拽
    isDown: false,
    x: 0,
    y: 0,
    offset: null,
    moveThis: null,
    // 电子围栏需要新增的Id
    newElectronicFenceId: null,
    // 新增路线时,派发人员,人员名称,以及人员id
    peopleRealName: null,
    pepleRealId: null,
    constructor: function (options, srcRefNode) {
      this._map = options.map;
      objThis = this;
      this.addEntitys = new GraphicsLayer({
        id: 'addEntitys'
      });
      // 添加点面线的图层
      this.addPolygonEntitys = new GraphicsLayer({
        id: 'addPolygonEntitys'
      });
      // 添加所有图层的地方
      this.entityPolygonAll = new GraphicsLayer({
        id: 'entityPolygonAll'
      });
      this._map.addLayer(this.addEntitys);
      this._map.addLayer(this.addPolygonEntitys);
      this._map.addLayer(this.entityPolygonAll);
    },
    startup: function () {
      objThis._map.addLayer(objThis._siteLayer);
      var that = this;
      // 顶部tab得切换事件
      $('.police-dispatching-tab li').click(function () {
        if (that.tabIndex == $(this).index()) return;
        if (that.entitysData.length > 0) {
          that.addEntitys.clear();
          that.entitysData = [];
        }
        that.patrolIndex = 0;
        that.polygonFlag = false;
        that.entityPolygonAll.clear();
        that.modifyPolygon();
        // 切换时清除新增点线面数组中保存得数据,与清除地图上得实体
        that.polygonData = [];
        that.addPolygonEntitys.clear();
        $(this).addClass('on').siblings().removeClass('on');
        var ind = $(this).index();
        $($('.police-container > div')[ind]).stop().show().siblings().stop().hide();
        if (ind == 0) {
          $('#distributeCategory div:eq(0)').html('全部' + '<i></i>');
          $('#distributeState div:eq(0)').html('全部' + '<i></i>');
          that.getPoliceTable($('.police-container-distribute').find('.tbody tbody'), $('#dispatchingStartTime').val(), $('#dispatchingEndTime').val(), '', '', '');
        } else if (ind == 1) {
          // that.getOwnerTable($($('.analysis-container > div')[ind]).find('.tbody tbody'), '', '');
          $('.police-dispatching .police-container .police-container-patrol .tab-header li:eq(0)').addClass('on').siblings().removeClass('on');
          $('.police-dispatching .police-container .police-container-patrol .main-content>li:eq(0)').stop().show().siblings().hide();
          that.patrolArea($('.police-dispatching .police-container .police-container-patrol .main-content>li:eq(0) .table .tbody tbody'), '');
        } else if (ind == 2) {
          that.getSecurityPeople($('.police-dispatching .police-container .police-container-policeforce .table .tbody tbody'), '');
        }
        that.tabIndex = $(this).index();
      })
      // 警情分发中的行点击事件
      $('.police-container .police-container-distribute .table .tbody').off('click', 'tr').on('click', 'tr', function () {
        var lgtd = Number($(this).attr('lgtd'));
        var lttd = Number($(this).attr('lttd'));
        var position = new esri.geometry.Point(lgtd, lttd, new esri.SpatialReference({
          wkid: 4326
        })); //根据输入坐标信息找地图上的点
        that._map.centerAndZoom(position, 18); //缩放,10是缩放级别,可以自定义,数值越大缩放越大
      })
      // 编辑,跟进按钮元素的父元素的点击事件
      $('.police-container .police-container-distribute .table .tbody').off('click', '.operation').on('click', '.operation', function (event) {
        event.stopPropagation();
      })
      // 警情分发中的编辑按钮的点击事件
      $('.police-container .police-container-distribute .table .tbody').off('click', '.edit').on('click', '.edit', function (event) {
        event.stopPropagation();
        that.editParentInd = null;
        that.editParentInd = $(this).parent().parent().index();
        var id = $(this).attr('term-list');
        that.treatmentIndex = null;
        if (!$('.police-container-distribute-details .security-guard-nearby').is(':hidden')) {
          $('.police-container-distribute-details .security-guard-nearby').stop().hide();
        }
        if (!$('.police-container-distribute-details').is(':hidden')) {
          $('.police-container-distribute-details').stop().hide();
        }
        $('.police-container-distribute-details .content table tbody').empty();
        var str = '';
        $.ajax({
          url: 'http://s16s652780.51mypc.cn/api/jingdan/jingdan/selectdInfo?deviceNumber=&id=' + id,
          type: 'POST',
          dataType: 'JSON',
          success: function (data) {
            var result = data.data[0];
            var t = result.galarmTime.substr(0, 10);
            var e = result.galarmTime.substr(11);
            var time = t + '&nbsp;' + e;
            str += "<tr> <td>报警人姓名:</td> <td>" + result.galarmPeople + "</td> <td>联系方式:</td> <td>" + result.phoneNumber + "</td> </tr>";
            str += "<tr> <td>事发地址:</td> <td>" + result.place + "</td> <td>行政区:</td> <td>" + result.addvnm + "</td> </>";
            str += "<tr> <td>报警时间:</td> <td>" + time + "</td> <td>报警内容:</td> <td>" + result.content + "</td> </tr>";
            str += "<tr> <td>警情级别:</td> <td>" + result.level + "</td> <td>警情类别:</td> <td>" + result.waringType + "</td> </tr>";
            str += "<tr> <td>处理方式:</td> <td class='treatment-method'> <input type='radio' name='treatmentMethod' value='派发保安' lgtd=" + result.jd + " lttd=" + result.wd + "> <span>派发保安</span> <input type='radio' name='treatmentMethod' value='提示业主'> <span>提示业主</span> </td> <td>处理人:</td> <td class='securityname'></td> </tr>";
            str += "<tr> <td>是否上报110:</td> <td class='report-oneonezero'> <input type='radio' name='callPhone' value='是'> <span>是</span> <input type='radio' name='callPhone' value='否'> <span>否</span> </td> <td>设备编号:</td> <td>" + result.deviceNumber + "</td> </tr>";
            $('.police-container-distribute-details .content table tbody').append(str);
            $('.police-container-distribute-details .handle-button .confirm').attr('police-id', result.id);
            $('.police-container-distribute-details .handle-button').stop().show();
            $('.police-container-distribute-details .header h4').text('警情分发');
            $('.police-container-distribute-details').stop().show();
            $('.police-container-distribute-details .content table tbody').off('click', '.treatment-method input').on('click', '.treatment-method input', function () {
              if (that.treatmentIndex != $(this).val()) {
                if ($(this).val() == '派发保安') {
                  var str = '';
                  $('.police-container-distribute-details .security-guard-nearby .security-staff-content tbody').empty();
                  $.ajax({
                    url: 'http://s16s652780.51mypc.cn/api/position/position/selectry',
                    type: 'POST',
                    data: {
                      coordinate: "point(" + $(this).attr('lgtd') + "," + $(this).attr('lttd') + ")"
                    },
                    dataType: 'JSON',
                    success: function (data) {
                      var result = data.data;
                      for (var i = 0; i < result.length; i++) {
                        str += "<tr> <td>" + (Number(i) + 1) + "</td> <td>" + result[i].sname + "</td> <td>" + result[i].distance.toFixed(2) + "</td> <td><input type='radio' name='securityStaff' securityid=" + result[i].snumber + " securityname=" + result[i].sname + "> </td> </tr>"
                      }
                      $('.police-container-distribute-details .security-guard-nearby .security-staff-content tbody').append(str);
                    }
                  })
                  $('.police-container-distribute-details .security-guard-nearby').stop().show();
                } else {
                  $('.police-container-distribute-details .content table tbody .securityname').text('');
                  $('.police-container-distribute-details .security-guard-nearby').stop().hide();
                }
                that.treatmentIndex = $(this).val();
              }
            })
          }
        })
      })
      // 警情分发中的详情的确认按钮
      $('.police-container-distribute-details .handle-button .confirm').off('click').click(function () {
        var self = this;
        layui.use('layer', function () {
          var layer = layui.layer;
          if (that.treatmentIndex == null) {
            layer.msg('请选择处理方式', {
              shade: [0.8, '#393D49'],
              time: 1000
            })
            return
          } else {
            if (that.treatmentIndex == '派发保安') {
              if (that.securityFlag == false) {
                layer.msg('请选取保安', {
                  shade: [0.8, '#393D49'],
                  time: 1000
                })
                return
              }
            }
          }
          var id = $(self).attr('police-id');
          var handletype = null;
          if (that.treatmentIndex != null) {
            if (that.treatmentIndex == '派发保安') {
              handletype = '0';
            } else {
              handletype = '1';
            }
          }
          // 发送请求修改警单数据
          $.ajax({
            url: 'http://s16s652780.51mypc.cn/api/jingdan/jingdan/updateInfo',
            type: 'POST',
            data: {
              id: id,
              // handleP: $('.police-container-distribute-details .content table tbody tr:eq(4) td:eq(3)').attr('people-id'),
              // handName: $('.police-container-distribute-details .content table tbody tr:eq(4) td:eq(3)').text(),
              handleP: $('.police-container-distribute-details .content table tbody .securityname').attr('id'),
              handName: $('.police-container-distribute-details .content table tbody .securityname').text(),
              handletype: handletype,
              type: '2'
            },
            dataType: 'JSON',
            success: function (data) {
              if (data.code == 200) {
                if (!$('.police-container-distribute-details .security-guard-nearby').is(':hidden')) {
                  $('.police-container-distribute-details .security-guard-nearby').stop().hide();
                }
                $('.police-container-distribute-details').stop().hide();
                $('.police-container .police-container-distribute .table .tbody tr:eq(' + that.editParentInd + ') td:eq(2)').text('处理中');
                $('.police-container .police-container-distribute .table .tbody tr:eq(' + that.editParentInd + ') td:eq(4)').html("<input class='follow-up' type='button' value='跟进' >");
              }
            }
          })
        });
      })
      // 警情分发中的跟进按钮的点击事件
      $('.police-container .police-container-distribute .table .tbody').off('click', '.follow-up').on('click', '.follow-up', function () {
        var id = $(this).attr('term-list');
        if (!$('.police-container-distribute-details').is(':hidden')) {
          $('.police-container-distribute-details').stop().hide();
        }
        $('.police-container-distribute-details .content table tbody').empty();
        var str = '';
        $.ajax({
          url: 'http://s16s652780.51mypc.cn/api/jingdan/jingdan/selectdInfo?deviceNumber=&id=' + id,
          type: 'POST',
          dataType: 'JSON',
          success: function (data) {
            var result = data.data[0];
            var t = result.galarmTime.substr(0, 10);
            var e = result.galarmTime.substr(11);
            var time = t + '&nbsp;' + e;
            str += "<tr> <td>报警人姓名:</td> <td>" + result.galarmPeople + "</td> <td>联系方式:</td> <td>" + result.phoneNumber + "</td> </tr>";
            str += "<tr> <td>事发地址:</td> <td>" + result.place + "</td> <td>行政区:</td> <td>" + result.addvnm + "</td> </>";
            str += "<tr> <td>报警时间:</td> <td>" + time + "</td> <td>报警内容:</td> <td>" + result.content + "</td> </tr>";
            str += "<tr> <td>警情级别:</td> <td>" + result.level + "</td> <td>警情类别:</td> <td>" + result.waringType + "</td> </tr>";
            str += "<tr> <td>处理方式:</td> <td class='treatment-method'> " + (result.type == 2 ? '处理中' : '待处理') + " </td> <td>处理人:</td> <td class='securityname'> " + result.handName + " </td> </tr>";
            str += "<tr> <td>是否上报110:</td> <td class='report-oneonezero'> <input type='radio' name='callPhone' value='是'> <span>是</span> <input type='radio' name='callPhone' value='否'> <span>否</span> </td> <td>设备编号:</td> <td>" + 1111 + "</td> </tr>";
            $('.police-container-distribute-details .content table tbody').append(str);
            $('.police-container-distribute-details .header h4').text('警情跟进');
            $('.police-container-distribute-details .handle-button').stop().hide();
            $('.police-container-distribute-details').stop().show();
          }
        })
      })
      // 警情分发中的详情的取消按钮
      $('.police-container-distribute-details .handle-button .cancel').off('click').click(function () {
        if (!$('.police-container-distribute-details .security-guard-nearby').is(':hidden')) {
          $('.police-container-distribute-details .security-guard-nearby').stop().hide();
        }
        $('.police-container-distribute-details').stop().hide();
      })
      // 警情分发中详情的关闭按钮
      $('.police-container-distribute-details .header .close').off('click').click(function () {
        if (!$('.police-container-distribute-details .security-guard-nearby').is(':hidden')) {
          $('.police-container-distribute-details .security-guard-nearby').stop().hide();
        }
        $('.police-container-distribute-details').stop().hide();
      })
      // 派发保安的确认按钮
      $('.police-container-distribute-details .security-guard-nearby .security-staff-confirm input').off('click').click(function () {
        var list = $('.police-container-distribute-details .security-guard-nearby .security-staff-content input');
        that.securityFlag = false;
        var id = null;
        var securityname = null;
        for (var i = 0; i < list.length; i++) {
          if ($(list[i]).prop('checked') == true) {
            that.securityFlag = true;
            id = $(list[i]).attr('securityid');
            securityname = $(list[i]).attr('securityname');
            break;
          }
        }
        if (that.securityFlag == false) {
          layui.use('layer', function () {
            var layer = layui.layer;
            layer.msg('请选取保安', {
              shade: [0.8, '#393D49'],
              time: 1000
            })
          });
        } else {
          $('.police-container-distribute-details .content table tbody .securityname').attr('id', id).text(securityname);
          $('.police-container-distribute-details .security-guard-nearby').stop().hide();
        }
      })
      // 警情信息中类别移入事件
      $('#distributeCategory').mouseenter(function () {
        if ($('#distributeCategory .select-list').is(':hidden')) {
          $('#distributeCategory .select-list').stop().slideDown(0);
        }
      })
      // 警情信息中得类别移出事件
      $('#distributeCategory').mouseleave(function () {
        if (!$('#distributeCategory .select-list').is(':hidden')) {
          $('#distributeCategory .select-list').stop().slideUp(0);
        }
      })
      // 警情信息中类别移入事件
      $('#distributeState').mouseenter(function () {
        if ($('#distributeState .select-list').is(':hidden')) {
          $('#distributeState .select-list').stop().slideDown(0);
        }
      })
      // 警情信息中得类别移出事件
      $('#distributeState').mouseleave(function () {
        if (!$('#distributeState .select-list').is(':hidden')) {
          $('#distributeState .select-list').stop().slideUp(0);
        }
      })
      //  警情信息类,业主信息类,设备信息类别,具体项的点击事件
      $('.police-container > div .select-list').off('click', 'li').on('click', 'li', function (event) {
        var text = $(this).text();
        $(this).parent().parent().prev().html(text + '<i></i>');
        $(this).parent().parent().stop().slideUp(0);
        if (text == '全部') text = '';
        var textOrr = '';
        var textList = '';
        var stateType = '';
        if (that.tabIndex == 0) {
          // that.getPoliceTable($('.analysis-container-police').find('.tbody tbody'), $('#dispatchingStartTime').val(), $('#dispatchingEndTime').val(), text);
          if ($(this).attr('key')) {
            textOrr = $('#distributeState div:eq(0)').text().trim();
            textList = $('.police-dispatching .police-container .distribute-state .select-list ul li');
            for (var i = 0; i < textList.length; i++) {
              if (textOrr == $(textList[i]).text()) {
                stateType = $(textList[i]).attr('statetype');
              }
            }
            that.getPoliceTable($('.police-container-distribute').find('.tbody tbody'), $('#dispatchingStartTime').val(), $('#dispatchingEndTime').val(), '', $(this).attr('addvcd'), stateType);
          } else {
            textOrr = $('#distributeCategory div:eq(0)').text().trim();
            textList = $('.police-dispatching .police-container .distribute-district .select-list ul li');
            for (var i = 0; i < textList.length; i++) {
              if (textOrr == $(textList[i]).text()) {
                stateType = $(textList[i]).attr('addvcd');
              }
            }
            that.getPoliceTable($('.police-container-distribute').find('.tbody tbody'), $('#dispatchingStartTime').val(), $('#dispatchingEndTime').val(), '', stateType, $(this).attr('stateType'));
          }
        }
      })
      // 时间查询
      $('#dispatchingSelectTime').off('click').click(function () {
        var times = $(this).prevAll();
        // 开始时间
        var startTime = $(times[1]).val();
        // 结束时间
        var endTime = $(times[0]).val();
        var textOne = $('#distributeCategory div:eq(0)').text().trim();
        var addvcd = '';
        var list = $('.police-dispatching .police-container .distribute-district .select-list ul li');
        if (textOne == '全部') {
          addvcd = '';
        } else {
          if (list.length > 0) {
            for (var i = 0; i < list.length; i++) {
              if (textOne == $(list[i]).text()) {
                addvcd = $(list[i]).attr('addvcd')
              }
            }
          }
        }
        var textTwo = $('#distributeState div:eq(0)').text().trim();
        var stateType = '';
        var stateList = $('.police-dispatching .police-container .distribute-state .select-list ul li');
        if (textTwo == '全部') {
          stateType = '';
        } else {
          if (stateList.length > 0) {
            for (var i = 0; i < stateList.length; i++) {
              if (textTwo == $(stateList[i]).text()) {
                stateType = $(stateList[i]).attr('statetype')
              }
            }
          }
        }
        that.getPoliceTable($('.police-container-distribute').find('.tbody tbody'), startTime, endTime, '', addvcd, stateType);
      })
      //  巡逻区域中的行点击事件
      $('.police-container .police-container-patrol .main-content>li:eq(0) .table .tbody').off('click', 'tr').on('click', 'tr', function () {
        var flyid = $(this).attr('flyid');
        var flyname = $(this).attr('flyname');
        var extent = null;
        for (var i = 0; i < that.currentDrawing.length; i++) {
          if (flyid == that.currentDrawing[i].id && flyname == that.currentDrawing[i].regionName) {
            extent = that.currentDrawing[i].extent;
          }
        }
        // debugger
        that._map.setExtent(extent.expand(1.5));
        // var myFeatureExtent = new Extent(extent.)
        // thisObj._map.setExtent(myFeatureExtent.expand(2));
        // var lgtd = Number($(this).attr('lgtd'));
        // var lttd = Number($(this).attr('lttd'));
        // var position = new esri.geometry.Point(lgtd, lttd, new esri.SpatialReference({ wkid: 4326 }));//根据输入坐标信息找地图上的点
        // that._map.centerAndZoom(position, 14);//缩放,10是缩放级别,可以自定义,数值越大缩放越大
      })
      // 巡逻区域的新增按钮
      $('.police-container .police-container-patrol .main-content>li:eq(0) .distribute-table-content .operation .add').off('click').click(function () {
        var url = './popup/html/region-name.html';
        layui.use('layer', function () {
          that.layuiLayer = layui.layer;
          that.layuiLayer.config({
            extend: 'myskin/region-name.css'
          });
          that.layuiLayer.close(that.layuiLayer.index);
          that.layuiLayer.open({
            title: '区域名称',
            type: 2,
            shadeClose: false,
            shade: 0.3,
            maxmin: false, //开启最大化最小化按钮
            area: ['320px', '206px'],
            offset: 'auto',
            skin: 'region-name',
            content: url,
            closeBtn: 1,
            success: function (layero, index) {
              layero.find('iframe').contents().find(".start-editing").off('click').click(function () {
                // 区域名称
                var regionName = layero.find('iframe').contents().find('.region-name-input').val();
                var regionDescribe = layero.find('iframe').contents().find('.region-name-textarea').val();
                if (regionName == '') {
                  that.layuiLayer.msg('请填写区域名称', {
                    time: 1000
                  })
                  return
                }
                if (regionDescribe == '') {
                  that.layuiLayer.msg('请填写区域描述', {
                    time: 1000
                  })
                  return
                }
                that.globalRegionName = regionName;
                that.routeOrRegionDescribe = regionDescribe;
                // 开启,可以勾选线段
                that.polygonFlag = true;
                that.layuiLayer.close(index);
              })
            }
          });
        })
      })
      // 查找按钮
      $('.police-container .police-container-patrol .main-content>li:eq(0) .distribute-table-content .operation .query').off('click').click(function () {
        var routerName = $('.police-container .police-container-patrol .main-content>li:eq(0) .distribute-table-content .route-name').val();
        // if (routerName == '') {
        //   layui.use('layer', function () {
        //     layui.layer.msg('请填写区域名称', {
        //       time: 1000
        //     })
        //   })
        //   return
        // }
        that.patrolArea($('.police-dispatching .police-container .police-container-patrol .table .tbody tbody'), routerName);
        $('.police-container .police-container-patrol .main-content>li:eq(0) .distribute-table-content .route-name').val('');
      })
      // 保安出警管理表格中点击事件
      $('.police-dispatching .police-container .police-container-policeforce .table .tbody tbody').off('click', 'input').on('click', 'input', function (event) {
        event.stopPropagation();
        var lgtd = Number($(this).parent().parent().attr('lgtd'));
        var lttd = Number($(this).parent().parent().attr('lttd'));
        var position = new esri.geometry.Point(lgtd, lttd, new esri.SpatialReference({
          wkid: 4326
        })); //根据输入坐标信息找地图上的点
        that.newElectronicFenceId = null;
        that._map.centerAndZoom(position, 18); //缩放,10是缩放级别,可以自定义,数值越大缩放越大
        var graphic = that.entityPolygonAll.graphics;
        for (var i = 0; i < graphic.length; i++) {
          if (graphic[i].objId.id == $(this).attr('resultid')) {
            if (graphic[i].geometry.rings[0].length > 0) {
              that.polygonFlag = false;
              that.electronicFence();
              that.activateToolbar(graphic[i]);
            } else {
              layui.use('layer', function () {
                layui.layer.msg('请开始划分电子围栏');
              })
              that.polygonFlag = true;
              that.newElectronicFenceId = graphic[i].objId;
            }
          }
        }
      })
      $('.police-dispatching .police-container .police-container-policeforce .table .tbody tbody').off('click', 'tr').on('click', 'tr', function (event) {
        event.stopPropagation();
        var lgtd = Number($(this).attr('lgtd'));
        var lttd = Number($(this).attr('lttd'));
        var position = new esri.geometry.Point(lgtd, lttd, new esri.SpatialReference({
          wkid: 4326
        })); //根据输入坐标信息找地图上的点
        that._map.centerAndZoom(position, 18); //缩放,10是缩放级别,可以自定义,数值越大缩放越大
        var snumber = $(this).attr('term-snumber');
        var url = './popup/html/personnel-information-management.html?id=' + snumber;
        layui.use('layer', function () {
          that.layuiLayer = layui.layer;
          that.layuiLayer.config({
            extend: 'myskin/personnel-information-management.css'
          });
          that.layuiLayer.close(that.layuiLayer.index);
          that.layuiLayer.open({
            title: '保安人员信息',
            type: 2,
            shadeClose: true,
            shade: false,
            maxmin: false, //开启最大化最小化按钮
            area: ['400px', '220px'],
            offset: 'auto',
            skin: 'personnel-information-management',
            content: url,
            closeBtn: 1,
          });
        })
      })
      $('.police-dispatching .police-container .police-container-policeforce .table .tbody tbody').off('click', 'tr td').on('click', 'tr td', function (event) {
        if ($(this).index() == 4) {
          event.stopPropagation();
          return;
        }
      })
      // 巡逻管理中,巡逻路线和巡逻区域的切换换
      $('.police-dispatching .police-container .police-container-patrol .tab-header li').off('click').click(function () {
        if (that.patrolIndex == $(this).index()) return;
        $(this).addClass('on').siblings().removeClass('on');
        $(".police-dispatching .police-container .police-container-patrol .main-content li:eq(" + $(this).index() + ")").stop().show().siblings().stop().hide();
        that.polygonFlag = false;
        that.entityPolygonAll.clear();
        that.modifyPolygon();
        // 切换时清除新增点线面数组中保存得数据,与清除地图上得实体
        that.polygonData = [];
        that.addPolygonEntitys.clear();
        if ($(this).index() == 1) {
          $('.police-dispatching .police-container .police-container-patrol .main-content .select-list ul').empty();
          $.ajax({
            url: 'http://s16s652780.51mypc.cn/api/regions/regions/selectqy',
            type: 'GET',
            dataType: 'JSON',
            success: function (res) {
              var result = res.data;
              $('.police-dispatching .police-container .police-container-patrol .main-content .select>ul>li>div:eq(0)').html(result[0].regionName + '<i></i>').attr('regionId', result[0].regionId);
              for (var i = 0; i < result.length; i++) {
                $('.police-dispatching .police-container .police-container-patrol .main-content .select-list ul').append($("<li regionId='" + result[i].regionId + "'>" + result[i].regionName + "</li>"))
              }
            }
          })
          that.getRouteInformation($('.police-dispatching .police-container .police-container-patrol .main-content>li:eq(1) .table .tbody tbody'), '');
        } else {
          that.patrolArea($('.police-dispatching .police-container .police-container-patrol .main-content>li:eq(0) .table .tbody tbody'), '');
        }
        that.patrolIndex = $(this).index();
      })
      // 巡逻管理下面的巡逻路线中的select选择框的移入事件
      $('#patrolRoute').mouseenter(function () {
        if ($('#patrolRoute .select-list').is(':hidden')) {
          $('#patrolRoute .select-list').stop().slideDown(0);
        }
      })
      // 巡逻管理下面的巡逻路线中的select选择框的移出事件
      $('#patrolRoute').mouseleave(function () {
        if (!$('#patrolRoute .select-list').is(':hidden')) {
          $('#patrolRoute .select-list').stop().slideUp(0);
        }
      })
      // 巡逻路线中区域选择的具体项的点击事件
      $('.police-dispatching .police-container .police-container-patrol .select-list').off('click', 'li').on('click', 'li', function (event) {
        var text = $(this).text();
        $(this).parent().parent().prev().html(text + '<i></i>').attr('regionId', $(this).attr('regionId'));
        $(this).parent().parent().stop().slideUp(0);
      })
      // 巡逻路线中的新增按钮的点击事件
      $('.police-dispatching .police-container .police-container-patrol .main-content>li:eq(1) .add').off('click').click(function () {
        var url = './popup/html/route-name-layer.html';
        layui.use('layer', function () {
          that.layuiLayer = layui.layer;
          that.layuiLayer.config({
            extend: 'myskin/route-name-layer.css'
          });
          that.layuiLayer.closeAll();
          that.layuiLayer.open({
            title: '路线名称及描述',
            type: 2,
            shadeClose: false,
            shade: 0.3,
            maxmin: false, //开启最大化最小化按钮
            area: ['320px', '216px'],
            offset: 'auto',
            skin: 'route-name-layer',
            content: url,
            closeBtn: 1,
            resize: false,
            success: function (layero, index) {
              layero.find('iframe').contents().find(".start-editing").off('click').click(function () {
                // 区域名称 or 路线名称
                var routeName = layero.find('iframe').contents().find('.route-name-layer-input').val();
                var routeDescribe = layero.find('iframe').contents().find('.route-name-layer-textarea').val();
                var peopleRealName = layero.find('iframe').contents().find('.route-personnel').val();
                var pepleRealId = layero.find('iframe').contents().find('.route-personnel').attr('peopleid');
                if (routeName == '') {
                  that.layuiLayer.msg('请填写路线名称', {
                    time: 1000
                  })
                  return
                }
                if (routeDescribe == '') {
                  that.layuiLayer.msg('请填写路线描述', {
                    time: 1000
                  })
                  return
                }
                // if (pepleRealId == '') {
                //   that.layuiLayer.msg('请选择人员', {
                //     time: 1000
                //   })
                //   return
                // }
                that.peopleRealName = peopleRealName;
                that.pepleRealId = '485';
                that.globalRegionName = routeName;
                that.routeOrRegionDescribe = routeDescribe;
                // // 开启,可以勾选线段
                that.polygonFlag = true;
                that.layuiLayer.close(index);
              })
            }
          });
        })
      })
      // 巡逻路线行点击事件
      $('.police-container .police-container-patrol .main-content>li:eq(1) .table .tbody').off('click', 'tr').on('click', 'tr', function () {
        var flyid = $(this).attr('flyid');
        var flyname = $(this).attr('flyname');
        var extent = null;
        for (var i = 0; i < that.currentDrawing.length; i++) {
          if (flyid == that.currentDrawing[i].id && flyname == that.currentDrawing[i].routeName) {
            extent = that.currentDrawing[i].extent;
          }
        }
        that._map.setExtent(extent.expand(1.5));
      })
      $('.police-container .police-container-patrol .main-content>li:eq(1) .table .tbody').off('click', 'tr td').on('click', 'tr td', function (event) {
        if ($(this).index() == 4) {
          event.stopPropagation();
          return;
        }
      })
      $('.police-container .police-container-patrol .main-content>li:eq(1) .table .tbody').off('click', 'input').on('click', 'input', function (event) {
        event.stopPropagation();
        var routeName = $(this).parent().parent().children('td:eq(2)').text();
        var routeId = $(this).parent().parent().attr('flyid');
        var peopleName = $(this).parent().parent().children('td:eq(1)').text();
        var self = this;
        var url = './popup/html/routename-and-peoplename.html?routeName=' + routeName + '&routeId=' + routeId + '&peopleName=' + peopleName;
        layui.use('layer', function () {
          that.layuiLayer = layui.layer;
          that.layuiLayer.config({
            extend: 'myskin/routename-and-peoplename.css'
          });
          that.layuiLayer.closeAll();
          that.layuiLayer.open({
            title: '路线巡逻人员',
            type: 2,
            shadeClose: false,
            shade: 0.3,
            maxmin: false, //开启最大化最小化按钮
            area: ['320px', '132px'],
            offset: 'auto',
            skin: 'routename-and-peoplename',
            content: url,
            closeBtn: 1,
            resize: false,
            success: function (layero, index) {
              layero.find('iframe').contents().find(".confirm-update").off('click').click(function () {
                // 区域名称 or 路线名称
                var peoplelayerName = layero.find('iframe').contents().find('.peoplename-update').val();
                var peoplelayerId = layero.find('iframe').contents().find('.peoplename-update').attr('peopleid');
                console.log(peoplelayerName, peoplelayerId);
                // if (peoplelayerName == peopleName) {
                //   that.layuiLayer.close(index);
                //   that.layuiLayer.msg('人员未更改!');
                // } else {
                  $.ajax({
                    url: 'http://s16s652780.51mypc.cn/api/duty/duty/updatedtInfo',
                    type: 'POST',
                    data: {
                      rid: routeId,
                      snumber: peoplelayerId,
                      sname: '张三'
                    },
                    dataType: 'JSON',
                    success: function (res) {
                      if (res.code == 200) {
                        that.layuiLayer.close(index);
                        $(self).parent().parent().children('td:eq(1)').text(peoplelayerName);
                        that.layuiLayer.msg('人员已更改!');
                      }
                    }
                  })
                // }
              })
            }
          });
        })
      })
      // 查找按钮
      $('.police-container .police-container-patrol .main-content>li:eq(1) .distribute-table-content .operation .query').off('click').click(function () {
        var routerName = $('.police-container .police-container-patrol .main-content>li:eq(1) .distribute-table-content .route-name').val();
        // if (routerName == '') {
        //   layui.use('layer', function () {
        //     layui.layer.msg('请填写区域名称', {
        //       time: 1000
        //     })
        //   })
        //   return
        // }
        that.getRouteInformation($('.police-dispatching .police-container .police-container-patrol .main-content>li:eq(1) .table .tbody tbody'), routerName);
        $('.police-container .police-container-patrol .main-content>li:eq(1) .distribute-table-content .route-name').val('');
      })
    },
    open: function () {
      var that = this;
      $("#tabcontainer").css("width", "360px");
      $('#mapcontentClass').addClass('client-max-map'); //追加样式
      AppEvent.dispatchAppEvent(AppEvent.APPLICATION_RESIZE, {});
      document.oncontextmenu = function (event) {
        event.preventDefault();
      };
      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);
            if (that.tabIndex == 1) {
              if (that.patrolIndex == 1) {
                $.ajax({
                  url: 'http://s16s652780.51mypc.cn/api/routeIn/routein/insertlx',
                  type: 'POST',
                  dataType: 'JSON',
                  data: {
                    routeName: that.globalRegionName,
                    regionId: $('#patrolRoute div:eq(0)').attr('regionid'),
                    routeInfo: dataStr,
                    remarks: that.routeOrRegionDescribe,
                    creatName: ''
                  },
                  success: function (result) {
                    if (result.code == 200) {
                      that.addPolygonEntitys.clear();
                      that.polygonData = [];
                      that.getRouteInformation($('.police-dispatching .police-container .police-container-patrol .table .tbody tbody'), '');
                      $.ajax({
                        url: 'http://s16s652780.51mypc.cn/api/duty/duty/insertduty',
                        type: 'POST',
                        dataType: 'JSON',
                        data: {
                          sname: that.peopleRealName,
                          snumber: that.pepleRealId,
                          rid: result.data,
                          regionId: $('#patrolRoute div:eq(0)').attr('regionid'),
                          type: 0
                        },
                        success: function (data) {
                          if (data.code == 200) {
                          }
                        }
                      })
                    }
                  }
                })
                // that.peopleRealName = peopleRealName;
                // that.pepleRealId = pepleRealId;
              } else {
                $.ajax({
                  url: 'http://s16s652780.51mypc.cn/api/regions/regions/insterqy',
                  type: 'POST',
                  dataType: 'JSON',
                  data: {
                    regionName: that.globalRegionName,
                    coordinate: dataStr,
                    remarks: that.routeOrRegionDescribe
                  },
                  success: function (result) {
                    if (result.code == 200) {
                      that.addPolygonEntitys.clear();
                      that.polygonData = [];
                      that.patrolArea($('.police-dispatching .police-container .police-container-patrol .table .tbody tbody'), '');
                    }
                  }
                })
              }
            } else if (that.tabIndex == 2) {
              $.ajax({
                url: 'http://s16s652780.51mypc.cn/api/enclosure/enclosure/insertes',
                type: 'POST',
                dataType: 'JSON',
                data: {
                  anumber: that.newElectronicFenceId.anumber,
                  aname: that.newElectronicFenceId.aname,
                  routeInfo: dataStr
                },
                success: function (result) {
                  if (result.code == 200) {
                    that.addPolygonEntitys.clear();
                    that.polygonData = [];
                    that.getSecurityPeople($('.police-dispatching .police-container .police-container-policeforce .table .tbody tbody'), '');
                  }
                }
              })
            }
          }
          that.polygonFlag = false;
          // that.polygonData = [];
        }
      }
      // $('.police-dispatching .police-container .police-container-patrol .main-content .select-list ul').empty();
      // $.ajax({
      //     url: 'http://s16s652780.51mypc.cn/api/regions/regions/selectqy',
      //     type: 'GET',
      //     dataType: 'JSON',
      //     success: function (res) {
      //         var result = res.data;
      //         $('.police-dispatching .police-container .police-container-patrol .main-content .select>ul>li>div:eq(0)').html(result[0].regionName + '<i></i>').attr('regionId', result[0].regionId);
      //         for (var i = 0; i < result.length; i++) {
      //             $('.police-dispatching .police-container .police-container-patrol .main-content .select-list ul').append($("<li regionId='" + result[i].regionId + "'>" + result[i].regionName + "</li>"))
      //         }
      //     }
      // })
      // that.getRouteInformation($('.police-dispatching .police-container .police-container-patrol .main-content>li:eq(1) .table .tbody tbody'), '');
      that.polygonFlag = false;
      that.entityPolygonAll.clear();
      that.modifyPolygon();
      // 切换时清除新增点线面数组中保存得数据,与清除地图上得实体
      that.polygonData = [];
      that.addPolygonEntitys.clear();
      that.treatmentIndex = null;
      that.tabIndex = 1;
      that.patrolIndex = 1;
      $('.police-dispatching-tab li:eq(1)').addClass('on').siblings().removeClass('on');
      $($('.police-container > div')[1]).stop().show().siblings().stop().hide();
      $('.police-dispatching .police-container .distribute-district .select-list ul').empty();
      $('.police-dispatching .police-container .distribute-district .select-list ul').append("<li key='addvcd' addvcd=''>全部</li>");
      $.ajax({
        url: 'http://s16s652780.51mypc.cn/api/regions/regions/selectqy',
        type: 'GET',
        dataType: 'JSON',
        success: function (res) {
          var result = res.data;
          $('.police-dispatching .police-container .police-container-patrol .main-content .select>ul>li>div:eq(0)').html(result[0].regionName + '<i></i>').attr('regionId', result[0].regionId);
          for (var i = 0; i < result.length; i++) {
            $('.police-dispatching .police-container .police-container-patrol .main-content .select-list ul').append($("<li regionId='" + result[i].regionId + "'>" + result[i].regionName + "</li>"))
          }
        }
      })
      that.getRouteInformation($('.police-dispatching .police-container .police-container-patrol .main-content>li:eq(1) .table .tbody tbody'), '');
      // $.ajax({
      //     url: 'http://s16s652780.51mypc.cn/api/district/district/selectList',
      //     type: 'POST',
      //     dataType: 'JSON',
      //     success: function (data) {
      //         for (var i = 0; i < data.data.length; i++) {
      //             $('.police-dispatching .police-container .distribute-district .select-list ul').append("<li key='addvcd' addvcd=" + data.data[i].addvcd + ">" + data.data[i].addvnm + "</li>");
      //         }
      //     }
      // })
      layui.use('laydate', function () {
        that.layuiLadate = layui.laydate;
        //执行一个laydate实例 开始
        that.layuiLadate.render({
          elem: '#dispatchingStartTime', //指定元素
          type: "datetime",
          format: 'yyyy-MM-dd HH:mm',
          btns: ['confirm'],
          trigger: 'click',
        });
        // 结束
        that.layuiLadate.render({
          elem: '#dispatchingEndTime', //指定元素
          type: "datetime",
          format: 'yyyy-MM-dd HH:mm',
          btns: ['confirm'],
          trigger: 'click',
        });
      });
      // that.getPoliceTable($('.police-container-distribute').find('.tbody tbody'), $('#dispatchingStartTime').val(), $('#dispatchingEndTime').val(), '', '', '');
      that.clickHand();
      $('.police-dispatching-tab li:eq(1)').trigger('click');
    },
    close: function () {
      $("#tabcontainer").css("width", "66%");
      $('#mapcontentClass').removeClass('client-max-map'); //删除样式
      this.entitysData = [];
      this.addEntitys.clear();
      this.entityPolygonAll.clear();
      this.modifyPolygon();
      // 切换时清除新增点线面数组中保存得数据,与清除地图上得实体
      this.polygonData = [];
      this.addPolygonEntitys.clear();
    },
    // 鼠标点击事件
    clickHand: function () {
      var self = this;
      self._map.onClick = mapClick;
      // $('#mainMapWidget')[0].ondblclick = function (event) {
      //   event.preventDefault();
      //   // if ()
      //   self.activateToolbar(event.graphic);
      //   return false;
      // };
      function mapClick(evt) {
        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.tabIndex == 0) {
          if (evt.graphic) {
            var result = evt.graphic.geometry.entityData;
            // var liText = evt.graphic.symbol.name;
            self.policeDetails(result.id);
          }
        } else if (self.tabIndex == 1) {
          if (self.patrolIndex == 1) {
            // 编辑中的
            if (self.polygonFlag == true) {
              var normalizedVal = webMercatorUtils.xyToLngLat(evt.mapPoint.x, evt.mapPoint.y);
              if (self.polygonData.length == 0) {
                self.polygonData.push([normalizedVal[0], normalizedVal[1]]);
                self.addPoint(self.addPolygonEntitys, normalizedVal[0], normalizedVal[1]);
              } else {
                self.polygonData.push([normalizedVal[0], normalizedVal[1]]);
                self.addPolyline(self.addPolygonEntitys, self.polygonData);
                return;
              }
            } else { // 不在编辑中
              if (evt.graphic) { // 点击在图形上
                // 保存当前点击得图形
                // self.currentDrawing = evt.graphic;
                self.modifyPolygon();
                self.activateToolbar(evt.graphic);
              } else { // 点击不在图形上
                self.modifyPolygon()
              }
            }
          } else {
            // 编辑中的
            if (self.polygonFlag == true) {
              var normalizedVal = webMercatorUtils.xyToLngLat(evt.mapPoint.x, evt.mapPoint.y);
              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()
              }
            }
          }
        } else if (self.tabIndex == 2) {
          if (self.polygonFlag == true) {
            var normalizedVal = webMercatorUtils.xyToLngLat(evt.mapPoint.x, evt.mapPoint.y);
            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.electronicFence();
              self.activateToolbar(evt.graphic);
            } else { // 点击不在图形上
              self.electronicFence()
            }
          }
          // self.equipmentDetails(result.id);
        }
      }
      // 提示信息
      $(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();
        }
      })
    },
    // 警情详情弹框
    /**
     *
     * @param {number} id 警情ID
     */
    policeDetails: function (id) {
      var that = this;
      var url = './popup/html/police-details.html?obj=' + id;
      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,
          maxmin: false, //开启最大化最小化按钮
          area: ['500px', '400px'],
          offset: 'auto',
          skin: 'police-details',
          content: url,
          closeBtn: 1,
        });
      })
    },
    // 业主详情弹框
    /**
     *
     * @param {number} id 警情ID
     */
    ownerDetails: function (id) {
      var that = this;
      var url = './popup/html/owner-details.html?id=' + id;
      layui.use('layer', function () {
        that.layuiLayer = layui.layer;
        that.layuiLayer.config({
          extend: 'myskin/owner-details.css'
        });
        that.layuiLayer.close(that.layuiLayer.index);
        that.layuiLayer.open({
          title: '业主详情',
          type: 2,
          shadeClose: true,
          shade: false,
          maxmin: false, //开启最大化最小化按钮
          area: ['500px', '340px'],
          offset: 'auto',
          skin: 'owner-details',
          content: url,
          closeBtn: 1,
        });
      })
    },
    // 设备详情弹框
    /**
     *
     * @param {number} id 设备ID
     */
    equipmentDetails: function (id) {
      var that = this;
      var url = './popup/html/equipment-details.html?obj=' + id;
      layui.use('layer', function () {
        that.layuiLayer = layui.layer;
        that.layuiLayer.config({
          extend: 'myskin/equipment-details.css'
        });
        that.layuiLayer.close(that.layuiLayer.index);
        that.layuiLayer.open({
          title: '警情详情',
          type: 2,
          shadeClose: true,
          shade: false,
          maxmin: false, //开启最大化最小化按钮
          area: ['520px', '320px'],
          offset: 'auto',
          skin: 'equipment-details',
          content: url,
          closeBtn: 1,
        });
      })
    },
    // 获取当前时间,以及昨天现在的时间
    getTime: function getTime() {
      var timestamp = Date.parse(new Date());
      // 当前时间
      var currentTime = new Date(timestamp);
      // 年
      var currentY = currentTime.getFullYear();
      // 月
      var currentM = currentTime.getMonth() + 1 < 10 ? '0' + (currentTime.getMonth() + 1) : currentTime.getMonth() + 1;
      // 日
      var currentD = currentTime.getDate() < 10 ? '0' + currentTime.getDate() : currentTime.getDate();
      // 时
      var currentH = currentTime.getHours() < 10 ? '0' + currentTime.getHours() : currentTime.getHours();
      // 分
      var currentDd = currentTime.getMinutes() < 10 ? '0' + currentTime.getMinutes() : currentTime.getMinutes();
      // 明天
      var tomorrowTime = new Date(timestamp - 60 * 60 * 24 * 1000);
      // 年
      var tomorrowY = tomorrowTime.getFullYear();
      // 月
      var tomorrowM = tomorrowTime.getMonth() + 1 < 10 ? '0' + (tomorrowTime.getMonth() + 1) : tomorrowTime.getMonth() + 1;
      // 日
      var tomorrowD = tomorrowTime.getDate() < 10 ? '0' + tomorrowTime.getDate() : tomorrowTime.getDate();
      // 时
      var tomorrowH = tomorrowTime.getHours() < 10 ? '0' + tomorrowTime.getHours() : tomorrowTime.getHours();
      // 分
      var tomorrowDd = tomorrowTime.getMinutes() < 10 ? '0' + tomorrowTime.getMinutes() : tomorrowTime.getMinutes();
      return {
        current: currentY + '-' + currentM + '-' + currentD + ' ' + currentH + ':' + currentDd,
        tomorrow: tomorrowY + '-' + tomorrowM + '-' + tomorrowD + ' ' + tomorrowH + ':' + tomorrowDd,
        month: currentM + currentD
      };
    },
    // 获取警情信息列表
    /**
     *
     * @param {object} dom jq对象
     * @param {string} beginTime 开始时间
     * @param {string} endTime 结束时间
     * @param {*} waringType 警情的类别
     */
    getPoliceTable: function (dom, beginTime, endTime, waringType, addvcd, type) {
      dom.empty();
      var that = this;
      $.ajax({
        url: 'http://s16s652780.51mypc.cn/api/jingdan/jingdan/selectList',
        type: 'POST',
        dataType: 'JSON',
        data: {
          beginTime: beginTime,
          endTime: endTime,
          waringType: waringType,
          addvcd: addvcd,
          type: type
        },
        success: function (data) {
          var result = data.data;
          var str = '';
          that.entitysData = [];
          that.addEntitys.clear();
          for (var a, time, t, e, y, h, i = 0; i < result.length; i++) {
            if (result[i].type != 1) {
              that.createEntitys(that.addEntitys, that.entitysData, '警情信息', {
                lgtd: result[i].jd,
                lttd: result[i].wd,
                id: result[i].id
              }, result[i].jd, result[i].wd, './images/jingbaored.png');
              t = result[i].galarmTime.substr(0, 10);
              e = result[i].galarmTime.substr(11);
              time = t + '&nbsp;' + e;
              y = result[i].galarmTime.substr(5, 5);
              h = result[i].galarmTime.substr(11, 5);
              a = Number(i) + 1;
              str += '<tr term-list=' + result[i].id + ' lgtd=' + result[i].jd + ' lttd=' + result[i].wd + '>';
              str += '<td>' + a + '</td>';
              str += '<td title=' + result[i].addvnm + '>' + result[i].addvnm + '</td>';
              str += '<td title=' + (result[i].type == 2 ? '处理中' : '待处理') + '>' + (result[i].type == 2 ? '处理中' : '待处理') + '</td>';
              str += "<td><a href='javascript:;' title=" + time + ">" + y + ' ' + h + "</a></td>";
              if (result[i].type == 2) {
                str += "<td class='operation'> <input class='follow-up' type='button' value='跟进' term-list=" + result[i].id + "> </td>";
              } else {
                str += "<td class='operation'> <input class='edit' type='button' value='编辑' term-list=" + result[i].id + "> </td>";
              }
              str += '</tr>';
              dom.append(str);
              str = '';
            }
          }
          for (var i = 0; i < 1000; i++) {
            var dd = Math.random();
            var cc = Math.random();
          }
        }
      })
    },
    // 获取区域信息列表
    patrolArea: function (dom, regionName) {
      dom.empty();
      var that = this;
      that.currentDrawing = [];
      that.entityPolygonAll.clear();
      $.ajax({
        url: 'http://s16s652780.51mypc.cn/api/regions/regions/selectList',
        type: 'POST',
        dataType: 'JSON',
        data: {
          regionName: regionName
        },
        success: function (data) {
          var result = data.data;
          var str = '';
          var entityArr = [];
          var objId = {};
          var entityData = '';
          for (var i = 0; i < result.length; i++) {
            entityArr = [];
            objId = {};
            entityData = result[i].coordinate.match(/\(([^)]*)\)/);
            // 此时result=["(dsfasjfj3124123)", "dsfasjfj3124123"];
            if (entityData && entityData != '') {
              entityData = entityData[1].split(',');
              for (var j = 0; j < entityData.length; j++) {
                entityArr.push([Number(entityData[j].split(' ')[0]), Number(entityData[j].split(' ')[1])]);
              }
            }
            objId.id = result[i].id;
            objId.regionId = result[i].regionId;
            objId.regionName = result[i].regionName;
            objId.remarks = result[i].remarks;
            that.addPolygonAll(that.entityPolygonAll, entityArr, objId);
            str += "<tr flyid=" + result[i].id + " flyname=" + result[i].regionName + "> <td>" + (Number(i) + 1) + "</td> <td>" + result[i].regionName + "</td> <td>" + result[i].ttime + "</td> </tr>";
            dom.append(str);
            str = '';
          }
        }
      })
    },
    // 获取路线信息列表
    getRouteInformation: function (dom, routeName) {
      dom.empty();
      var that = this;
      that.currentDrawing = [];
      that.entityPolygonAll.clear();
      $.ajax({
        url: 'http://s16s652780.51mypc.cn/api/routeIn/routein/selectList',
        type: 'POST',
        dataType: 'JSON',
        data: {
          routeName: routeName
        },
        success: function (data) {
          var result = data.data;
          var str = '';
          var entityArr = [];
          var objId = {};
          var entityData = '';
          for (var i = 0; i < result.length; i++) {
            entityArr = [];
            objId = {};
            entityData = result[i].routeInfo.match(/\(([^)]*)\)/);
            // 此时result=["(dsfasjfj3124123)", "dsfasjfj3124123"];
            if (entityData && entityData != '') {
              entityData = entityData[1].split(',');
              for (var j = 0; j < entityData.length; j++) {
                entityArr.push([Number(entityData[j].split(' ')[0]), Number(entityData[j].split(' ')[1])]);
              }
            }
            objId.id = result[i].id;
            objId.regionId = result[i].regionId;
            objId.routeName = result[i].routeName;
            objId.remarks = result[i].remarks;
            that.addPolygonAll(that.entityPolygonAll, entityArr, objId);
            str += "<tr flyid=" + result[i].id + " flyname=" + result[i].routeName + "> <td>" + (Number(i) + 1) + "</td> <td style='display: none;'>" + result[i].sname + "</td> <td>" + result[i].routeName + "</td> <td> <a href='javascript:;' title=" + result[i].rtime + ">" + result[i].rtime.substr(5, 11) + "</a></td> <td><input type='button' value='编辑'></td> </tr>";
            dom.append(str);
            str = '';
          }
        }
      })
    },
    // 获取保安人员信息列表
    getSecurityPeople: function (dom, deviceType) {
      dom.empty();
      var that = this;
      that.currentDrawing = [];
      that.entityPolygonAll.clear();
      $.ajax({
        url: 'http://s16s652780.51mypc.cn/api/security/security/selectList',
        type: 'POST',
        dataType: 'JSON',
        success: function (data) {
          var result = data.data;
          var str = '';
          that.entitysData = [];
          that.addEntitys.clear();
          var entityArr = [];
          var objId = {};
          var entityData = '';
          for (var a, i = 0; i < result.length; i++) {
            that.createEntitys(that.addEntitys, that.entitysData, '出警信息', {
              lgtd: result[i].jd,
              lttd: result[i].wd,
              id: result[i].id
            }, result[i].jd, result[i].wd, './images/security.png');
            entityArr = [];
            objId = {};
            entityData = result[i].coordinate.match(/\(([^)]*)\)/);
            a = Number(i) + 1;
            str += "<tr term-snumber=" + snumber + " lgtd=" + result[i].jd + " lttd=" + result[i].wd + ">";
            str += '<td>' + a + '</td>';
            str += '<td title=' + result[i].snumber + '>' + result[i].snumber + '</td>';
            str += '<td title=' + result[i].sname + '>' + result[i].sname + '</td>';
            str += '<td title=' + result[i].phone + '>' + result[i].phone + '</td>';
            str += "<td> <input type='button' value='编辑' resultid=" + result[i].id + "> </td>";
            str += '</tr>';
            dom.append(str);
            str = '';
            // 此时result=["(dsfasjfj3124123)", "dsfasjfj3124123"];
            if (entityData && entityData != '') {
              entityData = entityData[1].split(',');
              for (var j = 0; j < entityData.length; j++) {
                entityArr.push([Number(entityData[j].split(' ')[0]), Number(entityData[j].split(' ')[1])]);
              }
            }
            objId.id = result[i].id;
            objId.anumber = result[i].snumber;
            objId.aname = result[i].sname;
            that.addPolygonAll(that.entityPolygonAll, entityArr, objId);
          }
        }
      })
    },
    // 创建实体图层
    createEntitys: function (entitys, entityContent, name, item, lgtd, lttd, outlineColors) {
      var symbol = new esri.symbol.PictureMarkerSymbol(outlineColors, 26, 26);
      symbol.name = name;
      var pt = new Point(lgtd, lttd, new esri.SpatialReference({
        wkid: 4326
      }));
      pt.entityData = item;
      var graphic = new esri.Graphic(pt, symbol);
      entitys.add(graphic);
      entityContent.push(item);
    },
    addPoint: function (entitys, lgtd, lttd) {
      var symbol = new esri.symbol.PictureMarkerSymbol('./images/real-time-callPolice.png', 10, 10);
      var pt = new Point(lgtd, lttd, new SpatialReference({
        wkid: 4326
      }));
      var graphic = new esri.Graphic(pt, symbol);
      entitys.add(graphic);
    },
    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));
    },
    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
        }
      });
      entitys.add(new Graphic(polygon, polygonSymbol));
    },
    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);
    },
    addPolygonAll: function (entitys, rings, objId) {
      // entitys.clear();
      var graphic = null;
      if (this.patrolIndex == 1) {
        var polylineSymbol = new SimpleLineSymbol();
        polylineSymbol.color = [255, 0, 0, 1];
        polylineSymbol.width = 4;
        var polyline = new Polyline({
          "paths": [rings],
          "spatialReference": {
            "wkid": 4326
          }
        });
        graphic = new Graphic(polyline, polylineSymbol)
      } else {
        var polygonSymbol = new SimpleFillSymbol();
        polygonSymbol.color = [24, 255, 243, 0.411];
        var polygon = new Polygon({
          "rings": [rings],
          "spatialReference": {
            "wkid": 4326
          }
        });
        graphic = new Graphic(polygon, polygonSymbol);
      }
      graphic.objId = objId;
      if (this.tabIndex == 1) {
        if (this.patrolIndex == 1) {
          this.currentDrawing.push({
            id: objId.id,
            regionId: objId.regionId,
            routeName: objId.routeName,
            remarks: objId.remarks,
            extent: graphic.geometry.getExtent()
          });
        } else {
          this.currentDrawing.push({
            id: objId.id,
            regionId: objId.regionId,
            regionName: objId.regionName,
            remarks: objId.remarks,
            extent: graphic.geometry.getExtent()
          });
        }
      } else {
        this.currentDrawing.push({
          id: objId.id,
          aname: objId.aname,
          anumber: objId.anumber,
          extent: graphic.geometry.getExtent()
        });
      }
      entitys.add(graphic);
    },
    modifyPolygon: function () {
      var self = this;
      if (self.editToolbar != null) {
        if (self.patrolIndex == 1) {
          var polygon = self.editToolbar.getCurrentState();
          for (var i = 0; i < self.currentDrawing.length; i++) {
            if (self.currentDrawing[i].id == polygon.graphic.objId.id) {
              self.currentDrawing[i].extent = polygon.graphic.geometry.getExtent();
            }
          }
          self.editToolbar.deactivate();
          self.editToolbar = null;
          // 声明空字符串,存储数据
          var dataStr = '';
          // 获取数据
          var data = polygon.graphic.geometry.paths[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: 'http://s16s652780.51mypc.cn/api/routeIn/routein/updatelx',
            type: 'POST',
            dataType: 'JSON',
            data: {
              id: polygon.graphic.objId.id,
              regionId: polygon.graphic.objId.regionId,
              routeName: polygon.graphic.objId.routeName,
              routeInfo: dataStr,
              remarks: polygon.graphic.objId.remarks,
            },
            success: function (result) {
              if (result.code == 200) {
              }
            }
          })
        } else {
          var polygon = self.editToolbar.getCurrentState();
          for (var i = 0; i < self.currentDrawing.length; i++) {
            if (self.currentDrawing[i].id == polygon.graphic.objId.id) {
              self.currentDrawing[i].extent = polygon.graphic.geometry.getExtent();
            }
          }
          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: 'http://s16s652780.51mypc.cn/api/regions/regions/updateqy',
            type: 'POST',
            dataType: 'JSON',
            data: {
              id: polygon.graphic.objId.id,
              regionId: polygon.graphic.objId.regionId,
              regionName: polygon.graphic.objId.regionName,
              coordinate: dataStr,
              remarks: polygon.graphic.objId.remarks
            },
            success: function (result) {
              if (result.code == 200) {
              }
            }
          })
        }
      }
    },
    electronicFence: function () {
      var self = this;
      if (self.editToolbar != null) {
        var polygon = self.editToolbar.getCurrentState();
        for (var i = 0; i < self.currentDrawing.length; i++) {
          if (self.currentDrawing[i].id == polygon.graphic.objId.id) {
            self.currentDrawing[i].extent = polygon.graphic.geometry.getExtent();
          }
        }
        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: 'http://s16s652780.51mypc.cn/api/enclosure/enclosure/updatee',
          type: 'POST',
          dataType: 'JSON',
          data: {
            id: polygon.graphic.objId.id,
            aname: polygon.graphic.objId.aname,
            anumber: polygon.graphic.objId.anumber,
            routeInfo: dataStr
          },
          success: function (result) {
            if (result.code == 200) {
            }
          }
        })
      }
    },
    //聚合图层事件
    flareClusterLayer: function (datas) {
      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({
          "wkid": 4326
        }),
        subTypeFlareProperty: "facilityType",
        singleFlareTooltipProperty: "name",
        displaySubTypeFlares: true,
        displaySingleFlaresAtCount: displaySingleFlaresAtCount,
        flareShowMode: "mouse",
        preClustered: preClustered,
        clusterRatio: 75,
        clusterAreaDisplay: areaDisplayMode,
        clusteringBegin: function () {
          console.log("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/ceshi.png", 32, 32).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, 22, 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;
    }
  });
  return Widget;
});
public/map/widgets/patrolManagement/template copy.html
New file
@@ -0,0 +1,261 @@
<div class='police-dispatching' open-li='police-dispatching'>
    <ul class='police-dispatching-tab'>
        <li class='on'>警情分发</li>
        <li>巡逻管理</li>
        <li>出警队伍管理</li>
    </ul>
    <!-- 展示警情调度 -->
    <div class="police-container">
        <!-- 警情分发 -->
        <div class="police-container-distribute">
            <div style='display: flex;'>
                <div class="distribute-district" style='flex: 1'>
                    <ul>
                        <li id='distributeCategory'>
                            行政区:
                            <div>
                                全部
                                <i>
                                </i>
                            </div>
                            <div class='select-list'>
                                <ul>
                                    <li>全部</li>
                                    <li>治安警情</li>
                                    <li>刑事警情</li>
                                    <li>火警</li>
                                </ul>
                            </div>
                        </li>
                    </ul>
                </div>
                <div class="distribute-state" style='flex: 1'>
                    <ul>
                        <li id='distributeState'>
                            状态:
                            <div>
                                全部
                                <i>
                                </i>
                            </div>
                            <div class='select-list'>
                                <ul>
                                    <li statetype=''>全部</li>
                                    <li statetype='0'>待处理</li>
                                    <li statetype='2'>处理中</li>
                                </ul>
                            </div>
                        </li>
                    </ul>
                </div>
            </div>
            <div class='distribute-selection-criteria'>
                <input type="text" id='dispatchingStartTime' readonly> - <input type="text" id='dispatchingEndTime' readonly>
                <input type="button" value='查询' id='dispatchingSelectTime'>
            </div>
            <div class='distribute-table-content'>
                <div class="table">
                    <div class="thead">
                        <table>
                            <thead>
                                <tr>
                                    <th>序号</th>
                                    <th>行政区</th>
                                    <th>状态</th>
                                    <th>日期</th>
                                    <th>操作</th>
                                </tr>
                            </thead>
                        </table>
                    </div>
                    <div class="tbody">
                        <table>
                            <tbody></tbody>
                        </table>
                    </div>
                </div>
            </div>
        </div>
        <!-- 巡逻管理 -->
        <div class="police-container-patrol">
            <ul class='tab-header'>
                <li class='on'>巡逻区域</li>
                <li>巡逻路线</li>
            </ul>
            <ul class='main-content'>
                <li>
                    <div class='distribute-table-content'>
                        <div class="operation">
                            <input type="text" placeholder="请输入区域名称" class='route-name'>
                            <input type="button" value='查询' class='query'>
                            <input type="button" value='新增' class='add'>
                        </div>
                        <div class="table">
                            <div class="thead">
                                <table>
                                    <thead>
                                        <tr>
                                            <th>序号</th>
                                            <th>区域名称</th>
                                            <th>时间</th>
                                        </tr>
                                    </thead>
                                </table>
                            </div>
                            <div class="tbody">
                                <table>
                                    <tbody></tbody>
                                </table>
                            </div>
                        </div>
                    </div>
                </li>
                <li style="display: none;">
                    <div class='distribute-table-content'>
                        <div class="operation">
                            <div class='select'>
                                <ul>
                                    <li id='patrolRoute'>
                                        区域:
                                        <div>
                                        </div>
                                        <div class='select-list'>
                                            <ul>
                                            </ul>
                                        </div>
                                    </li>
                                </ul>
                            </div>
                            <input type="button" value='新增' class='add'>
                        </div>
                        <div class="operation">
                            <input type="text" placeholder="请输入路线名称" class='route-name'>
                            <input type="button" value='查询' class='query'>
                        </div>
                        <div class="table">
                            <div class="thead">
                                <table>
                                    <thead>
                                        <tr>
                                            <th>序号</th>
                                            <th>人员</th>
                                            <th>路线名称</th>
                                            <th>时间</th>
                                            <th>操作</th>
                                        </tr>
                                    </thead>
                                </table>
                            </div>
                            <div class="tbody">
                                <table>
                                    <tbody></tbody>
                                </table>
                            </div>
                        </div>
                    </div>
                </li>
            </ul>
        </div>
        <!-- 出警队伍管理 -->
        <div class="police-container-policeforce">
            <div class='distribute-table-content'>
                <div class="table">
                    <div class="thead">
                        <table>
                            <thead>
                                <tr>
                                    <th>序号</th>
                                    <th>人员编号</th>
                                    <th>人员名称</th>
                                    <th>联系电话</th>
                                    <th>电子围栏</th>
                                </tr>
                            </thead>
                        </table>
                    </div>
                    <div class="tbody">
                        <table>
                            <tbody>
                                <tr>
                                    <td>1</td>
                                    <td>011</td>
                                    <td>我是是</td>
                                    <td>12233344455</td>
                                    <td>
                                        <input type="button" value='查看'>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <!-- 用来显示警情分发的详细内容(编辑或查看) -->
    <div class='police-container-distribute-details' style='display: none;'>
        <div class="header">
            <h4>
            </h4>
            <div class="close">
            </div>
        </div>
        <div class="content">
            <table>
                <tbody>
                </tbody>
            </table>
        </div>
        <div class="handle-button" style='display: none;'>
            <input type="button" value="确定" class="confirm"><input type="button" value="取消" class='cancel'>
        </div>
        <!-- 保安 -->
        <div class='security-guard-nearby' style='display: none;'>
            <div class="security-staff-header">
                <h4>
                    附近保安
                </h4>
            </div>
            <div class="security-staff-content">
                <table>
                    <thead>
                        <tr>
                            <th>序号</th>
                            <th>保安名字</th>
                            <th>距离/km</th>
                            <th>操作</th>
                        </tr>
                    </thead>
                    <tbody>
                    </tbody>
                </table>
            </div>
            <div class="security-staff-confirm">
                <input type="button" value="确定">
            </div>
        </div>
    </div>
    <div class="tips">
        单击左键开始绘制。
    </div>
</div>
public/map/widgets/patrolManagement/template.html
@@ -1,263 +1,35 @@
<div class='police-dispatching' open-li='police-dispatching'>
    <ul class='police-dispatching-tab'>
        <li class='on'>警情分发</li>
        <li>巡逻管理</li>
        <li>出警队伍管理</li>
    </ul>
    <!-- 展示警情调度 -->
    <div class="police-container">
        <!-- 警情分发 -->
        <div class="police-container-distribute">
            <div style='display: flex;'>
                <div class="distribute-district" style='flex: 1'>
                    <ul>
                        <li id='distributeCategory'>
                            行政区:
                            <div>
                                全部
                                <i>
                                </i>
                            </div>
                            <div class='select-list'>
                                <ul>
                                    <li>全部</li>
                                    <li>治安警情</li>
                                    <li>刑事警情</li>
                                    <li>火警</li>
                                </ul>
                            </div>
                        </li>
                    </ul>
                </div>
                <div class="distribute-state" style='flex: 1'>
                    <ul>
                        <li id='distributeState'>
                            状态:
                            <div>
                                全部
                                <i>
                                </i>
                            </div>
                            <div class='select-list'>
                                <ul>
                                    <li statetype=''>全部</li>
                                    <li statetype='0'>待处理</li>
                                    <li statetype='2'>处理中</li>
                                </ul>
                            </div>
                        </li>
                    </ul>
                </div>
            </div>
            <div class='distribute-selection-criteria'>
                <input type="text" id='dispatchingStartTime' readonly> - <input type="text" id='dispatchingEndTime'
                    readonly>
                <input type="button" value='查询' id='dispatchingSelectTime'>
            </div>
            <div class='distribute-table-content'>
                <div class="table">
                    <div class="thead">
                        <table>
                            <thead>
                                <tr>
                                    <th>序号</th>
                                    <th>行政区</th>
                                    <th>状态</th>
                                    <th>日期</th>
                                    <th>操作</th>
                                </tr>
                            </thead>
                        </table>
                    </div>
                    <div class="tbody">
                        <table>
                            <tbody></tbody>
                        </table>
                    </div>
                </div>
            </div>
        </div>
        <!-- 巡逻管理 -->
        <div class="police-container-patrol">
            <ul class='tab-header'>
                <li style="display: none !important;">巡逻区域</li>
                <li class='on' >巡逻路线</li>
                <!-- <li class='on'>巡逻区域</li> -->
                <li>巡逻路线</li>
            </ul>
            <ul class='main-content'>
                <li style="display: none;">
                    <div class='distribute-table-content'>
                        <div class="operation">
                            <input type="text" placeholder="请输入区域名称" class='route-name'>
                            <input type="button" value='查询' class='query'>
                            <input type="button" value='新增' class='add'>
                        </div>
                        <div class="table">
                            <div class="thead">
                                <table>
                                    <thead>
                                        <tr>
                                            <th>序号</th>
                                            <th>区域名称</th>
                                            <th>时间</th>
                                        </tr>
                                    </thead>
                                </table>
                            </div>
                            <div class="tbody">
                                <table>
                                    <tbody></tbody>
                                </table>
                            </div>
                        </div>
                    </div>
                </li>
                <li>
                    <div class='distribute-table-content'>
                        <!-- <div class="operation">
                            <div class='select'>
                                <ul>
                                    <li id='patrolRoute'>
                                        区域:
                                        <div>
                                        </div>
                                        <div class='select-list'>
                                            <ul>
                                            </ul>
                                        </div>
                                    </li>
                                </ul>
                            </div>
                        </div> -->
                        <div class="operation">
                            <input type="text" placeholder="请输入路线名称" class='route-name'>
                            <input type="button" value='查询' class='query'>
                            <input type="button" value='新增' class='add'>
                        </div>
                        <div class="table">
                            <div class="thead">
                                <table>
                                    <thead>
                                        <tr>
                                            <th>序号</th>
                                            <th style="display: none;">人员</th>
                                            <th>路线名称</th>
                                            <th>时间</th>
                                            <th>操作</th>
                                        </tr>
                                    </thead>
                                </table>
                            </div>
                            <div class="tbody">
                                <table>
                                    <tbody></tbody>
                                </table>
                            </div>
                        </div>
                    </div>
                </li>
            </ul>
            <div id="region-tree"></div>
        </div>
        <!-- 出警队伍管理 -->
        <div class="police-container-policeforce">
            <div class='distribute-table-content'>
                <div class="table">
                    <div class="thead">
                        <table>
                            <thead>
                                <tr>
                                    <th>序号</th>
                                    <th>人员编号</th>
                                    <th>人员名称</th>
                                    <th>联系电话</th>
                                    <th>电子围栏</th>
                                </tr>
                            </thead>
                        </table>
                    </div>
                    <div class="tbody">
                        <table>
                            <tbody>
                                <tr>
                                    <td>1</td>
                                    <td>011</td>
                                    <td>我是是</td>
                                    <td>12233344455</td>
                                    <td>
                                        <input type="button" value='查看'>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
    </div>
    <!-- 按钮事件 -->
    <div class="mapBtn" id="mapBtn" style="display: none;">
        <div class="insBtn">
            <img src="./images/add-0.png" style="width:14px;height:14px;">
            <a class=" insert " id="insertEngineeringMap">新增&nbsp;|&nbsp;</a>
        </div>
        <div class="editBtn">
            <img src="./images/edit.png" style="width:14px;height:14px;">
            <a class=" edit " id="editEngineeringMap">编辑&nbsp;|&nbsp;</a>
        </div>
        <div class="delBtn">
            <img src="./images/del.png" style="width:14px;height:14px;">
            <a class="delete " id="securityMapClearMap">删除</a>
        </div>
    </div>
    <!-- 用来显示警情分发的详细内容(编辑或查看) -->
    <div class='police-container-distribute-details' style='display: none;'>
        <div class="header">
            <h4>
            </h4>
            <div class="close">
            </div>
        </div>
        <div class="content">
            <table>
                <tbody>
                </tbody>
            </table>
        </div>
        <div class="handle-button" style='display: none;'>
            <input type="button" value="确定" class="confirm"><input type="button" value="取消" class='cancel'>
        </div>
        <!-- 保安 -->
        <div class='security-guard-nearby' style='display: none;'>
            <div class="security-staff-header">
                <h4>
                    附近保安
                </h4>
            </div>
            <div class="security-staff-content">
                <table>
                    <thead>
                        <tr>
                            <th>序号</th>
                            <th>保安名字</th>
                            <th>距离/km</th>
                            <th>操作</th>
                        </tr>
                    </thead>
                    <tbody>
                    </tbody>
                </table>
            </div>
            <div class="security-staff-confirm">
                <input type="button" value="确定">
            </div>
        </div>
    </div>
    <div class="tips">
        单击左键开始绘制。
    </div>
</div>
</div>
public/map/widgets/patrolManagement/template01.html
New file
@@ -0,0 +1,262 @@
<div class='police-dispatching' open-li='police-dispatching'>
    <ul class='police-dispatching-tab'>
        <li class='on'>警情分发</li>
        <li>巡逻管理</li>
        <li>出警队伍管理</li>
    </ul>
    <!-- 展示警情调度 -->
    <div class="police-container">
        <!-- 警情分发 -->
        <div class="police-container-distribute">
            <div style='display: flex;'>
                <div class="distribute-district" style='flex: 1'>
                    <ul>
                        <li id='distributeCategory'>
                            行政区:
                            <div>
                                全部
                                <i>
                                </i>
                            </div>
                            <div class='select-list'>
                                <ul>
                                    <li>全部</li>
                                    <li>治安警情</li>
                                    <li>刑事警情</li>
                                    <li>火警</li>
                                </ul>
                            </div>
                        </li>
                    </ul>
                </div>
                <div class="distribute-state" style='flex: 1'>
                    <ul>
                        <li id='distributeState'>
                            状态:
                            <div>
                                全部
                                <i>
                                </i>
                            </div>
                            <div class='select-list'>
                                <ul>
                                    <li statetype=''>全部</li>
                                    <li statetype='0'>待处理</li>
                                    <li statetype='2'>处理中</li>
                                </ul>
                            </div>
                        </li>
                    </ul>
                </div>
            </div>
            <div class='distribute-selection-criteria'>
                <input type="text" id='dispatchingStartTime' readonly> - <input type="text" id='dispatchingEndTime' readonly>
                <input type="button" value='查询' id='dispatchingSelectTime'>
            </div>
            <div class='distribute-table-content'>
                <div class="table">
                    <div class="thead">
                        <table>
                            <thead>
                                <tr>
                                    <th>序号</th>
                                    <th>行政区</th>
                                    <th>状态</th>
                                    <th>日期</th>
                                    <th>操作</th>
                                </tr>
                            </thead>
                        </table>
                    </div>
                    <div class="tbody">
                        <table>
                            <tbody></tbody>
                        </table>
                    </div>
                </div>
            </div>
        </div>
        <!-- 巡逻管理 -->
        <div class="police-container-patrol">
            <ul class='tab-header'>
                <li style="display: none !important;">巡逻区域</li>
                <li class='on'>巡逻路线</li>
            </ul>
            <ul class='main-content'>
                <li style="display: none;">
                    <div class='distribute-table-content'>
                        <div class="operation">
                            <input type="text" placeholder="请输入区域名称" class='route-name'>
                            <input type="button" value='查询' class='query'>
                            <input type="button" value='新增' class='add'>
                        </div>
                        <div class="table">
                            <div class="thead">
                                <table>
                                    <thead>
                                        <tr>
                                            <th>序号</th>
                                            <th>区域名称</th>
                                            <th>时间</th>
                                        </tr>
                                    </thead>
                                </table>
                            </div>
                            <div class="tbody">
                                <table>
                                    <tbody></tbody>
                                </table>
                            </div>
                        </div>
                    </div>
                </li>
                <li>
                    <div class='distribute-table-content'>
                        <!-- <div class="operation">
                            <div class='select'>
                                <ul>
                                    <li id='patrolRoute'>
                                        区域:
                                        <div>
                                        </div>
                                        <div class='select-list'>
                                            <ul>
                                            </ul>
                                        </div>
                                    </li>
                                </ul>
                            </div>
                        </div> -->
                        <div class="operation">
                            <input type="text" placeholder="请输入路线名称" class='route-name'>
                            <input type="button" value='查询' class='query'>
                            <input type="button" value='新增' class='add'>
                        </div>
                        <div class="table">
                            <div class="thead">
                                <table>
                                    <thead>
                                        <tr>
                                            <th>序号</th>
                                            <th style="display: none;">人员</th>
                                            <th>路线名称</th>
                                            <th>时间</th>
                                            <th>操作</th>
                                        </tr>
                                    </thead>
                                </table>
                            </div>
                            <div class="tbody">
                                <table>
                                    <tbody></tbody>
                                </table>
                            </div>
                        </div>
                    </div>
                </li>
            </ul>
        </div>
        <!-- 出警队伍管理 -->
        <div class="police-container-policeforce">
            <div class='distribute-table-content'>
                <div class="table">
                    <div class="thead">
                        <table>
                            <thead>
                                <tr>
                                    <th>序号</th>
                                    <th>人员编号</th>
                                    <th>人员名称</th>
                                    <th>联系电话</th>
                                    <th>电子围栏</th>
                                </tr>
                            </thead>
                        </table>
                    </div>
                    <div class="tbody">
                        <table>
                            <tbody>
                                <tr>
                                    <td>1</td>
                                    <td>011</td>
                                    <td>我是是</td>
                                    <td>12233344455</td>
                                    <td>
                                        <input type="button" value='查看'>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <!-- 用来显示警情分发的详细内容(编辑或查看) -->
    <div class='police-container-distribute-details' style='display: none;'>
        <div class="header">
            <h4>
            </h4>
            <div class="close">
            </div>
        </div>
        <div class="content">
            <table>
                <tbody>
                </tbody>
            </table>
        </div>
        <div class="handle-button" style='display: none;'>
            <input type="button" value="确定" class="confirm"><input type="button" value="取消" class='cancel'>
        </div>
        <!-- 保安 -->
        <div class='security-guard-nearby' style='display: none;'>
            <div class="security-staff-header">
                <h4>
                    附近保安
                </h4>
            </div>
            <div class="security-staff-content">
                <table>
                    <thead>
                        <tr>
                            <th>序号</th>
                            <th>保安名字</th>
                            <th>距离/km</th>
                            <th>操作</th>
                        </tr>
                    </thead>
                    <tbody>
                    </tbody>
                </table>
            </div>
            <div class="security-staff-confirm">
                <input type="button" value="确定">
            </div>
        </div>
    </div>
    <div class="tips">
        单击左键开始绘制。
    </div>
</div>
src/views/policeInformationDistribution/patrolManagement copy.vue
New file
@@ -0,0 +1,1119 @@
<template>
  <el-row>
    <!-- <el-col :span="5">
      <div class="box">
        <el-scrollbar>
          <basic-container>
            <avue-tree :option="treeOption" :data="treeData" @node-click="nodeClick"/>
          </basic-container>
        </el-scrollbar>
      </div>
    </el-col> -->
    <el-col>
      <basic-container>
        <avue-crud
          :option="option"
          :search.sync="search"
          :table-loading="loading"
          :data="data"
          ref="crud"
          v-model="form"
          :permission="permissionList"
          @row-del="rowDel"
          @row-update="rowUpdate"
          @row-save="rowSave"
          :before-open="beforeOpen"
          :page.sync="page"
          @search-change="searchChange"
          @search-reset="searchReset"
          @selection-change="selectionChange"
          @current-change="currentChange"
          @size-change="sizeChange"
          @refresh-change="refreshChange"
          @on-load="onLoad"
        >
          <template slot="menuLeft">
            <el-button
              type="danger"
              size="small"
              style="display: none"
              plain
              icon="el-icon-delete"
              v-if="permission.user_delete"
              @click="handleDelete"
              >删 除
            </el-button>
            <el-button
              style="display: none"
              type="info"
              size="small"
              plain
              v-if="permission.user_reset"
              icon="el-icon-refresh"
              @click="handleReset"
              >密码重置
            </el-button>
          </template>
          <template slot-scope="{ row }" slot="tenantName">
            <el-tag>{{ row.tenantName }}</el-tag>
          </template>
          <template slot-scope="{ row }" slot="roleName">
            <el-tag>{{ row.roleName }}</el-tag>
          </template>
          <template slot-scope="{ row }" slot="deptName">
            <el-tag>{{ row.deptName }}</el-tag>
          </template>
          <template slot-scope="{ row }" slot="userTypeName">
            <el-tag>{{ row.userTypeName }}</el-tag>
          </template>
          <template slot-scope="{ row }" slot="online_status">
            <el-tag
              >{{
                row.online_status == "0"
                  ? "离线"
                  : row.online_status == "1"
                  ? "在线"
                  : "离线"
              }}
            </el-tag>
          </template>
          <template slot-scope="{ row }" slot="sex">
            <el-tag>{{ row.sex == 1 ? "男" : "女" }} </el-tag>
          </template>
          <template slot-scope="{ type, size, row }" slot="menu">
            <el-button
              icon="el-icon-location-outline"
              :size="size"
              :type="type"
              @click.stop="handleMap(row, 1)"
              >编辑巡逻区域
            </el-button>
            <el-button
              icon="el-icon-location-outline"
              style="display:none"
              :size="size"
              :type="type"
              @click.stop="handleMap(row, 2)"
              >编辑巡逻路线
            </el-button>
          </template>
        </avue-crud>
        <el-dialog
          title="用户角色配置"
          append-to-body
          :visible.sync="roleBox"
          width="345px"
        >
          <el-tree
            :data="roleGrantList"
            show-checkbox
            check-strictly
            default-expand-all
            node-key="id"
            ref="treeRole"
            :default-checked-keys="roleTreeObj"
            :props="props"
          >
          </el-tree>
          <span slot="footer" class="dialog-footer">
            <el-button @click="roleBox = false">取 消</el-button>
            <el-button type="primary" @click="submitRole">确 定</el-button>
          </span>
        </el-dialog>
        <el-dialog
          title="用户数据导入"
          append-to-body
          :visible.sync="excelBox"
          width="555px"
        >
          <avue-form
            :option="excelOption"
            v-model="excelForm"
            :upload-after="uploadAfter"
          >
            <template slot="excelTemplate">
              <el-button type="primary" @click="handleTemplate">
                点击下载<i class="el-icon-download el-icon--right"></i>
              </el-button>
            </template>
          </avue-form>
        </el-dialog>
        <el-dialog
          title="用户平台配置"
          append-to-body
          :visible.sync="platformBox"
        >
          <avue-crud
            :option="platformOption"
            :table-loading="platformLoading"
            :data="platformData"
            ref="platformCrud"
            v-model="platformForm"
            :before-open="platformBeforeOpen"
            :page.sync="platformPage"
            :permission="platformPermissionList"
            @row-update="platformRowUpdate"
            @search-change="platformSearchChange"
            @search-reset="platformSearchReset"
            @selection-change="platformSelectionChange"
            @current-change="platformCurrentChange"
            @size-change="platformSizeChange"
            @refresh-change="platformRefreshChange"
            @on-load="platformOnLoad"
          >
            <template slot-scope="{ row }" slot="tenantName">
              <el-tag>{{ row.tenantName }}</el-tag>
            </template>
            <template slot-scope="{ row }" slot="userTypeName">
              <el-tag>{{ row.userTypeName }}</el-tag>
            </template>
          </avue-crud>
        </el-dialog>
        <el-drawer
          :title="tab == 1 ? '巡逻区域' : '巡逻路线'"
          append-to-body="true"
          :visible.sync="showMap"
        >
          <iframe
            id="securityMap"
            ref="securityMap"
            :src="baseUrl"
            frameborder="0"
            width="100%"
            height="100%"
            name="securityMap"
          ></iframe>
        </el-drawer>
      </basic-container>
    </el-col>
  </el-row>
</template>
<script>
import {
  getUser,
  getUserPlatform,
  remove,
  update,
  updatePlatform,
  add,
  grant,
  resetPassword,
} from "@/api/system/user";
// import { getList } from "@/api/security/security";
import { getList } from "@/api/system/examination";
import { getDeptTree, getDeptLazyTree } from "@/api/system/dept";
import { getRoleTree } from "@/api/system/role";
import { getPostList } from "@/api/system/post";
import { mapGetters } from "vuex";
import website from "@/config/website";
import { getToken } from "@/util/auth";
export default {
  data() {
    const validatePass = (rule, value, callback) => {
      if (value === "") {
        callback(new Error("请输入密码"));
      } else {
        callback();
      }
    };
    const validatePass2 = (rule, value, callback) => {
      if (value === "") {
        callback(new Error("请再次输入密码"));
      } else if (value !== this.form.password) {
        callback(new Error("两次输入密码不一致!"));
      } else {
        callback();
      }
    };
    return {
      baseUrl: "/map/index.html?ISinit=1",
      form: {},
      search: {},
      roleBox: false,
      excelBox: false,
      platformBox: false,
      showMap: false,
      initFlag: true,
      selectionList: [],
      query: {},
      loading: true,
      roleId: "",
      platformLoading: false,
      page: {
        pageSize: 10,
        currentPage: 1,
        total: 0,
      },
      platformPage: {
        pageSize: 10,
        currentPage: 1,
        total: 0,
      },
      init: {
        roleTree: [],
        deptTree: [],
      },
      props: {
        label: "title",
        value: "key",
      },
      roleGrantList: [],
      roleTreeObj: [],
      treeDeptId: "",
      treeData: [],
      treeOption: {
        nodeKey: "id",
        lazy: true,
        treeLoad: function (node, resolve) {
          const parentId = node.level === 0 ? 0 : node.data.id;
          getDeptLazyTree(parentId).then((res) => {
            resolve(
              res.data.data.map((item) => {
                return {
                  ...item,
                  leaf: !item.hasChildren,
                };
              })
            );
          });
        },
        addBtn: false,
        menu: false,
        size: "small",
        props: {
          labelText: "标题",
          label: "title",
          value: "value",
          children: "children",
        },
      },
      option: {
        height: "auto",
        calcHeight: 54,
        tip: false,
        searchShow: true,
        searchMenuSpan: 6,
        border: false,
        //stripe:true,
        index: true,
        selection: true,
        tab: null,
        viewBtn: true,
        menuWidth: 350,
        //dialogType: 'drawer',
        dialogClickModal: false,
        column: [
          {
            label: "姓名",
            prop: "realName",
            search: true,
            searchSpan: 4,
            display: false,
          },
          {
            label: "账号",
            prop: "account",
            searchSpan: 4,
            search: true,
            display: false,
          },
          {
            label: "性别",
            prop: "sex",
            type: "select",
            slot: true,
            display: false,
          },
          {
            label: "联系方式",
            prop: "phone",
            display: false,
          },
          {
            label: "所属角色",
            prop: "roleName",
            slot: true,
            display: false,
          },
          {
            label: "组织机构",
            prop: "deptName",
            slot: true,
            display: false,
            width: 260,
          },
        ],
        group: [
          {
            label: "基础信息",
            prop: "baseInfo",
            icon: "el-icon-user-solid",
            column: [
              {
                label: "所属客户",
                prop: "tenantId",
                type: "tree",
                dicUrl: "/api/blade-system/tenant/select",
                props: {
                  label: "tenantName",
                  value: "tenantId",
                },
                hide: !website.tenantMode,
                addDisplay: website.tenantMode,
                editDisplay: website.tenantMode,
                viewDisplay: website.tenantMode,
                rules: [
                  {
                    required: true,
                    message: "请输入所属租户",
                    trigger: "click",
                  },
                ],
                span: 24,
              },
              {
                label: "登录账号",
                prop: "account",
                rules: [
                  {
                    required: true,
                    message: "请输入登录账号",
                    trigger: "blur",
                  },
                ],
              },
              {
                label: "用户平台",
                type: "select",
                dicUrl: "/api/blade-system/dict/dictionary?code=user_type",
                props: {
                  label: "dictValue",
                  value: "dictKey",
                },
                dataType: "number",
                slot: true,
                prop: "userType",
                rules: [
                  {
                    required: true,
                    message: "请选择用户平台",
                    trigger: "blur",
                  },
                ],
              },
              {
                label: "密码",
                prop: "password",
                hide: true,
                editDisplay: false,
                viewDisplay: false,
                rules: [
                  { required: true, validator: validatePass, trigger: "blur" },
                ],
              },
              {
                label: "确认密码",
                prop: "password2",
                hide: true,
                editDisplay: false,
                viewDisplay: false,
                rules: [
                  { required: true, validator: validatePass2, trigger: "blur" },
                ],
              },
            ],
          },
          {
            label: "详细信息",
            prop: "detailInfo",
            icon: "el-icon-s-order",
            column: [
              {
                label: "用户昵称",
                prop: "name",
                hide: true,
                rules: [
                  {
                    required: true,
                    message: "请输入用户昵称",
                    trigger: "blur",
                  },
                ],
              },
              {
                label: "用户姓名",
                prop: "realName",
                rules: [
                  {
                    required: true,
                    message: "请输入用户姓名",
                    trigger: "blur",
                  },
                  {
                    min: 2,
                    max: 5,
                    message: "姓名长度在2到5个字符",
                  },
                ],
              },
              {
                label: "手机号码",
                prop: "phone",
                overHidden: true,
              },
              {
                label: "电子邮箱",
                prop: "email",
                hide: true,
                overHidden: true,
              },
              {
                label: "用户性别",
                prop: "sex",
                type: "select",
                dicData: [
                  {
                    label: "男",
                    value: 1,
                  },
                  {
                    label: "女",
                    value: 2,
                  },
                  {
                    label: "未知",
                    value: 3,
                  },
                ],
                hide: true,
              },
              {
                label: "用户生日",
                type: "date",
                prop: "birthday",
                format: "yyyy-MM-dd hh:mm:ss",
                valueFormat: "yyyy-MM-dd hh:mm:ss",
                hide: true,
              },
              {
                label: "账号状态",
                prop: "statusName",
                hide: true,
                display: false,
              },
            ],
          },
          {
            label: "职责信息",
            prop: "dutyInfo",
            icon: "el-icon-s-custom",
            column: [
              {
                label: "用户编号",
                prop: "code",
              },
              {
                label: "所属角色",
                prop: "roleId",
                multiple: true,
                type: "tree",
                dicData: [],
                props: {
                  label: "title",
                },
                checkStrictly: true,
                slot: true,
                addDisplay: false,
                editDisplay: false,
                viewDisplay: true,
                // rules: [{
                //   required: true,
                //   message: "请选择所属角色",
                //   trigger: "click"
                // }]
              },
              {
                label: "所属部门",
                prop: "deptId",
                type: "cascader",
                //multiple: true,
                dicData: [],
                props: {
                  label: "title",
                },
                checkStrictly: true,
                slot: true,
                rules: [
                  {
                    required: true,
                    message: "请选择所属部门",
                    trigger: "click",
                  },
                ],
              },
              {
                label: "所属岗位",
                prop: "postId",
                type: "tree",
                multiple: true,
                dicData: [],
                props: {
                  label: "postName",
                  value: "id",
                },
              },
            ],
          },
        ],
      },
      data: [],
      platformQuery: {},
      platformSelectionList: [],
      platformData: [],
      platformForm: {},
      platformOption: {
        tip: false,
        searchShow: true,
        searchMenuSpan: 6,
        border: true,
        index: true,
        selection: true,
        viewBtn: true,
        dialogClickModal: false,
        menuWidth: 120,
        editBtnText: "配置",
        column: [
          {
            label: "登录账号",
            prop: "account",
            search: true,
            display: false,
          },
          {
            label: "所属租户",
            prop: "tenantName",
            slot: true,
            display: false,
          },
          {
            label: "用户姓名",
            prop: "realName",
            search: true,
            display: false,
          },
          {
            label: "用户平台",
            prop: "userTypeName",
            slot: true,
            display: false,
          },
          {
            label: "用户平台",
            type: "select",
            dicUrl: "/api/blade-system/dict/dictionary?code=user_type",
            props: {
              label: "dictValue",
              value: "dictKey",
            },
            dataType: "number",
            search: true,
            hide: true,
            display: false,
            prop: "userType",
            rules: [
              {
                required: true,
                message: "请选择用户平台",
                trigger: "blur",
              },
            ],
          },
          {
            label: "用户拓展",
            prop: "userExt",
            type: "textarea",
            minRows: 8,
            span: 24,
            overHidden: true,
            row: true,
            hide: true,
          },
        ],
      },
      excelForm: {},
      excelOption: {
        submitBtn: false,
        emptyBtn: false,
        column: [
          {
            label: "模板上传",
            prop: "excelFile",
            type: "upload",
            drag: true,
            loadText: "模板上传中,请稍等",
            span: 24,
            propsHttp: {
              res: "data",
            },
            tip: "请上传 .xls,.xlsx 标准格式文件",
            action: "/api/blade-user/import-user",
          },
          {
            label: "数据覆盖",
            prop: "isCovered",
            type: "switch",
            align: "center",
            width: 80,
            dicData: [
              {
                label: "否",
                value: 0,
              },
              {
                label: "是",
                value: 1,
              },
            ],
            value: 0,
            slot: true,
            rules: [
              {
                required: true,
                message: "请选择是否覆盖",
                trigger: "blur",
              },
            ],
          },
          {
            label: "模板下载",
            prop: "excelTemplate",
            formslot: true,
            span: 24,
          },
        ],
      },
    };
  },
  watch: {
    "form.tenantId"() {
      if (this.form.tenantId !== "" && this.initFlag) {
        this.initData(this.form.tenantId);
      }
    },
    "excelForm.isCovered"() {
      if (this.excelForm.isCovered !== "") {
        const column = this.findObject(this.excelOption.column, "excelFile");
        column.action = `/api/blade-user/import-user?isCovered=${this.excelForm.isCovered}`;
      }
    },
  },
  computed: {
    ...mapGetters(["userInfo", "permission"]),
    permissionList() {
      return {
        addBtn: this.vaildData(null, false),
        viewBtn: this.vaildData(null, false),
        delBtn: this.vaildData(null, false),
        editBtn: this.vaildData(null, false),
      };
    },
    platformPermissionList() {
      return {
        addBtn: false,
        viewBtn: false,
        delBtn: false,
        editBtn: this.vaildData(this.permission.user_edit, false),
      };
    },
    ids() {
      let ids = [];
      this.selectionList.forEach((ele) => {
        ids.push(ele.id);
      });
      return ids.join(",");
    },
  },
  mounted() {
    // 非租户模式默认加载管理组数据
    if (!website.tenantMode) {
      this.initData(website.tenantId);
    }
  },
  methods: {
    nodeClick(data) {
      this.treeDeptId = data.id;
      this.page.currentPage = 1;
      this.onLoad(this.page);
    },
    initData(tenantId) {
      getRoleTree(tenantId).then((res) => {
        var that = this;
        const column = this.findObject(this.option.group, "roleId");
        column.dicData = res.data.data;
        //数组
        var roleData = res.data.data;
        //遍历
        roleData.forEach((item) => {
          if (item.title == "处警员") {
            that.roleId = item.id;
          }
          if (item.hasChildren) {
            //取出title对比
            if (item.title == "处警员") {
              that.roleId = item.id;
            }
          }
        });
      });
      getDeptTree(tenantId).then((res) => {
        const column = this.findObject(this.option.group, "deptId");
        column.dicData = res.data.data;
      });
      getPostList(tenantId).then((res) => {
        const column = this.findObject(this.option.group, "postId");
        column.dicData = res.data.data;
      });
    },
    submitRole() {
      const roleList = this.$refs.treeRole.getCheckedKeys().join(",");
      grant(this.ids, roleList).then(() => {
        this.roleBox = false;
        this.$message({
          type: "success",
          message: "操作成功!",
        });
        this.onLoad(this.page);
      });
    },
    rowSave(row, done, loading) {
      row.deptId = row.deptId.join(",");
      row.roleId = this.roleId;
      row.postId = row.postId.join(",");
      add(row).then(
        () => {
          this.initFlag = false;
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!",
          });
          done();
        },
        (error) => {
          window.console.log(error);
          loading();
        }
      );
    },
    //打开巡逻区域地图
    handleMap(row, index) {
      var that = this;
      this.tab = index;
      this.showMap = true;
      if (row.jd == "" || row.jd == "0.0") {
        var rwjd = "115.862321";
        var rwwd = "28.591108";
        that.baseUrl = `/map/index.html?ISinit=1&openid=SecurityMap&jd=${rwjd}&wd=${rwwd}&code=${row.id}&name=${row.realName}&index=${index}`;
      } else {
        that.baseUrl = `/map/index.html?ISinit=1&openid=SecurityMap&jd=${row.jd}&wd=${row.wd}&code=${row.id}&name=${row.realName}&index=${index}`;
      }
      this.$nextTick(() => {
        this.$refs.securityMap.onload = () => {
          if (window.frames[0].init) {
            if (row.jd == "" || row.jd == "0.0") {
              //如果处警员无位置信息,则赋值一个默认数据,否则地图无法加载
              window.frames[0].init("SecurityMap", {
                x: rwjd,
                y: rwwd,
                code: row.code,
                index: index,
              });
            } else {
              window.frames[0].init("SecurityMap", {
                x: row.jd,
                y: row.wd,
                code: row.code,
                index: index,
              });
            }
          } else {
            console.log(`没有找到到window.frames[0].init`);
          }
        };
      });
    },
    rowUpdate(row, index, done, loading) {
      row.deptId = row.deptId.join(",");
      row.roleId = row.roleId.join(",");
      row.postId = row.postId.join(",");
      update(row).then(
        () => {
          this.initFlag = false;
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!",
          });
          done();
        },
        (error) => {
          window.console.log(error);
          loading();
        }
      );
    },
    rowDel(row) {
      this.$confirm("确定将选择数据删除?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          return remove(row.id);
        })
        .then(() => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!",
          });
        });
    },
    searchReset() {
      this.query = {};
      this.treeDeptId = "";
      this.onLoad(this.page);
    },
    searchChange(params, done) {
      this.query = params;
      this.page.currentPage = 1;
      this.onLoad(this.page, params);
      done();
    },
    selectionChange(list) {
      this.selectionList = list;
    },
    selectionClear() {
      this.selectionList = [];
      this.$refs.crud.toggleSelection();
    },
    handleDelete() {
      if (this.selectionList.length === 0) {
        this.$message.warning("请选择至少一条数据");
        return;
      }
      this.$confirm("确定将选择数据删除?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          return remove(this.ids);
        })
        .then(() => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!",
          });
          this.$refs.crud.toggleSelection();
        });
    },
    handleReset() {
      if (this.selectionList.length === 0) {
        this.$message.warning("请选择至少一条数据");
        return;
      }
      this.$confirm("确定将选择账号密码重置为123456?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          return resetPassword(this.ids);
        })
        .then(() => {
          this.$message({
            type: "success",
            message: "操作成功!",
          });
          this.$refs.crud.toggleSelection();
        });
    },
    handleGrant() {
      if (this.selectionList.length === 0) {
        this.$message.warning("请选择至少一条数据");
        return;
      }
      this.roleTreeObj = [];
      if (this.selectionList.length === 1) {
        this.roleTreeObj = this.selectionList[0].roleId.split(",");
      }
      getRoleTree().then((res) => {
        this.roleGrantList = res.data.data;
        this.roleBox = true;
      });
    },
    handlePlatform() {
      this.platformBox = true;
    },
    handleImport() {
      this.excelBox = true;
    },
    uploadAfter(res, done, loading, column) {
      this.excelBox = false;
      this.refreshChange();
      done();
    },
    handleExport() {
      this.$confirm("是否导出用户数据?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      }).then(() => {
        window.open(
          `/api/blade-user/export-user?${
            this.website.tokenHeader
          }=${getToken()}&account=${this.search.account}&realName=${
            this.search.realName
          }`
        );
      });
    },
    handleTemplate() {
      window.open(
        `/api/blade-user/export-template?${
          this.website.tokenHeader
        }=${getToken()}`
      );
    },
    beforeOpen(done, type) {
      if (["edit", "view"].includes(type)) {
        getUser(this.form.id).then((res) => {
          this.form = res.data.data;
          if (this.form.hasOwnProperty("deptId")) {
            this.form.deptId = this.form.deptId.split(",");
          }
          if (this.form.hasOwnProperty("roleId")) {
            this.form.roleId = this.form.roleId.split(",");
          }
          if (this.form.hasOwnProperty("postId")) {
            this.form.postId = this.form.postId.split(",");
          }
        });
      }
      this.initFlag = true;
      done();
    },
    currentChange(currentPage) {
      this.page.currentPage = currentPage;
    },
    sizeChange(pageSize) {
      this.page.pageSize = pageSize;
    },
    refreshChange() {
      this.onLoad(this.page, this.query);
    },
    onLoad(page, params = {}) {
      this.loading = true;
      getList(
        page.currentPage,
        page.pageSize,
        Object.assign(params, this.query),
        this.treeDeptId
      ).then((res) => {
        const data = res.data.data;
        this.page.total = data.total;
        this.data = data.records;
        this.loading = false;
        this.selectionClear();
      });
    },
    platformRowUpdate(row, index, done, loading) {
      updatePlatform(row.id, row.userType, row.userExt).then(
        () => {
          this.platformOnLoad(this.platformPage);
          this.$message({
            type: "success",
            message: "操作成功!",
          });
          done();
        },
        (error) => {
          window.console.log(error);
          loading();
        }
      );
    },
    platformBeforeOpen(done, type) {
      if (["edit", "view"].includes(type)) {
        getUserPlatform(this.platformForm.id).then((res) => {
          this.platformForm = res.data.data;
        });
      }
      done();
    },
    platformSearchReset() {
      this.platformQuery = {};
      this.platformOnLoad(this.platformPage);
    },
    platformSearchChange(params, done) {
      this.platformQuery = params;
      this.platformPage.currentPage = 1;
      this.platformOnLoad(this.platformPage, params);
      done();
    },
    platformSelectionChange(list) {
      this.platformSelectionList = list;
    },
    platformSelectionClear() {
      this.platformSelectionList = [];
      this.$refs.platformCrud.toggleSelection();
    },
    platformCurrentChange(currentPage) {
      this.platformPage.currentPage = currentPage;
    },
    platformSizeChange(pageSize) {
      this.platformPage.pageSize = pageSize;
    },
    platformRefreshChange() {
      this.platformOnLoad(this.platformPage, this.platformQuery);
    },
    platformOnLoad(page, params = {}) {
      this.platformLoading = true;
      getList(
        page.currentPage,
        page.pageSize,
        Object.assign(params, this.query),
        this.treeDeptId
      ).then((res) => {
        const data = res.data.data;
        this.platformPage.total = data.total;
        this.platformData = data.records;
        this.platformLoading = false;
        this.selectionClear();
      });
    },
  },
};
</script>
<style>
.box {
  height: 800px;
}
.el-scrollbar {
  height: 100%;
}
.box .el-scrollbar__wrap {
  overflow: scroll;
}
</style>
src/views/policeInformationDistribution/patrolManagement.vue
@@ -1,5 +1,6 @@
<template>
<iframe src="http://s16s652780.51mypc.cn/map/index.html?openid=PatrolManagement" style="width: 100%;height: 100%" frameborder="0"></iframe>
<!-- <iframe src="http://s16s652780.51mypc.cn/map/index.html?openid=PatrolManagement" style="width: 100%;height: 100%" frameborder="0"></iframe> -->
<iframe src="/map/index.html?openid=PatrolManagement" style="width: 100%;height: 100%" frameborder="0"></iframe>
</template>
<script>