/** * Created by lenovo on 2016/4/13. */ //定义全局变量,缓存组织结构 var TaskGd = function () { var map = null; var mouseTool = null; var taskMarkers = ""; var drawOverlays = new Array(); var drawTaskOverlays = new Array(); var drawEventOverlays = []; var taskLists; var taskDetailLists = new Array(); var eventBeanList = []; var viewPoints = []; var markerData = []; var hadRequest = false; var viewMarkers = []; //视域范围内的点 var path = []; //绘制的区域的顶点 var style = [{ url: $('#context').val() + '/images/drop/0.png', // 蓝色图标地址 anchor: new AMap.Pixel(15, 20), // 图标显示位置偏移量,基准点为图标左上角 size: new AMap.Size(15, 20) // 图标大小 }, { url: $('#context').val() + '/images/drop/1.png', // 橙色图标地址 anchor: new AMap.Pixel(15, 20), // 图标显示位置偏移量,基准点为图标左上角 size: new AMap.Size(15, 20) // 图标大小 }, { url: $('#context').val() + '/images/drop/2.png', // 红色图标地址 anchor: new AMap.Pixel(15, 20), // 图标显示位置偏移量,基准点为图标左上角 size: new AMap.Size(15, 20) // 图标大小 }, { url: $('#context').val() + '/images/drop/3.png', // 黑色图标地址 anchor: new AMap.Pixel(15, 20), // 图标显示位置偏移量,基准点为图标左上角 size: new AMap.Size(15, 20) // 图标大小 }, { url: $('#context').val() + '/images/drop/4.png', // 粉色图标地址 anchor: new AMap.Pixel(15, 20), // 图标显示位置偏移量,基准点为图标左上角 size: new AMap.Size(15, 20) // 图标大小 }, { url: $('#context').val() + '/images/drop/5.png', // 黄色图标地址 anchor: new AMap.Pixel(15, 20), // 图标显示位置偏移量,基准点为图标左上角 size: new AMap.Size(15, 20) // 图标大小 }, { url: $('#context').val() + '/images/drop/6.png', // 绿色图标地址 anchor: new AMap.Pixel(15, 20), // 图标显示位置偏移量,基准点为图标左上角 size: new AMap.Size(15, 20) // 图标大小 }]; // 历史工单列表属性 var options = { valueNames: [ 'id', 'patrolerName', 'status', 'deployDate', 'beginDate', 'endDate', 'description', {attr: 'src', name: 'image'} ], item: '<li onclick=""><img class="image" src="" style="float: left;width:20px;height:20px">' + '<a style="float: left;padding:2px 2px" ><p class="patrolerName"></p>' + '<p class="status"></p>' + '<p class="deployDate"></p><p class="time"></p>' + '<p class="beginDate"></p><p class="time"></p>' + '<p class="endDate"></p><p class="time"></p>' + '<p class="description"></p>' + '<p class="id" style="display:none"></p>' + '</a>' + '<div style="clear:both"></div>' + ' </li>', page: 3, plugins: [ ListPagination({}) ] }; // 清除所有绘制的区域图层 function clearAll() { for (var i = 0; i < drawOverlays.length; i++) { map.remove(drawOverlays[i]); } drawOverlays.length = 0; path = []; clearAllTaskPoint(); clearAllEventPoint(); } // 清除工单任务绘制的标识器点 function clearAllTaskPoint() { for (var i = 0; i < drawTaskOverlays.length; i++) { map.remove(drawTaskOverlays[i]); } drawTaskOverlays.length = 0; taskDetailLists.length = 0; } // 清除工单任务绘制的事件点 function clearAllEventPoint() { for (var i = 0; i < drawEventOverlays.length; i++) { map.remove(drawEventOverlays[i]); } // drawEventOverlays.length = 0; drawEventOverlays = []; eventBeanList = []; } // 查询巡检任务列表 function getTaskInfo(patroler) { taskLists.clear(); $.ajax({ type: "get", url: $('#context').val() + "/task/get-task.do", dataType: "json", cache: false, data: { }, success: function (r) { if (r.success) {//请求成功 for (var data in r.data) { var icon = $('#context').val() + "/images/accidents/worker.png"; var id = r.data[data].id; var patrolerName = r.data[data].patrolerName; if (patroler && patrolerName != patroler) { continue; } var description = r.data[data].description; var deployDate = r.data[data].deployDate; var beginDate = r.data[data].beginDate; var endDate = r.data[data].endDate; var status = r.data[data].status; var creatorName = r.data[data].creatorName; var task = new TaskBean(id, icon, patrolerName, description, deployDate, beginDate, endDate, status, creatorName); task.patrolerName = "巡检员:" + task.patrolerName; task.description = "任务描述:" + task.description; task.deployDate = "下发时间:" + task.deployDate; task.beginDate = task.beginDate == null ? "开始时间:" : "开始时间:" + task.beginDate; task.endDate = task.endDate == null ? "完成时间:" : "完成时间:" + task.endDate; task.status = "任务状态:" + task.status; taskLists.add(task); } } else { swal("后台数据请求异常", r.message, "error"); } }, error: function (d) {//请求出错 swal("后台数据请求出错", d.responseText, "error"); } }); } // 展示事件信息 function showEventInfo(e) { var p = e.target; var imgName = p.Tag.imageName; var images = imgName.split(",");//图片路径数组 // alert(images[0]); var msg2 = "<strong>事件描述:</strong>" + p.Tag.description + "</br>" + "<strong>上传时间:</strong>" + p.Tag.createTime + "</br>"; $("#eventImg").children().remove();//avatar1.jpg var imageDivs="<div class='row-fluid'>"; // var imageDivs =""; var width = 100/images.length;//动态展示 $("#viewHelper").children().remove(); for(var i =0;i<images.length;i++){ var url = $('#context').val() + "/images/events/" + images[i]; imageDivs +="<div class='span4'><div class='item'><a class='fancybox-button' data-rel='fancybox-button' href="+url+">" + "<div class='zoom'><img src="+ url + " />" + "<div class='zoom-icon'></div></div></a>" + // "<div class='details'>"+ // "<a href='#' class='icon'><i class='icon-paper-clip'></i></a>"+ // "<a href='#' class='icon'><i class='icon-link'></i></a>"+ // " <a href='#' class='icon'><i class='icon-pencil'></i></a>"+ // "<a href='#' class='icon'><i class='icon-remove'></i></a>"+ // "</div>" + "</div></div>" // imageDivs +="<img height='80%' width='"+width+"%' src="+ url + ">"; } imageDivs+="</div>" $(".fancybox-close").die().live("click",function(){ $('#eventModal').modal('show').css({width: "300px"}); }); $(".zoom-icon").die().live("click",function(){ $('#eventModal').modal('hide'); }); // alert(eval(imageDivs)) $("#eventImg").append(imageDivs) $("#eventDescription").html(msg2); $('#eventModal').modal('show').css({width: "300px"}); // alert("showEventInfo:"+images); // eventImgPage(images.length, 1, images); } // 获取标识器点 function requestMarkers() { if (markerData.length == 0&&!hadRequest) { hadRequest = true; $.ajax({ type: "get", url: $('#context').val() + "/marker/all-point-list.do", dataType: "json", cache: false, success: function (r) { if (r.data) {//请求成功,将获取到的数据加载到地图上 //1.解析返回的结果,.设置全局变量data的值 markerData = [];//清空原来的数据 for (var t = 0; t < r.data.length; t++) { var markerDto = r.data[t]; var emsBean = new EMSBean(markerDto.markerObjectType, markerDto.pipeMaterial, markerDto.pipeDiameter, markerDto.layStyle, markerDto.depth, markerDto.belowType, markerDto.belowDepth, markerDto.belowDiameter, markerDto.belowMaterial, markerDto.road, markerDto.constructTime, markerDto.ownerComp, markerDto.markerObjectId, markerDto.markerId, markerDto.markerType, markerDto.markerDepth, markerDto.creator, markerDto.createTime, markerDto.memo, markerDto.latitude, markerDto.longitude, markerDto.recordType, markerDto.id,markerDto.line,markerDto.area, markerDto.colorType); markerData[t] = emsBean; } //2.增加marker TaskGd.addMarker(markerData); } hadRequest = false; map.off("complete", requestMarkers()); }, error: function (d) {//请求出错 hadRequest = false; map.off("complete", requestMarkers()); } }); } else if(!hadRequest){ TaskGd.addMarker(markerData); } } // 处理鼠标单击事件 function processClickInfo(emsBean){ var msg = ""; if (emsBean.recordType == 1) { msg = msg + "管线种类:" + emsBean.markerObjectType + "<br/>" + "管线直径(mm):" + emsBean.pipeDiameter + "<br/>" + "管线材质:" + emsBean.pipeMaterial + "<br/>" + "埋设方式:" + emsBean.layStyle + "<br/>" + "管线埋深(mm):" + emsBean.depth + "<br/>"; } else if (emsBean.recordType == 2) { msg = msg + "附属物名称:" + emsBean.markerObjectType + "<br/>" + "井深(mm):" + emsBean.depth + "<br/>"; } else if (emsBean.recordType == 3) { msg = msg + "管点特征:" + emsBean.markerObjectType + "<br/>" + "特征点埋深(mm):" + emsBean.depth + "<br/>"; } else { msg = msg + "上层管种类:" + emsBean.markerObjectType + "<br/>" + "上层管埋深(mm):" + emsBean.depth + "<br/>" + "上层管直径(mm):" + emsBean.pipeDiameter + "<br/>" + "上层管材料:" + emsBean.pipeMaterial + "<br/>" + "下层管种类:" + emsBean.belowType + "<br/>" + "下层管埋深(mm):" + emsBean.belowDepth + "<br/>"+ "下层管直径(mm):" + emsBean.belowDiameter + "<br/>" + "下层管材料:" + emsBean.belowMaterial + "<br/>" ; } msg = msg + "所属区域:" + emsBean.area + "<br/>" + "所属线路:" + emsBean.line + "<br/>" + "所属道路:" + emsBean.road + "<br/>" + "建设年代:" + emsBean.constructTime + "<br/>" + "权属单位:" + emsBean.ownerComp + "<br/>" + "标识器ID:" + emsBean.markerId + "<br/>" + "标识器类型:" + emsBean.markerType + "<br/>" + "标识器埋深(mm):" + emsBean.markerDepth + "<br/>" + "安装部门:" + emsBean.creator + "<br/>" + "最后修改时间:"+emsBean.createTime + "<br/>" + "备注:" + emsBean.memo + "<br/>"; return msg; } return { //添加工单 selectMarkerCallBack: function () { //绘制矩形区域: taskMarkers = ""; if (drawOverlays.length == 0) { swal("请先绘制区域", "", "warning"); return; } for (var i = 0; i < path.length; i++) { try { for (var j = 0; j < markerData.length; j++) { var emsBean = markerData[j]; var point = new AMap.LngLat(emsBean.longitude, emsBean.latitude); var isPointInRing = AMap.GeometryUtil.isPointInRing(point, path[i]); if (isPointInRing) { taskMarkers = taskMarkers + emsBean.id + ","; } } } catch (e) { swal("脚本异常", e.message, "error"); } } if (taskMarkers == "") { swal("请选择标识器点!", "", "error"); return; } $('#addTaskModal2').modal('show'); clearAll(); }, //清除 clearCallBack: function () { taskMarkers = ""; clearAll(); }, //上传工单 uploadTaskCallBack: function (patrolerId, description) { $.ajax({ type: "get", url: $('#context').val() + "/task/task-Save.do", dataType: "json", cache: false, data: { markers: taskMarkers, patrolerId: patrolerId, description: description }, success: function (r) { if (r.success) {//请求成功 swal({ title: "请求成功", text: r.message, type: "success", confirmButtonText: "确认" }, function() { TaskGd.updateList(); }); } else { swal("请求失败", r.message, "error"); } }, error: function (d) {//请求出错 swal("请求失败", d.message, "error"); } }); }, // 初始化地图 initMap: function () { map = new AMap.Map("container", { zoom: 13, resizeEnable: true, zooms: [4,18],//设置地图级别范围 }); //声明全局变量 if (!markerData || markerData.length == 0) { markerData = new Array(); } // 鼠标操作工具栏 mouseTool = new AMap.MouseTool(map); mouseTool.on('draw',function(e){ drawOverlays.push(e.obj); path.push(e.obj.getPath()); }); //加载完毕请求标识点信息 map.on("complete", requestMarkers); }, initList: function () { taskLists = new List('worksheets', options); TaskGd.updateList(); //$('.sort').click(); $('#btnSort').trigger("click"); // $('#btnSort').trigger("click"); // $('#btnSort').css("padding", 0); // $('#btnSort').css("padding-left", 10); // $('#btnSort').css("padding-right", 15); $('#btnSort').css("margin-left", 10); TaskGd.bindClickEvent(); $('#selectPatroler3').live('change', function (e) {//下拉列表更改的时候查询数据,更新列表,待优化为查询条件在后台利用 TaskGd.updateList($("#selectPatroler3").val()); }); }, // 绑定任务列表单击事件 bindClickEvent: function () { $('#worksheets ul li').live('click', function (e) { viewPoints = []; if (null == this.getElementsByClassName("id")[0]) { return; } clearAllTaskPoint(); clearAllEventPoint(); var taskId = this.getElementsByClassName("id")[0].innerHTML; var i = 0; //请求任务 $.ajax({ type: "get", url: $('#context').val() + "/task/get-task-markers.do", dataType: "json", async:false, cache: false, data: { taskId: taskId }, success: function (r) { if (r.success) {//请求成功 for (var data in r.data) { var id = r.data[data].id; var markerName = r.data[data].markerIdReal; var latitude = r.data[data].latitude; var longitude = r.data[data].longitude; var finishTime = r.data[data].finishTime == null ? "" : r.data[data].finishTime; var description = r.data[data].description == null ? "" : r.data[data].description; var status = r.data[data].isChecked; var icon = ""; var isChecked = ""; if (status == 0) { icon = $('#context').val() + "/images/point-task.png"; isChecked = "未巡检"; } else { icon = $('#context').val() + "/images/point.png"; isChecked = "已巡检"; } var taskDetailBean = new TaskDetailBean(id, icon, markerName, latitude, longitude, isChecked, finishTime, description); taskDetailLists.push(taskDetailBean); } TaskGd.addTaskDetailMarker(taskDetailLists); if(taskDetailLists.length==0){ alert("未探测到标识器!"); } } else { alert(r.message); } }, error: function (d) {//请求出错 alert(d.message); } }); //请求该任务上报的事件 $.ajax({ type: "get", url: $('#context').val() + "/event/get-event-list.do", dataType: "json", cache: false, async:false, data: { taskId: taskId }, success: function (r) { if (r.success) {//请求成功 for (var data in r.data) { var id = r.data[data].id; var imageName = r.data[data].imageName; var latitude = r.data[data].latitude; var longitude = r.data[data].longitude; var createTime = r.data[data].createTime == null ? "" : r.data[data].createTime; var description = r.data[data].description == null ? "" : r.data[data].description; var status = r.data[data].status; var eventBean = new EventBean(id, imageName, latitude, longitude, description, status, createTime); eventBeanList.push(eventBean); } TaskGd.addEventMarker(eventBeanList); } else { alert(r.message); } }, error: function (d) {//请求出错 alert(d.message); } }); map.setFitView(viewPoints); }); }, /* * 增加报警信息到列表 * */ updateList: function (patroler) { getTaskInfo(patroler); }, // 初始化表单操作 initForm: function () { $("#saveTask2").click(function (e) { //alert(taskMarkers); var patrolerId = $("#selectPatroler2").val(); var description = $("#description2").val(); TaskGd.uploadTaskCallBack(patrolerId, description); $('#addTaskModal2').modal('hide'); $("#description2").val(""); }); }, //获取巡检员列表 initPatrolerArray: function () { $.ajax({ type: "POST", url: $('#context').val() + "/user/get-patroler.do", data: {}, dataType: "json", success: function (r) { //获取面的列表,将下拉列表初始化 if (r.data) { for (var user in r.data) { //alert(r.data[user].id+":"+r.data[user].userName); $("#selectPatroler").append(" <option value=" + r.data[user].id + ">" + r.data[user].userName + "</option>"); $("#selectPatroler2").append(" <option value=" + r.data[user].id + ">" + r.data[user].userName + "</option>"); $("#selectPatroler3").append(" <option value=" + r.data[user].userName + ">" + r.data[user].userName + "</option>"); } $("#selectPatroler").chosen(); $("#selectPatroler2").chosen(); $("#selectPatroler3").chosen(); } }, error: function (d) { //提示错误信息 swal("请求巡检员列表出错", d.responseText, "error"); } }); }, // 绘制区域矩形框 drawRect: function () { mouseTool.rectangle(); }, //取消绘制区域矩形框 moveMap: function () { mouseTool.close(true)//关闭,并清除覆盖物 }, //初始化下拉列表框 initSelect: function () { TaskGd.initPatrolerArray(); }, // 显示标识器点 addMarker: function (data) { var points = []; for (var i = 0; i < data.length; i++) { var point = {}; var lnglat = [data[i].longitude, data[i].latitude]; var name = data[i].markerId; var id = i; var styleIndex = parseInt(data[i].colorType); if (styleIndex < 1 || styleIndex > 6) styleIndex = 0; point.lnglat = lnglat; point.name = name; point.id = id; point.style = styleIndex; points.push(point); //不在地图上显示,纯粹为了调整视窗 var marker = new AMap.Marker({ position: [data[i].longitude, data[i].latitude] }); marker.Tag = data[i]; viewMarkers.push(marker); } var mass = new AMap.MassMarks(points, { zIndex: 5, // 海量点图层叠加的顺序 zooms: [3, 19], // 在指定地图缩放级别范围内展示海量点图层 style: style // 设置样式对象 }); mass.setMap(map); map.setFitView(viewMarkers); mass.on("click", function(e) { var index = parseInt(e.data.id); var emsBean = viewMarkers[index].Tag; var msg = processClickInfo(emsBean); var titleName = ""; var height = 0; if (emsBean.recordType == 1) { titleName = "<div class='info-title'>管线</div>"; height = 100; } else if (emsBean.recordType == 2) { titleName = "<div class='info-title'>管线附属物</div>"; height = 40; } else if (emsBean.recordType == 3) { titleName = "<div class='info-title'>管线特征管点</div>"; height = 40; } else if (emsBean.recordType == 4) { titleName = "<div class='info-title'>交叉穿越点</div>"; height = 160; } height = height + 225; var imgUrl = $('#context').val() + "/images/ems.jpg"; var content = titleName + '<div class="info-content">' + '<img src=' + '"' + imgUrl + '"' + ' />' + msg + '</div>'; var infowindow = new AMap.AdvancedInfoWindow({ content: content, width: 290, //宽度 height: height, panel: "panel", //检索结果面板 enableAutoPan: true //自动平移 }); infowindow.open(map, [e.data.lnglat.lng, e.data.lnglat.lat]); }); }, //增加事件图片的marker addEventMarker: function () { for (var i = 0; i < eventBeanList.length; i++) { var eventMarker = new AMap.Marker({ position: [eventBeanList[i].longitude, eventBeanList[i].latitude], size: new AMap.Size(30, 30), icon: new AMap.Icon({ size: new AMap.Size(38, 38), image: $('#context').val() + "/images/events/red_icon.png" }) }); var msg = "事件描述:" + eventBeanList[i].description + "\r\n" + "上传时间:" + eventBeanList[i].createTime + "\r\n"; eventMarker.setTitle(msg); eventMarker.Tag = eventBeanList[i]; viewPoints.push(eventMarker); eventMarker.on("click", showEventInfo); map.add(eventMarker); // 将标注添加到地图中 drawEventOverlays.push(eventMarker); } }, // 点击任务列表绘制任务对应的标识器点 addTaskDetailMarker: function (data) { for (var i = 0; i < data.length; i++) { var msg = "标识器名称:" + data[i].markerName + "\r\n" + "巡检状态:" + data[i].isChecked + "\r\n" + "巡检时间:" + data[i].finishTime + "\r\n" + "描述:" + data[i].description + "\r\n"; var marker = new AMap.Marker({ position: [data[i].longitude, data[i].latitude], size: new AMap.Size(30, 30), offset: new AMap.Pixel(-15, -30), //相对于基点的偏移位置 icon: data[i].icon }); marker.setTitle(msg); viewPoints.push(marker); drawTaskOverlays.push(marker); map.add(marker); // 将标注添加到地图中 } } }; }(); TaskBean = function (id, icon, patrolerName, description, deployDate, beginDate, endDate, status, creatorName) { this.id = id; this.image = icon; this.patrolerName = patrolerName; this.description = description; this.deployDate = deployDate; this.beginDate = beginDate; this.endDate = endDate; this.status = status; this.creatorName = creatorName; }; TaskDetailBean = function (id, icon, markerName, latitude, longitude, isChecked, finishTime, description) { this.id = id; this.icon = icon; this.markerName = markerName; this.latitude = latitude; this.longitude = longitude; this.isChecked = isChecked; this.finishTime = finishTime; this.description = description; }; EventBean = function (id, imageName, latitude, longitude, description, status, createTime) { this.id = id; this.imageName = imageName; this.latitude = latitude; this.longitude = longitude; this.description = description; this.status = status; this.createTime = createTime; }