Commit 4dfa811afe7d81fc6b3300deaf03a29ac2a9bfbb

Authored by 徐烜
2 parents 3e04b955 c29701fe

Merge branch 'pudong' of 192.168.168.201:panzhaov5/bsth_control into pudong

src/main/java/com/bsth/data/gpsdata_v2/DataHandleProcess.java
@@ -108,7 +108,7 @@ public class DataHandleProcess { @@ -108,7 +108,7 @@ public class DataHandleProcess {
108 //发送邮件 108 //发送邮件
109 EmailBean mail = new EmailBean(); 109 EmailBean mail = new EmailBean();
110 mail.setSubject("线调GPS处理"); 110 mail.setSubject("线调GPS处理");
111 - mail.setContent("GPS处理超时,检查线程栈文件信息<br/>"); 111 + mail.setContent("GPS处理超时,检查文件信息<br/>");
112 sendEmailController.sendMail("113252620@qq.com", mail); 112 sendEmailController.sendMail("113252620@qq.com", mail);
113 logger.info("DataHandlerProcess:邮件发送成功!"); 113 logger.info("DataHandlerProcess:邮件发送成功!");
114 } catch (Exception e){ 114 } catch (Exception e){
src/main/resources/static/pages/forms/calc/calcsingledata.html
1 -<style type="text/css"> 1 +<style type="text/css">
2 .table-bordered { 2 .table-bordered {
3 border: 1px solid; } 3 border: 1px solid; }
4 .table-bordered > thead > tr > th, 4 .table-bordered > thead > tr > th,
@@ -40,14 +40,6 @@ @@ -40,14 +40,6 @@
40 <span class="item-label" style="width: 80px;">线路: </span> 40 <span class="item-label" style="width: 80px;">线路: </span>
41 <select class="form-control" name="line" id="line" style="width: 140px;"></select> 41 <select class="form-control" name="line" id="line" style="width: 140px;"></select>
42 </div> 42 </div>
43 - <div style="display: inline-block; margin-left: 18px;" id="sfdcDiv">  
44 - <span class="item-label" style="width: 80px;">是否电车: </span>  
45 - <select class="form-control form-filter " name="sfdc" id="sfdc">  
46 - <option value="">请选择...</option>  
47 - <option value="0">否</option>  
48 - <option value="1">是</option>  
49 - </select>  
50 - </div>  
51 <div style="margin-top: 10px"></div> 43 <div style="margin-top: 10px"></div>
52 <div style="display: inline-block;margin-left: 3px;"> 44 <div style="display: inline-block;margin-left: 3px;">
53 <span class="item-label" style="width: 140px;">开始时间: </span> 45 <span class="item-label" style="width: 140px;">开始时间: </span>
@@ -108,7 +100,6 @@ @@ -108,7 +100,6 @@
108 if (!$('body').hasClass('page-sidebar-closed')) 100 if (!$('body').hasClass('page-sidebar-closed'))
109 $('.menu-toggler.sidebar-toggler').click(); 101 $('.menu-toggler.sidebar-toggler').click();
110 102
111 -  
112 var d = new Date(); 103 var d = new Date();
113 d.setTime(d.getTime() - 4*1000*60*60*24); 104 d.setTime(d.getTime() - 4*1000*60*60*24);
114 var year = d.getFullYear(); 105 var year = d.getFullYear();
@@ -118,20 +109,13 @@ @@ -118,20 +109,13 @@
118 month = "0" + month; 109 month = "0" + month;
119 if(day < 10) 110 if(day < 10)
120 day = "0" + day; 111 day = "0" + day;
121 - var dateTime = year + "-" + month + "-" + day;  
122 - $("#startDate").datetimepicker({  
123 - format : 'YYYY-MM-DD',  
124 - locale : 'zh-cn',  
125 - maxDate : dateTime  
126 - });  
127 - $("#endDate").datetimepicker({ 112 +
  113 + $("#startDate,#endDate").datetimepicker({
128 format : 'YYYY-MM-DD', 114 format : 'YYYY-MM-DD',
129 locale : 'zh-cn', 115 locale : 'zh-cn',
130 - maxDate : dateTime 116 + maxDate : year + "-" + month + "-" + day
131 }); 117 });
132 - $("#startDate").val(dateTime);  
133 - $("#endDate").val(dateTime);  
134 - 118 + $("#startDate,#endDate").val(year + "-" + month + "-" + day);
135 119
136 var fage=false; 120 var fage=false;
137 var xlList; 121 var xlList;
@@ -211,8 +195,6 @@ @@ -211,8 +195,6 @@
211 } 195 }
212 }); 196 });
213 197
214 - $("#sfdcDiv").hide();  
215 -  
216 var cont = "驾驶员", cont1 = "", cont2 = "", cont3 = ""; 198 var cont = "驾驶员", cont1 = "", cont2 = "", cont3 = "";
217 $("#tjtype").on("change",function(){ 199 $("#tjtype").on("change",function(){
218 if(cont == "驾驶员"){ 200 if(cont == "驾驶员"){
@@ -225,13 +207,10 @@ @@ -225,13 +207,10 @@
225 cont = $("#tjtype").val(); 207 cont = $("#tjtype").val();
226 if($("#tjtype").val() == "驾驶员"){ 208 if($("#tjtype").val() == "驾驶员"){
227 $("#cont").val(cont1); 209 $("#cont").val(cont1);
228 - $("#sfdcDiv").hide();  
229 } else if($("#tjtype").val() == "售票员"){ 210 } else if($("#tjtype").val() == "售票员"){
230 $("#cont").val(cont2); 211 $("#cont").val(cont2);
231 - $("#sfdcDiv").hide();  
232 } else if($("#tjtype").val() == "车辆自编号"){ 212 } else if($("#tjtype").val() == "车辆自编号"){
233 $("#cont").val(cont3); 213 $("#cont").val(cont3);
234 - $("#sfdcDiv").show();  
235 } 214 }
236 }); 215 });
237 216
@@ -252,10 +231,9 @@ @@ -252,10 +231,9 @@
252 var fgsdmSing = $("#fgsdmSing").val(); 231 var fgsdmSing = $("#fgsdmSing").val();
253 var tjtype=$("#tjtype").val(); 232 var tjtype=$("#tjtype").val();
254 var cont=$("#cont").val(); 233 var cont=$("#cont").val();
255 - var sfdc=$("#sfdc").val();  
256 var params = {}; 234 var params = {};
257 var i = layer.load(2); 235 var i = layer.load(2);
258 - $get("/calc_mix/singledatatj",{gsdmSing:gsdmSing,fgsdmSing:fgsdmSing,line:line,startDate:startDate,endDate:endDate,tjtype:tjtype,cont:cont,sfdc:sfdc},function(result){ 236 + $get("/calc_mix/singledatatj",{gsdmSing:gsdmSing,fgsdmSing:fgsdmSing,line:line,startDate:startDate,endDate:endDate,tjtype:tjtype,cont:cont},function(result){
259 layer.close(i); 237 layer.close(i);
260 var singledata = template('singledata',{list:result}); 238 var singledata = template('singledata',{list:result});
261 // 把渲染好的模版html文本追加到表格中 239 // 把渲染好的模版html文本追加到表格中
@@ -271,12 +249,11 @@ @@ -271,12 +249,11 @@
271 var fgsdmSing = $("#fgsdmSing").val(); 249 var fgsdmSing = $("#fgsdmSing").val();
272 var tjtype=$("#tjtype").val(); 250 var tjtype=$("#tjtype").val();
273 var cont=$("#cont").val(); 251 var cont=$("#cont").val();
274 - var sfdc=$("#sfdc").val();  
275 var lineName = $('#line option:selected').text(); 252 var lineName = $('#line option:selected').text();
276 if(lineName == "全部线路") 253 if(lineName == "全部线路")
277 lineName = $('#fgsdmSing option:selected').text(); 254 lineName = $('#fgsdmSing option:selected').text();
278 var i = layer.load(2); 255 var i = layer.load(2);
279 - $get('/calc_export/singledataExportTj',{gsdmSing:gsdmSing,fgsdmSing:fgsdmSing,line:line,startDate:startDate,endDate:endDate,tjtype:tjtype,cont:cont,sfdc:sfdc,type:'export',lineName:lineName},function(result){ 256 + $get('/calc_export/singledataExportTj',{gsdmSing:gsdmSing,fgsdmSing:fgsdmSing,line:line,startDate:startDate,endDate:endDate,tjtype:tjtype,cont:cont,type:'export',lineName:lineName},function(result){
280 var dateTime = ""; 257 var dateTime = "";
281 if(startDate == endDate){ 258 if(startDate == endDate){
282 dateTime = moment(startDate).format("YYYYMMDD"); 259 dateTime = moment(startDate).format("YYYYMMDD");
src/main/resources/static/pages/forms/calc/statisticsDaily.html
1 -<style type="text/css"> 1 +<style type="text/css">
2 .table-bordered { 2 .table-bordered {
3 border: 1px solid; } 3 border: 1px solid; }
4 .table-bordered > thead > tr > th, 4 .table-bordered > thead > tr > th,
@@ -150,7 +150,7 @@ @@ -150,7 +150,7 @@
150 $('.menu-toggler.sidebar-toggler').click(); 150 $('.menu-toggler.sidebar-toggler').click();
151 151
152 var d = new Date(); 152 var d = new Date();
153 - d.setTime(d.getTime() - 1*1000*60*60*24); 153 + d.setTime(d.getTime() - 4*1000*60*60*24);
154 var year = d.getFullYear(); 154 var year = d.getFullYear();
155 var month = d.getMonth() + 1; 155 var month = d.getMonth() + 1;
156 var day = d.getDate(); 156 var day = d.getDate();
src/main/resources/static/pages/forms/mould/waybill_minhang.xls
No preview for this file type
src/main/resources/static/pages/forms/mould/waybill_minhang_dl.xls
No preview for this file type
src/main/resources/static/pages/home.html
1 -<style>  
2 - .system_change_log{  
3 - background: #fff;  
4 - color: #666;  
5 - box-shadow: 0 5px 15px rgba(0,0,0,0.08);  
6 - height: calc(100% + 10px);  
7 - margin-top: -10px;  
8 - font-size: 14px;  
9 - padding: 10px 0 0 15px;  
10 - overflow: auto;  
11 - }  
12 - .system_change_log>ul{  
13 - margin:0px;  
14 - list-style:none;  
15 - }  
16 -  
17 - .system_change_log>ul>li.sub_title{  
18 - text-indent: 0;  
19 - }  
20 -  
21 - .system_change_log>ul>li.sub_title>h6{  
22 - font-size: 12px;  
23 - font-family: 微软雅黑;  
24 - color: #000;  
25 - margin-top: 8px;  
26 - margin-bottom: 8px;  
27 - }  
28 -  
29 - .system_change_log>ul>li{  
30 - margin: 5px 0;  
31 - text-indent: 25px;  
32 - }  
33 -  
34 - .system_change_log .label{  
35 - width: 55px;  
36 - display: inline-block;  
37 - padding: 0 10px;  
38 - line-height: 1.5;  
39 - font-size: 12px;  
40 - color: #fff;  
41 - vertical-align: middle;  
42 - white-space: nowrap;  
43 - border-radius: 2px !important;  
44 - text-transform: uppercase;  
45 - text-align: center;  
46 - text-indent: 3px;  
47 - margin-right: 15px;  
48 - }  
49 - .system_change_log .label.s_c_add{  
50 - background-color: #32d296;  
51 - }  
52 -  
53 - .system_change_log .label.s_c_change{  
54 - background-color: #1e87f0;  
55 - }  
56 -  
57 - .system_change_log .label.s_c_remove{  
58 - background-color: #faa05a;  
59 - }  
60 -</style>  
61 -<div class="system_change_log">  
62 - <h2 style="text-indent: 35px;margin: 10px 0 5px;">2020-03-12 更新说明 Changelog</h2>  
63 - <br><br>  
64 - <ul >  
65 - <li class="sub_title"><h6>权限管理</h6></li>  
66 - <li><span class="label s_c_change">修改</span>1、密码修改加入密码复杂度校验机制</li>  
67 - <li class="sub_title"><h6>线调</h6></li>  
68 - <li><span class="label s_c_change">新增</span>1、线调页面新增维修上报功能</li>  
69 - </ul>  
70 -  
71 -</div>  
72 -  
73 -<script type="text/javascript">  
74 - $.ajax({  
75 - url: '/eci/validate_get_destroy_info',  
76 - dataType: "json",  
77 - success: function(rs) {  
78 - if (rs && rs.status === "SUCCESS") {  
79 - if (rs.data && rs.data.length && rs.data.length > 0) {  
80 - swal({  
81 - title: "人员配置停用信息",  
82 - text: rs.data.join("</br>"),  
83 - html: true,  
84 - type: "warning",  
85 - showCancelButton: true,  
86 - confirmButtonColor: "RED",  
87 - confirmButtonText: "是",  
88 - cancelButtonText: "取消"  
89 - });  
90 - }  
91 - }  
92 - }  
93 - });  
94 -  
95 -</script> 1 +<style>
  2 + .system_change_log{
  3 + background: #fff;
  4 + color: #666;
  5 + box-shadow: 0 5px 15px rgba(0,0,0,0.08);
  6 + height: calc(100% + 10px);
  7 + margin-top: -10px;
  8 + font-size: 14px;
  9 + padding: 10px 0 0 15px;
  10 + overflow: auto;
  11 + }
  12 + .system_change_log>ul{
  13 + margin:0px;
  14 + list-style:none;
  15 + }
  16 +
  17 + .system_change_log>ul>li.sub_title{
  18 + text-indent: 0;
  19 + }
  20 +
  21 + .system_change_log>ul>li.sub_title>h6{
  22 + font-size: 12px;
  23 + font-family: 微软雅黑;
  24 + color: #000;
  25 + margin-top: 8px;
  26 + margin-bottom: 8px;
  27 + }
  28 +
  29 + .system_change_log>ul>li{
  30 + margin: 5px 0;
  31 + text-indent: 25px;
  32 + }
  33 +
  34 + .system_change_log .label{
  35 + width: 55px;
  36 + display: inline-block;
  37 + padding: 0 10px;
  38 + line-height: 1.5;
  39 + font-size: 12px;
  40 + color: #fff;
  41 + vertical-align: middle;
  42 + white-space: nowrap;
  43 + border-radius: 2px !important;
  44 + text-transform: uppercase;
  45 + text-align: center;
  46 + text-indent: 3px;
  47 + margin-right: 15px;
  48 + }
  49 + .system_change_log .label.s_c_add{
  50 + background-color: #32d296;
  51 + }
  52 +
  53 + .system_change_log .label.s_c_change{
  54 + background-color: #1e87f0;
  55 + }
  56 +
  57 + .system_change_log .label.s_c_remove{
  58 + background-color: #faa05a;
  59 + }
  60 +</style>
  61 +<div class="system_change_log">
  62 + <h2 style="text-indent: 35px;margin: 10px 0 5px;">2020-07-30 更新说明 Changelog</h2>
  63 + <br><br>
  64 + <ul >
  65 + <li class="sub_title"><h6>权限管理</h6></li>
  66 + <li><span class="label s_c_change">修改</span>1、权限加入分级概念,同级、上级不能操作,如:下级账户不能创建管理员账户</li>
  67 + <li><span class="label s_c_change">修改</span>2、权限操作时验证角色信息</li>
  68 + <li class="sub_title"><h6>线调</h6></li>
  69 + <li><span class="label s_c_change">修改</span>1、轨迹回放版本切换问题修复</li>
  70 + <li><span class="label s_c_change">修改</span>2、批量换人换车可能造成某日班次不能清除问题修复</li>
  71 + <li><span class="label s_c_change">修改</span>3、调度系统中偶然出现的批量掉线问题修复(调度网关有数据情况)</li>
  72 + <li><span class="label s_c_change">修改</span>4、安全驾驶添加了安全检查类别、接口地址调整</li>
  73 + <li><span class="label s_c_change">新增</span>5、与服务热线系统对接,可在线调页填写服务投诉信息</li>
  74 + <li class="sub_title"><h6>计调</h6></li>
  75 + <li><span class="label s_c_change">新增</span>1、人员停用在home.html做弹出框,后台获取当前用户权限下的线路人员配置停用信息</li>
  76 + <li><span class="label s_c_change">新增</span>2、人员管理添加金蝶工号显示</li>
  77 + <li><span class="label s_c_change">新增</span>3、修改时刻表明细编辑页面,添加班型编辑列,修改相关指令</li>
  78 + <li><span class="label s_c_change">修改</span>4、修复时刻表批量修改问题所在</li>
  79 + <li><span class="label s_c_change">新增</span>5、添加车辆同步接口web服务</li>
  80 + <li><span class="label s_c_change">新增</span>6、调度执勤日报修改人员,车辆时,初始会修改已有车辆人员配置(如套跑某个班次的车辆不一样,初始时会修改)</li>
  81 + <li><span class="label s_c_change">修改</span>7、排班明细修改班次时,修改去除工号的前缀</li>
  82 + <li class="sub_title"><h6>基础信息</h6></li>
  83 + <li><span class="label s_c_change">新增</span>1、添加线路和修改线路时,选择环线或者双向的提示</li>
  84 + <li><span class="label s_c_change">新增</span>2、添加站点行业编码字段</li>
  85 + </ul>
  86 +
  87 +</div>
  88 +
  89 +<script type="text/javascript">
  90 + $.ajax({
  91 + url: '/eci/validate_get_destroy_info',
  92 + dataType: "json",
  93 + success: function(rs) {
  94 + if (rs && rs.status === "SUCCESS") {
  95 + if (rs.data && rs.data.length && rs.data.length > 0) {
  96 + swal({
  97 + title: "人员配置停用信息",
  98 + text: rs.data.join("</br>"),
  99 + html: true,
  100 + type: "warning",
  101 + showCancelButton: true,
  102 + confirmButtonColor: "RED",
  103 + confirmButtonText: "是",
  104 + cancelButtonText: "取消"
  105 + });
  106 + }
  107 + }
  108 + }
  109 + });
  110 +
  111 +</script>
src/main/resources/static/pages/mforms/turnoutrates/calcTurnoutrate.html
1 -<style type="text/css"> 1 +<style type="text/css">
2 .table-bordered { 2 .table-bordered {
3 border: 1px solid; } 3 border: 1px solid; }
4 .table-bordered > thead > tr > th, 4 .table-bordered > thead > tr > th,
@@ -123,7 +123,7 @@ @@ -123,7 +123,7 @@
123 123
124 124
125 var d = new Date(); 125 var d = new Date();
126 - d.setTime(d.getTime() - 1*1000*60*60*24); 126 + //d.setTime(d.getTime() - 1*1000*60*60*24);
127 var year = d.getFullYear(); 127 var year = d.getFullYear();
128 var month = d.getMonth() + 1; 128 var month = d.getMonth() + 1;
129 var day = d.getDate(); 129 var day = d.getDate();
src/main/resources/static/pages/mforms/turnoutrates/calcTurnoutrateZgf.html
1 -<style type="text/css"> 1 +<style type="text/css">
2 .table-bordered { 2 .table-bordered {
3 border: 1px solid; } 3 border: 1px solid; }
4 .table-bordered > thead > tr > th, 4 .table-bordered > thead > tr > th,
@@ -113,7 +113,7 @@ @@ -113,7 +113,7 @@
113 113
114 114
115 var d = new Date(); 115 var d = new Date();
116 - d.setTime(d.getTime() - 1*1000*60*60*24); 116 + //d.setTime(d.getTime() - 1*1000*60*60*24);
117 var year = d.getFullYear(); 117 var year = d.getFullYear();
118 var month = d.getMonth() + 1; 118 var month = d.getMonth() + 1;
119 var day = d.getDate(); 119 var day = d.getDate();
src/main/resources/static/real_control_v2/mapmonitor/js/spatial_data.js
1 -/** 空间数据 */  
2 -  
3 -var gb_map_spatial_data = (function () {  
4 -  
5 - var storage = window.localStorage;  
6 -  
7 - var activeLines = JSON.parse(storage.getItem('lineControlItems'));  
8 - var line_idx = (function () {  
9 - var str = '';  
10 - for (var i = 0, item; item = activeLines[i++];) {  
11 - str += (',' + item.lineCode);  
12 - }  
13 - return str.substr(1);  
14 - })();  
15 -  
16 - var cont = '#spatial-tree-content';  
17 - //线路站点路由数据  
18 - var lineStationArr;  
19 -  
20 - //停车场数据  
21 - var carparkArr;  
22 -  
23 - var init = function () {  
24 - //加载站点路由数据  
25 - gb_common.$get('/realMap/stationVersionSpatialData', {idx: line_idx}, function (rs) {  
26 - var list = rs.list;  
27 - $.each(list, function () {  
28 - this.lat = this.gLaty;  
29 - this.lon = this.gLonx;  
30 - delete this.gLaty;  
31 - delete this.gLonx;  
32 - if(this.shapesType=='d'){  
33 - var calcRs = calcPolygonArea(this.gPolygonGrid);  
34 - this._polygonArea = calcRs._polygonArea;  
35 - this._gPoints = calcRs._gPoints;  
36 - }  
37 - });  
38 - //排序  
39 - list.sort(function (a, b) {  
40 - return a.stationRouteCode - b.stationRouteCode;  
41 - });  
42 - //按线路分组  
43 - lineStationArr = gb_common.groupBy(list, 'lineCode');  
44 - //再按上下行分组  
45 - for (var lineCode in lineStationArr) {  
46 - lineStationArr[lineCode] = gb_common.groupBy(lineStationArr[lineCode], 'directions');  
47 - }  
48 -  
49 - ep.emitLater('station');  
50 - });  
51 -  
52 - //加载停车场数据  
53 - gb_common.$get('/realMap/carParkSpatialData', {}, function (rs) {  
54 - carparkArr = rs.list;  
55 - $.each(carparkArr, function () {  
56 - if(this.shapesType=='d'){  
57 - var calcRs = calcPolygonArea(this.gParkPoint);  
58 - this._polygonArea = calcRs._polygonArea;  
59 - this._gPoints = calcRs._gPoints;  
60 - }  
61 - });  
62 - ep.emitLater('carpark');  
63 - });  
64 -  
65 - var ep = EventProxy.create('station', 'carpark', function () {  
66 - $(".real_spatial_panel").resizable({  
67 - maxHeight: '100%',  
68 - minHeight: 18  
69 - });  
70 -  
71 - //绘制站点路由树  
72 - $('.station-route-tree', cont)  
73 - //state插件 状态恢复完成  
74 - .on('state_ready.jstree', function () {  
75 - //绑定checkbox状态切换事件  
76 - $(this).on('check_node.jstree uncheck_node.jstree', gb_map_overlay_mge.drawStation);  
77 - })  
78 - .on('activate_node.jstree', function (e, n) {  
79 - var node = n.node;  
80 - if(node.state.checked)  
81 - gb_map_overlay_mge._focus_station(node.data);  
82 - })  
83 - .jstree({  
84 - 'core': {  
85 - 'data': get_st_route_tree_data()  
86 - },  
87 - 'checkbox': {  
88 - 'keep_selected_style': false,  
89 - 'whole_node': false,  
90 - 'tie_selection': false  
91 - },  
92 - //local storage里的key  
93 - 'state': {  
94 - 'key': 'jstree_map_station_route'  
95 - },  
96 - 'plugins': ['checkbox', 'state']  
97 - });  
98 -  
99 -  
100 - //停车场  
101 - $('.carpark-panel', cont)  
102 - .on('state_ready.jstree', function () {  
103 - //绑定checkbox状态切换事件  
104 - $(this).on('check_node.jstree uncheck_node.jstree', gb_map_overlay_mge.drawCarpark);  
105 - })  
106 - .on('activate_node.jstree', function (e, n) {  
107 - var node = n.node;  
108 - if(node.state.checked)  
109 - gb_map_overlay_mge._focus_carpark(node.data);  
110 - })  
111 - .jstree({  
112 - 'core': {  
113 - 'data': get_st_carpark_tree_data()  
114 - },  
115 - 'checkbox': {  
116 - 'keep_selected_style': false,  
117 - 'whole_node': false,  
118 - 'tie_selection': false  
119 - },  
120 - //local storage里的key  
121 - 'state': {  
122 - 'key': 'jstree_map_carpark'  
123 - },  
124 - 'plugins': ['checkbox', 'state']  
125 - });  
126 -  
127 - refresh();  
128 - });  
129 - };  
130 -  
131 - //计算多边形面积  
132 - function calcPolygonArea(polygonStr) {  
133 - var pStr = polygonStr.substring(9, polygonStr.length - 2);  
134 - var array = pStr.split(',');  
135 - var newArr=[];  
136 -  
137 - //递归去掉闭合的尾  
138 - (function () {  
139 - var f = arguments.callee;  
140 - var end=array.length - 1;  
141 - if(array.length > 1 && array[0] == array[end]){  
142 - array = array.slice(0, end);  
143 - f();  
144 - }  
145 - })();  
146 -  
147 - //去掉连续的重复点  
148 - var last;  
149 - $.each(array, function (i, str) {  
150 - if(last){  
151 - if(last != str)  
152 - newArr.push(str);  
153 - }  
154 - else  
155 - newArr.push(str);  
156 - last = str;  
157 - });  
158 -  
159 - var gPoints=[],ts;  
160 - $.each(newArr, function (i, c) {  
161 - ts=c.split(' ');  
162 - gPoints.push({  
163 - lat: parseFloat(ts[1]),  
164 - lng: parseFloat(ts[0])  
165 - });  
166 - });  
167 -  
168 - //用百度geo工具库计算面积  
169 - var _polygonArea = BMapLib.GeoUtils.getPolygonArea(gPoints);  
170 - return {_polygonArea: _polygonArea.toFixed(2), _gPoints: gPoints};  
171 - }  
172 -  
173 - var refresh = function (type, checked) {  
174 - if (!triggerElem())  
175 - return;  
176 -  
177 - if ((type == 'carPark' && checked) || (type == 'station' && !checked)) {  
178 - //显示停车场面板  
179 - $('.car-park-item', cont).addClass('uk-active');  
180 - $('li.cp-tab-btn', '.real_spatial_panel').addClass('uk-active');  
181 - $('.carpark-panel', cont).jstree(true).check_all();  
182 -  
183 - //绘制停车场  
184 - gb_map_overlay_mge.drawCarpark();  
185 - }  
186 - else {  
187 - //显示站点路由面板  
188 - $('.station-route-item', cont).addClass('uk-active');  
189 - $('li.sr-tab-btn', '.real_spatial_panel').addClass('uk-active');  
190 -  
191 - //选中相关站点路由树  
192 - var chs = gb_map_overlay_mge.getCheckedDevice();  
193 - var idx = {};  
194 - $.each(chs, function () {  
195 - idx[this.data.lineId + '_' + this.data.upDown] = 1;  
196 - });  
197 -  
198 - var treeObj = $('.station-route-tree', cont).jstree(true);  
199 - for (var id in idx) {  
200 - treeObj.check_node(treeObj.get_node(id + '_st'));  
201 - }  
202 -  
203 - //drawStation();  
204 - gb_map_overlay_mge.drawStation();  
205 - }  
206 - }  
207 -  
208 - var triggerElem = function () {  
209 - var config = gb_map_config.getConfig().spatialData;  
210 -  
211 - if(config.station || config.carPark){  
212 - showPanel();  
213 - return true;  
214 - }  
215 - hidePanel();  
216 - //gb_map_imap.call('hideAllStationMarker');  
217 - //gb_map_imap.call('hideDrawCarpark');  
218 - return false;  
219 - }  
220 -  
221 - var animationend = 'webkitAnimationEnd animationend';  
222 - var showPanel = function () {  
223 - var elem = $('.real_spatial_panel');  
224 - var config = gb_map_config.getConfig().spatialData;  
225 -  
226 - if (config.station && config.carPark) {  
227 - anim_show($('.uk-subnav', elem), 'uk-animation-scale-up');  
228 - $('.real_spatial_body', elem).addClass('show-tab');  
229 - }  
230 - else {  
231 - $('.uk-subnav', elem).hide();  
232 - $('.real_spatial_body', elem).removeClass('show-tab');  
233 - }  
234 -  
235 - $('li.uk-active', elem).removeClass('uk-active');  
236 -  
237 - if (!elem.is(":hidden"))  
238 - return;  
239 -  
240 - anim_show(elem, 'uk-animation-slide-left');  
241 - }  
242 -  
243 - var hidePanel = function () {  
244 - var elem = $('.real_spatial_panel');  
245 - elem.hide();  
246 - }  
247 -  
248 - function anim_show(e, anim) {  
249 - e.addClass(anim).show().one(animationend, function () {  
250 - $(this).removeClass(anim);  
251 - });  
252 - }  
253 -  
254 - function getCheckedStation() {  
255 - var list = [];  
256 - var chs = $('.station-route-tree', cont).jstree(true).get_checked(true);  
257 - chs = chs.filter(function (item) {  
258 - return item.data;  
259 - });  
260 - $.each(chs, function () {  
261 - list.push(this.data);  
262 - });  
263 - return list;  
264 - }  
265 -  
266 - function gteCheckedCarpark() {  
267 - var list = [];  
268 - var chs = $('.carpark-panel', cont).jstree(true).get_checked(true);  
269 - $.each(chs, function () {  
270 - list.push(this.data);  
271 - });  
272 - return list;  
273 - }  
274 -  
275 - var get_st_route_tree_data = function () {  
276 - var treeData = [];  
277 -  
278 - for (var lineCode in lineStationArr) {  
279 - name = gb_data_basic.codeToLine[lineCode].name;  
280 - treeData.push({  
281 - 'text': name,  
282 - 'open': true,  
283 - 'children': [  
284 - {  
285 - 'text': '上行',  
286 - 'children': grabs(lineStationArr[lineCode][0]),  
287 - 'id': lineCode + '_0_st'  
288 - },  
289 - {  
290 - 'text': '下行',  
291 - 'children': grabs(lineStationArr[lineCode][1]),  
292 - 'id': lineCode + '_1_st'  
293 - }  
294 - ]  
295 - })  
296 - }  
297 - return treeData;  
298 - };  
299 - var get_st_route_tree_data_version = function () {  
300 - var treeData = [];  
301 -  
302 - for (var lineCode in lineVersionStationArr) {  
303 - name = gb_data_basic.codeToLine[lineCode].name;  
304 - treeData.push({  
305 - 'text': name,  
306 - 'open': true,  
307 - 'children': [  
308 - {  
309 - 'text': '上行',  
310 - 'children': grabs(lineVersionStationArr[lineCode][0]),  
311 - 'id': lineCode + '_0_st'  
312 - },  
313 - {  
314 - 'text': '下行',  
315 - 'children': grabs(lineVersionStationArr[lineCode][1]),  
316 - 'id': lineCode + '_1_st'  
317 - }  
318 - ]  
319 - })  
320 - }  
321 - return treeData;  
322 - };  
323 - var get_st_carpark_tree_data = function () {  
324 - var treeData = [];  
325 -  
326 - $.each(carparkArr, function () {  
327 - treeData.push({  
328 - 'text': this.parkName,  
329 - 'data': this  
330 - });  
331 - });  
332 -  
333 - return treeData;  
334 - }  
335 -  
336 - var grabs = function (array) {  
337 - if (!array)  
338 - return;  
339 - var rs = [];  
340 - $.each(array, function () {  
341 - rs.push({  
342 - 'text': this.stationName,  
343 - 'data': this,  
344 - 'icon': false  
345 - });  
346 - });  
347 - return rs;  
348 - }  
349 -  
350 - return {  
351 - refresh: refresh,  
352 - init: init,  
353 - getCheckedStation:getCheckedStation,  
354 - gteCheckedCarpark: gteCheckedCarpark,  
355 - getStationArray: function (lineCode) {  
356 - return lineStationArr[lineCode];  
357 - },  
358 - carparkArray: function () {  
359 - return carparkArr;  
360 - }  
361 - }; 1 +/** 空间数据 */
  2 +
  3 +var gb_map_spatial_data = (function () {
  4 +
  5 + var storage = window.localStorage;
  6 +
  7 + var activeLines = JSON.parse(storage.getItem('lineControlItems'));
  8 + var line_idx = (function () {
  9 + var str = '';
  10 + for (var i = 0, item; item = activeLines[i++];) {
  11 + str += (',' + item.lineCode);
  12 + }
  13 + return str.substr(1);
  14 + })();
  15 +
  16 + var cont = '#spatial-tree-content';
  17 + //线路站点路由数据
  18 + var lineStationArr, currentLineStationArr;
  19 +
  20 + //停车场数据
  21 + var carparkArr;
  22 +
  23 + var init = function () {
  24 +
  25 + //加载各线路当前版本站点路由数据
  26 + gb_common.$get('/realMap/stationSpatialData', {idx: line_idx}, function (rs) {
  27 + var list = rs.list;
  28 + $.each(list, function () {
  29 + this.lat = this.gLaty;
  30 + this.lon = this.gLonx;
  31 + delete this.gLaty;
  32 + delete this.gLonx;
  33 + if(this.shapesType=='d'){
  34 + var calcRs = calcPolygonArea(this.gPolygonGrid);
  35 + this._polygonArea = calcRs._polygonArea;
  36 + this._gPoints = calcRs._gPoints;
  37 + }
  38 + });
  39 + //排序
  40 + list.sort(function (a, b) {
  41 + return a.stationRouteCode - b.stationRouteCode;
  42 + });
  43 + //按线路分组
  44 + currentLineStationArr = gb_common.groupBy(list, 'lineCode');
  45 + //再按上下行分组
  46 + for (var lineCode in currentLineStationArr) {
  47 + currentLineStationArr[lineCode] = gb_common.groupBy(currentLineStationArr[lineCode], 'directions');
  48 + }
  49 +
  50 + ep.emitLater('currentstation');
  51 + });
  52 +
  53 + //加载各线路所有版本站点路由数据(轨迹回放时用)
  54 + gb_common.$get('/realMap/stationVersionSpatialData', {idx: line_idx}, function (rs) {
  55 + var list = rs.list;
  56 + $.each(list, function () {
  57 + this.lat = this.gLaty;
  58 + this.lon = this.gLonx;
  59 + delete this.gLaty;
  60 + delete this.gLonx;
  61 + if(this.shapesType=='d'){
  62 + var calcRs = calcPolygonArea(this.gPolygonGrid);
  63 + this._polygonArea = calcRs._polygonArea;
  64 + this._gPoints = calcRs._gPoints;
  65 + }
  66 + });
  67 + //排序
  68 + list.sort(function (a, b) {
  69 + return a.stationRouteCode - b.stationRouteCode;
  70 + });
  71 + //按线路分组
  72 + lineStationArr = gb_common.groupBy(list, 'lineCode');
  73 + //再按上下行分组
  74 + for (var lineCode in lineStationArr) {
  75 + lineStationArr[lineCode] = gb_common.groupBy(lineStationArr[lineCode], 'directions');
  76 + }
  77 +
  78 + ep.emitLater('station');
  79 + });
  80 +
  81 + //加载停车场数据
  82 + gb_common.$get('/realMap/carParkSpatialData', {}, function (rs) {
  83 + carparkArr = rs.list;
  84 + $.each(carparkArr, function () {
  85 + if(this.shapesType=='d'){
  86 + var calcRs = calcPolygonArea(this.gParkPoint);
  87 + this._polygonArea = calcRs._polygonArea;
  88 + this._gPoints = calcRs._gPoints;
  89 + }
  90 + });
  91 + ep.emitLater('carpark');
  92 + });
  93 +
  94 + var ep = EventProxy.create('currentstation', 'station', 'carpark', function () {
  95 + $(".real_spatial_panel").resizable({
  96 + maxHeight: '100%',
  97 + minHeight: 18
  98 + });
  99 +
  100 + //绘制站点路由树
  101 + $('.station-route-tree', cont)
  102 + //state插件 状态恢复完成
  103 + .on('state_ready.jstree', function () {
  104 + //绑定checkbox状态切换事件
  105 + $(this).on('check_node.jstree uncheck_node.jstree', gb_map_overlay_mge.drawStation);
  106 + })
  107 + .on('activate_node.jstree', function (e, n) {
  108 + var node = n.node;
  109 + if(node.state.checked)
  110 + gb_map_overlay_mge._focus_station(node.data);
  111 + })
  112 + .jstree({
  113 + 'core': {
  114 + 'data': get_st_route_tree_data()
  115 + },
  116 + 'checkbox': {
  117 + 'keep_selected_style': false,
  118 + 'whole_node': false,
  119 + 'tie_selection': false
  120 + },
  121 + //local storage里的key
  122 + 'state': {
  123 + 'key': 'jstree_map_station_route'
  124 + },
  125 + 'plugins': ['checkbox', 'state']
  126 + });
  127 +
  128 +
  129 + //停车场
  130 + $('.carpark-panel', cont)
  131 + .on('state_ready.jstree', function () {
  132 + //绑定checkbox状态切换事件
  133 + $(this).on('check_node.jstree uncheck_node.jstree', gb_map_overlay_mge.drawCarpark);
  134 + })
  135 + .on('activate_node.jstree', function (e, n) {
  136 + var node = n.node;
  137 + if(node.state.checked)
  138 + gb_map_overlay_mge._focus_carpark(node.data);
  139 + })
  140 + .jstree({
  141 + 'core': {
  142 + 'data': get_st_carpark_tree_data()
  143 + },
  144 + 'checkbox': {
  145 + 'keep_selected_style': false,
  146 + 'whole_node': false,
  147 + 'tie_selection': false
  148 + },
  149 + //local storage里的key
  150 + 'state': {
  151 + 'key': 'jstree_map_carpark'
  152 + },
  153 + 'plugins': ['checkbox', 'state']
  154 + });
  155 +
  156 + refresh();
  157 + });
  158 + };
  159 +
  160 + //计算多边形面积
  161 + function calcPolygonArea(polygonStr) {
  162 + var pStr = polygonStr.substring(9, polygonStr.length - 2);
  163 + var array = pStr.split(',');
  164 + var newArr=[];
  165 +
  166 + //递归去掉闭合的尾
  167 + (function () {
  168 + var f = arguments.callee;
  169 + var end=array.length - 1;
  170 + if(array.length > 1 && array[0] == array[end]){
  171 + array = array.slice(0, end);
  172 + f();
  173 + }
  174 + })();
  175 +
  176 + //去掉连续的重复点
  177 + var last;
  178 + $.each(array, function (i, str) {
  179 + if(last){
  180 + if(last != str)
  181 + newArr.push(str);
  182 + }
  183 + else
  184 + newArr.push(str);
  185 + last = str;
  186 + });
  187 +
  188 + var gPoints=[],ts;
  189 + $.each(newArr, function (i, c) {
  190 + ts=c.split(' ');
  191 + gPoints.push({
  192 + lat: parseFloat(ts[1]),
  193 + lng: parseFloat(ts[0])
  194 + });
  195 + });
  196 +
  197 + //用百度geo工具库计算面积
  198 + var _polygonArea = BMapLib.GeoUtils.getPolygonArea(gPoints);
  199 + return {_polygonArea: _polygonArea.toFixed(2), _gPoints: gPoints};
  200 + }
  201 +
  202 + var refresh = function (type, checked) {
  203 + if (!triggerElem())
  204 + return;
  205 +
  206 + if ((type == 'carPark' && checked) || (type == 'station' && !checked)) {
  207 + //显示停车场面板
  208 + $('.car-park-item', cont).addClass('uk-active');
  209 + $('li.cp-tab-btn', '.real_spatial_panel').addClass('uk-active');
  210 + $('.carpark-panel', cont).jstree(true).check_all();
  211 +
  212 + //绘制停车场
  213 + gb_map_overlay_mge.drawCarpark();
  214 + }
  215 + else {
  216 + //显示站点路由面板
  217 + $('.station-route-item', cont).addClass('uk-active');
  218 + $('li.sr-tab-btn', '.real_spatial_panel').addClass('uk-active');
  219 +
  220 + //选中相关站点路由树
  221 + var chs = gb_map_overlay_mge.getCheckedDevice();
  222 + var idx = {};
  223 + $.each(chs, function () {
  224 + idx[this.data.lineId + '_' + this.data.upDown] = 1;
  225 + });
  226 +
  227 + var treeObj = $('.station-route-tree', cont).jstree(true);
  228 + for (var id in idx) {
  229 + treeObj.check_node(treeObj.get_node(id + '_st'));
  230 + }
  231 +
  232 + //drawStation();
  233 + gb_map_overlay_mge.drawStation();
  234 + }
  235 + }
  236 +
  237 + var triggerElem = function () {
  238 + var config = gb_map_config.getConfig().spatialData;
  239 +
  240 + if(config.station || config.carPark){
  241 + showPanel();
  242 + return true;
  243 + }
  244 + hidePanel();
  245 + //gb_map_imap.call('hideAllStationMarker');
  246 + //gb_map_imap.call('hideDrawCarpark');
  247 + return false;
  248 + }
  249 +
  250 + var animationend = 'webkitAnimationEnd animationend';
  251 + var showPanel = function () {
  252 + var elem = $('.real_spatial_panel');
  253 + var config = gb_map_config.getConfig().spatialData;
  254 +
  255 + if (config.station && config.carPark) {
  256 + anim_show($('.uk-subnav', elem), 'uk-animation-scale-up');
  257 + $('.real_spatial_body', elem).addClass('show-tab');
  258 + }
  259 + else {
  260 + $('.uk-subnav', elem).hide();
  261 + $('.real_spatial_body', elem).removeClass('show-tab');
  262 + }
  263 +
  264 + $('li.uk-active', elem).removeClass('uk-active');
  265 +
  266 + if (!elem.is(":hidden"))
  267 + return;
  268 +
  269 + anim_show(elem, 'uk-animation-slide-left');
  270 + }
  271 +
  272 + var hidePanel = function () {
  273 + var elem = $('.real_spatial_panel');
  274 + elem.hide();
  275 + }
  276 +
  277 + function anim_show(e, anim) {
  278 + e.addClass(anim).show().one(animationend, function () {
  279 + $(this).removeClass(anim);
  280 + });
  281 + }
  282 +
  283 + function getCheckedStation() {
  284 + var list = [];
  285 + var chs = $('.station-route-tree', cont).jstree(true).get_checked(true);
  286 + chs = chs.filter(function (item) {
  287 + return item.data;
  288 + });
  289 + $.each(chs, function () {
  290 + list.push(this.data);
  291 + });
  292 + return list;
  293 + }
  294 +
  295 + function gteCheckedCarpark() {
  296 + var list = [];
  297 + var chs = $('.carpark-panel', cont).jstree(true).get_checked(true);
  298 + $.each(chs, function () {
  299 + list.push(this.data);
  300 + });
  301 + return list;
  302 + }
  303 +
  304 + var get_st_route_tree_data = function () {
  305 + var treeData = [];
  306 +
  307 + for (var lineCode in currentLineStationArr) {
  308 + name = gb_data_basic.codeToLine[lineCode].name;
  309 + treeData.push({
  310 + 'text': name,
  311 + 'open': true,
  312 + 'children': [
  313 + {
  314 + 'text': '上行',
  315 + 'children': grabs(currentLineStationArr[lineCode][0]),
  316 + 'id': lineCode + '_0_st'
  317 + },
  318 + {
  319 + 'text': '下行',
  320 + 'children': grabs(currentLineStationArr[lineCode][1]),
  321 + 'id': lineCode + '_1_st'
  322 + }
  323 + ]
  324 + })
  325 + }
  326 + return treeData;
  327 + };
  328 + var get_st_route_tree_data_version = function () {
  329 + var treeData = [];
  330 +
  331 + for (var lineCode in lineVersionStationArr) {
  332 + name = gb_data_basic.codeToLine[lineCode].name;
  333 + treeData.push({
  334 + 'text': name,
  335 + 'open': true,
  336 + 'children': [
  337 + {
  338 + 'text': '上行',
  339 + 'children': grabs(lineVersionStationArr[lineCode][0]),
  340 + 'id': lineCode + '_0_st'
  341 + },
  342 + {
  343 + 'text': '下行',
  344 + 'children': grabs(lineVersionStationArr[lineCode][1]),
  345 + 'id': lineCode + '_1_st'
  346 + }
  347 + ]
  348 + })
  349 + }
  350 + return treeData;
  351 + };
  352 + var get_st_carpark_tree_data = function () {
  353 + var treeData = [];
  354 +
  355 + $.each(carparkArr, function () {
  356 + treeData.push({
  357 + 'text': this.parkName,
  358 + 'data': this
  359 + });
  360 + });
  361 +
  362 + return treeData;
  363 + }
  364 +
  365 + var grabs = function (array) {
  366 + if (!array)
  367 + return;
  368 + var rs = [];
  369 + $.each(array, function () {
  370 + rs.push({
  371 + 'text': this.stationName,
  372 + 'data': this,
  373 + 'icon': false
  374 + });
  375 + });
  376 + return rs;
  377 + }
  378 +
  379 + return {
  380 + refresh: refresh,
  381 + init: init,
  382 + getCheckedStation:getCheckedStation,
  383 + gteCheckedCarpark: gteCheckedCarpark,
  384 + getStationArray: function (lineCode) {
  385 + return lineStationArr[lineCode];
  386 + },
  387 + carparkArray: function () {
  388 + return carparkArr;
  389 + }
  390 + };
362 })(); 391 })();
363 \ No newline at end of file 392 \ No newline at end of file