Commit 358a13c2a8628fc6a458fe0c877c52f452aab294

Authored by 李强
1 parent 19277052

站距功能添加,时刻表明细制作功能修订.

src/main/java/com/bsth/controller/StationRouteController.java
... ... @@ -111,7 +111,6 @@ public class StationRouteController extends BaseController<StationRoute, Integer
111 111 */
112 112 @RequestMapping(value = "/findStationRouteInfo",method = RequestMethod.GET)
113 113 public List<Map<String, Object>> findStationRouteInfo(@RequestParam Map<String, Object> map) {
114   -
115 114 return service.findStationRouteInfo(map);
116 115 }
117 116  
... ... @@ -140,4 +139,13 @@ public class StationRouteController extends BaseController&lt;StationRoute, Integer
140 139 return service.updSwitchDir(lineIds);
141 140 }
142 141  
  142 + /**
  143 + *
  144 + * @Title: upddis
  145 + * @Description: TODO(更新站距)
  146 + */
  147 + @RequestMapping(value = "/upddis",method = RequestMethod.POST)
  148 + public Map<String, Object> upddis(@RequestParam Map<String, Object> map) {
  149 + return service.upddis(map);
  150 + }
143 151 }
... ...
src/main/java/com/bsth/repository/StationRouteRepository.java
... ... @@ -272,4 +272,8 @@ public interface StationRouteRepository extends BaseRepository&lt;StationRoute, Int
272 272 @Modifying
273 273 @Query(value="update bsth_c_stationroute set directions = case directions when 1 then 0 when 0 then 1 end where line_code = ?1 ", nativeQuery=true)
274 274 public void stationRouteDir(Integer line);
  275 +
  276 + @Modifying
  277 + @Query(value="update bsth_c_stationroute set distances =?2 where id = ?1 ", nativeQuery=true)
  278 + public void upddis(Integer id,Double dis);
275 279 }
... ...
src/main/java/com/bsth/service/StationRouteService.java
... ... @@ -82,4 +82,6 @@ public interface StationRouteService extends BaseService&lt;StationRoute, Integer&gt;
82 82 Map<String, Object> findByMultiLine(String lineIds);
83 83  
84 84 Map<String, Object> updSwitchDir(String lineIds);
  85 +
  86 + Map<String, Object> upddis(Map<String, Object> map);
85 87 }
... ...
src/main/java/com/bsth/service/impl/StationRouteServiceImpl.java
... ... @@ -1100,4 +1100,24 @@ public class StationRouteServiceImpl extends BaseServiceImpl&lt;StationRoute, Integ
1100 1100 }
1101 1101 return rs;
1102 1102 }
  1103 +
  1104 + @Override
  1105 + @Transactional
  1106 + public Map<String, Object> upddis(Map<String, Object> map) {
  1107 + Map<String, Object> rs = new HashMap<>();
  1108 + try{
  1109 + Iterator it = map.entrySet().iterator();
  1110 + while(it.hasNext()){
  1111 + java.util.Map.Entry entry = (java.util.Map.Entry)it.next();
  1112 + Integer id = Integer.parseInt(entry.getKey().toString().split("_")[1]); //返回对应的键
  1113 + Double dis = Double.parseDouble(entry.getValue().toString()) / 1000; //返回对应的值
  1114 + repository.upddis(id, dis);
  1115 + }
  1116 + rs.put("status", ResponseCode.SUCCESS);
  1117 + }catch(Exception e){
  1118 + logger.error("", e);
  1119 + rs.put("status", ResponseCode.ERROR);
  1120 + }
  1121 + return rs;
  1122 + }
1103 1123 }
... ...
src/main/resources/static/pages/base/stationroute/js/stationroute-ajax-getdata.js
... ... @@ -168,6 +168,13 @@ var GetAjaxData = function(){
168 168 },
169 169  
170 170 // 查询路段信息
  171 + getStationRouteInfo : function(lineId,direction,callback) {
  172 + $get('/stationroute/all',{'line.id_eq' : lineId , 'directions_eq' : direction},function(resultdata) {
  173 + callback && callback(resultdata);
  174 + });
  175 + },
  176 +
  177 + // 查询路段信息
171 178 getSectionRouteInfo : function(lineId,direction,callback) {
172 179 $get('/sectionroute/findSection',{'line.id_eq' : lineId , 'directions_eq' : direction},function(resultdata) {
173 180 callback && callback(resultdata);
... ...
src/main/resources/static/pages/base/stationroute/js/stationroute-list-events.js
... ... @@ -122,6 +122,27 @@ $(function(){
122 122 });*/
123 123 });
124 124  
  125 + $('#wrenchUpDis').on('click',function() {
  126 + var Line = LineObj.getLineObj();
  127 + GetAjaxData.getStation(Line.id,directionUpValue,function(rd) {
  128 + // 加载其它规划选择弹出层mobal页面
  129 + $.get('tzzj.html', function(m){
  130 + $(pjaxContainer).append(m);
  131 + $('#tzzj_mobal').trigger('tzzjMobal.show', [WorldsBMap,GetAjaxData,directionUpValue,Line.id,PublicFunctions,rd[0].children[0].children]);
  132 + });
  133 + });
  134 + })
  135 +
  136 + $('#wrenchDownDis').on('click',function() {
  137 + var Line = LineObj.getLineObj();
  138 + GetAjaxData.getStation(Line.id,directionDownValue,function(rd) {
  139 + // 加载其它规划选择弹出层mobal页面
  140 + $.get('tzzj.html', function(m){
  141 + $(pjaxContainer).append(m);
  142 + $('#tzzj_mobal').trigger('tzzjMobal.show', [WorldsBMap,GetAjaxData,directionDownValue,Line.id,PublicFunctions,rd[0].children[0].children]);
  143 + });
  144 + });
  145 + })
125 146  
126 147 $('#quoteDown').on('click',function() {
127 148 // 弹出提示层.
... ...
src/main/resources/static/pages/base/stationroute/list.html
... ... @@ -63,6 +63,10 @@
63 63 </li>
64 64 <li class="divider"> </li>
65 65 <li>
  66 + <a href="javascript:;" id="wrenchUpDis"><i class="fa fa-wrench"></i> 设置上行站距</a>
  67 + </li>
  68 + <li class="divider"> </li>
  69 + <li>
66 70 <a href="javascript:;" id="quoteDown"><i class="fa fa-long-arrow-down"></i> 引用下行路段</a>
67 71 </li>
68 72 <!-- <li>
... ... @@ -154,6 +158,10 @@
154 158 </li>
155 159 <li class="divider"> </li>
156 160 <li>
  161 + <a href="javascript:;" id="wrenchDownDis"><i class="fa fa-wrench"></i> 设置下行站距</a>
  162 + </li>
  163 + <li class="divider"> </li>
  164 + <li>
157 165 <a href="javascript:;" id="quoteUp"><i class="fa fa-long-arrow-up"></i> 引用上行路段</a>
158 166 </li>
159 167 <!-- <li>
... ...
src/main/resources/static/pages/base/stationroute/tzzj.html 0 → 100644
  1 +<!-- 调整站距 -->
  2 +<div class="modal fade" id="tzzj_mobal" tabindex="-1" role="basic" aria-hidden="true">
  3 + <div class="modal-dialog">
  4 + <div class="modal-content">
  5 + <div class="modal-header">
  6 + <button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
  7 + <h4 class="modal-title">调整站距 </h4>
  8 + </div>
  9 + <div class="modal-body">
  10 + <form class="form-horizontal" action="/" method="post" id="tzbcForm" role="form">
  11 + <!-- alert-danger 组件START -->
  12 + <div class="alert alert-danger display-hide" id="tzbcAlert">
  13 + <button class="close" data-close="alert"></button>
  14 + 您的输入有误,请检查下面的输入项
  15 + </div>
  16 + <div class="portlet-body">
  17 + <div class="table-container" style="margin-top: 10px">
  18 + <table class="table table-striped table-bordered table-hover table-checkable" id="datatable_bctz">
  19 + <thead>
  20 + <tr role="row" class="heading">
  21 + <th width="1%"></th>
  22 + <th width="33%">站点序号</th>
  23 + <th width="33%">站点路由</th>
  24 + <th width="33%">站距(米/单位)</th>
  25 + </tr>
  26 + </thead>
  27 + <tbody></tbody>
  28 + </table>
  29 + </div>
  30 + </div>
  31 + </form>
  32 + </div>
  33 + <div class="modal-footer">
  34 + <button type="button" class="btn default" data-dismiss="modal">取消</button>
  35 + <button type="button" class="btn btn-primary" id="tzbcnext">保存</button>
  36 + </div>
  37 + </div>
  38 + </div>
  39 +</div>
  40 +<script type="text/html" id="tzzj_temp">
  41 +{{each list as obj i }}
  42 + <tr role="row" class="filter">
  43 + <td></td>
  44 + <td>
  45 + <!--<input type="text" readonly class="form-control form-filter input-sm" value="{{i+1}}">-->
  46 + {{i+1}}
  47 + </td>
  48 + <td>
  49 + <!-- <input type="text" readonly class="form-control form-filter input-sm" name="station_{{i+1}}" value="{{obj.name}}">-->
  50 + {{obj.name}}
  51 + </td>
  52 + <td>
  53 + <input type="text" class="form-control form-filter input-sm" name="dis_{{obj.stationRouteId}}" value="{{obj.stationRouteDistances * 1000}}">
  54 + </td>
  55 + </tr>
  56 +{{/each}}
  57 +{{if list.length == 0}}
  58 + <tr>
  59 + <td colspan=4><h6 class="muted">没有找到相关数据</h6></td>
  60 + </tr>
  61 + {{/if}}
  62 +</script>
  63 +<script type="text/javascript">
  64 +$('#tzzj_mobal').on('tzzjMobal.show', function(e,map,gd,dir,lineid,pf,rd){
  65 + setTimeout(function(){
  66 + // 加载延迟200毫秒显示mobal
  67 + $('#tzzj_mobal').modal({show : true,backdrop: 'static', keyboard: false});
  68 + },200);
  69 + // 当模态框对用户可见时触发(将等待 CSS 过渡效果完成)。
  70 + $('#tzzj_mobal').on('show.bs.modal', function () {
  71 + console.log(rd);
  72 + // 把数据填充到模版中
  73 + var tbodyHtml = template('tzzj_temp',{list:rd});
  74 + // 把渲染好的模版html文本追加到表格中
  75 + $('#datatable_bctz tbody').html(tbodyHtml);
  76 + });
  77 + // 获取表单元素
  78 + var form = $('#tzbcForm');
  79 + // 错误提示元素
  80 + var tzbcAlert = $('#tzbcAlert', form);
  81 + // 下一步点击事件
  82 + $('#tzbcnext').on('click', function() {
  83 + form.submit();// 表单提交
  84 + });
  85 + // 表单验证
  86 + form.validate({
  87 + errorElement : 'span',
  88 + errorClass : 'help-block help-block-error',
  89 + focusInvalid : false,
  90 + rules : {
  91 + },
  92 + invalidHandler : function(event, validator) {
  93 + tzbcAlert.show();
  94 + App.scrollTo(reladplusname, -200);
  95 + },
  96 + highlight : function(element) {
  97 + $(element).closest('.form-group').addClass('has-error');
  98 + },
  99 + unhighlight : function(element) {
  100 + $(element).closest('.form-group').removeClass('has-error');
  101 + },
  102 + success : function(label) {
  103 + label.closest('.form-group').removeClass('has-error');
  104 + },
  105 + submitHandler : function(f) {
  106 + // 获取表单内容,并序列化
  107 + var params = form.serializeJSON();
  108 + $post('/stationroute/upddis',params,function(data) {
  109 + // 隐藏错误提示
  110 + tzbcAlert.hide();
  111 + // 隐藏 reladplus_mobal 弹出层
  112 + $('#tzzj_mobal').modal('hide');
  113 + if(data.status=='SUCCESS') {
  114 + // 弹出添加成功提示消息
  115 + layer.msg('修改成功...');
  116 + map.clearMarkAndOverlays();
  117 + // 刷新左边树
  118 + pf.resjtreeDate(lineid,dir);
  119 + pf.resjtreeDate(lineid,dir);
  120 + /** 查询上行路段信息 @param:<Line.id:线路Id;0:上行> @return:data:路段数据 */
  121 + gd.getSectionRouteInfo(lineid,dir,function(data) {
  122 + /** 在地图上画出线路走向 @param:<Line.id:线路Id;0:上行;data:路段数据> */
  123 + pf.linePanlThree(lineid,data,dir);
  124 + });
  125 + }else {
  126 + // 弹出添加失败提示消息
  127 + layer.msg('修改失败...');
  128 + }
  129 + });
  130 + }
  131 + });
  132 +});
  133 +</script>
0 134 \ No newline at end of file
... ...
src/main/resources/static/pages/base/timesmodel/add.html
... ... @@ -9,7 +9,6 @@
9 9 width: 69%;
10 10 }
11 11 </style>
12   -
13 12 <!-- 片段标题 START -->
14 13 <div class="page-head">
15 14 <div class="page-title">
... ... @@ -17,8 +16,6 @@
17 16 </div>
18 17 </div>
19 18 <!-- 片段标题 END -->
20   -
21   -
22 19 <!-- 线路信息导航栏组件 START -->
23 20 <ul class="page-breadcrumb breadcrumb">
24 21 <li><a href="/pages/home.html" data-pjax>首页</a> <i class="fa fa-circle"></i></li>
... ... @@ -26,8 +23,6 @@
26 23 <li><span class="active">时刻表明细制作建模</span></li>
27 24 </ul>
28 25 <!-- 线路信息导航栏组件 END -->
29   -
30   -
31 26 <div class="portlet light bordered" id="form-wizard-info">
32 27 <div class="portlet-title">
33 28 <div class="caption">
... ... @@ -44,7 +39,6 @@
44 39 </div>
45 40 </div>
46 41 <div class="portlet-body form">
47   -
48 42 <!-- START FORM 表单容器 -->
49 43 <form class="form-horizontal" id="submit_argus_form" action="/" method="POST" novalidate="novalidate">
50 44 <div class="form-wizard">
... ... @@ -94,7 +88,6 @@
94 88 <button class="close" data-dismiss="alert"></button>
95 89 验证成功!
96 90 </div>
97   -
98 91 <!-- 线路名称 -->
99 92 <div class="tab-pane active" id="tab1">
100 93 <h3 class="block"> 选择时刻表 </h3>
... ...
src/main/resources/static/pages/base/timesmodel/js/add-form-wizard.js
1 1  
2 2 /**
3   - * 表单的导航向导、验证、提交
4   - *
  3 + * @description : (TODO) 表单的导航向导、验证、提交
5 4 */
6 5  
7 6 var SKBFormWizard = function() {
  7 +
  8 + var bxrcGs = [ {'type':'六工一休','hoursV':6.66, 'minueV':'6:40'},
  9 + {'type':'五工一休','hoursV':6.85, 'minueV':'6:51'},
  10 + {'type':'四工一休','hoursV':7.14, 'minueV':'7:08'},
  11 + {'type':'三工一休','hoursV':7.61, 'minueV':'7:37'},
  12 + {'type':'二工一休','hoursV':8.57, 'minueV':'8:34'},
  13 + {'type':'一工一休','hoursV':11.42, 'minueV':'11:25'},
  14 + {'type':'五工二休','hoursV':7.99, 'minueV':'8:00'},
  15 + {'type':'无工休', 'hoursV':5.43, 'minueV':'5:43'}];
  16 +
  17 + /**
  18 + * @description : (TODO) 获取停站时间.
  19 + *
  20 + * @param [o--当前班次对象;d--班次数组对象;sj--当前班次时间]
  21 + *
  22 + * @return 返回相邻班次的停站时间.
  23 + * */
  24 + function gettzsj(o,d,sj) {
  25 + // 定义停站时间.
  26 + var tzsj = 0;
  27 + // 变量班次数组对象.
  28 + for(var i = 0 ;i<d.length;i++) {
  29 + // 判断是否为同一个路牌.
  30 + if(o.lp.lpNo == d[i].lp.lpNo && o.lp.id == d[i].lp.id) {
  31 + // 判断是否为当前班次的下一个班次.
  32 + if(d[i].fcno - o.fcno ==1){
  33 + // 计算停站时间.
  34 + tzsj = (strToTime(d[i].fcsj) -strToTime(sj)) / 60000;
  35 + continue;
  36 + }
  37 + }
  38 + }
  39 + // 返回停站时间.
  40 + return tzsj;
  41 + }
  42 +
  43 + /**
  44 + * @description : (TODO) 是否切换线路值转换.
  45 + *
  46 + * @param [d--是否切换线路原始值].
  47 + *
  48 + * @return 返回一个是否切换线路值的转换.
  49 + * */
  50 + function isSwitchXlTodm(d) {
  51 + var rstr = 0;
  52 + if(d)
  53 + rstr = 1;
  54 + return rstr;
  55 + }
  56 +
  57 + /**
  58 + * @description : (TODO) 是否分班值转换.
  59 + *
  60 + * @param [d--是否分班原始值].
  61 + *
  62 + * @return 返回一个是否分班值的转换.
  63 + * */
  64 + function isfbTodm(b) {
  65 + var rstr = 0;
  66 + if(b)
  67 + rstr = 1;
  68 + return rstr;
  69 + }
  70 +
  71 + /**
  72 + * @description : (TODO) 获取某个班次的到达时间字符串.
  73 + *
  74 + * @param [tStr--发车时间格式字符串;bcsj--班次历时].
  75 + *
  76 + * @return 返回一个某个班次的到达时间字符串.
  77 + * */
  78 + function getddsj(tStr,bcsj) {
  79 + // 定义当前时间对象.
  80 + var date = new Date();
  81 + // 分割字符串.
  82 + var _str = tStr.split(':');
  83 + // 设值小时.
  84 + date.setHours(parseInt(_str[0]));
  85 + // 设值分钟.
  86 + date.setMiutes(parseInt(_str[1]) + bcsj);
  87 + // 返回到达时间字符串.
  88 + return getTimeStr(date);
  89 + }
  90 +
  91 + /**
  92 + * @description : (TODO) 时间点格式字符串转时间对象.
  93 + *
  94 + * @param [t--时间点格式字符串]
  95 + *
  96 + * @return 返回一个时间点格式字符串转时间对象.
  97 + * */
  98 + var strToTime = function(t) {
  99 + // 定义当前时间对象.
  100 + var d = new Date;
  101 + // 判断是否为空.
  102 + if(t) {
  103 + // 分割字符串.
  104 + var _str = t.split(':');
  105 + // 设值小时.
  106 + d.setHours(parseInt(_str[0]));
  107 + // 设值分钟.
  108 + d.setMinutes(parseInt(_str[1]));
  109 + }
  110 + // 返回一个时间点格式字符串转时间对象.
  111 + return d;
  112 + }
  113 +
  114 + /**
  115 + * @description : (TODO) 时间对象转时间点格式字符串.
  116 + *
  117 + * @param [t--时间对象]
  118 + *
  119 + * @return 返回一个时间对象转时间点格式字符串.
  120 + * */
  121 + function getTimeStr(t) {
  122 + // 定义返回值.
  123 + var _str = '';
  124 + // 判断是否为空.
  125 + if(t) {
  126 + // 重新赋值.
  127 + _str = ((t.getHours()<10? '0' + t.getHours() : t.getHours()) == '00' ? '24' :(t.getHours()<10? '0' + t.getHours() : t.getHours()))
  128 + +':'
  129 + +(t.getMinutes()<10? '0' + t.getMinutes() : t.getMinutes());
  130 + }
  131 + // 返回时间对象转时间点格式字符串.
  132 + return _str;
  133 + }
  134 +
  135 + /**
  136 + * @description : (TODO) 方向值转换.
  137 + *
  138 + * @param [d--方向原始值].
  139 + *
  140 + * @return 返回一个方向值转换.
  141 + * */
  142 + function dmToDh(t) {
  143 + // 定义返回值.
  144 + var reslStr = '';
  145 + // 上行.
  146 + if(t=='0')
  147 + reslStr = 'relationshipGraph-up';
  148 + // 下行.
  149 + else if(t=='1')
  150 + reslStr = 'relationshipGraph-down';
  151 + // 返回一个方向值转换.
  152 + return reslStr;
  153 + }
  154 +
  155 + /**
  156 + * @description : (TODO) 获取线路标准详情.
  157 + *
  158 + * @param [lineId--线路ID;cb--回调函数].
  159 + *
  160 + * @return 返回线路标准详情.
  161 + *
  162 + * @status OK.
  163 + * */
8 164 var getLineInfo = function(lineId,cb) {
9   - // 根据线路标准ID查询详情
  165 + // 1、get异步请求.根据线路ID查询详情.
10 166 $get('/lineInformation',{'line.id_eq':lineId},function(result) {
  167 + // 2、返回线路标准详情.
11 168 return cb && cb(result);
12 169 });
13 170 }
  171 +
  172 + /**
  173 + * @description : (TODO) 获取所有的停车场详情.
  174 + *
  175 + * @param [cb--回调函数].
  176 + *
  177 + * @return 返回所有的停车场详情.
  178 + *
  179 + * @status OK.
  180 + * */
14 181 var gettccInfo = function (cb) {
  182 + // 1、get异步请求.获取所有的停车场详情.
15 183 $get('/carpark/all',null, function(cd){
  184 + // 2、返回所有的停车场详情.
16 185 return cb && cb(cd);
17 186 });
18 187 }
19 188  
  189 + /**
  190 + * @description : (TODO) 时间格式字符串转时间对象.
  191 + *
  192 + * @param [time--时间格式字符串].
  193 + *
  194 + * @return 返回一个时间对象.
  195 + *
  196 + * @status OK.
  197 + * */
20 198 var getDateTime = function(time) {
  199 + // 1、定义一个时间对象.
21 200 var dateTime = new Date();
  201 + // 2、判断参数是否为空或者为undefined.
22 202 if(time !=null && time !='' && typeof(time) !='undefined') {
  203 + // 3、给时间对象重新赋值.
23 204 dateTime = new Date(Date.parse(time.replace(/-/g, "/")));
24 205 }
  206 + // 4、返回时间对象.
25 207 return dateTime;
26 208 }
27 209  
28   -
  210 + /**
  211 + * @description : (TODO) 客流方式填充表单时.根据表单参数封装时间段内的车辆数.
  212 + *
  213 + * @param : [map--表单参数]
  214 + *
  215 + * @returns 返回一个根据表单参数封装时间段内的车辆数数组.
  216 + *
  217 + * @status OK.
  218 + * */
29 219 function getsjdArr(map) {
  220 + // 1、获取营运的开始与结束时间点.
30 221 var seMap = getStartAndEndDate(map);
31   - return [{'num':0,'time':seMap.s + '-' + map.earlyStartTime},
32   - {'num':0,'time':map.earlyStartTime + '-' + map.earlyEndTime},
33   - {'num':0,'time':map.earlyEndTime + '-' + map.lateStartTime},
34   - {'num':0,'time':map.lateStartTime + '-' + map.lateEndTime},
35   - {'num':0,'time':map.lateEndTime + '-' + seMap.e}];
  222 + // 2、返回一个根据表单参数封装时间段内的车辆数数组.
  223 + return [{'num':0,'time':seMap.s + '-' + map.earlyStartTime},// 早高峰之前时间段内的车辆.
  224 + {'num':0,'time':map.earlyStartTime + '-' + map.earlyEndTime}, // 早高峰时间段内的车辆.
  225 + {'num':0,'time':map.earlyEndTime + '-' + map.lateStartTime},// 高峰之间时间段内的车辆
  226 + {'num':0,'time':map.lateStartTime + '-' + map.lateEndTime},// 晚高峰时间段内的车辆.
  227 + {'num':0,'time':map.lateEndTime + '-' + seMap.e}];// 晚高峰之后时间段内的车辆.
36 228 }
37   -
38   - function getStartAndEndDate(map) {
39   - return {'s':getMinDate(map.line.startStationFirstTime,map.line.endStationFirstTime),
40   - 'e':getMaxDate(map.line.startStationEndTime,map.line.endStationEndTime)}
41   - }
42   -
  229 +
  230 + /**
  231 + * @description : (TODO) 获取最小时间(字符串).
  232 + *
  233 + * @param [d1--时间1;d2--时间2].
  234 + *
  235 + * @return 返回一个最小时间(字符串).
  236 + *
  237 + * @status OK.
  238 + * */
43 239 function getMinDate(d1,d2) {
  240 + // 1、定义返回字符串.
44 241 var str = '';
  242 + // 2、判断时间大小.
45 243 if(strToTime(d1)>strToTime(d2))
46 244 str = d2;
47 245 else
48 246 str = d1;
  247 + // 3、返回最小时间(字符串).
49 248 return str;
50 249 }
51 250  
52   - function strToTime(t) {
53   - var d = new Date();
54   - if(t) {
55   - var _str = t.split(':');
56   - d.setHours(parseInt(_str[0]));
57   - d.setMinutes(parseInt(_str[1]));
58   - }
59   - return d;
60   - }
61   -
  251 + /**
  252 + * @description : (TODO) 获取最大时间(字符串).
  253 + *
  254 + * @param [d1--时间1;d2--时间2].
  255 + *
  256 + * @return 返回一个最大时间(字符串).
  257 + *
  258 + * @status OK.
  259 + * */
62 260 function getMaxDate(d1,d2) {
  261 + // 1、定义返回时间字符串.
63 262 var str = '';
  263 + // 2、判断时间大小.
64 264 if(strToTime(d1)>strToTime(d2))
65 265 str = d1;
66 266 else
67 267 str = d2;
  268 + // 3、返回一个最大时间(字符串).
68 269 return str;
69 270 }
70 271  
  272 + /**
  273 + * @description : (TODO) 判断是否这时间段内.
  274 + *
  275 + * @param [st--开始时间;ed--结束时间;sj--当前判断的时间]
  276 + *
  277 + * @return 返回一个布尔值.
  278 + *
  279 + * @status OK.
  280 + * */
71 281 function issjd(st,ed,sj) {
  282 + // 1、定义返回值.
72 283 var tag = false;
  284 + // 2、判断时间大小.
73 285 if(sj<=ed && sj>=st)
  286 + // 3、重新赋值返回值.
74 287 tag = true;
  288 + // 4、返回判断结果布尔值.
75 289 return tag;
76 290 }
77 291  
  292 + /**
  293 + * @description : (TODO) 获取客流数据.
  294 + *
  295 + * @params [url--请求地址;data--请求参数;cb--回调函数]
  296 + *
  297 + * */
  298 + function getJSONP(url, data, cb) {
  299 + $.ajax({
  300 + url : url,
  301 + type : "GET",
  302 + dataType : 'jsonp',
  303 + jsonp : 'jsoncallback',
  304 + data : data,
  305 + success : cb
  306 + });
  307 + }
  308 +
  309 + /**
  310 + * @description : (TODO) 根据获取参数方式来获取表单参数详情html模版页.
  311 + *
  312 + * @param [n--获取参数方式;map--表单参数;lineId--线路ID;krl--客容量;cb--回调函数]
  313 + *
  314 + * @return 返回表单参数详情html模版页.
  315 + *
  316 + * @status OK.
  317 + * */
78 318 var getHtmlTemp = function(n,map,lineId,krl,cb) {
79   - var zzsj = parseInt(map.upTravelTime) + 10*2 + parseInt(map.downTravelTime);
  319 + // 1、定义模版名称.
80 320 var tempName = '';
81   - var date = new Date(),
82   - rq = date.getFullYear() + '-' + (date.getMonth()+1) + '-' + (date.getDate()-3);
83   - var startDateTime = rq + ' ' + '00:00';
84   - var endDateTime = rq + ' ' + '23:59';
85   - var params = {'xlid':'10773','startDateTime':startDateTime,'endDateTime':endDateTime,'zzsj':zzsj};
86   - if(n==0) {
  321 + if(n==0)
87 322 tempName = 'carnum_temp';
88   - }else if(n==1) {
89   - tempName = 'bctype_temp';
90   - }
  323 + else if(n==1)
  324 + tempName = 'bctype_temp';
  325 + // 2、获参数详情模版html内容.
91 326 $.get('/pages/base/timesmodel/tepms/'+ tempName + '.html', function(html){
92 327 $('#tab3').append(html);
93   - map.lb = 15;
94   - map.workeLunch = 20;
95   - map.workeDinner = 20;
96   - map.mixstopTime = 3;
97   - map.maxstopTime = 20;
98   - map.stopTime = 10;
  328 + map.lb = 15;// 定义例保时间.
  329 + map.workeLunch = 20;// 定义午餐时间.
  330 + map.workeDinner = 20;// 定义晚餐时间.
  331 + map.mixstopTime = 3;// 定义最小停站间隙
  332 + map.maxstopTime = 22;// 定义最大停站间隙.
  333 + map.stopTime = 10;// 定义停站时间.
99 334 if(n==0) {
100   - getJSONP("http://139.196.13.237:8080/bsth-busfareflow-gj/Crlcxb/selectsjbctgl.do",params,function(json){
101   - console.log(json);
  335 + // 定义一个周转时间.
  336 + var zzsj = parseInt(map.upTravelTime) + 10*2 + parseInt(map.downTravelTime);
  337 + // 定义时间对象.
  338 + var date = new Date(),
  339 + rq = date.getFullYear() + '-' + (date.getMonth()+1) + '-' + (date.getDate()-7);
  340 + // 定义开始时间字符串.
  341 + var startDateTime = rq + ' ' + '00:00';
  342 + // 定义结束时间自妇产.
  343 + var endDateTime = rq + ' ' + '23:59';
  344 + // 定义请求参数集合.
  345 + var params = {'xlid':lineId,'startDateTime':startDateTime,'endDateTime':endDateTime,'zzsj':zzsj};
  346 + /**
  347 + * getJSONP请求获取客流数据.
  348 + *
  349 + * 返回的是一个每次以半小时为间隔作为开始时间点, 在加上周转时间作为结束时间点的 时段段内的客流最大通过量.
  350 + * */
  351 + getJSONP("http://139.196.13.237:8080/bsth-busfareflow-gj/Crlcxb/selectsjbctgl.do",params,function(json){
  352 + // 定义时段集合,可容量.
102 353 var sjdArr = getsjdArr(map),krlInt = parseInt(krl);
  354 + // 遍历时段集合.
103 355 for(var s = 0 ; s<sjdArr.length;s++) {
  356 + // 分割时间段.
104 357 var strA = sjdArr[s].time.split('-');
  358 + // 定义开始时间与结束时间,车辆数.
105 359 var st = getDateTime(rq + ' ' + strA[0]),et = getDateTime(rq + ' ' + strA[1]),num = 0;
  360 + // 遍历时间段内的客流数据集合.
106 361 for(var j = 0 ; j < json.length; j ++) {
  362 + // 定义当前客流班次产生的时间.
107 363 var dqsj = getDateTime(json[j].sj);
  364 + // 判断是否这时间段内.
108 365 if(issjd(st,et,dqsj)) {
  366 + // 车辆数相加.
109 367 num = num + Math.ceil(parseInt(json[j].tgl)/krlInt);
110 368 }
111 369 }
112 370 sjdArr[s].num = num;
113 371 }
114   - /*map.zgfbeforepcs = sjdArr[0].num;
115   - map.zgfpcs = sjdArr[1].num;
116   - map.gfzjpcs = sjdArr[2].num;
117   - map.wgfpcs = sjdArr[3].num;
118   - map.wgfafterpcs = sjdArr[4].num;*/
119   - map.zgfbeforepcs = 3;
120   - map.zgfpcs = 10;
121   - map.gfzjpcs = 8;
122   - map.wgfpcs = 10;
123   - map.wgfafterpcs = 5;
124   -
  372 + map.zgfbeforepcs = sjdArr[0].num;// 早高峰前配车数
  373 + map.zgfpcs = sjdArr[2].num;// 早高峰配车数
  374 + map.gfzjpcs = sjdArr[4].num;// 高峰之间配车数
  375 + map.wgfpcs = sjdArr[2].num ;// 晚高峰配车数
  376 + map.wgfafterpcs = sjdArr[1].num + sjdArr[3].num;// 晚高峰后配车数
  377 + // 返回参数详情模版.
125 378 return cb && cb ({'forminput':template(tempName,{map:map}),'datadisplay': template(tempName +'config',{map:null})});
126 379 });
127 380 }else if(n==1) {
  381 + // 返回参数详情模版.
128 382 return cb && cb ({'forminput':template(tempName,{map:map}),'datadisplay': template(tempName +'config',{map:null})});
129 383 }
130 384 });
131 385 }
132   - var getCarNumber = function (param,cb) {
133   - $post('url',param,function(data) {
134   - return cb && cb(data);
135   - })
  386 +
  387 + /**
  388 + * @description (TODO) 格式化成渲染图形数据格式.
  389 + *
  390 + * @param [d--查询出的时刻表明细数据.]
  391 + *
  392 + * @return 返回渲染图形的数据格式.
  393 + * */
  394 + function formatData(d) {
  395 + // 定义返回值.
  396 + var resultD = new Array();
  397 + for(var i =0;i<d.length;i++) {
  398 + var obj = {};
  399 + var ddsj = getddsj(d[i].fcsj,d[i].bcsj);// 到达时间.
  400 + obj.bcType = d[i].bcType;// 班次类型
  401 + obj.bcs = d[i].bcs;// 班次数
  402 + obj.bcsj = d[i].bcsj;// 班次时间
  403 + obj.fcno = d[i].fcno;// 发车序号
  404 + obj.fcsj = d[i].fcsj;// 发车时间
  405 + obj.ARRIVALTIME = ddsj// 到达时间
  406 + obj.jhlc = d[i].jhlc;// 计划里程
  407 + obj.lp = d[i].lp==null ? null : d[i].lp.id;// 路牌id
  408 + obj.lpType = d[i].lp==null ? null : d[i].lp.lpType;// 路牌类型
  409 + obj.parent = d[i].lp.lpName;// 路牌名称
  410 + obj.lpNo = d[i].lp.lpNo;// 路牌编码
  411 + obj.tcc = d[i].tcc==null ? null : d[i].tcc.id;// 停车场id
  412 + obj.ttinfo = d[i].ttinfo==null ? null : d[i].ttinfo.id;// 时刻表id
  413 + obj.xl = d[i].xl==null ? null : d[i].xl.id;// 线路id
  414 + obj.xlDir = dmToDh(d[i].xlDir);// 方向【0:relationshipGraph-up 上行;1:relationshipGraph-down 下行】
  415 + obj.qdz = d[i].qdz==null ? null : d[i].qdz.id;// 起点站id
  416 + obj.zdz = d[i].zdz==null ? null : d[i].zdz.id;//终点站id
  417 + obj.isfb = isfbTodm(d[i].isFB);// 是否分班【0:false;1:true】
  418 + obj.isSwitchXl = isSwitchXlTodm(d[i].isSwitchXl);// 是否切换线路【0:false;1:true】
  419 + obj.STOPTIME = gettzsj(d[i],d,ddsj);// 停站时间.
  420 + resultD.push(obj);
  421 + }
  422 + // 返回渲染图形的数据格式.
  423 + return resultD;
136 424 }
  425 +
  426 + /**
  427 + * @description : (TODO) 获取开始与结束时间字符串.
  428 + *
  429 + * @param [map--表单配置参数]
  430 + *
  431 + * @return 返回开始与结束时间字符串集合.
  432 + * */
  433 + function getStartAndEndDate(map) {
  434 + return {'s':getMinDate(map.line.startStationFirstTime,map.line.endStationFirstTime),
  435 + 'e':getMaxDate(map.line.startStationEndTime,map.line.endStationEndTime)}
  436 + }
  437 +
137 438 return {
138 439 // 启动初始化向导导航
139 440 init : function() {
... ... @@ -160,11 +461,11 @@ var SKBFormWizard = function() {
160 461 'earlyEndTime' : {required : true},// 早高峰结束时间,必填项 .
161 462 'lateStartTime' : {required : true},// 晚高峰开始时间,必填项 .
162 463 'lateEndTime' : {required : true},// 晚高峰结束时间,必填项.
163   - 'zgfbeforepcs' : {required : true,number : true,digits : true},// 早高峰前车辆数,必填项、必须为整数.
164   - 'zgfpcs' : {required : true,number : true,digits : true},// 早高峰车辆数,必填项、必须为整数.
165   - 'wgfafterpcs' : {required : true,number : true,digits : true},// 晚高峰后车俩数,必填项、必须为整数.
166   - 'wgfpcs' : {required : true,number : true,digits : true},// 晚高峰车俩数,必填项、必须为整数.
167   - 'gfzjpcs' : {required : true,number : true,digits : true},// 高峰中间车辆数,必填项、必须为整数.
  464 + 'zgfbeforepcs' : {required : true,number : true,digits : true, isNum0:true},// 早高峰前车辆数,必填项、必须为整数.
  465 + 'zgfpcs' : {required : true,number : true,digits : true, isNum0:true, isMax: true},// 早高峰车辆数,必填项、必须为整数.
  466 + 'wgfafterpcs' : {required : true,number : true,digits : true, isNum0:true},// 晚高峰后车俩数,必填项、必须为整数.
  467 + 'wgfpcs' : {required : true,number : true,digits : true, isNum0:true, isMax: true},// 晚高峰车俩数,必填项、必须为整数.
  468 + 'gfzjpcs' : {required : true,number : true,digits : true, isNum0:true},// 高峰中间车辆数,必填项、必须为整数.
168 469 'upTravelTime' : {required : true,number : true},// 上行行驶时间,必填项、必须为整数.
169 470 'downTravelTime' : {required : true,number : true},// 下行行驶时间,必填项、必须为整数.
170 471 'upMileage' : {required : true,number : true},// 上行行驶里程,必填项、必须为整数.
... ... @@ -192,7 +493,7 @@ var SKBFormWizard = function() {
192 493 'downInMileage' : {number : true},// 下行进场里程,必须为数字.
193 494 'downOutMileage' : {number : true},// 下行出场里程,必须为数字.
194 495 'lb' : {number : true},// 早晚例行保养,必须为数字.
195   - 'clzs':{required : true,number : true,digits : true},// 车辆总数,必填项、必须为整数.
  496 + 'clzs':{required : true,number : true,digits : true, isBcType : true},// 车辆总数,必填项、必须为整数.
196 497 'bxrc' : {required : true},// 早晚例行保养,必须为数字.
197 498 },
198 499  
... ... @@ -243,10 +544,15 @@ var SKBFormWizard = function() {
243 544 * 默认:default (native) form submit;当表单通过验证,提交表单。回调函数有个默认参数form
244 545 */
245 546 submitHandler : function(f) {
  547 + // 定义localStorage对象.
246 548 var storage = window.localStorage;
  549 + // 表单序列化.
247 550 var argus = form.serializeJSON();
  551 + // 获取站点路由.
248 552 $get('/stationroute/all',{'line.id_eq':argus.lineName.split('_')[0]},function(result) {
  553 + // 判断.
249 554 if(result) {
  555 + // 定义上行起点站,上行终点站,下行起点站,下行终点站.
250 556 var upB ='',upE='',downB='',downE='';
251 557 for(var r = 0 ; r<result.length;r++) {
252 558 if(result[r].directions==0 && result[r].stationMark =='B')
... ... @@ -260,14 +566,16 @@ var SKBFormWizard = function() {
260 566 }
261 567 argus.up_s = upB + '_' + upE;
262 568 argus.down_s = downB + '_' + downE;
  569 + // 获取停车车场.
263 570 $get('/carpark/all',{'parkCode_eq':argus.tcc},function(cp) {
264 571 var tcc_id = '';
265 572 if(cp) {
266 573 tcc_id = cp[0].id;
267 574 }
268   - argus.tcc_id = tcc_id;
269   - argus.skbmc = $('#skbNameSelect').select2('data')[0].text;
270   - argus.xlmc = $('#lineSelect').select2('data')[0].text;
  575 + argus.tcc_id = tcc_id; // 停车场ID.
  576 + argus.skbmc = $('#skbNameSelect').select2('data')[0].text;// 时刻名称.
  577 + argus.xlmc = $('#lineSelect').select2('data')[0].text;// 线路名称.
  578 + // 获取时刻表明细.
271 579 $get('/tidc/all',{'ttinfo.id_eq':parseInt(argus.skbName)},function(data) {
272 580 if(data.status=='SUCCESS' && data.data.length>0) {
273 581 argus.istidc = 1;
... ... @@ -277,7 +585,7 @@ var SKBFormWizard = function() {
277 585 btn: ['确定并使用','取消并继续'] //按钮
278 586 }, function(){
279 587 layer.closeAll();
280   - submit(JSON.stringify(gsData(data.data)),argus);
  588 + submit(JSON.stringify(formatData(data.data)),argus);
281 589 }, function(){
282 590 submit(null,argus);
283 591 });
... ... @@ -291,6 +599,8 @@ var SKBFormWizard = function() {
291 599 layer.msg('系统不存在该线路的上、下行起终点站!');
292 600 }
293 601 });
  602 +
  603 + // 表单提交.
294 604 function submit(p,argus) {
295 605 storage.setItem("Gantt_AgursData",JSON.stringify(argus));
296 606 storage.setItem('isDoDate',p);
... ... @@ -298,110 +608,99 @@ var SKBFormWizard = function() {
298 608 }
299 609 }
300 610 });
301   - function gsData(d) {
302   - var resultD = new Array();
303   - for(var i =0;i<d.length;i++) {
304   - var obj = {};
305   - var ddsj = getddsj(d[i].fcsj,d[i].bcsj);
306   - obj.bcType = d[i].bcType;//班次类型
307   - obj.bcs = d[i].bcs;// 班次数
308   - obj.bcsj = d[i].bcsj;// 班次时间
309   - obj.fcno = d[i].fcno;// 发车序号
310   - obj.fcsj = d[i].fcsj;//发车时间
311   - obj.ARRIVALTIME = ddsj//到达时间
312   - obj.jhlc = d[i].jhlc;//计划里程
313   - obj.lp = d[i].lp==null ? null : d[i].lp.id;//路牌id
314   - obj.lpType = d[i].lp==null ? null : d[i].lp.lpType;//路牌类型
315   - obj.parent = d[i].lp.lpName;// 路牌名称
316   - obj.lpNo = d[i].lp.lpNo;//路牌编码
317   - obj.tcc = d[i].tcc==null ? null : d[i].tcc.id;//停车场id
318   - obj.ttinfo = d[i].ttinfo==null ? null : d[i].ttinfo.id;//时刻表id
319   - obj.xl = d[i].xl==null ? null : d[i].xl.id;//线路id
320   - obj.xlDir = dmToDh(d[i].xlDir);// 方向【0:relationshipGraph-up 上行;1:relationshipGraph-down 下行】
321   - obj.qdz = d[i].qdz==null ? null : d[i].qdz.id;// 起点站id
322   - obj.zdz = d[i].zdz==null ? null : d[i].zdz.id;//终点站id
323   - obj.isfb = isfbTodm(d[i].isFB);//是否分班【0:false;1:true】
324   - obj.isSwitchXl = isSwitchXlTodm(d[i].isSwitchXl);// 是否切换线路【0:false;1:true】
325   - obj.STOPTIME = gettzsj(d[i],d,ddsj);
326   - resultD.push(obj);
327   - }
328   - console.log(resultD);
329   - return resultD;
330   - }
331   - function gettzsj(o,d,sj) {
332   - var tzsj = 0;
333   - for(var i = 0 ;i<d.length;i++) {
334   - if(o.lp.lpNo == d[i].lp.lpNo && o.lp.id == d[i].lp.id) {
335   - if(d[i].fcno - o.fcno ==1){
336   - tzsj = (strToTime(d[i].fcsj) -strToTime(sj)) / 60000;
337   - continue;
338   - }
339   -
340   - }
341   - }
342   - return tzsj;
343   - }
344   -
345   - function isSwitchXlTodm(d) {
346   - var rstr = 0;
347   - if(d)
348   - rstr = 1;
349   - return rstr;
350   - }
351   -
352   - function isfbTodm(b) {
353   - var rstr = 0;
354   - if(b)
355   - rstr = 1;
356   - return rstr;
357   - }
358   -
359   - function getddsj(tStr,bcsj) {
360   - var rt = '';
361   - var date = new Date();
362   - var _str = tStr.split(':');
363   - date.setHours(parseInt(_str[0]));
364   - date.setMinutes(parseInt(_str[1]) + bcsj);
365   - return getTimeStr(date);
366   - }
367   -
368   - var strToTime = function(t) {
369   - var d = new Date;
370   - if(t) {
371   - var _str = t.split(':');
372   - d.setHours(parseInt(_str[0]));
373   - d.setMinutes(parseInt(_str[1]));
374   - }
375   - return d;
376   - }
377 611  
378   - function getTimeStr(t) {
379   - var _str = '';
380   - if(t) {
381   - _str = ((t.getHours()<10? '0' + t.getHours() : t.getHours()) == '00' ? '24' :(t.getHours()<10? '0' + t.getHours() : t.getHours()))
382   - +':'
383   - +(t.getMinutes()<10? '0' + t.getMinutes() : t.getMinutes());
384   - }
385   - return _str;
386   - }
  612 + // 验证配车数不能为零.
  613 + $.validator.addMethod('isNum0', function(value,element) {
  614 + // 定义返回值.
  615 + var tag = true;
  616 + var zgfbeforepcs = $('#zgfbeforepcsInput').val(),// 早高峰前配车数.
  617 + zgfpcs = $('#zgfpcsInput').val(),// 早高峰配车数.
  618 + gfzjpcs = $('#gfzjpcsInput').val(),// 高峰之间配车数.
  619 + wgfpcs = $('#wgfpcsInput').val(),// 晚高峰配车数.
  620 + wgfafterpcs = $('#wgfafterpcsInput').val();// 晚高峰后配车数.
  621 + // 判断是否为零.
  622 + if(parseInt(zgfbeforepcs) == 0 || parseInt(zgfbeforepcs) ==0 ||
  623 + parseInt(gfzjpcs) ==0 || parseInt(wgfpcs) ==0 || parseInt(wgfafterpcs) ==0)
  624 + tag = false;
  625 + return tag;
  626 + },function(){return '配车数不能为零!'; });
387 627  
388   - function dmToDh(t) {
389   - var reslStr = '';
390   - if(t=='0')
391   - reslStr = 'relationshipGraph-up';
392   - else if(t=='1')
393   - reslStr = 'relationshipGraph-down';
394   - return reslStr;
395   - }
  628 + // 验证高峰时段内的配车数是否高于其它时段配车数.
  629 + $.validator.addMethod('isMax', function(value,element) {
  630 + var tag = true;
  631 + var zgfbeforepcs = parseInt($('#zgfbeforepcsInput').val()),// 早高峰前配车数.
  632 + zgfpcs = parseInt($('#zgfpcsInput').val()),// 早高峰配车数.
  633 + gfzjpcs = parseInt($('#gfzjpcsInput').val()),// 高峰之间配车数.
  634 + wgfpcs = parseInt($('#wgfpcsInput').val()),// 晚高峰配车数.
  635 + wgfafterpcs = parseInt($('#wgfafterpcsInput').val());// 晚高峰后配车数.
  636 + // 判断高峰时段内的配车数是否高于其它时段配车数.
  637 + if(zgfpcs<zgfbeforepcs || zgfpcs<gfzjpcs || zgfpcs<wgfafterpcs || wgfpcs<zgfbeforepcs || wgfpcs<gfzjpcs || wgfpcs<wgfafterpcs )
  638 + tag = false;
  639 + return tag;
  640 + },function(){return '高峰时段配车数必须高于其它时段配车数!';});
396 641  
  642 + // 验证客流数据分析时客容量为必填项.
397 643 $.validator.addMethod("isBaseRes", function(value,element) {
  644 + // 定义返回值.
398 645 var tag = true;
  646 + // 定义选择获取参数方式值
399 647 var baseChecked = $('#submit_argus_form input[name="baseRes"]:checked').val();
  648 + // 判断
400 649 if(baseChecked == '0' && $('#krlInput').val()== '')
401 650 tag = false;
402 651 return tag;
403 652 }, '客流大数据分析,客流总量为必填项!');
404 653  
  654 + // 验证配车数不能为零.
  655 + $.validator.addMethod('isBcType', function(value,element) {
  656 + // 定义返回值.
  657 + var tag = true;
  658 + // 定义车辆总数,班型人次.
  659 + var clzs = $('#clzsInput').val(),
  660 + bxrc = $('#state_tagsinput').val();
  661 + // 判断.
  662 + if(bxrc=='' || bxrc==null || clzs=='' || clzs==0)
  663 + return false;
  664 + // 定义首末班次开始结束时间集合.
  665 + var map = {'line':{'startStationFirstTime':$('#qdzsbsjInput').val(),
  666 + 'startStationEndTime':$('#qdzmbsjInput').val(),
  667 + 'endStationFirstTime':$('#zdzsbsjInput').val(),
  668 + 'endStationEndTime':$('#zdzmbsjInput').val()}};
  669 + // 定义开始~结束时间.
  670 + var setMap = getStartAndEndDate(map);
  671 + console.log(setMap);
  672 + // 定义最大工时.
  673 + var maxGs = parseInt( ((strToTime(setMap.e) - strToTime(setMap.s)) / 60000) / 60) * parseInt(clzs);
  674 + // 切割班型人次,定义班次人次所用总工时.
  675 + var bxrcAr = bxrc.split(','),countGs = 0;
  676 + // 遍历
  677 + for(var s = 0 ; s< bxrcAr.length;s++) {
  678 + // 切割单个班型人次.
  679 + var s1a = bxrcAr[s].split('/');
  680 + // 定义人次.
  681 + var rs = parseInt(s1a[1]);
  682 + // 定义小时系数.
  683 + var hoursV = 0.0;
  684 + for(var g = 0 ; g < bxrcGs.length; g++) {
  685 + // 判断班型是否一致.
  686 + if(bxrcGs[g].type == s1a[0]) {
  687 + // 重新赋值小时系数.
  688 + hoursV = bxrcGs[g].hoursV;
  689 + }
  690 + }
  691 + // 重新计算班次人次所用总工时.
  692 + countGs = countGs + parseFloat(hoursV.toFixed(2)) * rs;
  693 + }
  694 + // 判断
  695 + if(parseFloat(countGs.toFixed(2))>maxGs)
  696 + tag = false;
  697 + return tag;
  698 + },function(){return '配车总数与班型人次搭配不合理!'; });
  699 +
  700 + /**
  701 + * @description : (TODO) 监听获取参数方式值改变事件.
  702 + *
  703 + * */
405 704 $('input:radio[name="baseRes"]').on('change',function(v) {
406 705 if($(this).val()=='1')
407 706 $('#krlGroup').hide();
... ... @@ -484,25 +783,29 @@ var SKBFormWizard = function() {
484 783 return false;
485 784 }
486 785 if(index==1) {
  786 + // 初始化客容量值.
487 787 if($('#krlInput').val() == '')
488 788 $('#krlInput').val(50);
489 789 }else if(index == 2) {
490   - var baseRes = $('#submit_argus_form input[name="baseRes"]:checked').val(),
491   - lineId = $('#lineSelect').val().split('_')[0],
492   - krl = $('#krlInput').val();
  790 + var baseRes = $('#submit_argus_form input[name="baseRes"]:checked').val(),// 获取参数方式值.
  791 + lineId = $('#lineSelect').val().split('_')[0],// 线路ID.
  792 + krl = $('#krlInput').val();// 客容量
493 793 getLineInfo(lineId,function(r) {
494 794 getHtmlTemp(baseRes,r.content[0],lineId,krl,function(htlMap) {
495 795 $('#tab3').html(htlMap.forminput);
496 796 $('#tab4').html(htlMap.datadisplay);
497 797 if(baseRes==1)
498   - ComponentsBootstrapTagsinput.init();
  798 + ComponentsBootstrapTagsinput.init();// 初始化班型人次Input Tag.
499 799 // 日期控件
500   - $('#qdzsbsjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});
501   - $('#endServiceTimeInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});
502   - $('#morningPeakStartInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});
503   - $('#morningPeakEndInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});
504   - $('#eveningPeakStartInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});
505   - $('#eveningPeakEndInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});
  800 + $('#qdzsbsjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 起始站首班时间
  801 + $('#qdzmbsjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 起始站末班时间
  802 + $('#zdzsbsjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 终点站首班时间
  803 + $('#zdzmbsjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 终点站末班时间
  804 + $('#zgfkssjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 早高峰开始时间
  805 + $('#zgfjssjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 早高峰结束时间
  806 + $('#wgfkssjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 晚高峰开始时间
  807 + $('#wgfjssjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 晚高峰结束时间
  808 + // 初始化停车场下拉框.
506 809 gettccInfo(function(cd) {
507 810 var options = '<option value="">请选择...</option><optgroup label="停车场">';
508 811 var $_len = cd.length;
... ... @@ -543,15 +846,4 @@ var SKBFormWizard = function() {
543 846 $('#submit_argus_form').find('.button-previous').hide();
544 847 }
545 848 }
546   - function getJSONP(url, data, cb) {
547   - $.ajax({
548   - url : url,
549   - type : "GET",
550   - dataType : 'jsonp',
551   - jsonp : 'jsoncallback',
552   - data : data,
553   - success : cb
554   - });
555   - }
556   -
557   -}();
  849 +}();
558 850 \ No newline at end of file
... ...
src/main/resources/static/pages/base/timesmodel/js/base-fun.js
... ... @@ -1217,7 +1217,6 @@ var BaseFun = function() {
1217 1217 qt.push(arr[a]);
1218 1218 }
1219 1219 }
1220   - // debugger;
1221 1220 var tempup = baseF.sortDirArray(upArr);
1222 1221 var tempdown = baseF.sortDirArray(downArr);
1223 1222 return {'upArr':tempup,'downArr':tempdown,'qt':qt};
... ... @@ -1233,7 +1232,6 @@ var BaseFun = function() {
1233 1232 * @status OK.
1234 1233 * */
1235 1234 sortDirArray : function(arr) {
1236   - ///debugger;
1237 1235 //console.log(arr.length);
1238 1236 var list = new Array(),tempArray = new Array();
1239 1237 for(var a =0;a<arr.length;a++) {
... ... @@ -1249,7 +1247,6 @@ var BaseFun = function() {
1249 1247 list.push(arr[d]);
1250 1248 }
1251 1249 }
1252   - //debugger;
1253 1250 //console.log(list.length);
1254 1251 return list;
1255 1252 },
... ... @@ -1261,7 +1258,6 @@ var BaseFun = function() {
1261 1258 * @return : 返回一个数组.这里返回的是调整过后 发车间距均匀的班次数组
1262 1259 **/
1263 1260 jhfcjx : function(bcArr,dir,zzsj,dataMap) {
1264   - // debugger;
1265 1261 console.log(bcArr.length);
1266 1262 //console.log('调整' + dir + '发车间隙...');
1267 1263 // 1、定义某个方向下的首末班次时间结点.
... ... @@ -1286,7 +1282,6 @@ var BaseFun = function() {
1286 1282 return;
1287 1283 var fcnosj = new Date(kssj);
1288 1284 // 2.4、调整班次
1289   - //debugger;
1290 1285 for(var l = 0 ;l<bcArr.length-1;l++) {
1291 1286 var _t = baseF.getDateTime(bcArr[l].fcsj);
1292 1287 if(_t>temp )
... ...
src/main/resources/static/pages/base/timesmodel/js/d3.relationshipgraph.js
... ... @@ -325,17 +325,18 @@ var _animation = function(d3Node) {return d3Node.transition().delay(function(d,i
325 325 * @returns {Object} table.outerHTML
326 326 ************************************************************************************************************************************************/
327 327 var createTooltip = function createTooltip(self) {
328   - var hiddenKeys = ['_PRIVATE_','fcno' ,'PARENTCOLOR', 'SETNODECOLOR', 'SETNODESTROKECOLOR', /*'INTERVAL',*/'num'],
329   - showKeys = self.configuration.showKeys;
330 328 return d3.tip().attr('class', 'relationshipGraph-tip').offset([-8, -10]).html(function (obj) {
331 329 var keys = Object.keys(obj),
332 330 table = document.createElement('table'),
333 331 count = keys.length,
334 332 rows = [];
  333 + var showKeys = self.configuration.showKeys;
  334 + var hiddenKeys = ['_PRIVATE_' ,'PARENTCOLOR', 'SETNODECOLOR', 'SETNODESTROKECOLOR','lpNo','lpName','lp','lpType',
  335 + 'jhlc','tcc','ttinfo','xl','isfb','qdz','zdz','isSwitchXl','bz','bcs','fcno'];
335 336 while (count--) {
336   - var element = keys[count],
337   - upperCaseKey = element.toUpperCase();
338   - if (!RelationshipGraph.contains(hiddenKeys, upperCaseKey) && !upperCaseKey.startsWith('__') && obj[element] !='tjz') {
  337 + var element = keys[count];
  338 + // upperCaseKey = element.toUpperCase();
  339 + if (!RelationshipGraph.contains(hiddenKeys, element) && !element.startsWith('__') && obj[element] !='tjz') {
339 340 var row = document.createElement('tr'),
340 341 key = showKeys ? document.createElement('td') : null,
341 342 value = document.createElement('td');
... ... @@ -352,7 +353,7 @@ var createTooltip = function createTooltip(self) {
352 353 else if(element=='xlDir')
353 354 changeKey = '行驶方向:';
354 355 else if(element=='parent')
355   - changeKey = '当前车辆:';
  356 + changeKey = '当前路牌:';
356 357 else if(element=='bcType')
357 358 changeKey = '班次类型:';
358 359 else if(element=='tjbx')
... ... @@ -363,7 +364,7 @@ var createTooltip = function createTooltip(self) {
363 364 row.appendChild(key);
364 365 }
365 366  
366   - if (upperCaseKey == 'VALUE' && !self.configuration.valueKeyName) {
  367 + if (element == 'VALUE' && !self.configuration.valueKeyName) {
367 368 continue;
368 369 }
369 370  
... ...
src/main/resources/static/pages/base/timesmodel/js/gantt.js
... ... @@ -101,7 +101,8 @@
101 101 'jclcArr' : BaseFun.formatPairing(gatps.upInMileage,gatps.downInMileage),// 进场里程。[下标0代表上;下标1代表下]
102 102 'cclcArr' : BaseFun.formatPairing(gatps.upOutMileage,gatps.downOutMileage),// 出场里程。[下标0代表上;下标1代表下]
103 103 'pcxssjArr' : BaseFun.formatPairing(gatps.upTravelTime,gatps.downTravelTime),// 平常行驶时间。[下标0代表上;下标1代表下]
104   - 'gfxxsjArr' : BaseFun.formatPairing(gatps.lateUpTime,gatps.lateDownTime),// 高峰行驶时间。[下标0代表上;下标1代表下]
  104 + 'gfxxsjArr' : BaseFun.formatPairing(gatps.lateUpTime=='' ? gatps.upTravelTime : gatps.lateUpTime,
  105 + gatps.lateDownTime=='' ? gatps.downTravelTime : gatps.lateDownTime),// 高峰行驶时间。[下标0代表上;下标1代表下]
105 106 'pcxslcArr' : BaseFun.formatPairing(gatps.upMileage,gatps.downMileage),// 行驶里程。[下标0代表上;下标1代表下]
106 107 'qdzArr' : BaseFun.qzdz(gatps.up_s.split('_')[0],gatps.down_s.split('_')[0]),// 起始站。[下标0代表上;下标1代表下]
107 108 'zdzArr':BaseFun.qzdz(gatps.up_s.split('_')[1],gatps.down_s.split('_')[1]),// 终点站。[下标0代表上;下标1代表下]
... ...
src/main/resources/static/pages/base/timesmodel/js/tagsinput.js
... ... @@ -25,10 +25,30 @@ var ComponentsBootstrapTagsinput = function() {
25 25 itemValue: 'value',
26 26 itemText: 'text'
27 27 });
  28 +
  29 + $('#state_tagsinput').on('beforeItemAdd', function(event) {
  30 + var bctypeValue = $('#state_tagsinput_bctype').val();
  31 + var rcnum = $('#state_tagsinput_value').val();
  32 + var bxrcAr = $('#state_tagsinput').val().split(',');
  33 + for(var s = 0 ; s< bxrcAr.length;s++) {
  34 + var s1a = bxrcAr[s].split('/');
  35 + if(s1a[0]==bctypeValue) {
  36 + $('#state_tagsinput').tagsinput('remove', bxrcAr[s]);
  37 + }
  38 + }
  39 + });
  40 +
28 41 $('#state_tagsinput_add').on('click', function(){
29 42 var bctypeValue = $('#state_tagsinput_bctype').val();
30 43 var rcnum = $('#state_tagsinput_value').val();
31 44 if(isNull(bctypeValue,rcnum)) {
  45 + var bxrcAr = $('#state_tagsinput').val().split(',');
  46 + for(var s = 0 ; s< bxrcAr.length;s++) {
  47 + var s1a = bxrcAr[s].split('/');
  48 + if(s1a[0]==bctypeValue) {
  49 + rcnum = parseInt(rcnum) + parseInt(s1a[1]);
  50 + }
  51 + }
32 52 elt.tagsinput('add', {
33 53 "value": bctypeValue + '/' + rcnum,
34 54 "text": bctypeValue + '/' + rcnum,
... ...