hdw
2018-10-25 bb65f33c9fdff40844f17e95e3e75aed2b42bda2
gx_tieta/WebRoot/index.jsp
@@ -34,6 +34,8 @@
   <link rel="stylesheet" href="css/img-change.css">
   <link rel="stylesheet" href="css/confirm.css">
   <link rel="stylesheet" href="css/loading.css">
   <link rel="stylesheet" href="src/css/layui.css">
   <link rel="stylesheet" href="pages/css/mylayui.css">
   <style type="text/css">
      #map .explain-header:hover {
         cursor: pointer;
@@ -75,6 +77,21 @@
      .ui-resizable-s, .ui-resizable-se {
         display: none !important;
      }
      .ui-autocomplete {
         height: 200px;
         overflow-y: auto;
         overflow-x: hidden;
       }
       .BMapLib_bubble_content a {
          color: #2A3AF0;
       }
       .BMapLib_bubble_content a:hover {
          text-decoration: underline;
       }
       body .layui-layer-dialog {
          min-width:400px;
       }
   </style>
   <script type="text/javascript" src="js/jquery-1.8.3.js"></script>
   
@@ -91,6 +108,20 @@
      <jsp:include page="nav.jsp" flush="true"/>
      <!--导航结束-->
      <div id="content">
         <!-- <div id="mapStatusOpts" class="map-status-container">
            <div class="layui-form layui-form-pane">
               <label class="layui-form-label">机房类型</label>
               <div class="layui-input-inline">
                  <select name="warnType" id="warnType">
                      <option value="0">全部</option>
                      <option value="1">落后</option>
                      <option value="2">告警</option>
                      <option value="3">延时</option>
                      <option value="4">正常</option>
                  </select>
               </div>
            </div>
         </div> -->
         <div class="nav-map small">
            <!-- 电池分布图 -->
            <div class="china-map" id="map">
@@ -131,7 +162,11 @@
         
         <!-- 电池故障与电池告警饼状图 -->
         <div class="pie-con">
            <div class="pie-conf">
               <a href="javascript:;" class="pie-btn" id="faCog"  title="图表配置">
                  <i class="fa fa-cog"></i>
               </a>
            </div>
            <!-- 电池故障饼状图 -->
            <div class="brdn-pie module"></div>
            <!-- 电池告警饼状图 -->
@@ -308,12 +343,14 @@
   <script type="text/javascript" src="pages/js/base.js"></script>
   <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="js/panel.js"></script>
   <script type="text/javascript" src="js/search.js"></script>
   <script type="text/javascript" src="js/changePinYin.js"></script>
   <script type="text/javascript" src="js/createMap.js"></script>
   <script type="text/javascript" src="js/myConfirm.js"></script>
   <script type="text/javascript" src="js/loading.js"></script>
   <script type="text/javascript" src="src/layui.js"></script>
   <script type="text/javascript">
   var permits;
   <%   Object obj=session.getAttribute("permits");
@@ -1333,15 +1370,6 @@
      });
   });
   
   //  点击地图的搜索按钮定位地址
   $(function() {
      $('#map').on('click', '.search .search-btn', function() {
         var posTxt = $('#map .search .pos-txt').val();
         addrAnalyze(posTxt);
      });
   });
   $(window).resize(function() {
      getMapHt();
   });
@@ -1586,12 +1614,17 @@
      
      // 遍历查询内容生成对应的图标
      for(var i = 0; i < dotList.length; i++) {
         var dotIcon = new BMap.Icon(getMapStateImg(mapImages, dotList[0].msg), new BMap.Size(36, 30));   // 设置图片
         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点
         addMenu(mk, mapDel);
         // 删除指定的点(该点会在本函数后面重新创建)
         deletePoint(map, dotList[i].title);
         // 给点右键菜单添加删除按钮
         addMenu(mk, mapDel);
         // 向mk点添加label
         var home_name = new BMap.Label(dotList[i].title, {offset:new BMap.Size(20,-10)});
         home_name.setStyle({display: 'none', padding: '4px 2px'});
@@ -1607,18 +1640,14 @@
         
         mk.addEventListener('click', function(e) {
            var target = e.target;
            showMapPanel(target, dotList);
            //showMapPanel(target, dotList);
            searchPanelInfo(target);
         });
         mkList.push(mk);
         // 向地图添加覆盖物
         map.addOverlay(mk);
      }
   }
   //
   
   // 删除地图上的指定点
   function deletePoint(map, msg){
@@ -1740,6 +1769,7 @@
   
   function showMapPanel(target, warnList) {
      var point = target.point;
      //console.log(target.getLabel());
      var searchInforWin = null;
      for(var i = 0; i < warnList.length; i++) {
         if(warnList[i].lng == point.lng && warnList[i].lat == point.lat) {
@@ -1769,10 +1799,9 @@
   function showMapPanelByPoint(point, dataList) {
      var searchInforWin = null;
      var opts = {
         //title  : warnList[i].title+'<a href="javascript:loadToHomeInfo();" style="margin-left: 1em;text-decoration:none">详情>></a>',      //标题
         title  : dataList.title+'<a href="javascript:loadToHomeInfo();" style="margin-left: 1em;text-decoration:none;cursor:not-allowed">详情>></a>',      //标题未开启
         width  : '290',             //宽度
         height : 140,              //高度
         height : 160,              //高度
         panel  : "panel",         //检索结果面板
         enableAutoPan : true,     //自动平移
         enableSendToPhone:false,
@@ -1995,7 +2024,7 @@
                  var dot = dots[i];
                  var lat = dot.lat;
                  var lng = dot.lng;
                  var sId = dot.binformation.StationId;
                  var sId = dot.sId;
                  var isExist = checkMarker(sId);
                  
                  // 未被添加过
@@ -2028,19 +2057,75 @@
      function setDots(data) {
         dots = data;
      }
      // 将变量绑定到命名空间下
      gl.BMap.setDots = setDots;
      // 更新dots集合的数据
      function updateDots(data) {
         for(var i=0; i<dots.length; i++) {
            var _dots = dots[i];
            if(_dots.sId == data.sId) {
               _dots.msg = data.msg;
            }
         }
      }
      // 将变量绑定到命名空间下
      gl.BMap.updateDots = updateDots;
      
      // 将函数绑定到命名空间下
      gl.BMap.queryInRect = queryInRect;
   })(jQuery, window, document, GLOBAL);
   
   searchStation(true);
   var allStation;
   // 地图机房搜索模块
   ;(function($, window, document, gl, undefined) {
      // 设置命名空间BMap.Search模块
      gl.namespace('BMap.Search');
      var homeInfor = [];
      // 设置homeInfor的值
      function setHomeInfor(data) {
         homeInfor = data;
      }
      // 将函数绑定到命名空间下
      gl.BMap.Search.setHomeInfor = setHomeInfor;
      // 根据homeInfor的值返回home列表
      function getHomeList() {
         var rs = [];
         // 遍历homeInfor的值
         for(var i=0; i<homeInfor.length; i++) {
            rs.push(homeInfor[i].title);
         }
         return rs;
      }
      // 将函数绑定到命名空间下
      gl.BMap.Search.getHomeList = getHomeList;
   })(jQuery, window, document, GLOBAL);
   // 查询并设置机房的图标
   $(function () {
      searchStation(true);
   });
   var allStation = [];
   var mapPages = {
      pageSize:1000,             // 每页的行数
      pageCurr:1,              // 当前页码数
      pageAll:1,               // 数目
      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 = [];
@@ -2054,41 +2139,174 @@
           data:"json="+json,      
           success: function(data){ 
            data = eval('('+data+')');
            var list = eval('('+data.result+')');
            console.log(list.length);
            // 获取结果集
            var rs = JSON.parse(data.result);
            var list = rs.data;
            // console.log(list);
            allStation = new Array();
            if(list!=undefined && list.length>0){
               // 设置分页信息
               mapPages.pageAll = list.length;
               setMapPages();
               // 遍历查询结果
               for(var i=0;i<list.length;i++){
                  var tmp = {
                     binformation:list[i].data,
                     alarm_num:list[i].code,      //告警数目
                     low_num:list[i].sum,      //落后数目
                     delay_num:list[i].newsum,   //延时数目
                     msg: list[i].msg
                  };
                  allStation.push(analyzeData(tmp));
                  var _list = list[i];
                  allStation.push(formatAllStation(_list));
               }
               // 显示区域的图标
               GLOBAL.BMap.setDots(allStation);
               GLOBAL.BMap.queryInRect(map,createMapDot);
               // 是否设置拖到和缩放
               bmap.setDots(allStation);
               bmap.queryInRect(map, createMapDot);
               // 是否第一次执行
               if(setRect) {
                  map.addEventListener("moveend", GLOBAL.BMap.queryInRect.bind({},map, createMapDot));  // 拖动
                  map.addEventListener("zoomend", GLOBAL.BMap.queryInRect.bind({},map, createMapDot)); // 缩放
                  map.addEventListener("moveend", bmap.queryInRect.bind({},map, createMapDot));  // 拖动
                  map.addEventListener("zoomend", bmap.queryInRect.bind({},map, createMapDot)); // 缩放
                  updateStation();
               }
               //createMapDot(map, allStation);
            }
           }             
      });
   }
   
   // 格式化查询结果
   function formatAllStation(list) {
      var obj = new Object();
      // 构造结果集
      obj.lng = list.longitude;
      obj.lat = list.latitude;
      obj.title = list.StationName;
      obj.sId = list.StationId;
      obj.fbsId = list.FBSDeviceId;
      obj.addr = list.Address;
      obj.msg = "";
      obj.num = list.num;
      return obj;
   }
   // 设置分页的信息
   function setMapPages() {
      var pageNum = Math.ceil(mapPages.pageAll/mapPages.pageSize);
      mapPages.pageNum = pageNum;
      mapPages.pageNew= true;
   }
   // 轮询更新地图的点查询
   function updateStation() {
      var bmap = GLOBAL.BMap;      // BMap的命名空间
      var updateStationData = [];
      $.ajax({
         type: "post",
         url: "BattMap_informationAction!searchUserManageStation2",
           async: true,
           dataType:'json',
           data: "json="+JSON.stringify(mapPages),
           success: function(result) {
              var data = JSON.parse(result.result);
              console.log(data);
              for(var i=0; i<data.length; i++) {
                 var _data = data[i];
                 var _list =  formatUpdateStation(_data);
                 updateStationData.push(_list);
                 //_list.msg = 'item-nuclear_cap';
                 // 判断是否更新
                 if(mapPages.pageNew) {
                    bmap.updateDots(_list);
                 }
              }
              createMapDot(map, updateStationData);
              // 更新分页信息
              mapPages.pageCurr++;
              if(mapPages.pageCurr>mapPages.pageNum) {
                 mapPages.pageCurr=1;
                 mapPages.pageNew=false;
              }
              setTimeout(updateStation, 4000);
           }
      });
   }
   // 格式化查询结果
   function formatUpdateStation(list) {
      var obj = {};
      var data = list.data;
      // 构造结果集
      obj.lng = data.longitude;
      obj.lat = data.latitude;
      obj.title = data.StationName;
      obj.sId = data.StationId;
      obj.fbsId = data.FBSDeviceId;
      obj.addr = data.Address;
      obj.msg = list.msg;
      obj.num = list.num;
      return obj;
   }
   // 查询机房面板信息
   function searchPanelInfo(data) {
      var point = data.point;
      var stationInfo = getStaionByPoint(point);
      if(!stationInfo) {
         alert('面板信息查询失败!');
         return;
      }
      var temp = {
         StationId: stationInfo.sId
      };
      // 查询面板信息
      $.ajax({
         type: 'post',
         async: true,
         url: 'BattMap_informationAction!searchUserManageStation3',
         data: 'json='+JSON.stringify(temp),
         dataType: 'json',
         success: function(result) {
            var rs = JSON.parse(result.result);
            if(rs.length != 0) {
               var data = rs[0];
               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>'+
                     '<div style="padding:6px"><a href="javascript:loadToRealTime();">实时数据</a><a style="margin-left: 20px" href="javascript:loadToOldTime();">历史数据</a></div>'+
                     '<div style="padding:6px;"><span>地址:</span>'+data.data.Address+'</div>'+
                     '<input type="hidden" class="ipt-hide home" value="'+data.data.StationName+'">'+
                     '<input type="hidden" class="ipt-hide province" value="'+data.data.stationName1+'">'+
                     '<input type="hidden" class="ipt-hide city" value="'+data.data.stationName2+'">';
               var list = {
                  title: data.data.StationName,
                  content: content
               };
               showMapPanelByPoint(point, list);
            }
         }
      });
   }
   // 根据经纬度获取机房的信息
   function getStaionByPoint(point) {
      var stationInfo = false;
      // 遍历所有机房
      for(var i=0; i<allStation.length; i++) {
         var info = allStation[i];
         if(info.lng == point.lng && info.lat == point.lat) {
            stationInfo = info;
         }
      }
      return stationInfo;
   }
   function setAllStation(obj,allstation){
      //console.info(allstation);
      var flag = false;
      var index = 0;
      for(var i = 0;i < allstation.length;i++){
      for(var i = 0;i < allStation.length;i++){
         //console.info(obj.binformation.num + "==" + allstation[i].binformation.num);
         if(obj.binformation.num == allstation[i].binformation.num){
            flag = true;
@@ -2195,16 +2413,18 @@
   }
   // 定位到实时数据页面
   function loadToRealTime() {
      var battgroupId = $('.ipt-hide').eq(0).val();
      var homeId = $('.ipt-hide').eq(1).val();
      window.open('control.jsp?battgroupId='+battgroupId+'&stationId='+homeId);
      var home = $('.ipt-hide.home').val();
      var province = $('.ipt-hide.province').val();
      var city = $('.ipt-hide.city').val();
      window.open('control.jsp?province='+province+'&city='+city+'&home='+home);
   }
   // 定位到历史数据页面
   function loadToOldTime() {
      var battgroupId = $('.ipt-hide').eq(0).val();
      var homeId = $('.ipt-hide').eq(1).val();
      window.open('charge-test.jsp?battgroupId='+battgroupId+'&stationId='+homeId);
      var home = $('.ipt-hide.home').val();
      var province = $('.ipt-hide.province').val();
      var city = $('.ipt-hide.city').val();
      window.open('charge-test.jsp?province='+province+'&city='+city+'&home='+home);
   }
   
   //定位到告警页面
@@ -2338,11 +2558,10 @@
               text: '删除',
               callback: function(e) {
                  //console.info(allStation);
                  console.info(mk);
                  console.info(allStation);
                  var temp = getStationMap(allStation, mk.point);
                  if(confirm("确认从地图上删除'"+temp.StationName+"'的位置信息吗?")){
                  if(confirm("确认从地图上删除'"+temp.title+"'的位置信息吗?")){
                     if(temp != undefined){
                        //console.info(temp);
                        var json = JSON.stringify(temp);
                        $.ajax({    
                             type: "post",             
@@ -2384,8 +2603,8 @@
   function getStationMap(list,localposi){
      if(list != undefined){
         for(var i = 0 ; i < list.length ; i++){
            if(list[i].binformation.latitude == localposi.lat && list[i].binformation.longitude == localposi.lng){
               return list[i].binformation;
            if(list[i].lat == localposi.lat && list[i].lng == localposi.lng){
               return list[i];
            }
         }
      }
@@ -3115,5 +3334,157 @@
          img.attr('src', navImg);
       }
    }
    //  点击地图的搜索按钮定位地址
   $(function() {
      $('#map').on('click', '.search .search-btn', function() {
         var posTxt = $('#map .search .pos-txt').val();
         addrAnalyze(posTxt);
      });
   });
   layui.use(['form', 'layer', 'laytpl'], function() {
      var form = layui.form;
      var layer = layui.layer;
      var laytpl = layui.laytpl;
      // 点击饼状图配置
      $('#faCog').click(function() {
         searchUserBieState();   // 查询当前饼状图的配置状态
      });
      var layerMsg;
      // 点击配置项复选框
      $('body').on('click', '#tplTblOpts .tpl-tbl-opts-header input[type=checkbox]', function(event) {
         layer.close(layerMsg);
         var iptList = $('#tplTblOpts .tpl-tbl-opts-header input[type=checkbox]');
         var num = 0;
         iptList.each(function() {
            if($(this).is(':checked')) {
               num++;
            }
         });
         if(num>4) {
            layerMsg = layer.msg("最多选择四个!", {
               type: 1
            });
            $(this).prop('checked', false);
         }
      });
      var pie = GLOBAL.Index.Pie;
      var pieType = pie.pieType;
      var pieConfTpl =  getTpl('iframe/pie-config.html');
      //查询当前用户设置饼状图的使能状态
      function searchUserBieState(){
         $.ajax({
              type:"post",
              url: "Echarts_usrAction!serchByCondition",
              async:true,
              dataType:'json',
              data:null,
              success: function(data){
               var model = eval('('+data.result+')');
               if(model.code == 1) {
                  var result = model.data;
                  var formatData = formatPieRsData(result[0]);
                  laytpl(pieConfTpl).render(formatData, function(html) {
                     layer.open({
                        id: 'pie',
                        title: '饼状图配置',
                        maxHeight: 450,
                        content: html,
                        yes: function(index) {
                           var iptList = $('#tplTblOpts .tpl-tbl-opts-header input[type=checkbox]');
                           var iptArr = [];
                           iptList.each(function() {
                              if($(this).is(':checked')) {
                                 iptArr.push(1);
                              }else {
                                 iptArr.push(0);
                              }
                           });
                           var temp = structUpdatePie(iptArr);
                           layer.load();
                           updateUserBieState(temp);
                        }
                     });
                  });
               }
                }
         });
      }
      // 格式化查询结果
      function formatPieRsData(result) {
         var data={};
         data.tblData=[];
         // 遍历pieType的类型
         for(var i=0; i<pieType.length; i++) {
            var tmp = {};
            var num = i+1;
            var key = 'echarts'+num+'_enable';
            tmp.name = pieType[i].name;
            tmp.status = result[key];
            data.tblData.push(tmp);
         }
         return data;
      }
      // 构造更新饼状图参数
      function structUpdatePie(arr) {
         var rs = {
            echarts1_enable:0,
            echarts2_enable:0,
            echarts3_enable:0,
            echarts4_enable:0,
            echarts5_enable:0,
            echarts6_enable:0,
            echarts7_enable:0,
            echarts8_enable:0,
            echarts9_enable:0,
            echarts10_enable:0
         };
         // 遍历arr给rs值重定义
         for(var i=0; i<arr.length; i++) {
            var num = i+1;
            var key = 'echarts'+num+'_enable';
            rs[key] = arr[i];
         }
         return rs;
      }
      // 更新当前用户设置饼状图的使能状态
      function updateUserBieState(temp, dialog, load){
         // 更新后台数据
         $.ajax({
              type:"post",
              url: "Echarts_usrAction!add",
              async:true,
              dataType:'json',
              data:'json='+JSON.stringify(temp),
              success: function(data){
                 layer.closeAll();
               var model = eval('('+data.result+')');
               if(model.code == 1) {
                  layer.msg('配置成功!!!');
               }else {
                  layer.msg('配置失败!!!');
               }
              }
         });
      }
   });
   </script> 
</html>