/** * Created by JKZL-A on 2017/10/20. */ var indexRelyOn = ['jquery', 'layer', 'vue', 'showTab', 'jsHelper', 'apiServer','hplus']; require(indexRelyOn, function ($, layer, vue, showTab, jsHelper, apiServer) { var map; var carList;//车辆列表 var sortList = [];//车辆排序列表 var searchList;//搜索地址列表 var point;//事发地点 var range=500;//距离范围 var i=0;//记录获取地址次数 //检查是否登录 jsHelper.checkLogin(); jsHelper.setLayerCon(); $(function(){ // 百度地图API功能 initmap(); //设置车辆列表的最大高度 $("#car-list ul").css("max-height",$(window).height()-218); //展开、隐藏车辆列表 $(".dislpay-arrow").on("click",'a',function(){ $(".left").toggle(); if($(this).hasClass("zhankai")){ $(this).removeClass("zhankai"); }else{ $(this).addClass("zhankai"); } }); var options = { onSearchComplete: function(results){ // 判断状态是否正确 if (local.getStatus() == BMAP_STATUS_SUCCESS){ searchList = results; var s = []; for (var i = 0; i < results.getCurrentNumPois(); i ++){ s.push('
  • '+results.getPoi(i).title+''+results.getPoi(i).address+'
  • '); } $("#addr-list ul").html(s.join("")); $("#addr-list").show(); $("#car-back").hide(); $("#car-list").hide(); } } }; var local = new BMap.LocalSearch(map, options); //搜索事故地点 $("#search-button").click(function(){ if (!$.trim($("#sole-input").val())){ layer.msg("请输入事发地点"); } local.search($.trim($("#sole-input").val())); }); //按回车键搜索 $("#sole-input").on("keypress",function(event){ if(event.keyCode == 13) { if (!$.trim($("#sole-input").val())){ layer.msg("请输入事发地点"); } local.search($.trim($("#sole-input").val())); } }); //搜索框输入事件 $('#sole-input').bind('input', function () {//给文本框绑定input事件 if ($('#sole-input').val().trim() != "") { $(".input-clear").show(); }else{ $(".input-clear").hide(); } }); //清空搜索框 $(".input-clear").on('click',function () { formReset(); $("#sole-input").val(""); $("#addr-list").hide(); $("#car-back").hide(); $("#car-list").hide(); $(".input-clear").hide(); point = null; var allOverlay = map.getOverlays(); for (var i = 0; i < allOverlay.length -1; i++){ if(allOverlay[i].getTitle() == "place"){ map.removeOverlay(allOverlay[i]); return false; } } }); //点击搜索地点 $("#addr-list").on("click","li",function () { formReset(); var p = searchList.getPoi($(this).index()); point = p.point; sortCar(); $(".left").hide(); $("#car-back span").html("返回“"+$('#sole-input').val()+"”的搜索结果"); $(".weizhi-bg .item").html(p.title+"("+p.address+")"); $("#addr-list").hide(); $("#car-back").show(); $("#car-list").show(); setTimeout(function () { map.centerAndZoom(point, 14); var myIcon = new BMap.Icon("../images/biaoji_yixuan_icon.png", new BMap.Size(20,32)); var marker = new BMap.Marker(p.point,{icon:myIcon});// 创建标注 marker.setTitle("place"); var infoWindow = new BMap.InfoWindow($(".weizhi-bg .item").html()); marker.addEventListener("click", function(){ this.openInfoWindow(infoWindow); }); map.addOverlay(marker);// 将标注添加到地图中 }, 500); }); //返回 $("#car-back").on("click",function () { $("#addr-list").show(); $("#car-back").hide(); $("#car-list").hide(); point = null; var allOverlay = map.getOverlays(); for (var i = 0; i < allOverlay.length -1; i++){ if(allOverlay[i].getTitle() == "place"){ map.removeOverlay(allOverlay[i]); return false; } } }); $("#car-list").on("click",".btn-primary",function () { var car = sortList[$(this).parents("li").index()].car; $("#carId").val(car.id); $("#dispatchHospital").val(car.orgName); $("#deliverAddress").val(car.initAddress); $("#callAddress").val($(".weizhi-bg .item").html()); $("#myModal").modal("show"); }); //保存出勤任务 $("#save").on("click",function () { var param = new Object(); param.carId =$("#carId").val(); param.dispatchHospital =$("#dispatchHospital").val(); param.callAddress =$("#callAddress").val(); param.alarmTel =$("#alarmTel").val().trim(); param.chiefComplaint =$("#chiefComplaint").val().trim(); param.patientNum =$("#patientNum").val().trim(); param.patientGender =$("#patientGender").val().trim(); param.disease =$("#disease").val().trim(); param.deliverAddress =$("#deliverAddress").val().trim(); param.remark =$("#remark").val().trim(); param.longitude = point.lng; param.latitude = point.lat; if (!$("#alarmTel").val().trim()){ layer.msg("请输入接警电话"); return; } if (!$("#chiefComplaint").val().trim()){ layer.msg("请输入主诉"); return; } if (!$("#patientNum").val().trim()){ layer.msg("请输入患者人数"); return; } apiServer.attendanceSave({ data:{ attendance:JSON.stringify(param) } }).then(function (res) { if (res.successFlg) { //point=null; ambulanceSearch(); $("#myModal").modal("hide"); layer.msg("保存成功"); }else{ layer.msg(res.errorMsg); } }); }); //定位车辆 $("#car").on("click",".dingwei",function () { map.centerAndZoom(new BMap.Point($(this).parents("li").attr("lng"), $(this).parents("li").attr("lat")), 14); var allOverlay = map.getOverlays(); for (var i = 0; i < allOverlay.length -1; i++){ if(allOverlay[i].getTitle() == $(this).parents("li").attr("data-id")){ allOverlay[i].dispatchEvent("click"); } } }); //定位车辆 $("#car-list").on("click",".dingwei",function () { map.centerAndZoom(new BMap.Point($(this).parents("li").attr("lng"), $(this).parents("li").attr("lat")), 14); var allOverlay = map.getOverlays(); for (var i = 0; i < allOverlay.length -1; i++){ if(allOverlay[i].getTitle() == $(this).parents("li").attr("data-id")){ allOverlay[i].dispatchEvent("click"); } } }); //定位事发地点 $(".weizhi-bg ").on("click",".dingwei",function (e) { e.stopPropagation(); map.centerAndZoom(point, 14); var allOverlay = map.getOverlays(); for (var i = 0; i < allOverlay.length -1; i++){ if(allOverlay[i].getTitle() == "place"){ allOverlay[i].dispatchEvent("click"); } } $(".left").hide(); }); $(".query-attendance").on("click",function () { layer.open({ type: 2, area: ['1000px', $(window).height()-100+'px'], fix: false, //不固定 maxmin: false, shadeClose: false, shade:0.4, title: "急救查询", content: "search.html" }); }) }); //初始化地图 function initmap() { map = new BMap.Map("map"); // 创建Map实例 map.centerAndZoom(new BMap.Point(117.950, 28.463), 14); map.addControl(new BMap.ScaleControl()); map.enableScrollWheelZoom(true); map.setCurrentCity("上饶"); map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放 ambulanceSearch(); //定时刷新5秒一次 setInterval(function () { ambulanceSearch(); },5000); } //获取车辆列表 function ambulanceSearch() { apiServer.ambulanceSearch({ data:{ page: 1, size: 100, sorts: "+status" } }).then(function (res) { if (res.successFlg) { var html = []; var person = []; carList = res.detailModelList; if(res.detailModelList&&res.detailModelList.length>0){ $.each(res.detailModelList,function (id,item) { html.push('
  • '); html.push('
    '); html.push(' '); html.push('
    '); html.push('

    '+item.car.id+'

    '); html.push('

    '); html.push(' 随车手机'); html.push(' '+item.car.phone+''); html.push('

    '); html.push('

    '); html.push(' 归属地点'); html.push(' '+item.car.initAddress+''); html.push('

    '); html.push('

    '); html.push(' 状态'); if (item.car.status=="wait"){ html.push(' 待命'); }else if (item.car.status=="onWay"||item.car.status=="arrival"){ html.push(' 出勤'); }else if (item.car.status=="back"){ html.push(' 返回'); }else { html.push(' 异常'); } html.push('

    '); html.push('
    '); html.push('
    '); html.push('
    '); html.push(' 所在位置:'); html.push(' '); html.push(' 定位'); html.push('
    '); html.push('
  • '); //值班人员列表 if (item.car.dutyList&&item.car.dutyList.length>0){ $.each(item.car.dutyList,function (id1,item1) { person.push('
  • '); person.push('
    '); person.push(''); person.push('
    '); person.push('

    '+item1.dutyName+'('+item1.dutyRole+')

    '); person.push('

    '); person.push('联系方式'); person.push(''+item1.dutyPhone+''); person.push('

    '); person.push('

    '); person.push('值班车辆'); person.push(''+item.car.id+''); person.push('

    '); person.push('

    '); person.push('状态'); if (item.car.status=="wait"){ person.push(' 待命'); }else if (item.car.status=="onWay"||item.car.status=="arrival"){ person.push(' 出勤'); }else if (item.car.status=="back"){ person.push(' 返回'); }else { person.push(' 异常'); } person.push('

    '); person.push('
    '); person.push('
    '); person.push('
  • '); }); } }); $("#car").html(html.join("")); $("#person").html(person.join("")); getPosition(); } } else { layer.msg(res.errorMsg); } }); } //获取实时经纬度 function getPosition() { i = 0; map.clearOverlays(); $.ajax({ url:'http://yingyan.baidu.com/api/v3/entity/search?ak=1Gi8rVhlLxpYHeFoIw3AoZWdTcPzWass&service_id=153674', dataType:'jsonp', processData: false, type:'get', success:function(data){ if (data.status=='0'){ if (data.entities&&data.entities.length>0){ $.each(data.entities,function (id,item) { var html = []; var baiduPoint = new BMap.Point(item.latest_location.longitude, item.latest_location.latitude); if (checkPhone(item.entity_name)){//判断是车辆还是随车手机 var myIcon = new BMap.Icon("../images/biaoji_icon.png", new BMap.Size(20,32)); var car = getByPhone(item.entity_name); if(!car){ return; } var marker = new BMap.Marker(baiduPoint,{icon:myIcon}); // 创建标注 marker.setTop(true); map.addOverlay(marker); // 将标注添加到地图中 var infoWindow = new BMap.InfoWindow("随车手机
    所属车辆:"+car.id); marker.addEventListener("click", function(){ this.openInfoWindow(infoWindow); }); }else{ var car = getByEntityName(item.entity_name); var img="../images/che_daiming_img.png"; html.push('
    '); html.push('
    '); html.push(''); html.push('
    '); if (car.status=="wait"){ html.push('

    '+car.id+'待命

    '); img="../images/che_daiming_img.png"; }else if (car.status=="onWay"||car.status=="arrival"){ html.push('

    '+car.id+'出勤

    '); img="../images/che_chuqing_img.png"; }else if (car.status=="back"){ html.push('

    '+car.id+'返回

    '); img="../images/che_fanhui_img.png"; }else { html.push('

    '+car.id+'异常

    '); } html.push('

    '); html.push('随车手机:'); html.push(''+car.phone+''); html.push('

    '); html.push('

    '); html.push('归属地点:'); html.push(''+car.initAddress+''); html.push('

    '); html.push('
    '); html.push('
    '); if (car.dutyList&&car.dutyList.length>0) { $.each(car.dutyList, function (id1, item1) { if ((id1+1)%2==0){ html.push('
    '); }else{ html.push('
    '); } html.push(''); html.push('
    '); html.push('

    '); html.push(''+item1.dutyRole+':'); html.push(''+item1.dutyName+''); html.push('

    '); html.push('

    '); html.push('联系方式:'); html.push(''+item1.dutyPhone+''); html.push('

    '); html.push('
    '); html.push('
    '); }); } html.push('
    '); html.push('
    '); var myIcon = new BMap.Icon(img, new BMap.Size(80,40)); var marker = new BMap.Marker(baiduPoint,{icon:myIcon}); // 创建标注 marker.setTitle(car.id); map.addOverlay(marker); // 将标注添加到地图中 var infoWindow = new BMap.InfoWindow(html.join(""),{width:320}); marker.addEventListener("click", function(){ this.openInfoWindow(infoWindow); }); if (car.status=="onWay"&&car.attendance){ if (parseInt(map.getDistance(baiduPoint,new BMap.Point(car.attendance.longitude,car.attendance.latitude))) <= range){ updateStatus(car.id,"1"); } }else if (car.status=="arrival"&&car.attendance){ if (parseInt(map.getDistance(baiduPoint,new BMap.Point(car.attendance.longitude,car.attendance.latitude))) > range){ updateStatus(car.id,"2"); } }else if (car.status == "back"){ if (parseInt(map.getDistance(baiduPoint,new BMap.Point(car.initLongitude,car.initLatitude))) <= range){ updateStatus(car.id,"3"); } } getAddress(item.latest_location.longitude,item.latest_location.latitude,item.entity_name); } }); } if(point){ map.centerAndZoom(point, 14); var myIcon = new BMap.Icon("../images/biaoji_yixuan_icon.png", new BMap.Size(20,32)); var marker = new BMap.Marker(point,{icon:myIcon});// 创建标注 marker.setTitle("place"); var infoWindow = new BMap.InfoWindow($(".weizhi-bg .item").html()); marker.addEventListener("click", function(){ this.openInfoWindow(infoWindow); }); map.addOverlay(marker);// 将标注添加到地图中 } }else{ layer.msg(data.message); } }, error:function(XMLHttpRequest, textStatus, errorThrown) { layer.msg('获取实时位置失败'); } }); } //通过经纬度获取实时位置 function getAddress(lng,lat,entityName){ var url = "http://api.map.baidu.com/geocoder/v2/?ak=1Gi8rVhlLxpYHeFoIw3AoZWdTcPzWass" + "&callback=renderReverse" + "&location=" + lat + "," + lng + "&output=json" + "&pois=1"; $.ajax({ type: "GET", dataType: "jsonp", url: url, success: function (json) { if (json == null || typeof (json) == "undefined") { return; } if (json.status != "0") { return; } var district = json.result.addressComponent.district; $("#car li[entity-name="+entityName+"]").find(".position").html(district+json.result.pois[0].name); $("#car li[entity-name="+entityName+"]").attr("lng",lng); $("#car li[entity-name="+entityName+"]").attr("lat",lat); if(carList&&carList.length>0){ $.each(carList,function (id,item) { if(item.car.entityName==entityName){ item.car.position=district+json.result.pois[0].name; item.car.lng = lng; item.car.lat = lat; i++; } }); } if (i == carList.length){//实际地址获取完成之后获取车辆排序 sortCar(); } }, error: function (XMLHttpRequest, textStatus, errorThrown) { layer.msg("地址位置获取失败"); } }); } //车辆排序列表 function sortCar(){ getDistance(); if(sortList&&sortList.length>0){ var html = []; $.each(sortList,function (id,item) { html.push('
  • '); html.push('
    '); html.push(' '); html.push('
    '); html.push('

    '+item.car.id+'' + '距离:'+changeDistance(item.car.distance)+'

    '); html.push('

    '); html.push(' 随车手机'); html.push(' '+item.car.phone+''); html.push('

    '); html.push('

    '); html.push(' 归属片区'); html.push(' '+item.car.district+''); html.push('

    '); html.push('

    '); html.push(' 状态'); if (item.car.status=="wait"){ html.push(' 待命'); }else if (item.car.status=="onWay"||item.car.status=="arrival"){ html.push(' 出勤'); }else if (item.car.status=="back"){ html.push(' 返回'); }else { html.push(' 异常'); } html.push('

    '); if (item.car.status=="wait"){ html.push(''); } html.push('
    '); html.push('
    '); html.push('
    '); html.push(' 所在位置:'); html.push(' '+item.car.position+''); html.push(' 定位'); html.push('
    '); html.push('
  • '); }); $("#car-list ul").html(html.join("")); } } //更改状态 function updateStatus(carId,status){ apiServer.attendanceUpdate({ data:{ carId: carId, status: status } }).then(function (res) { if (res.successFlg) { if (status == "1"){ layer.msg(carId+"已经到达事发地点"); }else if (status == "2"){ layer.msg(carId+"已经离开事发地点"); }else if (status == "3"){ layer.msg(carId+"已经返回归属地点"); } }else { layer.msg(res.errorMsg); } }); } //计算距离 function getDistance(){ sortList = []; if(carList&&carList.length>0){ $.each(carList,function (id,item) { var pointA = new BMap.Point(item.car.lng,item.car.lat); var distance = parseInt(map.getDistance(pointA,point)); item.car.distance = distance; sortList.push(item); // if(distance<1000){ // item.car.distance = distance+"m"; // }else{ // item.car.distance = toDecimal(distance/1000)+"km"; // } }); } sortList.sort(function(a,b){ var s1=0 var s2=0; if (a.car.status=="wait"){ s1 = 0; }else if (a.car.status=="onWay"||a.car.status=="arrival"){ s1 = 1; }else if (a.car.status=="back"){ s1 = 2; }else { s1 = 3; } if (b.car.status=="wait"){ s2 = 0; }else if (b.car.status=="onWay"||b.car.status=="arrival"){ s2 = 1; }else if (b.car.status=="back"){ s2 = 2; }else { s2 = 3; } if (s1 == s2){ return a.car.distance-b.car.distance; }else{ return s1-s2; } }); } function formReset(){ $("#carId").val(""); $("#dispatchHospital").val(""); $("#callAddress").val(""); $("#alarmTel").val(""); $("#chiefComplaint").val(""); $("#patientNum").val(""); $("#patientGender").val(""); $("#disease").val(""); $("#deliverAddress").val(""); $("#remark").val(""); } //根据entity_name获取车辆 function getByEntityName(entityName){ var car = null; if (carList&&carList.length>0){ $.each(carList,function (id,item) { if (item.car.entityName == entityName){ car = item.car; } }); } return car; } //根据随车手机获取车辆 function getByPhone(phone){ var car = null; if (carList&&carList.length>0){ $.each(carList,function (id,item) { if (item.car.phone == phone){ car = item.car; } }); } return car; } function checkPhone (phone){ var reg= /(^1[3|4|5|7|8][0-9]{9}$)/; return reg.test(phone); } function toDecimal(x) { var f = parseFloat(x); if (isNaN(f)) { return; } f = Math.round(x*10)/10; return f; } function changeDistance(distance){ var i= parseInt(distance); if(i<1000){ return i+"m"; }else{ return toDecimal(i/1000)+"km"; } } //公共类 window._apiServer = apiServer; window._SHOWTAB = showTab; });