/* * @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/realTimePolice/template.html", "base/AppEvent", "base/ConfigData", "widgets/realTimePolice/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/graphic", "esri/geometry/Point", "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!", "widgets/realTimePolice/LayUIDataTable" ], 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, Graphic, Point, 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: "RealTimePolice", label: "实时报警", templateString: template, _map: null, objThis: null, _siteLayer: new GraphicsLayer(), layuiLayer: null, layuiLadate: null, tabIndex: 0, // 保留添加实体图层的变量 realTimeAddEntitys: null, entitysData: [], realTimeEquipment: [], layerIndex: null, historyPoliceData: [], historyPoliceId: null, realTimeQuery: null, // 存放表格用于表格数据刷新 updateRealTable: null, //存放聚合实体 clusterLayer: null, //存放地图是否隐藏参数 mapShow: 1, // 存放行政区编码 realTimeAddvcd: '', // 存放警情类型 realTimeWringType: '', // 是否开启存储列表最后一个ID flagPoliceId: true, flagPoliceLength: 0, // 开始时间与结束时间 realBeginTime: '', realEndTime: '', constructor: function (options, srcRefNode) { this._map = options.map; objThis = this; this.realTimeAddEntitys = new GraphicsLayer({ id: 'realTimeAddEntitys' }); this.addOneEntitys = new GraphicsLayer({ id: 'addOneEntitys' }); this.addTwoEntitys = new GraphicsLayer({ id: 'addTwoEntitys' }); this.addThreeEntitys = new GraphicsLayer({ id: 'addThreeEntitys' }); this._map.addLayer(this.realTimeAddEntitys); this._map.addLayer(this.addOneEntitys); }, startup: function () { objThis._map.addLayer(objThis._siteLayer); var that = this; // 接警信息中类别移入事件 $('#realtimeDistrict').mouseenter(function () { if ($('#realtimeDistrict .select-list').is(':hidden')) { $('#realtimeDistrict .select-list').stop().slideDown(0); } }) // 接警信息中得类别移出事件 $('#realtimeDistrict').mouseleave(function () { if (!$('#realtimeDistrict .select-list').is(':hidden')) { $('#realtimeDistrict .select-list').stop().slideUp(0); } }) // 接警信息中的等级移入事件 $('#realtimeLevel').mouseenter(function () { if ($('#realtimeLevel .select-list').is(':hidden')) { $('#realtimeLevel .select-list').stop().slideDown(0); } }) // 接警信息中的等级移出事件 $('#realtimeLevel').mouseleave(function () { if (!$('#realtimeLevel .select-list').is(':hidden')) { $('#realtimeLevel .select-list').stop().slideUp(0); } }) // 音频的播放关闭 $('.real-time-police .layer-realtime-police .audio').off('click').click(function () { var audio = $(this).children('audio'); if ($(this).hasClass('open')) { audio[0].pause(); $(this).removeClass('open').addClass('close'); } else { audio[0].play() $(this).removeClass('close').addClass('open'); } // $(this).children('audio').$('div').hasClass('redColor') }) // 报警的切换 向上 $('.real-time-police .layer-realtime-police .bottom-tab .up-tab').off('click').click(function () { var list = $('.real-time-police .layer-realtime-police ul li'); if ($(this).hasClass('on')) { if ($('.real-time-police .bottom-tab .down-tab').hasClass('off')) { $('.real-time-police .bottom-tab .down-tab').removeClass('off').addClass('on'); } if (list.length > 0) { for (var i = 0; i < list.length; i++) { if ($(list[i]).hasClass('on')) { $(list[i]).removeClass('on').prev().addClass('on'); var channelNumber = $(list[i]).prev().attr('channelNumber'); var serialNumber = $(list[i]).prev().attr('serialNumber'); that.getStartVideoSite($('.real-time-police .layer-realtime-police-parent video')[0], channelNumber, serialNumber); if (i - 1 == 0) { $(this).removeClass('on').addClass('off'); break; } else { break } } } } } }) // 报警的切换 向下 $('.real-time-police .layer-realtime-police .bottom-tab .down-tab').off('click').click(function () { var list = $('.real-time-police .layer-realtime-police ul li'); if ($(this).hasClass('on')) { if ($('.real-time-police .bottom-tab .up-tab').hasClass('off')) { $('.real-time-police .bottom-tab .up-tab').removeClass('off').addClass('on'); } if (list.length > 0) { for (var i = 0; i < list.length; i++) { if ($(list[i]).hasClass('on')) { $(list[i]).removeClass('on').next().addClass('on'); var channelNumber = $(list[i]).next().attr('channelNumber'); var serialNumber = $(list[i]).next().attr('serialNumber'); that.getStartVideoSite($('.real-time-police .layer-realtime-police-parent video')[0], channelNumber, serialNumber); if (i == list.length - 2) { $(this).removeClass('on').addClass('off'); break; } else { break } } } } } }) // 实时提醒的关闭 $('.real-time-police .layer-realtime-police .layer-header .close').click(function () { $('.real-time-police .layer-realtime-police-parent').stop().hide(); $('.real-time-police .layer-realtime-police .audio audio')[0].pause(); $('.real-time-police .layer-realtime-police .layer-realtime-video video')[0].pause(); $('.real-time-police .layer-realtime-police .layer-realtime-video video').attr('src', ''); $("#realtimeDistrict > div:eq(0)").html("全部" + ""); $("#realtimeLevel > div:eq(0)").html("全部" + ""); that.realTimeAddvcd = ""; that.realTimeWringType = ""; that.realEndTime = that.getTime().current; $("#realTimeEnd").val(that.realEndTime); that.getRealTimePoliceTable(that.realTimeAddvcd, that.realTimeWringType, that.realBeginTime, that.realEndTime); // that.layerRealtime(); }) // 实时报警中得行政区选择点击事件 $('.real-time-select-condition #realtimeDistrict .select-list').off('click', 'li').on('click', 'li', function (event) { if (that.entitysData.length > 0) { that.realTimeAddEntitys.clear(); that.entitysData = []; } var text = $(this).text(); $(this).parent().parent().prev().html(text + ''); $(this).parent().parent().stop().slideUp(0); that.realTimeAddvcd = $(this).attr('addvcd'); that.getRealTimePoliceTable(that.realTimeAddvcd, that.realTimeWringType, that.realBeginTime, that.realEndTime) }) // 实时报警中得警情类型选择点击事件 $('.real-time-select-condition #realtimeLevel .select-list').off('click', 'li').on('click', 'li', function (event) { if (that.entitysData.length > 0) { that.realTimeAddEntitys.clear(); that.entitysData = []; } var text = $(this).text(); $(this).parent().parent().prev().html(text + ''); $(this).parent().parent().stop().slideUp(0); that.realTimeWringType = (text == "全部" ? "" : text).trim(); that.getRealTimePoliceTable(that.realTimeAddvcd, that.realTimeWringType, that.realBeginTime, that.realEndTime) }) // 时间选择后得查询按钮 $("#realTimeQuilckQuery").off('click').click(function () { that.realBeginTime = $("#realTimeBegin").val(); that.realEndTime = $("#realTimeEnd").val(); layui.use('layer', function () { var layer = layui.layer; if (that.realBeginTime == '') { layer.msg('请选择开始时间!', { icon: 5, time: 2000 //2秒关闭(如果不配置,默认是3秒) }); return; } else { if (that.realEndTime == '') { layer.msg('请选择结束时间!', { icon: 5, time: 2000 //2秒关闭(如果不配置,默认是3秒) }); return; } else { $("#realTimeBegin").val(''); $("#realTimeEnd").val(''); that.getRealTimePoliceTable(that.realTimeAddvcd, that.realTimeWringType, that.realBeginTime, that.realEndTime) } } }) }) // 本周本月全部,切换事件 $(".realtime-quick").off('click', 'button').on('click', 'button', function () { var text = $(this).text(); var time = that.getThisWeekTime(); $("#realtimeDistrict > div:eq(0)").html("全部" + ""); $("#realtimeLevel > div:eq(0)").html("全部" + ""); that.realTimeAddvcd = ""; that.realTimeWringType = ""; $("#realTimeBegin").val(that.realBeginTime); $("#realTimeEnd").val(that.realEndTime); switch (text) { case '本周': that.realBeginTime = time.week.beginTime; that.realEndTime = time.week.endTime; $("#realTimeBegin").val(that.realBeginTime); $("#realTimeEnd").val(that.realEndTime); that.getRealTimePoliceTable(that.realTimeAddvcd, that.realTimeWringType, that.realBeginTime, that.realEndTime) break; case '本月': that.realBeginTime = time.month.beginTime; that.realEndTime = time.month.endTime; $("#realTimeBegin").val(that.realBeginTime); $("#realTimeEnd").val(that.realEndTime); that.getRealTimePoliceTable(that.realTimeAddvcd, that.realTimeWringType, that.realBeginTime, that.realEndTime) break; case '全部': that.flagPoliceId == true that.realBeginTime = ''; that.realEndTime = ''; $("#realTimeBegin").val(''); $("#realTimeEnd").val(''); that.getRealTimePoliceTable(that.realTimeAddvcd, that.realTimeWringType, that.realBeginTime, that.realEndTime) break; } }) // 撤销警情 $('.layer-realtime-police-parent').off('click', 'table .revoke').on('click', '.revoke', function () { that.clearPoliceDetail($(this).data('id')); }) // 生成警单 $('.layer-realtime-police-parent').off('click', 'table .generate').on('click', '.generate', function () { var _self = this; var inpVal = $('.layer-realtime-police-parent .layer-content ul li.on tbody tr:eq(5) input').val(); var textareaVal = $('.layer-realtime-police-parent .layer-content ul li.on tbody tr:eq(5) textarea').val(); var liPrev = $('.layer-realtime-police-parent .layer-content ul li.on').prev(); var liNextAll = $('.layer-realtime-police-parent .layer-content ul li.on').nextAll(); var liNext = $('.layer-realtime-police-parent .layer-content ul li.on').next(); var liSiblings = $('.layer-realtime-police-parent .layer-content ul li.on').siblings(); var liSelect = $('.layer-realtime-police-parent .layer-content ul li.on'); layui.use('layer', function () { var layer = layui.layer; if (inpVal == '') { layer.msg("请选择要求处置时间"); return } $.ajax({ url: 'http://61.131.136.25:2082/api/jingdan/jingdan/saves', type: 'POST', data: { rName: $(_self).data('rname'), galarmPeople: $(_self).data('galarmpeople'), phoneNumber: $(_self).data('phonenumber'), place: $(_self).data('place'), content: $(_self).data('content'), galarmTime: $(_self).data('alarmtime'), waringType: $(_self).data('waringtype'), deviceNumber: $(_self).data('devicenumber'), type: "0", handleP: null, handleTime: null, handName: null, level: $(_self).data('level'), coordinate: null, jd: $(_self).data('jd'), wd: $(_self).data('wd'), addvcd: $(_self).data('addvcd'), jjTime: that.getTime().current, czTime: inpVal, bz: textareaVal }, dataType: 'JSON', success: function (data) { layui.use('layer', function () { var layer = layui.layer; if (data.code == 200) { layer.msg('成功生成警单'); that.updateJType($(_self).data('id'), inpVal, textareaVal); if (liSiblings.length == 0) { $('.real-time-police .layer-realtime-police .layer-header .close').trigger('click') } else if (liSiblings.length == 1) { $('.layer-realtime-police-parent .layer-content .bottom-tab').stop().hide(); liSelect.removeClass('on').remove().siblings().addClass('on'); } else if (liSiblings.length > 1) { if (liNextAll.length > 0) { liSelect.removeClass('on').remove(); liNext.addClass('on'); if (liNextAll.length == 1) { $('.layer-realtime-police-parent .layer-content .bottom-tab .down-tab').removeClass('on').addClass('off'); } } else { liSelect.removeClass('on').remove(); liPrev.addClass('on'); } } } else { layer.msg('警单生成失败'); } }) } }) }) }) // 清空时间按钮 $("#realTimeClearQuery").off('click').click(function () { $("#realTimeBegin").val(''); $("#realTimeEnd").val(''); }) }, open: function () { var that = this; that.realBeginTime = that.getTime().currentEight; that.realEndTime = that.getTime().current; $("#realTimeBegin").val(that.realBeginTime); $("#realTimeEnd").val(that.realEndTime); // $('#mapcontentClass').addClass('client-left-map'); //追加样式 $('#tabcontainer').css('width', '0%'); $("#client-sh-map i").html(''); //右侧地图拖动 $("#realTime-sh-map").off('click').click("click", () => { if (that.mapShow == 1) { $('#tabcontainer').css('width', '66%'); $("#realTime-sh-map i").html(''); that.updateRealTable.reload({}); that.mapShow = 0; } else { $('#tabcontainer').css('width', '100%'); $("#realTime-sh-map i").html(''); that.updateRealTable.reload({}); that.mapShow = 1; } }); // 行政区 // $.ajax({ // url: 'http://61.131.136.25:2082/api/district/district/selectList', // type: 'POST', // dataType: 'JSON', // success: function (data) { // $('.real-time-police .real-time-select-condition .realtime-district .select-list ul').empty(); // $('.real-time-police .real-time-select-condition .realtime-district .select-list ul').append("
  • 全部
  • "); // for (var i = 0; i < data.data.length; i++) { // $('.real-time-police .real-time-select-condition .realtime-district .select-list ul').append("
  • " + data.data[i].addvnm + "
  • "); // } // } // }) // // 警情类型下拉 // $.ajax({ // url: 'http://61.131.136.25:2082/api/alarm/alarm/selectScount', // type: 'GET', // dataType: 'JSON', // success: function (data) { // var res = data.data[0].type; // console.log(res); // $('.real-time-police .real-time-select-condition .realtime-level .select-list ul').empty(); // $('.real-time-police .real-time-select-condition .realtime-level .select-list ul').append("
  • 全部
  • "); // for (var i = 0; i < res.length; i++) { // $('.real-time-police .real-time-select-condition .realtime-level .select-list ul').append("
  • " + res[i] + "
  • "); // } // } // }) var layerTabHei = $(".real-time-police .real-time-information-list").height(); layui.use(['table', 'laydate'], function () { var table = layui.table; //第一个实例 that.updateRealTable = table.render({ elem: '#real_time_table' , height: (layerTabHei - 20) , url: 'http://61.131.136.25:2082/api/alarm/alarm/selectList' //数据接口 , method: "post" , where: { jtype: '', beginTime: that.realBeginTime, endTime: that.realEndTime } , parseData: function (res) { //res 即为原始返回的数据 if (res.data.length > 0) { if (that.flagPoliceId == false) { that.flagPoliceLength <= res.data.length ? that.flagPoliceId = true : that.flagPoliceId = false } if (that.flagPoliceId == true) { that.historyPoliceId = res.data[res.data.length - 1].id; // that.historyPoliceId = 60; that.flagPoliceLength = res.data.length; that.flagPoliceId = false; } res.data = res.data.sort(function (a, b) { var x = a['alarmTime']; var y = b['alarmTime']; return x > y ? -1 : x < y ? 1 : 0; }); var a = 0; for (var i = 0; i < res.data.length; i++) { a = i; res.data[i].num = (a += 1); res.data[i].yorn = (res.data[i].jtype == 1 ? '是' : '否'); res.data[i].x = Number(res.data[i].jd); res.data[i].y = Number(res.data[i].wd); // that.createEntitys(that.realTimeAddEntitys, that.entitysData, '实时报警', { // lgtd: res.data[i].jd, // lttd: res.data[i].wd, // id: res.data[i].id, // deviceNumber: res.data[i].deviceNumber // }, res.data[i].jd, res.data[i].wd, '/images/real-time-callPolice.png'); } if (that.clusterLayer != null) { that.clearLayer(); } that.flareClusterLayer(res.data); var result; if (this.page.curr) { result = res.data.slice(this.limit * (this.page.curr - 1), this.limit * this.page.curr); } else { result = res.data.slice(0, this.limit); } return { "code": res.code, //解析接口状态 "msg": res.msg, //解析提示文本 "count": res.data.length, //解析数据长度 "data": result //解析数据列表 } } else { return { "code": res.code, //解析接口状态 "msg": res.msg, //解析提示文本 "count": res.data.length, //解析数据长度 "data": res.data //解析数据列表 } } } , page: { //分页设置 limit: 16, //默认每一页显示数量 theme: 'real_time' } , cellMinWidth: 100 , cols: [[ //表头 { field: 'num', title: '序号', width: 76, fixed: 'left', align: 'center' } , { field: 'waringType', title: '警情类型', align: 'center' } , { field: 'alarmTime', title: '报警时间', width: 164, align: 'center' } , { field: 'rname', title: '报警内容', align: 'center' } , { field: 'alarmPeople', title: '报警人', align: 'center' } , { field: 'phoneNumber', title: '联系电话', width: 120, align: 'center' } , { field: 'galarmPeople', title: '接警人', align: 'center' } , { field: 'jjTime', title: '接警时间', width: 164, align: 'center' } , { field: 'addvnm', title: '行政区', width: 94, align: 'center' } , { field: 'place', title: '事发地址', width: 240, align: 'center' } , { field: 'deviceNumber', title: '设备编号', width: 140, align: 'center' } , { field: 'yorn', title: "是否生成警单", width: 120, align: 'center' } , { field: 'jd', title: "经度", width: 0, hide: true, align: 'center' } , { field: 'wd', title: "纬度", width: 0, hide: true, align: 'center' } , { field: 'channelNumber', title: "通道号", width: 0, hide: true, align: 'center' } , { field: 'serialNumber', title: "序列号", width: 0, hide: true, align: 'center' } , { field: 'jtype', title: "是否生成警单", width: 0, hide: true, align: 'center' } , { field: '', title: '操作', toolbar: "#real_time_table_btn", width: 164, fixed: 'right', align: 'center' } ]] , response: { statusName: 'code' //规定数据状态的字段名称,默认:code , statusCode: 200 //规定成功的状态码,默认:0 , msgName: 'msg' //规定状态信息的字段名称,默认:msg , countName: 'count' //规定数据总数的字段名称,默认:count , dataName: 'data' //规定数据列表的字段名称,默认:data } , done: function (res, curr, count, a, b, c, d) { //如果是异步请求数据方式,res即为你接口返回的信息。 //如果是直接赋值的方式,res即为:{data: [], count: 99} data为当前页数据、count为数据总长度 // $(".layui-table th").css("font-weight", "bold");// 设定表格标题字体加粗 LayUIDataTable.SetJqueryObj($);// 第一步:设置jQuery对象 var currentRowDataList = LayUIDataTable.ParseDataTable(function (index, currentData, rowData) { }) LayUIDataTable.HideField('jd');// 隐藏列-单列模式 LayUIDataTable.HideField('wd');// 隐藏列-单列模式 LayUIDataTable.HideField('jtype');// 隐藏列-单列模式 // 对相关数据进行判断处理--此处对mk2大于30的进行高亮显示 $.each(currentRowDataList, function (index, obj) { if (obj['jtype'] && obj['jtype'].value == '0') { obj['jtype'].row.css({ "color": "#ff7627" }); $('.layui-table-fixed.layui-table-fixed-l .layui-table-body tbody tr:eq(' + index + ')').css({ "color": "#ff7627" }); } if (obj['jtype'] && obj['jtype'].value == '1') { obj['jtype'].row.css({ "color": "#15a2fe" }); $('.layui-table-fixed.layui-table-fixed-l .layui-table-body tbody tr:eq(' + index + ')').css({ "color": "#15a2fe" }); } }) } }); table.on('tool(test)', function (obj) { switch (obj.event) { case 'realDispose': // 处 that.realTimePoliceDetails(obj.data.id, obj.data.deviceNumber, obj.data.channelNumber, obj.data.serialNumber, obj.data.jtype) break; case 'realHistory': // 设备历史 that.realTimeHistorySee(obj.data.deviceNumber) break; case 'realVideo': // 视频查看 that.realTimeVideoSee(obj.data.channelNumber, obj.data.serialNumber) break; case 'realLocation': // 定位 if (that.mapShow == 1) { $('#tabcontainer').css('width', '66%'); $("#realTime-sh-map i").html(''); that.updateRealTable.reload({}); that.mapShow = 0; } that.viewsGoTo(obj.data.jd, obj.data.wd) break; } ; }); var laydate = layui.laydate; //开始时间时间 var start_a = laydate.render({ elem: '#realTimeBegin', type: 'datetime', trigger: 'click', //采用click弹出 theme: '#3278F0', done: function (value, date, endDate) { end.config.min = { date: date.date, hours: date.hours, minutes: date.minutes, month: date.month - 1, seconds: date.seconds, year: date.year }; //开始日选好后,重置结束日的最小日期 end.config.value = { date: date.date, hours: date.hours, minutes: date.minutes, month: date.month - 1, seconds: date.seconds, year: date.year }; //将结束日的初始值设定为开始日 } }); //结束时间 var end = laydate.render({ elem: '#realTimeEnd', type: 'datetime', trigger: 'click', //采用click弹出 theme: '#3278F0', done: function (value, date, endDate) { start_a.config.max = { date: date.date, hours: date.hours, minutes: date.minutes, month: date.month - 1, seconds: date.seconds, year: date.year }; //结束日选好后,重置开始日的最大日期 } }); }); // that.layerRealtime(); window.deleteRealtimePolice = function (id) { layui.use('layer', function () { layui.layer.closeAll(); }) that.getRealTimePoliceTable(that.realTimeAddvcd, that.realTimeWringType, that.realBeginTime, that.realEndTime) } }, close: function () { var that = this; if (that.clusterLayer != null) { that.clearLayer(); } $('#mapcontentClass').removeClass('client-left-map'); //移除样式 $('#tabcontainer').css('width', '66%'); window.clearTimeout(that.realTimeQuery); if (that.layuiLayer != null) { that.layuiLayer.closeAll(); that.layerIndex = null; } if (that.entitysData.length > 0) { that.realTimeAddEntitys.clear(); that.entitysData = []; } if (!$('.real-time-police .layer-realtime-police').is(':hidden')) { $('.real-time-police .layer-realtime-police').stop().hide(); } if (!$('.real-time-police .layer-realtime-equipment').is(':hidden')) { $('.real-time-police .layer-realtime-equipment .close').trigger('click'); } }, // 实时警情详情 realTimePoliceDetails: function (id, deviceNumber, channelNumber, serialNumber, jtype) { var that = this; var url = './popup/html/realtime-police-details.html?obj=' + id + '&deviceNumber=' + deviceNumber + "&channelNumber=" + channelNumber + "&serialNumber=" + serialNumber + "&jtype=" + jtype; layui.use('layer', function () { that.layuiLayer = layui.layer; that.layuiLayer.config({ extend: 'myskin/realtime-police-details.css' }); that.layuiLayer.closeAll(); that.layerIndex = null; that.layerIndex = that.layuiLayer.open({ title: '警情详情', type: 2, shadeClose: true, shade: false, maxmin: false, //开启最大化最小化按钮 area: ['860px', '406px'], offset: 'auto', skin: 'realtime-police-details', content: url, closeBtn: 1, resize: false }); }) }, // 设备历史查看 realTimeHistorySee: function (deviceNumber) { var url = './popup/html/realtime-equipment-history.html?deviceNumber=' + deviceNumber; layui.use('layer', function () { var layer = layui.layer; layer.closeAll(); layer.config({ extend: 'myskin/realtime-equipment-history.css' }); layer.open({ title: '设备历史警情', type: 2, shadeClose: true, shade: false, maxmin: false, //开启最大化最小化按钮 area: ['820px', '460px'], offset: 'auto', skin: 'realtime-equipment-history', content: url, closeBtn: 1, resize: false }); }) }, // 视频查看 realTimeVideoSee: function (channelNumber, serialNumber) { var url = './popup/html/realtime-view-video.html?channelNumber=' + channelNumber + '&serialNumber=' + serialNumber; layui.use('layer', function () { var layer = layui.layer; layer.closeAll(); layer.config({ extend: 'myskin/realtime-view-video.css' }); layer.open({ title: '视屏查看', type: 2, shadeClose: true, shade: false, maxmin: false, //开启最大化最小化按钮 area: ['820px', '460px'], offset: 'auto', skin: 'realtime-view-video', content: url, closeBtn: 1, resize: false }); }) }, // 定位 viewsGoTo: function (jd, wd) { var lgtd = Number(jd); var lttd = Number(wd); var position = new esri.geometry.Point(lgtd, lttd, new esri.SpatialReference({ wkid: 4326 }));//根据输入坐标信息找地图上的点 this._map.centerAndZoom(position, 18);//缩放,10是缩放级别,可以自定义,数值越大缩放越大 }, // 视频播放 realStartVideo: function (dom, url) { if ($(dom).attr('src') != '') dom.pause(); if (window.parent.Hls.isSupported()) { dom.volume = 1.0; var hls = new window.parent.Hls(); var m3u8Url = decodeURIComponent(url) hls.loadSource(m3u8Url); hls.attachMedia(dom); hls.on(window.parent.Hls.Events.MANIFEST_PARSED, function () { dom.play(); }); } }, // 获取视频播放地址 getStartVideoSite: function (dom, channelNumber, serialNumber) { var that = this; $.ajax({ type: 'GET', dataType: 'JSON', url: "https://web.byisf.com:18000/GetPlayUrl?deviceCode=" + serialNumber + "&chl=" + channelNumber, success: function (data) { that.realStartVideo(dom, data.data.m3u8) } }) }, // 定时器,定时发送请求,监听是否有新的报警 layerRealtime: function () { var that = this; that.realTimeQuery = setInterval(function () { if (that.historyPoliceId != null) { $.ajax({ url: 'http://61.131.136.25:2082/api/alarm/alarm/selecttx', type: 'POST', dataType: 'JSON', data: { id: that.historyPoliceId }, success: function (data) { if (data.data.length > 0) { layui.use('layer', function () { layui.layer.closeAll(); }) // 清除页面中的其他弹框 if (that.layuiLayer != null) { that.layuiLayer.closeAll(); that.layerIndex = null; } // 清除定时器 window.clearTimeout(that.realTimeQuery); // 清除ul中内容(存储新增的报警信息) $('.real-time-police .layer-realtime-police ul').empty(); // 新增警情的面板 // 检测audio标签父元素的类名 if (!$('.real-time-police .layer-realtime-police .audio').hasClass('open')) { $('.real-time-police .layer-realtime-police .audio').removeClass().addClass('audio open') } // 判断数据长度是否大于1,如果是,则显示上下页切换 if (data.data.length > 1) { $('.real-time-police .layer-realtime-police .bottom-tab').stop().show(); } // audio标签播放 $('.real-time-police .layer-realtime-police .audio audio')[0].play(); // 获取警情列表的dom用来更行警情列表 // 保存返回的数据,方便操作 var result = data.data; var str = ''; // 记录最新的一个id that.historyPoliceId = result[result.length - 1].id; var addvnmList = $('.real-time-police .real-time-select-condition .realtime-district .select-list ul li'); for (var time, t, e, y, h, gt, i = 0; i < result.length; i++) { var li = $("
  • "); var table = $('
    '); var tbody = $(''); result[i].x = Number(result[i].jd); result[i].y = Number(result[i].wd); that.historyPoliceData.unshift(result[i]); // that.createEntitys(that.realTimeAddEntitys, that.entitysData, '实时报警', { // lgtd: result[i].jd, // lttd: result[i].wd, // id: result[i].id, // deviceNumber: result[i].deviceNumber // }, result[i].jd, result[i].wd, '/images/real-time-callPolice.png'); t = result[i].alarmTime.substr(0, 10); e = result[i].alarmTime.substr(11); time = t + ' ' + e; y = result[i].alarmTime.substr(0, 10); h = result[i].alarmTime.substr(11); gt = y + ' ' + h; str += " 报警人: " + result[i].galarmPeople + " 性别: " + (result[i].sex == 1 ? '女' : '男') + " "; str += " 联系电话: " + result[i].phoneNumber + " 事发地址: " + result[i].place + " "; str += " 警情类别: " + result[i].waringType + " 设备编号: " + result[i].deviceNumber + " "; str += " 接警人: " + result[i].alarmPeople + " 接警时间: " + result[i].jjTime + " "; str += " 报警时间: " + time + " 行政区: " + result[i].addvnm + " "; str += " 要求处置时间: 备注: "; str += " 报警内容: " + result[i].content + " "; str += " 功能: "; li.append(table.append(tbody.append(str))); for (key in result[i]) { var str = 'data-' + key; li.find('.generate').attr(str, result[i][key]); li.find('.revoke').attr(str, result[i][key]) } $('.real-time-police .layer-realtime-police ul').append(li); if (i == 0) { li.addClass('on'); } if (addvnmList.length > 0) { for (var j = 0; j < addvnmList.length; j++) { if (result[i].addvnm != $(addvnmList[j]).text()) { if (j == addvnmList.length - 1) { $('.real-time-police .realtime-container .realtime-district .select-list ul').append("
  • " + result[i].addvnm + "
  • "); } } } } else { $('.real-time-police .realtime-container .realtime-district .select-list ul').append("
  • " + result[i].addvnm + "
  • "); } str = ''; layui.use('laydate', function () { var laydate = layui.laydate; laydate.render({ elem: ('#parent_required_disposal_time' + i), type: 'datetime', position: 'fixed', trigger: 'click', //采用click弹出 theme: '#3278F0', min: that.minDate() }); }) } if (that.clusterLayer != null) { that.clearLayer(); } that.flareClusterLayer(result); that.getStartVideoSite($('.real-time-police .layer-realtime-police-parent video')[0], result[0].channelNumber, result[0].serialNumber); $('.real-time-police .layer-realtime-police-parent').stop().show(); } } }) } }, 5000) }, //热力图渲染器,加载热力图 heatmFeaLayers: function () { var layerDefinition = { "geometryType": "esriGeometryPoint", "fields": [{ "num": "num", editable: true, nullable: true, "type": "esriFieldTypeInteger", "alias": "数量" }] }; var featureCollection = { layerDefinition: layerDefinition, featureSet: null }; //创建 FeatureLayer 图层 var featureLayer = new esri.layers.FeatureLayer(featureCollection, { mode: esri.layers.FeatureLayer.MODE_SNAPSHOT, outFields: ["*"], opacity: .8 }); //设置渲染方式 return featureLayer; }, // 获取当前时间,以及昨天现在的时间 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 + ':00', currentEight: currentY + '-' + currentM + '-' + currentD + ' 00:00:00', tomorrow: tomorrowY + '-' + tomorrowM + '-' + tomorrowD + ' ' + tomorrowH + ':' + tomorrowDd + ':00', month: currentM + currentD }; }, // 获取本周的时间 getThisWeekTime: function () { // 当前时间 var timestamp = Date.parse(new Date()); var serverDate = new Date(timestamp); // 本周周一的时间 var mondayTime = timestamp - ((serverDate.getDay() - 1) * 24 * 60 * 60 * 1000) var mondayData = new Date(mondayTime); //年 var mondayY = mondayData.getFullYear(); //月 var mondayM = (mondayData.getMonth() + 1 < 10 ? '0' + (mondayData.getMonth() + 1) : mondayData.getMonth() + 1); //日 var mondayD = mondayData.getDate() < 10 ? '0' + mondayData.getDate() : mondayData.getDate(); // 当前时间 var currentData = new Date(timestamp); //年 var currentY = currentData.getFullYear(); //月 var currentM = (currentData.getMonth() + 1 < 10 ? '0' + (currentData.getMonth() + 1) : currentData.getMonth() + 1); //日 var currentD = currentData.getDate() < 10 ? '0' + currentData.getDate() : currentData.getDate(); //时 var currenH = currentData.getHours() < 10 ? '0' + currentData.getHours() : currentData.getHours(); //分 var currenM = currentData.getMinutes() < 10 ? '0' + currentData.getMinutes() : currentData.getMinutes(); return { week: { beginTime: mondayY + '-' + mondayM + '-' + mondayD + ' 00:00:00', endTime: currentY + '-' + currentM + '-' + currentD + ' ' + currenH + ':' + currenM + ':00', }, month: { beginTime: mondayY + '-' + mondayM + '-01 00:00:00', endTime: currentY + '-' + currentM + '-' + currentD + ' ' + currenH + ':' + currenM + ':00', }, year: { beginTime: mondayY + '-01-01 00:00:00', endTime: currentY + '-' + currentM + '-' + currentD + ' ' + currenH + ':' + currenM + ':00', } } }, // 获取警情信息列表 getRealTimePoliceTable: function (addvcd, waringType, beginTime, endTime) { var that = this; that.updateRealTable.reload({ where: { //设定异步数据接口的额外参数,任意设 jtype: '', addvcd: addvcd, waringType: waringType, beginTime: beginTime, endTime: endTime } , page: { curr: 1 //重新从第 1 页开始 } }); }, // 创建实体图层 createEntitys: function (entitys, entityContent, name, item, lgtd, lttd, outlineColors) { var symbol = new esri.symbol.PictureMarkerSymbol(outlineColors, 16, 16); symbol.name = name; var pt = new Point(lgtd, lttd, new SpatialReference({ wkid: 4326 })); pt.entityData = item; var graphic = new esri.Graphic(pt, symbol); entitys.add(graphic); entityContent.push(item); }, clearPoliceDetail: function (id) { var that = this; layui.use('layer', function () { var layer = layui.layer; layer.confirm('确定撤销该警情?', { icon: 3, title: '提示' }, function (index) { $.ajax({ url: 'http://61.131.136.25:2082/api/alarm/alarm/deletejj', type: 'POST', data: { id: id }, success: function (data) { if (data.code == 200) { layer.msg("警情撤销成功", { icon: 1, time: 1000 //2秒关闭(如果不配置,默认是3秒) }, function () { $('.real-time-police .layer-realtime-police-parent').stop().hide(); $('.real-time-police .layer-realtime-police .audio audio')[0].pause(); that.getRealTimePoliceTable(that.realTimeAddvcd, that.realTimeWringType, that.realBeginTime, that.realEndTime) }); } } }) }); }) }, //聚合图层事件 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/real-time-callPolice.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; }, updateJType: function (id, czTime, bz, jjTime) { $.ajax({ url: 'http://61.131.136.25:2082/api/alarm/alarm/updateJtype', type: 'POST', data: { id: id, czTime: czTime, jjTime: jjTime, bz: bz }, success: function (data) { if (data.code == 200) { } } }) }, minDate: function () { var now = new Date(); return now.getFullYear() + "-" + (now.getMonth() + 1) + "-" + now.getDate(); } }); return Widget; });