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 108 //发送邮件
109 109 EmailBean mail = new EmailBean();
110 110 mail.setSubject("线调GPS处理");
111   - mail.setContent("GPS处理超时,检查线程栈文件信息<br/>");
  111 + mail.setContent("GPS处理超时,检查文件信息<br/>");
112 112 sendEmailController.sendMail("113252620@qq.com", mail);
113 113 logger.info("DataHandlerProcess:邮件发送成功!");
114 114 } catch (Exception e){
... ...
src/main/resources/static/pages/forms/calc/calcsingledata.html
1   -<style type="text/css">
  1 +<style type="text/css">
2 2 .table-bordered {
3 3 border: 1px solid; }
4 4 .table-bordered > thead > tr > th,
... ... @@ -40,14 +40,6 @@
40 40 <span class="item-label" style="width: 80px;">线路: </span>
41 41 <select class="form-control" name="line" id="line" style="width: 140px;"></select>
42 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 43 <div style="margin-top: 10px"></div>
52 44 <div style="display: inline-block;margin-left: 3px;">
53 45 <span class="item-label" style="width: 140px;">开始时间: </span>
... ... @@ -108,7 +100,6 @@
108 100 if (!$('body').hasClass('page-sidebar-closed'))
109 101 $('.menu-toggler.sidebar-toggler').click();
110 102  
111   -
112 103 var d = new Date();
113 104 d.setTime(d.getTime() - 4*1000*60*60*24);
114 105 var year = d.getFullYear();
... ... @@ -118,20 +109,13 @@
118 109 month = "0" + month;
119 110 if(day < 10)
120 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 114 format : 'YYYY-MM-DD',
129 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 120 var fage=false;
137 121 var xlList;
... ... @@ -211,8 +195,6 @@
211 195 }
212 196 });
213 197  
214   - $("#sfdcDiv").hide();
215   -
216 198 var cont = "驾驶员", cont1 = "", cont2 = "", cont3 = "";
217 199 $("#tjtype").on("change",function(){
218 200 if(cont == "驾驶员"){
... ... @@ -225,13 +207,10 @@
225 207 cont = $("#tjtype").val();
226 208 if($("#tjtype").val() == "驾驶员"){
227 209 $("#cont").val(cont1);
228   - $("#sfdcDiv").hide();
229 210 } else if($("#tjtype").val() == "售票员"){
230 211 $("#cont").val(cont2);
231   - $("#sfdcDiv").hide();
232 212 } else if($("#tjtype").val() == "车辆自编号"){
233 213 $("#cont").val(cont3);
234   - $("#sfdcDiv").show();
235 214 }
236 215 });
237 216  
... ... @@ -252,10 +231,9 @@
252 231 var fgsdmSing = $("#fgsdmSing").val();
253 232 var tjtype=$("#tjtype").val();
254 233 var cont=$("#cont").val();
255   - var sfdc=$("#sfdc").val();
256 234 var params = {};
257 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 237 layer.close(i);
260 238 var singledata = template('singledata',{list:result});
261 239 // 把渲染好的模版html文本追加到表格中
... ... @@ -271,12 +249,11 @@
271 249 var fgsdmSing = $("#fgsdmSing").val();
272 250 var tjtype=$("#tjtype").val();
273 251 var cont=$("#cont").val();
274   - var sfdc=$("#sfdc").val();
275 252 var lineName = $('#line option:selected').text();
276 253 if(lineName == "全部线路")
277 254 lineName = $('#fgsdmSing option:selected').text();
278 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 257 var dateTime = "";
281 258 if(startDate == endDate){
282 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 2 .table-bordered {
3 3 border: 1px solid; }
4 4 .table-bordered > thead > tr > th,
... ... @@ -150,7 +150,7 @@
150 150 $('.menu-toggler.sidebar-toggler').click();
151 151  
152 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 154 var year = d.getFullYear();
155 155 var month = d.getMonth() + 1;
156 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 2 .table-bordered {
3 3 border: 1px solid; }
4 4 .table-bordered > thead > tr > th,
... ... @@ -123,7 +123,7 @@
123 123  
124 124  
125 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 127 var year = d.getFullYear();
128 128 var month = d.getMonth() + 1;
129 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 2 .table-bordered {
3 3 border: 1px solid; }
4 4 .table-bordered > thead > tr > th,
... ... @@ -113,7 +113,7 @@
113 113  
114 114  
115 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 117 var year = d.getFullYear();
118 118 var month = d.getMonth() + 1;
119 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 392 \ No newline at end of file
... ...