/* * @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/analysisAndJudgment/template.html", "base/AppEvent", "base/ConfigData", "widgets/analysisAndJudgment/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/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", "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, Graphic, Point, Extent, FeatureSet, HeatmapRenderer, SimpleLineSymbol, SimpleFillSymbol, PictureMarkerSymbol, SimpleMarkerSymbol, SpatialReference, GeometryService, ProjectParameters, GraphicsLayer, LabelLayer, TextSymbol, SimpleRenderer, ClassBreaksRenderer, Geoprocessor, DataFile, webMercatorUtils, Font, ScreenPoint, ImageParameters, geometryEngine ) { var Widget = declare([BaseWidget], { widgetName: "AnalysisAndJudgment", label: "分析研判", templateString: template, _map: null, objThis: null, _siteLayer: new GraphicsLayer(), layuiLayer: null, layuiLadate: null, heatmapfeatureLayer_1: null, tabIndex: 0, // 保留添加实体图层的变量 analysisAddEntitys: null, entitysData: [], constructor: function (options, srcRefNode) { this._map = options.map; objThis = this; this.analysisAddEntitys = new GraphicsLayer({ id: 'analysisAddEntitys' }); this.addOneEntitys = new GraphicsLayer({ id: 'addOneEntitys' }); this.addTwoEntitys = new GraphicsLayer({ id: 'addTwoEntitys' }); this.addThreeEntitys = new GraphicsLayer({ id: 'addThreeEntitys' }); this._map.addLayer(this.analysisAddEntitys); this._map.addLayer(this.addOneEntitys); }, startup: function () { objThis._map.addLayer(objThis._siteLayer); var that = this; // 顶部tab得切换事件 $('.analysis-and-judgment-tab li').click(function () { if (that.tabIndex == $(this).index()) return; if (that.entitysData.length > 0) { that.analysisAddEntitys.clear(); that.entitysData = []; } if (that.heatmapfeatureLayer_1.graphics.length > 0) { that.heatmapfeatureLayer_1.clear(); that.heatmapfeatureLayer_1.setRenderer(); $('.analysis-category input').prop('checked', false); } $(this).addClass('on').siblings().removeClass('on'); var ind = $(this).index(); $($('.analysis-container > div')[ind]).stop().show().siblings().stop().hide(); var overText = $('#policeCategory > div:eq(0)').text().trim() == '全部' ? '' : $('#policeCategory > div:eq(0)').text().trim(); var levelText = $('#policeArea > div:eq(0)').text().trim() == '全部' ? '' : $('#policeArea > div:eq(0)').attr('areaid'); if (ind == 0) { that.getArea($('#policeArea')); that.getPoliceTableAnalysis($($('.analysis-container > div')[ind]).find('.tbody tbody'), $('#analysis_select_time_start').val() + ':00', $('#analysis_select_time_end').val() + ':00', overText, levelText) } else if (ind == 1) { that.getOwnerType($('#ownerCategory')); that.getOwnerDj($('#ownerLevel'), ''); that.getOwnerTable($($('.analysis-container > div')[ind]).find('.tbody tbody'), '', ''); } else if (ind == 2) { that.getEquipmentTable($($('.analysis-container > div')[ind]).find('.tbody tbody'), ''); } that.tabIndex = $(this).index(); }) // 时间查询 $('#policeSelectTime').off('click').click(function () { var times = $(this).prevAll(); layui.use('layer', function () { var layer = layui.layer; // 开始时间 var startTime = $(times[2]).val(); // 结束时间 var endTime = $(times[0]).val(); if (startTime == '') { layer.msg('请选择开始时间!', { icon: 5, time: 2000 //2秒关闭(如果不配置,默认是3秒) }); return; } else { if (endTime == '') { layer.msg('请选择结束时间!', { icon: 5, time: 2000 //2秒关闭(如果不配置,默认是3秒) }); return; } else { var text = $('#policeCategory div:eq(0)').text().trim(); var levelText = $('#policeArea > div:eq(0)').text().trim() == '全部' ? '' : $('#policeArea > div:eq(0)').attr('areaid'); that.getPoliceTableAnalysis($('.analysis-container-police').find('.tbody tbody'), startTime, endTime, text == '全部' ? '' : text, levelText); } } }) }) // 警情列表中的点击事件 $('.analysis-container-police .analysis-table-content .tbody').off('click', 'tr').on('click', 'tr', function () { var id = $(this).attr('term-list'); 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, }); }) }) $('.analysis-container-police .analysis-table-content .tbody').off('click', '.location').on('click', '.location', function (event) { event.stopPropagation(); }) $('.analysis-container-police .analysis-table-content .tbody').off('click', '.location input').on('click', '.location input', 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是缩放级别,可以自定义,数值越大缩放越大 }) // 业主列表中的点击事件 $('.analysis-container-owner .analysis-table-content .tbody').off('click', 'tr').on('click', 'tr', function () { var id = $(this).attr('term-list'); 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, }); }) }) $('.analysis-container-owner .analysis-table-content .tbody').off('click', '.location').on('click', '.location', function (event) { event.stopPropagation(); }) $('.analysis-container-owner .analysis-table-content .tbody').off('click', '.location input').on('click', '.location input', 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是缩放级别,可以自定义,数值越大缩放越大 }) // 设备列表中的点击事件 $('.analysis-container-equipment .analysis-table-content .tbody').off('click', 'tr').on('click', 'tr', function () { var id = $(this).attr('term-listid'); 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, }); }) }) $('.analysis-container-equipment .analysis-table-content .tbody').off('click', '.location').on('click', '.location', function (event) { event.stopPropagation(); }) $('.analysis-container-equipment .analysis-table-content .tbody').off('click', '.location input').on('click', '.location input', 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是缩放级别,可以自定义,数值越大缩放越大 }) // 警情列表中得热力图是否选中事件 $('#policeHeatMap').click(function () { that.checkBoxSelect(this); }) // 业主信息列表中得热力图是否选中事件 $('#ownerHeatMap').click(function () { that.checkBoxSelect(this); }) // 设备信息列表的热力图是否选中事件 $('#equipmentHeatMap').click(function () { that.checkBoxSelect(this); }) // 警情信息中类别移入事件 $('#policeCategory').mouseenter(function () { if ($('#policeCategory .select-list').is(':hidden')) { $('#policeCategory .select-list').stop().slideDown(0); } }) // 警情信息中得类别移出事件 $('#policeCategory').mouseleave(function () { if (!$('#policeCategory .select-list').is(':hidden')) { $('#policeCategory .select-list').stop().slideUp(0); } }) // 警情信息中行政区移入事件 $('#policeArea').mouseenter(function () { if ($('#policeArea .select-list').is(':hidden')) { $('#policeArea .select-list').stop().slideDown(0); } }) // 警情信息中得行政区移出事件 $('#policeArea').mouseleave(function () { if (!$('#policeArea .select-list').is(':hidden')) { $('#policeArea .select-list').stop().slideUp(0); } }) // 业主信息中类别移入事件 $('#ownerCategory').mouseenter(function () { if ($('#ownerCategory .select-list').is(':hidden')) { $('#ownerCategory .select-list').stop().slideDown(0); } }) // 业主信息中得类别移出事件 $('#ownerCategory').mouseleave(function () { if (!$('#ownerCategory .select-list').is(':hidden')) { $('#ownerCategory .select-list').stop().slideUp(0); } }) // 业主信息中的等级移入事件 $('#ownerLevel').mouseenter(function () { if ($('#ownerLevel .select-list').is(':hidden')) { $('#ownerLevel .select-list').stop().slideDown(0); } }) // 业主信息中的等级移出事件 $('#ownerLevel').mouseleave(function () { if (!$('#ownerLevel .select-list').is(':hidden')) { $('#ownerLevel .select-list').stop().slideUp(0); } }) // 设备信息中类别移入事件 $('#equipmentCategory').mouseenter(function () { if ($('#equipmentCategory .select-list').is(':hidden')) { $('#equipmentCategory .select-list').stop().slideDown(0); } }) // 设备信息中得类别移出事件 $('#equipmentCategory').mouseleave(function () { if (!$('#equipmentCategory .select-list').is(':hidden')) { $('#equipmentCategory .select-list').stop().slideUp(0); } }) // 警情信息类,业主信息类,设备信息类别,具体项的点击事件 $('.analysis-container > div .select-list').off('click', 'li').on('click', 'li', function (event) { var text = $(this).text().trim(); $(this).parent().parent().prev().html(text + ''); $(this).parent().parent().stop().slideUp(0); if ($(this).attr('areaid')) { $(this).parent().parent().prev().attr('areaid', $(this).attr('areaid')); } else if ($(this).attr('ownerid')) { $(this).parent().parent().prev().attr('ownerid', $(this).attr('ownerid')); } if (that.tabIndex == 0) { var levelText = $('#policeArea > div:eq(0)').text().trim() == '全部' ? '' : $('#policeArea > div:eq(0)').attr('areaid'); var overText = $('#policeCategory > div:eq(0)').text().trim() == '全部' ? '' : $('#policeCategory > div:eq(0)').text().trim(); if ($(this).attr('areaid')) { that.getPoliceTableAnalysis($('.analysis-container-police').find('.tbody tbody'), $('#analysis_select_time_start').val(), $('#analysis_select_time_end').val(), overText, levelText); } else { that.getPoliceTableAnalysis($('.analysis-container-police').find('.tbody tbody'), $('#analysis_select_time_start').val(), $('#analysis_select_time_end').val(), overText, levelText); } } else if (that.tabIndex == 1) { var categoryText = $('#ownerCategory > div:eq(0)').text().trim() == '全部' ? '' : $('#ownerCategory > div:eq(0)').attr('ownerid'); var levelText = $('#ownerLevel > div:eq(0)').text().trim() == '全部' ? '' : $('#ownerLevel > div:eq(0)').text().trim(); var parentId = $(this).parent().parent().parent().attr('id'); if (parentId == 'ownerCategory') { that.getOwnerDj($('#ownerLevel'), categoryText); that.getOwnerTable($('.analysis-container-owner').find('.tbody tbody'), categoryText, ''); } else { that.getOwnerTable($('.analysis-container-owner').find('.tbody tbody'), categoryText, levelText); } } else if (that.tabIndex == 2) { that.getEquipmentTable($('.analysis-container-equipment').find('.tbody tbody'), text == '全部' ? '' : text); } }) }, open: function () { var time = this.getTime(); var that = this; $("#tabcontainer").css("width","360px"); $('#mapcontentClass').addClass('client-max-map'); //追加样式 AppEvent.dispatchAppEvent(AppEvent.APPLICATION_RESIZE, {}); that.tabIndex = 0; $('.analysis-and-judgment-tab li:eq(0)').addClass('on').siblings().removeClass('on'); $($('.analysis-container > div')[0]).stop().show().siblings().stop().hide(); that.heatmapfeatureLayer_1 = that.heatmFeaLayers(); that._map.addLayer(that.heatmapfeatureLayer_1); $('#analysis_select_time_start').val(time.tomorrow); $('#analysis_select_time_end').val(time.current); layui.use('laydate', function () { that.layuiLadate = layui.laydate; //执行一个laydate实例 开始 that.layuiLadate.render({ elem: '#analysis_select_time_start', //指定元素 type: "datetime", format: 'yyyy-MM-dd HH:mm', trigger: 'click' }); // 结束 that.layuiLadate.render({ elem: '#analysis_select_time_end', //指定元素 type: "datetime", format: 'yyyy-MM-dd HH:mm', trigger: 'click' }); }); that.getArea($('#policeArea')); that.getPoliceTableAnalysis($('.analysis-container-police').find('.tbody tbody'), time.tomorrow, time.current, '', ''); that.clickHand(); }, close: function () { $("#tabcontainer").css("width", "66%"); $('#mapcontentClass').removeClass('client-max-map'); //删除样式 this.entitysData = []; this.analysisAddEntitys.clear(); }, // 鼠标点击事件 clickHand: function () { var self = this; self._map.onClick = mapClick; function mapClick(evt) { if (evt.graphic) { var result = evt.graphic.geometry.entityData; var liText = evt.graphic.symbol.name; if (liText == '警情信息') { self.policeDetails(result.id); } else if (liText == '业主信息') { self.ownerDetails(result.id); } else if (liText == '设备信息') { self.equipmentDetails(result.id); } } } }, // 警情详情弹框 /** * * @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, }); }) }, //热力图渲染器,加载热力图 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, tomorrow: tomorrowY + '-' + tomorrowM + '-' + tomorrowD + ' ' + tomorrowH + ':' + tomorrowDd, month: currentM + currentD }; }, getArea: function (dom) { dom.children('.select-list').children('ul').empty(); dom.children('.select-list').children('ul').append($("