hdw
2018-11-02 b6e8fdb6f9bb50d29aeb29aa62b19a75c9a1ef9d
gx_tieta/WebRoot/index.jsp
@@ -39,7 +39,7 @@
   <link rel="stylesheet" href="src/css/layui.css">
   <link rel="stylesheet" href="pages/css/mylayui.css">
   <style type="text/css">
      #map .explain-header:hover {
      .explain-header:hover {
         cursor: pointer;
         background-color: #84ABFA !important;
         color: #D6D1D1
@@ -109,36 +109,45 @@
      <jsp:include page="nav.jsp" flush="true"/>
      <!--导航结束-->
      <div id="content">
         <!-- 地图内容筛选  -->
         <div class="map-info-panel-left">
            <div class="map-info-panel-content">
               <div class="map-info">
                  <span>限制显示区域: </span><span class="k-point red" id="mapVsArea">中国</span>
                  <span class="mr5">机房显示类型:</span><span class="k-point red" id="mapIconStyle">全部</span>
               </div>
               <div class="map-info-detail">
                  <table>
                     <tbody>
                        <tr>
                           <td class="w8em alg-c">机房显示类型:</td>
                           <td>
                              <select name="mapIconStyleSel" id="mapIconStyleSel">
                                 <option>全部</option>
                                 <option>已安装</option>
                                 <option>未安装</option>
                              </select>
                           </td>
                        </tr>
                     </tbody>
                  </table>
                  <div class="map-info-footer alg-r">
                     <button type="button" class="mr10 map-panel-hide" value="确定" id="mapPanelEn">确定</button>
                     <button type="button" class="mr10 map-panel-hide" value="隐藏">隐藏</button>
         <div class="nav-map small">
            <!-- 地图内容筛选  -->
            <div class="map-info-panel-left">
               <div class="map-info-panel-content">
                  <div class="map-info">
                     <span>限制显示区域: </span><span class="k-point red" id="mapVsArea">中国</span>
                     <span class="mr5">机房显示类型:</span><span class="k-point red" id="mapIconStyle">全部</span>
                     <span class="map-info-btn-icon" id="showMapInfoDetail" title="详情"><i class="fa fa-angle-double-down"></i></span>
                  </div>
                  <div class="map-info-detail">
                     <table>
                        <tbody>
                           <tr>
                              <td class="w8em alg-c">限制显示区域:</td>
                              <td>
                                 <select name="mapVsAreaSel" id="mapVsAreaSel">
                                    <option>中国</option>
                                    <option>中国-广西</option>
                                 </select>
                              </td>
                           </tr>
                           <tr>
                              <td class="w8em alg-c">机房显示类型:</td>
                              <td>
                                 <select name="mapIconStyleSel" id="mapIconStyleSel">
                                    <option>全部</option>
                                 </select>
                              </td>
                           </tr>
                        </tbody>
                     </table>
                     <div class="map-info-footer alg-r">
                        <button type="button" class="mr10 map-panel-hide" value="确定" id="mapPanelEn">确定</button>
                        <button type="button" class="mr10 map-panel-hide" value="隐藏">隐藏</button>
                     </div>
                  </div>
               </div>
            </div>
         </div>
         <div class="nav-map small">
            <!-- 电池分布图 -->
            <div class="china-map" id="map">
               <div class="img-change" style="display:none;">
@@ -360,6 +369,7 @@
   <script type="text/javascript" src="pages/js/common.js"></script>
   <script type="text/javascript" src="pages/js/pages/siderbar.js"></script>
   <script type="text/javascript" src="pages/js/pages/index-common.js"></script>
   <script type="text/javascript" src="pages/js/GPS.js"></script>
   <script type="text/javascript" src="js/panel.js"></script>
   <script type="text/javascript" src="js/search.js"></script>
   <script type="text/javascript" src="js/changePinYin.js"></script>
@@ -527,12 +537,16 @@
   });
   
   $(function() {   // 显示和隐藏图标说明
      $('#map').on('click', '.explain-header', function() {
         $('#map .explain-list').fadeToggle();
      $('.nav-map').on('click', '.explain-header', function() {
         $('.explain-list').fadeToggle();
      });
      
      $('#map').on('dblclick', '.explain-header', function() {
         return false;
      });
      $('.nav-map').on('click', '.explain-list input', function() {
         setMapImgStyles();
      });
   });
   
@@ -689,10 +703,10 @@
               
               {
                  text: '返回中心点',
                  callback: function(e) {
                     centerMapByPoint(map);
                  callback: function(e){
                     centerMapByPoint(map); // 根据当前用户设定的位置显示中心点
                  }
               },
               }
            ];
            //console.info(getPermit('taskchange_edit_permit', permits)+"*******");
            if(getPermit('batt_map_edit_permit', permits)) {
@@ -1499,9 +1513,11 @@
      
      changeMapImgDesc(iconExplain, 'normal');
      
      mapEle.prepend(iconExplain);
      mapEle.parent().append(iconExplain);
      // 设置地图图标种类
      setMapImgStyles();
   }
   // 切换地图图标说明
   function changeMapImgDesc(iconExplain, type) {
      iconExplain.find('.explain-list').remove();
@@ -1519,35 +1535,55 @@
   function mapImgDescNormal(iconExplain) {
      // 机房落后
      var iconList = $('<div class="explain-list" style="padding: 4px 6px; border-bottom: 1px slid #ccc; display:block"></div>');
      var icon = $('<img src="'+mapImages.behind+'" style="float:left">');
      var span = $('<span style="line-height: 30px; text-align:center; margin-left: 4px">电池组落后机房</span>');
      iconList.append(icon);
      var input = $('<input type="checkbox" data-img="item-behind" checked="checked">');
      var icon = $('<img src="'+mapImages.behind+'">');
      var span = $('<span>电池组落后机房</span>');
      iconList.append(input);
      iconList.append(span);
      iconList.append(icon);
      iconExplain.append(iconList);
      
      // 机房告警
      var iconList = $('<div class="explain-list" style="padding: 4px 6px; border-bottom: 1px slid #ccc; display:block"></div>');
      var icon = $('<img src="'+mapImages.warn+'" style="float:left;">');
      var span = $('<span style="line-height: 30px; text-align:center; margin-left: 4px">电池组告警机房</span>');
      iconList.append(icon);
      var input = $('<input type="checkbox" data-img="item-warn" checked="checked">');
      var icon = $('<img src="'+mapImages.warn+'">');
      var span = $('<span>电池组告警机房</span>');
      iconList.append(input);
      iconList.append(span);
      iconList.append(icon);
      iconList.append('<div class="clear"></div>');
      iconExplain.append(iconList);
      
      // 机房延时
      var iconList = $('<div class="explain-list" style="padding: 4px 6px; border-bottom: 1px slid #ccc; display:block"></div>');
      var icon = $('<img src="'+mapImages.timeout+'" style="float:left">');
      var span = $('<span style="line-height: 30px; text-align:center; margin-left: 4px">电池组放电延时机房</span>');
      iconList.append(icon);
      var input = $('<input type="checkbox" data-img="item-timeout" checked="checked">');
      var icon = $('<img src="'+mapImages.timeout+'">');
      var span = $('<span>电池组放电延时机房</span>');
      iconList.append(input);
      iconList.append(span);
      iconList.append(icon);
      iconExplain.append(iconList);
      // 停电机房
      var iconList = $('<div class="explain-list" style="padding: 4px 6px; border-bottom: 1px slid #ccc; display:block"></div>');
      var input = $('<input type="checkbox" data-img="item-poff" checked="checked">');
      var icon = $('<img src="'+mapImages.powercut+'">');
      var span = $('<span>机房停电</span>');
      iconList.append(input);
      iconList.append(span);
      iconList.append(icon);
      iconExplain.append(iconList);
      
      // 正常机房
      var iconList = $('<div class="explain-list" style="padding: 4px 6px; border-bottom: 1px slid #ccc; display:block"></div>');
      var icon = $('<img src="'+mapImages.normal+'" style="float:left">');
      var span = $('<span style="line-height: 30px; text-align:center; margin-left: 4px">正常机房</span>');
      iconList.append(icon);
      var input = $('<input type="checkbox" data-img="item-normal" checked="checked">');
      var icon = $('<img src="'+mapImages.normal+'">');
      var span = $('<span>正常机房</span>');
      iconList.append(input);
      iconList.append(span);
      iconList.append(icon);
      iconExplain.append(iconList);
   }
   
@@ -1557,16 +1593,16 @@
      var iconList = $('<div class="explain-list" style="padding: 4px 6px; border-bottom: 1px slid #ccc; display:block"></div>');
      var icon = $('<img src="'+mapImages.nuclear+'" style="float:left">');
      var span = $('<span style="line-height: 30px; text-align:center; margin-left: 4px">核容/停电放电</span>');
      iconList.append(icon);
      iconList.append(span);
      iconList.append(icon);
      iconExplain.append(iconList);
      
      // 告警
      var iconList = $('<div class="explain-list" style="padding: 4px 6px; border-bottom: 1px slid #ccc; display:block"></div>');
      var icon = $('<img src="'+mapImages.devalarm+'" style="float:left;">');
      var span = $('<span style="line-height: 30px; text-align:center; margin-left: 4px">61850设备告警</span>');
      iconList.append(icon);
      iconList.append(span);
      iconList.append(icon);
      iconList.append('<div class="clear"></div>');
      iconExplain.append(iconList);
      
@@ -1574,16 +1610,16 @@
      var iconList = $('<div class="explain-list" style="padding: 4px 6px; border-bottom: 1px slid #ccc; display:block"></div>');
      var icon = $('<img src="'+mapImages.precharge+'" style="float:left">');
      var span = $('<span style="line-height: 30px; text-align:center; margin-left: 4px">61850预充电</span>');
      iconList.append(icon);
      iconList.append(span);
      iconList.append(icon);
      iconExplain.append(iconList);
      
      // 在线浮充
      var iconList = $('<div class="explain-list" style="padding: 4px 6px; border-bottom: 1px slid #ccc; display:block"></div>');
      var icon = $('<img src="'+mapImages.float+'" style="float:left">');
      var span = $('<span style="line-height: 30px; text-align:center; margin-left: 4px">61850在线浮充</span>');
      iconList.append(icon);
      iconList.append(span);
      iconList.append(icon);
      iconExplain.append(iconList);
   }
   
@@ -1636,14 +1672,13 @@
   function createMapDot(map, dotList, isTop) {
      // 清空覆盖物和对应的mk点
      mkList = [];
      // 遍历查询内容生成对应的图标
      for(var i = 0; i < dotList.length; i++) {
      for(var i = 0; i<dotList.length; i++) {
         var isShow = checkMapImgStyle(dotList[i].msg);
         var dotIcon = new BMap.Icon(getMapStateImg(mapImages, dotList[i].msg), new BMap.Size(36, 30));   // 设置图片
         var pt = new BMap.Point(dotList[i].lng, dotList[i].lat);
         
         var mk = new BMap.Marker(pt, {icon: dotIcon});   // 定义marker点
         // 删除指定的点(该点会在本函数后面重新创建)
         deletePoint(map, dotList[i].title);
         
@@ -1675,14 +1710,16 @@
         
         mkList.push(mk);
         // 向地图添加覆盖物
         map.addOverlay(mk);
         if(isShow) {
            map.addOverlay(mk);
         }
      }
   }
   
   // 删除地图上的指定点
   function deletePoint(map, msg){
      var allOverlay = map.getOverlays();
      for (var i = 0; i < allOverlay.length -1; i++){
      for (var i = 0; i < allOverlay.length; i++){
         try{
            if(allOverlay[i].getLabel().content == msg){
               map.removeOverlay(allOverlay[i]);
@@ -1695,6 +1732,35 @@
      }
   }
   
   // 获取地图需要显示图标的类型
   var magImgStyles = [];
   function setMapImgStyles() {
      var ipts = $('#mapImgDesc .explain-list input');
      magImgStyles = [];
      ipts.each(function(i) {
         var imgStyle = $(this).data('img');
         if($(this).is(':checked')) {
            magImgStyles.push(imgStyle);
         }
      });
      magImgStyles.push('');
      // 根据当前内容更新地图图标
      searchStation();
   }
   // 检测当前图标是否符合
   function checkMapImgStyle(imgStyle) {
      var isShow = false;
      for(var i=0; i<magImgStyles.length; i++) {
         if(magImgStyles[i] == imgStyle) {
            isShow = true;
            break;
         }
      }
      return isShow;
   }
   // 创建告警点
   function createWarnDot(map, warnDotList) {
      for(var i = 0; i < warnDotList.length; i++) {
@@ -1933,6 +1999,8 @@
   function getAddHomeInfo() {
      var lng = $('.add-panel .lng').text();                        // 获取经度
      var lat = $('.add-panel .lat').text();                        // 获取纬度
      var wgsPoint = GPS.bd2wgs(lat, lng);                        // 百度地图坐标转化为GPS
      var addr = $('.add-panel .addr').text();                     // 获取地址
      var homeName = $('.add-panel select option:selected').text();      // 机房名称
      var homeId = $('.add-panel select option:selected').val();         // 机房ID
@@ -1941,8 +2009,8 @@
            StationId:homeId,         //机房编号
            StationName:homeName,      //机房名称
            Address:addr,            //机房物理信息
            longitude:lng,            // 经度
            latitude:lat,            // 纬度
            longitude: wgsPoint.lon,            // 经度
            latitude: wgsPoint.lat,            // 纬度
            information:"",            //备注
         };
         var json = JSON.stringify(temp);
@@ -2025,6 +2093,16 @@
      // 根据可视范围显示坐标点
      var dots = [];
      var currMarkers = {};
      // 初始化
      function init() {
         dots = [];
         currMarkers = {};
      }
      // init函数绑定到GLOBAL.BMap下
      gl.BMap.init = init;
      // 查询当前范围内容的图标
      function queryInRect(map, callback) {
         var cp = map.getBounds(); // 返回map可视区域,以地理坐标表示  
@@ -2150,16 +2228,15 @@
      pageNum: 0,
      pageNew: true
   };
   //查询机房
   function searchStation(setRect){
      var temp = createSearchParam();
      var json = JSON.stringify(temp);
      var bmap = GLOBAL.BMap;      // BMap的命名空间
      var bmap_s = bmap.Search;   // Search的命名空间
      commonDot = new Array();
      warnDotList = new Array();
      dischargeDotList = [];
      behindCellList = [];
      var init = bmap.init;
      //init();
      // 查询后台
      $.ajax({    
           type: "post",             
           //url: "BattMap_informationAction!searchAll",            
@@ -2178,21 +2255,22 @@
               // 设置分页信息
               mapPages.pageAll = list.length;
               setMapPages();
               //console.log(123);
               // 遍历查询结果
               for(var i=0;i<list.length;i++){
                  var _list = list[i];
                  allStation.push(formatAllStation(_list));
               }
               // 显示区域的图标
               bmap.setDots(allStation);
               bmap.queryInRect(map, createMapDot);
               updateStation();
               // 是否第一次执行
               if(setRect) {
                  map.addEventListener("moveend", bmap.queryInRect.bind({},map, createMapDot));  // 拖动
                  map.addEventListener("zoomend", bmap.queryInRect.bind({},map, createMapDot)); // 缩放
                  updateStation();
               }
            }
           }             
@@ -2202,9 +2280,11 @@
   // 格式化查询结果
   function formatAllStation(list) {
      var obj = new Object();
      // GPS坐标转化为百度坐标
      var point = GPS.wgs2bd(list.latitude, list.longitude);
      // 构造结果集
      obj.lng = list.longitude;
      obj.lat = list.latitude;
      obj.lng = point.lon;
      obj.lat = point.lat;
      obj.title = list.StationName;
      obj.sId = list.StationId;
      obj.fbsId = list.FBSDeviceId;
@@ -2245,9 +2325,7 @@
                 }
              }
              
              //console.log(updateStationData);
              createMapDot(map, updateStationData, true);
              // 更新分页信息
              mapPages.pageCurr++;
              if(mapPages.pageCurr>mapPages.pageNum || updateStationData.length<mapPages.pageSize) {
@@ -2256,6 +2334,7 @@
              }
              
              setTimeout(updateStation, 4000);
           }
      });
   }
@@ -2264,9 +2343,12 @@
   function formatUpdateStation(list) {
      var obj = {};
      var data = list.data;
      //console.log(list);
      // GPS坐标转化为百度坐标
      var point = GPS.wgs2bd(data.latitude, data.longitude);
      // 构造结果集
      obj.lng = data.longitude;
      obj.lat = data.latitude;
      obj.lng = point.lon;
      obj.lat = point.lat;
      obj.title = data.StationName;
      obj.sId = data.StationId;
      obj.fbsId = data.FBSDeviceId;
@@ -2274,6 +2356,19 @@
      obj.msg = list.msg;
      obj.num = list.num;
      return obj;
   }
   // 根据allStation的值去更新内容
   function updateMapByAllStation() {
      var bmap = GLOBAL.BMap;      // BMap的命名空间
      var init = bmap.init; // 初始化内容
      // 初始化地图内容
      init();
      // 显示区域的图标
      bmap.setDots(allStation);
      bmap.queryInRect(map, createMapDot);
   }
   
   // 查询机房面板信息
@@ -2298,7 +2393,7 @@
            var rs = JSON.parse(result.result);
            if(rs.length != 0) {
               var data = rs[0];
               console.info(data);
               //console.info(data);
               var content = '<div style="padding:6px;"><span>蓄电池组告警数目:</span>'+data.code+'<a style="margin-left: 14px" href="javascript:loadToWarnPage();">详情>></a></div>'+
                     '<div style="padding:6px;"><span>蓄电池组落后数目:</span>'+data.sum+'<a style="margin-left: 14px" href="javascript:loadToBehindPage();">详情>></a></div>'+
                     '<div style="padding:6px;"><span>蓄电池组延时数目:</span>'+data.newsum+'<a style="margin-left: 14px" href="javascript:loadToDischargeDelay();">详情>></a></div>'+
@@ -2896,7 +2991,8 @@
      rs.devalarm = "User_ChartAction!serchByInfo?json={Chart_file:'"+user_logo+"',Chart_name:chart_dev_alarm}";   // 设备告警
      rs.precharge = "User_ChartAction!serchByInfo?json={Chart_file:'"+user_logo+"',Chart_name:chart_pre_charge}";   // 预充电
      rs.float = "User_ChartAction!serchByInfo?json={Chart_file:'"+user_logo+"',Chart_name:chart_online_charge}";   // 浮充
      rs.defaults = mapDefults;
      rs.powercut = "User_ChartAction!serchByInfo?json={Chart_file:'"+user_logo+"',Chart_name:chart_poff}";
      rs.defaults = "User_ChartAction!serchByInfo?json={Chart_file:'"+user_logo+"',Chart_name:chart_install}";
      return rs;
   }
   /* $(function(){
@@ -3186,6 +3282,9 @@
             break;
          case 'item-timeout':   // 延时
             rs = imgs.timeout;
             break;
          case 'item-poff':   // 停电
             rs = imgs.powercut;
             break;
          case 'item-dev_alarm':   // 61850告警
             rs = imgs.devalarm;
@@ -3522,14 +3621,57 @@
              }             
         });
      }
      var mapViewArea = GLOBAL.BMap.mapViewArea;
      // 地图左上方面板模块
      var mapViewArea = GLOBAL.BMap.mapViewArea;   // 地图显示区域的信息
      // 点击面板上方的小图标显示设定信息
      $('#showMapInfoDetail').click(function() {
         $('.map-info-detail').slideToggle();
      });
      // 点击隐藏
      $('.map-info-detail .map-panel-hide').click(function() {
         $('.map-info-detail').slideUp();
      });
      // 遍历mapViewArea获取mapVsAreaSel下拉框的值
      var mapVsAreaSel = $('#mapVsAreaSel');
      var mapVsAreaSelOpts = [];
      for(var i=0; i<mapViewArea.length; i++) {
         var _data = mapViewArea[i];
         var tmp = getOptionsData(_data.name, _data.area, _data);
         mapVsAreaSelOpts.push(tmp);
      }
      // 生成面板中的mapVsAreaSel
      createOptions(mapVsAreaSel, mapVsAreaSelOpts);
      // 显示默认区域-中国
      setMapViewArea(mapViewArea[0]);
      setMapViewArea(mapViewArea[0]);
      centerMapByPoint(map); // 根据当前用户设定的位置显示中心点
      // 点击面板确定按钮
      $('#mapPanelEn').click(function() {
         var areaData = mapVsAreaSel.find('option:selected').data('attr');
         // 设置头部可视区域的文本
         $('#mapVsArea').text(areaData.name);
         // 设置可视区域
         setMapViewArea(areaData);
      });
      // 设置地图的可视区域
      function setMapViewArea(data) {
         var left = new BMap.Point(data.left.lng, data.left.lat);
         var right = new BMap.Point(data.right.lng, data.right.lat);
         var b = new BMap.Bounds(left, right);
         var cLng = (data.left.lng+data.right.lng)/2;
         var cLat = (data.left.lat+data.right.lat)/2;
         var f = new BMap.Point(cLng, cLat);
         map.panTo(f, {
                noAnimation: "no"
            });
         try {
            BMapLib.AreaRestriction.setBounds(map, b);
         } catch (e) {