Commit 21398848a98c3e1af1a72b32309c5bcd64c216a4
1 parent
d4c54fa6
Merge branch 'pudong' of 192.168.168.201:panzhaov5/bsth_control into pudong
# Conflicts: # src/main/resources/static/pages/base/timesmodel/add.html # src/main/resources/static/pages/base/timesmodel/fragments/addbc.html # src/main/resources/static/pages/base/timesmodel/fragments/deletelp.html # src/main/resources/static/pages/base/timesmodel/fragments/editbc.html # src/main/resources/static/pages/base/timesmodel/js/add-form-wizard.js # src/main/resources/static/pages/base/timesmodel/js/dateTimeTool.js # src/main/resources/static/pages/base/timesmodel/js/echartsDrawGanTT.js # src/main/resources/static/pages/base/timesmodel/js/gantt.js # src/main/resources/static/pages/base/timesmodel/js/systemTools.js # src/main/resources/static/pages/base/timesmodel/js/v1/AdjustTrip.js # src/main/resources/static/pages/base/timesmodel/js/v1/bcFun.js # src/main/resources/static/pages/base/timesmodel/js/v1/lpFun.js # src/main/resources/static/pages/base/timesmodel/js/v1/scheduleInitialize.js
Showing
18 changed files
with
1257 additions
and
965 deletions
src/main/java/com/bsth/controller/StationController.java
| 1 | 1 | package com.bsth.controller; |
| 2 | 2 | |
| 3 | -import java.util.Map; | |
| 4 | - | |
| 3 | +import com.bsth.entity.Station; | |
| 4 | +import com.bsth.service.StationService; | |
| 5 | +import com.bsth.util.GetUIDAndCode; | |
| 5 | 6 | import org.slf4j.Logger; |
| 6 | 7 | import org.slf4j.LoggerFactory; |
| 7 | 8 | import org.springframework.beans.factory.annotation.Autowired; |
| ... | ... | @@ -10,9 +11,7 @@ import org.springframework.web.bind.annotation.RequestMethod; |
| 10 | 11 | import org.springframework.web.bind.annotation.RequestParam; |
| 11 | 12 | import org.springframework.web.bind.annotation.RestController; |
| 12 | 13 | |
| 13 | -import com.bsth.entity.Station; | |
| 14 | -import com.bsth.service.StationService; | |
| 15 | -import com.bsth.util.GetUIDAndCode; | |
| 14 | +import java.util.Map; | |
| 16 | 15 | |
| 17 | 16 | /** |
| 18 | 17 | * |
| ... | ... | @@ -160,11 +159,11 @@ public class StationController extends BaseController<Station, Integer> { |
| 160 | 159 | public int updateStationAndSectionCode(@RequestParam Integer stationCount, Integer sectionCount) { |
| 161 | 160 | System.out.println(stationCount+" _ "+ sectionCount ); |
| 162 | 161 | for(int i = 0; i < stationCount; i++) { |
| 163 | - System.out.println(stationCount); | |
| 162 | + System.out.println(i); | |
| 164 | 163 | GetUIDAndCode.getStationId(); |
| 165 | 164 | } |
| 166 | - for(int i = 0; i < sectionCount; i++) { | |
| 167 | - System.out.println(sectionCount); | |
| 165 | + for(int j = 0; j < sectionCount; j++) { | |
| 166 | + System.out.println(j); | |
| 168 | 167 | GetUIDAndCode.getSectionId(); |
| 169 | 168 | } |
| 170 | 169 | return 1; | ... | ... |
src/main/java/com/bsth/controller/StationRouteController.java
| 1 | 1 | package com.bsth.controller; |
| 2 | 2 | |
| 3 | -import com.bsth.entity.Station; | |
| 4 | 3 | import com.bsth.entity.StationRoute; |
| 5 | 4 | import com.bsth.entity.StationRouteCache; |
| 6 | 5 | import com.bsth.repository.StationRouteCacheRepository; |
| ... | ... | @@ -12,11 +11,10 @@ import org.springframework.web.bind.annotation.RequestMethod; |
| 12 | 11 | import org.springframework.web.bind.annotation.RequestParam; |
| 13 | 12 | import org.springframework.web.bind.annotation.RestController; |
| 14 | 13 | |
| 14 | +import javax.servlet.http.HttpServletResponse; | |
| 15 | 15 | import java.util.List; |
| 16 | 16 | import java.util.Map; |
| 17 | 17 | |
| 18 | -import javax.servlet.http.HttpServletResponse; | |
| 19 | - | |
| 20 | 18 | /** |
| 21 | 19 | * |
| 22 | 20 | * @ClassName: StationRouteController(站点路由控制器) | ... | ... |
src/main/resources/static/pages/base/line/js/line-list-table.js
src/main/resources/static/pages/base/stationroute/js/stationroute-list-map.js
| ... | ... | @@ -58,15 +58,17 @@ window.WorldsBMap = function () { |
| 58 | 58 | marker.enableDragging(); |
| 59 | 59 | dragMarker = marker; |
| 60 | 60 | dragMarker._old_point = dragMarker._position; |
| 61 | + centerPoint = dragMarker._position; | |
| 61 | 62 | //监听拖拽事件 dragging |
| 62 | 63 | dragMarker.addEventListener('dragging', dragMarkerDragEvent); |
| 63 | 64 | }; |
| 64 | 65 | |
| 65 | 66 | var dragMarkerDragEvent = function (e) { |
| 66 | 67 | if (editPolygon) { |
| 67 | - if (!BMapLib.GeoUtils.isPointInPolygon(e.target._position, editPolygon)) | |
| 68 | + // 中心点是否超出多边形 | |
| 69 | + if (!BMapLib.GeoUtils.isPointInPolygon(e.target._position, editPolygon)) { | |
| 68 | 70 | dragMarker.setPosition(dragMarker._old_point);//还原位置 |
| 69 | - | |
| 71 | + } | |
| 70 | 72 | centerPoint = e.target._position; |
| 71 | 73 | } |
| 72 | 74 | else if (editCircle) { | ... | ... |
src/main/resources/static/pages/base/timesmodel/css/index.css
src/main/resources/static/pages/base/timesmodel/fragments/addbc.html
| ... | ... | @@ -259,12 +259,12 @@ $('#addBc_mobal').on('addBcMobal.show', function(e,lpData,lpDataCount,echartsDra |
| 259 | 259 | layer.confirm('添加的班次与前后班次有时间冲突,是否添加?', { |
| 260 | 260 | btn : [ '添加','取消' ], icon: 3, title:'提示' |
| 261 | 261 | }, function(){ |
| 262 | - echartsDrawGTT.init(data,false,true); | |
| 262 | + echartsDrawGTT.init(data,false,true,false); | |
| 263 | 263 | echartsDrawGTT.refreshDrag(); |
| 264 | 264 | layer.msg('路牌:'+params.lpName+' fnco:'+params.fcno+' 班次添加成功,注意修改冲突班次!'); |
| 265 | 265 | }); |
| 266 | 266 | } else { |
| 267 | - echartsDrawGTT.init(data,false,true); | |
| 267 | + echartsDrawGTT.init(data,false,true,false); | |
| 268 | 268 | echartsDrawGTT.refreshDrag(); |
| 269 | 269 | layer.msg('路牌:'+params.lpName+' fnco:'+params.fcno+' 班次添加成功!'); |
| 270 | 270 | } | ... | ... |
src/main/resources/static/pages/base/timesmodel/fragments/deletelp.html
| ... | ... | @@ -104,7 +104,7 @@ $('#deletelp_mobal').on('deletelpMobal.show', function(e,lpData,echartsDrawGTT){ |
| 104 | 104 | lpData.splice(index,1); |
| 105 | 105 | }); |
| 106 | 106 | echartsDrawGTT.setLpData(lpData); |
| 107 | - echartsDrawGTT.init(data,false,true); | |
| 107 | + echartsDrawGTT.init(data,false,true,false); | |
| 108 | 108 | echartsDrawGTT.refreshDrag(); |
| 109 | 109 | $('#deletelp_mobal').modal('hide'); |
| 110 | 110 | layer.msg('删除路牌【'+ params.lpName +'】成功!'); | ... | ... |
src/main/resources/static/pages/base/timesmodel/fragments/editbc.html
| ... | ... | @@ -192,7 +192,7 @@ $('#editBc_mobal').on('editBcMobal.show', function(e,index,echartsDrawGTT){ |
| 192 | 192 | bcObj.value[7] = parseInt(params.fcno); |
| 193 | 193 | bcObj.value[16] = parseInt(params.isfb); |
| 194 | 194 | |
| 195 | - echartsDrawGTT.init(data,false,true); | |
| 195 | + echartsDrawGTT.init(data,false,true,false); | |
| 196 | 196 | echartsDrawGTT.refreshDrag(); |
| 197 | 197 | layer.msg('路牌:'+params.lpName+' fnco:'+params.fcno+' 班次修改成功!'); |
| 198 | 198 | $('#editBc_mobal').modal('hide'); | ... | ... |
src/main/resources/static/pages/base/timesmodel/js/add-form-wizard.js
| 1 | - | |
| 2 | 1 | /** |
| 3 | 2 | * @description : (TODO) 表单的导航向导、验证、提交 |
| 4 | 3 | */ |
| ... | ... | @@ -288,12 +287,12 @@ var SKBFormWizard = function() { |
| 288 | 287 | // 4、返回判断结果布尔值. |
| 289 | 288 | return tag; |
| 290 | 289 | } |
| 291 | - | |
| 290 | + | |
| 292 | 291 | /** |
| 293 | 292 | * @description : (TODO) 获取客流数据. |
| 294 | - * | |
| 293 | + * | |
| 295 | 294 | * @params [url--请求地址;data--请求参数;cb--回调函数] |
| 296 | - * | |
| 295 | + * | |
| 297 | 296 | * */ |
| 298 | 297 | function getJSONP(url, data, cb) { |
| 299 | 298 | $.ajax({ |
| ... | ... | @@ -305,24 +304,24 @@ var SKBFormWizard = function() { |
| 305 | 304 | success : cb |
| 306 | 305 | }); |
| 307 | 306 | } |
| 308 | - | |
| 307 | + | |
| 309 | 308 | /** |
| 310 | 309 | * @description : (TODO) 根据获取参数方式来获取表单参数详情html模版页. |
| 311 | - * | |
| 310 | + * | |
| 312 | 311 | * @param [n--获取参数方式;map--表单参数;lineId--线路ID;krl--客容量;cb--回调函数] |
| 313 | - * | |
| 312 | + * | |
| 314 | 313 | * @return 返回表单参数详情html模版页. |
| 315 | - * | |
| 314 | + * | |
| 316 | 315 | * @status OK. |
| 317 | 316 | * */ |
| 318 | 317 | var getHtmlTemp = function(n,map,lineId,krl,cb) { |
| 319 | 318 | // 1、定义模版名称. |
| 320 | 319 | var tempName = ''; |
| 321 | - if(n==0) | |
| 320 | + if(n==0) | |
| 322 | 321 | tempName = 'carnum_temp'; |
| 323 | 322 | else if(n==1) |
| 324 | 323 | tempName = 'bctype_temp'; |
| 325 | - else if (n==2 || n == 3) | |
| 324 | + else if (n==2) | |
| 326 | 325 | tempName = 'fcjx_temp'; |
| 327 | 326 | // 2、获参数详情模版html内容. |
| 328 | 327 | $.get('/pages/base/timesmodel/tepms/'+ tempName + '.html', function(html){ |
| ... | ... | @@ -348,9 +347,9 @@ var SKBFormWizard = function() { |
| 348 | 347 | var params = {'xlid':lineId,'startDateTime':startDateTime,'endDateTime':endDateTime,'zzsj':zzsj}; |
| 349 | 348 | /** |
| 350 | 349 | * getJSONP请求获取客流数据. |
| 351 | - * | |
| 350 | + * | |
| 352 | 351 | * 返回的是一个每次以半小时为间隔作为开始时间点, 在加上周转时间作为结束时间点的 时段段内的客流最大通过量. |
| 353 | - * */ | |
| 352 | + * */ | |
| 354 | 353 | getJSONP("http://139.196.13.237:8080/bsth-busfareflow-gj/Crlcxb/selectsjbctgl.do",params,function(json){ |
| 355 | 354 | // 定义时段集合,可容量. |
| 356 | 355 | var sjdArr = getsjdArr(map),krlInt = parseInt(krl); |
| ... | ... | @@ -390,11 +389,29 @@ var SKBFormWizard = function() { |
| 390 | 389 | |
| 391 | 390 | // 返回参数详情模版. |
| 392 | 391 | return cb && cb ({'forminput':template(tempName,{map:map}),'datadisplay': template(tempName +'config',{map:null})}); |
| 393 | - }); | |
| 392 | + }); | |
| 394 | 393 | }else if(n==1) { |
| 395 | - // 返回参数详情模版. | |
| 396 | - return cb && cb ({'forminput':template(tempName,{map:map}),'datadisplay': template(tempName +'config',{map:null})}); | |
| 397 | - }else if (n==2 || n == 3) { | |
| 394 | + // 更具站点路由版本获取起点终点站 | |
| 395 | + var iversion = $('#lineVersionSelect').val(); | |
| 396 | + $get('/stationroute/all',{'line.id_eq':lineId,'destroy_eq':0, 'versions_eq': iversion},function(result) { | |
| 397 | + $.each(result, function(i, d) { | |
| 398 | + if (d.stationMark == 'B' && d.directions == 0) { | |
| 399 | + // alert(d.stationName); | |
| 400 | + map.line.startStationName = d.stationName; | |
| 401 | + } else if (d.stationMark == 'E' && d.directions == 0) { | |
| 402 | + // alert(d.stationName); | |
| 403 | + map.line.endStationName = d.stationName; | |
| 404 | + } | |
| 405 | + }); | |
| 406 | + | |
| 407 | + // return cb && cb({ | |
| 408 | + // 'forminput': template(tempName, {map: map}), | |
| 409 | + // 'datadisplay': template(tempName + '_config', {map: null}) | |
| 410 | + // }); | |
| 411 | + // 返回参数详情模版. | |
| 412 | + return cb && cb ({'forminput':template(tempName,{map:map}),'datadisplay': template(tempName +'config',{map:null})}); | |
| 413 | + }); | |
| 414 | + }else if (n==2) { | |
| 398 | 415 | // 更具站点路由版本获取起点终点站 |
| 399 | 416 | var iversion = $('#lineVersionSelect').val(); |
| 400 | 417 | $get('/stationroute/all',{'line.id_eq':lineId,'destroy_eq':0, 'versions_eq': iversion},function(result) { |
| ... | ... | @@ -417,8 +434,8 @@ var SKBFormWizard = function() { |
| 417 | 434 | |
| 418 | 435 | } |
| 419 | 436 | }); |
| 420 | - } | |
| 421 | - | |
| 437 | + }; | |
| 438 | + | |
| 422 | 439 | /** |
| 423 | 440 | * @description (TODO) 格式化成渲染图形数据格式. |
| 424 | 441 | * |
| ... | ... | @@ -540,7 +557,17 @@ var SKBFormWizard = function() { |
| 540 | 557 | 'bxrc' : {required : true},// 班型人次,必填项 |
| 541 | 558 | 'linePlayType' : {required : true},// 线路规划类型,必填项 |
| 542 | 559 | 'zdzcrl' : {number : true,digits : true}, |
| 543 | - | |
| 560 | + // 新增时间段字段 | |
| 561 | + 'start1' : {required : true}, | |
| 562 | + 'end1' : {required : true}, | |
| 563 | + 'start2' : {required : true}, | |
| 564 | + 'end2' : {required : true}, | |
| 565 | + 'start3' : {required : true}, | |
| 566 | + 'end3' : {required : true}, | |
| 567 | + 'start4' : {required : true}, | |
| 568 | + 'end4' : {required : true}, | |
| 569 | + 'start5' : {required : true}, | |
| 570 | + 'end5' : {required : true}, | |
| 544 | 571 | |
| 545 | 572 | 'gfupStopTime' : {required : true,number : true}, // 高峰上行停站时间,必填项、必须为整数. |
| 546 | 573 | 'gfdownStopTime' : {required : true,number : true}, // 高峰下行停站时间,必填项、必须为整数. |
| ... | ... | @@ -957,6 +984,16 @@ var SKBFormWizard = function() { |
| 957 | 984 | $('#zgfjssjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 早高峰结束时间 |
| 958 | 985 | $('#wgfkssjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 晚高峰开始时间 |
| 959 | 986 | $('#wgfjssjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 晚高峰结束时间 |
| 987 | + $('#startInput1').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 988 | + $('#endInput1').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 989 | + $('#startInput2').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 990 | + $('#endInput2').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 991 | + $('#startInput3').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 992 | + $('#endInput3').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 993 | + $('#startInput4').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 994 | + $('#endInput4').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 995 | + $('#startInput5').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 996 | + $('#endInput5').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | |
| 960 | 997 | // 初始化停车场下拉框. |
| 961 | 998 | gettccInfo(function(cd) { |
| 962 | 999 | var options = '<option value="">请选择...</option><optgroup label="停车场">'; |
| ... | ... | @@ -974,7 +1011,7 @@ var SKBFormWizard = function() { |
| 974 | 1011 | layer.close(i); |
| 975 | 1012 | }); |
| 976 | 1013 | |
| 977 | - } else if (baseRes == 2 || baseRes == 3) { // 发车间隔分析 | |
| 1014 | + } else if (baseRes == 2) { // 发车间隔分析 | |
| 978 | 1015 | // 上下行首末班日期控件 |
| 979 | 1016 | $('#startStationFirstTime_id').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); |
| 980 | 1017 | $('#startStationEndTime_id').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); | ... | ... |
src/main/resources/static/pages/base/timesmodel/js/dateTimeTool.js
| 1 | 1 | /** 时间工具类*/ |
| 2 | 2 | var DateTimeTool = function () { |
| 3 | + var jsd = []; | |
| 4 | + var initSJD = function (map) { | |
| 5 | + jsd = map; | |
| 6 | + }; | |
| 3 | 7 | // 数字格式转化为时间格式 |
| 4 | 8 | var calculateHours = function (time) { |
| 5 | 9 | if(!time) |
| ... | ... | @@ -44,9 +48,38 @@ var DateTimeTool = function () { |
| 44 | 48 | +':' |
| 45 | 49 | +(date.getMinutes()<10? '0' + date.getMinutes() : date.getMinutes()); |
| 46 | 50 | }; |
| 51 | + // 判断时间在什么时间段段内 | |
| 52 | + var judgmentTimeQuantum = function (t) { | |
| 53 | + if(t <= getDateTime(jsd[0].end)) | |
| 54 | + return 0; | |
| 55 | + else if(t > getDateTime(jsd[1].start) && t <= getDateTime(jsd[1].end)) | |
| 56 | + return 1; | |
| 57 | + else if(t > getDateTime(jsd[2].start) && t <= getDateTime(jsd[2].end)) | |
| 58 | + return 2; | |
| 59 | + else if(t > getDateTime(jsd[3].start) && t <= getDateTime(jsd[3].end)) | |
| 60 | + return 3; | |
| 61 | + else if(t > getDateTime(jsd[4].start)) | |
| 62 | + return 4; | |
| 63 | + }; | |
| 64 | + | |
| 65 | + // 8:31-16:00专用 | |
| 66 | + var judgmentTimeQuantum1 = function (t) { | |
| 67 | + var start = DateTimeTool.getDateTime(jsd[2].start); | |
| 68 | + if(t > start && t <= start.setHours(start.getHours() + 2)) | |
| 69 | + return 1; | |
| 70 | + else if(t > start.setHours(start.getHours() + 2) && t <= start.setHours(start.getHours() + 4)) | |
| 71 | + return 2; | |
| 72 | + else if(t > start.setHours(start.getHours() + 4) && t <= start.setHours(start.getHours() + 6)) | |
| 73 | + return 2; | |
| 74 | + else if(t > start.setHours(start.getHours() + 6) && t <= DateTimeTool.getDateTime(jsd[2].end)) | |
| 75 | + return 1; | |
| 76 | + }; | |
| 47 | 77 | return{ |
| 78 | + initSJD : initSJD, | |
| 48 | 79 | calculateHours : calculateHours, |
| 49 | 80 | getDateTime : getDateTime, |
| 50 | - getHHmmStr : getHHmmStr | |
| 81 | + getHHmmStr : getHHmmStr, | |
| 82 | + judgmentTimeQuantum : judgmentTimeQuantum, | |
| 83 | + judgmentTimeQuantum1 : judgmentTimeQuantum1 | |
| 51 | 84 | } |
| 52 | 85 | }(); | ... | ... |
src/main/resources/static/pages/base/timesmodel/js/echartsDrawGanTT.js
| ... | ... | @@ -5,7 +5,7 @@ var echartsDrawGTT = function () { |
| 5 | 5 | var upDowndom = document.getElementById("upDownContainer"); |
| 6 | 6 | var upDownChart = echarts.init(upDowndom); |
| 7 | 7 | // upDowndom.style.height = '200px'; |
| 8 | - var option,upDownOption,dataZoomStart = 0,dataZoomEnd = 80;//图层对象 | |
| 8 | + var option,upDownOption,dataZoomStart = 0,dataZoomEnd = 70;//图层对象 | |
| 9 | 9 | var historyData = [],// 保存操作图形后的数据集合(撤销与恢复操作) |
| 10 | 10 | _keyIndex = -1,// 记录当前操作步骤 (在撤销与恢复操作时) |
| 11 | 11 | dataUp = [],// (上/下)行发车时刻表数据 |
| ... | ... | @@ -107,7 +107,8 @@ var echartsDrawGTT = function () { |
| 107 | 107 | bcObj.qdz, |
| 108 | 108 | bcObj.zdz, |
| 109 | 109 | bcObj.STOPTIME, |
| 110 | - bcObj.isfb = 0 | |
| 110 | + bcObj.isfb ? 1:0, | |
| 111 | + bcObj.qs | |
| 111 | 112 | //bcObj.isSwitchXl, |
| 112 | 113 | //bcObj.bz, |
| 113 | 114 | ], |
| ... | ... | @@ -329,7 +330,7 @@ var echartsDrawGTT = function () { |
| 329 | 330 | bcTypeStr = bcType[type]; |
| 330 | 331 | |
| 331 | 332 | var arr = [ |
| 332 | - '{left|' + timeStr + '}{type|' + bcTypeStr +'}', | |
| 333 | + '{left|' + timeStr + '}{type|'+ ((dataZoomEnd - dataZoomStart) <= 70 ? bcType[type] : '') +'}', | |
| 333 | 334 | '{left|' + lastStr + '}{left|' + stayStr + '}' |
| 334 | 335 | ]; |
| 335 | 336 | return arr.join('\n'); |
| ... | ... | @@ -601,11 +602,17 @@ var echartsDrawGTT = function () { |
| 601 | 602 | lastStr = "行:" + last; |
| 602 | 603 | } |
| 603 | 604 | |
| 605 | + // 分班显示‘分’ | |
| 606 | + if(params.data.value[16] == 1) | |
| 607 | + bcTypeStr = "分"; | |
| 608 | + else | |
| 609 | + bcTypeStr = bcType[type]; | |
| 610 | + | |
| 604 | 611 | if(type == 'normal') { |
| 605 | 612 | stayStr = "停:" + params.data.value[15]; |
| 606 | 613 | } |
| 607 | 614 | var arr = [ |
| 608 | - '{left|' + timeStr + '}{type|'+ ((e.end - e.start) < 80 ? bcType[type] : '') +'}', | |
| 615 | + '{left|' + timeStr + '}{type|'+ ((dataZoomEnd - dataZoomStart) <= 70 ? bcType[type] : '') +'}', | |
| 609 | 616 | '{left|' + lastStr + '}{left|' + stayStr + '}' |
| 610 | 617 | ]; |
| 611 | 618 | |
| ... | ... | @@ -895,14 +902,15 @@ var echartsDrawGTT = function () { |
| 895 | 902 | data[dataIndex].value[2] = xMax; |
| 896 | 903 | data[dataIndex].value[1] = data[dataIndex].value[2] - data[dataIndex].value[3]; |
| 897 | 904 | } |
| 898 | - | |
| 899 | 905 | } |
| 900 | - _keyIndex++; | |
| 906 | + | |
| 907 | + set_keyIndex(++_keyIndex); | |
| 901 | 908 | |
| 902 | 909 | historyData[_keyIndex] = $.extend(true, [], historyData[_keyIndex], data);// 历史数组增加一次数据 |
| 903 | 910 | refreshDrag(); |
| 904 | 911 | refreshUpDownData(); |
| 905 | 912 | historyData.splice(_keyIndex + 1, historyData.length);// 数据改变后过后清除多余的历史数据 |
| 913 | + init(historyData[_keyIndex],false,false); | |
| 906 | 914 | } else { |
| 907 | 915 | refreshDrag(); |
| 908 | 916 | } |
| ... | ... | @@ -936,7 +944,12 @@ var echartsDrawGTT = function () { |
| 936 | 944 | color: '#333' |
| 937 | 945 | }, |
| 938 | 946 | min: 0, |
| 939 | - max: 30, | |
| 947 | + max: function(value) { | |
| 948 | + if(value.max < 30) | |
| 949 | + return 30; | |
| 950 | + else | |
| 951 | + return value.max + 5; | |
| 952 | + }, | |
| 940 | 953 | axisTick: {show: false}, |
| 941 | 954 | //axisLine: {lineStyle: {color: '#ccc'}}, |
| 942 | 955 | axisLabel: {show: false}, | ... | ... |
src/main/resources/static/pages/base/timesmodel/js/gantt.js
| 1 | 1 | (function() { |
| 2 | + var indexLoad = layer.load(0, {content:'拼命计算中...',time: 10*1000,success: function(layero){ | |
| 3 | + layero.find('.layui-layer-content').css('padding-top', '40px'); | |
| 4 | + }}); | |
| 2 | 5 | // 全屏模式点击事件. |
| 3 | 6 | // $(document).on('click','.fullscreen',function() { |
| 4 | 7 | // if($('.ganttSvgContainer').height()>400) |
| ... | ... | @@ -34,7 +37,7 @@ |
| 34 | 37 | offsetX : offsetX, |
| 35 | 38 | offsetY : offsetY, |
| 36 | 39 | content :'<div class="tipsdscontinue"> <span>图例:</span> <div class="dscrp sx"></div><span>:上行</span> <div class="dscrp xx"></div> <span>:下行</span></br><div/></br>' + |
| 37 | - '<div class="tipsdscontinue"> <span>该模块支持鼠标拖拽、鼠标绘制(鼠标右键按下3S开始)框选功能.</span> <div/>' | |
| 40 | + '<div class="tipsdscontinue"> <span>该模块支持鼠标拖拽功能.</span> <div/>' | |
| 38 | 41 | |
| 39 | 42 | }); |
| 40 | 43 | $('.tipso-animation').tipso('show'); |
| ... | ... | @@ -72,10 +75,6 @@ |
| 72 | 75 | _paramObj = Main_v2.getFactory().createParameterObj(map, dataMap); |
| 73 | 76 | map.clzs = _paramObj.calcuClzx(); |
| 74 | 77 | CSMap = getMaxCarAndStopSpace1(map); |
| 75 | - } else if (map.baseRes == '3') { // 主站停站使用v2_2版本 | |
| 76 | - _paramObj = Main_v2.getFactory().createParameterObj(map, dataMap); // TODO:暂时使用v2_1版本的方法,通用的,后续再放到v2_2版本中 | |
| 77 | - map.clzs = InternalScheduleObj_v2_2.calcuClzx(_paramObj); | |
| 78 | - CSMap = getMaxCarAndStopSpace1(map); | |
| 79 | 78 | } |
| 80 | 79 | |
| 81 | 80 | // 定义时间参数. |
| ... | ... | @@ -97,8 +96,6 @@ |
| 97 | 96 | // TODO:CSMap.maxCar 之后要设定一下的 |
| 98 | 97 | data = Main_v2.BXPplaceClassesTime03(_paramObj, CSMap.maxCar); |
| 99 | 98 | Main_v2.exportDataConfig(data.aInternalLpObj); |
| 100 | - } else if (map.baseRes == '3') { // 主站停站使用v2_2版本 | |
| 101 | - data = Main_v2_2.BXPplaceClassesTime03(_paramObj, CSMap.maxCar); | |
| 102 | 99 | } |
| 103 | 100 | |
| 104 | 101 | }else { |
| ... | ... | @@ -139,11 +136,8 @@ |
| 139 | 136 | // graph.addHistory(); |
| 140 | 137 | // // 初始化右键菜单. |
| 141 | 138 | // contextInit(graph); |
| 142 | - | |
| 143 | - if (map.baseRes == '3') { | |
| 144 | - // 导入导出设置 | |
| 145 | - Main_v2_2.exportExcelConfig($_GlobalGraph.getDataArray); | |
| 146 | - } | |
| 139 | + // 关闭弹出层 | |
| 140 | + layer.close(indexLoad); | |
| 147 | 141 | },500); |
| 148 | 142 | |
| 149 | 143 | /** |
| ... | ... | @@ -218,9 +212,10 @@ |
| 218 | 212 | 'gftzsj': BaseFun.formatPairing(gatps.gfupStopTime,gatps.gfdownStopTime),// 高峰停站时间. |
| 219 | 213 | 'dgtzsj' : BaseFun.formatPairing(gatps.dgupStopTime,gatps.dgdownStopTime),// 低谷停站时间. |
| 220 | 214 | 'dgmaxtzsj' : parseInt(gatps.dgmaxtzsj),// 低谷最大停站时间. |
| 221 | - 'dgmaxfcjx' : parseInt(gatps.dgmaxfcjx),// 低谷最大发车间隙. | |
| 215 | + // 'dgmaxfcjx' : parseInt(gatps.dgmaxfcjx),// 低谷最大发车间隙. | |
| 216 | + 'dgmaxfcjx' : 20,// 低谷最大发车间隙. | |
| 222 | 217 | 'map' : gatps, |
| 223 | - 'zzsj':gatps.zzsj,// 周转时间. | |
| 218 | + 'zzsj':gatps.zzsj// 周转时间. | |
| 224 | 219 | }; |
| 225 | 220 | } |
| 226 | 221 | ... | ... |
src/main/resources/static/pages/base/timesmodel/js/systemTools.js
| ... | ... | @@ -13,8 +13,7 @@ $('.recover').on('click',function() { |
| 13 | 13 | echartsDrawGTT.set_keyIndex(++_keyIndex); |
| 14 | 14 | var historyData = echartsDrawGTT.getHistoryData(); |
| 15 | 15 | var data = $.extend(true, [], data, historyData[_keyIndex]); |
| 16 | - echartsDrawGTT.init(data,false,false); | |
| 17 | - echartsDrawGTT.refreshDrag(); | |
| 16 | + echartsDrawGTT.init(data,false,false,false); | |
| 18 | 17 | layer.msg('恢复到操作记录的【第'+(_keyIndex+1)+'步】了!'); |
| 19 | 18 | } |
| 20 | 19 | }); |
| ... | ... | @@ -33,8 +32,7 @@ $(".revoke").on("click",function(){ |
| 33 | 32 | echartsDrawGTT.set_keyIndex(--_keyIndex); |
| 34 | 33 | var historyData = echartsDrawGTT.getHistoryData(); |
| 35 | 34 | var data = $.extend(true, [], data, historyData[_keyIndex]); |
| 36 | - echartsDrawGTT.init(data,false,false); | |
| 37 | - echartsDrawGTT.refreshDrag(); | |
| 35 | + echartsDrawGTT.init(data,false,false,false); | |
| 38 | 36 | layer.msg('撤销到操作记录的【第'+(_keyIndex+1)+'步】了!'); |
| 39 | 37 | } |
| 40 | 38 | }); |
| ... | ... | @@ -101,8 +99,7 @@ $('#bcAdjustListSubmit').on('click',function() { |
| 101 | 99 | data[bcAdjustList[i]].value[0] = lpName; |
| 102 | 100 | data[bcAdjustList[i]].value[4] = lpDataCount[lpName][2]; |
| 103 | 101 | } |
| 104 | - echartsDrawGTT.init(data,false,true); | |
| 105 | - echartsDrawGTT.refreshDrag(); | |
| 102 | + echartsDrawGTT.init(data,false,true,false); | |
| 106 | 103 | } else |
| 107 | 104 | layer.msg('没有找到目标路牌,请重新选择!'); |
| 108 | 105 | $('.bc-adjust-list').addClass('hidden'); |
| ... | ... | @@ -148,8 +145,7 @@ function dropdownMenuDelete(dataIndex) { |
| 148 | 145 | // 关闭弹出层. |
| 149 | 146 | layer.closeAll(); |
| 150 | 147 | data.splice(dataIndex,1); |
| 151 | - echartsDrawGTT.init(data,false,true); | |
| 152 | - echartsDrawGTT.refreshDrag(); | |
| 148 | + echartsDrawGTT.init(data,false,true,false); | |
| 153 | 149 | layer.msg('删除成功!'); |
| 154 | 150 | }); |
| 155 | 151 | } |
| ... | ... | @@ -180,8 +176,7 @@ function dropdownMenuSwitchUpDown(dataIndex) { |
| 180 | 176 | data[dataIndex].value[3] = parseInt(dataMap.map.downInTimer)*60000; |
| 181 | 177 | data[dataIndex].value[2] = data[dataIndex].value[1] + data[dataIndex].value[3]; |
| 182 | 178 | } |
| 183 | - echartsDrawGTT.init(data,false,true); | |
| 184 | - echartsDrawGTT.refreshDrag(); | |
| 179 | + echartsDrawGTT.init(data,false,true,false); | |
| 185 | 180 | layer.msg('设置为上行成功!'); |
| 186 | 181 | } |
| 187 | 182 | // 路牌切换上下行 |
| ... | ... | @@ -213,8 +208,7 @@ function dropdownMenuLpSwitchUpDown(dataIndex) { |
| 213 | 208 | } |
| 214 | 209 | } |
| 215 | 210 | } |
| 216 | - echartsDrawGTT.init(data,false,true); | |
| 217 | - echartsDrawGTT.refreshDrag(); | |
| 211 | + echartsDrawGTT.init(data,false,true,false); | |
| 218 | 212 | layer.msg('路牌切换上下行成功!'); |
| 219 | 213 | } |
| 220 | 214 | // 设为正常 |
| ... | ... | @@ -226,11 +220,7 @@ function dropdownMenuSetNormal(dataIndex) { |
| 226 | 220 | |
| 227 | 221 | if(!isType(data[dataIndex].value[6],'设置为正常班次','normal','正常班次')) { |
| 228 | 222 | data[dataIndex].value[6] = 'normal'; |
| 229 | - historyData.push(data); | |
| 230 | - echartsDrawGTT.set_keyIndex(++_keyIndex); | |
| 231 | - echartsDrawGTT.setHistoryData(historyData); | |
| 232 | - echartsDrawGTT.refreshDrag(); | |
| 233 | - echartsDrawGTT.refreshUpDownData(); | |
| 223 | + echartsDrawGTT.init(data,false,true,false); | |
| 234 | 224 | layer.msg('设置为正常成功!'); |
| 235 | 225 | } |
| 236 | 226 | } |
| ... | ... | @@ -242,11 +232,7 @@ function dropdownMenuSetRegion(dataIndex) { |
| 242 | 232 | data = $.extend(true, [], data, historyData[_keyIndex]); |
| 243 | 233 | if(!isType(data[dataIndex].value[6],'设置为区间班次','region','区间班次')) { |
| 244 | 234 | data[dataIndex].value[6] = 'region'; |
| 245 | - historyData.push(data); | |
| 246 | - echartsDrawGTT.set_keyIndex(++_keyIndex); | |
| 247 | - echartsDrawGTT.setHistoryData(historyData); | |
| 248 | - echartsDrawGTT.refreshDrag(); | |
| 249 | - echartsDrawGTT.refreshUpDownData(); | |
| 235 | + echartsDrawGTT.init(data,false,true,false); | |
| 250 | 236 | layer.msg('设置为区间成功!'); |
| 251 | 237 | } |
| 252 | 238 | } |
| ... | ... | @@ -258,11 +244,7 @@ function dropdownMenuSetFb(dataIndex) { |
| 258 | 244 | data = $.extend(true, [], data, historyData[_keyIndex]); |
| 259 | 245 | if(!isType(data[dataIndex].value[6],'设置为分班班次') && !isType(data[dataIndex].value[16],'设置为分班班次',1,'分班班次')) { |
| 260 | 246 | data[dataIndex].value[16] = 1; |
| 261 | - historyData.push(data); | |
| 262 | - echartsDrawGTT.set_keyIndex(++_keyIndex); | |
| 263 | - echartsDrawGTT.setHistoryData(historyData); | |
| 264 | - echartsDrawGTT.refreshDrag(); | |
| 265 | - echartsDrawGTT.refreshUpDownData(); | |
| 247 | + echartsDrawGTT.init(data,false,true,false); | |
| 266 | 248 | layer.msg('设置为分班成功!'); |
| 267 | 249 | } |
| 268 | 250 | } |
| ... | ... | @@ -274,11 +256,7 @@ function dropdownMenuSetNoFb(dataIndex) { |
| 274 | 256 | data = $.extend(true, [], data, historyData[_keyIndex]); |
| 275 | 257 | if(!isType(data[dataIndex].value[6],'取消分班') && !isType(data[dataIndex].value[16],0,'不是分班班次')) { |
| 276 | 258 | data[dataIndex].value[16] = 0; |
| 277 | - historyData.push(data); | |
| 278 | - echartsDrawGTT.set_keyIndex(++_keyIndex); | |
| 279 | - echartsDrawGTT.setHistoryData(historyData); | |
| 280 | - echartsDrawGTT.refreshDrag(); | |
| 281 | - echartsDrawGTT.refreshUpDownData(); | |
| 259 | + echartsDrawGTT.init(data,false,true,false); | |
| 282 | 260 | layer.msg('取消分班成功!'); |
| 283 | 261 | } |
| 284 | 262 | } |
| ... | ... | @@ -290,11 +268,7 @@ function dropdownMenuSetVenting(dataIndex) { |
| 290 | 268 | data = $.extend(true, [], data, historyData[_keyIndex]); |
| 291 | 269 | if(!isType(data[dataIndex].value[6],'设置为直放班次','venting','直放班次')) { |
| 292 | 270 | data[dataIndex].value[6] = 'venting'; |
| 293 | - historyData.push(data); | |
| 294 | - echartsDrawGTT.set_keyIndex(++_keyIndex); | |
| 295 | - echartsDrawGTT.setHistoryData(historyData); | |
| 296 | - echartsDrawGTT.refreshDrag(); | |
| 297 | - echartsDrawGTT.refreshUpDownData(); | |
| 271 | + echartsDrawGTT.init(data,false,true,false); | |
| 298 | 272 | layer.msg('设置为直放成功!'); |
| 299 | 273 | } |
| 300 | 274 | } |
| ... | ... | @@ -306,11 +280,7 @@ function dropdownMenuSetMajor(dataIndex) { |
| 306 | 280 | data = $.extend(true, [], data, historyData[_keyIndex]); |
| 307 | 281 | if(!isType(data[dataIndex].value[6],'设置为放站班次','major','放站班次')){ |
| 308 | 282 | data[dataIndex].value[6] = 'major' ; |
| 309 | - historyData.push(data); | |
| 310 | - echartsDrawGTT.set_keyIndex(++_keyIndex); | |
| 311 | - echartsDrawGTT.setHistoryData(historyData); | |
| 312 | - echartsDrawGTT.refreshDrag(); | |
| 313 | - echartsDrawGTT.refreshUpDownData(); | |
| 283 | + echartsDrawGTT.init(data,false,true,false); | |
| 314 | 284 | layer.msg('设置为放站成功!'); |
| 315 | 285 | } |
| 316 | 286 | } |
| ... | ... | @@ -460,6 +430,6 @@ $('.parambtn').on('click', function() { |
| 460 | 430 | $.get('/pages/base/timesmodel/paramadd.html', function(m){ |
| 461 | 431 | $(pjaxContainer).append(m); |
| 462 | 432 | // 规定被选元素要触发的事件。可以使自定义事件(使用 bind() 函数来附加),或者任何标准事件。 |
| 463 | - $('#paramadd_mobal').trigger('paramAddMobal.show', [Main_v2, Main_v2_2, InternalScheduleObj_v2_2]); | |
| 433 | + $('#paramadd_mobal').trigger('paramAddMobal.show', Main_v2); | |
| 464 | 434 | }); |
| 465 | 435 | }); |
| 466 | 436 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/base/timesmodel/js/v1/AdjustTrip.js
| ... | ... | @@ -15,26 +15,47 @@ |
| 15 | 15 | */ |
| 16 | 16 | var AdjustTrip = function () { |
| 17 | 17 | var departureClearanceAdjust = function (bcList, dataMap) { |
| 18 | - var upBc = new Array(), downBc = new Array(); | |
| 19 | - // 取出上下行班次,并按发车时间排序 | |
| 20 | - $.each(bcList, function () { | |
| 21 | - if(this.bcType == "normal"){ | |
| 22 | - if(this.xlDir == "relationshipGraph-up") | |
| 23 | - upBc.push(this); | |
| 24 | - if(this.xlDir == "relationshipGraph-down") | |
| 25 | - downBc.push(this); | |
| 18 | + var upDownbc = bcFun.getUpAndDownBc(bcList, dataMap); | |
| 19 | + | |
| 20 | + // 升序排序 | |
| 21 | + // upDownbc[0].sort(function(a,b){return DateTimeTool.getDateTime(a.fcsj)-DateTimeTool.getDateTime(b.fcsj)}); | |
| 22 | + // upDownbc[1].sort(function(a,b){return DateTimeTool.getDateTime(a.fcsj)-DateTimeTool.getDateTime(b.fcsj)}); | |
| 23 | + for(var i=1; i<20; i++) { | |
| 24 | + if(i%2 == 0) { | |
| 25 | + calculate(upDownbc[1], bcList, dataMap, 5); | |
| 26 | + calculate(upDownbc[0], bcList, dataMap, 5); | |
| 27 | + } else { | |
| 28 | + calculate(upDownbc[0], bcList, dataMap, 5); | |
| 29 | + calculate(upDownbc[1], bcList, dataMap, 5); | |
| 30 | + | |
| 26 | 31 | } |
| 27 | - }); | |
| 28 | - // upBc.sort(function(a,b){return a.fcint-b.fcint}); | |
| 29 | - // downBc.sort(function(a,b){return a.fcint-b.fcint}); | |
| 30 | - calculate(upBc, bcList, dataMap, 11); | |
| 31 | - calculate(downBc, bcList, dataMap, 11); | |
| 32 | + } | |
| 33 | + for(var i=1; i<20; i++) { | |
| 34 | + if(i%2 == 0) { | |
| 35 | + calculateReverse(upDownbc[1], bcList, dataMap, 5); | |
| 36 | + calculateReverse(upDownbc[0], bcList, dataMap, 5); | |
| 37 | + } else { | |
| 38 | + calculateReverse(upDownbc[0], bcList, dataMap, 5); | |
| 39 | + calculateReverse(upDownbc[1], bcList, dataMap, 5); | |
| 40 | + | |
| 41 | + } | |
| 42 | + } | |
| 43 | + for(var i=1; i<10; i++) { | |
| 44 | + if(i%2 == 0) { | |
| 45 | + calculate(upDownbc[1], bcList, dataMap, 5); | |
| 46 | + calculate(upDownbc[0], bcList, dataMap, 5); | |
| 47 | + } else { | |
| 48 | + calculate(upDownbc[0], bcList, dataMap, 5); | |
| 49 | + calculate(upDownbc[1], bcList, dataMap, 5); | |
| 50 | + | |
| 51 | + } | |
| 52 | + } | |
| 32 | 53 | }; |
| 33 | 54 | |
| 34 | 55 | var iBcCountOfGroup = 3; // 3个班次一次参与计算 |
| 35 | 56 | var dirBcOfGroup = []; |
| 36 | 57 | var dirBcIntervalOfGroup = []; // 班次间隔列表,3个班次,2个间隔 |
| 37 | - var oBcFcTime; // 班次发车时间 | |
| 58 | + var oBcFcTime = null; // 班次发车时间 | |
| 38 | 59 | /** |
| 39 | 60 | * 平衡车距内部方法。 |
| 40 | 61 | * @param dirBc {array} 单方向班次列表 |
| ... | ... | @@ -46,19 +67,20 @@ var AdjustTrip = function () { |
| 46 | 67 | var calculate = function (dirBc, bcList, dataMap, iFre) { |
| 47 | 68 | if(iFre > 0){ |
| 48 | 69 | // 升序排序 |
| 49 | - dirBc.sort(function(a,b){return a.fcint-b.fcint}); | |
| 70 | + dirBc.sort(function(a,b){return DateTimeTool.getDateTime(a.fcsj)-DateTimeTool.getDateTime(b.fcsj)}); | |
| 50 | 71 | |
| 51 | 72 | for (var i = 0; i <= dirBc.length; i++) { |
| 52 | 73 | // 获取班次列表 |
| 53 | 74 | _calcuBcGroup(i, dirBc); |
| 54 | 75 | |
| 55 | - if (dirBcOfGroup.length > 0) { | |
| 76 | + if (dirBcOfGroup.length > 2) { | |
| 56 | 77 | // 获取中间预调整的班次时间 |
| 57 | - oBcFcTime = dirBcOfGroup[1].fcint; | |
| 78 | + oBcFcTime = dirBcOfGroup[1].fcsj; | |
| 58 | 79 | // 获取发车间隙:用发车时间判断 |
| 59 | - var fcjx = dataMap.fcjx[judgmentTimeQuantum(oBcFcTime)]; | |
| 80 | + var fcjx = dataMap.fcjx[DateTimeTool.judgmentTimeQuantum(DateTimeTool.getDateTime(oBcFcTime))]; | |
| 60 | 81 | // 发车时间所在时间段 |
| 61 | - // var timeQuantum = judgmentTimeQuantum(oBcFcTime); | |
| 82 | + // var timeQuantum = DateTimeTool.judgmentTimeQuantum(oBcFcTime); | |
| 83 | + | |
| 62 | 84 | if (dirBcIntervalOfGroup[0] < fcjx.min) { |
| 63 | 85 | // 发车间隙调整为高峰发车间隙 +时间 |
| 64 | 86 | if (_isModifyBcFcsj( |
| ... | ... | @@ -73,6 +95,21 @@ var AdjustTrip = function () { |
| 73 | 95 | dataMap, |
| 74 | 96 | 1 |
| 75 | 97 | ); |
| 98 | + } else { | |
| 99 | + // 最后一个班次不能为末班车 中间班次不能调整,就调整后一个的班次 | |
| 100 | + if (!bcFun.lpBcIsHaveLast(dirBcOfGroup,dataMap.smbcsjArr) && _isModifyBcFcsj( | |
| 101 | + bcList, | |
| 102 | + dirBcOfGroup[2], | |
| 103 | + dataMap, | |
| 104 | + -1 | |
| 105 | + )) { | |
| 106 | + _modifyFcsj( | |
| 107 | + bcList, | |
| 108 | + dirBcOfGroup[2], | |
| 109 | + dataMap, | |
| 110 | + -1 | |
| 111 | + ); | |
| 112 | + } | |
| 76 | 113 | } |
| 77 | 114 | } else if (dirBcIntervalOfGroup[0] > fcjx.max) { |
| 78 | 115 | // 发车间隙调整为高峰发车间隙 -时间 |
| ... | ... | @@ -81,17 +118,35 @@ var AdjustTrip = function () { |
| 81 | 118 | dirBcOfGroup[1], |
| 82 | 119 | dataMap, |
| 83 | 120 | -1 |
| 121 | + // fcjx.max - dirBcIntervalOfGroup[0] | |
| 84 | 122 | )) { |
| 85 | 123 | _modifyFcsj( |
| 86 | 124 | bcList, |
| 87 | 125 | dirBcOfGroup[1], |
| 88 | 126 | dataMap, |
| 89 | 127 | -1 |
| 128 | + // fcjx.max - dirBcIntervalOfGroup[0] | |
| 90 | 129 | ); |
| 130 | + } else { | |
| 131 | + // 下一个班次不能为首班车 中间班次不能调整,就调整下一个的班次 | |
| 132 | + if (!bcFun.lpBcIsHaveLast(dirBcOfGroup,dataMap.smbcsjArr) && _isModifyBcFcsj( | |
| 133 | + bcList, | |
| 134 | + dirBcOfGroup[2], | |
| 135 | + dataMap, | |
| 136 | + fcjx.max - dirBcIntervalOfGroup[0] | |
| 137 | + )) { | |
| 138 | + _modifyFcsj( | |
| 139 | + bcList, | |
| 140 | + dirBcOfGroup[2], | |
| 141 | + dataMap, | |
| 142 | + fcjx.max - dirBcIntervalOfGroup[0] | |
| 143 | + ); | |
| 144 | + } | |
| 91 | 145 | } |
| 92 | 146 | } else { |
| 93 | 147 | // -1或+1分钟 |
| 94 | 148 | if (Math.abs(dirBcIntervalOfGroup[0] - dirBcIntervalOfGroup[1]) <= 1) { |
| 149 | + continue; | |
| 95 | 150 | // 两个间隔相差1分钟,不处理 |
| 96 | 151 | } else if (dirBcIntervalOfGroup[0] > dirBcIntervalOfGroup[1]) { |
| 97 | 152 | if (_isModifyBcFcsj( |
| ... | ... | @@ -106,6 +161,21 @@ var AdjustTrip = function () { |
| 106 | 161 | dataMap, |
| 107 | 162 | -1 |
| 108 | 163 | ); |
| 164 | + } else { | |
| 165 | + // 前一个班次不能为首班车 中间班次不能调整,就调整前一个的班次 | |
| 166 | + if (!bcFun.lpBcIsHaveFirst(dirBcOfGroup,dataMap.smbcsjArr) && _isModifyBcFcsj( | |
| 167 | + bcList, | |
| 168 | + dirBcOfGroup[0], | |
| 169 | + dataMap, | |
| 170 | + 1 | |
| 171 | + )) { | |
| 172 | + _modifyFcsj( | |
| 173 | + bcList, | |
| 174 | + dirBcOfGroup[0], | |
| 175 | + dataMap, | |
| 176 | + 1 | |
| 177 | + ); | |
| 178 | + } | |
| 109 | 179 | } |
| 110 | 180 | } else { |
| 111 | 181 | if (_isModifyBcFcsj( |
| ... | ... | @@ -120,6 +190,21 @@ var AdjustTrip = function () { |
| 120 | 190 | dataMap, |
| 121 | 191 | 1 |
| 122 | 192 | ); |
| 193 | + } else { | |
| 194 | + // 最后一个班次不能为末班车 中间班次不能调整,就调整后一个的班次 | |
| 195 | + if (!bcFun.lpBcIsHaveLast(dirBcOfGroup,dataMap.smbcsjArr) && _isModifyBcFcsj( | |
| 196 | + bcList, | |
| 197 | + dirBcOfGroup[2], | |
| 198 | + dataMap, | |
| 199 | + -1 | |
| 200 | + )) { | |
| 201 | + _modifyFcsj( | |
| 202 | + bcList, | |
| 203 | + dirBcOfGroup[2], | |
| 204 | + dataMap, | |
| 205 | + -1 | |
| 206 | + ); | |
| 207 | + } | |
| 123 | 208 | } |
| 124 | 209 | } |
| 125 | 210 | } |
| ... | ... | @@ -140,7 +225,10 @@ var AdjustTrip = function () { |
| 140 | 225 | dirBcOfGroup = []; |
| 141 | 226 | dirBcIntervalOfGroup = []; |
| 142 | 227 | for (var i = iStartIndex; i < iStartIndex + iBcCountOfGroup && iStartIndex < dirBc.length - 2; i++) { |
| 143 | - dirBcOfGroup.push(dirBc[i]); | |
| 228 | + if(dirBc[i].bcType == 'cf') | |
| 229 | + iStartIndex++; | |
| 230 | + else | |
| 231 | + dirBcOfGroup.push(dirBc[i]); | |
| 144 | 232 | } |
| 145 | 233 | for (var j = 0; j < dirBcOfGroup.length - 1; j++) { |
| 146 | 234 | dirBcIntervalOfGroup.push((DateTimeTool.getDateTime(dirBcOfGroup[j + 1].fcsj).getTime() - DateTimeTool.getDateTime(dirBcOfGroup[j].fcsj).getTime())/60000); |
| ... | ... | @@ -149,6 +237,201 @@ var AdjustTrip = function () { |
| 149 | 237 | }; |
| 150 | 238 | |
| 151 | 239 | /** |
| 240 | + * 平衡车距内部方法(反方向)。 | |
| 241 | + * @param dirBc {array} 单方向班次列表 | |
| 242 | + * @param bcList {array} 所有班次列表对象 | |
| 243 | + * @param dataMap {array} 参数对象 | |
| 244 | + * @param iFre {int} 递归次数 | |
| 245 | + * @private | |
| 246 | + */ | |
| 247 | + var calculateReverse = function (dirBc, bcList, dataMap, iFre) { | |
| 248 | + if(iFre > 0){ | |
| 249 | + // 降序排序 | |
| 250 | + dirBc.sort(function(a,b){return DateTimeTool.getDateTime(b.fcsj)-DateTimeTool.getDateTime(a.fcsj)}); | |
| 251 | + | |
| 252 | + for (var i = 0; i <= dirBc.length; i++) { | |
| 253 | + // 获取班次列表 | |
| 254 | + _calcuReverseBcGroup(i, dirBc); | |
| 255 | + | |
| 256 | + if (dirBcOfGroup.length > 2) { | |
| 257 | + // 获取中间预调整的班次时间 | |
| 258 | + oBcFcTime = dirBcOfGroup[1].fcsj; | |
| 259 | + // 获取发车间隙:用发车时间判断 | |
| 260 | + var fcjx = dataMap.fcjx[DateTimeTool.judgmentTimeQuantum(DateTimeTool.getDateTime(oBcFcTime))]; | |
| 261 | + // 发车时间所在时间段 | |
| 262 | + // var timeQuantum = DateTimeTool.judgmentTimeQuantum(oBcFcTime); | |
| 263 | + | |
| 264 | + if (dirBcIntervalOfGroup[0] < fcjx.min) { | |
| 265 | + // 发车间隙调整为高峰发车间隙 +时间 | |
| 266 | + if (_isModifyBcFcsj( | |
| 267 | + bcList, | |
| 268 | + dirBcOfGroup[1], | |
| 269 | + dataMap, | |
| 270 | + -1 | |
| 271 | + )) { | |
| 272 | + _modifyFcsj( | |
| 273 | + bcList, | |
| 274 | + dirBcOfGroup[1], | |
| 275 | + dataMap, | |
| 276 | + -1 | |
| 277 | + ); | |
| 278 | + } else { | |
| 279 | + // 最后一个班次不能为末班车 中间班次不能调整,就调整后一个的班次 | |
| 280 | + if (!bcFun.lpBcIsHaveFirst(dirBcOfGroup,dataMap.smbcsjArr) && _isModifyBcFcsj( | |
| 281 | + bcList, | |
| 282 | + dirBcOfGroup[2], | |
| 283 | + dataMap, | |
| 284 | + 1 | |
| 285 | + )) { | |
| 286 | + _modifyFcsj( | |
| 287 | + bcList, | |
| 288 | + dirBcOfGroup[2], | |
| 289 | + dataMap, | |
| 290 | + 1 | |
| 291 | + ); | |
| 292 | + } | |
| 293 | + } | |
| 294 | + } else if (dirBcIntervalOfGroup[0] > fcjx.max) { | |
| 295 | + // 发车间隙调整为高峰发车间隙 -时间 | |
| 296 | + if (_isModifyBcFcsj( | |
| 297 | + bcList, | |
| 298 | + dirBcOfGroup[1], | |
| 299 | + dataMap, | |
| 300 | + 1 | |
| 301 | + // fcjx.max - dirBcIntervalOfGroup[0] | |
| 302 | + )) { | |
| 303 | + _modifyFcsj( | |
| 304 | + bcList, | |
| 305 | + dirBcOfGroup[1], | |
| 306 | + dataMap, | |
| 307 | + 1 | |
| 308 | + // fcjx.max - dirBcIntervalOfGroup[0] | |
| 309 | + ); | |
| 310 | + } else { | |
| 311 | + // 最后一个班次不能为首班车 中间班次不能调整,就调整后一个的班次 | |
| 312 | + if (!bcFun.lpBcIsHaveFirst(dirBcOfGroup,dataMap.smbcsjArr) && _isModifyBcFcsj( | |
| 313 | + bcList, | |
| 314 | + dirBcOfGroup[2], | |
| 315 | + dataMap, | |
| 316 | + dirBcIntervalOfGroup[0] - fcjx.max | |
| 317 | + )) { | |
| 318 | + _modifyFcsj( | |
| 319 | + bcList, | |
| 320 | + dirBcOfGroup[2], | |
| 321 | + dataMap, | |
| 322 | + dirBcIntervalOfGroup[0] - fcjx.max | |
| 323 | + ); | |
| 324 | + } else { | |
| 325 | + // 前一个班次不能为首班车 中间班次不能调整,就调整前一个的班次 | |
| 326 | + if (!bcFun.lpBcIsHaveLast(dirBcOfGroup[0]) && _isModifyBcFcsj( | |
| 327 | + bcList, | |
| 328 | + dirBcOfGroup[0], | |
| 329 | + dataMap, | |
| 330 | + -1 | |
| 331 | + )) { | |
| 332 | + _modifyFcsj( | |
| 333 | + bcList, | |
| 334 | + dirBcOfGroup[0], | |
| 335 | + dataMap, | |
| 336 | + -1 | |
| 337 | + ); | |
| 338 | + } | |
| 339 | + } | |
| 340 | + } | |
| 341 | + } else { | |
| 342 | + // -1或+1分钟 | |
| 343 | + if (Math.abs(dirBcIntervalOfGroup[0] - dirBcIntervalOfGroup[1]) <= 1) { | |
| 344 | + continue; | |
| 345 | + // 两个间隔相差1分钟,不处理 | |
| 346 | + } else if (dirBcIntervalOfGroup[0] > dirBcIntervalOfGroup[1]) { | |
| 347 | + if (_isModifyBcFcsj( | |
| 348 | + bcList, | |
| 349 | + dirBcOfGroup[1], | |
| 350 | + dataMap, | |
| 351 | + 1 | |
| 352 | + )) { | |
| 353 | + _modifyFcsj( | |
| 354 | + bcList, | |
| 355 | + dirBcOfGroup[1], | |
| 356 | + dataMap, | |
| 357 | + 1 | |
| 358 | + ); | |
| 359 | + } else { | |
| 360 | + // 前一个班次不能为首班车 中间班次不能调整,就调整前一个的班次 | |
| 361 | + if (!bcFun.lpBcIsHaveLast(dirBcOfGroup,dataMap.smbcsjArr) && _isModifyBcFcsj( | |
| 362 | + bcList, | |
| 363 | + dirBcOfGroup[0], | |
| 364 | + dataMap, | |
| 365 | + -1 | |
| 366 | + )) { | |
| 367 | + _modifyFcsj( | |
| 368 | + bcList, | |
| 369 | + dirBcOfGroup[0], | |
| 370 | + dataMap, | |
| 371 | + -1 | |
| 372 | + ); | |
| 373 | + } | |
| 374 | + } | |
| 375 | + } else { | |
| 376 | + if (_isModifyBcFcsj( | |
| 377 | + bcList, | |
| 378 | + dirBcOfGroup[1], | |
| 379 | + dataMap, | |
| 380 | + -1 | |
| 381 | + )) { | |
| 382 | + _modifyFcsj( | |
| 383 | + bcList, | |
| 384 | + dirBcOfGroup[1], | |
| 385 | + dataMap, | |
| 386 | + -1 | |
| 387 | + ); | |
| 388 | + } else { | |
| 389 | + // 最后一个班次不能为末班车 中间班次不能调整,就调整后一个的班次 | |
| 390 | + if (!bcFun.lpBcIsHaveFirst(dirBcOfGroup,dataMap.smbcsjArr) && _isModifyBcFcsj( | |
| 391 | + bcList, | |
| 392 | + dirBcOfGroup[2], | |
| 393 | + dataMap, | |
| 394 | + 1 | |
| 395 | + )) { | |
| 396 | + _modifyFcsj( | |
| 397 | + bcList, | |
| 398 | + dirBcOfGroup[2], | |
| 399 | + dataMap, | |
| 400 | + 1 | |
| 401 | + ); | |
| 402 | + } | |
| 403 | + } | |
| 404 | + } | |
| 405 | + } | |
| 406 | + } | |
| 407 | + } | |
| 408 | + // bcFun.deleteNotInRangeBc(dirBc, dataMap.smbcsjArr[].kssj, dataMap.smbcsjArr[].jssj); | |
| 409 | + // 递归迭代 | |
| 410 | + calculateReverse(dirBc, bcList, dataMap, iFre - 1); | |
| 411 | + } | |
| 412 | + }; | |
| 413 | + /** | |
| 414 | + * 按照规则计算班次列表()。 | |
| 415 | + * @param iStartIndex {int} 开始索引 | |
| 416 | + * @param dirBc {array} 班次列表 | |
| 417 | + * @private | |
| 418 | + */ | |
| 419 | + var _calcuReverseBcGroup = function(iStartIndex, dirBc) { | |
| 420 | + dirBcOfGroup = []; | |
| 421 | + dirBcIntervalOfGroup = []; | |
| 422 | + for (var i = iStartIndex; i < iStartIndex + iBcCountOfGroup && iStartIndex < dirBc.length - 2; i++) { | |
| 423 | + if(dirBc[i].bcType == 'cf') | |
| 424 | + iStartIndex++; | |
| 425 | + else | |
| 426 | + dirBcOfGroup.push(dirBc[i]); | |
| 427 | + } | |
| 428 | + for (var j = 0; j < dirBcOfGroup.length - 1; j++) { | |
| 429 | + dirBcIntervalOfGroup.push((DateTimeTool.getDateTime(dirBcOfGroup[j].fcsj).getTime() - DateTimeTool.getDateTime(dirBcOfGroup[j + 1].fcsj).getTime())/60000); | |
| 430 | + // dirBcIntervalOfGroup.push(Math.round((dirBcOfGroup[j + 1].fcint - dirBcOfGroup[j].fcint)/360000)); | |
| 431 | + } | |
| 432 | + }; | |
| 433 | + | |
| 434 | + /** | |
| 152 | 435 | * 是否可以调整班次发车时间。 |
| 153 | 436 | * @param bcList {InternalLpObj} 所有班次对象 |
| 154 | 437 | * @param oBc {InternalBcObj} 调整班次对象 |
| ... | ... | @@ -159,19 +442,21 @@ var AdjustTrip = function () { |
| 159 | 442 | // 获取前后班次 |
| 160 | 443 | var bc = getLpPrevAndNextBc(bcList, oBc), |
| 161 | 444 | prevBc = bc[0], |
| 162 | - nextBc = bc[1]; | |
| 445 | + nextBc = bc[1], | |
| 446 | + cfBc = bc[2], | |
| 447 | + cfBcsj = 0; | |
| 448 | + if(cfBc != null){ | |
| 449 | + cfBcsj = cfBc.bcsj; | |
| 450 | + } | |
| 163 | 451 | if (prevBc != null && nextBc != null){ |
| 164 | - if (prevBc.bcType == 'cf') { // 如果是吃饭班次,不能修改发车时间 | |
| 165 | - return false; | |
| 166 | - } | |
| 167 | 452 | // 上一个班次的停站范围, 本班次停站范围, 上一班次停站时间, 本班次停站时间 |
| 168 | - var prevStopTimeScope = dataMap.tzsj[bcFun.upDownStrConvertNum(prevBc.xlDir)][judgmentTimeQuantum(prevBc.fcint)], | |
| 169 | - StopTimeScope = dataMap.tzsj[bcFun.upDownStrConvertNum(oBc.xlDir)][judgmentTimeQuantum(oBc.fcint)], | |
| 453 | + var prevStopTimeScope = dataMap.tzsj[bcFun.upDownStrConvertNum(prevBc.xlDir)][DateTimeTool.judgmentTimeQuantum(prevBc.fcint)], | |
| 454 | + StopTimeScope = dataMap.tzsj[bcFun.upDownStrConvertNum(oBc.xlDir)][DateTimeTool.judgmentTimeQuantum(oBc.fcint)], | |
| 170 | 455 | // prevBcStopTime = prevBc.STOPTIME + iStep, |
| 171 | 456 | // BcStopTime = oBc.STOPTIME + iStep; |
| 172 | 457 | // iStep为班次往后移动的时间,调整后的时间 = 停站 - 往后移动的时间 |
| 173 | 458 | prevBcStopTime = (DateTimeTool.getDateTime(oBc.fcsj) - DateTimeTool.getDateTime(prevBc.ARRIVALTIME))/60000 + iStep, |
| 174 | - BcStopTime = (DateTimeTool.getDateTime(nextBc.fcsj) - DateTimeTool.getDateTime(oBc.ARRIVALTIME))/60000 - iStep; | |
| 459 | + BcStopTime = (DateTimeTool.getDateTime(nextBc.fcsj) - DateTimeTool.getDateTime(oBc.ARRIVALTIME))/60000 - iStep - cfBcsj; // 如果有吃饭,则多减掉一个吃饭班次的运行时间 | |
| 175 | 460 | // 班次移动调整发车间隔时,需要考录的移动班次的前后停站 |
| 176 | 461 | if (prevBcStopTime >= 0 && BcStopTime >= 0) { |
| 177 | 462 | return true; |
| ... | ... | @@ -179,9 +464,9 @@ var AdjustTrip = function () { |
| 179 | 464 | return false; |
| 180 | 465 | } |
| 181 | 466 | } else if(prevBc == null && nextBc != null) { |
| 182 | - var StopTimeScope = dataMap.tzsj[bcFun.upDownStrConvertNum(nextBc.xlDir)][judgmentTimeQuantum(nextBc.fcint)], | |
| 183 | - BcStopTime = (DateTimeTool.getDateTime(nextBc.fcsj) - DateTimeTool.getDateTime(oBc.ARRIVALTIME))/60000 - iStep; | |
| 184 | - // 班次移动调整发车间隔时,需要考录的移动班次的前后停站 TODO:没有判定调整发车时间后会不会不够 | |
| 467 | + var StopTimeScope = dataMap.tzsj[bcFun.upDownStrConvertNum(nextBc.xlDir)][DateTimeTool.judgmentTimeQuantum(nextBc.fcint)], | |
| 468 | + BcStopTime = (DateTimeTool.getDateTime(nextBc.fcsj) - DateTimeTool.getDateTime(oBc.ARRIVALTIME))/60000 - iStep - cfBcsj; // 如果有吃饭,则多减掉一个吃饭班次的运行时间 | |
| 469 | + // 班次移动调整发车间隔时,需要考录的移动班次的前后停站 | |
| 185 | 470 | if (BcStopTime >= 0) { |
| 186 | 471 | return true; |
| 187 | 472 | } else { |
| ... | ... | @@ -189,10 +474,7 @@ var AdjustTrip = function () { |
| 189 | 474 | } |
| 190 | 475 | // 如果是第一个班次为空 |
| 191 | 476 | } else if(prevBc != null && nextBc == null) { |
| 192 | - if (prevBc.bcType == 'cf') { // 如果是吃饭班次,不能修改发车时间 | |
| 193 | - return false; | |
| 194 | - } | |
| 195 | - var prevStopTimeScope = dataMap.tzsj[bcFun.upDownStrConvertNum(prevBc.xlDir)][judgmentTimeQuantum(prevBc.fcint)], | |
| 477 | + var prevStopTimeScope = dataMap.tzsj[bcFun.upDownStrConvertNum(prevBc.xlDir)][DateTimeTool.judgmentTimeQuantum(prevBc.fcint)], | |
| 196 | 478 | prevBcStopTime = (DateTimeTool.getDateTime(oBc.fcsj) - DateTimeTool.getDateTime(prevBc.ARRIVALTIME))/60000 + iStep; |
| 197 | 479 | // 班次移动调整发车间隔时,需要考录的移动班次的前后停站 |
| 198 | 480 | if (prevBcStopTime >= 0) { |
| ... | ... | @@ -202,53 +484,6 @@ var AdjustTrip = function () { |
| 202 | 484 | } |
| 203 | 485 | } |
| 204 | 486 | } |
| 205 | - /*function _isModifyBcFcsj(bcList, oBc, dataMap, iStep) { | |
| 206 | - // 获取前后班次 | |
| 207 | - var bc = getLpPrevAndNextBc(bcList, oBc), | |
| 208 | - prevBc = bc[0], | |
| 209 | - nextBc = bc[1]; | |
| 210 | - if (prevBc != null && nextBc != null){ | |
| 211 | - if (prevBc.bcType == 'cf') { // 如果是吃饭班次,不能修改发车时间 | |
| 212 | - return false; | |
| 213 | - } | |
| 214 | - // 上一个班次的停站范围, 本班次停站范围, 上一班次停站时间, 本班次停站时间 | |
| 215 | - var prevStopTimeScope = dataMap.tzsj[bcFun.upDownStrConvertNum(prevBc.xlDir)][judgmentTimeQuantum(prevBc.fcint)], | |
| 216 | - StopTimeScope = dataMap.tzsj[bcFun.upDownStrConvertNum(oBc.xlDir)][judgmentTimeQuantum(oBc.fcint)], | |
| 217 | - // prevBcStopTime = prevBc.STOPTIME + iStep, | |
| 218 | - // BcStopTime = oBc.STOPTIME + iStep; | |
| 219 | - // iStep为班次往后移动的时间,调整后的时间 = 停站 - 往后移动的时间 | |
| 220 | - prevBcStopTime = (DateTimeTool.getDateTime(oBc.fcsj) - DateTimeTool.getDateTime(prevBc.ARRIVALTIME))/60000 + iStep, | |
| 221 | - BcStopTime = (DateTimeTool.getDateTime(nextBc.fcsj) - DateTimeTool.getDateTime(oBc.ARRIVALTIME))/60000 - iStep; | |
| 222 | - // 班次移动调整发车间隔时,需要考录的移动班次的前后停站 | |
| 223 | - if (prevBcStopTime >= prevStopTimeScope.min && BcStopTime >= StopTimeScope.min) { | |
| 224 | - return true; | |
| 225 | - } else { | |
| 226 | - return false; | |
| 227 | - } | |
| 228 | - } else if(prevBc == null && nextBc != null) { | |
| 229 | - var StopTimeScope = dataMap.tzsj[bcFun.upDownStrConvertNum(nextBc.xlDir)][judgmentTimeQuantum(nextBc.fcint)], | |
| 230 | - BcStopTime = (DateTimeTool.getDateTime(nextBc.fcsj) - DateTimeTool.getDateTime(oBc.ARRIVALTIME))/60000 - iStep; | |
| 231 | - // 班次移动调整发车间隔时,需要考录的移动班次的前后停站 TODO:没有判定调整发车时间后会不会不够 | |
| 232 | - if (BcStopTime >= StopTimeScope.min) { | |
| 233 | - return true; | |
| 234 | - } else { | |
| 235 | - return false; | |
| 236 | - } | |
| 237 | - // 如果是第一个班次为空 | |
| 238 | - } else if(prevBc != null && nextBc == null) { | |
| 239 | - if (prevBc.bcType == 'cf') { // 如果是吃饭班次,不能修改发车时间 | |
| 240 | - return false; | |
| 241 | - } | |
| 242 | - var prevStopTimeScope = dataMap.tzsj[bcFun.upDownStrConvertNum(prevBc.xlDir)][judgmentTimeQuantum(prevBc.fcint)], | |
| 243 | - prevBcStopTime = (DateTimeTool.getDateTime(oBc.fcsj) - DateTimeTool.getDateTime(prevBc.ARRIVALTIME))/60000 + iStep; | |
| 244 | - // 班次移动调整发车间隔时,需要考录的移动班次的前后停站 | |
| 245 | - if (prevBcStopTime >= prevStopTimeScope.min) { | |
| 246 | - return true; | |
| 247 | - } else { | |
| 248 | - return false; | |
| 249 | - } | |
| 250 | - } | |
| 251 | - }*/ | |
| 252 | 487 | |
| 253 | 488 | /** |
| 254 | 489 | * 调整发车时间(调整当前班次后,需要处理后续路牌的所有班次)。 |
| ... | ... | @@ -261,19 +496,26 @@ var AdjustTrip = function () { |
| 261 | 496 | function _modifyFcsj(bcList, oBc, dataMap, iMin) { |
| 262 | 497 | var bc = getLpPrevAndNextBc(bcList, oBc), |
| 263 | 498 | prevBc = bc[0], |
| 264 | - nextBc = bc[1]; | |
| 499 | + nextBc = bc[1], | |
| 500 | + cfBc = bc[2]; | |
| 265 | 501 | var fcsj = DateTimeTool.getDateTime(oBc.fcsj); |
| 266 | 502 | fcsj.setMinutes(fcsj.getMinutes() + iMin); |
| 267 | 503 | $.each(bcList, function () { |
| 268 | - if(this.lpNo == oBc.lpNo && this.fcno == oBc.fcno){ | |
| 504 | + if(this.lpNo == oBc.lpNo && this.fcno == oBc.fcno && this.bcType != 'cf'){ | |
| 269 | 505 | var time = new Date(fcsj); |
| 270 | - this.ARRIVALTIME = DateTimeTool.getHHmmStr(time.setMinutes(time.getMinutes() + this.bcsj)); | |
| 506 | + time.setMinutes(time.getMinutes() + this.bcsj); | |
| 507 | + this.ARRIVALTIME = DateTimeTool.getHHmmStr(time); | |
| 271 | 508 | this.fcsj = DateTimeTool.getHHmmStr(fcsj); |
| 272 | 509 | this.fcint = fcsj.getTime(); |
| 273 | - // 前一个班次停站时间 = 原停站时间 - 中间班次移动时间 | |
| 274 | - this.STOPTIME -= iMin; | |
| 510 | + // 不是分班班次这调整停站 前一个班次停站时间 = 原停站时间 - 中间班次移动时间 | |
| 511 | + if(this.isfb == 0) | |
| 512 | + this.STOPTIME -= iMin; | |
| 513 | + if(cfBc != null) { | |
| 514 | + cfBc.fcsj = this.ARRIVALTIME; | |
| 515 | + cfBc.ARRIVALTIME = DateTimeTool.getHHmmStr(time.setMinutes(time.getMinutes() + cfBc.bcsj)); | |
| 516 | + } | |
| 275 | 517 | } |
| 276 | - if(prevBc != undefined && prevBc != null && this.lpNo == oBc.lpNo && this.fcno == prevBc.fcno){ | |
| 518 | + if(prevBc != undefined && prevBc != null && this.lpNo == oBc.lpNo && this.fcno == prevBc.fcno && this.isfb == 0){ | |
| 277 | 519 | // 前一个班次停站时间 = 原停站时间 + 中间班次移动时间 |
| 278 | 520 | this.STOPTIME += iMin; |
| 279 | 521 | } |
| ... | ... | @@ -283,37 +525,25 @@ var AdjustTrip = function () { |
| 283 | 525 | var getLpPrevAndNextBc = function (bcList, oBc) { |
| 284 | 526 | var lpBc = new Array(), |
| 285 | 527 | // 前一个班次 |
| 286 | - prevBc = null, nextBc = null; | |
| 528 | + prevBc = null, nextBc = null, cfBc = null; | |
| 287 | 529 | $.each(bcList, function () { |
| 288 | 530 | if(this.lpNo == oBc.lpNo) |
| 289 | 531 | lpBc.push(this); |
| 290 | 532 | }); |
| 291 | - lpBc.sort(function (a,b) {return a.fcint - b.fcint;}); | |
| 533 | + lpBc.sort(function (a,b) {return DateTimeTool.getDateTime(a.fcsj)-DateTimeTool.getDateTime(b.fcsj);}); | |
| 292 | 534 | for(var n = 0; n < lpBc.length; n++) { |
| 293 | 535 | if(lpBc[n].fcno == oBc.fcno && n > 0) |
| 294 | 536 | prevBc = lpBc[n-1]; |
| 295 | - if(lpBc[n].fcno == oBc.fcno && n < lpBc.length-1) | |
| 296 | - nextBc = lpBc[n+1]; | |
| 537 | + if(lpBc[n].fcno == oBc.fcno && n < lpBc.length-1){ | |
| 538 | + if(lpBc[n+1].bcType == 'cf'){ | |
| 539 | + nextBc = lpBc[n+2]; | |
| 540 | + cfBc = lpBc[n+1]; | |
| 541 | + } else { | |
| 542 | + nextBc = lpBc[n+1]; | |
| 543 | + } | |
| 544 | + } | |
| 297 | 545 | } |
| 298 | - return [prevBc, nextBc]; | |
| 299 | - }; | |
| 300 | - // 判断时间在什么时间段段内 | |
| 301 | - /** | |
| 302 | - * 判断时间在什么时间段段内 | |
| 303 | - * @param t 时间 | |
| 304 | - * @private | |
| 305 | - */ | |
| 306 | - var judgmentTimeQuantum = function (t) { | |
| 307 | - if(t <= DateTimeTool.getDateTime('6:30')) | |
| 308 | - return 0; | |
| 309 | - else if(t > DateTimeTool.getDateTime('6:30') && t <= DateTimeTool.getDateTime('8:30')) | |
| 310 | - return 1; | |
| 311 | - else if(t > DateTimeTool.getDateTime('8:30') && t <= DateTimeTool.getDateTime('16:00')) | |
| 312 | - return 2; | |
| 313 | - else if(t > DateTimeTool.getDateTime('16:00') && t <= DateTimeTool.getDateTime('18:00')) | |
| 314 | - return 3; | |
| 315 | - else if(t > DateTimeTool.getDateTime('18:00')) | |
| 316 | - return 4; | |
| 546 | + return [prevBc, nextBc, cfBc]; | |
| 317 | 547 | }; |
| 318 | 548 | return { |
| 319 | 549 | departureClearanceAdjust : departureClearanceAdjust | ... | ... |
src/main/resources/static/pages/base/timesmodel/js/v1/bcFun.js
| ... | ... | @@ -30,6 +30,7 @@ var bcFun = function() { |
| 30 | 30 | obj.bcType = type; |
| 31 | 31 | obj.xlDir = dir; |
| 32 | 32 | obj.fcno = xh; |
| 33 | + obj.qs = xh; | |
| 33 | 34 | obj.jhlc = jhlc;// 计划里程 |
| 34 | 35 | obj.tcc = gatps.tcc_id;// 停车场id |
| 35 | 36 | obj.ttinfo = gatps.skbName;// 时刻表id |
| ... | ... | @@ -125,6 +126,7 @@ var bcFun = function() { |
| 125 | 126 | } |
| 126 | 127 | } |
| 127 | 128 | }; |
| 129 | + | |
| 128 | 130 | /** |
| 129 | 131 | * @description (TODO) 获取 上、下行的正常、区间、空放、直放班次. |
| 130 | 132 | * @param 需要分割的班次数据集合. |
| ... | ... | @@ -135,7 +137,7 @@ var bcFun = function() { |
| 135 | 137 | var upArray = new Array(),downArray = new Array(),rs = new Array(); |
| 136 | 138 | for(var j = 0 ; j< json.length ; j++) { |
| 137 | 139 | // 判断是否为正常、区间、空放、直放班次 |
| 138 | - if(json[j].bcType== dataMap.bcTypeArr.normal || | |
| 140 | + /*if(json[j].bcType== dataMap.bcTypeArr.normal || | |
| 139 | 141 | json[j].bcType== dataMap.bcTypeArr.region || |
| 140 | 142 | json[j].bcType== dataMap.bcTypeArr.major || |
| 141 | 143 | json[j].bcType== dataMap.bcTypeArr.venting) { |
| ... | ... | @@ -143,9 +145,13 @@ var bcFun = function() { |
| 143 | 145 | upArray.push(json[j]); |
| 144 | 146 | else if(json[j].xlDir == dataMap.dira[1]) |
| 145 | 147 | downArray.push(json[j]); |
| 146 | - } | |
| 148 | + }*/ | |
| 149 | + if(json[j].xlDir == dataMap.dira[0]) | |
| 150 | + upArray.push(json[j]); | |
| 151 | + else if(json[j].xlDir == dataMap.dira[1]) | |
| 152 | + downArray.push(json[j]); | |
| 147 | 153 | } |
| 148 | - rs.push(upArray,downArray); | |
| 154 | + rs.push(upArray, downArray); | |
| 149 | 155 | // 返回数据. |
| 150 | 156 | return rs; |
| 151 | 157 | }; |
| ... | ... | @@ -180,9 +186,9 @@ var bcFun = function() { |
| 180 | 186 | } |
| 181 | 187 | // 按照发车序号顺序排序. |
| 182 | 188 | lpbc_.sort(function(a,b){return a.fcno-b.fcno}); |
| 183 | - addcfbc01(lpbc_,dataMap,map); | |
| 184 | - // 按照发车序号顺序排序. | |
| 185 | - lpbc_.sort(function(a,b){return a.fcno-b.fcno}); | |
| 189 | + // addcfbc01(lpbc_,dataMap,map); | |
| 190 | + // // 按照发车序号顺序排序. | |
| 191 | + // lpbc_.sort(function(a,b){return a.fcno-b.fcno}); | |
| 186 | 192 | var tt = addjclbbc01(lpbc_,dataMap,dataMap.lbsj,map); |
| 187 | 193 | bcs = updfcno(tt,bcs); |
| 188 | 194 | resultJA = resultJA.concat(tt); |
| ... | ... | @@ -227,24 +233,39 @@ var bcFun = function() { |
| 227 | 233 | result.push(getbcObj( |
| 228 | 234 | dqbcfcsj,dataMap.ccsjArr[fxdm],car,dataMap.bcTypeArr.out, |
| 229 | 235 | dataMap.dira[fxdm],2,dataMap.cclcArr[fxdm],gatps,0,dataMap.qdzArr[fxdm],null,null,0,0));// 出场班次 |
| 230 | - fcno ++; | |
| 236 | + fcno = 3; | |
| 231 | 237 | }else if(b==bc.length-1){ |
| 232 | - var fcno_ = dxfno + 2; | |
| 238 | + fxdm = fxdm == 0 ? 1:0; | |
| 239 | + // var fcno_ = dxfno + 2; | |
| 233 | 240 | var qdbcddsj = DateTimeTool.getDateTime(bc[b].ARRIVALTIME); |
| 234 | - result.push(getbcObj( | |
| 235 | - qdbcddsj,dataMap.jcsjArr[fxdm],car,dataMap.bcTypeArr.in_, | |
| 236 | - dataMap.dira[fxdm],fcno_++,dataMap.jclcArr[fxdm],gatps,0,dataMap.qdzArr[fxdm],null,null,0,0));// 进场班次 | |
| 241 | + if(dataMap.jcsjArr[fxdm] > 0){ | |
| 242 | + result.push(getbcObj( | |
| 243 | + qdbcddsj,dataMap.jcsjArr[fxdm],car,dataMap.bcTypeArr.in_, | |
| 244 | + dataMap.dira[fxdm],++fcno,dataMap.jclcArr[fxdm],gatps,0,dataMap.qdzArr[fxdm],null,null,0,0));// 进场班次 | |
| 245 | + } | |
| 237 | 246 | result.push(getbcObj( |
| 238 | 247 | qdbcddsj,dataMap.jcsjArr[fxdm],car,dataMap.bcTypeArr.lc, |
| 239 | - dataMap.dira[fxdm],fcno_++,0,gatps,0,null,null,null,0,lbsj));// 晚班例保班次 | |
| 248 | + dataMap.dira[fxdm],++fcno,0,gatps,0,null,null,null,0,lbsj));// 晚班例保班次 | |
| 249 | + } else if(bc[b].isfb && b!=bc.length-1){ | |
| 250 | + fxdm = fxdm == 0 ? 1:0; | |
| 251 | + var qdbcddsj = DateTimeTool.getDateTime(bc[b].ARRIVALTIME); | |
| 252 | + if(dataMap.jcsjArr[fxdm] > 0){ | |
| 253 | + result.push(getbcObj( | |
| 254 | + qdbcddsj,dataMap.jcsjArr[fxdm],car,dataMap.bcTypeArr.in_, | |
| 255 | + dataMap.dira[fxdm],++fcno,dataMap.jclcArr[fxdm],gatps,0,dataMap.qdzArr[fxdm],null,null,0,0));// 进场班次 | |
| 256 | + } | |
| 240 | 257 | } |
| 241 | - dxfno = bc[b].fcno + fcno; | |
| 242 | - bc[b].fcno = dxfno; | |
| 243 | - if(stas) { | |
| 258 | + // dxfno = bc[b].fcno + fcno; | |
| 259 | + // bc[b].fcno = dxfno; | |
| 260 | + | |
| 261 | + bc[b].fcno = fcno; | |
| 262 | + result.push(bc[b]); | |
| 263 | + fcno++; | |
| 264 | + | |
| 265 | + /*if(stas) { | |
| 244 | 266 | fcno ++; |
| 245 | 267 | stas = false; |
| 246 | - } | |
| 247 | - result.push(bc[b]); | |
| 268 | + }*/ | |
| 248 | 269 | } |
| 249 | 270 | return result; |
| 250 | 271 | }; |
| ... | ... | @@ -254,7 +275,7 @@ var bcFun = function() { |
| 254 | 275 | for(var g = 0 ; g <lpbcar.length-1;g++ ) { |
| 255 | 276 | if( parseInt((DateTimeTool.getDateTime(lpbcar[g+1].fcsj) - DateTimeTool.getDateTime(lpbcar[g].ARRIVALTIME))/60000) > 180 |
| 256 | 277 | && lpbcar[g].STOPTIME==0 && lpbcar[g].bcType =='normal' ) { |
| 257 | - lpbcar[g].isfb = 1; | |
| 278 | + lpbcar[g].isfb = true; | |
| 258 | 279 | } |
| 259 | 280 | } |
| 260 | 281 | }; |
| ... | ... | @@ -265,6 +286,222 @@ var bcFun = function() { |
| 265 | 286 | return 1; |
| 266 | 287 | }; |
| 267 | 288 | |
| 289 | + /** | |
| 290 | + * @description (TODO) 横向调整 调整停站时间. | |
| 291 | + * @param cara 路牌数组. | |
| 292 | + * @param tempa 所有的班次数组集合. | |
| 293 | + * @param dataMap 封装的 以上、下行方向成对存在的 一些参数数组 [下标0 -- 代表上行 ; 下标1 -- 代表下行]. | |
| 294 | + * | |
| 295 | + * ******************************** 思路 ************************************************* | |
| 296 | + * 第一步 等到每个路牌下的班次数组集合. | |
| 297 | + * | |
| 298 | + * 第二步 顺序排序每个路牌下的班次数组集合. | |
| 299 | + * | |
| 300 | + * 第三步 从第二个班次开始,用第二个班次的发车时间 - 上一个班次的到达时间 得到 上一个班次的停站时间. | |
| 301 | + * | |
| 302 | + * 第四步 修改上一个班次的停站时间. | |
| 303 | + * | |
| 304 | + * 修改停站时间规则:以行驶时间的10%-15% 为标准。 | |
| 305 | + * 如果超出该范围。则以录入参数低谷最大停站间隙为准。 | |
| 306 | + * 停站时间最大不能超过该停站时间。 | |
| 307 | + * 高峰附近的班次的停站时间在离高峰最近一个班次的停站时间浮动范围【1-2】分钟。 | |
| 308 | + * | |
| 309 | + * **************************************************************************************** | |
| 310 | + */ | |
| 311 | + var resizeByPitStopTime = function(cara,tempa,dataMap) { | |
| 312 | + var cLen = cara.length,tLen = tempa.length; | |
| 313 | + if(cLen<= 0 || tLen<=0 || dataMap==null) | |
| 314 | + return; | |
| 315 | + // 定义低谷最大停站时间、行业标准最小、最大停站时间(行驶时间的10%~15%). | |
| 316 | + var dgmaxtzsj = dataMap.dgmaxtzsj,normmintzsj, normmaxtzsj; | |
| 317 | + for(var t = 0 ; t < cLen ; t++) { | |
| 318 | + // 定义当前路牌班次数组集合. | |
| 319 | + var sslpbcA = new Array(); | |
| 320 | + for(var j =0 ; j < tLen ; j++) { | |
| 321 | + // 判断当期遍历的班次是否属于当前的路牌.如果是则添加到当前的路牌班次数组集合. | |
| 322 | + if(tempa[j].lpNo == cara[t].lpNo) { | |
| 323 | + tempa[j].fcint = DateTimeTool.getDateTime(tempa[j].fcsj).getTime(); | |
| 324 | + sslpbcA.push(tempa[j]); | |
| 325 | + } | |
| 326 | + } | |
| 327 | + if(sslpbcA.length > 0) { | |
| 328 | + // 按发车时间顺序排序. | |
| 329 | + sslpbcA.sort(function(a,b){return a.fcint-b.fcint}); | |
| 330 | + // 按照规则修改停站时间. | |
| 331 | + for(var r = 0 ; r < sslpbcA.length-1 ; r++) { | |
| 332 | + if(sslpbcA[r].isfb) | |
| 333 | + continue; | |
| 334 | + // test | |
| 335 | + //if(sslpbcA[r].bcType == 'cf') { | |
| 336 | + // alert('cf' + sslpbcA[r-1].fcsj); | |
| 337 | + //} | |
| 338 | + // 定义上一个班次的发车时间、当前班次的到达时间、发车时间. | |
| 339 | + var sgbcfcsj = DateTimeTool.getDateTime(sslpbcA[r+1].fcsj), | |
| 340 | + dqbcddsj = DateTimeTool.getDateTime(sslpbcA[r].ARRIVALTIME), | |
| 341 | + dqbcfcsj = DateTimeTool.getDateTime(sslpbcA[r].fcsj); | |
| 342 | + // 定义当前班次方向下标代码[0代表上行;1代表下行]. | |
| 343 | + var cctag = dirDmToIndex(sslpbcA[r].xlDir); // dataMap.smbcsjArr | |
| 344 | + // 定义每每相邻两个班次之间的时间差分钟数(也就是停站时间.) | |
| 345 | + var dxmin = parseInt( (sgbcfcsj - dqbcddsj)/60000); | |
| 346 | + // 定义是否高峰 | |
| 347 | + var tt_flag = scheduleInitialize.isPeakTimeScope(dqbcfcsj , dataMap); | |
| 348 | + // 获取行驶时间. | |
| 349 | + var xxsj = scheduleInitialize.judgeXSSJ(cctag, dqbcfcsj, dataMap); | |
| 350 | + var time = dataMap.tzsj[cctag][DateTimeTool.judgmentTimeQuantum(xxsj)]; | |
| 351 | + | |
| 352 | + normmintzsj = time.min; | |
| 353 | + normmaxtzsj = time.max; | |
| 354 | + var flag = false; | |
| 355 | + | |
| 356 | + // 如果小于零 | |
| 357 | + if(dxmin < 0 && sslpbcA[r].isfb ==0) { | |
| 358 | + // 根据不同时段的停站时间.重新赋值停站时间. | |
| 359 | + if(sslpbcA[r].bcType=='normal' && sslpbcA[r+1].bcType =='normal') | |
| 360 | + //dxmin = tt_flag ? dataMap.gftzsj[cctag] : dataMap.dgtzsj[cctag]; | |
| 361 | + dxmin = 1; | |
| 362 | + else | |
| 363 | + dxmin = 0; | |
| 364 | + flag = true; | |
| 365 | + }else if(dxmin==0){ | |
| 366 | + if (sslpbcA[r].bcType == 'cf') { // 如果是吃饭班次,停站为0 | |
| 367 | + dxmin = 0; | |
| 368 | + } else { | |
| 369 | + // 这里区分,如果下一个班次是吃饭班次,停站为0 | |
| 370 | + if (sslpbcA[r + 1].bcType=='cf') { | |
| 371 | + dxmin = 0; | |
| 372 | + } else { // 否则使用最小停站时间 | |
| 373 | + dxmin = normmintzsj; | |
| 374 | + } | |
| 375 | + } | |
| 376 | + | |
| 377 | + flag = true; | |
| 378 | + }else { | |
| 379 | + // 如果 大于等于低谷最大停站时间 并且 小于等于三小时.则把低谷最大停站时间 作为 停站时间. | |
| 380 | + if(dxmin >= dgmaxtzsj && dxmin < 180 && sslpbcA[r].isfb==false) { | |
| 381 | + dxmin = dgmaxtzsj; | |
| 382 | + flag = true; | |
| 383 | + // 如果大于零 并且 小于等于行业标准的最小停站时间 | |
| 384 | + }else if(dxmin > 0 && dxmin <= normmintzsj ) { | |
| 385 | + // dxmin = dxmin; | |
| 386 | + flag = true; | |
| 387 | + // 如果大于行业标准的最小停站时间 并且 小于等于行业标准的最大停站时间 | |
| 388 | + }else if(dxmin > normmintzsj && dxmin <= normmaxtzsj ) { | |
| 389 | + // dxmin = dxmin; | |
| 390 | + flag = true; | |
| 391 | + // 如果大于行业标准的最大停站时间 并且 小于低谷最大停站时间 | |
| 392 | + }else if(dxmin > normmaxtzsj && dxmin < dgmaxtzsj ) { | |
| 393 | + // dxmin = dxmin; | |
| 394 | + flag = true; | |
| 395 | + }else if (dxmin >= 180){ | |
| 396 | + dxmin = 0; | |
| 397 | + } | |
| 398 | + } | |
| 399 | + if(flag) { | |
| 400 | + if(!isDirSmbc(dirDmToIndex(sslpbcA[r+1].xlDir) , sslpbcA[r+1].fcsj , dataMap)) { | |
| 401 | + // 修改当前班次的停站时间. | |
| 402 | + sslpbcA[r].STOPTIME = parseInt(dxmin) ; | |
| 403 | + // 当前班次的到达时间 + 停站时间 作为下一个班次的发车时间. | |
| 404 | + dqbcddsj.setMinutes(dqbcddsj.getMinutes() + dxmin); | |
| 405 | + // 修改下一个班次的发车时间. | |
| 406 | + sslpbcA[r+1].fcsj = DateTimeTool.getHHmmStr(dqbcddsj); | |
| 407 | + // 下一个班次的发车时间 + 行驶时间 作为下一个班次的到达时间. | |
| 408 | + dqbcddsj.setMinutes(dqbcddsj.getMinutes() + sslpbcA[r+1].bcsj); | |
| 409 | + // 修改下一个班次的到达时间. | |
| 410 | + sslpbcA[r+1].ARRIVALTIME = DateTimeTool.getHHmmStr(dqbcddsj); | |
| 411 | + }else { | |
| 412 | + if(r>0) { | |
| 413 | + // 修改当前班次的停站时间. | |
| 414 | + sslpbcA[r].STOPTIME = parseInt(dxmin) ; | |
| 415 | + sgbcfcsj.setMinutes(sgbcfcsj.getMinutes() - sslpbcA[r].STOPTIME); | |
| 416 | + sslpbcA[r].ARRIVALTIME = DateTimeTool.getHHmmStr(sgbcfcsj); | |
| 417 | + sgbcfcsj.setMinutes(sgbcfcsj.getMinutes() - sslpbcA[r].bcsj); | |
| 418 | + sslpbcA[r].fcsj = DateTimeTool.getHHmmStr(sgbcfcsj); | |
| 419 | + sslpbcA[r-1].STOPTIME = parseInt( ( sgbcfcsj - DateTimeTool.getDateTime(sslpbcA[r-1].ARRIVALTIME))/60000); | |
| 420 | + } | |
| 421 | + } | |
| 422 | + } | |
| 423 | + } | |
| 424 | + } | |
| 425 | + } | |
| 426 | + }; | |
| 427 | + | |
| 428 | + var isDirSmbc = function(dirDm , fcsj , dataMap) { | |
| 429 | + var falg = false; | |
| 430 | + if(fcsj == dataMap.smbcsjArr[dirDm].kssj || fcsj == dataMap.smbcsjArr[dirDm].jssj) | |
| 431 | + falg = true; | |
| 432 | + return falg; | |
| 433 | + }; | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + /** | |
| 438 | + * @description (TODO) 标记上、下行首末班车. | |
| 439 | + * @param jsonArray 初始化路牌下的所有班次并且已经均匀发车间隙的数组集合. | |
| 440 | + * @param dataMap 封装的 以上、下行方向成对存在的 一些参数数组 [下标0 -- 代表上行 ; 下标1 -- 代表下行]. | |
| 441 | + */ | |
| 442 | + var markLastBus = function(jsonArray , dataMap) { | |
| 443 | + // 定义上、下行的正常、区间、空放、直放班次、返回数组集合. | |
| 444 | + var listMap = getUpAndDownBc( jsonArray , dataMap) , resultArray = new Array(); | |
| 445 | + for(var i = 0 ; i < listMap.length ; i++) { | |
| 446 | + if(listMap[i].length > 0){ | |
| 447 | + // 把班次顺序排序. | |
| 448 | + listMap[i].sort(function(a,b){return a.fcint-b.fcint}); | |
| 449 | + // 确定首末班车时间. | |
| 450 | + markFirstAndLastBusAlso(listMap[i] , dataMap , i); | |
| 451 | + } | |
| 452 | + resultArray = resultArray.concat(listMap[i]); | |
| 453 | + } | |
| 454 | + return resultArray; | |
| 455 | + }; | |
| 456 | + | |
| 457 | + /** | |
| 458 | + * @description (TODO) 确定某方向下的末班车. | |
| 459 | + * @param dirArray 某方向下的数组集合. | |
| 460 | + * @param dataMap 封装的 以上、下行方向成对存在的 一些参数数组 [下标0 -- 代表上行 ; 下标1 -- 代表下行]. | |
| 461 | + * @param dir 方向. | |
| 462 | + */ | |
| 463 | + var markFirstAndLastBusAlso = function(dirArray , dataMap , dir) { | |
| 464 | + if(dirArray.length>=2) { | |
| 465 | + // 定义最后一个班次. | |
| 466 | + var dirLastBc = dirArray[dirArray.length-1]; | |
| 467 | + // 确认末班车时间 | |
| 468 | + if(dirLastBc.fcsj != dataMap.smbcsjArr[dir].jssj) { | |
| 469 | + // 修改最后一个班次的发车时间. | |
| 470 | + dirLastBc.fcsj = dataMap.smbcsjArr[dir].jssj; | |
| 471 | + // 定义到达时间. | |
| 472 | + var ddsj_ = DateTimeTool.getDateTime(dirLastBc.fcsj); | |
| 473 | + ddsj_.setMinutes(ddsj_.getMinutes() + dataMap.xssj[dir][4]); | |
| 474 | + // 修改最后一个班次的到达时间. | |
| 475 | + dirLastBc.ARRIVALTIME = DateTimeTool.getHHmmStr(ddsj_); | |
| 476 | + dirLastBc.bcsj = dataMap.xssj[dir][4]; | |
| 477 | + } | |
| 478 | + } | |
| 479 | + }; | |
| 480 | + | |
| 481 | + /** | |
| 482 | + * @description (TODO) 判断某路牌下是否存在末班车时间班次. | |
| 483 | + * @param arr 某路牌下的班次. | |
| 484 | + * @param smbcsjArr 首末班车时间点数组集合. | |
| 485 | + */ | |
| 486 | + var lpBcIsHaveLast = function(arr , smbcsjArr) { | |
| 487 | + for(var a = 0 ; a < arr.length ; a++) { | |
| 488 | + for(var s = 0 ; s < smbcsjArr.length ; s++) { | |
| 489 | + if(arr[a].fcsj == smbcsjArr[s].jssj && dirDmToIndex(arr[a].xlDir) == s) | |
| 490 | + return true; | |
| 491 | + } | |
| 492 | + } | |
| 493 | + return false; | |
| 494 | + }; | |
| 495 | + var lpBcIsHaveFirst = function(arr , smbcsjArr) { | |
| 496 | + for(var a = 0 ; a < arr.length ; a++) { | |
| 497 | + for(var s = 0 ; s < smbcsjArr.length ; s++) { | |
| 498 | + if(arr[a].fcsj == smbcsjArr[s].kssj && dirDmToIndex(arr[a].xlDir) == s) | |
| 499 | + return true; | |
| 500 | + } | |
| 501 | + } | |
| 502 | + return false; | |
| 503 | + }; | |
| 504 | + | |
| 268 | 505 | return{ |
| 269 | 506 | getbcObj : getbcObj, //封装班次属性值 |
| 270 | 507 | upDownStrConvertNum : upDownStrConvertNum, |
| ... | ... | @@ -272,6 +509,11 @@ var bcFun = function() { |
| 272 | 509 | markFirstAndLastBusAlsoDietNotInRangeBc : markFirstAndLastBusAlsoDietNotInRangeBc, |
| 273 | 510 | getUpAndDownBc : getUpAndDownBc, |
| 274 | 511 | addInOutFieldBc : addInOutFieldBc, //添加进出场班次 |
| 275 | - updfcno : updfcno | |
| 512 | + updfcno : updfcno, | |
| 513 | + resizeByPitStopTime : resizeByPitStopTime, | |
| 514 | + markLastBus : markLastBus, //标记上、下行末班车 | |
| 515 | + lpBcIsHaveLast : lpBcIsHaveLast, // 判断路牌班次是否有末班车 | |
| 516 | + lpBcIsHaveFirst : lpBcIsHaveFirst, // 判断路牌班次是否有首班车 | |
| 517 | + dirDmToIndex : dirDmToIndex // 字符串转换为方向 | |
| 276 | 518 | } |
| 277 | 519 | }(); | ... | ... |
src/main/resources/static/pages/base/timesmodel/js/v1/lpFun.js
| ... | ... | @@ -64,49 +64,6 @@ var lpFun = function () { |
| 64 | 64 | // 返回数据. |
| 65 | 65 | return list.sort(function(a,b){return b.hoursV-a.hoursV}); |
| 66 | 66 | }; |
| 67 | - /** | |
| 68 | - * @description (TODO) 把班型人次合理的分配到不同的路牌上. | |
| 69 | - * @param list 班型人次数组集合. | |
| 70 | - * @param clzs 路牌数组. | |
| 71 | - * @return 返回一个把路牌合理的分配到班型人次下组成的数据集合. | |
| 72 | - * */ | |
| 73 | - var bxAlloTotLp = function(arr,clzs){ | |
| 74 | - var cLen = clzs.length; | |
| 75 | - var type = getMode(arr); | |
| 76 | - var i=0; | |
| 77 | - while(clzs.length > i){ | |
| 78 | - for(var j=0; j<type.length; j++) { | |
| 79 | - if(arr[type[j]].len-- > 0) { | |
| 80 | - arr[type[j]].bx.sslp.push(clzs[i]); | |
| 81 | - i++ | |
| 82 | - } | |
| 83 | - } | |
| 84 | - } | |
| 85 | - }; | |
| 86 | - var getMode = function(arr){ | |
| 87 | - var mode = [], bxRcList = arr; | |
| 88 | - var count = bxRcList[0].lps; | |
| 89 | - for(var i=1; i<bxRcList.length; i++) { | |
| 90 | - if(bxRcList[i].lps < count) | |
| 91 | - count = bxRcList[i].lps; | |
| 92 | - } | |
| 93 | - for(var i=0; i<bxRcList.length; i++) { | |
| 94 | - bxRcList[i] = {'bx':bxRcList[i],'len':bxRcList[i].lps, 'ratio':Math.round(bxRcList[i].lps/count)} | |
| 95 | - } | |
| 96 | - for(var i=0; i<bxRcList.length; i++) { | |
| 97 | - for(var j=0; j<bxRcList[i].ratio; j++) { | |
| 98 | - mode.push(i); | |
| 99 | - } | |
| 100 | - } | |
| 101 | - // for(var m=0; m<mode.length-2; m++) { | |
| 102 | - // if(mode[m] == mode[m+1]) { | |
| 103 | - // var a = mode[m+1]; | |
| 104 | - // mode[m+1] = mode[m+2]; | |
| 105 | - // mode[m+2] = a; | |
| 106 | - // } | |
| 107 | - // } | |
| 108 | - return mode; | |
| 109 | - }; | |
| 110 | 67 | // 路牌整理 |
| 111 | 68 | var lpNeaten = function (bxRcList, carList, dataMap) { |
| 112 | 69 | var carListH = new Array(); |
| ... | ... | @@ -132,11 +89,12 @@ var lpFun = function () { |
| 132 | 89 | // carListH:带工时和圈数的车辆list,carListCache:缓存为分班车辆 |
| 133 | 90 | var carListH = [],carListCache = []; |
| 134 | 91 | |
| 135 | - // 最少分班路牌 = 总路牌 - (低谷周转/低谷最大发车间隔)向上取整 | |
| 92 | + // 最多分班路牌 = 总路牌 - (低谷周转/低谷最大发车间隔)向上取整 | |
| 136 | 93 | var fblps = carList.length - Math.ceil((dataMap.zzsj[2]) / map.dgmaxfcjx); |
| 137 | 94 | // 取出有工时的路牌 |
| 138 | 95 | for (var i = 0; i < bxRcList.length; i++) { |
| 139 | 96 | var sslp = bxRcList[i].bx.sslp, bx = bxRcList[i].bx; |
| 97 | + // 路牌能有多少圈 | |
| 140 | 98 | var count = Math.round(bx.hoursV / (dataMap.zzsj[1]/60));// 早高峰周转:dataMap.zzsj[1] |
| 141 | 99 | if(bx.type == '五工二休') { |
| 142 | 100 | $.each(sslp, function () { |
| ... | ... | @@ -167,7 +125,7 @@ var lpFun = function () { |
| 167 | 125 | cutCar(carListH,carListCache); |
| 168 | 126 | var index = Math.floor(carListH.length / fblps); |
| 169 | 127 | for(var s=1; s<=fblps; s++){ |
| 170 | - carListH[s*index].isfb = true; | |
| 128 | + carListH[s*index - 1].isfb = true; | |
| 171 | 129 | } |
| 172 | 130 | } |
| 173 | 131 | carListH = carListH.concat(carListCache); |
| ... | ... | @@ -179,6 +137,16 @@ var lpFun = function () { |
| 179 | 137 | } |
| 180 | 138 | return carListH; |
| 181 | 139 | }; |
| 140 | + // 切割出连班路牌 | |
| 141 | + var cutCar = function(carListH,carListCache) { | |
| 142 | + for(var c=0; c<carListH.length; c++){ | |
| 143 | + if(carListH[c].isfb) { | |
| 144 | + carListCache.push(carListH[c]); | |
| 145 | + carListH.splice(c,1); | |
| 146 | + cutCar(carListH,carListCache); | |
| 147 | + } | |
| 148 | + } | |
| 149 | + }; | |
| 182 | 150 | // 确定路牌分班数 |
| 183 | 151 | var lpfbs = function (fblps, bxRcList, index) { |
| 184 | 152 | if(fblps > bxRcList[index].lps){ | ... | ... |
src/main/resources/static/pages/base/timesmodel/js/v1/scheduleInitialize.js
| ... | ... | @@ -33,8 +33,8 @@ var scheduleInitialize = function () { |
| 33 | 33 | return; |
| 34 | 34 | } |
| 35 | 35 | |
| 36 | - // 行驶时间、停站时间、周转时间。发车间隙获取 | |
| 37 | - getParaTime(map,dataMap); | |
| 36 | + // 行驶时间、停站时间、周转时间、发车间隙获取、时间段 | |
| 37 | + getParaTime(map,dataMap,seMap); | |
| 38 | 38 | |
| 39 | 39 | // 第一步 路牌分配 |
| 40 | 40 | var bxRcList = lpFun.getBxRcListCollection(map.bxrc); |
| ... | ... | @@ -49,24 +49,28 @@ var scheduleInitialize = function () { |
| 49 | 49 | // 第三步 剔除营运时间外的班次 |
| 50 | 50 | var operationBcData = bcFun.markFirstAndLastBusAlsoDietNotInRangeBc(bcData, dataMap); |
| 51 | 51 | // 第四步 横向调整停站时间 |
| 52 | - resizeByPitStopTime(carListH , operationBcData , dataMap); | |
| 52 | + bcFun.resizeByPitStopTime(carListH , operationBcData , dataMap); | |
| 53 | 53 | |
| 54 | 54 | // 第五步 确认首末班车 |
| 55 | - markFirstAndLastBus(operationBcData, dataMap); | |
| 55 | + bcFun.markLastBus(operationBcData, dataMap); | |
| 56 | + // return {'json':operationBcData,'bxrcgs':null}; | |
| 56 | 57 | |
| 57 | 58 | // 第六步 抽车来满足工时. |
| 58 | 59 | var tempA = takeCar(operationBcData, carListH , seMap, dataMap , map); |
| 60 | + // return {'json':tempA,'bxrcgs':null}; | |
| 59 | 61 | |
| 60 | 62 | // 第七步 确定吃饭时间. |
| 61 | 63 | if (map.cfdd) { // NEW,没有选择吃饭地点,不设定吃饭班次 |
| 62 | 64 | markeEatTime(bxRcList , tempA , carListH , seMap , dataMap ,map); |
| 63 | 65 | } |
| 66 | + | |
| 64 | 67 | // 横向调整停站时间 |
| 65 | - // resizeByPitStopTime(carListH , tempA , dataMap); | |
| 68 | + bcFun.resizeByPitStopTime(carListH , tempA , dataMap); | |
| 69 | + | |
| 66 | 70 | // 第八步 纵向调整(发车间隔调整) |
| 67 | 71 | AdjustTrip.departureClearanceAdjust(tempA,dataMap); |
| 68 | - // AdjustTrip2.departureClearanceAdjust(tempA,dataMap); | |
| 69 | 72 | bcFun.updfcno(tempA,0); |
| 73 | + | |
| 70 | 74 | // 第九步 添加进出场和早晚例保 |
| 71 | 75 | var data = bcFun.addInOutFieldBc(carListH,tempA,dataMap,map); |
| 72 | 76 | return {'json':data,'bxrcgs':null}; |
| ... | ... | @@ -108,16 +112,18 @@ var scheduleInitialize = function () { |
| 108 | 112 | // count:班次圈数,type:是否跳过低谷班次(只对工时小于10了车辆有效) |
| 109 | 113 | var count = 0, type = true; |
| 110 | 114 | // 定义当前路牌的第一个班次的开始时间. |
| 115 | + if(c > 0) | |
| 116 | + sbxfcTime.setMinutes(sbxfcTime.getMinutes() + judgeFCJX(sbxfcTime, dataMap)); | |
| 111 | 117 | var kssj = new Date(sbxfcTime); |
| 112 | 118 | // 进入早高峰按高峰发车间隙,否则按低估: TODO:暂时直接按早高峰 |
| 113 | - kssj.setMinutes(kssj.getMinutes() + (c * dataMap.fcjx[1].max)); | |
| 119 | + // kssj.setMinutes(kssj.getMinutes() + (c * dataMap.fcjx[1].max)); | |
| 114 | 120 | // lpKssj:中标线之后的开始时间 |
| 115 | 121 | var lpKssj, ZBXAfter = false; |
| 116 | 122 | // 判断是否中标线 |
| 117 | 123 | if(c < ZBXCarNum) { |
| 118 | 124 | lpKssj = new Date(kssj); |
| 119 | 125 | // 判断中标线时间 = 发车时间 -(反方向停站时间+反方向行驶时间:早高峰之前行驶时间) 早高峰结束之前都用的最小停站时间 |
| 120 | - lpKssj.setMinutes(lpKssj.getMinutes()-(judgeTZSJ(fxTagDm==0 ? 1:0,zbxfcTime,dataMap) + dataMap.xssj[fxTagDm==0 ? 1:0][judgmentTimeQuantum(zbxfcTime)])); | |
| 126 | + lpKssj.setMinutes(lpKssj.getMinutes()-(judgeTZSJ(fxTagDm==0 ? 1:0,zbxfcTime,dataMap) + dataMap.xssj[fxTagDm==0 ? 1:0][DateTimeTool.judgmentTimeQuantum(zbxfcTime)])); | |
| 121 | 127 | // 中标线发车时间 与 判断中标线时间的上下差值在 高峰发车间隔的一般以内,为中标线 |
| 122 | 128 | if(Math.abs((zbxfcTime.getTime() - lpKssj.getTime())/60000) < dataMap.fcjx[1].max){ |
| 123 | 129 | ZBXCarNum = c; |
| ... | ... | @@ -136,12 +142,12 @@ var scheduleInitialize = function () { |
| 136 | 142 | // 定义在某时间段内[高峰时间段、低谷时间段]的停站时间. |
| 137 | 143 | var tzsj = judgeTZSJ(fxTagDm,lpKssj,dataMap); |
| 138 | 144 | // 定义在某时间段内的行驶时间. |
| 139 | - var xssj = dataMap.xssj[fxTagDm][judgmentTimeQuantum(lpKssj)]; | |
| 145 | + var xssj = dataMap.xssj[fxTagDm][DateTimeTool.judgmentTimeQuantum(lpKssj)]; | |
| 140 | 146 | // 定义当前班次的停站时间,这里是为了当计算到了最后一个班次的时候,那么停站时间为0 ,但是后续的班次的发车时间需要加上前一个班次的停站时间. |
| 141 | 147 | var xs_tzsj = isLastbc(lpKssj, endTime, tzsj, xssj) ? 0 : tzsj; |
| 142 | 148 | rs.push(bcFun.getbcObj(lpKssj, xssj, carListH[c], |
| 143 | 149 | dataMap.bcTypeArr.normal, |
| 144 | - dataMap.dira[fxTagDm], xhNo++, | |
| 150 | + dataMap.dira[fxTagDm], xhNo-1, | |
| 145 | 151 | dataMap.pcxslcArr[fxTagDm], map, 0, |
| 146 | 152 | dataMap.qdzArr[fxTagDm], |
| 147 | 153 | dataMap.zdzArr[fxTagDm], null, xs_tzsj, 0)); |
| ... | ... | @@ -156,7 +162,7 @@ var scheduleInitialize = function () { |
| 156 | 162 | // 定义在某时间段内[高峰时间段、低谷时间段]的停站时间. |
| 157 | 163 | var tzsj = judgeTZSJ(fxTagDm,kssj,dataMap); |
| 158 | 164 | // 定义在某时间段内的行驶时间. |
| 159 | - var xssj = dataMap.xssj[fxTagDm][judgmentTimeQuantum(kssj)]; | |
| 165 | + var xssj = dataMap.xssj[fxTagDm][DateTimeTool.judgmentTimeQuantum(kssj)]; | |
| 160 | 166 | // 定义当前班次的停站时间,这里是为了当计算到了最后一个班次的时候,那么停站时间为0 ,但是后续的班次的发车时间需要加上前一个班次的停站时间. |
| 161 | 167 | var xs_tzsj = isLastbc(kssj, endTime, tzsj, xssj) ? 0 : tzsj; |
| 162 | 168 | // 添加正常班次对象.(这里初始化时,都是正常班次类型.) |
| ... | ... | @@ -183,29 +189,45 @@ var scheduleInitialize = function () { |
| 183 | 189 | * @return 返回一个满足单个路牌对应的标准工时、满足某班型下的所有路牌的平均工时对应的日平均工时、停站时间、路牌是否分班的班次集合. |
| 184 | 190 | */ |
| 185 | 191 | var takeCar = function (jsonArray, cara, saa, dataMap, map) { |
| 186 | - // 定义低谷最大发车时间、最大停站时间来反算出低谷最少配车数. | |
| 187 | - var dgmaxfcjx = parseInt(map.dgmaxfcjx), | |
| 188 | - dgmaxtzsj = parseInt(map.dgmaxtzsj); | |
| 189 | - // 计算低谷最少配车数 (低谷上行行驶时间 + 低谷下行行驶时间 + 低谷最大停站时间*2) / 低谷最大发车间隙. | |
| 190 | - // var dgminpcs = Math.round((dataMap.xssj[0][3] + dataMap.xssj[1][3] + dataMap.dgtzsj[0] + dataMap.dgtzsj[1]) / dgmaxfcjx); | |
| 191 | - // var zwxeLpNum = cuontZwxeLpNum(bxRcList); | |
| 192 | - // var dgminpcs = 4; | |
| 193 | 192 | // 定义返回数组. |
| 194 | 193 | var rs = new Array(); |
| 195 | 194 | for(var s = 0 ; s < cara.length; s++) { |
| 196 | 195 | // 定义路牌编号、定义当前路牌下的所有班次. |
| 197 | - var lpNo = cara[s].lpNo, car = cara[s], lpbc = new Array(); | |
| 196 | + var lpNo = cara[s].lpNo, car = cara[s], lpbc = new Array(), hoursV = 0; | |
| 198 | 197 | for (var i = 0; i < jsonArray.length; i++) { |
| 199 | 198 | // 判断当期遍历的班次是否属于当前的路牌. |
| 200 | 199 | if (jsonArray[i].lpNo == lpNo) { |
| 201 | 200 | lpbc.push(jsonArray[i]); |
| 202 | 201 | } |
| 203 | 202 | } |
| 204 | - var avgMakerCarNum = lpbc.length - car.count*2; | |
| 203 | + lpbc.sort(function (a,b) { return a.fcno - b.fcno;}); | |
| 204 | + // hoursV 分钟为单位(先添加进出场时间) | |
| 205 | + hoursV = dataMap.zwcArr[0] + dataMap.zwcArr[1] + dataMap.lbsj*2; | |
| 206 | + if(car.isfb){ | |
| 207 | + hoursV += (DateTimeTool.getDateTime(lpbc[lpbc.length-1].ARRIVALTIME) - DateTimeTool.getDateTime(lpbc[0].fcsj)) / 60000; | |
| 208 | + } else { | |
| 209 | + for (var i = 0; i < jsonArray.length; i++) { | |
| 210 | + // 判断当期遍历的班次是否属于当前的路牌. | |
| 211 | + if (jsonArray[i].lpNo == lpNo) { | |
| 212 | + hoursV += jsonArray[i].bcsj + jsonArray[i].STOPTIME; | |
| 213 | + } | |
| 214 | + } | |
| 215 | + } | |
| 216 | + var excessHours = (hoursV/60).toFixed(2) - car.hoursV, | |
| 217 | + dgAvgXssj = (dataMap.xssj[0][0]+dataMap.xssj[0][2]+dataMap.xssj[0][4]+dataMap.xssj[1][0]+dataMap.xssj[1][2]+dataMap.xssj[1][4])/6; | |
| 218 | + | |
| 219 | + // 抽车全在低谷,所以用低谷平均行驶时间 TODO:(分班本来需要大于3小时,现在暂时改为1小时) | |
| 220 | + var avgMakerCarNum = 0; | |
| 221 | + if(excessHours >= 1){ | |
| 222 | + avgMakerCarNum = Math.floor(excessHours*60/dgAvgXssj); | |
| 223 | + } | |
| 224 | + // var avgMakerCarNum = lpbc.length - car.count*2; | |
| 205 | 225 | rs = rs.concat(abstractBcByWorkTime(lpbc, map, dataMap, saa, cara, avgMakerCarNum)); |
| 206 | 226 | } |
| 207 | 227 | return rs; |
| 208 | 228 | }; |
| 229 | + | |
| 230 | + // 数据排序 | |
| 209 | 231 | function sortDeepArr(arr, sortTypes) { |
| 210 | 232 | var i = 0; |
| 211 | 233 | var len = sortTypes.length; |
| ... | ... | @@ -231,7 +253,7 @@ var scheduleInitialize = function () { |
| 231 | 253 | } else { |
| 232 | 254 | var nextSortType = sortTypes[i]; |
| 233 | 255 | $.each(arrObj[sortType.name], function(key, val) { |
| 234 | - console.log(i) | |
| 256 | + // console.log(i); | |
| 235 | 257 | itSelf(val, nextSortType) |
| 236 | 258 | }) |
| 237 | 259 | } |
| ... | ... | @@ -242,12 +264,27 @@ var scheduleInitialize = function () { |
| 242 | 264 | * @param map |
| 243 | 265 | * @param dataMap |
| 244 | 266 | */ |
| 245 | - var getParaTime = function (map,dataMap) { | |
| 267 | + var getParaTime = function (map,dataMap,seMap) { | |
| 246 | 268 | // 停站类型:tzlx,主站方向:zzfx |
| 247 | 269 | var tzlx = map.tzlx.split('/'),zzfx = 0; |
| 270 | + var isMasterStop = false; // 是否主站停 | |
| 271 | + if (map) { | |
| 272 | + var tzlx = map.tzlx.split("/"); | |
| 273 | + if (tzlx.length == 1) { // 双向停站 | |
| 274 | + isMasterStop = false; | |
| 275 | + } else if(tzlx.length > 1){ | |
| 276 | + isMasterStop = true; | |
| 277 | + zzfx = tzlx[1] == 0 ? 0 : 1; | |
| 278 | + } | |
| 279 | + } | |
| 280 | + dataMap.isMasterStop = isMasterStop; // 是否主站停 | |
| 281 | + dataMap.zzfx = zzfx; //主站方向 | |
| 282 | + | |
| 283 | + // 停站类型:tzlx,主站方向:zzfx | |
| 284 | + /*var tzlx = map.tzlx.split('/'),zzfx = 0; | |
| 248 | 285 | if(tzlx.length > 1 && tzlx[0] == 1) { |
| 249 | 286 | zzfx = tzlx[1] == 0 ? 0 : 1; |
| 250 | - } | |
| 287 | + }*/ | |
| 251 | 288 | |
| 252 | 289 | // 行驶时间 上下行分别5个时间段 0:上行,1:下行 |
| 253 | 290 | var xssj = [[],[]]; |
| ... | ... | @@ -263,6 +300,7 @@ var scheduleInitialize = function () { |
| 263 | 300 | xssj[1].push(parseInt(map.downTravelTime5)); |
| 264 | 301 | // 停站时间 上下行分别5个时间段 0:上行,1:下行 TODO:暂时只支持单向停站 |
| 265 | 302 | var tzsj = [[],[]]; |
| 303 | + // 是否主站停站 | |
| 266 | 304 | var upDownTravelTimeMin1 =Math.round((parseInt(map.upTravelTime1)+parseInt(map.downTravelTime1))*0.15), |
| 267 | 305 | upDownTravelTimeMin2 =Math.round((parseInt(map.upTravelTime2)+parseInt(map.downTravelTime2))*0.1), |
| 268 | 306 | upDownTravelTimeMin3 =Math.round((parseInt(map.upTravelTime3)+parseInt(map.downTravelTime3))*0.15), |
| ... | ... | @@ -274,20 +312,33 @@ var scheduleInitialize = function () { |
| 274 | 312 | upDownTravelTimeMax3 =Math.round((parseInt(map.upTravelTime3)+parseInt(map.downTravelTime3))*0.2), |
| 275 | 313 | upDownTravelTimeMax4 =Math.round((parseInt(map.upTravelTime4)+parseInt(map.downTravelTime4))*0.15), |
| 276 | 314 | upDownTravelTimeMax5 =Math.round((parseInt(map.upTravelTime5)+parseInt(map.downTravelTime5))*0.2); |
| 277 | - if(zzfx == 0) { | |
| 278 | - tzsj[0].push({'min':upDownTravelTimeMin1 < 10 ? 10 : upDownTravelTimeMin1, 'max':upDownTravelTimeMax1}); | |
| 279 | - tzsj[0].push({'min':upDownTravelTimeMin2 < 10 ? 10 : upDownTravelTimeMin2, 'max':upDownTravelTimeMax2}); | |
| 280 | - tzsj[0].push({'min':upDownTravelTimeMin3 < 10 ? 10 : upDownTravelTimeMin3, 'max':upDownTravelTimeMax3}); | |
| 281 | - tzsj[0].push({'min':upDownTravelTimeMin4 < 10 ? 10 : upDownTravelTimeMin4, 'max':upDownTravelTimeMax4}); | |
| 282 | - tzsj[0].push({'min':upDownTravelTimeMin5 < 10 ? 10 : upDownTravelTimeMin5, 'max':upDownTravelTimeMax5}); | |
| 283 | - tzsj[1] = [{'min':1, 'max':3}, {'min':1, 'max':3}, {'min':1, 'max':3}, {'min':1, 'max':3}, {'min':1, 'max':3}]; | |
| 315 | + if(isMasterStop) { | |
| 316 | + if(zzfx == 0) { | |
| 317 | + tzsj[0].push({'min':upDownTravelTimeMin1 < 10 ? 10 : upDownTravelTimeMin1, 'max':upDownTravelTimeMax1}); | |
| 318 | + tzsj[0].push({'min':upDownTravelTimeMin2 < 3 ? 3 : upDownTravelTimeMin2, 'max':upDownTravelTimeMax2}); | |
| 319 | + tzsj[0].push({'min':upDownTravelTimeMin3 < 10 ? 10 : upDownTravelTimeMin3, 'max':upDownTravelTimeMax3}); | |
| 320 | + tzsj[0].push({'min':upDownTravelTimeMin4 < 3 ? 3 : upDownTravelTimeMin4, 'max':upDownTravelTimeMax4}); | |
| 321 | + tzsj[0].push({'min':upDownTravelTimeMin5 < 10 ? 10 : upDownTravelTimeMin5, 'max':upDownTravelTimeMax5}); | |
| 322 | + tzsj[1] = [{'min':1, 'max':3}, {'min':1, 'max':3}, {'min':1, 'max':3}, {'min':1, 'max':3}, {'min':1, 'max':3}]; | |
| 323 | + } else { | |
| 324 | + tzsj[1].push({'min':upDownTravelTimeMin1 < 10 ? 10 : upDownTravelTimeMin1, 'max':upDownTravelTimeMax1}); | |
| 325 | + tzsj[1].push({'min':upDownTravelTimeMin2 < 3 ? 3 : upDownTravelTimeMin2, 'max':upDownTravelTimeMax2}); | |
| 326 | + tzsj[1].push({'min':upDownTravelTimeMin3 < 10 ? 10 : upDownTravelTimeMin3, 'max':upDownTravelTimeMax3}); | |
| 327 | + tzsj[1].push({'min':upDownTravelTimeMin4 < 3 ? 3 : upDownTravelTimeMin4, 'max':upDownTravelTimeMax4}); | |
| 328 | + tzsj[1].push({'min':upDownTravelTimeMin5 < 10 ? 10 : upDownTravelTimeMin5, 'max':upDownTravelTimeMax5}); | |
| 329 | + tzsj[0] = [{'min':1, 'max':3}, {'min':1, 'max':3}, {'min':1, 'max':3}, {'min':1, 'max':3}, {'min':1, 'max':3}]; | |
| 330 | + } | |
| 284 | 331 | } else { |
| 285 | - tzsj[1].push({'min':upDownTravelTimeMin1 < 10 ? 10 : upDownTravelTimeMin1, 'max':upDownTravelTimeMax1}); | |
| 286 | - tzsj[1].push({'min':upDownTravelTimeMin2 < 10 ? 10 : upDownTravelTimeMin2, 'max':upDownTravelTimeMax2}); | |
| 287 | - tzsj[1].push({'min':upDownTravelTimeMin3 < 10 ? 10 : upDownTravelTimeMin3, 'max':upDownTravelTimeMax3}); | |
| 288 | - tzsj[1].push({'min':upDownTravelTimeMin4 < 10 ? 10 : upDownTravelTimeMin4, 'max':upDownTravelTimeMax4}); | |
| 289 | - tzsj[1].push({'min':upDownTravelTimeMin5 < 10 ? 10 : upDownTravelTimeMin5, 'max':upDownTravelTimeMax5}); | |
| 290 | - tzsj[0] = [{'min':1, 'max':3}, {'min':1, 'max':3}, {'min':1, 'max':3}, {'min':1, 'max':3}, {'min':1, 'max':3}]; | |
| 332 | + tzsj[0].push({'min':upDownTravelTimeMin1/2 < 10 ? 10 : upDownTravelTimeMin1/2, 'max':upDownTravelTimeMax1/2}); | |
| 333 | + tzsj[0].push({'min':upDownTravelTimeMin2/2 < 3 ? 3 : upDownTravelTimeMin2/2, 'max':upDownTravelTimeMax2/2}); | |
| 334 | + tzsj[0].push({'min':upDownTravelTimeMin3/2 < 10 ? 10 : upDownTravelTimeMin3/2, 'max':upDownTravelTimeMax3/2}); | |
| 335 | + tzsj[0].push({'min':upDownTravelTimeMin4/2 < 3 ? 3 : upDownTravelTimeMin4/2, 'max':upDownTravelTimeMax4/2}); | |
| 336 | + tzsj[0].push({'min':upDownTravelTimeMin5/2 < 10 ? 10 : upDownTravelTimeMin5/2, 'max':upDownTravelTimeMax5/2}); | |
| 337 | + tzsj[1].push({'min':upDownTravelTimeMin1/2 < 10 ? 10 : upDownTravelTimeMin1/2, 'max':upDownTravelTimeMax1/2}); | |
| 338 | + tzsj[1].push({'min':upDownTravelTimeMin2/2 < 3 ? 3 : upDownTravelTimeMin2/2, 'max':upDownTravelTimeMax2/2}); | |
| 339 | + tzsj[1].push({'min':upDownTravelTimeMin3/2 < 10 ? 10 : upDownTravelTimeMin3/2, 'max':upDownTravelTimeMax3/2}); | |
| 340 | + tzsj[1].push({'min':upDownTravelTimeMin4/2 < 3 ? 3 : upDownTravelTimeMin4/2, 'max':upDownTravelTimeMax4/2}); | |
| 341 | + tzsj[1].push({'min':upDownTravelTimeMin5/2 < 10 ? 10 : upDownTravelTimeMin5/2, 'max':upDownTravelTimeMax5/2}); | |
| 291 | 342 | } |
| 292 | 343 | // 周转时间 分别5个时间段 |
| 293 | 344 | var zzsj = []; |
| ... | ... | @@ -299,55 +350,61 @@ var scheduleInitialize = function () { |
| 299 | 350 | // 发车间隙 分别5个时间段 |
| 300 | 351 | var fcjx = []; |
| 301 | 352 | var clzs = parseInt(map.clzs); |
| 302 | - // fcjx.push(Math.round(zzsj[0] / clzs > 20.4 ? 20 : (zzsj[0] / clzs < 15 ? 15 : zzsj[1] / clzs))); | |
| 303 | - fcjx.push({'min':10, 'max':12}); | |
| 304 | - // fcjx.push({'min':5, 'max':Math.round(zzsj[1] / clzs > 8.4 ? 8 : zzsj[1] / clzs)}); | |
| 305 | - fcjx.push({'min':5, 'max':Math.round(zzsj[1] / clzs)}); | |
| 306 | - fcjx.push({'min':8, 'max':20}); | |
| 307 | - fcjx.push({'min':5, 'max':Math.round(zzsj[1] / clzs)}); | |
| 308 | - fcjx.push({'min':8, 'max':20}); | |
| 309 | 353 | |
| 310 | - dataMap.xssj = xssj; | |
| 311 | - dataMap.tzsj = tzsj; | |
| 312 | - dataMap.zzsj = zzsj; | |
| 313 | - dataMap.fcjx = fcjx; | |
| 314 | - // map.dgmaxfcjx = 20; | |
| 354 | + var dgmaxfcjx = parseInt(dataMap.dgmaxfcjx); | |
| 355 | + // 一级线路要满足8分20分的发车间隔 | |
| 356 | + if(map.level == '1') { | |
| 357 | + fcjx.push({'min':10, 'max':15}); | |
| 358 | + fcjx.push({'min':5, 'max':Math.round(zzsj[1] / clzs > 8 ? 8 : zzsj[1] / clzs)}); | |
| 359 | + fcjx.push({'min':8, 'max':20}); | |
| 360 | + fcjx.push({'min':5, 'max':Math.round(zzsj[1] / clzs > 8 ? 8 : zzsj[1] / clzs)}); | |
| 361 | + fcjx.push({'min':8, 'max':20}); | |
| 362 | + } else { | |
| 363 | + // fcjx.push(Math.round(zzsj[0] / clzs > 20.4 ? 20 : (zzsj[0] / clzs < 15 ? 15 : zzsj[1] / clzs))); | |
| 364 | + fcjx.push({'min':10, 'max':15}); | |
| 365 | + fcjx.push({'min':5, 'max':Math.floor(zzsj[1] / clzs)}); | |
| 366 | + fcjx.push({'min':8, 'max':20}); | |
| 367 | + fcjx.push({'min':5, 'max':Math.floor(zzsj[1] / clzs)}); | |
| 368 | + fcjx.push({'min':8, 'max':20}); | |
| 369 | + } | |
| 370 | + var sjd = []; | |
| 371 | + sjd.push({'start':seMap.s, 'end':map.end1}); | |
| 372 | + sjd.push({'start':map.start2, 'end':map.end2}); | |
| 373 | + sjd.push({'start':map.start3, 'end':map.end3}); | |
| 374 | + sjd.push({'start':map.start4, 'end':map.end4}); | |
| 375 | + sjd.push({'start':map.start5, 'end':seMap.e}); | |
| 376 | + DateTimeTool.initSJD(sjd); | |
| 377 | + | |
| 378 | + dataMap.zgfzqsjd = [{'st':DateTimeTool.getDateTime(seMap.s), 'ed':DateTimeTool.getDateTime(map.end1)}]; | |
| 379 | + dataMap.zgfsjd = [{'st':DateTimeTool.getDateTime(map.start2), 'ed':DateTimeTool.getDateTime(map.end2)}]; | |
| 380 | + dataMap.gfzjsjd = [{'st':DateTimeTool.getDateTime(map.start3), 'ed':DateTimeTool.getDateTime(map.end3)}]; | |
| 381 | + dataMap.wgfsjd = [{'st':DateTimeTool.getDateTime(map.start4), 'ed':DateTimeTool.getDateTime(map.end4)}]; | |
| 382 | + dataMap.wgfzhsjd = [{'st':DateTimeTool.getDateTime(map.start5), 'ed':DateTimeTool.getDateTime(seMap.e)}]; | |
| 383 | + dataMap.sjd = sjd; | |
| 384 | + dataMap.xssj = xssj; // 行驶时间 | |
| 385 | + dataMap.tzsj = tzsj; // 停站时间zse31 | |
| 386 | + dataMap.zzsj = zzsj; // 周转时间 | |
| 387 | + dataMap.fcjx = fcjx; // 发车间隙 | |
| 388 | + // 清除不用的元素 | |
| 389 | + delete dataMap.dgtzsj; | |
| 390 | + delete dataMap.dgxxsjArr; | |
| 391 | + delete dataMap.gftzsj; | |
| 392 | + delete dataMap.gfxxsjArr; | |
| 393 | + map.dgmaxfcjx = 20; | |
| 315 | 394 | // map.dgmaxtzsj = upDownTravelTime3 < 10 ? 10 : upDownTravelTime3; |
| 316 | 395 | }; |
| 317 | - // 判断时间在什么时间段段内 | |
| 318 | - var judgmentTimeQuantum = function (t) { | |
| 319 | - if(t <= DateTimeTool.getDateTime('6:30')) | |
| 320 | - return 0; | |
| 321 | - else if(t > DateTimeTool.getDateTime('6:30') && t <= DateTimeTool.getDateTime('8:30')) | |
| 322 | - return 1; | |
| 323 | - else if(t > DateTimeTool.getDateTime('8:30') && t <= DateTimeTool.getDateTime('16:00')) | |
| 324 | - return 2; | |
| 325 | - else if(t > DateTimeTool.getDateTime('16:00') && t <= DateTimeTool.getDateTime('18:00')) | |
| 326 | - return 3; | |
| 327 | - else if(t > DateTimeTool.getDateTime('18:00')) | |
| 328 | - return 4; | |
| 329 | - }; | |
| 330 | - // 8:31-16:00专用 | |
| 331 | - var judgmentTimeQuantum1 = function (t) { | |
| 332 | - if(t > DateTimeTool.getDateTime('8:30') && t <= DateTimeTool.getDateTime('10:30')) | |
| 333 | - return 1; | |
| 334 | - else if(t > DateTimeTool.getDateTime('10:30') && t <= DateTimeTool.getDateTime('12:30')) | |
| 335 | - return 2; | |
| 336 | - else if(t > DateTimeTool.getDateTime('12:30') && t <= DateTimeTool.getDateTime('14:30')) | |
| 337 | - return 2; | |
| 338 | - else if(t > DateTimeTool.getDateTime('14:30') && t <= DateTimeTool.getDateTime('16:00')) | |
| 339 | - return 1; | |
| 340 | - }; | |
| 341 | 396 | |
| 342 | 397 | // 判断发车间隙 |
| 343 | 398 | var judgeFCJX = function (kssj, dataMap) { |
| 344 | - var time = dataMap.fcjx[judgmentTimeQuantum(kssj)]; | |
| 399 | + var time = dataMap.fcjx[DateTimeTool.judgmentTimeQuantum(kssj)]; | |
| 345 | 400 | if(time == null) |
| 346 | 401 | return 0; |
| 347 | - if(judgmentTimeQuantum(kssj) == 2) { | |
| 402 | + if(DateTimeTool.judgmentTimeQuantum(kssj) == 2) { | |
| 348 | 403 | // 为了从大到小在从小到大 |
| 349 | - var time = Math.round((time.max - time.min)/2); | |
| 350 | - return time*judgmentTimeQuantum1(kssj) + time.min; | |
| 404 | + var resultTime = Math.round((time.max - time.min)/2); | |
| 405 | + return resultTime*DateTimeTool.judgmentTimeQuantum1(kssj) + time.min; | |
| 406 | + }else if(DateTimeTool.judgmentTimeQuantum(kssj) == 1 || DateTimeTool.judgmentTimeQuantum(kssj) == 3) { | |
| 407 | + return time.max; | |
| 351 | 408 | } else { |
| 352 | 409 | return Math.round((time.max + time.min)/2); |
| 353 | 410 | } |
| ... | ... | @@ -355,8 +412,8 @@ var scheduleInitialize = function () { |
| 355 | 412 | // 判断停站时间 |
| 356 | 413 | var judgeTZSJ = function (dir, kssj, dataMap) { |
| 357 | 414 | var sj = new Date(kssj); |
| 358 | - sj.setMinutes(sj.getMinutes() + dataMap.xssj[dir][judgmentTimeQuantum(sj)]); | |
| 359 | - var sjd = judgmentTimeQuantum(sj); | |
| 415 | + sj.setMinutes(sj.getMinutes() + dataMap.xssj[dir][DateTimeTool.judgmentTimeQuantum(sj)]); | |
| 416 | + var sjd = DateTimeTool.judgmentTimeQuantum(sj); | |
| 360 | 417 | var time = dataMap.tzsj[dir][sjd]; |
| 361 | 418 | if(time == null) |
| 362 | 419 | return 0; |
| ... | ... | @@ -370,9 +427,9 @@ var scheduleInitialize = function () { |
| 370 | 427 | }; |
| 371 | 428 | // 判断行驶时间 |
| 372 | 429 | var judgeXSSJ = function (dir, kssj, dataMap) { |
| 373 | - var xssj = dataMap.xssj[dir][judgmentTimeQuantum(kssj)]; | |
| 430 | + var xssj = dataMap.xssj[dir][DateTimeTool.judgmentTimeQuantum(kssj)]; | |
| 374 | 431 | |
| 375 | - var sjd = judgmentTimeQuantum(sj); | |
| 432 | + /*var sjd = DateTimeTool.judgmentTimeQuantum(kssj); | |
| 376 | 433 | var time = dataMap.tzsj[dir][sjd]; |
| 377 | 434 | if(time == null) |
| 378 | 435 | return 0; |
| ... | ... | @@ -383,6 +440,18 @@ var scheduleInitialize = function () { |
| 383 | 440 | } else { |
| 384 | 441 | return time.max; |
| 385 | 442 | } |
| 443 | + | |
| 444 | + var time = dataMap.fcjx[DateTimeTool.judgmentTimeQuantum(kssj)]; | |
| 445 | + if(time == null) | |
| 446 | + return 0; | |
| 447 | + if(DateTimeTool.judgmentTimeQuantum(kssj) == 2) { | |
| 448 | + // 为了从大到小在从小到大 | |
| 449 | + var time = Math.round((time.max - time.min)/2); | |
| 450 | + return time*DateTimeTool.judgmentTimeQuantum1(kssj) + time.min; | |
| 451 | + } else { | |
| 452 | + return Math.round((time.max + time.min)/2); | |
| 453 | + }*/ | |
| 454 | + return xssj; | |
| 386 | 455 | }; |
| 387 | 456 | /** |
| 388 | 457 | * @discription : (TODO) 判断是否为最后一个班次 |
| ... | ... | @@ -400,22 +469,6 @@ var scheduleInitialize = function () { |
| 400 | 469 | return tag; |
| 401 | 470 | }; |
| 402 | 471 | /** |
| 403 | - * @discription : (TODO) 获取行驶时间 | |
| 404 | - * | |
| 405 | - * @parmas : [zg--早高峰时间段;wg--晚高峰时间段;sj--当前时间;pc--平常行驶时间;gf--高峰行驶时间;dir--方向] | |
| 406 | - * | |
| 407 | - * @return : 返回一个数值。这里返回的是行驶时间数值 | |
| 408 | - * | |
| 409 | - * */ | |
| 410 | - var getByDirTravelTime = function(zg,wg,sj,pc,gf,dir) { | |
| 411 | - var xxsj = 0; | |
| 412 | - if(isgfsjd(zg[0].st,zg[0].ed,sj) || isgfsjd(wg[0].st,wg[0].ed,sj)) | |
| 413 | - xxsj = gf[dir]; | |
| 414 | - else | |
| 415 | - xxsj = pc[dir]; | |
| 416 | - return xxsj; | |
| 417 | - }; | |
| 418 | - /** | |
| 419 | 472 | * @discription : (TODO) 比较一个时间是否在某个时间段内 |
| 420 | 473 | * |
| 421 | 474 | * @params : [st--开始时间;ed--结束时间;sj--当前时间] |
| ... | ... | @@ -503,77 +556,6 @@ var scheduleInitialize = function () { |
| 503 | 556 | }; |
| 504 | 557 | |
| 505 | 558 | /** |
| 506 | - * @description (TODO) 标记上、下行首末班车. | |
| 507 | - * @param jsonArray 初始化路牌下的所有班次并且已经均匀发车间隙的数组集合. | |
| 508 | - * @param dataMap 封装的 以上、下行方向成对存在的 一些参数数组 [下标0 -- 代表上行 ; 下标1 -- 代表下行]. | |
| 509 | - */ | |
| 510 | - var markFirstAndLastBus = function(jsonArray , dataMap) { | |
| 511 | - // 定义上、下行的正常、区间、空放、直放班次、返回数组集合. | |
| 512 | - var listMap = getUpAndDownBc( jsonArray , dataMap) , resultArray = new Array(); | |
| 513 | - for(var i = 0 ; i < listMap.length ; i++) { | |
| 514 | - if(listMap[i].bc.length > 0){ | |
| 515 | - // 把班次顺序排序. | |
| 516 | - listMap[i].bc.sort(function(a,b){return a.fcint-b.fcint}); | |
| 517 | - // 确定首末班车时间. | |
| 518 | - markFirstAndLastBusAlso(listMap[i].bc , dataMap , i); | |
| 519 | - } | |
| 520 | - resultArray = resultArray.concat(listMap[i].bc); | |
| 521 | - } | |
| 522 | - return resultArray; | |
| 523 | - }; | |
| 524 | - | |
| 525 | - /** | |
| 526 | - * @description (TODO) 确定某方向下的末班车. | |
| 527 | - * @param dirArray 某方向下的数组集合. | |
| 528 | - * @param dataMap 封装的 以上、下行方向成对存在的 一些参数数组 [下标0 -- 代表上行 ; 下标1 -- 代表下行]. | |
| 529 | - * @param dir 方向. | |
| 530 | - */ | |
| 531 | - var markFirstAndLastBusAlso = function(dirArray , dataMap , dir) { | |
| 532 | - if(dirArray.length>=2) { | |
| 533 | - // 定义最后一个班次. | |
| 534 | - var dirLastBc = dirArray[dirArray.length-1]; | |
| 535 | - // 确认末班车时间 | |
| 536 | - if(dirLastBc.fcsj != dataMap.smbcsjArr[dir].jssj) { | |
| 537 | - // 修改最后一个班次的发车时间. | |
| 538 | - dirLastBc.fcsj = dataMap.smbcsjArr[dir].jssj; | |
| 539 | - // 修改最后一个班次的班次时间. | |
| 540 | - dirLastBc.bcsj = dataMap.dgxxsjArr[dir]; | |
| 541 | - // 定义到达时间. | |
| 542 | - var ddsj_ = DateTimeTool.getDateTime(dirLastBc.fcsj); | |
| 543 | - ddsj_.setMinutes(ddsj_.getMinutes() + dataMap.xssj[dir][4]); | |
| 544 | - // 修改最后一个班次的到达时间. | |
| 545 | - dirLastBc.ARRIVALTIME = DateTimeTool.getHHmmStr(ddsj_); | |
| 546 | - dirLastBc.bcsj = dataMap.xssj[dir][4]; | |
| 547 | - } | |
| 548 | - } | |
| 549 | - }; | |
| 550 | - | |
| 551 | - /** | |
| 552 | - * @description (TODO) 获取 上、下行的正常、区间、空放、直放班次. | |
| 553 | - * @param 需要分割的班次数据集合. | |
| 554 | - * @param 封装的 以上、下行方向成对存在的 一些参数数组 [下标0 -- 代表上行 ; 下标1 -- 代表下行]. | |
| 555 | - */ | |
| 556 | - var getUpAndDownBc = function(json,dataMap) { | |
| 557 | - // 定义上行班次 、 下行班次 数组集合、返回数组集合对象. | |
| 558 | - var upArray = new Array(),downArray = new Array(),rs = new Array(); | |
| 559 | - for(var j = 0 ; j< json.length ; j++) { | |
| 560 | - // 判断是否为正常、区间、空放、直放班次 | |
| 561 | - if(json[j].bcType== dataMap.bcTypeArr.normal || | |
| 562 | - json[j].bcType== dataMap.bcTypeArr.region || | |
| 563 | - json[j].bcType== dataMap.bcTypeArr.major || | |
| 564 | - json[j].bcType== dataMap.bcTypeArr.venting) { | |
| 565 | - if(json[j].xlDir == dataMap.dira[0]) | |
| 566 | - upArray.push(json[j]); | |
| 567 | - else if(json[j].xlDir == dataMap.dira[1]) | |
| 568 | - downArray.push(json[j]); | |
| 569 | - } | |
| 570 | - } | |
| 571 | - rs.push({'bc' : upArray},{'bc' : downArray}); | |
| 572 | - // 返回数据. | |
| 573 | - return rs; | |
| 574 | - }; | |
| 575 | - | |
| 576 | - /** | |
| 577 | 559 | * @description : (TODO) 调整某班型下的各个路牌对应的班次以及工时、停站时间、是否分班. -- 这里我们也叫抽车 |
| 578 | 560 | * @param bxlpbc 班型下的各个路牌的所有班次数组. |
| 579 | 561 | * @param map 表单参数信息 |
| ... | ... | @@ -636,106 +618,95 @@ var scheduleInitialize = function () { |
| 636 | 618 | var sumGs = 0; |
| 637 | 619 | if(lpbc.length<=0) |
| 638 | 620 | return; |
| 639 | - var isLastFlag = lpDownIsHaveLastBc(lpbc , dataMap.smbcsjArr) , tcbcgzA = new Array(); | |
| 640 | - var isFirstFlag = lpDownIsHaveFirstBc(lpbc , dataMap.smbcsjArr); | |
| 621 | + var isLastFlag = bcFun.lpBcIsHaveLast(lpbc , dataMap.smbcsjArr) , tcbcgzA = new Array(); | |
| 622 | + var isFirstFlag = bcFun.lpBcIsHaveFirst(lpbc , dataMap.smbcsjArr); | |
| 641 | 623 | var bxStr = lpbc[0].lpName.split('_'); |
| 642 | 624 | /** 满足工时需要剔除的班次 |
| 643 | 625 | * wgfhtcbcNum,zgfqtcbcNum 定义晚高峰后,早高峰前 能剔除多少班次数(适用于单挡连班) |
| 644 | - * dgzjtcbcNum: 低估中间能剔除多少班次数(适用于五休二以外的分班) | |
| 626 | + * dgzjtcbcNum1: 低估中间能剔除多少班次数(适用于五休二以外的分班) | |
| 645 | 627 | * dgtcbcNum: 低估能剔除多少班次数(适用于五休二分班) |
| 646 | 628 | */ |
| 647 | - var wgfhtcbcNum=0,zgfqtcbcNum=0,dgzjtcbcNum=0,dgtcbcNum=0; | |
| 629 | + var wgfhtcbcNum=0,zgfqtcbcNum=0,dgzjtcbcNum1=0,dgzjtcbcNum2=0,dgtcbcNum=0; | |
| 648 | 630 | $.each(lpbc, function () { |
| 649 | 631 | if(DateTimeTool.getDateTime(this.fcsj) > dataMap.wgfzhsjd[0].st) |
| 650 | 632 | wgfhtcbcNum++; |
| 651 | 633 | if(DateTimeTool.getDateTime(this.fcsj) < dataMap.zgfsjd[0].st) |
| 652 | 634 | zgfqtcbcNum++; |
| 653 | 635 | if(DateTimeTool.getDateTime(this.fcsj) > dgzjsj && DateTimeTool.getDateTime(this.fcsj) < dataMap.wgfsjd[0].st) |
| 654 | - dgzjtcbcNum++; | |
| 636 | + dgzjtcbcNum1++; | |
| 637 | + if(DateTimeTool.getDateTime(this.fcsj) > dataMap.zgfsjd[0].ed && DateTimeTool.getDateTime(this.fcsj) < dgzjsj) | |
| 638 | + dgzjtcbcNum2++; | |
| 655 | 639 | if(DateTimeTool.getDateTime(this.fcsj) > dataMap.zgfsjd[0].ed && DateTimeTool.getDateTime(this.fcsj) < dataMap.wgfsjd[0].st) |
| 656 | 640 | dgtcbcNum++; |
| 657 | - | |
| 658 | 641 | }); |
| 642 | + // dgtcbcNum = dgzjtcbcNum1+dgzjtcbcNum2 | |
| 659 | 643 | if(bxStr[0] == '五工二休'){ |
| 660 | - if(isLastFlag) { | |
| 644 | + if(isLastFlag && !isFirstFlag) { | |
| 661 | 645 | // 定义时间段内剔除班次规则. |
| 662 | - tcbcgzA.push({'minsj': dataMap.zgfsjd[0].ed , 'maxsj' : dataMap.wgfsjd[0].st , 'order' : 'asc' , 'deletebcNum' : deletebcNum - dgtcbcNum > 0 ? dgtcbcNum: deletebcNum}); | |
| 646 | + tcbcgzA.push({'minsj': dgzjsj , 'maxsj' : dataMap.wgfsjd[0].st , 'order' : 'asc' , 'deletebcNum' : deletebcNum - dgzjtcbcNum1 > 0 ? dgzjtcbcNum1: deletebcNum}, | |
| 647 | + {'minsj': dataMap.zgfsjd[0].ed , 'maxsj' : dgzjsj , 'order' : 'desc' , 'deletebcNum' : deletebcNum - dgtcbcNum > 0 ? dgzjtcbcNum2: deletebcNum-dgzjtcbcNum1}, | |
| 648 | + {'minsj': dataMap.zgfzqsjd[0].st , 'maxsj' : dataMap.zgfzqsjd[0].ed , 'order' : 'desc' , 'deletebcNum' : deletebcNum - dgtcbcNum - zgfqtcbcNum > 0 ? zgfqtcbcNum: deletebcNum-dgtcbcNum}); | |
| 663 | 649 | }else { |
| 664 | - tcbcgzA.push({'minsj': dataMap.zgfsjd[0].ed , 'maxsj' : dataMap.wgfsjd[0].st ,'order' : 'asc' , 'deletebcNum' : deletebcNum - dgtcbcNum > 0 ? dgtcbcNum: deletebcNum}, | |
| 665 | - {'minsj': dataMap.wgfzhsjd[0].st , 'maxsj' : dataMap.wgfzhsjd[0].ed , 'order' : 'desc' , 'deletebcNum' : deletebcNum - dgtcbcNum}); | |
| 650 | + tcbcgzA.push({'minsj': dgzjsj , 'maxsj' : dataMap.wgfsjd[0].st , 'order' : 'asc' , 'deletebcNum' : deletebcNum - dgzjtcbcNum1 > 0 ? dgzjtcbcNum1: deletebcNum}, | |
| 651 | + {'minsj': dataMap.zgfsjd[0].ed , 'maxsj' : dgzjsj , 'order' : 'desc' , 'deletebcNum' : deletebcNum - dgtcbcNum > 0 ? dgzjtcbcNum2: deletebcNum-dgzjtcbcNum1}, | |
| 652 | + {'minsj': dataMap.wgfzhsjd[0].st , 'maxsj' : dataMap.wgfzhsjd[0].ed , 'order' : 'desc' , 'deletebcNum' : deletebcNum - dgtcbcNum - zgfqtcbcNum > 0 ? zgfqtcbcNum: deletebcNum-dgtcbcNum}); | |
| 666 | 653 | } |
| 667 | 654 | } else { |
| 668 | 655 | if(lpbc.isfb) { |
| 669 | - if(isLastFlag) { | |
| 670 | - tcbcgzA.push({'minsj': dgzjsj, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum > 0 ? dgzjtcbcNum: deletebcNum}, | |
| 671 | - {'minsj': dataMap.zgfzqsjd[0].st , 'maxsj' : dataMap.zgfzqsjd[0].ed , 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum}); | |
| 672 | - } else if(isFirstFlag){ | |
| 673 | - tcbcgzA.push({'minsj': dgzjsj, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum > 0 ? dgzjtcbcNum: deletebcNum}, | |
| 674 | - {'minsj': dataMap.wgfzhsjd[0].st , 'maxsj' : dataMap.wgfzhsjd[0].ed , 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum}); | |
| 656 | + if(isLastFlag && !isFirstFlag) { | |
| 657 | + tcbcgzA.push({'minsj': dgzjsj, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'desc', 'deletebcNum' : deletebcNum - dgzjtcbcNum1 > 0 ? dgzjtcbcNum1 : deletebcNum}, | |
| 658 | + {'minsj': dataMap.zgfzqsjd[0].st , 'maxsj' : dataMap.zgfzqsjd[0].ed , 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum1 - zgfqtcbcNum > 0 ? zgfqtcbcNum : deletebcNum - dgzjtcbcNum1}); | |
| 659 | + } else if(isFirstFlag && !isLastFlag){ | |
| 660 | + tcbcgzA.push({'minsj': dgzjsj, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum1 > 0 ? dgzjtcbcNum1 : deletebcNum}, | |
| 661 | + {'minsj': dataMap.wgfzhsjd[0].st , 'maxsj' : dataMap.wgfzhsjd[0].ed , 'order' : 'desc', 'deletebcNum' : deletebcNum - dgzjtcbcNum1 - wgfhtcbcNum > 0 ? wgfhtcbcNum : deletebcNum-dgzjtcbcNum1}, | |
| 662 | + {'minsj': dataMap.zgfsjd[0].ed , 'maxsj' : dgzjsj , 'order' : 'desc' , 'deletebcNum' : deletebcNum - dgtcbcNum > 0 ? dgzjtcbcNum2 : deletebcNum-dgzjtcbcNum1}); | |
| 663 | + } else if(isFirstFlag && isLastFlag){ | |
| 664 | + tcbcgzA.push({'minsj': dgzjsj, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'asc', 'deletebcNum' : deletebcNum - dgtcbcNum > 0 ? dgtcbcNum : deletebcNum}); | |
| 675 | 665 | } else { |
| 676 | - tcbcgzA.push({'minsj': dataMap.wgfsjd[0].ed, 'maxsj' : dataMap.wgfzhsjd[0].ed,'order' : 'desc', 'deletebcNum' : deletebcNum - dgzjtcbcNum}, | |
| 677 | - {'minsj': dgzjsj, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum > 0 ? dgzjtcbcNum: deletebcNum}); | |
| 666 | + tcbcgzA.push({'minsj': dgzjsj , 'maxsj' : dataMap.wgfsjd[0].st , 'order' : 'asc' , 'deletebcNum' : deletebcNum - dgzjtcbcNum1 > 0 ? dgzjtcbcNum1: deletebcNum}, | |
| 667 | + {'minsj': dataMap.zgfsjd[0].ed , 'maxsj' : dgzjsj , 'order' : 'desc' , 'deletebcNum' : deletebcNum - dgtcbcNum > 0 ? dgzjtcbcNum2: deletebcNum-dgzjtcbcNum1}, | |
| 668 | + {'minsj': dataMap.wgfzhsjd[0].st , 'maxsj' : dataMap.wgfzhsjd[0].ed , 'order' : 'desc' , 'deletebcNum' : deletebcNum - dgtcbcNum - zgfqtcbcNum > 0 ? zgfqtcbcNum: deletebcNum-dgtcbcNum}); | |
| 678 | 669 | } |
| 679 | 670 | }else { |
| 671 | + if(isLastFlag && !isFirstFlag) { | |
| 672 | + tcbcgzA.push({'minsj': dgzjsj, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum1 - zgfqtcbcNum > 0 ? dgzjtcbcNum1 : deletebcNum-zgfqtcbcNum}, | |
| 673 | + {'minsj': dataMap.zgfzqsjd[0].st , 'maxsj' : dataMap.zgfzqsjd[0].ed , 'order' : 'asc', 'deletebcNum' : deletebcNum - zgfqtcbcNum > 0 ? zgfqtcbcNum : deletebcNum}); | |
| 674 | + } else if(!isLastFlag && isFirstFlag){ | |
| 675 | + tcbcgzA.push({'minsj': dgzjsj, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'asc', 'deletebcNum' : deletebcNum - wgfhtcbcNum - dgzjtcbcNum1 > 0 ? dgzjtcbcNum1 : deletebcNum-wgfhtcbcNum}, | |
| 676 | + {'minsj': dataMap.wgfzhsjd[0].st , 'maxsj' : dataMap.wgfzhsjd[0].ed , 'order' : 'desc', 'deletebcNum' : deletebcNum - wgfhtcbcNum > 0 ? wgfhtcbcNum : deletebcNum}); | |
| 677 | + } else if(isFirstFlag && isLastFlag){ | |
| 678 | + tcbcgzA.push({'minsj': dgzjsj, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'asc', 'deletebcNum' : deletebcNum - dgtcbcNum > 0 ? dgtcbcNum : deletebcNum}); | |
| 679 | + } else { | |
| 680 | + tcbcgzA.push({'minsj': dataMap.wgfzhsjd[0].st , 'maxsj' : dataMap.wgfzhsjd[0].ed, 'order' : 'desc', 'deletebcNum' : deletebcNum - zgfqtcbcNum - wgfhtcbcNum > 0 ? wgfhtcbcNum : deletebcNum-zgfqtcbcNum}, | |
| 681 | + {'minsj': dataMap.zgfzqsjd[0].st, 'maxsj' : dataMap.zgfzqsjd[0].ed, 'order' : 'asc','deletebcNum' : deletebcNum - zgfqtcbcNum > 0 ? zgfqtcbcNum : deletebcNum}); | |
| 682 | + } | |
| 680 | 683 | // 单档 一个路牌一档劳动力 |
| 681 | 684 | /*if(deletebcNum - (wgfhtcbcNum+zgfqtcbcNum) > 0) { |
| 682 | 685 | // TODO:可能删除末班车 |
| 683 | - tcbcgzA.push({'minsj': dataMap.wgfsjd[0].ed, 'maxsj' : dataMap.wgfzhsjd[0].ed,'order' : 'desc', 'deletebcNum' : deletebcNum - dgzjtcbcNum}, | |
| 684 | - {'minsj': dgzjsj, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum > 0 ? dgzjtcbcNum: deletebcNum}); | |
| 686 | + tcbcgzA.push({'minsj': dataMap.wgfsjd[0].ed, 'maxsj' : dataMap.wgfzhsjd[0].ed,'order' : 'desc', 'deletebcNum' : deletebcNum - dgzjtcbcNum1}, | |
| 687 | + {'minsj': dgzjsj, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum1 > 0 ? dgzjtcbcNum1: deletebcNum}); | |
| 685 | 688 | } else { |
| 686 | 689 | if(isLastFlag) { |
| 687 | - tcbcgzA.push({'minsj': dgzjsj, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum > 0 ? dgzjtcbcNum: deletebcNum}, | |
| 688 | - {'minsj': dataMap.zgfzqsjd[0].st , 'maxsj' : dataMap.zgfzqsjd[0].ed , 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum}); | |
| 690 | + tcbcgzA.push({'minsj': dgzjsj, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum1 > 0 ? dgzjtcbcNum1: deletebcNum}, | |
| 691 | + {'minsj': dataMap.zgfzqsjd[0].st , 'maxsj' : dataMap.zgfzqsjd[0].ed , 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum1}); | |
| 689 | 692 | } else if(isFirstFlag){ |
| 690 | - tcbcgzA.push({'minsj': dgzjsj, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum > 0 ? dgzjtcbcNum: deletebcNum}, | |
| 691 | - {'minsj': dataMap.wgfzhsjd[0].st , 'maxsj' : dataMap.wgfzhsjd[0].ed , 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum}); | |
| 693 | + tcbcgzA.push({'minsj': dgzjsj, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum1 > 0 ? dgzjtcbcNum1: deletebcNum}, | |
| 694 | + {'minsj': dataMap.wgfzhsjd[0].st , 'maxsj' : dataMap.wgfzhsjd[0].ed , 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum1}); | |
| 692 | 695 | } else { |
| 693 | 696 | tcbcgzA.push({'minsj': dataMap.wgfsjd[0].ed, 'maxsj' : dataMap.wgfzhsjd[0].ed, 'order' : 'desc', 'deletebcNum' : deletebcNum - zgfqtcbcNum}, |
| 694 | 697 | {'minsj': dataMap.zgfzqsjd[0].st, 'maxsj' : dataMap.zgfzqsjd[0].ed, 'order' : 'asc','deletebcNum' : zgfqtcbcNum}); |
| 695 | 698 | } |
| 696 | 699 | }*/ |
| 697 | - if(isLastFlag) { | |
| 698 | - tcbcgzA.push({'minsj': dataMap.zgfsjd[0].ed, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'asc', 'deletebcNum' : deletebcNum - dgtcbcNum > 0 ? dgtcbcNum: deletebcNum}); | |
| 699 | - } else if(isFirstFlag){ | |
| 700 | - tcbcgzA.push({'minsj': dgzjsj, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum > 0 ? dgzjtcbcNum: deletebcNum}, | |
| 701 | - {'minsj': dataMap.wgfzhsjd[0].st , 'maxsj' : dataMap.wgfzhsjd[0].ed , 'order' : 'desc', 'deletebcNum' : deletebcNum - dgzjtcbcNum}); | |
| 702 | - } else { | |
| 703 | - tcbcgzA.push({'minsj': dataMap.wgfzhsjd[0].st , 'maxsj' : dataMap.wgfzhsjd[0].ed, 'order' : 'desc', 'deletebcNum' : deletebcNum - zgfqtcbcNum}, | |
| 704 | - {'minsj': dataMap.zgfzqsjd[0].st, 'maxsj' : dataMap.zgfzqsjd[0].ed, 'order' : 'asc','deletebcNum' : zgfqtcbcNum}); | |
| 705 | - } | |
| 706 | 700 | } |
| 707 | 701 | } |
| 708 | 702 | // 剔除不在高峰时间段内的班次. |
| 709 | 703 | spliceBc02(lpbc , tcbcgzA , dataMap , false); |
| 704 | + lpbc.sort(function(x,y){return x.fcno-y.fcno}); | |
| 710 | 705 | rsultA = rsultA.concat(lpbc); |
| 711 | 706 | return rsultA; |
| 712 | 707 | }; |
| 713 | 708 | |
| 714 | 709 | /** |
| 715 | - * @description (TODO) 判断某路牌下是否存在末班车时间班次. | |
| 716 | - * @param arr 某路牌下的班次. | |
| 717 | - * @param smbcsjArr 首末班车时间点数组集合. | |
| 718 | - */ | |
| 719 | - var lpDownIsHaveLastBc = function(arr , smbcsjArr) { | |
| 720 | - for(var a = 0 ; a < arr.length ; a++) { | |
| 721 | - for(var s = 0 ; s < smbcsjArr.length ; s++) { | |
| 722 | - if(arr[a].fcsj == smbcsjArr[s].jssj && dirDmToIndex(arr[a].xlDir) == s) | |
| 723 | - return true; | |
| 724 | - } | |
| 725 | - } | |
| 726 | - return false; | |
| 727 | - }; | |
| 728 | - var lpDownIsHaveFirstBc = function(arr , smbcsjArr) { | |
| 729 | - for(var a = 0 ; a < arr.length ; a++) { | |
| 730 | - for(var s = 0 ; s < smbcsjArr.length ; s++) { | |
| 731 | - if(arr[a].fcsj == smbcsjArr[s].kssj && dirDmToIndex(arr[a].xlDir) == s) | |
| 732 | - return true; | |
| 733 | - } | |
| 734 | - } | |
| 735 | - return false; | |
| 736 | - }; | |
| 737 | - | |
| 738 | - /** | |
| 739 | 710 | * @description (TODO) 根据定义规则剔除班次. |
| 740 | 711 | * @param arr 班次数组. |
| 741 | 712 | * @param tcbcgzA 剔除规则. |
| ... | ... | @@ -743,7 +714,8 @@ var scheduleInitialize = function () { |
| 743 | 714 | * @param isfb 剔除过程中是否会产生分班. |
| 744 | 715 | */ |
| 745 | 716 | var spliceBc02 = function (arr , tcbcgzA , dataMap , isfb) { |
| 746 | - for(var t = 0 ; t < tcbcgzA.length ; t++) { | |
| 717 | + tcbcgzA.sort(); | |
| 718 | + for(var t = tcbcgzA.length-1 ; t >=0 ; t--) { | |
| 747 | 719 | if(tcbcgzA[t].deletebcNum <= 0) { |
| 748 | 720 | continue; |
| 749 | 721 | } |
| ... | ... | @@ -752,22 +724,73 @@ var scheduleInitialize = function () { |
| 752 | 724 | arr.sort(function(x,y){return x.fcno-y.fcno}); |
| 753 | 725 | else if(order == 'desc') |
| 754 | 726 | arr.sort(function(m,n){return n.fcno-m.fcno}); |
| 755 | - for(var a = 0 ; a < arr.length ; a ++) { | |
| 756 | - var fcsj = DateTimeTool.getDateTime(arr[a].fcsj); | |
| 757 | - // 判断是否在高峰时间范围.【true--表示在,false--表示不在】. | |
| 758 | - if(!isPeakTimeScope(fcsj,dataMap) && fcsj > tcbcgzA[t].minsj && fcsj < tcbcgzA[t].maxsj) { | |
| 759 | - if(order == 'asc') { | |
| 760 | - if(a>0) { | |
| 761 | - arr[a-1].isfb = isfb ? 1 : 0; | |
| 762 | - arr[a-1].STOPTIME = 0; | |
| 727 | + // 主站停车类型,分班班次只能主站停车 | |
| 728 | + if(dataMap.isMasterStop) { | |
| 729 | + for(var a = 0 ; a < arr.length ; a ++) { | |
| 730 | + var fcsj = DateTimeTool.getDateTime(arr[a].fcsj); | |
| 731 | + // 判断是否在高峰时间范围.【true--表示在,false--表示不在】. | |
| 732 | + if(!isPeakTimeScope(fcsj,dataMap) && fcsj > tcbcgzA[t].minsj && fcsj < tcbcgzA[t].maxsj) { | |
| 733 | + // 判断早高峰两小时之后的剔除班次,是否需要考虑主站停车(默认需要考录,但是早高峰之后两小时内有需要剔除的班次,那就不考虑) | |
| 734 | + var sjdtype = true; | |
| 735 | + if(order == 'asc') { | |
| 736 | + if(a>0 && arr[a-1] != undefined && arr[a-1] != null) { | |
| 737 | + // 分班路牌需要主站停车 | |
| 738 | + if(sjdtype && tcbcgzA[t].minsj >= dataMap.zgfsjd[0].ed && tcbcgzA[t].maxsj <= dataMap.wgfsjd[0].st && bcFun.dirDmToIndex(arr[a-1].xlDir) == dataMap.zzfx){ | |
| 739 | + a++; | |
| 740 | + if(isPeakTimeScope(arr[a+tcbcgzA[t].deletebcNum].fcsj,dataMap)) | |
| 741 | + tcbcgzA[t].deletebcNum--; | |
| 742 | + } | |
| 743 | + arr[a - 1].isfb = true; | |
| 744 | + arr[a - 1].STOPTIME = 0; | |
| 745 | + if(tcbcgzA[t].deletebcNum > 0) { | |
| 746 | + } | |
| 747 | + } | |
| 748 | + }else if(order == 'desc') { | |
| 749 | + var index_ = a + tcbcgzA[t].deletebcNum; | |
| 750 | + if(arr[index_] != undefined && arr[index_] != null){ | |
| 751 | + // 分班路牌需要主站停车 | |
| 752 | + if(tcbcgzA[t].minsj >= dataMap.zgfsjd[0].ed && tcbcgzA[t].maxsj <= dataMap.wgfsjd[0].st){ | |
| 753 | + // 早高峰之后两小时内有需要剔除的班次标记(使标记失效) | |
| 754 | + sjdtype = false; | |
| 755 | + if(bcFun.dirDmToIndex(arr[index_].xlDir) == dataMap.zzfx) { | |
| 756 | + tcbcgzA[t].deletebcNum--; | |
| 757 | + index_--; | |
| 758 | + } | |
| 759 | + } | |
| 760 | + if(tcbcgzA[t].deletebcNum > 0){ | |
| 761 | + arr[index_].STOPTIME = 0; | |
| 762 | + arr[index_].isfb = true; | |
| 763 | + } | |
| 764 | + } | |
| 763 | 765 | } |
| 764 | - }else if(order == 'desc') { | |
| 765 | - var index_ = a + tcbcgzA[t].deletebcNum; | |
| 766 | - arr[index_].STOPTIME = 0; | |
| 767 | - arr[index_].isfb = isfb && a > 0 ? 1 : 0; | |
| 766 | + arr.splice( a , tcbcgzA[t].deletebcNum); | |
| 767 | + break; | |
| 768 | + } | |
| 769 | + } | |
| 770 | + | |
| 771 | + } else { | |
| 772 | + // 双向停站没有停站限制 | |
| 773 | + for(var a = 0 ; a < arr.length ; a ++) { | |
| 774 | + var fcsj = DateTimeTool.getDateTime(arr[a].fcsj); | |
| 775 | + // 判断是否在高峰时间范围.【true--表示在,false--表示不在】. | |
| 776 | + if(!isPeakTimeScope(fcsj,dataMap) && fcsj > tcbcgzA[t].minsj && fcsj < tcbcgzA[t].maxsj) { | |
| 777 | + if(order == 'asc') { | |
| 778 | + if(a>0 && arr[a-1] != undefined && arr[a-1] != null) { | |
| 779 | + // arr[a-1].isfb = isfb ? 1 : 0; | |
| 780 | + arr[a-1].isfb = true; | |
| 781 | + arr[a-1].STOPTIME = 0; | |
| 782 | + } | |
| 783 | + }else if(order == 'desc') { | |
| 784 | + var index_ = a + tcbcgzA[t].deletebcNum; | |
| 785 | + if(arr[index_] != undefined && arr[index_] != null){ | |
| 786 | + arr[index_].STOPTIME = 0; | |
| 787 | + arr[index_].isfb = true; | |
| 788 | + // arr[index_].isfb = isfb && a > 0 ? 1 : 0; | |
| 789 | + } | |
| 790 | + } | |
| 791 | + arr.splice( a , tcbcgzA[t].deletebcNum); | |
| 792 | + break; | |
| 768 | 793 | } |
| 769 | - arr.splice( a , tcbcgzA[t].deletebcNum); | |
| 770 | - break; | |
| 771 | 794 | } |
| 772 | 795 | } |
| 773 | 796 | } |
| ... | ... | @@ -837,16 +860,6 @@ var scheduleInitialize = function () { |
| 837 | 860 | } |
| 838 | 861 | return parseFloat((sumWorkTime/60).toFixed(2)); |
| 839 | 862 | }; |
| 840 | - // 切割出连班路牌 | |
| 841 | - var cutCar = function(carListH,carListCache) { | |
| 842 | - for(var c=0; c<carListH.length; c++){ | |
| 843 | - if(carListH[c].isfb) { | |
| 844 | - carListCache.push(carListH[c]); | |
| 845 | - carListH.splice(c,1); | |
| 846 | - cutCar(carListH,carListCache); | |
| 847 | - } | |
| 848 | - } | |
| 849 | - }; | |
| 850 | 863 | var dirDmToIndex = function (str) { |
| 851 | 864 | if(str == 'relationshipGraph-up') |
| 852 | 865 | return 0; |
| ... | ... | @@ -893,6 +906,7 @@ var scheduleInitialize = function () { |
| 893 | 906 | if(canCf.length>0 && canCf[canCf.length-1].isfb == 0) { // NEW,如果班次是分班班次,就不吃饭 |
| 894 | 907 | console.log('countTzsj:' + countTzsj + 'length:' + canCf.length); |
| 895 | 908 | var fxDm = dirDmToIndex(canCf[canCf.length-1].xlDir); |
| 909 | + cfddDm = (cfddDm == 1 ? 0:1); | |
| 896 | 910 | if (map.cfdd == "allYes") { // NEW,如果选择的吃饭地点是所有,则使用班次的方向作为吃饭班次的方向 |
| 897 | 911 | cfddDm = fxDm; |
| 898 | 912 | } |
| ... | ... | @@ -921,154 +935,12 @@ var scheduleInitialize = function () { |
| 921 | 935 | } |
| 922 | 936 | } |
| 923 | 937 | }; |
| 924 | - | |
| 925 | - /** | |
| 926 | - * @description (TODO) 横向调整 调整停站时间. | |
| 927 | - * @param cara 路牌数组. | |
| 928 | - * @param tempa 所有的班次数组集合. | |
| 929 | - * @param dataMap 封装的 以上、下行方向成对存在的 一些参数数组 [下标0 -- 代表上行 ; 下标1 -- 代表下行]. | |
| 930 | - * | |
| 931 | - * ******************************** 思路 ************************************************* | |
| 932 | - * 第一步 等到每个路牌下的班次数组集合. | |
| 933 | - * | |
| 934 | - * 第二步 顺序排序每个路牌下的班次数组集合. | |
| 935 | - * | |
| 936 | - * 第三步 从第二个班次开始,用第二个班次的发车时间 - 上一个班次的到达时间 得到 上一个班次的停站时间. | |
| 937 | - * | |
| 938 | - * 第四步 修改上一个班次的停站时间. | |
| 939 | - * | |
| 940 | - * 修改停站时间规则:以行驶时间的10%-15% 为标准。 | |
| 941 | - * 如果超出该范围。则以录入参数低谷最大停站间隙为准。 | |
| 942 | - * 停站时间最大不能超过该停站时间。 | |
| 943 | - * 高峰附近的班次的停站时间在离高峰最近一个班次的停站时间浮动范围【1-2】分钟。 | |
| 944 | - * | |
| 945 | - * **************************************************************************************** | |
| 946 | - */ | |
| 947 | - var resizeByPitStopTime = function(cara,tempa,dataMap) { | |
| 948 | - var cLen = cara.length,tLen = tempa.length; | |
| 949 | - if(cLen<= 0 || tLen<=0 || dataMap==null) | |
| 950 | - return; | |
| 951 | - // 定义低谷最大停站时间、行业标准最小、最大停站时间(行驶时间的10%~15%). | |
| 952 | - var dgmaxtzsj = dataMap.dgmaxtzsj,normmintzsj, normmaxtzsj; | |
| 953 | - for(var t = 0 ; t < cLen ; t++) { | |
| 954 | - // 定义当前路牌班次数组集合. | |
| 955 | - var sslpbcA = new Array(); | |
| 956 | - for(var j =0 ; j < tLen ; j++) { | |
| 957 | - // 判断当期遍历的班次是否属于当前的路牌.如果是则添加到当前的路牌班次数组集合. | |
| 958 | - if(tempa[j].lpNo == cara[t].lpNo) { | |
| 959 | - tempa[j].fcint = DateTimeTool.getDateTime(tempa[j].fcsj).getTime(); | |
| 960 | - sslpbcA.push(tempa[j]); | |
| 961 | - } | |
| 962 | - } | |
| 963 | - if(sslpbcA.length > 0) { | |
| 964 | - // 按发车时间顺序排序. | |
| 965 | - sslpbcA.sort(function(a,b){return a.fcint-b.fcint}); | |
| 966 | - // 按照规则修改停站时间. | |
| 967 | - for(var r = 0 ; r < sslpbcA.length-1 ; r++) { | |
| 968 | - // test | |
| 969 | - //if(sslpbcA[r].bcType == 'cf') { | |
| 970 | - // alert('cf' + sslpbcA[r-1].fcsj); | |
| 971 | - //} | |
| 972 | - // 定义上一个班次的发车时间、当前班次的到达时间、发车时间. | |
| 973 | - var sgbcfcsj = DateTimeTool.getDateTime(sslpbcA[r+1].fcsj), | |
| 974 | - dqbcddsj = DateTimeTool.getDateTime(sslpbcA[r].ARRIVALTIME), | |
| 975 | - dqbcfcsj = DateTimeTool.getDateTime(sslpbcA[r].fcsj); | |
| 976 | - // 定义当前班次方向下标代码[0代表上行;1代表下行]. | |
| 977 | - var cctag = dirDmToIndex(sslpbcA[r].xlDir); // dataMap.smbcsjArr | |
| 978 | - // 定义每每相邻两个班次之间的时间差分钟数(也就是停站时间.) | |
| 979 | - var dxmin = parseInt( (sgbcfcsj - dqbcddsj)/60000); | |
| 980 | - // 定义是否高峰 | |
| 981 | - var tt_flag = isPeakTimeScope(dqbcfcsj , dataMap); | |
| 982 | - // 获取行驶时间. | |
| 983 | - var xxsj = getByDirTravelTime(dataMap.zgfsjd , dataMap.wgfsjd , dqbcfcsj, | |
| 984 | - dataMap.pcxssjArr , dataMap.gfxxsjArr , | |
| 985 | - dirDmToIndex(sslpbcA[r].xlDir)); | |
| 986 | - normmintzsj = xxsj*0.1; | |
| 987 | - normmaxtzsj = xxsj*0.15; | |
| 988 | - var flag = false; | |
| 989 | - | |
| 990 | - // 如果小于零 | |
| 991 | - if(dxmin < 0 && sslpbcA[r].isfb ==0) { | |
| 992 | - // 根据不同时段的停站时间.重新赋值停站时间. | |
| 993 | - if(sslpbcA[r].bcType=='normal' && sslpbcA[r+1].bcType =='normal') | |
| 994 | - //dxmin = tt_flag ? dataMap.gftzsj[cctag] : dataMap.dgtzsj[cctag]; | |
| 995 | - dxmin = 1; | |
| 996 | - else | |
| 997 | - dxmin = 0; | |
| 998 | - flag = true; | |
| 999 | - }else if(dxmin==0){ | |
| 1000 | - if (sslpbcA[r].bcType == 'cf') { // 如果是吃饭班次,停站为0 | |
| 1001 | - dxmin = 0; | |
| 1002 | - } else { | |
| 1003 | - // 这里区分,如果下一个班次是吃饭班次,停站为0 | |
| 1004 | - if (sslpbcA[r + 1].bcType=='cf') { | |
| 1005 | - dxmin = 0; | |
| 1006 | - } else { // 否则使用最小停站时间 | |
| 1007 | - dxmin = normmintzsj; | |
| 1008 | - } | |
| 1009 | - } | |
| 1010 | - | |
| 1011 | - flag = true; | |
| 1012 | - }else { | |
| 1013 | - // 如果 大于等于低谷最大停站时间 并且 小于等于三小时.则把低谷最大停站时间 作为 停站时间. | |
| 1014 | - if(dxmin >= dgmaxtzsj && dxmin < 180 && sslpbcA[r].isfb==0) { | |
| 1015 | - dxmin = dgmaxtzsj; | |
| 1016 | - flag = true; | |
| 1017 | - // 如果大于零 并且 小于等于行业标准的最小停站时间 | |
| 1018 | - }else if(dxmin > 0 && dxmin <= normmintzsj ) { | |
| 1019 | - // dxmin = dxmin; | |
| 1020 | - flag = true; | |
| 1021 | - // 如果大于行业标准的最小停站时间 并且 小于等于行业标准的最大停站时间 | |
| 1022 | - }else if(dxmin > normmintzsj && dxmin <= normmaxtzsj ) { | |
| 1023 | - // dxmin = dxmin; | |
| 1024 | - flag = true; | |
| 1025 | - // 如果大于行业标准的最大停站时间 并且 小于低谷最大停站时间 | |
| 1026 | - }else if(dxmin > normmaxtzsj && dxmin < dgmaxtzsj ) { | |
| 1027 | - // dxmin = dxmin; | |
| 1028 | - flag = true; | |
| 1029 | - }else if (dxmin >= 180){ | |
| 1030 | - dxmin = 0; | |
| 1031 | - } | |
| 1032 | - } | |
| 1033 | - if(flag) { | |
| 1034 | - if(!isDirSmbc(dirDmToIndex(sslpbcA[r+1].xlDir) , sslpbcA[r+1].fcsj , dataMap)) { | |
| 1035 | - // 修改当前班次的停站时间. | |
| 1036 | - sslpbcA[r].STOPTIME = parseInt(dxmin) ; | |
| 1037 | - // 当前班次的到达时间 + 停站时间 作为下一个班次的发车时间. | |
| 1038 | - dqbcddsj.setMinutes(dqbcddsj.getMinutes() + dxmin); | |
| 1039 | - // 修改下一个班次的发车时间. | |
| 1040 | - sslpbcA[r+1].fcsj = DateTimeTool.getHHmmStr(dqbcddsj); | |
| 1041 | - // 下一个班次的发车时间 + 行驶时间 作为下一个班次的到达时间. | |
| 1042 | - dqbcddsj.setMinutes(dqbcddsj.getMinutes() + sslpbcA[r+1].bcsj); | |
| 1043 | - // 修改下一个班次的到达时间. | |
| 1044 | - sslpbcA[r+1].ARRIVALTIME = DateTimeTool.getHHmmStr(dqbcddsj); | |
| 1045 | - }else { | |
| 1046 | - if(r>0) { | |
| 1047 | - // 修改当前班次的停站时间. | |
| 1048 | - sslpbcA[r].STOPTIME = parseInt(dxmin) ; | |
| 1049 | - sgbcfcsj.setMinutes(sgbcfcsj.getMinutes() - sslpbcA[r].STOPTIME); | |
| 1050 | - sslpbcA[r].ARRIVALTIME = DateTimeTool.getHHmmStr(sgbcfcsj); | |
| 1051 | - sgbcfcsj.setMinutes(sgbcfcsj.getMinutes() - sslpbcA[r].bcsj); | |
| 1052 | - sslpbcA[r].fcsj = DateTimeTool.getHHmmStr(sgbcfcsj); | |
| 1053 | - sslpbcA[r-1].STOPTIME = parseInt( ( sgbcfcsj - DateTimeTool.getDateTime(sslpbcA[r-1].ARRIVALTIME))/60000); | |
| 1054 | - } | |
| 1055 | - } | |
| 1056 | - } | |
| 1057 | - } | |
| 1058 | - } | |
| 1059 | - } | |
| 1060 | - }; | |
| 1061 | - | |
| 1062 | - var isDirSmbc = function(dirDm , fcsj , dataMap) { | |
| 1063 | - var falg = false; | |
| 1064 | - if(fcsj == dataMap.smbcsjArr[dirDm].kssj || fcsj == dataMap.smbcsjArr[dirDm].jssj) | |
| 1065 | - falg = true; | |
| 1066 | - return falg; | |
| 1067 | - }; | |
| 1068 | - | |
| 938 | + | |
| 1069 | 939 | return { |
| 1070 | 940 | scheduleInit : scheduleInit, |
| 1071 | - judgeFCJX : judgeFCJX, | |
| 1072 | - judgeTZSJ : judgeTZSJ | |
| 941 | + judgeFCJX : judgeFCJX, //判断发车间隙 | |
| 942 | + judgeTZSJ : judgeTZSJ, //判断停站时间 | |
| 943 | + judgeXSSJ : judgeXSSJ, //判断行驶时间 | |
| 944 | + isPeakTimeScope : isPeakTimeScope //判断是否高峰 | |
| 1073 | 945 | } |
| 1074 | 946 | }(); |
| 1075 | 947 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/base/timesmodel/tepms/bctype_temp.html
| ... | ... | @@ -58,62 +58,6 @@ |
| 58 | 58 | |
| 59 | 59 | <!-- 表单分组组件 form-group START --> |
| 60 | 60 | <div class="form-group"> |
| 61 | - <!-- 早高峰开始时间 (* 必填项) START --> | |
| 62 | - <div class="col-md-6"> | |
| 63 | - <label class="control-label col-md-5"> | |
| 64 | - <span class="required"> * </span> 早高峰开始时间 : | |
| 65 | - </label> | |
| 66 | - <div class="col-md-5"> | |
| 67 | - <input type="text" class="form-control" name="earlyStartTime" value="{{map.earlyStartTime}}" id="zgfkssjInput" | |
| 68 | - placeholder="请输入早高峰开始时间"> | |
| 69 | - </div> | |
| 70 | - </div> | |
| 71 | - <!-- 早高峰开始时间 (* 必填项) END --> | |
| 72 | - | |
| 73 | - <!-- 早高峰结束时间 (* 必填项) START --> | |
| 74 | - <div class="col-md-6"> | |
| 75 | - <label class="control-label col-md-5"> | |
| 76 | - <span class="required"> * </span> 早高峰结束时间 : | |
| 77 | - </label> | |
| 78 | - <div class="col-md-5"> | |
| 79 | - <input type="text" class="form-control" name="earlyEndTime" value="{{map.earlyEndTime}}" id="zgfjssjInput" | |
| 80 | - placeholder="请输入早高峰结束时间"> | |
| 81 | - </div> | |
| 82 | - </div> | |
| 83 | - <!-- 早高峰结束时间 (* 必填项) END --> | |
| 84 | - </div> | |
| 85 | - <!-- 表单分组组件 form-group END --> | |
| 86 | - | |
| 87 | - <!-- 表单分组组件 form-group START --> | |
| 88 | - <div class="form-group"> | |
| 89 | - <!-- 晚高峰开始时间 (* 必填项) START --> | |
| 90 | - <div class="col-md-6"> | |
| 91 | - <label class="control-label col-md-5"> | |
| 92 | - <span class="required"> * </span> 晚高峰开始时间 : | |
| 93 | - </label> | |
| 94 | - <div class="col-md-5"> | |
| 95 | - <input type="text" class="form-control" name="lateStartTime" value="{{map.lateStartTime}}" id="wgfkssjInput" | |
| 96 | - placeholder="请输入晚高峰开始时间"> | |
| 97 | - </div> | |
| 98 | - </div> | |
| 99 | - <!-- 晚高峰开始时间 (* 必填项) END --> | |
| 100 | - | |
| 101 | - <!-- 晚高峰结束 (* 必填项) START --> | |
| 102 | - <div class="col-md-6"> | |
| 103 | - <label class="control-label col-md-5"> | |
| 104 | - <span class="required"> * </span> 晚高峰结束时间 : | |
| 105 | - </label> | |
| 106 | - <div class="col-md-5"> | |
| 107 | - <input type="text" class="form-control" name="lateEndTime" value="{{map.lateEndTime}}" id="wgfjssjInput" | |
| 108 | - placeholder="请输入晚高峰结束时间"> | |
| 109 | - </div> | |
| 110 | - </div> | |
| 111 | - <!-- 晚高峰结束 (* 必填项) END --> | |
| 112 | - </div> | |
| 113 | - <!-- 表单分组组件 form-group END --> | |
| 114 | - | |
| 115 | - <!-- 表单分组组件 form-group START --> | |
| 116 | - <div class="form-group"> | |
| 117 | 61 | <!-- 线路规划类型 (* 必填项) START --> |
| 118 | 62 | <div class="col-md-6"> |
| 119 | 63 | <label class="control-label col-md-5"> |
| ... | ... | @@ -237,76 +181,102 @@ |
| 237 | 181 | </div> |
| 238 | 182 | <!-- 表单分组组件 form-group END --> |
| 239 | 183 | |
| 240 | - <!-- 表单分组组件 form-group START --> | |
| 184 | + <!-- 表单分组组件 form-group START --> | |
| 185 | + <!--<div class="form-group"> | |
| 186 | + <!– 低谷最大发车间隙(* 必填项) START –> | |
| 187 | + <div class="col-md-6"> | |
| 188 | + <label class="control-label col-md-5"> | |
| 189 | + <span class="required"> * </span> 低谷最大发车间隙: | |
| 190 | + </label> | |
| 191 | + <div class="col-md-5"> | |
| 192 | + <input type="text" class="form-control" name="dgmaxfcjx" id="dgmaxfcjxInput" placeholder="请输入低谷最大发车间隙"> | |
| 193 | + </div> | |
| 194 | + </div> | |
| 195 | + <!– 低谷最大发车间隙(* 必填项) END –> | |
| 196 | + | |
| 197 | + <!– 低谷最大停站时间(* 必填项) START –> | |
| 198 | + <div class="col-md-6"> | |
| 199 | + <label class="control-label col-md-5"> | |
| 200 | + <span class="required"> * </span> 低谷最大停站时间: | |
| 201 | + </label> | |
| 202 | + <div class="col-md-5"> | |
| 203 | + <input type="text" class="form-control" name="dgmaxtzsj" id="dgmaxtzsjInput" | |
| 204 | + placeholder="请输入低谷最大停站时间"> | |
| 205 | + </div> | |
| 206 | + </div> | |
| 207 | + <!– 低谷停站时间 (* 必填项) END –> | |
| 208 | + </div>--> | |
| 209 | + <!-- 表单分组组件 form-group END --> | |
| 210 | + | |
| 211 | + <!-- 表单分组组件 form-group START --> | |
| 241 | 212 | <div class="form-group"> |
| 242 | 213 | <div class="col-md-12"> |
| 243 | 214 | <div class="col-md-6"> |
| 244 | - <label class="control-label col-md-5"></label> | |
| 245 | - <label class="col-md-5">上行行驶时间</label> | |
| 215 | + <label class="control-label col-md-2"></label> | |
| 216 | + <div class="col-md-5"> | |
| 217 | + <label class="col-md-5">开始时间</label> | |
| 218 | + <label class="control-label col-md-1">-</label> | |
| 219 | + <label class="col-md-5">结束时间</label> | |
| 220 | + </div> | |
| 221 | + <label class="control-label col-md-1"> : </label> | |
| 222 | + <label class="col-md-4">上行行驶时间</label> | |
| 246 | 223 | </div> |
| 247 | 224 | <div class="col-md-6"> |
| 248 | 225 | <div class="col-md-5"></div> |
| 249 | 226 | <label class="col-md-5">下行行驶时间</label> |
| 250 | - | |
| 251 | - <!--<label class="control-label col-md-1"></label> | |
| 252 | - <label class="control-label col-md-1">上行发车间隔</label> | |
| 253 | - <!–<label class="control-label col-md-1">上行最大发车间隔</label>–> | |
| 254 | - | |
| 255 | - <label class="control-label col-md-2"></label> | |
| 256 | - <label class="control-label col-md-1">下行发车间隔</label>--> | |
| 257 | - <!--<label class="control-label col-md-1">下行最大发车间隔</label>--> | |
| 258 | 227 | </div> |
| 259 | 228 | </div> |
| 260 | 229 | |
| 261 | 230 | <div class="col-md-12"> |
| 262 | 231 | <div class="col-md-6"> |
| 263 | - <label class="control-label col-md-5"><span class="required"> * </span>首班-6:30 :</label> | |
| 232 | + <label class="control-label col-md-2"><span class="required"> * </span>早高峰之前:</label> | |
| 233 | + <!-- 早高峰开始时间 (* 必填项) START --> | |
| 264 | 234 | <div class="col-md-5"> |
| 265 | - <input type="text" class="form-control" name="upTravelTime1" id="upTravelTimeInput1" | |
| 235 | + <div class="col-md-5"> | |
| 236 | + <input type="text" class="form-control" name="start1" value="04:00" id="startInput1" | |
| 237 | + placeholder="开始时间"> | |
| 238 | + </div> | |
| 239 | + <label class="control-label col-md-1">-</label> | |
| 240 | + <div class="col-md-5"> | |
| 241 | + <input type="text" class="form-control" name="end1" value="{{map.earlyStartTime}}" id="endInput1" | |
| 242 | + placeholder="结束时间"> | |
| 243 | + </div> | |
| 244 | + </div> | |
| 245 | + <label class="control-label col-md-1"> : </label> | |
| 246 | + <!-- 早高峰开始时间 (* 必填项) END --> | |
| 247 | + <div class="col-md-4"> | |
| 248 | + <input type="text" class="form-control" name="upTravelTime1" value="{{map.troughUpTime}}" id="upTravelTimeInput1" | |
| 266 | 249 | placeholder="上行行驶时间"> |
| 267 | 250 | </div> |
| 268 | 251 | </div> |
| 269 | 252 | <div class="col-md-6"> |
| 270 | 253 | <div class="col-md-5"></div> |
| 271 | 254 | <div class="col-md-5"> |
| 272 | - <input type="text" class="form-control" name="downTravelTime1" id="downTravelTimeInput1" | |
| 255 | + <input type="text" class="form-control" name="downTravelTime1" value="{{map.troughDownTime}}" id="downTravelTimeInput1" | |
| 273 | 256 | placeholder="下行行驶时间"> |
| 274 | 257 | </div> |
| 275 | 258 | </div> |
| 276 | - | |
| 277 | - <!--<div class="col-md-3"> | |
| 278 | - <label class="control-label col-md-1"></label> | |
| 279 | - <div class="col-md-5"> | |
| 280 | - <input type="text" class="form-control" name="upfcjjMin1" id="upfcjjMinInput1" | |
| 281 | - placeholder="上行最小间隔"> | |
| 282 | - </div> | |
| 283 | - <label class="control-label col-md-1">-</label> | |
| 284 | - <div class="col-md-5"> | |
| 285 | - <input type="text" class="form-control" name="upfcjjMax1" id="upfcjjMaxInput1" | |
| 286 | - placeholder="上行最大间隔"> | |
| 287 | - </div> | |
| 288 | - </div> | |
| 289 | - | |
| 290 | - <div class="col-md-3"> | |
| 291 | - <label class="control-label col-md-1"></label> | |
| 292 | - <div class="col-md-5"> | |
| 293 | - <input type="text" class="form-control" name="downfcjjMin1" id="downfcjjMinInput1" | |
| 294 | - placeholder="下行最小间隔"> | |
| 295 | - </div> | |
| 296 | - <label class="control-label col-md-1">-</label> | |
| 297 | - <div class="col-md-5"> | |
| 298 | - <input type="text" class="form-control" name="downfcjjMax1" id="downfcjjMaxInput1" | |
| 299 | - placeholder="下行最大间隔"> | |
| 300 | - </div> | |
| 301 | - </div>--> | |
| 302 | 259 | </div> |
| 303 | 260 | |
| 304 | 261 | <!-- 6:31-8:30--> |
| 305 | 262 | <div class="col-md-12"> |
| 306 | 263 | <div class="col-md-6"> |
| 307 | - <label class="control-label col-md-5"><span class="required"> * </span>6:31-8:30 :</label> | |
| 308 | - <div class="col-md-5"> | |
| 309 | - <input type="text" class="form-control" valer="{{map.earlyUpTime}}" name="upTravelTime2" id="upTravelTimeInput2" | |
| 264 | + <label class="control-label col-md-2"><span class="required"> * </span>早高峰:</label> | |
| 265 | + <div class="col-md-5"> | |
| 266 | + <div class="col-md-5"> | |
| 267 | + <input type="text" class="form-control" name="start2" value="{{map.earlyStartTime}}" id="startInput2" | |
| 268 | + placeholder="开始时间"> | |
| 269 | + </div> | |
| 270 | + <label class="control-label col-md-1">-</label> | |
| 271 | + <div class="col-md-5"> | |
| 272 | + <input type="text" class="form-control" name="end2" value="{{map.earlyEndTime}}" id="endInput2" | |
| 273 | + placeholder="结束时间"> | |
| 274 | + </div> | |
| 275 | + </div> | |
| 276 | + <label class="control-label col-md-1"> : </label> | |
| 277 | + <!-- 表单分组组件 form-group END --> | |
| 278 | + <div class="col-md-4"> | |
| 279 | + <input type="text" class="form-control" value="{{map.earlyUpTime}}" name="upTravelTime2" id="upTravelTimeInput2" | |
| 310 | 280 | placeholder="上行行驶时间"> |
| 311 | 281 | </div> |
| 312 | 282 | </div> |
| ... | ... | @@ -317,39 +287,25 @@ |
| 317 | 287 | placeholder="下行行驶时间"> |
| 318 | 288 | </div> |
| 319 | 289 | </div> |
| 320 | - | |
| 321 | - <!--<div class="col-md-3"> | |
| 322 | - <label class="control-label col-md-1"></label> | |
| 323 | - <div class="col-md-5"> | |
| 324 | - <input type="text" class="form-control" name="upfcjjMin2" id="upfcjjMinInput2" | |
| 325 | - placeholder="上行最小间隔"> | |
| 326 | - </div> | |
| 327 | - <label class="control-label col-md-1">-</label> | |
| 328 | - <div class="col-md-5"> | |
| 329 | - <input type="text" class="form-control" name="upfcjjMax2" id="upfcjjMaxInput2" | |
| 330 | - placeholder="上行最大间隔"> | |
| 331 | - </div> | |
| 332 | - </div> | |
| 333 | - | |
| 334 | - <div class="col-md-3"> | |
| 335 | - <label class="control-label col-md-1"></label> | |
| 336 | - <div class="col-md-5"> | |
| 337 | - <input type="text" class="form-control" name="downfcjjMin2" id="downfcjjMinInput2" | |
| 338 | - placeholder="下行最小间隔"> | |
| 339 | - </div> | |
| 340 | - <label class="control-label col-md-1">-</label> | |
| 341 | - <div class="col-md-5"> | |
| 342 | - <input type="text" class="form-control" name="downfcjjMax2" id="downfcjjMaxInput2" | |
| 343 | - placeholder="下行最大间隔"> | |
| 344 | - </div> | |
| 345 | - </div>--> | |
| 346 | 290 | </div> |
| 347 | 291 | |
| 348 | 292 | <!-- 8:31-16:00--> |
| 349 | 293 | <div class="col-md-12"> |
| 350 | 294 | <div class="col-md-6"> |
| 351 | - <label class="control-label col-md-5"><span class="required"> * </span>8:31-16:00 :</label> | |
| 295 | + <label class="control-label col-md-2"><span class="required"> * </span>高峰之间:</label> | |
| 352 | 296 | <div class="col-md-5"> |
| 297 | + <div class="col-md-5"> | |
| 298 | + <input type="text" class="form-control" name="start3" value="{{map.earlyEndTime}}" id="startInput3" | |
| 299 | + placeholder="开始时间"> | |
| 300 | + </div> | |
| 301 | + <label class="control-label col-md-1">-</label> | |
| 302 | + <div class="col-md-5"> | |
| 303 | + <input type="text" class="form-control" name="end3" value="{{map.lateStartTime}}" id="endInput3" | |
| 304 | + placeholder="结束时间"> | |
| 305 | + </div> | |
| 306 | + </div> | |
| 307 | + <label class="control-label col-md-1"> : </label> | |
| 308 | + <div class="col-md-4"> | |
| 353 | 309 | <input type="text" class="form-control" value="{{map.troughUpTime}}" name="upTravelTime3" id="upTravelTimeInput3" |
| 354 | 310 | placeholder="上行行驶时间"> |
| 355 | 311 | </div> |
| ... | ... | @@ -361,39 +317,25 @@ |
| 361 | 317 | placeholder="下行行驶时间"> |
| 362 | 318 | </div> |
| 363 | 319 | </div> |
| 364 | - | |
| 365 | - <!--<div class="col-md-3"> | |
| 366 | - <label class="control-label col-md-1"></label> | |
| 367 | - <div class="col-md-5"> | |
| 368 | - <input type="text" class="form-control" name="upfcjjMin3" id="upfcjjMinInput3" | |
| 369 | - placeholder="上行最小间隔"> | |
| 370 | - </div> | |
| 371 | - <label class="control-label col-md-1">-</label> | |
| 372 | - <div class="col-md-5"> | |
| 373 | - <input type="text" class="form-control" name="upfcjjMax3" id="upfcjjMaxInput3" | |
| 374 | - placeholder="上行最大间隔"> | |
| 375 | - </div> | |
| 376 | - </div> | |
| 377 | - | |
| 378 | - <div class="col-md-3"> | |
| 379 | - <label class="control-label col-md-1"></label> | |
| 380 | - <div class="col-md-5"> | |
| 381 | - <input type="text" class="form-control" name="downfcjjMin3" id="downfcjjMinInput3" | |
| 382 | - placeholder="下行最小间隔"> | |
| 383 | - </div> | |
| 384 | - <label class="control-label col-md-1">-</label> | |
| 385 | - <div class="col-md-5"> | |
| 386 | - <input type="text" class="form-control" name="downfcjjMax3" id="downfcjjMaxInput3" | |
| 387 | - placeholder="下行最大间隔"> | |
| 388 | - </div> | |
| 389 | - </div>--> | |
| 390 | 320 | </div> |
| 391 | 321 | |
| 392 | 322 | <!-- 16:01-18:00--> |
| 393 | 323 | <div class="col-md-12"> |
| 394 | 324 | <div class="col-md-6"> |
| 395 | - <label class="control-label col-md-5"><span class="required"> * </span>16:01-18:00 :</label> | |
| 325 | + <label class="control-label col-md-2"><span class="required"> * </span>晚高峰:</label> | |
| 396 | 326 | <div class="col-md-5"> |
| 327 | + <div class="col-md-5"> | |
| 328 | + <input type="text" class="form-control" name="start4" value="{{map.lateStartTime}}" id="startInput4" | |
| 329 | + placeholder="开始时间"> | |
| 330 | + </div> | |
| 331 | + <label class="control-label col-md-1">-</label> | |
| 332 | + <div class="col-md-5"> | |
| 333 | + <input type="text" class="form-control" name="end4" value="{{map.lateEndTime}}" id="endInput4" | |
| 334 | + placeholder="结束时间"> | |
| 335 | + </div> | |
| 336 | + </div> | |
| 337 | + <label class="control-label col-md-1"> : </label> | |
| 338 | + <div class="col-md-4"> | |
| 397 | 339 | <input type="text" class="form-control" value="{{map.lateUpTime}}" name="upTravelTime4" id="upTravelTimeInput4" |
| 398 | 340 | placeholder="上行行驶时间"> |
| 399 | 341 | </div> |
| ... | ... | @@ -405,76 +347,36 @@ |
| 405 | 347 | placeholder="下行行驶时间"> |
| 406 | 348 | </div> |
| 407 | 349 | </div> |
| 408 | - | |
| 409 | - <!--<div class="col-md-3"> | |
| 410 | - <label class="control-label col-md-1"></label> | |
| 411 | - <div class="col-md-5"> | |
| 412 | - <input type="text" class="form-control" name="upfcjjMin4" id="upfcjjMinInput4" | |
| 413 | - placeholder="上行最小间隔"> | |
| 414 | - </div> | |
| 415 | - <label class="control-label col-md-1">-</label> | |
| 416 | - <div class="col-md-5"> | |
| 417 | - <input type="text" class="form-control" name="upfcjjMax4" id="upfcjjMaxInput4" | |
| 418 | - placeholder="上行最大间隔"> | |
| 419 | - </div> | |
| 420 | - </div> | |
| 421 | - | |
| 422 | - <div class="col-md-3"> | |
| 423 | - <label class="control-label col-md-1"></label> | |
| 424 | - <div class="col-md-5"> | |
| 425 | - <input type="text" class="form-control" name="downfcjjMin4" id="downfcjjMinInput4" | |
| 426 | - placeholder="下行最小间隔"> | |
| 427 | - </div> | |
| 428 | - <label class="control-label col-md-1">-</label> | |
| 429 | - <div class="col-md-5"> | |
| 430 | - <input type="text" class="form-control" name="downfcjjMax4" id="downfcjjMaxInput4" | |
| 431 | - placeholder="下行最大间隔"> | |
| 432 | - </div> | |
| 433 | - </div>--> | |
| 434 | 350 | </div> |
| 435 | 351 | |
| 436 | 352 | <!-- 18:00-末班--> |
| 437 | 353 | <div class="col-md-12"> |
| 438 | 354 | <div class="col-md-6"> |
| 439 | - <label class="control-label col-md-5"><span class="required"> * </span>18:00-末班 :</label> | |
| 355 | + <label class="control-label col-md-2"><span class="required"> * </span>晚高峰之后:</label> | |
| 440 | 356 | <div class="col-md-5"> |
| 441 | - <input type="text" class="form-control" name="upTravelTime5" id="upTravelTimeInput5" | |
| 357 | + <div class="col-md-5"> | |
| 358 | + <input type="text" class="form-control" name="start5" value="{{map.lateEndTime}}" id="startInput5" | |
| 359 | + placeholder="开始时间"> | |
| 360 | + </div> | |
| 361 | + <label class="control-label col-md-1">-</label> | |
| 362 | + <div class="col-md-5"> | |
| 363 | + <input type="text" class="form-control" name="end5" value="23:59" id="endInput5" | |
| 364 | + placeholder="结束时间"> | |
| 365 | + </div> | |
| 366 | + </div> | |
| 367 | + <label class="control-label col-md-1"> : </label> | |
| 368 | + <div class="col-md-4"> | |
| 369 | + <input type="text" class="form-control" value="{{map.troughUpTime}}" name="upTravelTime5" id="upTravelTimeInput5" | |
| 442 | 370 | placeholder="上行行驶时间"> |
| 443 | 371 | </div> |
| 444 | 372 | </div> |
| 445 | 373 | <div class="col-md-6"> |
| 446 | 374 | <div class="col-md-5"></div> |
| 447 | 375 | <div class="col-md-5"> |
| 448 | - <input type="text" class="form-control" name="downTravelTime5" id="downTravelTimeInput5" | |
| 376 | + <input type="text" class="form-control" value="{{map.troughDownTime}}" name="downTravelTime5" id="downTravelTimeInput5" | |
| 449 | 377 | placeholder="下行行驶时间"> |
| 450 | 378 | </div> |
| 451 | 379 | </div> |
| 452 | - | |
| 453 | - <!--<div class="col-md-3"> | |
| 454 | - <label class="control-label col-md-1"></label> | |
| 455 | - <div class="col-md-5"> | |
| 456 | - <input type="text" class="form-control" name="upfcjjMin5" id="upfcjjMinInput5" | |
| 457 | - placeholder="上行最小间隔"> | |
| 458 | - </div> | |
| 459 | - <label class="control-label col-md-1">-</label> | |
| 460 | - <div class="col-md-5"> | |
| 461 | - <input type="text" class="form-control" name="upfcjjMax5" id="upfcjjMaxInput5" | |
| 462 | - placeholder="上行最大间隔"> | |
| 463 | - </div> | |
| 464 | - </div> | |
| 465 | - | |
| 466 | - <div class="col-md-3"> | |
| 467 | - <label class="control-label col-md-1"></label> | |
| 468 | - <div class="col-md-5"> | |
| 469 | - <input type="text" class="form-control" name="downfcjjMin5" id="downfcjjMinInput5" | |
| 470 | - placeholder="下行最小间隔"> | |
| 471 | - </div> | |
| 472 | - <label class="control-label col-md-1">-</label> | |
| 473 | - <div class="col-md-5"> | |
| 474 | - <input type="text" class="form-control" name="downfcjjMax5" id="downfcjjMaxInput5" | |
| 475 | - placeholder="下行最大间隔"> | |
| 476 | - </div> | |
| 477 | - </div>--> | |
| 478 | 380 | </div> |
| 479 | 381 | </div> |
| 480 | 382 | <!-- 表单分组组件 form-group END --> |
| ... | ... | @@ -602,6 +504,8 @@ |
| 602 | 504 | <input type="hidden" name="downInMileage" value="{{map.downInMileage}}" id="downInlcInput"/> |
| 603 | 505 | <input type="hidden" name="upOutMileage" value="{{map.upOutMileage}}" id="upOutlcInput"/> |
| 604 | 506 | <input type="hidden" name="downOutMileage" value="{{map.downOutMileage}}" id="downOutlcInput"/> |
| 507 | + <!--线路等级--> | |
| 508 | + <input type="hidden" name="level" value="{{map.line.level}}" id="level"/> | |
| 605 | 509 | |
| 606 | 510 | </script> |
| 607 | 511 | |
| ... | ... | @@ -675,56 +579,6 @@ |
| 675 | 579 | |
| 676 | 580 | <!-- 表单分组组件 form-group START --> |
| 677 | 581 | <div class="form-group"> |
| 678 | - <!-- 早高峰开始时间(* 必填项) START --> | |
| 679 | - <div class="col-md-6"> | |
| 680 | - <label class="control-label col-md-5"> | |
| 681 | - <span class="required"> * </span> 早高峰开始时间 : | |
| 682 | - </label> | |
| 683 | - <div class="col-md-4"> | |
| 684 | - <p class="form-control-static" data-display="earlyStartTime"> </p> | |
| 685 | - </div> | |
| 686 | - </div> | |
| 687 | - <!-- 早高峰开始时间 (* 必填项) END --> | |
| 688 | - <!-- 早高峰结束时间 (* 必填项) START --> | |
| 689 | - <div class="col-md-6"> | |
| 690 | - <label class="control-label col-md-5"> | |
| 691 | - <span class="required"> * </span> 早高峰结束时间 : | |
| 692 | - </label> | |
| 693 | - <div class="col-md-4"> | |
| 694 | - <p class="form-control-static" data-display="earlyEndTime"> </p> | |
| 695 | - </div> | |
| 696 | - </div> | |
| 697 | - <!-- 早高峰结束时间 (* 必填项) END --> | |
| 698 | - </div> | |
| 699 | - <!-- 表单分组组件 form-group END --> | |
| 700 | - | |
| 701 | - <!-- 表单分组组件 form-group START --> | |
| 702 | - <div class="form-group"> | |
| 703 | - <!-- 晚高峰开始时间(* 必填项) START --> | |
| 704 | - <div class="col-md-6"> | |
| 705 | - <label class="control-label col-md-5"> | |
| 706 | - <span class="required"> * </span> 晚高峰开始时间 : | |
| 707 | - </label> | |
| 708 | - <div class="col-md-4"> | |
| 709 | - <p class="form-control-static" data-display="lateStartTime"> </p> | |
| 710 | - </div> | |
| 711 | - </div> | |
| 712 | - <!-- 晚高峰开始时间(* 必填项) END --> | |
| 713 | - <!-- 晚高峰结束时间(* 必填项) START --> | |
| 714 | - <div class="col-md-6"> | |
| 715 | - <label class="control-label col-md-5"> | |
| 716 | - <span class="required"> * </span> 晚高峰结束时间 : | |
| 717 | - </label> | |
| 718 | - <div class="col-md-4"> | |
| 719 | - <p class="form-control-static" data-display="lateEndTime"> </p> | |
| 720 | - </div> | |
| 721 | - </div> | |
| 722 | - <!-- 晚高峰结束时间(* 必填项) END --> | |
| 723 | - </div> | |
| 724 | - <!-- 表单分组组件 form-group END --> | |
| 725 | - | |
| 726 | - <!-- 表单分组组件 form-group START --> | |
| 727 | - <div class="form-group"> | |
| 728 | 582 | <!-- 线路规划类型 (* 必填项) START --> |
| 729 | 583 | <div class="col-md-6"> |
| 730 | 584 | <label class="control-label col-md-5"> |
| ... | ... | @@ -829,38 +683,44 @@ |
| 829 | 683 | </div> |
| 830 | 684 | <!-- 表单分组组件 form-group END --> |
| 831 | 685 | |
| 832 | - <!-- 表单分组组件 form-group START --> | |
| 833 | - <div class="form-group"> | |
| 834 | - <!-- 班型与人次 START --> | |
| 835 | - <div class="col-md-6"> | |
| 836 | - <label class="control-label col-md-5"> | |
| 837 | - <span class="required"> * </span> 班型/人次/车辆 : | |
| 838 | - </label> | |
| 839 | - <div class="col-md-4"> | |
| 840 | - <p class="form-control-static" data-display="bxrc"> </p> | |
| 841 | - </div> | |
| 842 | - </div> | |
| 843 | - <!-- 班型与人次 END --> | |
| 844 | - <!-- 车辆总数 START --> | |
| 845 | - <div class="col-md-6"> | |
| 846 | - <label class="control-label col-md-5"> | |
| 847 | - <span class="required"> * </span> 车辆总数 : | |
| 848 | - </label> | |
| 849 | - <div class="col-md-4"> | |
| 850 | - <p class="form-control-static" data-display="clzs"> </p> | |
| 851 | - </div> | |
| 852 | - </div> | |
| 853 | - <!-- 车辆总数 END --> | |
| 854 | - </div> | |
| 855 | - <!-- 表单分组组件 form-group END --> | |
| 686 | + <!-- 表单分组组件 form-group START --> | |
| 687 | + <!-- <div class="form-group"> | |
| 688 | + <!– 低谷最大发车间隙(* 必填项) START –> | |
| 689 | + <div class="col-md-6"> | |
| 690 | + <label class="control-label col-md-5"> | |
| 691 | + <span class="required"> * </span> 低谷最大发车间隙: | |
| 692 | + </label> | |
| 693 | + <div class="col-md-4"> | |
| 694 | + <p class="form-control-static" data-display="dgmaxfcjx"> </p> | |
| 695 | + </div> | |
| 696 | + </div> | |
| 697 | + <!– 低谷最大发车间隙(* 必填项) END –> | |
| 856 | 698 | |
| 699 | + <!– 低谷最大停站时间(* 必填项) START –> | |
| 700 | + <div class="col-md-6"> | |
| 701 | + <label class="control-label col-md-5"> | |
| 702 | + <span class="required"> * </span> 低谷最大停站时间: | |
| 703 | + </label> | |
| 704 | + <div class="col-md-4"> | |
| 705 | + <p class="form-control-static" data-display="dgmaxtzsj"> </p> | |
| 706 | + </div> | |
| 707 | + </div> | |
| 708 | + <!– 低谷最大停站时间(* 必填项) END –> | |
| 709 | + </div>--> | |
| 710 | + <!-- 表单分组组件 form-group END --> | |
| 857 | 711 | |
| 858 | 712 | <!-- 表单分组组件 form-group START --> |
| 859 | 713 | <div class="form-group"> |
| 860 | 714 | <div class="col-md-12"> |
| 861 | 715 | <div class="col-md-6"> |
| 862 | - <label class="control-label col-md-5"></label> | |
| 863 | - <label class="col-md-5">上行行驶时间</label> | |
| 716 | + <label class="control-label col-md-2"></label> | |
| 717 | + <div class="col-md-5"> | |
| 718 | + <label class="col-md-5">开始时间</label> | |
| 719 | + <label class="control-label col-md-1">-</label> | |
| 720 | + <label class="col-md-5">结束时间</label> | |
| 721 | + </div> | |
| 722 | + <label class="control-label col-md-1"> : </label> | |
| 723 | + <label class="col-md-4">上行行驶时间</label> | |
| 864 | 724 | </div> |
| 865 | 725 | <div class="col-md-6"> |
| 866 | 726 | <div class="col-md-5"></div> |
| ... | ... | @@ -870,8 +730,18 @@ |
| 870 | 730 | |
| 871 | 731 | <div class="col-md-12"> |
| 872 | 732 | <div class="col-md-6"> |
| 873 | - <label class="control-label col-md-5"><span class="required"> * </span>首班-6:30 :</label> | |
| 733 | + <label class="control-label col-md-2"><span class="required"> * </span>早高峰之前:</label> | |
| 874 | 734 | <div class="col-md-5"> |
| 735 | + <div class="col-md-5"> | |
| 736 | + <p class="form-control-static" data-display="start1"></p> | |
| 737 | + </div> | |
| 738 | + <label class="control-label col-md-1">-</label> | |
| 739 | + <div class="col-md-5"> | |
| 740 | + <p class="form-control-static" data-display="end1"></p> | |
| 741 | + </div> | |
| 742 | + </div> | |
| 743 | + <label class="control-label col-md-1"> : </label> | |
| 744 | + <div class="col-md-4"> | |
| 875 | 745 | <p class="form-control-static" data-display="upTravelTime1"> </p> |
| 876 | 746 | </div> |
| 877 | 747 | </div> |
| ... | ... | @@ -886,8 +756,18 @@ |
| 886 | 756 | <!-- 6:31-8:30--> |
| 887 | 757 | <div class="col-md-12"> |
| 888 | 758 | <div class="col-md-6"> |
| 889 | - <label class="control-label col-md-5"><span class="required"> * </span>6:31-8:30 :</label> | |
| 759 | + <label class="control-label col-md-2"><span class="required"> * </span>早高峰:</label> | |
| 890 | 760 | <div class="col-md-5"> |
| 761 | + <div class="col-md-5"> | |
| 762 | + <p class="form-control-static" data-display="start2"></p> | |
| 763 | + </div> | |
| 764 | + <label class="control-label col-md-1">-</label> | |
| 765 | + <div class="col-md-5"> | |
| 766 | + <p class="form-control-static" data-display="end2"></p> | |
| 767 | + </div> | |
| 768 | + </div> | |
| 769 | + <label class="control-label col-md-1"> : </label> | |
| 770 | + <div class="col-md-4"> | |
| 891 | 771 | <p class="form-control-static" data-display="upTravelTime2"> </p> |
| 892 | 772 | </div> |
| 893 | 773 | </div> |
| ... | ... | @@ -902,8 +782,18 @@ |
| 902 | 782 | <!-- 8:31-16:00--> |
| 903 | 783 | <div class="col-md-12"> |
| 904 | 784 | <div class="col-md-6"> |
| 905 | - <label class="control-label col-md-5"><span class="required"> * </span>8:31-16:00 :</label> | |
| 785 | + <label class="control-label col-md-2"><span class="required"> * </span>早高峰之后:</label> | |
| 906 | 786 | <div class="col-md-5"> |
| 787 | + <div class="col-md-5"> | |
| 788 | + <p class="form-control-static" data-display="start3"></p> | |
| 789 | + </div> | |
| 790 | + <label class="control-label col-md-1">-</label> | |
| 791 | + <div class="col-md-5"> | |
| 792 | + <p class="form-control-static" data-display="end3"></p> | |
| 793 | + </div> | |
| 794 | + </div> | |
| 795 | + <label class="control-label col-md-1"> : </label> | |
| 796 | + <div class="col-md-4"> | |
| 907 | 797 | <p class="form-control-static" data-display="upTravelTime3"> </p> |
| 908 | 798 | </div> |
| 909 | 799 | </div> |
| ... | ... | @@ -918,8 +808,18 @@ |
| 918 | 808 | <!-- 16:01-18:00--> |
| 919 | 809 | <div class="col-md-12"> |
| 920 | 810 | <div class="col-md-6"> |
| 921 | - <label class="control-label col-md-5"><span class="required"> * </span>16:01-18:00 :</label> | |
| 811 | + <label class="control-label col-md-2"><span class="required"> * </span>晚高峰:</label> | |
| 922 | 812 | <div class="col-md-5"> |
| 813 | + <div class="col-md-5"> | |
| 814 | + <p class="form-control-static" data-display="start4"></p> | |
| 815 | + </div> | |
| 816 | + <label class="control-label col-md-1">-</label> | |
| 817 | + <div class="col-md-5"> | |
| 818 | + <p class="form-control-static" data-display="end4"></p> | |
| 819 | + </div> | |
| 820 | + </div> | |
| 821 | + <label class="control-label col-md-1"> : </label> | |
| 822 | + <div class="col-md-4"> | |
| 923 | 823 | <p class="form-control-static" data-display="upTravelTime4"> </p> |
| 924 | 824 | </div> |
| 925 | 825 | </div> |
| ... | ... | @@ -934,8 +834,18 @@ |
| 934 | 834 | <!-- 18:00-末班--> |
| 935 | 835 | <div class="col-md-12"> |
| 936 | 836 | <div class="col-md-6"> |
| 937 | - <label class="control-label col-md-5"><span class="required"> * </span>18:00-末班 :</label> | |
| 837 | + <label class="control-label col-md-2"><span class="required"> * </span>晚高峰之后:</label> | |
| 938 | 838 | <div class="col-md-5"> |
| 839 | + <div class="col-md-5"> | |
| 840 | + <p class="form-control-static" data-display="start5"></p> | |
| 841 | + </div> | |
| 842 | + <label class="control-label col-md-1">-</label> | |
| 843 | + <div class="col-md-5"> | |
| 844 | + <p class="form-control-static" data-display="end5"></p> | |
| 845 | + </div> | |
| 846 | + </div> | |
| 847 | + <label class="control-label col-md-1"> : </label> | |
| 848 | + <div class="col-md-4"> | |
| 939 | 849 | <p class="form-control-static" data-display="upTravelTime5"> </p> |
| 940 | 850 | </div> |
| 941 | 851 | </div> |
| ... | ... | @@ -948,4 +858,29 @@ |
| 948 | 858 | </div> |
| 949 | 859 | </div> |
| 950 | 860 | <!-- 表单分组组件 form-group END --> |
| 861 | + | |
| 862 | + <!-- 表单分组组件 form-group START --> | |
| 863 | + <div class="form-group"> | |
| 864 | + <!-- 班型与人次 START --> | |
| 865 | + <div class="col-md-6"> | |
| 866 | + <label class="control-label col-md-5"> | |
| 867 | + <span class="required"> * </span> 班型/人次/车辆 : | |
| 868 | + </label> | |
| 869 | + <div class="col-md-4"> | |
| 870 | + <p class="form-control-static" data-display="bxrc"> </p> | |
| 871 | + </div> | |
| 872 | + </div> | |
| 873 | + <!-- 班型与人次 END --> | |
| 874 | + <!-- 车辆总数 START --> | |
| 875 | + <div class="col-md-6"> | |
| 876 | + <label class="control-label col-md-5"> | |
| 877 | + <span class="required"> * </span> 车辆总数 : | |
| 878 | + </label> | |
| 879 | + <div class="col-md-4"> | |
| 880 | + <p class="form-control-static" data-display="clzs"> </p> | |
| 881 | + </div> | |
| 882 | + </div> | |
| 883 | + <!-- 车辆总数 END --> | |
| 884 | + </div> | |
| 885 | + <!-- 表单分组组件 form-group END --> | |
| 951 | 886 | </script> |
| 952 | 887 | \ No newline at end of file | ... | ... |