Commit ee3f408bc2642cd6341b8824c71c02f6ae405ea3

Authored by 廖磊
2 parents d1936433 9f29b635

Merge branch 'pudong' of http://222.66.0.204:8090/panzhaov5/bsth_control

into pudong
Showing 30 changed files with 2454 additions and 1579 deletions

Too many changes to show.

To preserve performance only 30 of 37 files are displayed.

src/main/java/com/bsth/controller/calc/CalcWaybillController.java
1 package com.bsth.controller.calc; 1 package com.bsth.controller.calc;
2 2
3 -import java.util.HashMap;  
4 -import java.util.List;  
5 -import java.util.Map;  
6 -  
7 import com.bsth.common.ResponseCode; 3 import com.bsth.common.ResponseCode;
8 import com.bsth.controller.BaseController; 4 import com.bsth.controller.BaseController;
9 import com.bsth.entity.calc.CalcStatistics; 5 import com.bsth.entity.calc.CalcStatistics;
10 import com.bsth.entity.calc.CalcWaybill; 6 import com.bsth.entity.calc.CalcWaybill;
11 import com.bsth.service.calc.CalcWaybillService; 7 import com.bsth.service.calc.CalcWaybillService;
12 -  
13 import org.springframework.beans.factory.annotation.Autowired; 8 import org.springframework.beans.factory.annotation.Autowired;
14 import org.springframework.web.bind.annotation.RequestMapping; 9 import org.springframework.web.bind.annotation.RequestMapping;
15 import org.springframework.web.bind.annotation.RequestParam; 10 import org.springframework.web.bind.annotation.RequestParam;
16 import org.springframework.web.bind.annotation.RestController; 11 import org.springframework.web.bind.annotation.RestController;
17 12
  13 +import java.util.HashMap;
  14 +import java.util.List;
  15 +import java.util.Map;
  16 +
18 /** 17 /**
19 * Created by 17/10/23. 18 * Created by 17/10/23.
20 */ 19 */
src/main/java/com/bsth/controller/realcontrol/ScheduleRealInfoController.java
@@ -635,6 +635,9 @@ public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo, @@ -635,6 +635,9 @@ public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo,
635 } 635 }
636 636
637 int code = dayOfSchedule.reloadSch(lineCode); 637 int code = dayOfSchedule.reloadSch(lineCode);
  638 +
  639 + //重新按公司编码索引数据
  640 + dayOfSchedule.groupByGsbm();
638 rs.put("status", code==0? ResponseCode.SUCCESS: ResponseCode.ERROR); 641 rs.put("status", code==0? ResponseCode.SUCCESS: ResponseCode.ERROR);
639 return rs; 642 return rs;
640 } 643 }
src/main/java/com/bsth/controller/realcontrol/ServiceDataInterface.java
@@ -103,7 +103,7 @@ public class ServiceDataInterface { @@ -103,7 +103,7 @@ public class ServiceDataInterface {
103 if (StringUtils.isEmpty(secretKey) || !secretKey.equals(SECRE_KEY)) 103 if (StringUtils.isEmpty(secretKey) || !secretKey.equals(SECRE_KEY))
104 return null; 104 return null;
105 105
106 - List<ScheduleRealInfo> all = new ArrayList<>(dayOfSchedule.findAll()), rs = new ArrayList<>(); 106 + List<ScheduleRealInfo> all = new ArrayList<>(dayOfSchedule.findByGsbm(companyId)), rs = new ArrayList<>();
107 for (ScheduleRealInfo sch : all) { 107 for (ScheduleRealInfo sch : all) {
108 if (sch.getGsBm() != null 108 if (sch.getGsBm() != null
109 && sch.getGsBm().equals(companyId) 109 && sch.getGsBm().equals(companyId)
src/main/java/com/bsth/data/gpsdata_v2/handlers/InStationProcess.java
@@ -132,8 +132,6 @@ public class InStationProcess { @@ -132,8 +132,6 @@ public class InStationProcess {
132 132
133 sch.setZdsjActualAll(rsT); 133 sch.setZdsjActualAll(rsT);
134 sch.setSiginCompate(2); 134 sch.setSiginCompate(2);
135 - //通知误点停靠程序,有车辆到站  
136 - LateAdjustHandle.carArrive(gps);  
137 135
138 //持久化 136 //持久化
139 dayOfSchedule.save(sch); 137 dayOfSchedule.save(sch);
@@ -147,6 +145,10 @@ public class InStationProcess { @@ -147,6 +145,10 @@ public class InStationProcess {
147 else 145 else
148 dayOfSchedule.removeExecPlan(nbbm); 146 dayOfSchedule.removeExecPlan(nbbm);
149 147
  148 + //通知误点停靠程序,有车辆到站
  149 + //LateAdjustHandle.carArrive(gps, next);
  150 + LateAdjustHandle.carArrive(gps);
  151 +
150 //路牌的下一个班次,页面显示起点实际到达时间 152 //路牌的下一个班次,页面显示起点实际到达时间
151 ScheduleRealInfo lpNext = dayOfSchedule.nextByLp(sch); 153 ScheduleRealInfo lpNext = dayOfSchedule.nextByLp(sch);
152 if (lpNext != null) { 154 if (lpNext != null) {
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
@@ -56,13 +56,16 @@ public class DayOfSchedule { @@ -56,13 +56,16 @@ public class DayOfSchedule {
56 //按线路分组的 “原始计划” 排班数据 56 //按线路分组的 “原始计划” 排班数据
57 public static Map<String, List<SchedulePlanInfo>> schedulePlanMap; 57 public static Map<String, List<SchedulePlanInfo>> schedulePlanMap;
58 58
59 - // 按车辆分组的班次数据 59 + // 按车辆索引的班次数据
60 private static ListMultimap<String, ScheduleRealInfo> nbbmScheduleMap; 60 private static ListMultimap<String, ScheduleRealInfo> nbbmScheduleMap;
61 61
62 - //按线路分组计划用车 62 + // 按营运公司索引的班次数据
  63 + private static ListMultimap<String, ScheduleRealInfo> gsBmScheduleMap;
  64 +
  65 + //按线路索引计划用车
63 private static HashMultimap<String, String> lineNbbmsMap; 66 private static HashMultimap<String, String> lineNbbmsMap;
64 67
65 - //按路牌分组的班次数据 线路编码_路牌名称 ——> 班次list 68 + //按路牌索引班次数据 线路编码_路牌名称 ——> 班次list
66 private static ArrayListMultimap<String, ScheduleRealInfo> lpScheduleMap; 69 private static ArrayListMultimap<String, ScheduleRealInfo> lpScheduleMap;
67 70
68 // 班次主键映射 71 // 班次主键映射
@@ -108,6 +111,7 @@ public class DayOfSchedule { @@ -108,6 +111,7 @@ public class DayOfSchedule {
108 nbbmScheduleMap = ArrayListMultimap.create(); 111 nbbmScheduleMap = ArrayListMultimap.create();
109 nbbmScheduleMap = Multimaps.synchronizedListMultimap(nbbmScheduleMap); 112 nbbmScheduleMap = Multimaps.synchronizedListMultimap(nbbmScheduleMap);
110 113
  114 + gsBmScheduleMap = ArrayListMultimap.create();
111 lpScheduleMap = ArrayListMultimap.create(); 115 lpScheduleMap = ArrayListMultimap.create();
112 lineNbbmsMap = HashMultimap.create(); 116 lineNbbmsMap = HashMultimap.create();
113 117
@@ -629,7 +633,7 @@ public class DayOfSchedule { @@ -629,7 +633,7 @@ public class DayOfSchedule {
629 continue; 633 continue;
630 634
631 //出站既出场,忽略出场班次 635 //出站既出场,忽略出场班次
632 - if (outConfig == 2 && temp.getBcType().equals("out") && (temp.getBcsj()==0 || temp.getJhlcOrig().equals(0)) 636 + if (outConfig == 2 && temp.getBcType().equals("out") && isEmptyMileage(temp)
633 && (!limitPark || parks.contains(temp.getQdzCode()))) 637 && (!limitPark || parks.contains(temp.getQdzCode())))
634 continue; 638 continue;
635 639
@@ -641,6 +645,10 @@ public class DayOfSchedule { @@ -641,6 +645,10 @@ public class DayOfSchedule {
641 return next; 645 return next;
642 } 646 }
643 647
  648 + private boolean isEmptyMileage(ScheduleRealInfo sch) {
  649 + return sch.getBcsj() == 0 || sch.getJhlcOrig().intValue() == 0;
  650 + }
  651 +
644 /** 652 /**
645 * 下一个班次 653 * 下一个班次
646 * 654 *
@@ -688,7 +696,7 @@ public class DayOfSchedule { @@ -688,7 +696,7 @@ public class DayOfSchedule {
688 } 696 }
689 697
690 //出站既出场,忽略出场班次 698 //出站既出场,忽略出场班次
691 - if (outConfig == 2 && temp.getBcType().equals("out") && (temp.getBcsj()==0 || temp.getJhlcOrig().equals(0)) 699 + if (outConfig == 2 && temp.getBcType().equals("out") && isEmptyMileage(temp)
692 && (!limitPark || parks.contains(temp.getQdzCode()))) 700 && (!limitPark || parks.contains(temp.getQdzCode())))
693 continue; 701 continue;
694 702
@@ -1131,4 +1139,26 @@ public class DayOfSchedule { @@ -1131,4 +1139,26 @@ public class DayOfSchedule {
1131 public String sizeString(){ 1139 public String sizeString(){
1132 return id2SchedulMap.size() + "/" + nbbmScheduleMap.size(); 1140 return id2SchedulMap.size() + "/" + nbbmScheduleMap.size();
1133 } 1141 }
  1142 +
  1143 +
  1144 + /**
  1145 + * 按公司编码分组数据
  1146 + */
  1147 + public void groupByGsbm(){
  1148 + Collection<ScheduleRealInfo> all = findAll();
  1149 + ListMultimap<String, ScheduleRealInfo> gsBmMaps = ArrayListMultimap.create();
  1150 +
  1151 + for(ScheduleRealInfo sch : all){
  1152 + gsBmMaps.put(sch.getGsBm(), sch);
  1153 + }
  1154 +
  1155 + if(gsBmMaps.size() > 0){
  1156 + gsBmScheduleMap = null;
  1157 + gsBmScheduleMap = gsBmMaps;
  1158 + }
  1159 + }
  1160 +
  1161 + public Collection<ScheduleRealInfo> findByGsbm(String gsbm){
  1162 + return gsBmScheduleMap.get(gsbm);
  1163 + }
1134 } 1164 }
1135 \ No newline at end of file 1165 \ No newline at end of file
src/main/java/com/bsth/data/schedule/late_adjust/LateAdjustHandle.java
@@ -70,7 +70,7 @@ public class LateAdjustHandle implements ApplicationContextAware { @@ -70,7 +70,7 @@ public class LateAdjustHandle implements ApplicationContextAware {
70 //班次被压入 70 //班次被压入
71 if (lateSchMaps.containsEntry(sch.getClZbh(), sch)) { 71 if (lateSchMaps.containsEntry(sch.getClZbh(), sch)) {
72 72
73 - logger.info("【应发未到 -多个(" + lateSchMaps.get(sch.getClZbh()).size() + ")】班次 " + sch.getClZbh() + " -" + sch.getDfsj() + " -id: " + sch.getId() + " -加入误点调整!"); 73 + logger.info("21【应发未到 -多个(" + lateSchMaps.get(sch.getClZbh()).size() + ")】班次 " + sch.getClZbh() + " -" + sch.getDfsj() + " -id: " + sch.getId() + " -加入误点调整!");
74 //通知客户端 74 //通知客户端
75 sch.setLate2(true); 75 sch.setLate2(true);
76 sendUtils.sendAutoWdtz(sch, old); 76 sendUtils.sendAutoWdtz(sch, old);
@@ -170,8 +170,7 @@ public class LateAdjustHandle implements ApplicationContextAware { @@ -170,8 +170,7 @@ public class LateAdjustHandle implements ApplicationContextAware {
170 return; 170 return;
171 171
172 172
173 - String key = gps.getLineId() + "_" + gps.getUpDown() + "_" + gps.getStopNo()  
174 - , name1 = BasicData.stationCode2NameMap.get(key)//站点名称 173 + String key = gps.getLineId() + "_" + gps.getUpDown() + "_" + gps.getStopNo(), name1 = BasicData.stationCode2NameMap.get(key)//站点名称
175 , name2 = null; 174 , name2 = null;
176 if (StringUtils.isNotEmpty(gps.getCarparkNo())) { 175 if (StringUtils.isNotEmpty(gps.getCarparkNo())) {
177 name2 = BasicData.stationCode2NameMap.get(gps.getCarparkNo()); 176 name2 = BasicData.stationCode2NameMap.get(gps.getCarparkNo());
@@ -196,7 +195,8 @@ public class LateAdjustHandle implements ApplicationContextAware { @@ -196,7 +195,8 @@ public class LateAdjustHandle implements ApplicationContextAware {
196 } 195 }
197 196
198 if (gps.getStationName().equals(sch.getQdzName()) 197 if (gps.getStationName().equals(sch.getQdzName())
199 - || gps.getStopNo().equals(sch.getQdzCode())) { 198 + || gps.getStopNo().equals(sch.getQdzCode())
  199 + || sch.getQdzName().equals(name2)) {
200 200
201 //自动调整待发 到达时间 + 停靠时间 201 //自动调整待发 到达时间 + 停靠时间
202 long dt = Arith.addLong(gps.getTimestamp(), (sch.getLateMinute() * 60 * 1000)); 202 long dt = Arith.addLong(gps.getTimestamp(), (sch.getLateMinute() * 60 * 1000));
@@ -215,6 +215,48 @@ public class LateAdjustHandle implements ApplicationContextAware { @@ -215,6 +215,48 @@ public class LateAdjustHandle implements ApplicationContextAware {
215 } 215 }
216 } 216 }
217 217
  218 +
  219 + /**
  220 + * 车辆到站, 进站 进 的哪个班次,就调该车辆的下一个班次
  221 + *
  222 + * @param gps
  223 + * @param sch public static void carArrive(GpsEntity gps, ScheduleRealInfo sch) {
  224 + * try {
  225 + * if (gps.getInstation() <= 0 || null == sch) {
  226 + * return;
  227 + * }
  228 + * <p>
  229 + * List<ScheduleRealInfo> list = lateSchMaps.get(gps.getNbbm());
  230 + * <p>
  231 + * if (null == list || list.size() == 0 || !list.contains(sch)) {
  232 + * return;
  233 + * }
  234 + * <p>
  235 + * //可能是延迟信号,gps时间没有误点
  236 + * if (gps.getTimestamp() <= sch.getDfsjT()) {
  237 + * sch.setLate2(false);
  238 + * lateSchMaps.remove(sch.getClZbh(), sch);
  239 + * return;
  240 + * }
  241 + * <p>
  242 + * <p>
  243 + * //自动调整待发 到达时间 + 停靠时间
  244 + * long dt = Arith.addLong(gps.getTimestamp(), (sch.getLateMinute() * 60 * 1000));
  245 + * <p>
  246 + * sch.setDfsjAll(dt);
  247 + * sch.setDfAuto(true);
  248 + * //取消应发未到标记
  249 + * sch.setLate2(false);
  250 + * <p>
  251 + * lateSchMaps.remove(sch.getClZbh(), sch);
  252 + * logger.info("【应发未到】车辆到站 " + sch.getClZbh() + " -" + sch.getDfsj() + " -到站时间:" + gps.getTimestamp() + " -停靠时间:" + sch.getLateMinute() + " -自动设置的待发时间:" + dt);
  253 + * } catch (Exception e) {
  254 + * e.printStackTrace();
  255 + * logger.error("late2 car arrive", e);
  256 + * }
  257 + * }
  258 + */
  259 +
218 @Override 260 @Override
219 public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { 261 public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
220 lineConfigData = applicationContext.getBean(LineConfigData.class); 262 lineConfigData = applicationContext.getBean(LineConfigData.class);
src/main/java/com/bsth/data/schedule/thread/ScheduleRefreshThread.java
@@ -77,6 +77,9 @@ public class ScheduleRefreshThread extends Thread{ @@ -77,6 +77,9 @@ public class ScheduleRefreshThread extends Thread{
77 } 77 }
78 } 78 }
79 79
  80 + //按公司编码索引数据
  81 + dayOfSchedule.groupByGsbm();
  82 +
80 //首末班入库(给网关用的数据) 83 //首末班入库(给网关用的数据)
81 FirstAndLastHandler.saveAll(); 84 FirstAndLastHandler.saveAll();
82 } catch (Exception e) { 85 } catch (Exception e) {
src/main/java/com/bsth/entity/Line.java
@@ -98,6 +98,9 @@ public class Line implements Serializable { @@ -98,6 +98,9 @@ public class Line implements Serializable {
98 /** 是否营运 <1:是;0:否> bit length(50)*/ 98 /** 是否营运 <1:是;0:否> bit length(50)*/
99 private Integer sfyy; 99 private Integer sfyy;
100 100
  101 + /** 线路区域 <0:区内,1:区外> bit length(1)*/
  102 + private Integer region;
  103 +
101 /** 起始调度电话 varchar length(50) */ 104 /** 起始调度电话 varchar length(50) */
102 private String startPhone; 105 private String startPhone;
103 106
@@ -498,6 +501,13 @@ public class Line implements Serializable { @@ -498,6 +501,13 @@ public class Line implements Serializable {
498 this.sfyy = sfyy; 501 this.sfyy = sfyy;
499 } 502 }
500 503
  504 + public Integer getRegion() {
  505 + return region;
  506 + }
  507 +
  508 + public void setRegion(Integer region) {
  509 + this.region = region;
  510 + }
501 511
502 public Integer getRemove() { 512 public Integer getRemove() {
503 return remove; 513 return remove;
src/main/java/com/bsth/repository/LineRepository.java
@@ -58,12 +58,12 @@ public interface LineRepository extends BaseRepository&lt;Line, Integer&gt; { @@ -58,12 +58,12 @@ public interface LineRepository extends BaseRepository&lt;Line, Integer&gt; {
58 + "l.startStationEndTime=?9, l.endStationFirstTime=?10, l.endStationEndTime=?11, l.linePlayType=?12, " 58 + "l.startStationEndTime=?9, l.endStationFirstTime=?10, l.endStationEndTime=?11, l.linePlayType=?12, "
59 + "l.openDate=?13, l.es=?14, l.shortName=?15, l.shanghaiLinecode=?16, l.eqLinecode=?17, l.startPhone=?18, " 59 + "l.openDate=?13, l.es=?14, l.shortName=?15, l.shanghaiLinecode=?16, l.eqLinecode=?17, l.startPhone=?18, "
60 + "l.endPhone=?19, l.carSumNumber=?20, l.hvacCarNumber=?21, l.ordCarNumber=?22, l.history=?23, " 60 + "l.endPhone=?19, l.carSumNumber=?20, l.hvacCarNumber=?21, l.ordCarNumber=?22, l.history=?23, "
61 - + "l.descriptions=?24, l.destroy=?25, l.supperLine=?26, l.spacGrade=?27, l.warrantCar=?28 where "  
62 - + "l.lineCode=?29 ") 61 + + "l.descriptions=?24, l.destroy=?25, l.supperLine=?26, l.spacGrade=?27, l.warrantCar=?28, l.region=?30 where "
  62 + + "l.lineCode=?29")
63 public int update(String name, String company, String brancheCompany, String level, String nature, 63 public int update(String name, String company, String brancheCompany, String level, String nature,
64 String startStationName, String endStationName, String startStationFirstTime, String startStationEndTime, 64 String startStationName, String endStationName, String startStationFirstTime, String startStationEndTime,
65 String endStationFirstTime, String endStationEndTime, Integer linePlayType, Date openDate, String es, 65 String endStationFirstTime, String endStationEndTime, Integer linePlayType, Date openDate, String es,
66 String shortName, String shanghaiLinecode, String eqLinecode, String startPhone, String endPhone, 66 String shortName, String shanghaiLinecode, String eqLinecode, String startPhone, String endPhone,
67 Integer carSumNumber, Integer hvacCarNumber, Integer ordCarNumber, String history, String descriptions, 67 Integer carSumNumber, Integer hvacCarNumber, Integer ordCarNumber, String history, String descriptions,
68 - Integer destroy, Integer supperLine, Integer spacGrade, Integer warrantCar, String lineCode); 68 + Integer destroy, Integer supperLine, Integer spacGrade, Integer warrantCar, String lineCode, Integer region);
69 } 69 }
src/main/java/com/bsth/service/impl/LineServiceImpl.java
@@ -79,7 +79,7 @@ public class LineServiceImpl extends BaseServiceImpl&lt;Line, Integer&gt; implements L @@ -79,7 +79,7 @@ public class LineServiceImpl extends BaseServiceImpl&lt;Line, Integer&gt; implements L
79 l.getOpenDate(), l.getEs(), l.getShortName(), l.getShanghaiLinecode(), l.getEqLinecode(), 79 l.getOpenDate(), l.getEs(), l.getShortName(), l.getShanghaiLinecode(), l.getEqLinecode(),
80 l.getStartPhone(), l.getEndPhone(), l.getCarSumNumber(), l.getHvacCarNumber(), l.getOrdCarNumber(), 80 l.getStartPhone(), l.getEndPhone(), l.getCarSumNumber(), l.getHvacCarNumber(), l.getOrdCarNumber(),
81 l.getHistory(), l.getDescriptions(), l.getDestroy(), l.getSupperLine(), l.getSpacGrade(), 81 l.getHistory(), l.getDescriptions(), l.getDestroy(), l.getSupperLine(), l.getSpacGrade(),
82 - l.getWarrantCar(), l.getLineCode()); 82 + l.getWarrantCar(), l.getLineCode(), l.getRegion());
83 if (status==1) { 83 if (status==1) {
84 map.put("status", ResponseCode.SUCCESS); 84 map.put("status", ResponseCode.SUCCESS);
85 } else { 85 } else {
src/main/java/com/bsth/service/impl/TrafficManageServiceImpl.java
@@ -35,6 +35,7 @@ import org.springframework.data.domain.Sort.Direction; @@ -35,6 +35,7 @@ import org.springframework.data.domain.Sort.Direction;
35 import org.springframework.stereotype.Service; 35 import org.springframework.stereotype.Service;
36 36
37 import java.io.*; 37 import java.io.*;
  38 +import java.net.InetAddress;
38 import java.sql.Connection; 39 import java.sql.Connection;
39 import java.sql.PreparedStatement; 40 import java.sql.PreparedStatement;
40 import java.sql.ResultSet; 41 import java.sql.ResultSet;
@@ -530,7 +531,7 @@ public class TrafficManageServiceImpl implements TrafficManageService{ @@ -530,7 +531,7 @@ public class TrafficManageServiceImpl implements TrafficManageService{
530 try { 531 try {
531 //发送邮件 532 //发送邮件
532 EmailBean mail = new EmailBean(); 533 EmailBean mail = new EmailBean();
533 - mail.setSubject("路单日志数据"+date); 534 + mail.setSubject(InetAddress.getLocalHost().getHostAddress()+":路单日志数据"+date);
534 mail.setContent(logSuccess+"<br/>成功数:"+countSuccess+"<br/>" +logFailure+"<br/>失败数:"+countFailure); 535 mail.setContent(logSuccess+"<br/>成功数:"+countSuccess+"<br/>" +logFailure+"<br/>失败数:"+countFailure);
535 sendEmailController.sendMail(emailSendToAddress, mail); 536 sendEmailController.sendMail(emailSendToAddress, mail);
536 logger.info("setLD-sendMail:邮件发送成功!"); 537 logger.info("setLD-sendMail:邮件发送成功!");
@@ -945,8 +946,8 @@ public class TrafficManageServiceImpl implements TrafficManageService{ @@ -945,8 +946,8 @@ public class TrafficManageServiceImpl implements TrafficManageService{
945 DecimalFormat df = new DecimalFormat("######0.000"); 946 DecimalFormat df = new DecimalFormat("######0.000");
946 try { 947 try {
947 String[] idArray = ids.split(","); 948 String[] idArray = ids.split(",");
948 - StringBuffer sBufferA ,sBufferB = null,sBufferC = null;  
949 - double zlc = 0.0f,yylc = 0.0f,singleLc,emptyLc;// 总里程、营运里程、单程、空放里程 949 + StringBuffer sBufferA ,sBufferB ,sBufferC ;
  950 + double zlc,yylc,singleLc,emptyLc;// 总里程、营运里程、单程、空放里程
950 String bcType,sxx;// 班次类型、上下行 951 String bcType,sxx;// 班次类型、上下行
951 // 上传的时刻表集合 952 // 上传的时刻表集合
952 List<TTInfo> ttinfoList = new ArrayList<>(); 953 List<TTInfo> ttinfoList = new ArrayList<>();
@@ -963,6 +964,8 @@ public class TrafficManageServiceImpl implements TrafficManageService{ @@ -963,6 +964,8 @@ public class TrafficManageServiceImpl implements TrafficManageService{
963 if(ttInfo == null) 964 if(ttInfo == null)
964 continue; 965 continue;
965 ttinfoList.add(ttInfo); // 保存时刻表 966 ttinfoList.add(ttInfo); // 保存时刻表
  967 + zlc = 0.0f;
  968 + yylc = 0.0f;
966 // 获得时刻表 969 // 获得时刻表
967 param = new HashMap(); 970 param = new HashMap();
968 param.put("ttinfo.id_eq", ttInfo.getId()); 971 param.put("ttinfo.id_eq", ttInfo.getId());
@@ -1030,13 +1033,13 @@ public class TrafficManageServiceImpl implements TrafficManageService{ @@ -1030,13 +1033,13 @@ public class TrafficManageServiceImpl implements TrafficManageService{
1030 } 1033 }
1031 sBufferC.append("</BCList>"); 1034 sBufferC.append("</BCList>");
1032 sBufferC.append("</SKB>"); 1035 sBufferC.append("</SKB>");
  1036 + sBufferA = new StringBuffer();
  1037 + sBufferA.append("<JHZLC>").append(df.format(zlc)).append("</JHZLC>");
  1038 + sBufferA.append("<JHYYLC>").append(df.format(yylc)).append("</JHYYLC>");
  1039 + sBuffer.append(sBufferA).append(sBufferB).append(sBufferC);
1033 } 1040 }
1034 } 1041 }
1035 -  
1036 - sBufferA = new StringBuffer();  
1037 - sBufferA.append("<JHZLC>").append(df.format(zlc)).append("</JHZLC>");  
1038 - sBufferA.append("<JHYYLC>").append(df.format(yylc)).append("</JHYYLC>");  
1039 - sBuffer.append(sBufferA).append(sBufferB).append(sBufferC).append("</SKBs>"); 1042 + sBuffer.append("</SKBs>");
1040 if(ssop.setSKB(userNameOther, passwordOther, sBuffer.toString()).isSuccess()){ 1043 if(ssop.setSKB(userNameOther, passwordOther, sBuffer.toString()).isSuccess()){
1041 result = "success"; 1044 result = "success";
1042 SKBUploadLogger skbUploadLogger ; 1045 SKBUploadLogger skbUploadLogger ;
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
@@ -236,7 +236,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -236,7 +236,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
236 return rs; 236 return rs;
237 } 237 }
238 else if (!fgsbm.equals(spy.getBrancheCompanyCode())) { 238 else if (!fgsbm.equals(spy.getBrancheCompanyCode())) {
239 - msg = ("【售票员】: " + jGh + "/" + spy.getPersonnelName() + "是" + spy.getBrancheCompany() + "的人员"); 239 + msg = ("【售票员】: " + sGh + "/" + spy.getPersonnelName() + "是" + spy.getBrancheCompany() + "的人员");
240 rs.put("msg", msg); 240 rs.put("msg", msg);
241 rs.put("checkStatus", -1); 241 rs.put("checkStatus", -1);
242 return rs; 242 return rs;
@@ -3473,7 +3473,15 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -3473,7 +3473,15 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
3473 } 3473 }
3474 3474
3475 if (StringUtils.isNotEmpty(cpc.getJsy())) { 3475 if (StringUtils.isNotEmpty(cpc.getJsy())) {
3476 - jGh = cpc.getJsy().split("/")[0]; 3476 + try{
  3477 + jGh = cpc.getJsy().split("/")[0];
  3478 + }catch (Exception e){
  3479 + logger.error("", e);
  3480 + rs.put("msg", "驾驶员参数异常!!");
  3481 + rs.put("status", ResponseCode.ERROR);
  3482 + return rs;
  3483 + }
  3484 +
3477 jName = getPersonName(sch.getGsBm(), jGh); 3485 jName = getPersonName(sch.getGsBm(), jGh);
3478 if (StringUtils.isEmpty(jName)) { 3486 if (StringUtils.isEmpty(jName)) {
3479 rs.put("msg", sch.getXlName() + "所属的公司编码下找不到工号为【" + jGh + "】的驾驶员"); 3487 rs.put("msg", sch.getXlName() + "所属的公司编码下找不到工号为【" + jGh + "】的驾驶员");
@@ -5138,6 +5146,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -5138,6 +5146,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
5138 List<String> leftList = Splitter.on(",").splitToList(leftIdx); 5146 List<String> leftList = Splitter.on(",").splitToList(leftIdx);
5139 List<String> rightList = Splitter.on(",").splitToList(rightIdx); 5147 List<String> rightList = Splitter.on(",").splitToList(rightIdx);
5140 Set<String> lpSet = new HashSet<>(); 5148 Set<String> lpSet = new HashSet<>();
  5149 + Set<String> carSet = new HashSet<>();
5141 5150
5142 List<ScheduleRealInfo> largeList, smallList; 5151 List<ScheduleRealInfo> largeList, smallList;
5143 if (leftList.size() > rightList.size()) { 5152 if (leftList.size() > rightList.size()) {
@@ -5168,6 +5177,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -5168,6 +5177,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
5168 5177
5169 lpSet.add(leftSch.getXlBm() + "_" + leftSch.getLpName()); 5178 lpSet.add(leftSch.getXlBm() + "_" + leftSch.getLpName());
5170 lpSet.add(rightSch.getXlBm() + "_" + rightSch.getLpName()); 5179 lpSet.add(rightSch.getXlBm() + "_" + rightSch.getLpName());
  5180 +
  5181 + carSet.add(leftSch.getClZbh());
  5182 + carSet.add(rightSch.getClZbh());
5171 } 5183 }
5172 5184
5173 //重新计算路牌的起点应到时间 5185 //重新计算路牌的起点应到时间
@@ -5175,6 +5187,12 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -5175,6 +5187,12 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
5175 ts.addAll(dayOfSchedule.updateQdzTimePlan(lpName)); 5187 ts.addAll(dayOfSchedule.updateQdzTimePlan(lpName));
5176 } 5188 }
5177 5189
  5190 + //重新就算车辆当前执行班次
  5191 + for(String nbbm : carSet){
  5192 + dayOfSchedule.reCalcExecPlan(nbbm);
  5193 + }
  5194 +
  5195 +
5178 for (ScheduleRealInfo sch : ts) { 5196 for (ScheduleRealInfo sch : ts) {
5179 dayOfSchedule.save(sch); 5197 dayOfSchedule.save(sch);
5180 } 5198 }
src/main/java/com/bsth/service/schedule/datatools/TTInfoDetailDataToolsImpl.java
@@ -691,6 +691,44 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail @@ -691,6 +691,44 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail
691 sheet.autoSizeColumn(groupCount * 2 + 10); 691 sheet.autoSizeColumn(groupCount * 2 + 10);
692 } 692 }
693 693
  694 + private void createParameterInfoSheet(
  695 + org.apache.poi.ss.usermodel.Workbook wb,
  696 + DTInfos dtInfos, ExcelPoiOperator excelPoiOperator) {
  697 + org.apache.poi.ss.usermodel.Sheet sheet = excelPoiOperator.createWorkBookSheet(wb, "时刻表信息_参数");
  698 +
  699 + //---------------------- 参数对象信息 -----------------------//
  700 + List<ParameterInfo> parameterInfoList = dtInfos.getParameterInfoList();
  701 +
  702 + int _s = parameterInfoList.size() / 2;
  703 + int _y = parameterInfoList.size() % 2;
  704 + // 1行2个参数对象值,1个参数对象对应2列,1列描述,1列值
  705 + int rowCount = _s + (_y == 0 ? 0 : 1);
  706 +
  707 + for (int i = 0; i < rowCount; i++) {
  708 + Row row = excelPoiOperator.createSheetRow(sheet, i);
  709 + for (int j = 0; j < 4; j++) {
  710 + excelPoiOperator.createStringCell(wb, row, (short) j, "");
  711 + }
  712 + }
  713 +
  714 + for (int i = 0; i < parameterInfoList.size(); i++) {
  715 + int row = i / 2;
  716 + int col1 = (i % 2) == 0 ? 0 : 2;
  717 + int col2 = (i % 2) == 0 ? 1 : 3;
  718 +
  719 + ParameterInfo parameterInfo = parameterInfoList.get(i);
  720 +
  721 + sheet.getRow(row).getCell(col1).setCellValue(parameterInfo.getParamItem());
  722 + sheet.getRow(row).getCell(col2).setCellValue(parameterInfo.getParamValue());
  723 + }
  724 +
  725 + sheet.autoSizeColumn(0);
  726 + sheet.autoSizeColumn(1);
  727 + sheet.autoSizeColumn(2);
  728 + sheet.autoSizeColumn(3);
  729 +
  730 + }
  731 +
694 @Override 732 @Override
695 public DataToolsFile exportDynamicTTinfo(DTInfos dtInfos, DataToolsFileType type) throws ScheduleException { 733 public DataToolsFile exportDynamicTTinfo(DTInfos dtInfos, DataToolsFileType type) throws ScheduleException {
696 try { 734 try {
@@ -707,6 +745,7 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail @@ -707,6 +745,7 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail
707 org.apache.poi.ss.usermodel.Workbook wb = excelPoiOperator.createWorkBook(); 745 org.apache.poi.ss.usermodel.Workbook wb = excelPoiOperator.createWorkBook();
708 this.createDynamicTTinfoSheet(wb, dtInfos, excelPoiOperator); 746 this.createDynamicTTinfoSheet(wb, dtInfos, excelPoiOperator);
709 this.createDynamicTTinfoStatSheet(wb, dtInfos, excelPoiOperator); 747 this.createDynamicTTinfoStatSheet(wb, dtInfos, excelPoiOperator);
  748 + this.createParameterInfoSheet(wb, dtInfos, excelPoiOperator);
710 749
711 // wb内存写入文件 750 // wb内存写入文件
712 String filepath = dataToolsProperties.getFileoutputDir() + 751 String filepath = dataToolsProperties.getFileoutputDir() +
src/main/java/com/bsth/service/schedule/datatools/TTinfoDetailDynamicData.java
@@ -14,7 +14,7 @@ import java.util.List; @@ -14,7 +14,7 @@ import java.util.List;
14 public interface TTinfoDetailDynamicData { 14 public interface TTinfoDetailDynamicData {
15 15
16 //---------------------- 生成时刻表用对象(以下) ---------------------// 16 //---------------------- 生成时刻表用对象(以下) ---------------------//
17 - public static enum BcType { // 班次类型枚举 17 + enum BcType { // 班次类型枚举
18 IN("in"), // 进场 18 IN("in"), // 进场
19 OUT("out"), // 出场 19 OUT("out"), // 出场
20 BD("bd"), // 早例保 20 BD("bd"), // 早例保
@@ -37,7 +37,7 @@ public interface TTinfoDetailDynamicData { @@ -37,7 +37,7 @@ public interface TTinfoDetailDynamicData {
37 } 37 }
38 } 38 }
39 39
40 - public static class BcObj { // 班次对象 40 + class BcObj { // 班次对象
41 /** 班次时间 */ 41 /** 班次时间 */
42 private Integer bcsj; 42 private Integer bcsj;
43 /** 停站时间 */ 43 /** 停站时间 */
@@ -175,7 +175,7 @@ public interface TTinfoDetailDynamicData { @@ -175,7 +175,7 @@ public interface TTinfoDetailDynamicData {
175 } 175 }
176 } 176 }
177 177
178 - public static class LpObj { // 路牌对象 178 + class LpObj { // 路牌对象
179 /** 路牌名字 */ 179 /** 路牌名字 */
180 private String lpname; 180 private String lpname;
181 /** 每圈的第一个班次是否上行 */ 181 /** 每圈的第一个班次是否上行 */
@@ -321,7 +321,7 @@ public interface TTinfoDetailDynamicData { @@ -321,7 +321,7 @@ public interface TTinfoDetailDynamicData {
321 321
322 } 322 }
323 323
324 - public static class StatInfo { // 统计数据对象 324 + class StatInfo { // 统计数据对象
325 /** 统计项目 */ 325 /** 统计项目 */
326 private String statItem; 326 private String statItem;
327 /** 统计值 */ 327 /** 统计值 */
@@ -344,11 +344,36 @@ public interface TTinfoDetailDynamicData { @@ -344,11 +344,36 @@ public interface TTinfoDetailDynamicData {
344 } 344 }
345 } 345 }
346 346
347 - public static class DTInfos { // 所有数据信息 347 + class ParameterInfo { // 生成参数对象
  348 + /** 参数项目名称 */
  349 + private String paramItem;
  350 + /** 参数项目值 */
  351 + private String paramValue;
  352 +
  353 + public String getParamItem() {
  354 + return paramItem;
  355 + }
  356 +
  357 + public void setParamItem(String paramItem) {
  358 + this.paramItem = paramItem;
  359 + }
  360 +
  361 + public String getParamValue() {
  362 + return paramValue;
  363 + }
  364 +
  365 + public void setParamValue(String paramValue) {
  366 + this.paramValue = paramValue;
  367 + }
  368 + }
  369 +
  370 + class DTInfos { // 所有数据信息
348 /** 路牌班次数据列表 */ 371 /** 路牌班次数据列表 */
349 private List<LpObj> lpObjList; 372 private List<LpObj> lpObjList;
350 /** 统计数据列表 */ 373 /** 统计数据列表 */
351 private List<StatInfo> statInfoList; 374 private List<StatInfo> statInfoList;
  375 + /** 参数对象信息 */
  376 + private List<ParameterInfo> parameterInfoList;
352 377
353 public List<LpObj> getLpObjList() { 378 public List<LpObj> getLpObjList() {
354 return lpObjList; 379 return lpObjList;
@@ -365,6 +390,14 @@ public interface TTinfoDetailDynamicData { @@ -365,6 +390,14 @@ public interface TTinfoDetailDynamicData {
365 public void setStatInfoList(List<StatInfo> statInfoList) { 390 public void setStatInfoList(List<StatInfo> statInfoList) {
366 this.statInfoList = statInfoList; 391 this.statInfoList = statInfoList;
367 } 392 }
  393 +
  394 + public List<ParameterInfo> getParameterInfoList() {
  395 + return parameterInfoList;
  396 + }
  397 +
  398 + public void setParameterInfoList(List<ParameterInfo> parameterInfoList) {
  399 + this.parameterInfoList = parameterInfoList;
  400 + }
368 } 401 }
369 402
370 //---------------------- 生成时刻表用对象(以上) ---------------------// 403 //---------------------- 生成时刻表用对象(以上) ---------------------//
@@ -375,5 +408,5 @@ public interface TTinfoDetailDynamicData { @@ -375,5 +408,5 @@ public interface TTinfoDetailDynamicData {
375 * @return 408 * @return
376 * @throws ScheduleException 409 * @throws ScheduleException
377 */ 410 */
378 - public DataToolsFile exportDynamicTTinfo(DTInfos dtInfos, DataToolsFileType type) throws ScheduleException; 411 + DataToolsFile exportDynamicTTinfo(DTInfos dtInfos, DataToolsFileType type) throws ScheduleException;
379 } 412 }
src/main/resources/static/pages/base/line/add.html
1 <!-- 片段标题 START --> 1 <!-- 片段标题 START -->
2 <div class="page-head"> 2 <div class="page-head">
3 - <div class="page-title">  
4 - <h1>添加线路</h1>  
5 - </div> 3 + <div class="page-title">
  4 + <h1>添加线路</h1>
  5 + </div>
6 </div> 6 </div>
7 <!-- 片段标题 END --> 7 <!-- 片段标题 END -->
8 8
9 <!-- 线路信息导航栏组件 START --> 9 <!-- 线路信息导航栏组件 START -->
10 <ul class="page-breadcrumb breadcrumb"> 10 <ul class="page-breadcrumb breadcrumb">
11 - <li><a href="/pages/home.html" data-pjax>首页</a> <i class="fa fa-circle"></i></li>  
12 - <li><span class="active">基础信息</span> <i class="fa fa-circle"></i></li>  
13 - <li><a href="/pages/base/line/list.html" data-pjax>线路信息</a> <i class="fa fa-circle"></i></li>  
14 - <li><span class="active">添加线路</span></li> 11 + <li><a href="/pages/home.html" data-pjax>首页</a> <i class="fa fa-circle"></i></li>
  12 + <li><span class="active">基础信息</span> <i class="fa fa-circle"></i></li>
  13 + <li><a href="/pages/base/line/list.html" data-pjax>线路信息</a> <i class="fa fa-circle"></i></li>
  14 + <li><span class="active">添加线路</span></li>
15 </ul> 15 </ul>
16 <!-- 线路信息导航栏组件 END --> 16 <!-- 线路信息导航栏组件 END -->
17 17
18 <!-- 信息容器组件 START --> 18 <!-- 信息容器组件 START -->
19 <div class="portlet light bordered"> 19 <div class="portlet light bordered">
20 -  
21 - <!-- 信息容器组件标题 START -->  
22 - <div class="portlet-title">  
23 - <div class="caption">  
24 - <i class="icon-equalizer font-red-sunglo"></i>  
25 - <span class="caption-subject font-red-sunglo bold uppercase">添加线路</span>  
26 - </div>  
27 - </div>  
28 - <!-- 信息容器组件标题 END -->  
29 -  
30 - <!-- 表单容器组件 START -->  
31 - <div class="portlet-body form">  
32 -  
33 - <!-- line_add_form FORM START -->  
34 - <form action="/line" class="form-horizontal" id="line_add_form" >  
35 -  
36 - <!-- 表单验证错误提示组件 START -->  
37 - <div class="alert alert-danger display-hide">  
38 - <button class="close" data-close="alert"></button>  
39 - 您的输入有误,请检查下面的输入项  
40 - </div>  
41 - <!-- 表单验证错误提示组件 END -->  
42 -  
43 - <!-- 表单字段内容 START -->  
44 - <div class="form-body">  
45 -  
46 - <!-- 表单分组组件 form-group START -->  
47 - <div class="form-group">  
48 - <!-- 线路编码 (* 必填项) START -->  
49 - <div class="col-md-6">  
50 - <label class="control-label col-md-5">  
51 - <span class="required"> * </span>线路编码&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:  
52 - </label>  
53 - <div class="col-md-4">  
54 - <input type="text" class="form-control" name="lineCode" id="lineCodeInput" placeholder="线路编码">  
55 - </div>  
56 - </div>  
57 - <!-- 线路编码 (* 必填项) END -->  
58 -  
59 - <!-- 线路名称 (* 必填项) START -->  
60 - <div class="col-md-6">  
61 - <label class="control-label col-md-5">  
62 - <span class="required"> * </span>线路名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:  
63 - </label>  
64 - <div class="col-md-4">  
65 - <input type="text" class="form-control" name="name" id="nameInput" placeholder="线路名称" />  
66 - <span class="help-block"> 例如 :浦东88路 </span>  
67 - </div>  
68 - </div>  
69 - <!-- 线路名称 (* 必填项) END -->  
70 - </div>  
71 - <!-- 表单分组组件 form-group END -->  
72 -  
73 - <!-- 表单分组组件 form-group START -->  
74 - <div class="form-group">  
75 - <!-- 所属公司 START 在片段线路添加JS模块里初始化select(options值查询的公司表) -->  
76 - <div class="col-md-6">  
77 - <label class="control-label col-md-5">  
78 - <span class="required"> * </span>所属公司&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:  
79 - </label>  
80 - <div class="col-md-4">  
81 - <select name="company" class="form-control" id="companySelect"></select>  
82 - </div>  
83 - </div>  
84 - <!-- 所属公司 END -->  
85 -  
86 - <!-- 所属分公司 START 在片段线路添加JS模块里初始化select(options值查询的公司表) -->  
87 - <div class="col-md-6">  
88 - <label class="control-label col-md-5">  
89 - <span class="required"> * </span>所属分公司&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:  
90 - </label>  
91 - <div class="col-md-4">  
92 - <select name="brancheCompany" class="form-control" id="brancheCompanySelect"></select>  
93 - </div>  
94 - </div>  
95 - <!-- 所属分公司 END -->  
96 - </div>  
97 - <!-- 表单分组组件 form-group END -->  
98 -  
99 - <!-- 表单分组组件 form-group START -->  
100 - <div class="form-group">  
101 - <!-- 线路等级 START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) -->  
102 - <div class="col-md-6">  
103 - <label class="control-label col-md-5">  
104 - <span class="required"> * </span>线路等级&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:  
105 - </label>  
106 - <div class="col-md-4">  
107 - <select name="level" class="form-control" id="levelSelect">  
108 - <option value="">-- 请选择线路等级 --</option>  
109 - <option value="1">一级线路</option>  
110 - <option value="2">二级线路</option>  
111 - <option value="0">未知等级</option>  
112 - </select>  
113 - </div>  
114 - </div>  
115 - <!-- 线路等级 END -->  
116 -  
117 - <!-- 线路性质 START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) -->  
118 - <div class="col-md-6">  
119 - <label class="control-label col-md-5">  
120 - <span class="required"> * </span>线路性质&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:  
121 - </label>  
122 - <div class="col-md-4">  
123 - <select name="nature" class="form-control" id="natureSelect">  
124 - <option value="">-- 请选择线路性质 --</option>  
125 - <option value="lj">路救</option>  
126 - <option value="bc">备车</option>  
127 - <option value="dbc">定班车</option>  
128 - <option value="yxl">夜宵路</option>  
129 - <option value="cgxl">常规线路</option>  
130 - <option value="gjxl">过江线路</option>  
131 - <option value="csbs">穿梭巴士</option>  
132 - <option value="tyxl">特约线路</option>  
133 - <option value="cctxl">村村通线路</option>  
134 - <option value="qt">其他</option>  
135 - </select>  
136 - </div>  
137 - </div>  
138 - <!-- 线路性质 END -->  
139 - </div>  
140 - <!-- 表单分组组件 form-group END -->  
141 -  
142 - <!-- 表单分组组件 form-group START -->  
143 - <div class="form-group">  
144 - <!-- 是否宵夜 START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) -->  
145 - <div class="col-md-6">  
146 - <label class="control-label col-md-5">  
147 - <span class="required"> * </span>是否宵夜&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:  
148 - </label>  
149 - <div class="col-md-4">  
150 - <div class="md-radio-inline">  
151 - <div class="md-radio">  
152 - <input type="radio" id="radio16" name="supperLine" class="md-radiobtn" value="1" data-title="是" >  
153 - <label for="radio16">  
154 - <span></span>  
155 - <span class="check"></span>  
156 - <span class="box"></span> 是  
157 - </label>  
158 - </div>  
159 - <div class="md-radio has-error">  
160 - <input type="radio" id="radio17" name="supperLine" class="md-radiobtn" value="0" data-title="否" checked="checked">  
161 - <label for="radio17" style="color:#FFC0CB">  
162 - <span></span>  
163 - <span class="check"></span>  
164 - <span class="box"></span> 否  
165 - </label>  
166 - </div>  
167 - </div>  
168 - </div>  
169 - </div>  
170 - <!-- 是否宵夜 END -->  
171 -  
172 - <!-- 是否撤销 START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) -->  
173 - <div class="col-md-6">  
174 - <label class="control-label col-md-5">  
175 - <span class="required"> * </span>是否撤销&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:  
176 - </label>  
177 - <div class="col-md-4">  
178 - <div class="md-radio-inline">  
179 - <div class="md-radio">  
180 - <input type="radio" id="radio14" name="destroy" data-title="是" class="md-radiobtn" value="1" >  
181 - <label for="radio14">  
182 - <span></span>  
183 - <span class="check"></span>  
184 - <span class="box"></span> 是  
185 - </label>  
186 - </div>  
187 - <div class="md-radio has-error">  
188 - <input type="radio" id="radio15" name="destroy" class="md-radiobtn" data-title="否" value="0" checked="checked">  
189 - <label for="radio15" style="color:#FFC0CB">  
190 - <span></span>  
191 - <span class="check"></span>  
192 - <span class="box"></span> 否  
193 - </label>  
194 - </div>  
195 - </div>  
196 - </div>  
197 - </div>  
198 - <!-- 是否撤销 START -->  
199 - </div>  
200 - <!-- 表单分组组件 form-group END -->  
201 -  
202 - <!-- 表单分组组件 form-group START -->  
203 - <div class="form-group">  
204 - <!-- 是否营运START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) -->  
205 - <div class="col-md-6">  
206 - <label class="control-label col-md-5">  
207 - <span class="required"> * </span>是否营运线路&nbsp;&nbsp;&nbsp;&nbsp;:  
208 - </label>  
209 - <div class="col-md-4">  
210 - <div class="md-radio-inline">  
211 - <div class="md-radio">  
212 - <input type="radio" id="radio18" name="sfyy" class="md-radiobtn" value="1" data-title="是" checked="checked" >  
213 - <label for="radio18">  
214 - <span></span>  
215 - <span class="check"></span>  
216 - <span class="box"></span> 是  
217 - </label>  
218 - </div>  
219 - <div class="md-radio has-error">  
220 - <input type="radio" id="radio19" name="sfyy" class="md-radiobtn" value="0" data-title="否" >  
221 - <label for="radio19" style="color:#FFC0CB">  
222 - <span></span>  
223 - <span class="check"></span>  
224 - <span class="box"></span> 否  
225 - </label>  
226 - </div>  
227 - </div>  
228 - </div>  
229 - </div>  
230 - <!-- 是否营运 END -->  
231 - <!-- 权证车辆数 START -->  
232 - <div class="col-md-6">  
233 - <label class="control-label col-md-5"> 权证车辆数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>  
234 - <div class="col-md-4">  
235 - <input type="text" class="form-control" name="warrantCar" id="warrantCarInput" placeholder="权证车辆数">  
236 - </div>  
237 - </div>  
238 - <!-- 权证车辆数 END -->  
239 -  
240 - </div>  
241 - <!-- 表单分组组件 form-group END -->  
242 -  
243 - <!-- 表单分组组件 form-group START -->  
244 - <div class="form-group">  
245 - <!-- 起始站名称 START (该字段值会在规划线路站点操作时会去验证是否有值。如果为空,则用线路规划站点的起点站。默认使用该字段填写值) -->  
246 - <div class="col-md-6">  
247 - <label class="control-label col-md-5"><span class="required"> * </span>  
248 - 起始站名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:  
249 - </label>  
250 - <div class="col-md-4">  
251 - <input type="text" class="form-control" name="startStationName" id="startStationNameInput" placeholder="起始站名称">  
252 - <span class="help-block"> 说明 :上行起始站名称 </span>  
253 - </div>  
254 - </div>  
255 - <!-- 起始站名称 END -->  
256 -  
257 - <!-- 终点站名称 START (该字段值会在规划线路站点操作时会去验证是否有值。如果为空,则用线路规划站点的终点站。默认使用该字段填写值) -->  
258 - <div class="col-md-6">  
259 - <label class="control-label col-md-5"><span class="required"> * </span> 终点站名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>  
260 - <div class="col-md-4">  
261 - <input type="text" class="form-control" name="endStationName" id="endStationNameInput" placeholder="终点站名称">  
262 - <span class="help-block"> 说明 :上行终点站名称 </span>  
263 - </div>  
264 - </div>  
265 - <!-- 终点站名称 END -->  
266 - </div>  
267 - <!-- 表单分组组件 form-group END -->  
268 -  
269 - <!-- 表单分组组件 form-group START -->  
270 - <div class="form-group">  
271 - <!-- 起始站首班车时间 (* 必填项) START -->  
272 - <div class="col-md-6">  
273 - <label class="control-label col-md-5"><span class="required"> * </span> 起始站首班时间: </label>  
274 - <div class="col-md-4">  
275 - <input type="text" class="form-control" name="startStationFirstTime" id="startStationFirstTimeInput" placeholder="起始站首班车时间">  
276 - <span class="help-block"> 例如 :06:00 </span>  
277 - </div>  
278 - </div>  
279 - <!-- 起始站首班车时间 END -->  
280 -  
281 - <!-- 起始站末班车时间 (* 必填项) START -->  
282 - <div class="col-md-6">  
283 - <label class="control-label col-md-5"><span class="required"> * </span> 起始站末班时间: </label>  
284 - <div class="col-md-4">  
285 - <!-- <input type="text" class="form-control" name="StartStationEndTime" id="StartStationEndTimeInput" placeholder="起始站末班车时间 "> -->  
286 - <input type="text" class="form-control" name="startStationEndTime" id="endTimeInput" placeholder="起始站末班车时间">  
287 - <span class="help-block"> 例如 :17:00 </span>  
288 - </div>  
289 - </div>  
290 - <!-- 起始站末班车时间 END -->  
291 - </div>  
292 - <!-- 表单分组组件 form-group END -->  
293 -  
294 - <!-- 表单分组组件 form-group START -->  
295 - <div class="form-group">  
296 - <!-- 终点站首班车时间 (* 必填项) START -->  
297 - <div class="col-md-6">  
298 - <label class="control-label col-md-5"><span class="required"> * </span> 终点站首班时间: </label>  
299 - <div class="col-md-4">  
300 - <input type="text" class="form-control" name="endStationFirstTime" id="endStationFirstTimeInput" placeholder="终点站首班车时间">  
301 - <span class="help-block"> 例如 :05:00 </span>  
302 - </div>  
303 - </div>  
304 - <!-- 终点站首班车时间 END -->  
305 -  
306 - <!-- 终点站末班车时间 (* 必填项) START -->  
307 - <div class="col-md-6">  
308 - <label class="control-label col-md-5"><span class="required"> * </span> 终点站末班时间: </label>  
309 - <div class="col-md-4">  
310 - <input type="text" class="form-control" name="endStationEndTime" id="endStationEndTimeInput" placeholder="终点站末班车时间 ">  
311 - <span class="help-block"> 例如 :18:00 </span>  
312 - </div>  
313 - </div>  
314 - <!-- 终点站末班车时间 END -->  
315 - </div>  
316 - <!-- 表单分组组件 form-group END -->  
317 -  
318 - <!-- 表单分组组件 form-group START -->  
319 - <div class="form-group">  
320 - <!-- 线路规划类型 (* 必填项) START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) -->  
321 - <div class="col-md-6">  
322 - <label class="control-label col-md-5"><span class="required"> * </span> 线路规划类型&nbsp;&nbsp;&nbsp;:</label>  
323 - <div class="col-md-4">  
324 - <select name="linePlayType" class="form-control" id="linePlayTypeSelect">  
325 - <option value="">-- 请选择线路类型 --</option>  
326 - <option value="0">双向</option>  
327 - <option value="1">环线</option>  
328 - </select>  
329 - </div>  
330 - </div>  
331 - <!-- 线路规划类型 (* 必填项) END -->  
332 -  
333 - <!--大间隔等级 START -->  
334 - <div class="col-md-6">  
335 - <label class="control-label col-md-5"> 大间隔等级&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>  
336 - <div class="col-md-4">  
337 - <select name="spacGrade" class="form-control" id="spacGradeSelect">  
338 - <option value="">-- 请选择大间隔等级 --</option>  
339 - <option value="1">一级</option>  
340 - <option value="2">二级</option>  
341 - <option value="3">三级</option>  
342 - <option value="4">四级</option>  
343 - <option value="5">五级</option>  
344 - </select>  
345 - </div>  
346 - </div>  
347 - <!-- 大间隔等级END -->  
348 - </div>  
349 - <!-- 表单分组组件 form-group START -->  
350 -  
351 - <!-- 表单分组组件 form-group START -->  
352 - <div class="form-group">  
353 - <!-- 线路简称 START -->  
354 - <div class="col-md-6">  
355 - <label class="control-label col-md-5"> 线路简称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:</label>  
356 - <div class="col-md-4">  
357 - <input type="text" class="form-control" name="shortName" id="shortNameInput" placeholder="线路简称">  
358 - </div>  
359 - </div>  
360 - <!-- 线路简称 END -->  
361 -  
362 - <!-- 英文名称 START -->  
363 - <div class="col-md-6">  
364 - <label class="control-label col-md-5"> 英文名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>  
365 - <div class="col-md-4">  
366 - <input type="text" class="form-control" name="es" id="esInput" placeholder="英文名称">  
367 - </div>  
368 - </div>  
369 - <!-- 英文名称 END -->  
370 - </div>  
371 - <!-- 表单分组组件 form-group END -->  
372 -  
373 - <!-- 表单分组组件 form-group START -->  
374 - <div class="form-group">  
375 - <!-- 上海市线路编码 START -->  
376 - <div class="col-md-6">  
377 - <label class="control-label col-md-5"> 上海市线路编码: </label>  
378 - <div class="col-md-4">  
379 - <input type="text" class="form-control" name="shanghaiLinecode" id="shanghaiLinecodeInput" placeholder="上海市线路编码">  
380 - </div>  
381 - </div>  
382 - <!-- 上海市线路编码 END -->  
383 -  
384 - <!--设备线路编码 START -->  
385 - <div class="col-md-6">  
386 - <label class="control-label col-md-5"> 设备线路编码&nbsp;&nbsp;&nbsp;: </label>  
387 - <div class="col-md-4">  
388 - <input type="text" class="form-control" name="eqLinecode" id="eqLinecodeInput" placeholder="设备线路编码">  
389 - </div>  
390 - </div>  
391 - <!--设备线路编码 END -->  
392 - </div>  
393 - <!-- 表单分组组件 form-group END -->  
394 -  
395 - <!-- 表单分组组件 form-group START -->  
396 - <div class="form-group">  
397 - <!-- 起始站调度电话 START -->  
398 - <div class="col-md-6">  
399 - <label class="control-label col-md-5"> 起始站调度电话: </label>  
400 - <div class="col-md-4">  
401 - <input type="text" class="form-control" name="startPhone" id="startPhoneInput" placeholder="起始站调度电话">  
402 - </div>  
403 - </div>  
404 - <!-- 起始站调度电话 END -->  
405 -  
406 - <!-- 终点站调度电话 START -->  
407 - <div class="col-md-6">  
408 - <label class="control-label col-md-5"> 终点站调度电话: </label>  
409 - <div class="col-md-4">  
410 - <input type="text" class="form-control" name="endPhone" id="startPhoneInput" placeholder="终点站调度电话">  
411 - </div>  
412 - </div>  
413 - <!-- 终点站调度电话 START -->  
414 - </div>  
415 - <!-- 表单分组组件 form-group END -->  
416 -  
417 - <!-- 表单分组组件 form-group START -->  
418 - <div class="form-group">  
419 - <!-- 车辆总数 START -->  
420 - <div class="col-md-6">  
421 - <label class="control-label col-md-5"> 车辆总数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>  
422 - <div class="col-md-4">  
423 - <input type="text" class="form-control" name="carSumNumber" id="carSumNumberInput" placeholder="车辆总数">  
424 - </div>  
425 - </div>  
426 - <!-- 车辆总数 END -->  
427 -  
428 - <!-- 普通车辆数 START -->  
429 - <div class="col-md-6">  
430 - <label class="control-label col-md-5"> 普通车辆数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>  
431 - <div class="col-md-4">  
432 - <input type="text" class="form-control" name="ordCarNumber" id="ordCarNumberInput" placeholder="普通车辆数">  
433 - </div>  
434 - </div>  
435 - <!-- 普通车辆数 END -->  
436 - </div>  
437 - <!-- 表单分组组件 form-group END -->  
438 -  
439 - <!-- 表单分组组件 form-group START -->  
440 - <div class="form-group">  
441 - <!-- 空调车辆数 START -->  
442 - <div class="col-md-6">  
443 - <label class="control-label col-md-5"> 空调车辆数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>  
444 - <div class="col-md-4">  
445 - <input type="text" class="form-control" name="hvacCarNumber" id="hvacCarNumberInput" placeholder="空调车辆数">  
446 - </div>  
447 - </div>  
448 - <!-- 空调车辆数 END -->  
449 -  
450 - <!-- 开辟日期 START -->  
451 - <div class="col-md-6">  
452 - <label class="control-label col-md-5"> 开辟日期&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>  
453 - <div class="col-md-4">  
454 - <input type="text" class="form-control" name="openDate" id="openDateInput" placeholder="开辟日期">  
455 - </div>  
456 - </div>  
457 - <!-- 开辟日期 END -->  
458 - </div>  
459 - <!-- 表单分组组件 form-group END -->  
460 -  
461 - <!-- 表单分组组件 form-group START -->  
462 - <div class="form-group">  
463 - <!-- 线路沿革 START -->  
464 - <div class="col-md-6">  
465 - <label class="control-label col-md-5"> 线路沿革&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>  
466 - <div class="col-md-4">  
467 - <textarea class="form-control" rows="3" name="history" id="historyTextarea" placeholder="线路沿革"></textarea>  
468 - <span class="help-block">日期及内容:如2014-1-1,开辟;2014-5-1,延线;</span>  
469 - </div>  
470 - </div>  
471 - <!-- 线路沿革 END -->  
472 -  
473 - <!-- 描述/说明 START -->  
474 - <div class="col-md-6">  
475 - <label class="control-label col-md-5"> 描述/说明&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>  
476 - <div class="col-md-4">  
477 - <textarea class="form-control" rows="3" name="descriptions" id="descriptionsTextarea" placeholder="描述/说明"></textarea>  
478 - </div>  
479 - </div>  
480 - <!-- 描述/说明 END -->  
481 - </div>  
482 - <!-- 表单分组组件 form-group END -->  
483 - </div>  
484 - <!-- 表单字段内容 END -->  
485 -  
486 - <!-- 表单按钮组件 START -->  
487 - <div class="form-actions">  
488 - <div class="row">  
489 - <div class="col-md-offset-5 col-md-7">  
490 - <button type="submit" class="btn green" id="submintBtn"><i class="fa fa-check"></i> 提交</button>  
491 - <a type="button" class="btn default" href="list.html" data-pjax><i class="fa fa-times"></i> 取消</a>  
492 - </div>  
493 - </div>  
494 - </div>  
495 - <!-- 表单按钮组件 END -->  
496 -  
497 - </form>  
498 - <!-- line_add_form FORM END -->  
499 -  
500 - </div>  
501 - <!-- 表单组件 END -->  
502 - 20 +
  21 + <!-- 信息容器组件标题 START -->
  22 + <div class="portlet-title">
  23 + <div class="caption">
  24 + <i class="icon-equalizer font-red-sunglo"></i>
  25 + <span class="caption-subject font-red-sunglo bold uppercase">添加线路</span>
  26 + </div>
  27 + </div>
  28 + <!-- 信息容器组件标题 END -->
  29 +
  30 + <!-- 表单容器组件 START -->
  31 + <div class="portlet-body form">
  32 +
  33 + <!-- line_add_form FORM START -->
  34 + <form action="/line" class="form-horizontal" id="line_add_form">
  35 +
  36 + <!-- 表单验证错误提示组件 START -->
  37 + <div class="alert alert-danger display-hide">
  38 + <button class="close" data-close="alert"></button>
  39 + 您的输入有误,请检查下面的输入项
  40 + </div>
  41 + <!-- 表单验证错误提示组件 END -->
  42 +
  43 + <!-- 表单字段内容 START -->
  44 + <div class="form-body">
  45 +
  46 + <!-- 表单分组组件 form-group START -->
  47 + <div class="form-group">
  48 + <!-- 线路编码 (* 必填项) START -->
  49 + <div class="col-md-6">
  50 + <label class="control-label col-md-5">
  51 + <span class="required"> * </span>线路编码&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
  52 + </label>
  53 + <div class="col-md-4">
  54 + <input type="text" class="form-control" name="lineCode" id="lineCodeInput"
  55 + placeholder="线路编码">
  56 + </div>
  57 + </div>
  58 + <!-- 线路编码 (* 必填项) END -->
  59 +
  60 + <!-- 线路名称 (* 必填项) START -->
  61 + <div class="col-md-6">
  62 + <label class="control-label col-md-5">
  63 + <span class="required"> * </span>线路名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
  64 + </label>
  65 + <div class="col-md-4">
  66 + <input type="text" class="form-control" name="name" id="nameInput" placeholder="线路名称"/>
  67 + <span class="help-block"> 例如 :浦东88路 </span>
  68 + </div>
  69 + </div>
  70 + <!-- 线路名称 (* 必填项) END -->
  71 + </div>
  72 +
  73 + <!-- 表单分组组件 form-group START -->
  74 + <div class="form-group">
  75 + <!-- 所属公司 START 在片段线路添加JS模块里初始化select(options值查询的公司表) -->
  76 + <div class="col-md-6">
  77 + <label class="control-label col-md-5">
  78 + <span class="required"> * </span>所属公司&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
  79 + </label>
  80 + <div class="col-md-4">
  81 + <select name="company" class="form-control" id="companySelect"></select>
  82 + </div>
  83 + </div>
  84 + <!-- 所属公司 END -->
  85 +
  86 + <!-- 所属分公司 START 在片段线路添加JS模块里初始化select(options值查询的公司表) -->
  87 + <div class="col-md-6">
  88 + <label class="control-label col-md-5">
  89 + <span class="required"> * </span>所属分公司&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
  90 + </label>
  91 + <div class="col-md-4">
  92 + <select name="brancheCompany" class="form-control" id="brancheCompanySelect"></select>
  93 + </div>
  94 + </div>
  95 + <!-- 所属分公司 END -->
  96 + </div>
  97 + <!-- 表单分组组件 form-group END -->
  98 +
  99 + <!-- 表单分组组件 form-group START -->
  100 + <div class="form-group">
  101 + <!-- 线路等级 START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) -->
  102 + <div class="col-md-6">
  103 + <label class="control-label col-md-5">
  104 + <span class="required"> * </span>线路等级&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
  105 + </label>
  106 + <div class="col-md-4">
  107 + <select name="level" class="form-control" id="levelSelect">
  108 + <option value="">-- 请选择线路等级 --</option>
  109 + <option value="1">一级线路</option>
  110 + <option value="2">二级线路</option>
  111 + <option value="0">未知等级</option>
  112 + </select>
  113 + </div>
  114 + </div>
  115 + <!-- 线路等级 END -->
  116 +
  117 + <!-- 线路性质 START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) -->
  118 + <div class="col-md-6">
  119 + <label class="control-label col-md-5">
  120 + <span class="required"> * </span>线路性质&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
  121 + </label>
  122 + <div class="col-md-4">
  123 + <select name="nature" class="form-control" id="natureSelect">
  124 + <option value="">-- 请选择线路性质 --</option>
  125 + <option value="lj">路救</option>
  126 + <option value="bc">备车</option>
  127 + <option value="dbc">定班车</option>
  128 + <option value="yxl">夜宵路</option>
  129 + <option value="cgxl">常规线路</option>
  130 + <option value="gjxl">过江线路</option>
  131 + <option value="csbs">穿梭巴士</option>
  132 + <option value="tyxl">特约线路</option>
  133 + <option value="cctxl">村村通线路</option>
  134 + <option value="qt">其他</option>
  135 + </select>
  136 + </div>
  137 + </div>
  138 + <!-- 线路性质 END -->
  139 + </div>
  140 + <!-- 表单分组组件 form-group END -->
  141 +
  142 + <!-- 表单分组组件 form-group START -->
  143 + <div class="form-group">
  144 + <!-- 是否宵夜 START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) -->
  145 + <div class="col-md-6">
  146 + <label class="control-label col-md-5">
  147 + <span class="required"> * </span>是否宵夜&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
  148 + </label>
  149 + <div class="col-md-4">
  150 + <div class="md-radio-inline">
  151 + <div class="md-radio">
  152 + <input type="radio" id="radio16" name="supperLine" class="md-radiobtn" value="1"
  153 + data-title="是">
  154 + <label for="radio16">
  155 + <span></span>
  156 + <span class="check"></span>
  157 + <span class="box"></span> 是
  158 + </label>
  159 + </div>
  160 + <div class="md-radio has-error">
  161 + <input type="radio" id="radio17" name="supperLine" class="md-radiobtn" value="0"
  162 + data-title="否" checked="checked">
  163 + <label for="radio17" style="color:#FFC0CB">
  164 + <span></span>
  165 + <span class="check"></span>
  166 + <span class="box"></span> 否
  167 + </label>
  168 + </div>
  169 + </div>
  170 + </div>
  171 + </div>
  172 + <!-- 是否宵夜 END -->
  173 +
  174 + <!-- 是否撤销 START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) -->
  175 + <div class="col-md-6">
  176 + <label class="control-label col-md-5">
  177 + <span class="required"> * </span>是否撤销&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
  178 + </label>
  179 + <div class="col-md-4">
  180 + <div class="md-radio-inline">
  181 + <div class="md-radio">
  182 + <input type="radio" id="radio14" name="destroy" data-title="是" class="md-radiobtn"
  183 + value="1">
  184 + <label for="radio14">
  185 + <span></span>
  186 + <span class="check"></span>
  187 + <span class="box"></span> 是
  188 + </label>
  189 + </div>
  190 + <div class="md-radio has-error">
  191 + <input type="radio" id="radio15" name="destroy" class="md-radiobtn" data-title="否"
  192 + value="0" checked="checked">
  193 + <label for="radio15" style="color:#FFC0CB">
  194 + <span></span>
  195 + <span class="check"></span>
  196 + <span class="box"></span> 否
  197 + </label>
  198 + </div>
  199 + </div>
  200 + </div>
  201 + </div>
  202 + <!-- 是否撤销 START -->
  203 + </div>
  204 + <!-- 表单分组组件 form-group END -->
  205 +
  206 + <!-- 表单分组组件 form-group START -->
  207 + <div class="form-group">
  208 + <!-- 是否营运START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) -->
  209 + <div class="col-md-6">
  210 + <label class="control-label col-md-5">
  211 + <span class="required"> * </span>是否营运线路&nbsp;&nbsp;&nbsp;&nbsp;:
  212 + </label>
  213 + <div class="col-md-4">
  214 + <div class="md-radio-inline">
  215 + <div class="md-radio">
  216 + <input type="radio" id="radio18" name="sfyy" class="md-radiobtn" value="1"
  217 + data-title="是" checked="checked">
  218 + <label for="radio18">
  219 + <span></span>
  220 + <span class="check"></span>
  221 + <span class="box"></span> 是
  222 + </label>
  223 + </div>
  224 + <div class="md-radio has-error">
  225 + <input type="radio" id="radio19" name="sfyy" class="md-radiobtn" value="0"
  226 + data-title="否">
  227 + <label for="radio19" style="color:#FFC0CB">
  228 + <span></span>
  229 + <span class="check"></span>
  230 + <span class="box"></span> 否
  231 + </label>
  232 + </div>
  233 + </div>
  234 + </div>
  235 + </div>
  236 + <!-- 是否营运 END -->
  237 + <!-- 权证车辆数 START -->
  238 + <div class="col-md-6">
  239 + <label class="control-label col-md-5">
  240 + 权证车辆数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>
  241 + <div class="col-md-4">
  242 + <input type="text" class="form-control" name="warrantCar" id="warrantCarInput"
  243 + placeholder="权证车辆数">
  244 + </div>
  245 + </div>
  246 + <!-- 权证车辆数 END -->
  247 +
  248 + </div>
  249 + <!-- 表单分组组件 form-group END -->
  250 +
  251 + <!-- 表单分组组件 form-group START -->
  252 + <div class="form-group">
  253 + <!-- 起始站名称 START (该字段值会在规划线路站点操作时会去验证是否有值。如果为空,则用线路规划站点的起点站。默认使用该字段填写值) -->
  254 + <div class="col-md-6">
  255 + <label class="control-label col-md-5"><span class="required"> * </span>
  256 + 起始站名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
  257 + </label>
  258 + <div class="col-md-4">
  259 + <input type="text" class="form-control" name="startStationName" id="startStationNameInput"
  260 + placeholder="起始站名称">
  261 + <span class="help-block"> 说明 :上行起始站名称 </span>
  262 + </div>
  263 + </div>
  264 + <!-- 起始站名称 END -->
  265 +
  266 + <!-- 终点站名称 START (该字段值会在规划线路站点操作时会去验证是否有值。如果为空,则用线路规划站点的终点站。默认使用该字段填写值) -->
  267 + <div class="col-md-6">
  268 + <label class="control-label col-md-5"><span class="required"> * </span> 终点站名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
  269 + </label>
  270 + <div class="col-md-4">
  271 + <input type="text" class="form-control" name="endStationName" id="endStationNameInput"
  272 + placeholder="终点站名称">
  273 + <span class="help-block"> 说明 :上行终点站名称 </span>
  274 + </div>
  275 + </div>
  276 + <!-- 终点站名称 END -->
  277 + </div>
  278 + <!-- 表单分组组件 form-group END -->
  279 +
  280 + <!-- 表单分组组件 form-group START -->
  281 + <div class="form-group">
  282 + <!-- 起始站首班车时间 (* 必填项) START -->
  283 + <div class="col-md-6">
  284 + <label class="control-label col-md-5"><span class="required"> * </span> 起始站首班时间: </label>
  285 + <div class="col-md-4">
  286 + <input type="text" class="form-control" name="startStationFirstTime"
  287 + id="startStationFirstTimeInput" placeholder="起始站首班车时间">
  288 + <span class="help-block"> 例如 :06:00 </span>
  289 + </div>
  290 + </div>
  291 + <!-- 起始站首班车时间 END -->
  292 +
  293 + <!-- 起始站末班车时间 (* 必填项) START -->
  294 + <div class="col-md-6">
  295 + <label class="control-label col-md-5"><span class="required"> * </span> 起始站末班时间: </label>
  296 + <div class="col-md-4">
  297 + <!-- <input type="text" class="form-control" name="StartStationEndTime" id="StartStationEndTimeInput" placeholder="起始站末班车时间 "> -->
  298 + <input type="text" class="form-control" name="startStationEndTime" id="endTimeInput"
  299 + placeholder="起始站末班车时间">
  300 + <span class="help-block"> 例如 :17:00 </span>
  301 + </div>
  302 + </div>
  303 + <!-- 起始站末班车时间 END -->
  304 + </div>
  305 + <!-- 表单分组组件 form-group END -->
  306 +
  307 + <!-- 表单分组组件 form-group START -->
  308 + <div class="form-group">
  309 + <!-- 终点站首班车时间 (* 必填项) START -->
  310 + <div class="col-md-6">
  311 + <label class="control-label col-md-5"><span class="required"> * </span> 终点站首班时间: </label>
  312 + <div class="col-md-4">
  313 + <input type="text" class="form-control" name="endStationFirstTime"
  314 + id="endStationFirstTimeInput" placeholder="终点站首班车时间">
  315 + <span class="help-block"> 例如 :05:00 </span>
  316 + </div>
  317 + </div>
  318 + <!-- 终点站首班车时间 END -->
  319 +
  320 + <!-- 终点站末班车时间 (* 必填项) START -->
  321 + <div class="col-md-6">
  322 + <label class="control-label col-md-5"><span class="required"> * </span> 终点站末班时间: </label>
  323 + <div class="col-md-4">
  324 + <input type="text" class="form-control" name="endStationEndTime" id="endStationEndTimeInput"
  325 + placeholder="终点站末班车时间 ">
  326 + <span class="help-block"> 例如 :18:00 </span>
  327 + </div>
  328 + </div>
  329 + <!-- 终点站末班车时间 END -->
  330 + </div>
  331 + <!-- 表单分组组件 form-group END -->
  332 +
  333 + <!-- 表单分组组件 form-group START -->
  334 + <div class="form-group">
  335 + <!-- 线路规划类型 (* 必填项) START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) -->
  336 + <div class="col-md-6">
  337 + <label class="control-label col-md-5"><span class="required"> * </span> 线路规划类型&nbsp;&nbsp;&nbsp;:</label>
  338 + <div class="col-md-4">
  339 + <select name="linePlayType" class="form-control" id="linePlayTypeSelect">
  340 + <!--<option value="">&#45;&#45; 请选择线路类型 &#45;&#45;</option>-->
  341 + <option value="0">双向</option>
  342 + <option value="1">环线</option>
  343 + </select>
  344 + </div>
  345 + </div>
  346 + <!-- 线路规划类型 (* 必填项) END -->
  347 +
  348 + <!--车辆区域 START -->
  349 + <div class="col-md-6">
  350 + <label class="control-label col-md-5"> <span class="required"> * </span>线路区域&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
  351 + </label>
  352 + <div class="col-md-4">
  353 + <select name="region" class="form-control" id="regionSelect">
  354 + <!--<option value="">&#45;&#45; 请选择车辆区域 &#45;&#45;</option>-->
  355 + <option value="0">区内</option>
  356 + <option value="1">区外</option>
  357 + </select>
  358 + </div>
  359 + </div>
  360 + <!--车辆区域END -->
  361 +
  362 + </div>
  363 + <!-- 表单分组组件 form-group START -->
  364 +
  365 +
  366 + <div class="form-group">
  367 + <!--大间隔等级 START -->
  368 + <div class="col-md-6">
  369 + <label class="control-label col-md-5"> 大间隔等级&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>
  370 + <div class="col-md-4">
  371 + <select name="spacGrade" class="form-control" id="spacGradeSelect">
  372 + <option value="">-- 请选择大间隔等级 --</option>
  373 + <option value="1">一级</option>
  374 + <option value="2">二级</option>
  375 + <option value="3">三级</option>
  376 + <option value="4">四级</option>
  377 + <option value="5">五级</option>
  378 + </select>
  379 + </div>
  380 + </div>
  381 + <!-- 大间隔等级END -->
  382 + </div>
  383 +
  384 + <!-- 表单分组组件 form-group START -->
  385 + <div class="form-group">
  386 + <!-- 线路简称 START -->
  387 + <div class="col-md-6">
  388 + <label class="control-label col-md-5"> 线路简称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:</label>
  389 + <div class="col-md-4">
  390 + <input type="text" class="form-control" name="shortName" id="shortNameInput"
  391 + placeholder="线路简称">
  392 + </div>
  393 + </div>
  394 + <!-- 线路简称 END -->
  395 +
  396 + <!-- 英文名称 START -->
  397 + <div class="col-md-6">
  398 + <label class="control-label col-md-5"> 英文名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>
  399 + <div class="col-md-4">
  400 + <input type="text" class="form-control" name="es" id="esInput" placeholder="英文名称">
  401 + </div>
  402 + </div>
  403 + <!-- 英文名称 END -->
  404 + </div>
  405 + <!-- 表单分组组件 form-group END -->
  406 +
  407 + <!-- 表单分组组件 form-group START -->
  408 + <div class="form-group">
  409 + <!-- 上海市线路编码 START -->
  410 + <div class="col-md-6">
  411 + <label class="control-label col-md-5"> 上海市线路编码: </label>
  412 + <div class="col-md-4">
  413 + <input type="text" class="form-control" name="shanghaiLinecode" id="shanghaiLinecodeInput"
  414 + placeholder="上海市线路编码">
  415 + </div>
  416 + </div>
  417 + <!-- 上海市线路编码 END -->
  418 +
  419 + <!--设备线路编码 START -->
  420 + <div class="col-md-6">
  421 + <label class="control-label col-md-5"> 设备线路编码&nbsp;&nbsp;&nbsp;: </label>
  422 + <div class="col-md-4">
  423 + <input type="text" class="form-control" name="eqLinecode" id="eqLinecodeInput"
  424 + placeholder="设备线路编码">
  425 + </div>
  426 + </div>
  427 + <!--设备线路编码 END -->
  428 + </div>
  429 + <!-- 表单分组组件 form-group END -->
  430 +
  431 + <!-- 表单分组组件 form-group START -->
  432 + <div class="form-group">
  433 + <!-- 起始站调度电话 START -->
  434 + <div class="col-md-6">
  435 + <label class="control-label col-md-5"> 起始站调度电话: </label>
  436 + <div class="col-md-4">
  437 + <input type="text" class="form-control" name="startPhone" id="startPhoneInput"
  438 + placeholder="起始站调度电话">
  439 + </div>
  440 + </div>
  441 + <!-- 起始站调度电话 END -->
  442 +
  443 + <!-- 终点站调度电话 START -->
  444 + <div class="col-md-6">
  445 + <label class="control-label col-md-5"> 终点站调度电话: </label>
  446 + <div class="col-md-4">
  447 + <input type="text" class="form-control" name="endPhone" id="startPhoneInput"
  448 + placeholder="终点站调度电话">
  449 + </div>
  450 + </div>
  451 + <!-- 终点站调度电话 START -->
  452 + </div>
  453 + <!-- 表单分组组件 form-group END -->
  454 +
  455 + <!-- 表单分组组件 form-group START -->
  456 + <div class="form-group">
  457 + <!-- 车辆总数 START -->
  458 + <div class="col-md-6">
  459 + <label class="control-label col-md-5"> 车辆总数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>
  460 + <div class="col-md-4">
  461 + <input type="text" class="form-control" name="carSumNumber" id="carSumNumberInput"
  462 + placeholder="车辆总数">
  463 + </div>
  464 + </div>
  465 + <!-- 车辆总数 END -->
  466 +
  467 + <!-- 普通车辆数 START -->
  468 + <div class="col-md-6">
  469 + <label class="control-label col-md-5"> 普通车辆数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>
  470 + <div class="col-md-4">
  471 + <input type="text" class="form-control" name="ordCarNumber" id="ordCarNumberInput"
  472 + placeholder="普通车辆数">
  473 + </div>
  474 + </div>
  475 + <!-- 普通车辆数 END -->
  476 + </div>
  477 + <!-- 表单分组组件 form-group END -->
  478 +
  479 + <!-- 表单分组组件 form-group START -->
  480 + <div class="form-group">
  481 + <!-- 空调车辆数 START -->
  482 + <div class="col-md-6">
  483 + <label class="control-label col-md-5"> 空调车辆数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>
  484 + <div class="col-md-4">
  485 + <input type="text" class="form-control" name="hvacCarNumber" id="hvacCarNumberInput"
  486 + placeholder="空调车辆数">
  487 + </div>
  488 + </div>
  489 + <!-- 空调车辆数 END -->
  490 +
  491 + <!-- 开辟日期 START -->
  492 + <div class="col-md-6">
  493 + <label class="control-label col-md-5"> 开辟日期&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>
  494 + <div class="col-md-4">
  495 + <input type="text" class="form-control" name="openDate" id="openDateInput"
  496 + placeholder="开辟日期">
  497 + </div>
  498 + </div>
  499 + <!-- 开辟日期 END -->
  500 + </div>
  501 + <!-- 表单分组组件 form-group END -->
  502 +
  503 + <!-- 表单分组组件 form-group START -->
  504 + <div class="form-group">
  505 + <!-- 线路沿革 START -->
  506 + <div class="col-md-6">
  507 + <label class="control-label col-md-5"> 线路沿革&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>
  508 + <div class="col-md-4">
  509 + <textarea class="form-control" rows="3" name="history" id="historyTextarea"
  510 + placeholder="线路沿革"></textarea>
  511 + <span class="help-block">日期及内容:如2014-1-1,开辟;2014-5-1,延线;</span>
  512 + </div>
  513 + </div>
  514 + <!-- 线路沿革 END -->
  515 +
  516 + <!-- 描述/说明 START -->
  517 + <div class="col-md-6">
  518 + <label class="control-label col-md-5"> 描述/说明&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>
  519 + <div class="col-md-4">
  520 + <textarea class="form-control" rows="3" name="descriptions" id="descriptionsTextarea"
  521 + placeholder="描述/说明"></textarea>
  522 + </div>
  523 + </div>
  524 + <!-- 描述/说明 END -->
  525 + </div>
  526 + <!-- 表单分组组件 form-group END -->
  527 + </div>
  528 + <!-- 表单字段内容 END -->
  529 +
  530 + <!-- 表单按钮组件 START -->
  531 + <div class="form-actions">
  532 + <div class="row">
  533 + <div class="col-md-offset-5 col-md-7">
  534 + <button type="submit" class="btn green" id="submintBtn"><i class="fa fa-check"></i> 提交</button>
  535 + <a type="button" class="btn default" href="list.html" data-pjax><i class="fa fa-times"></i>
  536 + 取消</a>
  537 + </div>
  538 + </div>
  539 + </div>
  540 + <!-- 表单按钮组件 END -->
  541 +
  542 + </form>
  543 + <!-- line_add_form FORM END -->
  544 +
  545 + </div>
  546 + <!-- 表单组件 END -->
  547 +
503 </div> 548 </div>
504 <!-- 信息容器组件 END --> 549 <!-- 信息容器组件 END -->
505 550
src/main/resources/static/pages/base/line/details.html
1 <!-- 片段标题 START --> 1 <!-- 片段标题 START -->
2 <div class="page-head"> 2 <div class="page-head">
3 - <div class="page-title">  
4 - <h1>线路详细信息</h1>  
5 - </div> 3 + <div class="page-title">
  4 + <h1>线路详细信息</h1>
  5 + </div>
6 </div> 6 </div>
7 <!-- 片段标题 START --> 7 <!-- 片段标题 START -->
8 8
9 <!-- 线路信息导航栏组件 START --> 9 <!-- 线路信息导航栏组件 START -->
10 <ul class="page-breadcrumb breadcrumb"> 10 <ul class="page-breadcrumb breadcrumb">
11 - <li><a href="/pages/home.html" data-pjax>首页</a> <i class="fa fa-circle"></i></li>  
12 - <li><span class="active">基础信息</span> <i class="fa fa-circle"></i></li>  
13 - <li><a href="/pages/base/line/list.html" data-pjax>线路信息</a> <i class="fa fa-circle"></i></li>  
14 - <li><span class="active">线路详情</span></li> 11 + <li><a href="/pages/home.html" data-pjax>首页</a> <i class="fa fa-circle"></i></li>
  12 + <li><span class="active">基础信息</span> <i class="fa fa-circle"></i></li>
  13 + <li><a href="/pages/base/line/list.html" data-pjax>线路信息</a> <i class="fa fa-circle"></i></li>
  14 + <li><span class="active">线路详情</span></li>
15 </ul> 15 </ul>
16 <!-- 线路信息导航栏组件 START --> 16 <!-- 线路信息导航栏组件 START -->
17 17
18 <!-- 信息容器组件 START --> 18 <!-- 信息容器组件 START -->
19 <div class="portlet light bordered"> 19 <div class="portlet light bordered">
20 20
21 - <!-- 信息容器组件标题 START -->  
22 - <div class="portlet-title">  
23 - <div class="caption">  
24 - <i class="icon-equalizer font-red-sunglo"></i>  
25 - <span class="caption-subject font-red-sunglo bold uppercase">线路详情信息</span>  
26 - </div>  
27 - </div>  
28 - <!-- 信息容器组件标题 END -->  
29 -  
30 - <!-- 表单容器组件 START -->  
31 - <div class="portlet-body form" id="lineDetailsForm">  
32 -  
33 - <!-- START FORM -->  
34 - <form action="/" class="form-horizontal" id="line_details_form" >  
35 -  
36 - <!-- 表单内容 -->  
37 - <div class="form-body">  
38 -  
39 - <!-- 表单分组组件 form-group START -->  
40 - <div class="form-group">  
41 - <!-- 线路编码 (* 必填项) START -->  
42 - <div class="col-md-6">  
43 - <label class="control-label col-md-5">  
44 - <span class="required"> * </span>线路编码&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:  
45 - </label>  
46 - <div class="col-md-4">  
47 - <input type="text" class="form-control" name="lineCode" id="lineCodeInput" placeholder="线路编码">  
48 - </div>  
49 - </div>  
50 - <!-- 线路编码 (* 必填项) END -->  
51 -  
52 - <!-- 线路名称 (* 必填项) START -->  
53 - <div class="col-md-6">  
54 - <label class="control-label col-md-5">  
55 - <span class="required"> * </span>线路名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:  
56 - </label>  
57 - <div class="col-md-4">  
58 - <input type="text" class="form-control" name="name" id="nameInput" placeholder="线路名称" />  
59 - <span class="help-block"> 例如 :浦东88路 </span>  
60 - </div>  
61 - </div>  
62 - <!-- 线路名称 (* 必填项) END -->  
63 - </div>  
64 - <!-- 表单分组组件 form-group END -->  
65 -  
66 - <!-- 表单分组组件 form-group START -->  
67 - <div class="form-group">  
68 - <!-- 所属公司 START 在片段线路添加JS模块里初始化select(options值查询的公司表) -->  
69 - <div class="col-md-6">  
70 - <label class="control-label col-md-5">  
71 - <span class="required"> * </span>所属公司&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:  
72 - </label>  
73 - <div class="col-md-4">  
74 - <select name="company" class="form-control" id="companySelect"></select>  
75 - </div>  
76 - </div>  
77 - <!-- 所属公司 END -->  
78 -  
79 - <!-- 所属分公司 START 在片段线路添加JS模块里初始化select(options值查询的公司表) -->  
80 - <div class="col-md-6">  
81 - <label class="control-label col-md-5">  
82 - <span class="required"> * </span>所属分公司&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:  
83 - </label>  
84 - <div class="col-md-4">  
85 - <select name="brancheCompany" class="form-control" id="brancheCompanySelect"></select>  
86 - </div>  
87 - </div>  
88 - <!-- 所属分公司 END -->  
89 - </div>  
90 - <!-- 表单分组组件 form-group END -->  
91 -  
92 - <!-- 表单分组组件 form-group START -->  
93 - <div class="form-group">  
94 - <!-- 线路等级 START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) -->  
95 - <div class="col-md-6">  
96 - <label class="control-label col-md-5">  
97 - <span class="required"> * </span>线路等级&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:  
98 - </label>  
99 - <div class="col-md-4">  
100 - <select name="level" class="form-control" id="levelSelect">  
101 - <option value="">-- 请选择线路等级 --</option>  
102 - <option value="1">一级线路</option>  
103 - <option value="2">二级线路</option>  
104 - <option value="0">未知等级</option>  
105 - </select>  
106 - </div>  
107 - </div>  
108 - <!-- 线路等级 END -->  
109 -  
110 - <!-- 线路性质 START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) -->  
111 - <div class="col-md-6">  
112 - <label class="control-label col-md-5">  
113 - <span class="required"> * </span>线路性质&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:  
114 - </label>  
115 - <div class="col-md-4">  
116 - <select name="nature" class="form-control" id="natureSelect">  
117 - <option value="">-- 请选择线路性质 --</option>  
118 - <option value="lj">路救</option>  
119 - <option value="bc">备车</option>  
120 - <option value="dbc">定班车</option>  
121 - <option value="yxl">夜宵路</option>  
122 - <option value="cgxl">常规线路</option>  
123 - <option value="gjxl">过江线路</option>  
124 - <option value="csbs">穿梭巴士</option>  
125 - <option value="tyxl">特约线路</option>  
126 - <option value="cctxl">村村通线路</option>  
127 - <option value="qt">其他</option>  
128 - </select>  
129 - </div>  
130 - </div>  
131 - <!-- 线路性质 END -->  
132 - </div>  
133 - <!-- 表单分组组件 form-group END -->  
134 -  
135 - <!-- 表单分组组件 form-group START -->  
136 - <div class="form-group">  
137 - <!-- 是否宵夜 START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) -->  
138 - <div class="col-md-6">  
139 - <label class="control-label col-md-5">  
140 - <span class="required"> * </span>是否宵夜&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:  
141 - </label>  
142 - <div class="col-md-4">  
143 - <div class="md-radio-inline">  
144 - <div class="md-radio">  
145 - <input type="radio" id="radio16" name="supperLine" class="md-radiobtn" value="1" data-title="是" >  
146 - <label for="radio16">  
147 - <span></span>  
148 - <span class="check"></span>  
149 - <span class="box"></span> 是  
150 - </label>  
151 - </div>  
152 - <div class="md-radio has-error">  
153 - <input type="radio" id="radio17" name="supperLine" class="md-radiobtn" value="0" data-title="否" checked="checked">  
154 - <label for="radio17" style="color:#FFC0CB">  
155 - <span></span>  
156 - <span class="check"></span>  
157 - <span class="box"></span> 否  
158 - </label>  
159 - </div>  
160 - </div>  
161 - </div>  
162 - </div>  
163 - <!-- 是否宵夜 END -->  
164 -  
165 - <!-- 是否撤销 START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) -->  
166 - <div class="col-md-6">  
167 - <label class="control-label col-md-5">  
168 - <span class="required"> * </span>是否撤销&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:  
169 - </label>  
170 - <div class="col-md-4">  
171 - <div class="md-radio-inline">  
172 - <div class="md-radio">  
173 - <input type="radio" id="radio14" name="destroy" data-title="是" class="md-radiobtn" value="1" >  
174 - <label for="radio14">  
175 - <span></span>  
176 - <span class="check"></span>  
177 - <span class="box"></span> 是  
178 - </label>  
179 - </div>  
180 - <div class="md-radio has-error">  
181 - <input type="radio" id="radio15" name="destroy" class="md-radiobtn" data-title="否" value="0" checked="checked">  
182 - <label for="radio15" style="color:#FFC0CB">  
183 - <span></span>  
184 - <span class="check"></span>  
185 - <span class="box"></span> 否  
186 - </label>  
187 - </div>  
188 - </div>  
189 - </div>  
190 - </div>  
191 - <!-- 是否撤销 START -->  
192 - </div>  
193 - <!-- 表单分组组件 form-group END -->  
194 -  
195 - <!-- 表单分组组件 form-group START -->  
196 - <div class="form-group">  
197 - <!-- 起始站名称 START (该字段值会在规划线路站点操作时会去验证是否有值。如果为空,则用线路规划站点的起点站。默认使用该字段填写值) -->  
198 - <div class="col-md-6">  
199 - <label class="control-label col-md-5"><span class="required"> * </span>  
200 - 起始站名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:  
201 - </label>  
202 - <div class="col-md-4">  
203 - <input type="text" class="form-control" name="startStationName" id="startStationNameInput" placeholder="起始站名称">  
204 - <span class="help-block"> 说明 :上行起始站名称 </span>  
205 - </div>  
206 - </div>  
207 - <!-- 起始站名称 END -->  
208 -  
209 - <!-- 终点站名称 START (该字段值会在规划线路站点操作时会去验证是否有值。如果为空,则用线路规划站点的终点站。默认使用该字段填写值) -->  
210 - <div class="col-md-6">  
211 - <label class="control-label col-md-5"><span class="required"> * </span> 终点站名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>  
212 - <div class="col-md-4">  
213 - <input type="text" class="form-control" name="endStationName" id="endStationNameInput" placeholder="终点站名称">  
214 - <span class="help-block"> 说明 :上行终点站名称 </span>  
215 - </div>  
216 - </div>  
217 - <!-- 终点站名称 END -->  
218 - </div>  
219 - <!-- 表单分组组件 form-group END -->  
220 -  
221 - <!-- 表单分组组件 form-group START -->  
222 - <div class="form-group">  
223 - <!-- 起始站首班车时间 (* 必填项) START -->  
224 - <div class="col-md-6">  
225 - <label class="control-label col-md-5"><span class="required"> * </span> 起始站首班时间: </label>  
226 - <div class="col-md-4">  
227 - <input type="text" class="form-control" name="startStationFirstTime" id="startStationFirstTimeInput" placeholder="起始站首班车时间">  
228 - <span class="help-block"> 例如 :06:00 </span>  
229 - </div>  
230 - </div>  
231 - <!-- 起始站首班车时间 END -->  
232 -  
233 - <!-- 起始站末班车时间 (* 必填项) START -->  
234 - <div class="col-md-6">  
235 - <label class="control-label col-md-5"><span class="required"> * </span> 起始站末班时间: </label>  
236 - <div class="col-md-4">  
237 - <!-- <input type="text" class="form-control" name="StartStationEndTime" id="StartStationEndTimeInput" placeholder="起始站末班车时间 "> -->  
238 - <input type="text" class="form-control" name="startStationEndTime" id="endTimeInput" placeholder="起始站末班车时间">  
239 - <span class="help-block"> 例如 :17:00 </span>  
240 - </div>  
241 - </div>  
242 - <!-- 起始站末班车时间 END -->  
243 - </div>  
244 - <!-- 表单分组组件 form-group END -->  
245 -  
246 - <!-- 表单分组组件 form-group START -->  
247 - <div class="form-group">  
248 - <!-- 终点站首班车时间 (* 必填项) START -->  
249 - <div class="col-md-6">  
250 - <label class="control-label col-md-5"><span class="required"> * </span> 终点站首班时间: </label>  
251 - <div class="col-md-4">  
252 - <input type="text" class="form-control" name="endStationFirstTime" id="endStationFirstTimeInput" placeholder="终点站首班车时间">  
253 - <span class="help-block"> 例如 :05:00 </span>  
254 - </div>  
255 - </div>  
256 - <!-- 终点站首班车时间 END -->  
257 -  
258 - <!-- 终点站末班车时间 (* 必填项) START -->  
259 - <div class="col-md-6">  
260 - <label class="control-label col-md-5"><span class="required"> * </span> 终点站末班时间: </label>  
261 - <div class="col-md-4">  
262 - <input type="text" class="form-control" name="endStationEndTime" id="endStationEndTimeInput" placeholder="终点站末班车时间 ">  
263 - <span class="help-block"> 例如 :18:00 </span>  
264 - </div>  
265 - </div>  
266 - <!-- 终点站末班车时间 END -->  
267 - </div>  
268 - <!-- 表单分组组件 form-group END -->  
269 -  
270 - <!-- 表单分组组件 form-group START -->  
271 - <div class="form-group">  
272 - <!-- 线路规划类型 (* 必填项) START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) -->  
273 - <div class="col-md-6">  
274 - <label class="control-label col-md-5"><span class="required"> * </span> 线路规划类型&nbsp;&nbsp;&nbsp;:</label>  
275 - <div class="col-md-4">  
276 - <select name="linePlayType" class="form-control" id="linePlayTypeSelect">  
277 - <option value="">-- 请选择线路类型 --</option>  
278 - <option value="0">双向</option>  
279 - <option value="1">环线</option>  
280 - </select>  
281 - </div>  
282 - </div>  
283 - <!-- 线路规划类型 (* 必填项) END -->  
284 -  
285 - <!--大间隔等级 START -->  
286 - <div class="col-md-6">  
287 - <label class="control-label col-md-5"> 大间隔等级&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>  
288 - <div class="col-md-4">  
289 - <select name="spacGrade" class="form-control" id="spacGradeSelect">  
290 - <option value="">-- 请选择大间隔等级 --</option>  
291 - <option value="1">一级</option>  
292 - <option value="2">二级</option>  
293 - <option value="3">三级</option>  
294 - <option value="4">四级</option>  
295 - <option value="5">五级</option>  
296 - </select>  
297 - </div>  
298 - </div>  
299 - <!-- 大间隔等级END -->  
300 - </div>  
301 - <!-- 表单分组组件 form-group START -->  
302 -  
303 - <!-- 表单分组组件 form-group START -->  
304 - <div class="form-group">  
305 - <!-- 线路简称 START -->  
306 - <div class="col-md-6">  
307 - <label class="control-label col-md-5"> 线路简称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:</label>  
308 - <div class="col-md-4">  
309 - <input type="text" class="form-control" name="shortName" id="shortNameInput" placeholder="线路简称">  
310 - </div>  
311 - </div>  
312 - <!-- 线路简称 END -->  
313 -  
314 - <!-- 英文名称 START -->  
315 - <div class="col-md-6">  
316 - <label class="control-label col-md-5"> 英文名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>  
317 - <div class="col-md-4">  
318 - <input type="text" class="form-control" name="es" id="esInput" placeholder="英文名称">  
319 - </div>  
320 - </div>  
321 - <!-- 英文名称 END -->  
322 - </div>  
323 - <!-- 表单分组组件 form-group END -->  
324 -  
325 - <!-- 表单分组组件 form-group START -->  
326 - <div class="form-group">  
327 - <!-- 上海市线路编码 START -->  
328 - <div class="col-md-6">  
329 - <label class="control-label col-md-5"> 上海市线路编码: </label>  
330 - <div class="col-md-4">  
331 - <input type="text" class="form-control" name="shanghaiLinecode" id="shanghaiLinecodeInput" placeholder="上海市线路编码">  
332 - </div>  
333 - </div>  
334 - <!-- 上海市线路编码 END -->  
335 -  
336 - <!--设备线路编码 START -->  
337 - <div class="col-md-6">  
338 - <label class="control-label col-md-5"> 设备线路编码&nbsp;&nbsp;&nbsp;: </label>  
339 - <div class="col-md-4">  
340 - <input type="text" class="form-control" name="eqLinecode" id="eqLinecodeInput" placeholder="设备线路编码">  
341 - </div>  
342 - </div>  
343 - <!--设备线路编码 END -->  
344 - </div>  
345 - <!-- 表单分组组件 form-group END -->  
346 -  
347 - <!-- 表单分组组件 form-group START -->  
348 - <div class="form-group">  
349 - <!-- 起始站调度电话 START -->  
350 - <div class="col-md-6">  
351 - <label class="control-label col-md-5"> 起始站调度电话: </label>  
352 - <div class="col-md-4">  
353 - <input type="text" class="form-control" name="startPhone" id="startPhoneInput" placeholder="起始站调度电话">  
354 - </div>  
355 - </div>  
356 - <!-- 起始站调度电话 END -->  
357 -  
358 - <!-- 终点站调度电话 START -->  
359 - <div class="col-md-6">  
360 - <label class="control-label col-md-5"> 终点站调度电话: </label>  
361 - <div class="col-md-4">  
362 - <input type="text" class="form-control" name="endPhone" id="startPhoneInput" placeholder="终点站调度电话">  
363 - </div>  
364 - </div>  
365 - <!-- 终点站调度电话 START -->  
366 - </div>  
367 - <!-- 表单分组组件 form-group END -->  
368 -  
369 - <!-- 表单分组组件 form-group START -->  
370 - <div class="form-group">  
371 - <!-- 车辆总数 START -->  
372 - <div class="col-md-6">  
373 - <label class="control-label col-md-5"> 车辆总数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>  
374 - <div class="col-md-4">  
375 - <input type="text" class="form-control" name="carSumNumber" id="carSumNumberInput" placeholder="车辆总数">  
376 - </div>  
377 - </div>  
378 - <!-- 车辆总数 END -->  
379 -  
380 - <!-- 普通车辆数 START -->  
381 - <div class="col-md-6">  
382 - <label class="control-label col-md-5"> 普通车辆数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>  
383 - <div class="col-md-4">  
384 - <input type="text" class="form-control" name="ordCarNumber" id="ordCarNumberInput" placeholder="普通车辆数">  
385 - </div>  
386 - </div>  
387 - <!-- 普通车辆数 END -->  
388 - </div>  
389 - <!-- 表单分组组件 form-group END -->  
390 -  
391 - <!-- 表单分组组件 form-group START -->  
392 - <div class="form-group">  
393 - <!-- 空调车辆数 START -->  
394 - <div class="col-md-6">  
395 - <label class="control-label col-md-5"> 空调车辆数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>  
396 - <div class="col-md-4">  
397 - <input type="text" class="form-control" name="hvacCarNumber" id="hvacCarNumberInput" placeholder="空调车辆数">  
398 - </div>  
399 - </div>  
400 - <!-- 空调车辆数 END -->  
401 - <!-- 开辟日期 START -->  
402 - <div class="col-md-6">  
403 - <label class="control-label col-md-5"> 开辟日期&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>  
404 - <div class="col-md-4">  
405 - <input type="text" class="form-control" name="openDate" id="openDateInput" placeholder="开辟日期">  
406 - </div>  
407 - </div>  
408 - <!-- 开辟日期 END -->  
409 - </div>  
410 - <!-- 表单分组组件 form-group END -->  
411 - <!-- 表单分组组件 form-group START -->  
412 - <div class="form-group">  
413 - <!-- 权证车辆数 START -->  
414 - <div class="col-md-6">  
415 - <label class="control-label col-md-5"> 权证车辆数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>  
416 - <div class="col-md-4">  
417 - <input type="text" class="form-control" name="warrantCar" id="warrantCarInput" placeholder="权证车辆数">  
418 - </div>  
419 - </div>  
420 - <!-- 权证车辆数 END -->  
421 - </div>  
422 - <!-- 表单分组组件 form-group END -->  
423 - <!-- 表单分组组件 form-group START -->  
424 - <div class="form-group">  
425 - <!-- 线路沿革 START -->  
426 - <div class="col-md-6">  
427 - <label class="control-label col-md-5"> 线路沿革&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>  
428 - <div class="col-md-4">  
429 - <textarea class="form-control" rows="3" name="history" id="historyTextarea" placeholder="线路沿革"></textarea>  
430 - <span class="help-block">日期及内容:如2014-1-1,开辟;2014-5-1,延线;</span>  
431 - </div>  
432 - </div>  
433 - <!-- 线路沿革 END -->  
434 -  
435 - <!-- 描述/说明 START -->  
436 - <div class="col-md-6">  
437 - <label class="control-label col-md-5"> 描述/说明&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>  
438 - <div class="col-md-4">  
439 - <textarea class="form-control" rows="3" name="descriptions" id="descriptionsTextarea" placeholder="描述/说明"></textarea>  
440 - </div>  
441 - </div>  
442 - <!-- 描述/说明 END -->  
443 - </div>  
444 - <!-- 表单分组组件 form-group END -->  
445 - </div>  
446 -  
447 - <!-- 表单按钮组件 START -->  
448 - <div class="form-actions">  
449 - <div class="row">  
450 - <div class="col-md-offset-4 col-md-5">  
451 - <a type="button" class="btn default" href="list.html" style="margin-left: 35%;" data-pjax><i class="fa fa-reply"></i> 返回</a>  
452 - </div>  
453 - </div>  
454 - </div>  
455 - <!-- 表单按钮组件 END -->  
456 -  
457 - </form>  
458 - <!-- END FORM-->  
459 -  
460 - </div>  
461 - <!-- 表单组件 END -->  
462 - 21 + <!-- 信息容器组件标题 START -->
  22 + <div class="portlet-title">
  23 + <div class="caption">
  24 + <i class="icon-equalizer font-red-sunglo"></i>
  25 + <span class="caption-subject font-red-sunglo bold uppercase">线路详情信息</span>
  26 + </div>
  27 + </div>
  28 + <!-- 信息容器组件标题 END -->
  29 +
  30 + <!-- 表单容器组件 START -->
  31 + <div class="portlet-body form" id="lineDetailsForm">
  32 +
  33 + <!-- START FORM -->
  34 + <form action="/" class="form-horizontal" id="line_details_form">
  35 +
  36 + <!-- 表单内容 -->
  37 + <div class="form-body">
  38 +
  39 + <!-- 表单分组组件 form-group START -->
  40 + <div class="form-group">
  41 + <!-- 线路编码 (* 必填项) START -->
  42 + <div class="col-md-6">
  43 + <label class="control-label col-md-5">
  44 + <span class="required"> * </span>线路编码&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
  45 + </label>
  46 + <div class="col-md-4">
  47 + <input type="text" class="form-control" name="lineCode" id="lineCodeInput"
  48 + placeholder="线路编码">
  49 + </div>
  50 + </div>
  51 + <!-- 线路编码 (* 必填项) END -->
  52 +
  53 + <!-- 线路名称 (* 必填项) START -->
  54 + <div class="col-md-6">
  55 + <label class="control-label col-md-5">
  56 + <span class="required"> * </span>线路名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
  57 + </label>
  58 + <div class="col-md-4">
  59 + <input type="text" class="form-control" name="name" id="nameInput" placeholder="线路名称"/>
  60 + <span class="help-block"> 例如 :浦东88路 </span>
  61 + </div>
  62 + </div>
  63 + <!-- 线路名称 (* 必填项) END -->
  64 + </div>
  65 + <!-- 表单分组组件 form-group END -->
  66 +
  67 + <!-- 表单分组组件 form-group START -->
  68 + <div class="form-group">
  69 + <!-- 所属公司 START 在片段线路添加JS模块里初始化select(options值查询的公司表) -->
  70 + <div class="col-md-6">
  71 + <label class="control-label col-md-5">
  72 + <span class="required"> * </span>所属公司&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
  73 + </label>
  74 + <div class="col-md-4">
  75 + <select name="company" class="form-control" id="companySelect"></select>
  76 + </div>
  77 + </div>
  78 + <!-- 所属公司 END -->
  79 +
  80 + <!-- 所属分公司 START 在片段线路添加JS模块里初始化select(options值查询的公司表) -->
  81 + <div class="col-md-6">
  82 + <label class="control-label col-md-5">
  83 + <span class="required"> * </span>所属分公司&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
  84 + </label>
  85 + <div class="col-md-4">
  86 + <select name="brancheCompany" class="form-control" id="brancheCompanySelect"></select>
  87 + </div>
  88 + </div>
  89 + <!-- 所属分公司 END -->
  90 + </div>
  91 + <!-- 表单分组组件 form-group END -->
  92 +
  93 + <!-- 表单分组组件 form-group START -->
  94 + <div class="form-group">
  95 + <!-- 线路等级 START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) -->
  96 + <div class="col-md-6">
  97 + <label class="control-label col-md-5">
  98 + <span class="required"> * </span>线路等级&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
  99 + </label>
  100 + <div class="col-md-4">
  101 + <select name="level" class="form-control" id="levelSelect">
  102 + <option value="">-- 请选择线路等级 --</option>
  103 + <option value="1">一级线路</option>
  104 + <option value="2">二级线路</option>
  105 + <option value="0">未知等级</option>
  106 + </select>
  107 + </div>
  108 + </div>
  109 + <!-- 线路等级 END -->
  110 +
  111 + <!-- 线路性质 START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) -->
  112 + <div class="col-md-6">
  113 + <label class="control-label col-md-5">
  114 + <span class="required"> * </span>线路性质&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
  115 + </label>
  116 + <div class="col-md-4">
  117 + <select name="nature" class="form-control" id="natureSelect">
  118 + <option value="">-- 请选择线路性质 --</option>
  119 + <option value="lj">路救</option>
  120 + <option value="bc">备车</option>
  121 + <option value="dbc">定班车</option>
  122 + <option value="yxl">夜宵路</option>
  123 + <option value="cgxl">常规线路</option>
  124 + <option value="gjxl">过江线路</option>
  125 + <option value="csbs">穿梭巴士</option>
  126 + <option value="tyxl">特约线路</option>
  127 + <option value="cctxl">村村通线路</option>
  128 + <option value="qt">其他</option>
  129 + </select>
  130 + </div>
  131 + </div>
  132 + <!-- 线路性质 END -->
  133 + </div>
  134 + <!-- 表单分组组件 form-group END -->
  135 +
  136 + <!-- 表单分组组件 form-group START -->
  137 + <div class="form-group">
  138 + <!-- 是否宵夜 START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) -->
  139 + <div class="col-md-6">
  140 + <label class="control-label col-md-5">
  141 + <span class="required"> * </span>是否宵夜&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
  142 + </label>
  143 + <div class="col-md-4">
  144 + <div class="md-radio-inline">
  145 + <div class="md-radio">
  146 + <input type="radio" id="radio16" name="supperLine" class="md-radiobtn" value="1"
  147 + data-title="是">
  148 + <label for="radio16">
  149 + <span></span>
  150 + <span class="check"></span>
  151 + <span class="box"></span> 是
  152 + </label>
  153 + </div>
  154 + <div class="md-radio has-error">
  155 + <input type="radio" id="radio17" name="supperLine" class="md-radiobtn" value="0"
  156 + data-title="否" checked="checked">
  157 + <label for="radio17" style="color:#FFC0CB">
  158 + <span></span>
  159 + <span class="check"></span>
  160 + <span class="box"></span> 否
  161 + </label>
  162 + </div>
  163 + </div>
  164 + </div>
  165 + </div>
  166 + <!-- 是否宵夜 END -->
  167 +
  168 + <!-- 是否撤销 START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) -->
  169 + <div class="col-md-6">
  170 + <label class="control-label col-md-5">
  171 + <span class="required"> * </span>是否撤销&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
  172 + </label>
  173 + <div class="col-md-4">
  174 + <div class="md-radio-inline">
  175 + <div class="md-radio">
  176 + <input type="radio" id="radio14" name="destroy" data-title="是" class="md-radiobtn"
  177 + value="1">
  178 + <label for="radio14">
  179 + <span></span>
  180 + <span class="check"></span>
  181 + <span class="box"></span> 是
  182 + </label>
  183 + </div>
  184 + <div class="md-radio has-error">
  185 + <input type="radio" id="radio15" name="destroy" class="md-radiobtn" data-title="否"
  186 + value="0" checked="checked">
  187 + <label for="radio15" style="color:#FFC0CB">
  188 + <span></span>
  189 + <span class="check"></span>
  190 + <span class="box"></span> 否
  191 + </label>
  192 + </div>
  193 + </div>
  194 + </div>
  195 + </div>
  196 + <!-- 是否撤销 START -->
  197 + </div>
  198 + <!-- 表单分组组件 form-group END -->
  199 +
  200 + <!-- 表单分组组件 form-group START -->
  201 + <div class="form-group">
  202 + <!-- 起始站名称 START (该字段值会在规划线路站点操作时会去验证是否有值。如果为空,则用线路规划站点的起点站。默认使用该字段填写值) -->
  203 + <div class="col-md-6">
  204 + <label class="control-label col-md-5"><span class="required"> * </span>
  205 + 起始站名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
  206 + </label>
  207 + <div class="col-md-4">
  208 + <input type="text" class="form-control" name="startStationName" id="startStationNameInput"
  209 + placeholder="起始站名称">
  210 + <span class="help-block"> 说明 :上行起始站名称 </span>
  211 + </div>
  212 + </div>
  213 + <!-- 起始站名称 END -->
  214 +
  215 + <!-- 终点站名称 START (该字段值会在规划线路站点操作时会去验证是否有值。如果为空,则用线路规划站点的终点站。默认使用该字段填写值) -->
  216 + <div class="col-md-6">
  217 + <label class="control-label col-md-5"><span class="required"> * </span> 终点站名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
  218 + </label>
  219 + <div class="col-md-4">
  220 + <input type="text" class="form-control" name="endStationName" id="endStationNameInput"
  221 + placeholder="终点站名称">
  222 + <span class="help-block"> 说明 :上行终点站名称 </span>
  223 + </div>
  224 + </div>
  225 + <!-- 终点站名称 END -->
  226 + </div>
  227 + <!-- 表单分组组件 form-group END -->
  228 +
  229 + <!-- 表单分组组件 form-group START -->
  230 + <div class="form-group">
  231 + <!-- 起始站首班车时间 (* 必填项) START -->
  232 + <div class="col-md-6">
  233 + <label class="control-label col-md-5"><span class="required"> * </span> 起始站首班时间: </label>
  234 + <div class="col-md-4">
  235 + <input type="text" class="form-control" name="startStationFirstTime"
  236 + id="startStationFirstTimeInput" placeholder="起始站首班车时间">
  237 + <span class="help-block"> 例如 :06:00 </span>
  238 + </div>
  239 + </div>
  240 + <!-- 起始站首班车时间 END -->
  241 +
  242 + <!-- 起始站末班车时间 (* 必填项) START -->
  243 + <div class="col-md-6">
  244 + <label class="control-label col-md-5"><span class="required"> * </span> 起始站末班时间: </label>
  245 + <div class="col-md-4">
  246 + <!-- <input type="text" class="form-control" name="StartStationEndTime" id="StartStationEndTimeInput" placeholder="起始站末班车时间 "> -->
  247 + <input type="text" class="form-control" name="startStationEndTime" id="endTimeInput"
  248 + placeholder="起始站末班车时间">
  249 + <span class="help-block"> 例如 :17:00 </span>
  250 + </div>
  251 + </div>
  252 + <!-- 起始站末班车时间 END -->
  253 + </div>
  254 + <!-- 表单分组组件 form-group END -->
  255 +
  256 + <!-- 表单分组组件 form-group START -->
  257 + <div class="form-group">
  258 + <!-- 终点站首班车时间 (* 必填项) START -->
  259 + <div class="col-md-6">
  260 + <label class="control-label col-md-5"><span class="required"> * </span> 终点站首班时间: </label>
  261 + <div class="col-md-4">
  262 + <input type="text" class="form-control" name="endStationFirstTime"
  263 + id="endStationFirstTimeInput" placeholder="终点站首班车时间">
  264 + <span class="help-block"> 例如 :05:00 </span>
  265 + </div>
  266 + </div>
  267 + <!-- 终点站首班车时间 END -->
  268 +
  269 + <!-- 终点站末班车时间 (* 必填项) START -->
  270 + <div class="col-md-6">
  271 + <label class="control-label col-md-5"><span class="required"> * </span> 终点站末班时间: </label>
  272 + <div class="col-md-4">
  273 + <input type="text" class="form-control" name="endStationEndTime" id="endStationEndTimeInput"
  274 + placeholder="终点站末班车时间 ">
  275 + <span class="help-block"> 例如 :18:00 </span>
  276 + </div>
  277 + </div>
  278 + <!-- 终点站末班车时间 END -->
  279 + </div>
  280 + <!-- 表单分组组件 form-group END -->
  281 +
  282 + <!-- 表单分组组件 form-group START -->
  283 + <div class="form-group">
  284 + <!-- 线路规划类型 (* 必填项) START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) -->
  285 + <div class="col-md-6">
  286 + <label class="control-label col-md-5"><span class="required"> * </span> 线路规划类型&nbsp;&nbsp;&nbsp;:</label>
  287 + <div class="col-md-4">
  288 + <select name="linePlayType" class="form-control" id="linePlayTypeSelect">
  289 + <option value="">-- 请选择线路类型 --</option>
  290 + <option value="0">双向</option>
  291 + <option value="1">环线</option>
  292 + </select>
  293 + </div>
  294 + </div>
  295 + <!-- 线路规划类型 (* 必填项) END -->
  296 +
  297 + <!--车辆区域 START -->
  298 + <div class="col-md-6">
  299 + <label class="control-label col-md-5"> <span class="required"> * </span>线路区域&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
  300 + </label>
  301 + <div class="col-md-4">
  302 + <select name="region" class="form-control" id="regionSelect">
  303 + <option value="">-- 请选择车辆区域 --</option>
  304 + <option value="0">区内</option>
  305 + <option value="1">区外</option>
  306 + </select>
  307 + </div>
  308 + </div>
  309 + <!--车辆区域END -->
  310 +
  311 + </div>
  312 + <!-- 表单分组组件 form-group START -->
  313 +
  314 + <!-- 表单分组组件 form-group START -->
  315 + <div class="form-group">
  316 + <!--大间隔等级 START -->
  317 + <div class="col-md-6">
  318 + <label class="control-label col-md-5"> 大间隔等级&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>
  319 + <div class="col-md-4">
  320 + <select name="spacGrade" class="form-control" id="spacGradeSelect">
  321 + <option value="">-- 请选择大间隔等级 --</option>
  322 + <option value="1">一级</option>
  323 + <option value="2">二级</option>
  324 + <option value="3">三级</option>
  325 + <option value="4">四级</option>
  326 + <option value="5">五级</option>
  327 + </select>
  328 + </div>
  329 + </div>
  330 + <!-- 大间隔等级END -->
  331 + <!-- 权证车辆数 START -->
  332 + <div class="col-md-6">
  333 + <label class="control-label col-md-5"> 权证车辆数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>
  334 + <div class="col-md-4">
  335 + <input type="text" class="form-control" name="warrantCar" id="warrantCarInput"
  336 + placeholder="权证车辆数">
  337 + </div>
  338 + </div>
  339 + <!-- 权证车辆数 END -->
  340 + </div>
  341 +
  342 + <!-- 表单分组组件 form-group START -->
  343 + <div class="form-group">
  344 + <!-- 线路简称 START -->
  345 + <div class="col-md-6">
  346 + <label class="control-label col-md-5"> 线路简称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:</label>
  347 + <div class="col-md-4">
  348 + <input type="text" class="form-control" name="shortName" id="shortNameInput"
  349 + placeholder="线路简称">
  350 + </div>
  351 + </div>
  352 + <!-- 线路简称 END -->
  353 +
  354 + <!-- 英文名称 START -->
  355 + <div class="col-md-6">
  356 + <label class="control-label col-md-5"> 英文名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>
  357 + <div class="col-md-4">
  358 + <input type="text" class="form-control" name="es" id="esInput" placeholder="英文名称">
  359 + </div>
  360 + </div>
  361 + <!-- 英文名称 END -->
  362 + </div>
  363 + <!-- 表单分组组件 form-group END -->
  364 +
  365 + <!-- 表单分组组件 form-group START -->
  366 + <div class="form-group">
  367 + <!-- 上海市线路编码 START -->
  368 + <div class="col-md-6">
  369 + <label class="control-label col-md-5"> 上海市线路编码: </label>
  370 + <div class="col-md-4">
  371 + <input type="text" class="form-control" name="shanghaiLinecode" id="shanghaiLinecodeInput"
  372 + placeholder="上海市线路编码">
  373 + </div>
  374 + </div>
  375 + <!-- 上海市线路编码 END -->
  376 +
  377 + <!--设备线路编码 START -->
  378 + <div class="col-md-6">
  379 + <label class="control-label col-md-5"> 设备线路编码&nbsp;&nbsp;&nbsp;: </label>
  380 + <div class="col-md-4">
  381 + <input type="text" class="form-control" name="eqLinecode" id="eqLinecodeInput"
  382 + placeholder="设备线路编码">
  383 + </div>
  384 + </div>
  385 + <!--设备线路编码 END -->
  386 + </div>
  387 + <!-- 表单分组组件 form-group END -->
  388 +
  389 + <!-- 表单分组组件 form-group START -->
  390 + <div class="form-group">
  391 + <!-- 起始站调度电话 START -->
  392 + <div class="col-md-6">
  393 + <label class="control-label col-md-5"> 起始站调度电话: </label>
  394 + <div class="col-md-4">
  395 + <input type="text" class="form-control" name="startPhone" id="startPhoneInput"
  396 + placeholder="起始站调度电话">
  397 + </div>
  398 + </div>
  399 + <!-- 起始站调度电话 END -->
  400 +
  401 + <!-- 终点站调度电话 START -->
  402 + <div class="col-md-6">
  403 + <label class="control-label col-md-5"> 终点站调度电话: </label>
  404 + <div class="col-md-4">
  405 + <input type="text" class="form-control" name="endPhone" id="startPhoneInput"
  406 + placeholder="终点站调度电话">
  407 + </div>
  408 + </div>
  409 + <!-- 终点站调度电话 START -->
  410 + </div>
  411 + <!-- 表单分组组件 form-group END -->
  412 +
  413 + <!-- 表单分组组件 form-group START -->
  414 + <div class="form-group">
  415 + <!-- 车辆总数 START -->
  416 + <div class="col-md-6">
  417 + <label class="control-label col-md-5"> 车辆总数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>
  418 + <div class="col-md-4">
  419 + <input type="text" class="form-control" name="carSumNumber" id="carSumNumberInput"
  420 + placeholder="车辆总数">
  421 + </div>
  422 + </div>
  423 + <!-- 车辆总数 END -->
  424 +
  425 + <!-- 普通车辆数 START -->
  426 + <div class="col-md-6">
  427 + <label class="control-label col-md-5"> 普通车辆数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>
  428 + <div class="col-md-4">
  429 + <input type="text" class="form-control" name="ordCarNumber" id="ordCarNumberInput"
  430 + placeholder="普通车辆数">
  431 + </div>
  432 + </div>
  433 + <!-- 普通车辆数 END -->
  434 + </div>
  435 + <!-- 表单分组组件 form-group END -->
  436 +
  437 + <!-- 表单分组组件 form-group START -->
  438 + <div class="form-group">
  439 + <!-- 空调车辆数 START -->
  440 + <div class="col-md-6">
  441 + <label class="control-label col-md-5"> 空调车辆数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>
  442 + <div class="col-md-4">
  443 + <input type="text" class="form-control" name="hvacCarNumber" id="hvacCarNumberInput"
  444 + placeholder="空调车辆数">
  445 + </div>
  446 + </div>
  447 + <!-- 空调车辆数 END -->
  448 + <!-- 开辟日期 START -->
  449 + <div class="col-md-6">
  450 + <label class="control-label col-md-5"> 开辟日期&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>
  451 + <div class="col-md-4">
  452 + <input type="text" class="form-control" name="openDate" id="openDateInput"
  453 + placeholder="开辟日期">
  454 + </div>
  455 + </div>
  456 + <!-- 开辟日期 END -->
  457 + </div>
  458 + <!-- 表单分组组件 form-group END -->
  459 + <!-- 表单分组组件 form-group START -->
  460 + <div class="form-group">
  461 + <!-- 线路沿革 START -->
  462 + <div class="col-md-6">
  463 + <label class="control-label col-md-5"> 线路沿革&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>
  464 + <div class="col-md-4">
  465 + <textarea class="form-control" rows="3" name="history" id="historyTextarea"
  466 + placeholder="线路沿革"></textarea>
  467 + <span class="help-block">日期及内容:如2014-1-1,开辟;2014-5-1,延线;</span>
  468 + </div>
  469 + </div>
  470 + <!-- 线路沿革 END -->
  471 +
  472 + <!-- 描述/说明 START -->
  473 + <div class="col-md-6">
  474 + <label class="control-label col-md-5"> 描述/说明&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>
  475 + <div class="col-md-4">
  476 + <textarea class="form-control" rows="3" name="descriptions" id="descriptionsTextarea"
  477 + placeholder="描述/说明"></textarea>
  478 + </div>
  479 + </div>
  480 + <!-- 描述/说明 END -->
  481 + </div>
  482 + <!-- 表单分组组件 form-group END -->
  483 + </div>
  484 +
  485 + <!-- 表单按钮组件 START -->
  486 + <div class="form-actions">
  487 + <div class="row">
  488 + <div class="col-md-offset-4 col-md-5">
  489 + <a type="button" class="btn default" href="list.html" style="margin-left: 35%;" data-pjax><i
  490 + class="fa fa-reply"></i> 返回</a>
  491 + </div>
  492 + </div>
  493 + </div>
  494 + <!-- 表单按钮组件 END -->
  495 +
  496 + </form>
  497 + <!-- END FORM-->
  498 +
  499 + </div>
  500 + <!-- 表单组件 END -->
  501 +
463 </div> 502 </div>
464 <!-- 信息容器组件 END --> 503 <!-- 信息容器组件 END -->
465 504
src/main/resources/static/pages/base/line/edit.html
@@ -21,111 +21,114 @@ @@ -21,111 +21,114 @@
21 <!-- 信息容器组件标题 START --> 21 <!-- 信息容器组件标题 START -->
22 <div class="portlet-title"> 22 <div class="portlet-title">
23 <div class="caption"> 23 <div class="caption">
24 - <i class="icon-equalizer font-red-sunglo"></i> 24 + <i class="icon-equalizer font-red-sunglo"></i>
25 <span class="caption-subject font-red-sunglo bold uppercase">修改线路信息</span> 25 <span class="caption-subject font-red-sunglo bold uppercase">修改线路信息</span>
26 </div> 26 </div>
27 </div> 27 </div>
28 <!-- 信息容器组件标题 END --> 28 <!-- 信息容器组件标题 END -->
29 - 29 +
30 <!-- 表单容器组件 START --> 30 <!-- 表单容器组件 START -->
31 <div class="portlet-body form" id="lineEditForm"> 31 <div class="portlet-body form" id="lineEditForm">
32 - 32 +
33 <!-- START FORM --> 33 <!-- START FORM -->
34 <form action="/" class="form-horizontal" id="line_edit_form" > 34 <form action="/" class="form-horizontal" id="line_edit_form" >
35 - 35 +
36 <!-- 错误提示信息组件 START --> 36 <!-- 错误提示信息组件 START -->
37 <div class="alert alert-danger display-hide"> 37 <div class="alert alert-danger display-hide">
38 <button class="close" data-close="alert"></button> 38 <button class="close" data-close="alert"></button>
39 您的输入有误,请检查下面的输入项 39 您的输入有误,请检查下面的输入项
40 </div> 40 </div>
41 <!-- 错误提示信息组件 END --> 41 <!-- 错误提示信息组件 END -->
42 - 42 +
43 <!-- 表单内容 START --> 43 <!-- 表单内容 START -->
  44 +
  45 +
  46 + <!-- 表单内容 -->
44 <div class="form-body"> 47 <div class="form-body">
45 - <input type="hidden" name="id" id="lineId">  
46 - 48 +
47 <!-- 表单分组组件 form-group START --> 49 <!-- 表单分组组件 form-group START -->
48 <div class="form-group"> 50 <div class="form-group">
  51 + <input type="hidden" name="id" id="lineId">
49 <!-- in_use字段 START --> 52 <!-- in_use字段 START -->
50 - <input type="hidden" name="inUse" id="inUseInput" placeholder="隐藏字段" readonly="readonly">  
51 - <!-- in_use字段 END -->  
52 - 53 + <input type="hidden" name="inUse" id="inUseInput" placeholder="隐藏字段" readonly="readonly">
  54 + <!-- in_use字段 END -->
53 <!-- 线路编码 (* 必填项) START --> 55 <!-- 线路编码 (* 必填项) START -->
54 <div class="col-md-6"> 56 <div class="col-md-6">
55 <label class="control-label col-md-5"> 57 <label class="control-label col-md-5">
56 - <span class="required"> * </span>线路编码&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:  
57 - </label>  
58 - <div class="col-md-4">  
59 - <input type="text" class="form-control" name="lineCode" id="lineCodeInput" placeholder="线路编码" readonly="readonly">  
60 - </div>  
61 - </div>  
62 - <!-- 线路编码 (* 必填项) END -->  
63 -  
64 - <!-- 线路名称 (* 必填项) START --> 58 + <span class="required"> * </span>线路编码&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
  59 + </label>
  60 + <div class="col-md-4">
  61 + <input type="text" class="form-control" name="lineCode" id="lineCodeInput"
  62 + placeholder="线路编码">
  63 + </div>
  64 + </div>
  65 + <!-- 线路编码 (* 必填项) END -->
  66 +
  67 + <!-- 线路名称 (* 必填项) START -->
65 <div class="col-md-6"> 68 <div class="col-md-6">
66 <label class="control-label col-md-5"> 69 <label class="control-label col-md-5">
67 - <span class="required"> * </span>线路名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:  
68 - </label>  
69 - <div class="col-md-4">  
70 - <input type="text" class="form-control" name="name" id="nameInput" placeholder="线路名称" />  
71 - <span class="help-block"> 例如 :浦东88路 </span>  
72 - </div>  
73 - </div> 70 + <span class="required"> * </span>线路名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
  71 + </label>
  72 + <div class="col-md-4">
  73 + <input type="text" class="form-control" name="name" id="nameInput" placeholder="线路名称"/>
  74 + <span class="help-block"> 例如 :浦东88路 </span>
  75 + </div>
  76 + </div>
74 <!-- 线路名称 (* 必填项) END --> 77 <!-- 线路名称 (* 必填项) END -->
75 - </div>  
76 - <!-- 表单分组组件 form-group END -->  
77 -  
78 - <!-- 表单分组组件 form-group START -->  
79 - <div class="form-group">  
80 - <!-- 所属公司 START 在片段线路添加JS模块里初始化select(options值查询的公司表) --> 78 + </div>
  79 + <!-- 表单分组组件 form-group END -->
  80 +
  81 + <!-- 表单分组组件 form-group START -->
  82 + <div class="form-group">
  83 + <!-- 所属公司 START 在片段线路添加JS模块里初始化select(options值查询的公司表) -->
81 <div class="col-md-6"> 84 <div class="col-md-6">
82 - <label class="control-label col-md-5"> 85 + <label class="control-label col-md-5">
83 <span class="required"> * </span>所属公司&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: 86 <span class="required"> * </span>所属公司&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
84 </label> 87 </label>
85 - <div class="col-md-4">  
86 - <select name="company" class="form-control" id="companySelect"></select>  
87 - </div>  
88 - </div>  
89 - <!-- 所属公司 END -->  
90 -  
91 - <!-- 所属分公司 START 在片段线路添加JS模块里初始化select(options值查询的公司表) --> 88 + <div class="col-md-4">
  89 + <select name="company" class="form-control" id="companySelect"></select>
  90 + </div>
  91 + </div>
  92 + <!-- 所属公司 END -->
  93 +
  94 + <!-- 所属分公司 START 在片段线路添加JS模块里初始化select(options值查询的公司表) -->
92 <div class="col-md-6"> 95 <div class="col-md-6">
93 - <label class="control-label col-md-5"> 96 + <label class="control-label col-md-5">
94 <span class="required"> * </span>所属分公司&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: 97 <span class="required"> * </span>所属分公司&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
95 </label> 98 </label>
96 - <div class="col-md-4">  
97 - <select name="brancheCompany" class="form-control" id="brancheCompanySelect"></select>  
98 - </div>  
99 - </div>  
100 - <!-- 所属分公司 END -->  
101 - </div>  
102 - <!-- 表单分组组件 form-group END -->  
103 -  
104 - <!-- 表单分组组件 form-group START -->  
105 - <div class="form-group">  
106 - <!-- 线路等级 START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) --> 99 + <div class="col-md-4">
  100 + <select name="brancheCompany" class="form-control" id="brancheCompanySelect"></select>
  101 + </div>
  102 + </div>
  103 + <!-- 所属分公司 END -->
  104 + </div>
  105 + <!-- 表单分组组件 form-group END -->
  106 +
  107 + <!-- 表单分组组件 form-group START -->
  108 + <div class="form-group">
  109 + <!-- 线路等级 START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) -->
107 <div class="col-md-6"> 110 <div class="col-md-6">
108 - <label class="control-label col-md-5"> 111 + <label class="control-label col-md-5">
109 <span class="required"> * </span>线路等级&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: 112 <span class="required"> * </span>线路等级&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
110 </label> 113 </label>
111 - <div class="col-md-4">  
112 - <select name="level" class="form-control" id="levelSelect"> 114 + <div class="col-md-4">
  115 + <select name="level" class="form-control" id="levelSelect">
113 <option value="">-- 请选择线路等级 --</option> 116 <option value="">-- 请选择线路等级 --</option>
114 <option value="1">一级线路</option> 117 <option value="1">一级线路</option>
115 <option value="2">二级线路</option> 118 <option value="2">二级线路</option>
116 <option value="0">未知等级</option> 119 <option value="0">未知等级</option>
117 </select> 120 </select>
118 </div> 121 </div>
119 - </div>  
120 - <!-- 线路等级 END -->  
121 - 122 + </div>
  123 + <!-- 线路等级 END -->
  124 +
122 <!-- 线路性质 START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) --> 125 <!-- 线路性质 START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) -->
123 <div class="col-md-6"> 126 <div class="col-md-6">
124 - <label class="control-label col-md-5"> 127 + <label class="control-label col-md-5">
125 <span class="required"> * </span>线路性质&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: 128 <span class="required"> * </span>线路性质&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
126 </label> 129 </label>
127 - <div class="col-md-4">  
128 - <select name="nature" class="form-control" id="natureSelect"> 130 + <div class="col-md-4">
  131 + <select name="nature" class="form-control" id="natureSelect">
129 <option value="">-- 请选择线路性质 --</option> 132 <option value="">-- 请选择线路性质 --</option>
130 <option value="lj">路救</option> 133 <option value="lj">路救</option>
131 <option value="bc">备车</option> 134 <option value="bc">备车</option>
@@ -138,167 +141,197 @@ @@ -138,167 +141,197 @@
138 <option value="cctxl">村村通线路</option> 141 <option value="cctxl">村村通线路</option>
139 <option value="qt">其他</option> 142 <option value="qt">其他</option>
140 </select> 143 </select>
141 - </div>  
142 - </div>  
143 - <!-- 线路性质 END -->  
144 - </div>  
145 - <!-- 表单分组组件 form-group END -->  
146 -  
147 - <!-- 表单分组组件 form-group START -->  
148 - <div class="form-group">  
149 - <!-- 是否宵夜 START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) --> 144 + </div>
  145 + </div>
  146 + <!-- 线路性质 END -->
  147 + </div>
  148 + <!-- 表单分组组件 form-group END -->
  149 +
  150 + <!-- 表单分组组件 form-group START -->
  151 + <div class="form-group">
  152 + <!-- 是否宵夜 START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) -->
150 <div class="col-md-6"> 153 <div class="col-md-6">
151 <label class="control-label col-md-5"> 154 <label class="control-label col-md-5">
152 <span class="required"> * </span>是否宵夜&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: 155 <span class="required"> * </span>是否宵夜&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
153 </label> 156 </label>
154 - <div class="col-md-4">  
155 - <div class="md-radio-inline">  
156 - <div class="md-radio">  
157 - <input type="radio" id="radio16" name="supperLine" class="md-radiobtn" value="1" data-title="是" > 157 + <div class="col-md-4">
  158 + <div class="md-radio-inline">
  159 + <div class="md-radio">
  160 + <input type="radio" id="radio16" name="supperLine" class="md-radiobtn" value="1"
  161 + data-title="是">
158 <label for="radio16"> 162 <label for="radio16">
159 <span></span> 163 <span></span>
160 <span class="check"></span> 164 <span class="check"></span>
161 - <span class="box"></span> 是 165 + <span class="box"></span> 是
  166 + </label>
  167 + </div>
  168 + <div class="md-radio has-error">
  169 + <input type="radio" id="radio17" name="supperLine" class="md-radiobtn" value="0"
  170 + data-title="否" checked="checked">
  171 + <label for="radio17" style="color:#FFC0CB">
  172 + <span></span>
  173 + <span class="check"></span>
  174 + <span class="box"></span> 否
162 </label> 175 </label>
163 - </div>  
164 - <div class="md-radio has-error">  
165 - <input type="radio" id="radio17" name="supperLine" class="md-radiobtn" value="0" data-title="否" checked="checked">  
166 - <label for="radio17" style="color:#FFC0CB">  
167 - <span></span>  
168 - <span class="check"></span>  
169 - <span class="box"></span> 否  
170 - </label>  
171 - </div>  
172 - </div>  
173 - </div>  
174 - </div>  
175 - <!-- 是否宵夜 END -->  
176 -  
177 - <!-- 是否撤销 START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) --> 176 + </div>
  177 + </div>
  178 + </div>
  179 + </div>
  180 + <!-- 是否宵夜 END -->
  181 +
  182 + <!-- 是否撤销 START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) -->
178 <div class="col-md-6"> 183 <div class="col-md-6">
179 <label class="control-label col-md-5"> 184 <label class="control-label col-md-5">
180 <span class="required"> * </span>是否撤销&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: 185 <span class="required"> * </span>是否撤销&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
181 </label> 186 </label>
182 - <div class="col-md-4">  
183 - <div class="md-radio-inline">  
184 - <div class="md-radio">  
185 - <input type="radio" id="radio14" name="destroy" data-title="是" class="md-radiobtn" value="1" > 187 + <div class="col-md-4">
  188 + <div class="md-radio-inline">
  189 + <div class="md-radio">
  190 + <input type="radio" id="radio14" name="destroy" data-title="是" class="md-radiobtn"
  191 + value="1">
186 <label for="radio14"> 192 <label for="radio14">
187 <span></span> 193 <span></span>
188 <span class="check"></span> 194 <span class="check"></span>
189 - <span class="box"></span> 是 195 + <span class="box"></span> 是
190 </label> 196 </label>
191 - </div>  
192 - <div class="md-radio has-error">  
193 - <input type="radio" id="radio15" name="destroy" class="md-radiobtn" data-title="否" value="0" checked="checked">  
194 - <label for="radio15" style="color:#FFC0CB">  
195 - <span></span>  
196 - <span class="check"></span>  
197 - <span class="box"></span> 否  
198 - </label>  
199 - </div>  
200 - </div>  
201 - </div>  
202 - </div>  
203 - <!-- 是否撤销 START -->  
204 - </div>  
205 - <!-- 表单分组组件 form-group END -->  
206 -  
207 - <!-- 表单分组组件 form-group START -->  
208 - <div class="form-group"> 197 + </div>
  198 + <div class="md-radio has-error">
  199 + <input type="radio" id="radio15" name="destroy" class="md-radiobtn" data-title="否"
  200 + value="0" checked="checked">
  201 + <label for="radio15" style="color:#FFC0CB">
  202 + <span></span>
  203 + <span class="check"></span>
  204 + <span class="box"></span> 否
  205 + </label>
  206 + </div>
  207 + </div>
  208 + </div>
  209 + </div>
  210 + <!-- 是否撤销 START -->
  211 + </div>
  212 + <!-- 表单分组组件 form-group END -->
  213 +
  214 + <!-- 表单分组组件 form-group START -->
  215 + <div class="form-group">
209 <!-- 起始站名称 START (该字段值会在规划线路站点操作时会去验证是否有值。如果为空,则用线路规划站点的起点站。默认使用该字段填写值) --> 216 <!-- 起始站名称 START (该字段值会在规划线路站点操作时会去验证是否有值。如果为空,则用线路规划站点的起点站。默认使用该字段填写值) -->
210 <div class="col-md-6"> 217 <div class="col-md-6">
211 - <label class="control-label col-md-5"><span class="required"> * </span> 218 + <label class="control-label col-md-5"><span class="required"> * </span>
212 起始站名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: 219 起始站名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
213 </label> 220 </label>
214 - <div class="col-md-4">  
215 - <input type="text" class="form-control" name="startStationName" id="startStationNameInput" placeholder="起始站名称">  
216 - <span class="help-block"> 说明 :上行起始站名称 </span>  
217 - </div>  
218 - </div>  
219 - <!-- 起始站名称 END -->  
220 -  
221 - <!-- 终点站名称 START (该字段值会在规划线路站点操作时会去验证是否有值。如果为空,则用线路规划站点的终点站。默认使用该字段填写值) --> 221 + <div class="col-md-4">
  222 + <input type="text" class="form-control" name="startStationName" id="startStationNameInput"
  223 + placeholder="起始站名称">
  224 + <span class="help-block"> 说明 :上行起始站名称 </span>
  225 + </div>
  226 + </div>
  227 + <!-- 起始站名称 END -->
  228 +
  229 + <!-- 终点站名称 START (该字段值会在规划线路站点操作时会去验证是否有值。如果为空,则用线路规划站点的终点站。默认使用该字段填写值) -->
222 <div class="col-md-6"> 230 <div class="col-md-6">
223 - <label class="control-label col-md-5"><span class="required"> * </span> 终点站名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>  
224 - <div class="col-md-4">  
225 - <input type="text" class="form-control" name="endStationName" id="endStationNameInput" placeholder="终点站名称">  
226 - <span class="help-block"> 说明 :上行终点站名称 </span>  
227 - </div>  
228 - </div>  
229 - <!-- 终点站名称 END -->  
230 - </div>  
231 - <!-- 表单分组组件 form-group END -->  
232 -  
233 - <!-- 表单分组组件 form-group START -->  
234 - <div class="form-group"> 231 + <label class="control-label col-md-5"><span class="required"> * </span> 终点站名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
  232 + </label>
  233 + <div class="col-md-4">
  234 + <input type="text" class="form-control" name="endStationName" id="endStationNameInput"
  235 + placeholder="终点站名称">
  236 + <span class="help-block"> 说明 :上行终点站名称 </span>
  237 + </div>
  238 + </div>
  239 + <!-- 终点站名称 END -->
  240 + </div>
  241 + <!-- 表单分组组件 form-group END -->
  242 +
  243 + <!-- 表单分组组件 form-group START -->
  244 + <div class="form-group">
235 <!-- 起始站首班车时间 (* 必填项) START --> 245 <!-- 起始站首班车时间 (* 必填项) START -->
236 <div class="col-md-6"> 246 <div class="col-md-6">
237 - <label class="control-label col-md-5"><span class="required"> * </span> 起始站首班时间: </label>  
238 - <div class="col-md-4">  
239 - <input type="text" class="form-control" name="startStationFirstTime" id="startStationFirstTimeInput" placeholder="起始站首班车时间">  
240 - <span class="help-block"> 例如 :06:00 </span>  
241 - </div>  
242 - </div>  
243 - <!-- 起始站首班车时间 END -->  
244 -  
245 - <!-- 起始站末班车时间 (* 必填项) START --> 247 + <label class="control-label col-md-5"><span class="required"> * </span> 起始站首班时间: </label>
  248 + <div class="col-md-4">
  249 + <input type="text" class="form-control" name="startStationFirstTime"
  250 + id="startStationFirstTimeInput" placeholder="起始站首班车时间">
  251 + <span class="help-block"> 例如 :06:00 </span>
  252 + </div>
  253 + </div>
  254 + <!-- 起始站首班车时间 END -->
  255 +
  256 + <!-- 起始站末班车时间 (* 必填项) START -->
246 <div class="col-md-6"> 257 <div class="col-md-6">
247 - <label class="control-label col-md-5"><span class="required"> * </span> 起始站末班时间: </label>  
248 - <div class="col-md-4">  
249 - <!-- <input type="text" class="form-control" name="StartStationEndTime" id="StartStationEndTimeInput" placeholder="起始站末班车时间 "> -->  
250 - <input type="text" class="form-control" name="startStationEndTime" id="endTimeInput" placeholder="起始站末班车时间">  
251 - <span class="help-block"> 例如 :17:00 </span>  
252 - </div>  
253 - </div>  
254 - <!-- 起始站末班车时间 END -->  
255 - </div>  
256 - <!-- 表单分组组件 form-group END -->  
257 -  
258 - <!-- 表单分组组件 form-group START -->  
259 - <div class="form-group">  
260 - <!-- 终点站首班车时间 (* 必填项) START --> 258 + <label class="control-label col-md-5"><span class="required"> * </span> 起始站末班时间: </label>
  259 + <div class="col-md-4">
  260 + <!-- <input type="text" class="form-control" name="StartStationEndTime" id="StartStationEndTimeInput" placeholder="起始站末班车时间 "> -->
  261 + <input type="text" class="form-control" name="startStationEndTime" id="endTimeInput"
  262 + placeholder="起始站末班车时间">
  263 + <span class="help-block"> 例如 :17:00 </span>
  264 + </div>
  265 + </div>
  266 + <!-- 起始站末班车时间 END -->
  267 + </div>
  268 + <!-- 表单分组组件 form-group END -->
  269 +
  270 + <!-- 表单分组组件 form-group START -->
  271 + <div class="form-group">
  272 + <!-- 终点站首班车时间 (* 必填项) START -->
261 <div class="col-md-6"> 273 <div class="col-md-6">
262 - <label class="control-label col-md-5"><span class="required"> * </span> 终点站首班时间: </label>  
263 - <div class="col-md-4">  
264 - <input type="text" class="form-control" name="endStationFirstTime" id="endStationFirstTimeInput" placeholder="终点站首班车时间">  
265 - <span class="help-block"> 例如 :05:00 </span>  
266 - </div>  
267 - </div>  
268 - <!-- 终点站首班车时间 END -->  
269 -  
270 - <!-- 终点站末班车时间 (* 必填项) START --> 274 + <label class="control-label col-md-5"><span class="required"> * </span> 终点站首班时间: </label>
  275 + <div class="col-md-4">
  276 + <input type="text" class="form-control" name="endStationFirstTime"
  277 + id="endStationFirstTimeInput" placeholder="终点站首班车时间">
  278 + <span class="help-block"> 例如 :05:00 </span>
  279 + </div>
  280 + </div>
  281 + <!-- 终点站首班车时间 END -->
  282 +
  283 + <!-- 终点站末班车时间 (* 必填项) START -->
271 <div class="col-md-6"> 284 <div class="col-md-6">
272 - <label class="control-label col-md-5"><span class="required"> * </span> 终点站末班时间: </label>  
273 - <div class="col-md-4">  
274 - <input type="text" class="form-control" name="endStationEndTime" id="endStationEndTimeInput" placeholder="终点站末班车时间 ">  
275 - <span class="help-block"> 例如 :18:00 </span>  
276 - </div>  
277 - </div>  
278 - <!-- 终点站末班车时间 END -->  
279 - </div>  
280 - <!-- 表单分组组件 form-group END -->  
281 -  
282 - <!-- 表单分组组件 form-group START -->  
283 - <div class="form-group">  
284 - <!-- 线路规划类型 (* 必填项) START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) --> 285 + <label class="control-label col-md-5"><span class="required"> * </span> 终点站末班时间: </label>
  286 + <div class="col-md-4">
  287 + <input type="text" class="form-control" name="endStationEndTime" id="endStationEndTimeInput"
  288 + placeholder="终点站末班车时间 ">
  289 + <span class="help-block"> 例如 :18:00 </span>
  290 + </div>
  291 + </div>
  292 + <!-- 终点站末班车时间 END -->
  293 + </div>
  294 + <!-- 表单分组组件 form-group END -->
  295 +
  296 + <!-- 表单分组组件 form-group START -->
  297 + <div class="form-group">
  298 + <!-- 线路规划类型 (* 必填项) START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) -->
285 <div class="col-md-6"> 299 <div class="col-md-6">
286 <label class="control-label col-md-5"><span class="required"> * </span> 线路规划类型&nbsp;&nbsp;&nbsp;:</label> 300 <label class="control-label col-md-5"><span class="required"> * </span> 线路规划类型&nbsp;&nbsp;&nbsp;:</label>
287 - <div class="col-md-4">  
288 - <select name="linePlayType" class="form-control" id="linePlayTypeSelect"> 301 + <div class="col-md-4">
  302 + <select name="linePlayType" class="form-control" id="linePlayTypeSelect">
289 <option value="">-- 请选择线路类型 --</option> 303 <option value="">-- 请选择线路类型 --</option>
290 <option value="0">双向</option> 304 <option value="0">双向</option>
291 <option value="1">环线</option> 305 <option value="1">环线</option>
292 </select> 306 </select>
293 - </div>  
294 - </div>  
295 - <!-- 线路规划类型 (* 必填项) END -->  
296 -  
297 - <!--大间隔等级 START --> 307 + </div>
  308 + </div>
  309 + <!-- 线路规划类型 (* 必填项) END -->
  310 +
  311 + <!--车辆区域 START -->
  312 + <div class="col-md-6">
  313 + <label class="control-label col-md-5"> <span class="required"> * </span>线路区域&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
  314 + </label>
  315 + <div class="col-md-4">
  316 + <select name="region" class="form-control" id="regionSelect">
  317 + <option value="">-- 请选择车辆区域 --</option>
  318 + <option value="0">区内</option>
  319 + <option value="1">区外</option>
  320 + </select>
  321 + </div>
  322 + </div>
  323 + <!--车辆区域END -->
  324 +
  325 + </div>
  326 + <!-- 表单分组组件 form-group START -->
  327 +
  328 + <!-- 表单分组组件 form-group START -->
  329 + <div class="form-group">
  330 + <!--大间隔等级 START -->
298 <div class="col-md-6"> 331 <div class="col-md-6">
299 <label class="control-label col-md-5"> 大间隔等级&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label> 332 <label class="control-label col-md-5"> 大间隔等级&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>
300 - <div class="col-md-4">  
301 - <select name="spacGrade" class="form-control" id="spacGradeSelect"> 333 + <div class="col-md-4">
  334 + <select name="spacGrade" class="form-control" id="spacGradeSelect">
302 <option value="">-- 请选择大间隔等级 --</option> 335 <option value="">-- 请选择大间隔等级 --</option>
303 <option value="1">一级</option> 336 <option value="1">一级</option>
304 <option value="2">二级</option> 337 <option value="2">二级</option>
@@ -306,157 +339,163 @@ @@ -306,157 +339,163 @@
306 <option value="4">四级</option> 339 <option value="4">四级</option>
307 <option value="5">五级</option> 340 <option value="5">五级</option>
308 </select> 341 </select>
309 - </div>  
310 - </div>  
311 - <!-- 大间隔等级END -->  
312 - </div>  
313 - <!-- 表单分组组件 form-group START -->  
314 -  
315 - <!-- 表单分组组件 form-group START -->  
316 - <div class="form-group">  
317 - <!-- 线路简称 START --> 342 + </div>
  343 + </div>
  344 + <!-- 大间隔等级END -->
  345 + <!-- 权证车辆数 START -->
  346 + <div class="col-md-6">
  347 + <label class="control-label col-md-5"> 权证车辆数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>
  348 + <div class="col-md-4">
  349 + <input type="text" class="form-control" name="warrantCar" id="warrantCarInput"
  350 + placeholder="权证车辆数">
  351 + </div>
  352 + </div>
  353 + <!-- 权证车辆数 END -->
  354 + </div>
  355 +
  356 + <!-- 表单分组组件 form-group START -->
  357 + <div class="form-group">
  358 + <!-- 线路简称 START -->
318 <div class="col-md-6"> 359 <div class="col-md-6">
319 <label class="control-label col-md-5"> 线路简称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:</label> 360 <label class="control-label col-md-5"> 线路简称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:</label>
320 - <div class="col-md-4">  
321 - <input type="text" class="form-control" name="shortName" id="shortNameInput" placeholder="线路简称">  
322 - </div>  
323 - </div> 361 + <div class="col-md-4">
  362 + <input type="text" class="form-control" name="shortName" id="shortNameInput"
  363 + placeholder="线路简称">
  364 + </div>
  365 + </div>
324 <!-- 线路简称 END --> 366 <!-- 线路简称 END -->
325 - 367 +
326 <!-- 英文名称 START --> 368 <!-- 英文名称 START -->
327 <div class="col-md-6"> 369 <div class="col-md-6">
328 <label class="control-label col-md-5"> 英文名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label> 370 <label class="control-label col-md-5"> 英文名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>
329 - <div class="col-md-4">  
330 - <input type="text" class="form-control" name="es" id="esInput" placeholder="英文名称">  
331 - </div>  
332 - </div>  
333 - <!-- 英文名称 END -->  
334 - </div>  
335 - <!-- 表单分组组件 form-group END -->  
336 -  
337 - <!-- 表单分组组件 form-group START -->  
338 - <div class="form-group">  
339 - <!-- 上海市线路编码 START -->  
340 - <div class="col-md-6">  
341 - <label class="control-label col-md-5"> 上海市线路编码: </label>  
342 - <div class="col-md-4">  
343 - <input type="text" class="form-control" name="shanghaiLinecode" id="shanghaiLinecodeInput" placeholder="上海市线路编码">  
344 - </div>  
345 - </div>  
346 - <!-- 上海市线路编码 END -->  
347 -  
348 - <!--设备线路编码 START -->  
349 - <div class="col-md-6">  
350 - <label class="control-label col-md-5"> 设备线路编码&nbsp;&nbsp;&nbsp;: </label>  
351 - <div class="col-md-4">  
352 - <input type="text" class="form-control" name="eqLinecode" id="eqLinecodeInput" placeholder="设备线路编码">  
353 - </div>  
354 - </div>  
355 - <!--设备线路编码 END -->  
356 - </div>  
357 - <!-- 表单分组组件 form-group END -->  
358 -  
359 - <!-- 表单分组组件 form-group START -->  
360 - <div class="form-group"> 371 + <div class="col-md-4">
  372 + <input type="text" class="form-control" name="es" id="esInput" placeholder="英文名称">
  373 + </div>
  374 + </div>
  375 + <!-- 英文名称 END -->
  376 + </div>
  377 + <!-- 表单分组组件 form-group END -->
  378 +
  379 + <!-- 表单分组组件 form-group START -->
  380 + <div class="form-group">
  381 + <!-- 上海市线路编码 START -->
  382 + <div class="col-md-6">
  383 + <label class="control-label col-md-5"> 上海市线路编码: </label>
  384 + <div class="col-md-4">
  385 + <input type="text" class="form-control" name="shanghaiLinecode" id="shanghaiLinecodeInput"
  386 + placeholder="上海市线路编码">
  387 + </div>
  388 + </div>
  389 + <!-- 上海市线路编码 END -->
  390 +
  391 + <!--设备线路编码 START -->
  392 + <div class="col-md-6">
  393 + <label class="control-label col-md-5"> 设备线路编码&nbsp;&nbsp;&nbsp;: </label>
  394 + <div class="col-md-4">
  395 + <input type="text" class="form-control" name="eqLinecode" id="eqLinecodeInput"
  396 + placeholder="设备线路编码">
  397 + </div>
  398 + </div>
  399 + <!--设备线路编码 END -->
  400 + </div>
  401 + <!-- 表单分组组件 form-group END -->
  402 +
  403 + <!-- 表单分组组件 form-group START -->
  404 + <div class="form-group">
361 <!-- 起始站调度电话 START --> 405 <!-- 起始站调度电话 START -->
362 <div class="col-md-6"> 406 <div class="col-md-6">
363 <label class="control-label col-md-5"> 起始站调度电话: </label> 407 <label class="control-label col-md-5"> 起始站调度电话: </label>
364 - <div class="col-md-4">  
365 - <input type="text" class="form-control" name="startPhone" id="startPhoneInput" placeholder="起始站调度电话">  
366 - </div>  
367 - </div>  
368 - <!-- 起始站调度电话 END -->  
369 -  
370 - <!-- 终点站调度电话 START --> 408 + <div class="col-md-4">
  409 + <input type="text" class="form-control" name="startPhone" id="startPhoneInput"
  410 + placeholder="起始站调度电话">
  411 + </div>
  412 + </div>
  413 + <!-- 起始站调度电话 END -->
  414 +
  415 + <!-- 终点站调度电话 START -->
371 <div class="col-md-6"> 416 <div class="col-md-6">
372 <label class="control-label col-md-5"> 终点站调度电话: </label> 417 <label class="control-label col-md-5"> 终点站调度电话: </label>
373 - <div class="col-md-4">  
374 - <input type="text" class="form-control" name="endPhone" id="startPhoneInput" placeholder="终点站调度电话">  
375 - </div>  
376 - </div>  
377 - <!-- 终点站调度电话 START -->  
378 - </div>  
379 - <!-- 表单分组组件 form-group END -->  
380 -  
381 - <!-- 表单分组组件 form-group START -->  
382 - <div class="form-group"> 418 + <div class="col-md-4">
  419 + <input type="text" class="form-control" name="endPhone" id="startPhoneInput"
  420 + placeholder="终点站调度电话">
  421 + </div>
  422 + </div>
  423 + <!-- 终点站调度电话 START -->
  424 + </div>
  425 + <!-- 表单分组组件 form-group END -->
  426 +
  427 + <!-- 表单分组组件 form-group START -->
  428 + <div class="form-group">
383 <!-- 车辆总数 START --> 429 <!-- 车辆总数 START -->
384 <div class="col-md-6"> 430 <div class="col-md-6">
385 <label class="control-label col-md-5"> 车辆总数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label> 431 <label class="control-label col-md-5"> 车辆总数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>
386 - <div class="col-md-4">  
387 - <input type="text" class="form-control" name="carSumNumber" id="carSumNumberInput" placeholder="车辆总数">  
388 - </div>  
389 - </div>  
390 - <!-- 车辆总数 END -->  
391 -  
392 - <!-- 普通车辆数 START --> 432 + <div class="col-md-4">
  433 + <input type="text" class="form-control" name="carSumNumber" id="carSumNumberInput"
  434 + placeholder="车辆总数">
  435 + </div>
  436 + </div>
  437 + <!-- 车辆总数 END -->
  438 +
  439 + <!-- 普通车辆数 START -->
393 <div class="col-md-6"> 440 <div class="col-md-6">
394 <label class="control-label col-md-5"> 普通车辆数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label> 441 <label class="control-label col-md-5"> 普通车辆数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>
395 - <div class="col-md-4">  
396 - <input type="text" class="form-control" name="ordCarNumber" id="ordCarNumberInput" placeholder="普通车辆数">  
397 - </div>  
398 - </div>  
399 - <!-- 普通车辆数 END -->  
400 - </div>  
401 - <!-- 表单分组组件 form-group END -->  
402 -  
403 - <!-- 表单分组组件 form-group START -->  
404 - <div class="form-group">  
405 - <!-- 空调车辆数 START --> 442 + <div class="col-md-4">
  443 + <input type="text" class="form-control" name="ordCarNumber" id="ordCarNumberInput"
  444 + placeholder="普通车辆数">
  445 + </div>
  446 + </div>
  447 + <!-- 普通车辆数 END -->
  448 + </div>
  449 + <!-- 表单分组组件 form-group END -->
  450 +
  451 + <!-- 表单分组组件 form-group START -->
  452 + <div class="form-group">
  453 + <!-- 空调车辆数 START -->
406 <div class="col-md-6"> 454 <div class="col-md-6">
407 <label class="control-label col-md-5"> 空调车辆数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label> 455 <label class="control-label col-md-5"> 空调车辆数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>
408 - <div class="col-md-4">  
409 - <input type="text" class="form-control" name="hvacCarNumber" id="hvacCarNumberInput" placeholder="空调车辆数">  
410 - </div>  
411 - </div>  
412 - <!-- 空调车辆数 END -->  
413 - <!-- 开辟日期 START --> 456 + <div class="col-md-4">
  457 + <input type="text" class="form-control" name="hvacCarNumber" id="hvacCarNumberInput"
  458 + placeholder="空调车辆数">
  459 + </div>
  460 + </div>
  461 + <!-- 空调车辆数 END -->
  462 + <!-- 开辟日期 START -->
414 <div class="col-md-6"> 463 <div class="col-md-6">
415 <label class="control-label col-md-5"> 开辟日期&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label> 464 <label class="control-label col-md-5"> 开辟日期&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>
416 - <div class="col-md-4">  
417 - <input type="text" class="form-control" name="openDate" id="openDateInput" placeholder="开辟日期">  
418 - </div>  
419 - </div>  
420 - <!-- 开辟日期 END -->  
421 - </div>  
422 - <!-- 表单分组组件 form-group END -->  
423 -  
424 - <!-- 表单分组组件 form-group START -->  
425 - <div class="form-group">  
426 - <!-- 权证车辆数 START -->  
427 - <div class="col-md-6">  
428 - <label class="control-label col-md-5"> 权证车辆数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>  
429 - <div class="col-md-4">  
430 - <input type="text" class="form-control" name="warrantCar" id="warrantCarInput" placeholder="权证车辆数">  
431 - </div>  
432 - </div>  
433 - <!-- 权证车辆数 END -->  
434 - </div>  
435 - <!-- 表单分组组件 form-group END -->  
436 - <!-- 表单分组组件 form-group START -->  
437 - <div class="form-group">  
438 - <!-- 线路沿革 START --> 465 + <div class="col-md-4">
  466 + <input type="text" class="form-control" name="openDate" id="openDateInput"
  467 + placeholder="开辟日期">
  468 + </div>
  469 + </div>
  470 + <!-- 开辟日期 END -->
  471 + </div>
  472 + <!-- 表单分组组件 form-group END -->
  473 + <!-- 表单分组组件 form-group START -->
  474 + <div class="form-group">
  475 + <!-- 线路沿革 START -->
439 <div class="col-md-6"> 476 <div class="col-md-6">
440 <label class="control-label col-md-5"> 线路沿革&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label> 477 <label class="control-label col-md-5"> 线路沿革&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>
441 - <div class="col-md-4">  
442 - <textarea class="form-control" rows="3" name="history" id="historyTextarea" placeholder="线路沿革"></textarea> 478 + <div class="col-md-4">
  479 + <textarea class="form-control" rows="3" name="history" id="historyTextarea"
  480 + placeholder="线路沿革"></textarea>
443 <span class="help-block">日期及内容:如2014-1-1,开辟;2014-5-1,延线;</span> 481 <span class="help-block">日期及内容:如2014-1-1,开辟;2014-5-1,延线;</span>
444 - </div>  
445 - </div>  
446 - <!-- 线路沿革 END -->  
447 - 482 + </div>
  483 + </div>
  484 + <!-- 线路沿革 END -->
  485 +
448 <!-- 描述/说明 START --> 486 <!-- 描述/说明 START -->
449 <div class="col-md-6"> 487 <div class="col-md-6">
450 <label class="control-label col-md-5"> 描述/说明&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label> 488 <label class="control-label col-md-5"> 描述/说明&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>
451 - <div class="col-md-4">  
452 - <textarea class="form-control" rows="3" name="descriptions" id="descriptionsTextarea" placeholder="描述/说明"></textarea>  
453 - </div>  
454 - </div>  
455 - <!-- 描述/说明 END -->  
456 - </div>  
457 - <!-- 表单分组组件 form-group END --> 489 + <div class="col-md-4">
  490 + <textarea class="form-control" rows="3" name="descriptions" id="descriptionsTextarea"
  491 + placeholder="描述/说明"></textarea>
  492 + </div>
  493 + </div>
  494 + <!-- 描述/说明 END -->
  495 + </div>
  496 + <!-- 表单分组组件 form-group END -->
458 </div> 497 </div>
459 - 498 +
460 <!-- 表单按钮组件 START --> 499 <!-- 表单按钮组件 START -->
461 <div class="form-actions"> 500 <div class="form-actions">
462 <div class="row"> 501 <div class="row">
src/main/resources/static/pages/base/line/js/line-add-form.js
@@ -123,7 +123,8 @@ $(function(){ @@ -123,7 +123,8 @@ $(function(){
123 'hvacCarNumber' : {number : true,digits : true,maxlength: 8},// 空调车辆数 必须输入合法的数字(负数,小数)。 必须输入整数。 最大长度. 123 'hvacCarNumber' : {number : true,digits : true,maxlength: 8},// 空调车辆数 必须输入合法的数字(负数,小数)。 必须输入整数。 最大长度.
124 'ordCarNumber' : {number : true,digits : true,maxlength: 8},// 普通车辆数 必须输入合法的数字(负数,小数)。 必须输入整数。最大长度. 124 'ordCarNumber' : {number : true,digits : true,maxlength: 8},// 普通车辆数 必须输入合法的数字(负数,小数)。 必须输入整数。最大长度.
125 'history' : {maxlength: 200},// 线路沿革 输入长度最多是 200 的字符串(汉字算一个字符)。 125 'history' : {maxlength: 200},// 线路沿革 输入长度最多是 200 的字符串(汉字算一个字符)。
126 - 'descriptions' : {maxlength: 200}// 描述/说明 输入长度最多是 200 的字符串(汉字算一个字符)。 126 + 'descriptions' : {maxlength: 200},// 描述/说明 输入长度最多是 200 的字符串(汉字算一个字符)。
  127 + 'region' : {required : true}// 线路区域必选
127 }, 128 },
128 messages:{ 129 messages:{
129 'lineCode':{ 130 'lineCode':{
src/main/resources/static/pages/base/line/js/line-edit-form.js
@@ -175,7 +175,8 @@ @@ -175,7 +175,8 @@
175 'hvacCarNumber' : {number : true,digits : true,maxlength: 8},// 空调车辆数 必须输入合法的数字(负数,小数)。 必须输入整数。 最大长度. 175 'hvacCarNumber' : {number : true,digits : true,maxlength: 8},// 空调车辆数 必须输入合法的数字(负数,小数)。 必须输入整数。 最大长度.
176 'ordCarNumber' : {number : true,digits : true,maxlength: 8},// 普通车辆数 必须输入合法的数字(负数,小数)。 必须输入整数。最大长度. 176 'ordCarNumber' : {number : true,digits : true,maxlength: 8},// 普通车辆数 必须输入合法的数字(负数,小数)。 必须输入整数。最大长度.
177 'history' : {maxlength: 200},// 线路沿革 输入长度最多是 200 的字符串(汉字算一个字符)。 177 'history' : {maxlength: 200},// 线路沿革 输入长度最多是 200 的字符串(汉字算一个字符)。
178 - 'descriptions' : {maxlength: 200}// 描述/说明 输入长度最多是 200 的字符串(汉字算一个字符)。 178 + 'descriptions' : {maxlength: 200},// 描述/说明 输入长度最多是 200 的字符串(汉字算一个字符)。
  179 + 'region' : {required : true}// 线路区域必选
179 }, 180 },
180 181
181 /** 182 /**
src/main/resources/static/pages/base/timesmodel/gantt.html
@@ -152,7 +152,11 @@ @@ -152,7 +152,11 @@
152 <script src="/pages/base/timesmodel/js/v2/core/InternalGroupObj.js"></script> 152 <script src="/pages/base/timesmodel/js/v2/core/InternalGroupObj.js"></script>
153 <script src="/pages/base/timesmodel/js/v2/core/InternalLpObj.js"></script> 153 <script src="/pages/base/timesmodel/js/v2/core/InternalLpObj.js"></script>
154 <script src="/pages/base/timesmodel/js/v2/core/InternalScheduleObj.js"></script> 154 <script src="/pages/base/timesmodel/js/v2/core/InternalScheduleObj.js"></script>
155 -<script src="/pages/base/timesmodel/js/v2/AdjustTripStrategy.js"></script> 155 +<script src="/pages/base/timesmodel/js/v2/strategy/adjust/AdjustTripS1.js"></script>
  156 +<script src="/pages/base/timesmodel/js/v2/strategy/adjust/AdjustTripS2.js"></script>
  157 +<script src="/pages/base/timesmodel/js/v2/strategy/adjust/AdjustTripS3.js"></script>
  158 +<script src="/pages/base/timesmodel/js/v2/strategy/adjust/AdjustTripS4.js"></script>
  159 +<script src="/pages/base/timesmodel/js/v2/strategy/StrategyUtils.js"></script>
156 <script src="/pages/base/timesmodel/js/v2/main_v2.js"></script> 160 <script src="/pages/base/timesmodel/js/v2/main_v2.js"></script>
157 <script src="/pages/base/timesmodel/js/d3.relationshipgraph.js"></script> 161 <script src="/pages/base/timesmodel/js/d3.relationshipgraph.js"></script>
158 <script src="/pages/base/timesmodel/js/errorinfo.js"></script> 162 <script src="/pages/base/timesmodel/js/errorinfo.js"></script>
src/main/resources/static/pages/base/timesmodel/js/d3.relationshipgraph.js
@@ -321,7 +321,7 @@ $(&#39;.parambtn&#39;).on(&#39;click&#39;, function() { @@ -321,7 +321,7 @@ $(&#39;.parambtn&#39;).on(&#39;click&#39;, function() {
321 $.get('/pages/base/timesmodel/paramadd.html', function(m){ 321 $.get('/pages/base/timesmodel/paramadd.html', function(m){
322 $(pjaxContainer).append(m); 322 $(pjaxContainer).append(m);
323 // 规定被选元素要触发的事件。可以使自定义事件(使用 bind() 函数来附加),或者任何标准事件。 323 // 规定被选元素要触发的事件。可以使自定义事件(使用 bind() 函数来附加),或者任何标准事件。
324 - $('#paramadd_mobal').trigger('paramAddMobal.show', $_GlobalGraph); 324 + $('#paramadd_mobal').trigger('paramAddMobal.show', Main_v2);
325 }); 325 });
326 }); 326 });
327 327
src/main/resources/static/pages/base/timesmodel/js/v2/ParameterObj.js
@@ -372,6 +372,13 @@ var ParameterObj = function() { @@ -372,6 +372,13 @@ var ParameterObj = function() {
372 372
373 }, 373 },
374 374
  375 + //------------ 获取生成策略函数 ------------//
  376 + fnGetAdjustStrategyId : function() {
  377 + return _formMap.strategy || 'AdjustTripS1';
  378 + },
  379 +
  380 + // TODO:还有其他策略
  381 +
375 //------------ 获取首班末班时间 ------------// 382 //------------ 获取首班末班时间 ------------//
376 /** 383 /**
377 * 获取上行首班时间对象。 384 * 获取上行首班时间对象。
@@ -680,7 +687,7 @@ var ParameterObj = function() { @@ -680,7 +687,7 @@ var ParameterObj = function() {
680 return _fcjxIntervalObj.epeakfcjx.min; 687 return _fcjxIntervalObj.epeakfcjx.min;
681 }, 688 },
682 /** 689 /**
683 - * 获取晚高峰最发车间隙。 690 + * 获取晚高峰最发车间隙。
684 * @returns int 691 * @returns int
685 */ 692 */
686 getEPeakMaxFcjx: function() { 693 getEPeakMaxFcjx: function() {
src/main/resources/static/pages/base/timesmodel/js/v2/core/InternalBcObj.js
@@ -140,6 +140,9 @@ InternalBcObj.prototype.setArrTimeObj = function(oTime) { @@ -140,6 +140,9 @@ InternalBcObj.prototype.setArrTimeObj = function(oTime) {
140 InternalBcObj.prototype.getBcTime = function() { 140 InternalBcObj.prototype.getBcTime = function() {
141 return this._$_bcsj; 141 return this._$_bcsj;
142 }; 142 };
  143 +InternalBcObj.prototype.setBcTime = function(iTime) {
  144 + this._$_bcsj = iTime;
  145 +};
143 /** 146 /**
144 * 获取停站时间。 147 * 获取停站时间。
145 * @returns int 148 * @returns int
src/main/resources/static/pages/base/timesmodel/js/v2/core/InternalLpObj.js
@@ -492,7 +492,8 @@ InternalLpObj.prototype.fnGetQBcIndexWithFcTimeFromGroupArray = function( @@ -492,7 +492,8 @@ InternalLpObj.prototype.fnGetQBcIndexWithFcTimeFromGroupArray = function(
492 group = groupArray[i]; 492 group = groupArray[i];
493 if (group) { 493 if (group) {
494 oBc = group.getBc1(); 494 oBc = group.getBc1();
495 - if (oBc != undefined && (oBc.isUp() == hasUp || oBc.isUp() == hasDown)) { 495 +
  496 + if (oBc != undefined && ((hasUp && hasDown) || (hasUp && (oBc.isUp() == hasUp)) || (hasDown && (!oBc.isUp() == hasDown)))) {
496 bc1time = group.getBc1().getFcTimeObj(); 497 bc1time = group.getBc1().getFcTimeObj();
497 console.log("bc1time=" + bc1time.format("HH:mm") + " tempdiff=" + tempdiff); 498 console.log("bc1time=" + bc1time.format("HH:mm") + " tempdiff=" + tempdiff);
498 tempdiff = Math.abs(bc1time.diff(fctime)); 499 tempdiff = Math.abs(bc1time.diff(fctime));
@@ -518,7 +519,7 @@ InternalLpObj.prototype.fnGetQBcIndexWithFcTimeFromGroupArray = function( @@ -518,7 +519,7 @@ InternalLpObj.prototype.fnGetQBcIndexWithFcTimeFromGroupArray = function(
518 } 519 }
519 520
520 oBc = group.getBc2(); 521 oBc = group.getBc2();
521 - if (oBc != undefined && (oBc.isUp() == hasUp || oBc.isUp() == hasDown)) { 522 + if (oBc != undefined && ((hasUp && hasDown) || (hasUp && (oBc.isUp() == hasUp)) || (hasDown && (!oBc.isUp() == hasDown)))) {
522 bc2time = group.getBc2().getFcTimeObj(); 523 bc2time = group.getBc2().getFcTimeObj();
523 console.log("bc2time=" + bc2time.format("HH:mm") + " tempdiff=" + tempdiff); 524 console.log("bc2time=" + bc2time.format("HH:mm") + " tempdiff=" + tempdiff);
524 tempdiff = Math.abs(bc2time.diff(fctime)); 525 tempdiff = Math.abs(bc2time.diff(fctime));
@@ -755,6 +756,11 @@ InternalLpObj.prototype.fnAddEatBc = function(groupIndex, bcIndex, factory, para @@ -755,6 +756,11 @@ InternalLpObj.prototype.fnAddEatBc = function(groupIndex, bcIndex, factory, para
755 var oPreBc; 756 var oPreBc;
756 var oEatBc; 757 var oEatBc;
757 var iBcModifyTime; 758 var iBcModifyTime;
  759 +
  760 + if (!this.getBc(groupIndex, bcIndex)) { //
  761 + return 0;
  762 + }
  763 +
758 oPreBc = this.getBc( // 前一个邻接班次 764 oPreBc = this.getBc( // 前一个邻接班次
759 bcIndex == 0 ? groupIndex - 1 : groupIndex, 765 bcIndex == 0 ? groupIndex - 1 : groupIndex,
760 bcIndex == 1 ? 0 : 1); 766 bcIndex == 1 ? 0 : 1);
@@ -855,113 +861,6 @@ InternalLpObj.prototype.fnAdjustBcInterval = function(iPeakAverStopTime, iTrough @@ -855,113 +861,6 @@ InternalLpObj.prototype.fnAdjustBcInterval = function(iPeakAverStopTime, iTrough
855 }; 861 };
856 862
857 /** 863 /**
858 - * 调整车次block的班次停站时间,如果不在范围内,调整成平均停站时间。  
859 - * @param oParam {ParameterObj} 参数对象  
860 - */  
861 -InternalLpObj.prototype.fnAdjustBcTime = function(oParam) {  
862 - // 获取车次链个数  
863 - var iBcChainCount = this.fnGetBcChainCount();  
864 -  
865 - var i;  
866 - var j;  
867 - var oBcIndex;  
868 - var iQIndex;  
869 - var iBcIndex;  
870 - var iBcCount;  
871 - var oBc;  
872 - var oNextBc;  
873 -  
874 - var iBcStopTime;  
875 -  
876 - var aRangeStopTime;  
877 -  
878 - for (i = 0; i < iBcChainCount; i++) {  
879 - oBcIndex = this.fnGetBcChainInfo(i);  
880 - iQIndex = oBcIndex["s_q"];  
881 - iBcIndex = oBcIndex["s_b"];  
882 - iBcCount = oBcIndex["bcount"];  
883 -  
884 - for (j = 0; j < iBcCount - 1; j++) {  
885 - oBc = this.getBc(iQIndex, iBcIndex);  
886 - oNextBc = this.getBc(  
887 - iBcIndex == 0 ? iQIndex : iQIndex + 1,  
888 - iBcIndex == 0 ? 1 : 0);  
889 -  
890 - if (oNextBc.fnIsFirstBc()) { // 如果同一路牌连续2个方向首站班次,都不做处理  
891 - // 两个班次都是头班车,则停站时间不考虑范围,直接计算  
892 - iBcStopTime = oNextBc.getFcTimeObj().diff(oBc.getArrTimeObj(), "m");  
893 - oBc.setStopTime(iBcStopTime);  
894 -  
895 - } else {  
896 - // 获取当前班次的停站时间范围  
897 - aRangeStopTime = oParam.calcuTripLayoverTimeRange(  
898 - oBc.getArrTimeObj(), oBc.isUp(), oBc.getBcTime()  
899 - );  
900 - // 获取当前班次停站时间  
901 - iBcStopTime = oNextBc.getFcTimeObj().diff(oBc.getArrTimeObj(), "m");  
902 -  
903 - // 不改变当前班次的行驶时间,修正停站时间和下一个班次的发车时间和停站时间  
904 - if (oBc.fnGetEatTime() > 0) {  
905 - // 当前班次后有吃饭时间, 则没有停站时间了  
906 - oBc.setStopTime(0);  
907 - // 修改下一个班次的发车时间,到达时间  
908 - oNextBc.setFcTimeObj(oParam.addMinute(  
909 - oBc.getArrTimeObj(),  
910 - oBc.fnGetEatTime())  
911 - );  
912 - oNextBc.setArrTimeObj(oParam.addMinute(  
913 - oNextBc.getFcTimeObj(),  
914 - oParam.calcuTravelTime(  
915 - oNextBc.getFcTimeObj(),  
916 - oNextBc.isUp())  
917 - ));  
918 - } else {  
919 - if (iBcStopTime >= aRangeStopTime[0] && iBcStopTime<= aRangeStopTime[1]) {  
920 - // 在范围内,重新设置以下停站时间  
921 - oBc.setStopTime(iBcStopTime);  
922 -  
923 - } else if (iBcStopTime < aRangeStopTime[0]) {  
924 - oBc.setStopTime(aRangeStopTime[0]);  
925 - // 修改下一个班次的发车时间,到达时间  
926 - oNextBc.setFcTimeObj(oParam.addMinute(  
927 - oBc.getArrTimeObj(),  
928 - oBc.getStopTime())  
929 - );  
930 - oNextBc.setArrTimeObj(oParam.addMinute(  
931 - oNextBc.getFcTimeObj(),  
932 - oParam.calcuTravelTime(  
933 - oNextBc.getFcTimeObj(),  
934 - oNextBc.isUp())  
935 - ));  
936 - } else {  
937 - oBc.setStopTime(aRangeStopTime[1]);  
938 - // 修改下一个班次的发车时间,到达时间  
939 - oNextBc.setFcTimeObj(oParam.addMinute(  
940 - oBc.getArrTimeObj(),  
941 - oBc.getStopTime())  
942 - );  
943 - oNextBc.setArrTimeObj(oParam.addMinute(  
944 - oNextBc.getFcTimeObj(),  
945 - oParam.calcuTravelTime(  
946 - oNextBc.getFcTimeObj(),  
947 - oNextBc.isUp())  
948 - ));  
949 - }  
950 - }  
951 - }  
952 -  
953 -  
954 - iBcIndex = iBcIndex == 0 ? 1 : 0;  
955 - iQIndex = iBcIndex == 0 ? iQIndex + 1 : iQIndex;  
956 -  
957 - }  
958 -  
959 - // 最后一个班次停站时间为0  
960 - this.getBc(iQIndex, iBcIndex).setStopTime(0);  
961 - }  
962 -};  
963 -  
964 -/**  
965 * 返回指定班次的上一个班次。 864 * 返回指定班次的上一个班次。
966 * @param oBc {moment} 指定班次 865 * @param oBc {moment} 指定班次
967 * @returns {object} 上一个班次,如果没有,返回false 866 * @returns {object} 上一个班次,如果没有,返回false
@@ -1014,61 +913,104 @@ InternalLpObj.prototype.getPreBc = function(oBc) { @@ -1014,61 +913,104 @@ InternalLpObj.prototype.getPreBc = function(oBc) {
1014 }; 913 };
1015 914
1016 /** 915 /**
1017 - * 是否能调整班次的发车时间。  
1018 - * @param oBc 指定班次  
1019 - * @param iStep 修正步长  
1020 - * @param oParam 参数对象 916 + * 通过修改layover时间,修正班次的发车,到达时间。
  917 + * 如果layover时间不符合范围要求,修改成平均时间。
  918 + * @param oParam {ParameterObj} 参数对象
1021 */ 919 */
1022 -InternalLpObj.prototype.isModifyBcFcsj = function(oBc, iStep, oParam) {  
1023 - // 获取车次链个数  
1024 - var iBcChainCount = this.fnGetBcChainCount(); 920 +InternalLpObj.prototype.fnAdjustBcTime_layover = function(oParam) {
  921 + // 获取车次链个数(连班路牌1个,分班路牌2个)
  922 + var iBlockCount = this.fnGetBcChainCount();
1025 923
1026 var i; 924 var i;
1027 var j; 925 var j;
1028 - var oBcIndex;  
1029 - var iQIndex;  
1030 - var iBcIndex;  
1031 - var iBcCount;  
1032 - var oPreBc; 926 + var aTrip; // 每个block关联的trip列表
  927 + var trip; // 当前班次
  928 + var nextTrip; // 下一个班次
  929 + var layOverTime;
  930 + var aLayOverTimeRange;
1033 931
1034 - var iBcStopTime; 932 + var oBcIndex;
  933 + var iQIndex; // block开始第几圈缩影
  934 + var iBcIndex; // block开始第几个班次
  935 + var iBcCount; // block的trip数目
1035 936
1036 - var aRangeStopTime;  
1037 937
1038 - for (i = 0; i < iBcChainCount; i++) { 938 + for (i = 0; i < iBlockCount; i++) {
  939 + // 获取block关联的trip列表
1039 oBcIndex = this.fnGetBcChainInfo(i); 940 oBcIndex = this.fnGetBcChainInfo(i);
1040 iQIndex = oBcIndex["s_q"]; 941 iQIndex = oBcIndex["s_q"];
1041 iBcIndex = oBcIndex["s_b"]; 942 iBcIndex = oBcIndex["s_b"];
1042 iBcCount = oBcIndex["bcount"]; 943 iBcCount = oBcIndex["bcount"];
1043 944
1044 - oPreBc = this.getPreBc(oBc);  
1045 -  
1046 - // 如果是第一个班次  
1047 - if (!oPreBc) {  
1048 - if (oBc.fnIsFirstBc()) { // 如果是方向头班车  
1049 - return false;  
1050 - } else {  
1051 - return true;  
1052 - } 945 + aTrip = [];
  946 + for (j = 0; j < iBcCount; j++) {
  947 + aTrip.push(this.getBc(iQIndex, iBcIndex));
  948 + iBcIndex = iBcIndex == 0 ? 1 : 0;
  949 + iQIndex = iBcIndex == 0 ? iQIndex + 1 : iQIndex;
1053 } 950 }
1054 951
1055 - if (oPreBc.fnGetEatTime() > 0) { // 如果是吃饭班次,不能修改发车时间  
1056 - return false; 952 + if (aTrip.length < 2) {
  953 + // 两个trip一起处理,只有1个trip的block不处理
  954 + continue;
1057 } 955 }
  956 + // 迭代block,处理trip的发车,到达,停站时间
  957 + for (j = 0; j < aTrip.length - 1; j++) {
  958 + trip = aTrip[j];
  959 + nextTrip = aTrip[j + 1];
  960 +
  961 + if (trip.fnIsFirstBc() && nextTrip.fnIsFirstBc()) {
  962 + // 如果两个方向的首班车都在一个block上
  963 + // 则停站时间不考虑范围,直接发车时间-到达时间
  964 + layOverTime = nextTrip.getFcTimeObj().diff(trip.getArrTimeObj(), "m");
  965 + trip.setStopTime(layOverTime);
  966 + continue;
  967 + }
1058 968
1059 - aRangeStopTime = oParam.calcuTripLayoverTimeRange(  
1060 - oPreBc.getArrTimeObj(), oPreBc.isUp(), oPreBc.getBcTime()  
1061 - );  
1062 - iBcStopTime = oPreBc.getStopTime() + iStep;  
1063 - if (iBcStopTime >= aRangeStopTime[0] && iBcStopTime <= aRangeStopTime[1]) {  
1064 - return true;  
1065 - } else {  
1066 - return false;  
1067 - } 969 + //------------- 吃饭班次处理 -----------//
  970 + // 获取当前trip的layover的范围
  971 + aLayOverTimeRange = oParam.calcuTripLayoverTimeRange(
  972 + trip.getArrTimeObj(), trip.isUp(), trip.getBcTime()
  973 + );
  974 + // 重新计算当前班次layover时间
  975 + layOverTime = nextTrip.getFcTimeObj().diff(trip.getArrTimeObj(), "m");
  976 + if (trip.fnGetEatTime() > 0) {
  977 + // 如果当前班次layover是要吃饭的
  978 + // 则停站时间没有,变成吃饭时间
  979 + trip.setStopTime(0);
  980 + // 修改下一个班次的发车时间,到达时间
  981 + nextTrip.setFcTimeObj(oParam.addMinute(
  982 + trip.getArrTimeObj(),
  983 + trip.fnGetEatTime())
  984 + );
  985 + nextTrip.setBcTime(oParam.calcuTravelTime(nextTrip.getFcTimeObj(), nextTrip.isUp()));
  986 + nextTrip.setArrTimeObj(oParam.addMinute(nextTrip.getFcTimeObj(), nextTrip.getBcTime()));
  987 + continue;
  988 + }
  989 +
  990 + //------------- 正常班次处理 -----------//
  991 + if (layOverTime < aLayOverTimeRange[0] || layOverTime > aLayOverTimeRange[1]) {
  992 + // 如果layover时间在范围之外,使用平均值
  993 + layOverTime = oParam.fnCalcuFixedStopNumber(
  994 + trip.getArrTimeObj(),
  995 + trip.isUp(),
  996 + oParam.calcuTravelTime(
  997 + trip.getFcTimeObj(),
  998 + trip.isUp())
  999 + );
1068 1000
  1001 + trip.setStopTime(layOverTime);
  1002 + nextTrip.setFcTimeObj(oParam.addMinute(
  1003 + trip.getArrTimeObj(),
  1004 + trip.getStopTime())
  1005 + );
  1006 + nextTrip.setBcTime(oParam.calcuTravelTime(nextTrip.getFcTimeObj(), nextTrip.isUp()));
  1007 + nextTrip.setArrTimeObj(oParam.addMinute(nextTrip.getFcTimeObj(), nextTrip.getBcTime()));
  1008 + }
  1009 + }
  1010 + // 最后一个trip的layover时间为0
  1011 + aTrip[j].setStopTime(0);
1069 1012
1070 } 1013 }
1071 -  
1072 }; 1014 };
1073 1015
1074 // TODO 1016 // TODO
src/main/resources/static/pages/base/timesmodel/js/v2/core/InternalScheduleObj.js
@@ -163,7 +163,7 @@ var InternalScheduleObj = function(paramObj, lpArray, factory) { @@ -163,7 +163,7 @@ var InternalScheduleObj = function(paramObj, lpArray, factory) {
163 var iFirstStopTime = 163 var iFirstStopTime =
164 _paramObj.fnCalcuFixedStopNumber( 164 _paramObj.fnCalcuFixedStopNumber(
165 _paramObj.addMinute(aBcArray[0].getFcTimeObj(), -10), 165 _paramObj.addMinute(aBcArray[0].getFcTimeObj(), -10),
166 - _qIsUp, 166 + !_qIsUp,
167 iXXTime 167 iXXTime
168 ); 168 );
169 var oFlagBc = _factory.createBcObj( // 标记班次 169 var oFlagBc = _factory.createBcObj( // 标记班次
@@ -174,9 +174,6 @@ var InternalScheduleObj = function(paramObj, lpArray, factory) { @@ -174,9 +174,6 @@ var InternalScheduleObj = function(paramObj, lpArray, factory) {
174 _paramObj.addMinute(aBcArray[0].getFcTimeObj(), -(iFirstStopTime + iXXTime)), 174 _paramObj.addMinute(aBcArray[0].getFcTimeObj(), -(iFirstStopTime + iXXTime)),
175 _paramObj 175 _paramObj
176 ); 176 );
177 - console.log("ddfdfdf=" + (iFirstStopTime));  
178 - console.log("ddfdfdf=" + (iXXTime));  
179 - console.log("ttt ==" + oFlagBc.getFcTimeObj().format("HH:mm"));  
180 oFlagBc.fnSetDelFlag(true); // 标记了删除记号 177 oFlagBc.fnSetDelFlag(true); // 标记了删除记号
181 178
182 _internalLpArray[0].setBc(0, 1, oFlagBc); 179 _internalLpArray[0].setBc(0, 1, oFlagBc);
@@ -467,109 +464,71 @@ var InternalScheduleObj = function(paramObj, lpArray, factory) { @@ -467,109 +464,71 @@ var InternalScheduleObj = function(paramObj, lpArray, factory) {
467 464
468 //----------------------- 初始化方法4,计算中标线位置 -------------------------// 465 //----------------------- 初始化方法4,计算中标线位置 -------------------------//
469 var _iZbx_lpIndex; // 中标线对应第几个路牌 466 var _iZbx_lpIndex; // 中标线对应第几个路牌
470 -  
471 var _fnInitFun4 = function() { // 初始化方法4 467 var _fnInitFun4 = function() { // 初始化方法4
472 console.log("//---------------- 行车计划,初始化方法4 start ----------------//"); 468 console.log("//---------------- 行车计划,初始化方法4 start ----------------//");
473 469
474 - //---------------------------- 1、模拟一个中标线,使用临时路牌 ----------------------//  
475 - // 构造中标线  
476 - // 中标线开始时间,就是方向的首班车时间 470 + // 中标线开始时间,早的首班车时间,和上标线的开始时间方向相反
477 var oSt = !_qIsUp ? _paramObj.getUpFirstDTimeObj() : _paramObj.getDownFirstDTimeObj(); 471 var oSt = !_qIsUp ? _paramObj.getUpFirstDTimeObj() : _paramObj.getDownFirstDTimeObj();
478 - // 上标线结束时间,使用最晚的末班车时间,结束时间的班次方向  
479 - // 上标线结束时间,使用最晚的末班车时间,结束时间的班次方向  
480 - var oEt;  
481 - if (_paramObj.getUpLastDtimeObj().isBefore(  
482 - _paramObj.getDownLastDTimeObj())) {  
483 - oEt = _paramObj.getDownLastDTimeObj();  
484 - } else {  
485 - oEt = _paramObj.getUpLastDtimeObj();  
486 - }  
487 472
488 - var oTempLp = new InternalLpObj({lpNo: -999, lpName: "-999"}, _qCount, _qIsUp);  
489 - oTempLp.initDataFromTimeToTime(  
490 - oSt,  
491 - oEt,  
492 - !_qIsUp,  
493 - 0,  
494 - _paramObj,  
495 - _factory  
496 - );  
497 -  
498 - //------------------------ 2、找出中标线的早高峰班次,计算应该插在当前路牌数组的那个位置 ----------------//  
499 - // 找出中标线对应的早高峰的班次对象  
500 - var oZb_gf_bc = oTempLp.getBc(_approximate_zgfQIndex, _approximate_zgfBIndex);  
501 - //alert(oZb_gf_bc.getFcTimeObj().format("HH:mm"));  
502 -  
503 - // 把所有连班路牌高峰班次重新构造成一个一个的圈数组,计算对应中标线最近的是第几个路牌  
504 - // 中标线和上标线一样在连班路牌上  
505 - var aTempq = [];  
506 - var oTempq;  
507 - var oTempb; 473 + // 1、使用上标线的开始时间的之前的虚拟班次,往下拉,模拟构造每个路牌的开头的虚拟班次
508 var i; 474 var i;
509 - var oLp;  
510 -  
511 - var aLbIndexes = []; // 连班的路牌索引  
512 - for (i = 0; i < _internalLpArray.length; i++) {  
513 - if (_internalLpArray[i].isBxLb()) {  
514 - aLbIndexes.push(i);  
515 - } 475 + var _aFBc = [];
  476 + _aFBc.push(_internalLpArray[0].getBc(0, 1)); // 第一个班次是上标线的开头虚拟班次
  477 + for (i = 1; i < _internalLpArray.length; i++) {
  478 + _aFBc.push(_fnGenerateBc(i, 0, 1));
516 } 479 }
517 480
518 - for (i = 0; i < aLbIndexes.length; i++) {  
519 - oLp = _internalLpArray[aLbIndexes[i]]; 481 + // 2、使用中标线开始时间,比对虚拟班次,找出最接近的(但是要大于等于时间)
  482 + var _iLpIndex = -1; // 中标线的路牌索引
  483 + for (i = 0; i < _aFBc.length; i++) {
  484 + console.log("比较班次的发车时间=" + _aFBc[i].getFcTimeObj().format("HH:mm"));
520 485
521 - oTempb = oLp.getBc(_approximate_zgfQIndex, _approximate_zgfBIndex);  
522 - if (oTempb.isUp() == _qIsUp) {  
523 - oTempq = new InternalGroupObj(oLp, _qIsUp, oTempb, undefined);  
524 - } else {  
525 - oTempq = new InternalGroupObj(oLp, _qIsUp, undefined, oTempb); 486 + if (!_internalLpArray[i].isBxLb()) {
  487 + // 如果不是连班,不计算
  488 + continue;
526 } 489 }
527 - aTempq.push(oTempq);  
528 490
  491 + if (_aFBc[i].getFcTimeObj().diff(oSt) >= 0) {
  492 + _iLpIndex = i;
  493 + break;
  494 + }
529 } 495 }
530 496
531 - var aTtindex = oTempLp.fnGetQBcIndexWithFcTimeFromGroupArray( // 找出最接近中标线的路牌索引  
532 - oZb_gf_bc.getFcTimeObj(),  
533 - aTempq,  
534 - true,  
535 - true  
536 - ); 497 + _iZbx_lpIndex = _iLpIndex; // 中标线放在第几个路牌
537 498
538 - _iZbx_lpIndex = aLbIndexes[aTtindex[0]]; // 中标线放在第几个路牌 499 + // 3、设定中标线班次
  500 + _aFBc[_iZbx_lpIndex].fnSetIsFirstBc(true); // 设置首班班次标识
  501 + _aFBc[_iZbx_lpIndex].setLp(_internalLpArray[_iZbx_lpIndex]); // 设置关联的路牌
  502 + _aFBc[_iZbx_lpIndex].fnSetDelFlag(false); // 不是标识班次
  503 + _internalLpArray[_iZbx_lpIndex].setBc(0, 1, _aFBc[_iZbx_lpIndex]); // 将班次加入路牌
539 504
540 - oTempLp.getMinBcObj().fnSetIsFirstBc(true); // 设置首班班次标识 505 + // 4、修改班次时间为中标时间
  506 + var _iDiffTime = _aFBc[_iZbx_lpIndex].getFcTimeObj().diff(oSt, "m");
  507 + _aFBc[_iZbx_lpIndex].getFcTimeObj().add(-_iDiffTime, "m");
  508 + _aFBc[_iZbx_lpIndex].getArrTimeObj().add(-_iDiffTime, "m");
  509 + _aFBc[_iZbx_lpIndex].setStopTime(_aFBc[_iZbx_lpIndex].getStopTime() + _iDiffTime);
541 510
542 - if (_iZbx_lpIndex == 0) { // 如果中标线和上标线一致  
543 - var oFirstBcIndexes = oTempLp.getMinBcObjPosition();  
544 - var oFirstBc = oTempLp.getMinBcObj();  
545 - oFirstBc.setLp(_internalLpArray[_iZbx_lpIndex]);  
546 - oFirstBc.fnSetDelFlag(false);  
547 - _internalLpArray[_iZbx_lpIndex].setBc(oFirstBcIndexes[0], oFirstBcIndexes[1], oFirstBc);  
548 - } else {  
549 - oTempLp.setLp(_lpArray[_iZbx_lpIndex]); // 设置原始路牌对象  
550 - oTempLp._$_aVerticalIntervalTime = _internalLpArray[_iZbx_lpIndex]._$_aVerticalIntervalTime; // 设置纵向最小发车间隔  
551 - oTempLp.setBxLb(_internalLpArray[_iZbx_lpIndex].isBxLb());  
552 - oTempLp.setBxFb(_internalLpArray[_iZbx_lpIndex].isBxFb());  
553 - oTempLp.setBxFb5_2(_internalLpArray[_iZbx_lpIndex].isBxFb5_2());  
554 -  
555 - // 修正除了第一个班次外,其余其他班次  
556 - var iBcindex = 0;  
557 - for (i = 1; i < _qCount; i++) {  
558 - while (iBcindex <= 1) {  
559 - if (oTempLp.getBc(i, iBcindex)) { // 替换存在的班次  
560 - oTempLp.setBc(i, iBcindex, _fnGenerateBc(_iZbx_lpIndex, i, iBcindex));  
561 - }  
562 - iBcindex ++;  
563 - }  
564 - iBcindex = 0; 511 +
  512 + // 5、如果中标线的开始时间比较早,则中标线下一个班次可能空,补,一直到前面添加的高峰班次为止
  513 + for (i = 1; i < _qCount; i++) { // 从第二圈开始,因为第一圈第二个班次就是中标线的开始时间
  514 + if (_internalLpArray[_iZbx_lpIndex].getBc(i, 0)) {
  515 + break;
  516 + } else {
  517 + _fnGenerateBcAndSetBc(_iZbx_lpIndex, i, 0);
565 } 518 }
566 519
567 - _internalLpArray[_iZbx_lpIndex] = oTempLp; 520 + if (_internalLpArray[_iZbx_lpIndex].getBc(i, 1)) {
  521 + break;
  522 + } else {
  523 + _fnGenerateBcAndSetBc(_iZbx_lpIndex, i, 1);
  524 + }
568 } 525 }
569 526
570 console.log("中标线对应第" + (_iZbx_lpIndex + 1) + "个路牌"); 527 console.log("中标线对应第" + (_iZbx_lpIndex + 1) + "个路牌");
571 528
572 console.log("//---------------- 行车计划,初始化方法4 end ----------------//"); 529 console.log("//---------------- 行车计划,初始化方法4 end ----------------//");
  530 +
  531 +
573 }; 532 };
574 533
575 //-------------------- 重要的内部方法 -----------------------// 534 //-------------------- 重要的内部方法 -----------------------//
@@ -1176,7 +1135,7 @@ var InternalScheduleObj = function(paramObj, lpArray, factory) { @@ -1176,7 +1135,7 @@ var InternalScheduleObj = function(paramObj, lpArray, factory) {
1176 var aLbLpindexes = []; // 除上标线,中标线的连班路牌索引 1135 var aLbLpindexes = []; // 除上标线,中标线的连班路牌索引
1177 var i; 1136 var i;
1178 for (i = 0; i < _internalLpArray.length; i++) { 1137 for (i = 0; i < _internalLpArray.length; i++) {
1179 - if (_internalLpArray[i].isBxLb() && i != 0 && i != _iZbx_lpIndex) { 1138 + if (_internalLpArray[i].isBxLb() && i != 0) {
1180 aLbLpindexes.push(i); 1139 aLbLpindexes.push(i);
1181 } 1140 }
1182 } 1141 }
@@ -1225,7 +1184,10 @@ var InternalScheduleObj = function(paramObj, lpArray, factory) { @@ -1225,7 +1184,10 @@ var InternalScheduleObj = function(paramObj, lpArray, factory) {
1225 var iBindex; 1184 var iBindex;
1226 // 补上标线到中标线之间的连班路牌的班次 1185 // 补上标线到中标线之间的连班路牌的班次
1227 for (i = 0; i < aLbLpindexes.length; i++) { 1186 for (i = 0; i < aLbLpindexes.length; i++) {
1228 - if (aLbLpindexes[i] > 0 && aLbLpindexes[i] < _iZbx_lpIndex) { 1187 + // 中标线可能也要补充,因为中标线生成算法有变
  1188 + // 如果上标线==中标线为止,不用补了
  1189 +
  1190 + if (aLbLpindexes[i] > 0 && aLbLpindexes[i] <= _iZbx_lpIndex) {
1229 oLp = _internalLpArray[aLbLpindexes[i]]; 1191 oLp = _internalLpArray[aLbLpindexes[i]];
1230 aMinbcPos = oLp.getMinBcObjPosition(); 1192 aMinbcPos = oLp.getMinBcObjPosition();
1231 iQindex = aMinbcPos[0]; 1193 iQindex = aMinbcPos[0];
@@ -1398,7 +1360,7 @@ var InternalScheduleObj = function(paramObj, lpArray, factory) { @@ -1398,7 +1360,7 @@ var InternalScheduleObj = function(paramObj, lpArray, factory) {
1398 var iDEQIndex = aDEIndex[0]; 1360 var iDEQIndex = aDEIndex[0];
1399 var iDEBIndex = aDEIndex[1]; 1361 var iDEBIndex = aDEIndex[1];
1400 1362
1401 - // 注意,本模型只有连班才有吃饭 1363 + // TODO:注意,本模型只有连班才有吃饭
1402 1364
1403 var i; 1365 var i;
1404 var oLp; 1366 var oLp;
@@ -1415,7 +1377,6 @@ var InternalScheduleObj = function(paramObj, lpArray, factory) { @@ -1415,7 +1377,6 @@ var InternalScheduleObj = function(paramObj, lpArray, factory) {
1415 var j; 1377 var j;
1416 for (i = 0; i < aLbIndex.length; i++) { 1378 for (i = 0; i < aLbIndex.length; i++) {
1417 oLp = _internalLpArray[aLbIndex[i]]; 1379 oLp = _internalLpArray[aLbIndex[i]];
1418 -  
1419 // 午饭 1380 // 午饭
1420 iLTime = oLp.fnAddEatBc(iLEQIndex, iLEBIndex, _factory, _paramObj); 1381 iLTime = oLp.fnAddEatBc(iLEQIndex, iLEBIndex, _factory, _paramObj);
1421 // 晚饭 1382 // 晚饭
@@ -1670,7 +1631,7 @@ var InternalScheduleObj = function(paramObj, lpArray, factory) { @@ -1670,7 +1631,7 @@ var InternalScheduleObj = function(paramObj, lpArray, factory) {
1670 // } 1631 // }
1671 1632
1672 for (var i = 0; i < _internalLpArray.length; i++) { 1633 for (var i = 0; i < _internalLpArray.length; i++) {
1673 - _internalLpArray[i].fnAdjustBcTime(_paramObj); 1634 + _internalLpArray[i].fnAdjustBcTime_layover(_paramObj);
1674 } 1635 }
1675 }, 1636 },
1676 1637
@@ -1740,7 +1701,10 @@ var InternalScheduleObj = function(paramObj, lpArray, factory) { @@ -1740,7 +1701,10 @@ var InternalScheduleObj = function(paramObj, lpArray, factory) {
1740 var aUpBc = !oStartTime ? _fnGetBcList(true) : _fnGetBcList2(true, oStartTime); // 指定方向的班次列表 1701 var aUpBc = !oStartTime ? _fnGetBcList(true) : _fnGetBcList2(true, oStartTime); // 指定方向的班次列表
1741 var aDownBc = !oStartTime ? _fnGetBcList(false) : _fnGetBcList2(false, oStartTime); // 指定方向的班次列表 1702 var aDownBc = !oStartTime ? _fnGetBcList(false) : _fnGetBcList2(false, oStartTime); // 指定方向的班次列表
1742 // 使用策略类调用指定策略函数,注意 AdjustTripStrategy.js 导入 1703 // 使用策略类调用指定策略函数,注意 AdjustTripStrategy.js 导入
1743 - AdjustTripStrategy.sFn("ADJUST_TRIP")(aUpBc, aDownBc, this, _paramObj); 1704 + // console.log(StrategyUtils);
  1705 + eval("var _oFn = " + _paramObj.fnGetAdjustStrategyId() + ";");
  1706 + StrategyUtils.sConfig("ADJUST_TRIP", _oFn);
  1707 + StrategyUtils.sFn("ADJUST_TRIP")(aUpBc, aDownBc, this, _paramObj);
1744 1708
1745 }, 1709 },
1746 1710
src/main/resources/static/pages/base/timesmodel/js/v2/main_v2.js
@@ -747,6 +747,41 @@ var Main_v2 = function() { @@ -747,6 +747,41 @@ var Main_v2 = function() {
747 747
748 }; 748 };
749 749
  750 + var __funCalcuExportData_paramInfoList = function() {
  751 + return [
  752 + {'paramItem' : '上行首班时间', 'paramValue' : _paramObj.getUpFirstDTimeObj().format("HH:mm")},
  753 + {'paramItem' : '上行末班时间', 'paramValue' : _paramObj.getUpLastDtimeObj().format("HH:mm")},
  754 + {'paramItem' : '下行首班时间', 'paramValue' : _paramObj.getDownFirstDTimeObj().format("HH:mm")},
  755 + {'paramItem' : '下行末班时间', 'paramValue' : _paramObj.getDownLastDTimeObj().format("HH:mm")},
  756 + {'paramItem' : '早高峰开始时间', 'paramValue' : _paramObj.getMPeakStartTimeObj().format("HH:mm")},
  757 + {'paramItem' : '早高峰结束时间', 'paramValue' : _paramObj.getMPeakEndTimeObj().format("HH:mm")},
  758 + {'paramItem' : '晚高峰开始时间', 'paramValue' : _paramObj.getEPeakStartTimeObj().format("HH:mm")},
  759 + {'paramItem' : '晚高峰结束时间', 'paramValue' : _paramObj.getEPeakEndTimeObj().format("HH:mm")},
  760 + {'paramItem' : '上行进场时间', 'paramValue' : _paramObj.getUpInTime()},
  761 + {'paramItem' : '上行出场时间', 'paramValue' : _paramObj.getUpOutTime()},
  762 + {'paramItem' : '下行进场时间', 'paramValue' : _paramObj.getDownInTime()},
  763 + {'paramItem' : '下行出场时间', 'paramValue' : _paramObj.getDownOutTime()},
  764 + {'paramItem' : '早高峰上行时间', 'paramValue' : _paramObj.getUpMPeakTime()},
  765 + {'paramItem' : '早高峰下行时间', 'paramValue' : _paramObj.getDownMPeakTime()},
  766 + {'paramItem' : '晚高峰上行时间', 'paramValue' : _paramObj.getUpEPeakTime()},
  767 + {'paramItem' : '晚高峰下行时间', 'paramValue' : _paramObj.getDownEPeakTime()},
  768 + {'paramItem' : '低谷上行时间', 'paramValue' : _paramObj.getUpTroughTime()},
  769 + {'paramItem' : '低谷下行时间', 'paramValue' : _paramObj.getDownTroughTime()},
  770 + {'paramItem' : '线路规划类型', 'paramValue' : "双向"},
  771 + {'paramItem' : '吃饭地点', 'paramValue' : _paramObj.fnIsEat() ? (_paramObj.fnIsBothEat() ? "上下行" : (_paramObj.fnIsUpEat() ? "上行" : "下行")) : "不吃饭"},
  772 + {'paramItem' : '早晚例行保养', 'paramValue' : _paramObj.getLbTime()},
  773 + {'paramItem' : '停车场', 'paramValue' : _paramObj.getTccId()},
  774 + {'paramItem' : '工作餐午餐时间', 'paramValue' : _paramObj.fnGetLunchTime()},
  775 + {'paramItem' : '工作餐晚餐时间', 'paramValue' : _paramObj.fnGetDinnerTime()},
  776 + {'paramItem' : '早高峰发车间隔', 'paramValue' : "[" + _paramObj.getMPeakMinFcjx() + "," + _paramObj.getMPeakMaxFcjx() + "]"},
  777 + {'paramItem' : '晚高峰发车间隔', 'paramValue' : "[" + _paramObj.getEPeakMinFcjx() + "," + _paramObj.getEPeakMaxFcjx() + "]"},
  778 + {'paramItem' : '低谷发车间隔', 'paramValue' : "[" + _paramObj.getTroughMinFcjx() + "," + _paramObj.getTroughMaxFcjx() + "]"},
  779 + {'paramItem' : '建议加班路牌数', 'paramValue' : _paramObj.getJBLpes()},
  780 + {'paramItem' : '停站类型', 'paramValue' : _paramObj.isTwoWayStop() ? "双向停站" : (_paramObj.isUpOneWayStop() ? "上行主站" : "下行主站") },
  781 + {'paramItem' : '建议高峰配车数', 'paramValue' : _paramObj.getAdvicePeakClzs()}
  782 + ]
  783 + };
  784 +
750 return { 785 return {
751 /** 786 /**
752 * 工厂对象,创建不同的对象。 787 * 工厂对象,创建不同的对象。
@@ -794,7 +829,7 @@ var Main_v2 = function() { @@ -794,7 +829,7 @@ var Main_v2 = function() {
794 // 8、调整路牌班次间隔(使用平均停站时间) 829 // 8、调整路牌班次间隔(使用平均停站时间)
795 schedule.fnAdjustLpBcInterval(1); 830 schedule.fnAdjustLpBcInterval(1);
796 831
797 - // 9、调整纵向班次间隔 832 + // 9、调整班次发车间隔
798 schedule.fnAdjustBcInterval(false); 833 schedule.fnAdjustBcInterval(false);
799 834
800 // 10、确定末班车 835 // 10、确定末班车
@@ -804,9 +839,9 @@ var Main_v2 = function() { @@ -804,9 +839,9 @@ var Main_v2 = function() {
804 schedule.fnRemoveDelLastFlagBc(); 839 schedule.fnRemoveDelLastFlagBc();
805 840
806 // TODO:12、平均化指定时间后的班次列表间隔 841 // TODO:12、平均化指定时间后的班次列表间隔
807 - // schedule.fnAdjustBcInterval2_avg(true, _paramObj.toTimeObj("19:50"));  
808 - // schedule.fnAdjustBcInterval2_avg(false, _paramObj.toTimeObj("19:50"));  
809 - 842 + // // schedule.fnAdjustBcInterval2_avg(true, _paramObj.toTimeObj("19:50"));
  843 + // // schedule.fnAdjustBcInterval2_avg(false, _paramObj.toTimeObj("19:50"));
  844 + //
810 // 10、补进出场例保班次 845 // 10、补进出场例保班次
811 schedule.fnCalcuOtherBc(); 846 schedule.fnCalcuOtherBc();
812 847
@@ -823,10 +858,14 @@ var Main_v2 = function() { @@ -823,10 +858,14 @@ var Main_v2 = function() {
823 * @param aInternalLpObj 内部路牌对象列表 858 * @param aInternalLpObj 内部路牌对象列表
824 */ 859 */
825 exportDataConfig: function(aInternalLpObj) { 860 exportDataConfig: function(aInternalLpObj) {
  861 + $('.exportAddXls').off('click');
  862 + $('.exportAddXlsx').off('click');
  863 +
826 $('.exportAddXls').on('click', function() { 864 $('.exportAddXls').on('click', function() {
827 var aInfos = { 865 var aInfos = {
828 "lpObjList": _funCalcuExportData_lpObjList(aInternalLpObj), // 路牌班次信息列表 866 "lpObjList": _funCalcuExportData_lpObjList(aInternalLpObj), // 路牌班次信息列表
829 - "statInfoList": _funCalcuExportData_statInfoList(aInternalLpObj) // 统计项目列表 867 + "statInfoList": _funCalcuExportData_statInfoList(aInternalLpObj), // 统计项目列表
  868 + "parameterInfoList" : __funCalcuExportData_paramInfoList() // 参数对象
830 }; 869 };
831 870
832 console.log(aInfos); 871 console.log(aInfos);
@@ -859,7 +898,8 @@ var Main_v2 = function() { @@ -859,7 +898,8 @@ var Main_v2 = function() {
859 $('.exportAddXlsx').on('click', function() { 898 $('.exportAddXlsx').on('click', function() {
860 var aInfos = { 899 var aInfos = {
861 "lpObjList": _funCalcuExportData_lpObjList(aInternalLpObj), // 路牌班次信息列表 900 "lpObjList": _funCalcuExportData_lpObjList(aInternalLpObj), // 路牌班次信息列表
862 - "statInfoList": _funCalcuExportData_statInfoList(aInternalLpObj) // 统计项目列表 901 + "statInfoList": _funCalcuExportData_statInfoList(aInternalLpObj), // 统计项目列表
  902 + "parameterInfoList" : __funCalcuExportData_paramInfoList() // 参数对象
863 }; 903 };
864 904
865 console.log(aInfos); 905 console.log(aInfos);
@@ -963,3 +1003,5 @@ var Main_v2 = function() { @@ -963,3 +1003,5 @@ var Main_v2 = function() {
963 }; 1003 };
964 1004
965 }(); 1005 }();
  1006 +
  1007 +
src/main/resources/static/pages/base/timesmodel/js/v2/strategy/StrategyUtils.js 0 → 100644
  1 +/**
  2 + * 策略工具类。
  3 + */
  4 +var StrategyUtils = (function() {
  5 + /**
  6 + * 内部策略配置封装类。
  7 + * @constructor
  8 + */
  9 + function InternalStrategy() {
  10 + // 策略函数对应,每个函数都由一个标识符号对应,类似配置函数
  11 + this._oSTRATIGIS = {
  12 + // ADJUST_TRIP表示调整发车间隔的策略,都放在strategy/adjust目录下
  13 + // 每种策略对应一个js文件,里面的变量名就是策略名
  14 + "ADJUST_TRIP": AdjustTripS1
  15 + };
  16 + }
  17 +
  18 + /**
  19 + * 返回策略函数
  20 + * @param str 标识
  21 + * @returns {function}
  22 + */
  23 + InternalStrategy.prototype.sFn = function(str) {
  24 + if (!this._oSTRATIGIS[str]) {
  25 + throw "指定标识" + str + "策略函数不存在!";
  26 + }
  27 + return this._oSTRATIGIS[str];
  28 + };
  29 + /**
  30 + * 替换策略配置
  31 + * @param str 策略函数标识
  32 + * @param fn 策略函数
  33 + */
  34 + InternalStrategy.prototype.sConfig = function(str, fn) {
  35 + this._oSTRATIGIS[str] = fn;
  36 + };
  37 +
  38 + return new InternalStrategy();
  39 +} ());
0 \ No newline at end of file 40 \ No newline at end of file
src/main/resources/static/pages/base/timesmodel/js/v2/AdjustTripStrategy.js renamed to src/main/resources/static/pages/base/timesmodel/js/v2/strategy/adjust/AdjustTripS1.js
1 -//------------------ 策略模块(以下) -----------------//  
2 - 1 +/**
  2 + * 发车间隔调整策略1。
  3 + * 不考虑停站,吃饭时间的问题,直接调整发车间隔
  4 + * 1、发车间隔调整规则:
  5 + * (1)、从班次列表头开始,连续取3个班次,获取2个间隔,根据中间班次的情况,调整它的发车时间
  6 + * (2)、如果中间班次在低谷,并且发车间隔大于晚高峰最大发车间隔,中间班次调整-1分钟
  7 + * (3)、如果第一个间隔与第二个间隔相差1分钟,不调整
  8 + * (4)、如果第一个间隔大于第二个间隔,则中间班次发车时间-1分钟
  9 + * (5)、如果第一个间隔小于第二个间隔,则中间班次发车时间+1分钟
  10 + * 2、使用方法
  11 + * (1)、上行班次列表平衡5次
  12 + * (2)、下行班次列表平衡5次
  13 + * (3)、路牌班次调整1次(调整停站时间,吃饭时间)
  14 + * (4)、上行班次列表平衡5次
  15 + * (5)、下行班次列表平衡5次
  16 + *
  17 + *
  18 + * TODO:存在的问题,待解决
  19 + * (1)、行驶时间还是不够,就是平衡的时候的停站时间不够,吃饭时间也不够
  20 + * (2)、发车间隔还是有问题,超出范围,添加多个发车间隔时间段
  21 + */
3 var AdjustTripS1 = (function() { 22 var AdjustTripS1 = (function() {
4 23
5 function _f1(aBc, schedule, paramObj, fre) { 24 function _f1(aBc, schedule, paramObj, fre) {
@@ -138,47 +157,4 @@ var AdjustTripS1 = (function() { @@ -138,47 +157,4 @@ var AdjustTripS1 = (function() {
138 } 157 }
139 158
140 return f1; 159 return f1;
141 -}());  
142 -  
143 -//------------------ 策略模块(以上) -----------------//  
144 -  
145 -  
146 -  
147 -  
148 -  
149 -// 调整班次策略类  
150 -var AdjustTripStrategy = (function() {  
151 -  
152 - /**  
153 - * 内部策略配置封装类。  
154 - * @constructor  
155 - */  
156 - function InternalStrategy() {  
157 - // 策略函数对应,每个函数都由一个标识符号对应,类似配置函数  
158 - this._oSTRATIGIS = {  
159 - "ADJUST_TRIP": AdjustTripS1  
160 - };  
161 - }  
162 -  
163 - /**  
164 - * 返回策略函数  
165 - * @param str 标识  
166 - * @returns {function}  
167 - */  
168 - InternalStrategy.prototype.sFn = function(str) {  
169 - if (!this._oSTRATIGIS[str]) {  
170 - throw "指定标识" + str + "策略函数不存在!";  
171 - }  
172 - return this._oSTRATIGIS[str];  
173 - };  
174 - /**  
175 - * 替换策略配置  
176 - * @param str 策略函数标识  
177 - * @param fn 策略函数  
178 - */  
179 - InternalStrategy.prototype.sConfig = function(str, fn) {  
180 - this._oSTRATIGIS[str] = fn;  
181 - };  
182 -  
183 - return new InternalStrategy();  
184 }()); 160 }());
185 \ No newline at end of file 161 \ No newline at end of file
src/main/resources/static/pages/base/timesmodel/js/v2/strategy/adjust/AdjustTripS2.js 0 → 100644
  1 +/**
  2 + * 平衡车距策略2(太死板,速度慢,效果不佳啊,建议不使用)。
  3 + * 调整策略如下(有点像滤波器):
  4 + * 1、从头开始,连续取3个班次,获取2个间隔,根据间隔的不同及其他规则,调整中间班次的发车时间
  5 + * 2、基本调整如下,
  6 + * (1)、如果2个间隔时间差1分钟,不调整
  7 + * (2)、如果第一个间隔在区间间隔范围外,调整发车时间1分钟到指定的边界
  8 + * (3)、如果第一个间隔大,调整中间班次发车时间-1分钟,如果调整后的间隔在区间间隔范围外,不调整
  9 + * (4)、如果第二个间隔大,调整中间班次发车时间+1分钟,如果调整后的间隔在区间间隔范围外,不调整
  10 + * 3、如果可调整,但是相关的停站时间无法满足,不调整
  11 + *
  12 + * 以1分钟调整,不停的迭代上述步骤
  13 + *
  14 + * 4、如果还有没有满足要求的班次,此时需要智能修改分班路牌头尾班次,删除,或这加入,然后再次迭代
  15 + */
  16 +var AdjustTripS2 = (function() {
  17 + var iBcCountOfGroup = 3; // 3个班次一次参与计算
  18 + var aBcOfGroup = [];
  19 + var aBcIntervalOfGroup = []; // 班次间隔列表,3个班次,2个间隔
  20 + var oBcFcTime; // 班次发车时间
  21 +
  22 + /**
  23 + * 按照规则计算班次列表。
  24 + * @param iStartIndex {int} 开始索引
  25 + * @param aBc {array} 班次列表
  26 + * @private
  27 + */
  28 + function _calcuBcGroup(iStartIndex, aBc) {
  29 + var i;
  30 + var j;
  31 +
  32 + aBcOfGroup = [];
  33 + aBcIntervalOfGroup = [];
  34 + for (i = iStartIndex; i <= aBc.length - iBcCountOfGroup; i++) {
  35 + for (j = i; j < i + iBcCountOfGroup; j++) {
  36 + aBcOfGroup.push(aBc[j]);
  37 + }
  38 +
  39 + for (j = 0; j < aBcOfGroup.length; j++) {
  40 + if (j < aBcOfGroup.length - 1) {
  41 + aBcIntervalOfGroup.push(
  42 + aBcOfGroup[j + 1].getFcTimeObj().diff(
  43 + aBcOfGroup[j].getFcTimeObj(), "m"));
  44 + }
  45 + }
  46 + }
  47 + }
  48 +
  49 + /**
  50 + * 排序班次列表。
  51 + * @param aBc {array} 班次列表
  52 + * @param isAsc {boolean} 是否升序
  53 + * @private
  54 + */
  55 + function _sortBc(aBc, isAsc) {
  56 + aBc.sort(function(o1, o2) {
  57 + if (o1.getFcTimeObj().isBefore(o2.getFcTimeObj())) {
  58 + return -1;
  59 + } else {
  60 + return 1;
  61 + }
  62 + });
  63 + }
  64 +
  65 + /**
  66 + * 是否可以调整班次发车时间。
  67 + * @param oLp {InternalLpObj} 路牌对象
  68 + * @param oBc {InternalBcObj} 班次对象
  69 + * @param oParam {ParameterObj} 参数对象
  70 + * @param iStep {int} 修正时间步长
  71 + * @private
  72 + */
  73 + function _isModifyBcFcsj(oLp, oBc, oParam, iStep) {
  74 + // 获取车次链个数
  75 + var iBcChainCount = oLp.fnGetBcChainCount();
  76 +
  77 + var i;
  78 + var j;
  79 + var oBcIndex;
  80 + var iQIndex;
  81 + var iBcIndex;
  82 + var iBcCount;
  83 + var oPreBc;
  84 +
  85 + var iBcStopTime;
  86 +
  87 + var aRangeStopTime;
  88 +
  89 + for (i = 0; i < iBcChainCount; i++) {
  90 + oBcIndex = oLp.fnGetBcChainInfo(i);
  91 + iQIndex = oBcIndex["s_q"];
  92 + iBcIndex = oBcIndex["s_b"];
  93 + iBcCount = oBcIndex["bcount"];
  94 +
  95 + oPreBc = oLp.getPreBc(oBc);
  96 +
  97 + // 如果是第一个班次
  98 + if (!oPreBc) {
  99 + if (oBc.fnIsFirstBc()) { // 如果是方向头班车
  100 + return false;
  101 + } else {
  102 + return true;
  103 + }
  104 + }
  105 +
  106 + if (oPreBc.fnGetEatTime() > 0) { // 如果是吃饭班次,不能修改发车时间
  107 + return false;
  108 + }
  109 +
  110 + aRangeStopTime = oParam.calcuTripLayoverTimeRange(
  111 + oPreBc.getArrTimeObj(), oPreBc.isUp(), oPreBc.getBcTime()
  112 + );
  113 + iBcStopTime = oPreBc.getStopTime() + iStep;
  114 + if (iBcStopTime >= aRangeStopTime[0] && iBcStopTime <= aRangeStopTime[1]) {
  115 + return true;
  116 + } else {
  117 + return false;
  118 + }
  119 +
  120 +
  121 + }
  122 + }
  123 +
  124 + /**
  125 + * 调整发车时间(调整当前班次后,需要处理后续路牌的所有班次)。
  126 + * @param olp {InternalLpObj} 路牌对象
  127 + * @param oBc {InternalBcObj} 班次对象
  128 + * @param iMin {int} 分钟
  129 + * @param oParam {ParameterObj} 参数对象
  130 + * @private
  131 + */
  132 + function _modifyFcsj(olp, oBc, iMin, oParam) {
  133 + oBc._$_fcsjObj.add(iMin, "m");
  134 + oBc.setArrTimeObj(oParam.addMinute(
  135 + oBc.getFcTimeObj(),
  136 + oParam.calcuTravelTime(
  137 + oBc.getFcTimeObj(),
  138 + oBc.isUp())
  139 + ));
  140 +
  141 + // 平衡当前路牌的所有班次时间(修正不准确的停站时间)
  142 + olp.fnAdjustBcTime_layover(oParam);
  143 + }
  144 +
  145 + /**
  146 + * 平衡车距内部方法。
  147 + * @param aBc {array} 班次列表
  148 + * @param aSchedule {InternalScheduleObj} 行车计划对象
  149 + * @param oParam {ParameterObj} 参数对象
  150 + * @param iFre {int} 递归次数
  151 + * @private
  152 + */
  153 + function _f1(aBc, aSchedule, oParam, iFre) {
  154 + if (iFre > 0) {
  155 + // 按照时间升序班次列表
  156 + _sortBc(aBc, true);
  157 +
  158 + var i;
  159 + for (i = 0; i <= aBc.length; i++) {
  160 + // 获取班次列表
  161 + _calcuBcGroup(i, aBc);
  162 +
  163 + if (aBcOfGroup.length > 0) {
  164 + // 获取中间预调整的班次时间
  165 + oBcFcTime = aBcOfGroup[1].getFcTimeObj();
  166 +
  167 + if (oParam.isMPeakBc(oBcFcTime)) { // 早高峰
  168 + if (aBcIntervalOfGroup[0] < oParam.getMPeakMinFcjx()) {
  169 + // +1分钟
  170 + if (_isModifyBcFcsj(
  171 + aBcOfGroup[1].getGroup().getLp(),
  172 + aBcOfGroup[1],
  173 + oParam,
  174 + 1
  175 + )) {
  176 + _modifyFcsj(
  177 + aBcOfGroup[1].getGroup().getLp(),
  178 + aBcOfGroup[1],
  179 + 1,
  180 + oParam
  181 + );
  182 + }
  183 + } else if (aBcIntervalOfGroup[0] > oParam.getMPeakMaxFcjx()) {
  184 + // -1分钟
  185 + if (_isModifyBcFcsj(
  186 + aBcOfGroup[1].getGroup().getLp(),
  187 + aBcOfGroup[1],
  188 + oParam,
  189 + -1
  190 + )) {
  191 + _modifyFcsj(
  192 + aBcOfGroup[1].getGroup().getLp(),
  193 + aBcOfGroup[1],
  194 + -1,
  195 + oParam
  196 + );
  197 + }
  198 + } else {
  199 + // -1或+1分钟
  200 + if (Math.abs(aBcIntervalOfGroup[0] - aBcIntervalOfGroup[1]) <= 1) {
  201 + // 两个间隔相差1分钟,不处理
  202 + } else if (aBcIntervalOfGroup[0] > aBcIntervalOfGroup[1]) {
  203 + if (_isModifyBcFcsj(
  204 + aBcOfGroup[1].getGroup().getLp(),
  205 + aBcOfGroup[1],
  206 + oParam,
  207 + -1
  208 + )) {
  209 + _modifyFcsj(
  210 + aBcOfGroup[1].getGroup().getLp(),
  211 + aBcOfGroup[1],
  212 + -1,
  213 + oParam
  214 + );
  215 + }
  216 + } else {
  217 + if (_isModifyBcFcsj(
  218 + aBcOfGroup[1].getGroup().getLp(),
  219 + aBcOfGroup[1],
  220 + oParam,
  221 + +1
  222 + )) {
  223 + _modifyFcsj(
  224 + aBcOfGroup[1].getGroup().getLp(),
  225 + aBcOfGroup[1],
  226 + +1,
  227 + oParam
  228 + );
  229 + }
  230 + }
  231 +
  232 + }
  233 +
  234 + } else if (oParam.isEPeakBc(oBcFcTime)) { // 晚高峰
  235 + if (aBcIntervalOfGroup[0] < oParam.getEPeakMinFcjx()) {
  236 + // +1分钟
  237 + if (_isModifyBcFcsj(
  238 + aBcOfGroup[1].getGroup().getLp(),
  239 + aBcOfGroup[1],
  240 + oParam,
  241 + 1
  242 + )) {
  243 + _modifyFcsj(
  244 + aBcOfGroup[1].getGroup().getLp(),
  245 + aBcOfGroup[1],
  246 + 1,
  247 + oParam
  248 + );
  249 + }
  250 + } else if (aBcIntervalOfGroup[0] > oParam.getEPeakMaxFcjx()) {
  251 + // -1分钟
  252 + if (_isModifyBcFcsj(
  253 + aBcOfGroup[1].getGroup().getLp(),
  254 + aBcOfGroup[1],
  255 + oParam,
  256 + -1
  257 + )) {
  258 + _modifyFcsj(
  259 + aBcOfGroup[1].getGroup().getLp(),
  260 + aBcOfGroup[1],
  261 + -1,
  262 + oParam
  263 + );
  264 + }
  265 + } else {
  266 + // -1或+1分钟
  267 + if (Math.abs(aBcIntervalOfGroup[0] - aBcIntervalOfGroup[1]) <= 1) {
  268 + // 两个间隔相差1分钟,不处理
  269 + } else if (aBcIntervalOfGroup[0] > aBcIntervalOfGroup[1]) {
  270 + if (_isModifyBcFcsj(
  271 + aBcOfGroup[1].getGroup().getLp(),
  272 + aBcOfGroup[1],
  273 + oParam,
  274 + -1
  275 + )) {
  276 + _modifyFcsj(
  277 + aBcOfGroup[1].getGroup().getLp(),
  278 + aBcOfGroup[1],
  279 + -1,
  280 + oParam
  281 + );
  282 + }
  283 + } else {
  284 + if (_isModifyBcFcsj(
  285 + aBcOfGroup[1].getGroup().getLp(),
  286 + aBcOfGroup[1],
  287 + oParam,
  288 + +1
  289 + )) {
  290 + _modifyFcsj(
  291 + aBcOfGroup[1].getGroup().getLp(),
  292 + aBcOfGroup[1],
  293 + +1,
  294 + oParam
  295 + );
  296 + }
  297 + }
  298 + }
  299 + } else { // 低谷
  300 + if (aBcIntervalOfGroup[0] < oParam.getTroughMinFcjx()) {
  301 + // +1分钟
  302 + if (_isModifyBcFcsj(
  303 + aBcOfGroup[1].getGroup().getLp(),
  304 + aBcOfGroup[1],
  305 + oParam,
  306 + 1
  307 + )) {
  308 + _modifyFcsj(
  309 + aBcOfGroup[1].getGroup().getLp(),
  310 + aBcOfGroup[1],
  311 + 1,
  312 + oParam
  313 + );
  314 + }
  315 + } else if (aBcIntervalOfGroup[0] > oParam.getTroughMaxFcjx()) {
  316 + // -1分钟
  317 + if (_isModifyBcFcsj(
  318 + aBcOfGroup[1].getGroup().getLp(),
  319 + aBcOfGroup[1],
  320 + oParam,
  321 + -1
  322 + )) {
  323 + _modifyFcsj(
  324 + aBcOfGroup[1].getGroup().getLp(),
  325 + aBcOfGroup[1],
  326 + -1,
  327 + oParam
  328 + );
  329 + }
  330 + } else {
  331 + // -1或+1分钟
  332 + if (Math.abs(aBcIntervalOfGroup[0] - aBcIntervalOfGroup[1]) <= 1) {
  333 + // 两个间隔相差1分钟,不处理
  334 + } else if (aBcIntervalOfGroup[0] > aBcIntervalOfGroup[1]) {
  335 + if (_isModifyBcFcsj(
  336 + aBcOfGroup[1].getGroup().getLp(),
  337 + aBcOfGroup[1],
  338 + oParam,
  339 + -1
  340 + )) {
  341 + _modifyFcsj(
  342 + aBcOfGroup[1].getGroup().getLp(),
  343 + aBcOfGroup[1],
  344 + -1,
  345 + oParam
  346 + );
  347 + }
  348 + } else {
  349 + if (_isModifyBcFcsj(
  350 + aBcOfGroup[1].getGroup().getLp(),
  351 + aBcOfGroup[1],
  352 + oParam,
  353 + +1
  354 + )) {
  355 + _modifyFcsj(
  356 + aBcOfGroup[1].getGroup().getLp(),
  357 + aBcOfGroup[1],
  358 + +1,
  359 + oParam
  360 + );
  361 + }
  362 + }
  363 + }
  364 + }
  365 + }
  366 +
  367 + }
  368 +
  369 + // 递归迭代
  370 + _f1(aBc, aSchedule, oParam, iFre - 1);
  371 + }
  372 + }
  373 +
  374 + /**
  375 + * 主函数-返回的策略函数。
  376 + * @param aUpBc {array} 上行班次数组
  377 + * @param aDownBc {array} 下行班次数组
  378 + * @param oSchedule {InternalScheduleObj} 行车计划对象
  379 + * @param oParam {ParameterObj} 参数对象
  380 + */
  381 + function main(aUpBc, aDownBc, oSchedule, oParam) {
  382 + // TODO:以后这里可能需要检测参数的正确性
  383 +
  384 + _f1(aUpBc, oSchedule, oParam, 5);
  385 + _f1(aDownBc, oSchedule, oParam, 5);
  386 +
  387 + // oSchedule.fnAdjustLpBcInterval(1);
  388 +
  389 + // _f1(aUpBc, oSchedule, oParam, 5);
  390 + // _f1(aDownBc, oSchedule, oParam, 5);
  391 +
  392 + }
  393 +
  394 + return main;
  395 +}());
0 \ No newline at end of file 396 \ No newline at end of file
src/main/resources/static/pages/base/timesmodel/js/v2/strategy/adjust/AdjustTripS3.js 0 → 100644
  1 +/**
  2 + * 平衡车距策略3。
  3 + * 将逻辑拆成三个部分,做什么,是否能做,修正班次时间
  4 + * 不考虑停站,吃饭时间的问题,直接调整发车时间
  5 + * 1、发车间隔调整规则:
  6 + * (1)、从班次列表头开始,连续取3个班次,获取2个间隔,根据不通的条件调整中间班次的发车时间
  7 + * (2)、如果当前班次在指定时间段的发车间隔范围外,则小的+1,大的-1
  8 + * (3)、如果在范围内,但是下一个班次不在指定时间段内,不处理
  9 + * (4)、如果下一个班次也在指定时间段内,则左右平滑+1或-1
  10 + * 2、使用方法
  11 + * (1)、上行班次列表平衡5次
  12 + * (2)、下行班次列表平衡5次
  13 + *
  14 + */
  15 +var AdjustTripS3 = (function() {
  16 +
  17 + /**
  18 + * 排序班次列表。
  19 + * @param aBc {array} 班次列表
  20 + * @param isAsc {boolean} 是否升序
  21 + * @private
  22 + */
  23 + function _sortBc(aBc, isAsc) {
  24 + aBc.sort(function(o1, o2) {
  25 + if (o1.getFcTimeObj().isBefore(o2.getFcTimeObj())) {
  26 + return -1;
  27 + } else {
  28 + return 1;
  29 + }
  30 + });
  31 + }
  32 +
  33 + //--------------- 每个trip调整分为三步(以下)----------------//
  34 + // 1、做什么,返回需要调整的时间
  35 + function _whatToDo(aTripOfGroup, aTripIntervalOfGroup, paramObj) {
  36 + // 中间班次的发车时间,参与计算
  37 + var oTripFcTime = aTripOfGroup[1].getFcTimeObj();
  38 + var oNextTripFcTime = aTripOfGroup[2].getFcTimeObj()
  39 + if (paramObj.isMPeakBc(oTripFcTime)) { // 早高峰
  40 + if (aTripIntervalOfGroup[0] < paramObj.getMPeakMinFcjx()) {
  41 + // +1分钟
  42 + return 1;
  43 + } else if (aTripIntervalOfGroup[0] > paramObj.getMPeakMaxFcjx()) {
  44 + // -1分钟
  45 + return -1;
  46 + } else {
  47 + if (!paramObj.isMPeakBc(oNextTripFcTime)) {
  48 + // 下一个班次不是早高峰,不处理
  49 + } else {
  50 + // -1或+1分钟
  51 + if (Math.abs(aTripIntervalOfGroup[0] - aTripIntervalOfGroup[1]) <= 1) {
  52 + return 0;
  53 + } else if (aTripIntervalOfGroup[0] > aTripIntervalOfGroup[1]) {
  54 + return -1;
  55 + } else {
  56 + return 1;
  57 + }
  58 + }
  59 + }
  60 +
  61 + } else if (paramObj.isEPeakBc(oTripFcTime)) { // 晚高峰
  62 + if (aTripIntervalOfGroup[0] < paramObj.getEPeakMinFcjx()) {
  63 + // +1分钟
  64 + return 1;
  65 + } else if (aTripIntervalOfGroup[0] > paramObj.getEPeakMaxFcjx()) {
  66 + // -1分钟
  67 + return -1;
  68 + } else {
  69 + if (!paramObj.isEPeakBc(oNextTripFcTime)) {
  70 + // 下一个班次不是晚高峰,不处理
  71 + } else {
  72 + // -1或+1分钟
  73 + if (Math.abs(aTripIntervalOfGroup[0] - aTripIntervalOfGroup[1]) <= 1) {
  74 + return 0;
  75 + } else if (aTripIntervalOfGroup[0] > aTripIntervalOfGroup[1]) {
  76 + return -1;
  77 + } else {
  78 + return 1;
  79 + }
  80 + }
  81 + }
  82 + } else { // 低谷
  83 + if (aTripIntervalOfGroup[0] < paramObj.getTroughMinFcjx()) {
  84 + // +1分钟
  85 + return 1;
  86 + } else if (aTripIntervalOfGroup[0] > paramObj.getTroughMaxFcjx()) {
  87 + // -1分钟
  88 + return -1;
  89 + } else {
  90 + if (!paramObj.isTroughBc(oNextTripFcTime)) {
  91 + // 下一个班次不是低谷班次,不处理
  92 + } else {
  93 + // -1或+1分钟
  94 + if (Math.abs(aTripIntervalOfGroup[0] - aTripIntervalOfGroup[1]) <= 1) {
  95 + return 0;
  96 + } else if (aTripIntervalOfGroup[0] > aTripIntervalOfGroup[1]) {
  97 + return -1;
  98 + } else {
  99 + return 1;
  100 + }
  101 + }
  102 + }
  103 + }
  104 + }
  105 + // 2、是否能做,返回true/false
  106 + function _canDo(aTripOfGroup, iTime, paramObj) {
  107 + // TODO
  108 + return iTime != 0;
  109 + }
  110 + // 3、修正班次时间
  111 + function _do(aBc, iIndex, iTime, paramObj) {
  112 + // // 从当前班次开始,后续所有的班次都要调整
  113 + // var i;
  114 + // for (i = iIndex; i < aBc.length; i++) {
  115 + // aBc[i]._$_fcsjObj.add(iTime, "m");
  116 + // aBc[i].setArrTimeObj(paramObj.addMinute(
  117 + // aBc[i].getFcTimeObj(),
  118 + // paramObj.calcuTravelTime(
  119 + // aBc[i].getFcTimeObj(),
  120 + // aBc[i].isUp())
  121 + // ));
  122 + // }
  123 + aBc[iIndex]._$_fcsjObj.add(iTime, "m");
  124 + aBc[iIndex].setBcTime(paramObj.calcuTravelTime(
  125 + aBc[iIndex].getFcTimeObj(), aBc[iIndex].isUp()));
  126 + aBc[iIndex].setArrTimeObj(paramObj.addMinute(
  127 + aBc[iIndex].getFcTimeObj(), aBc[iIndex].getBcTime()));
  128 + }
  129 +
  130 + //--------------- 每个trip调整分为三步(以上)----------------//
  131 +
  132 + function _f1(aBc, schedule, paramObj, fre) {
  133 + if (fre > 0) {
  134 + // 生序排列班次
  135 + _sortBc(aBc, true);
  136 +
  137 + var i;
  138 + var j;
  139 + var k;
  140 +
  141 + var iTripCountOfGroup = 3; // 3个班次取一次计算
  142 + var aTripOfGroup; // 3个班次列表
  143 + var aTripIntervalOfGroup; // 班次间隔列表,如:3个班次,2个间隔
  144 + var iTime; // 调整的时间
  145 +
  146 + for (i = 0; i <= aBc.length - iTripCountOfGroup; i++) {
  147 + aTripOfGroup = [];
  148 + aTripIntervalOfGroup = [];
  149 + // 连续计算3个班次参与计算
  150 + for (j = i; j < i + iTripCountOfGroup; j++) {
  151 + aTripOfGroup.push(aBc[j]);
  152 + }
  153 + // 连续2个班次间隔参与计算
  154 + for (k = 0; k < aTripOfGroup.length; k++) {
  155 + if (k < aTripOfGroup.length - 1) {
  156 + aTripIntervalOfGroup.push(aTripOfGroup[k + 1].getFcTimeObj().diff(
  157 + aTripOfGroup[k].getFcTimeObj(), "m"));
  158 + }
  159 + }
  160 +
  161 + iTime = _whatToDo(aTripOfGroup, aTripIntervalOfGroup, paramObj);
  162 + if (_canDo(aTripOfGroup, iTime, paramObj)) {
  163 + _do(aBc, j - 2, iTime, paramObj);
  164 + }
  165 +
  166 + }
  167 +
  168 + _f1(aBc, schedule, paramObj, fre - 1);
  169 +
  170 + }
  171 + }
  172 +
  173 +
  174 +
  175 + /**
  176 + * 主函数-返回的策略函数。
  177 + * @param aUpBc {array} 上行班次数组
  178 + * @param aDownBc {array} 下行班次数组
  179 + * @param oSchedule {InternalScheduleObj} 行车计划对象
  180 + * @param oParam {ParameterObj} 参数对象
  181 + */
  182 + function main(aUpBc, aDownBc, oSchedule, oParam) {
  183 + // TODO:以后这里可能需要检测参数的正确性
  184 + _f1(aUpBc, oSchedule, oParam, 5);
  185 + _f1(aDownBc, oSchedule, oParam, 5);
  186 +
  187 + // oSchedule.fnAdjustLpBcInterval(1);
  188 +
  189 + // _f1(aUpBc, oSchedule, oParam, 5);
  190 + // _f1(aDownBc, oSchedule, oParam, 5);
  191 +
  192 + }
  193 +
  194 + return main;
  195 +
  196 +} ());
0 \ No newline at end of file 197 \ No newline at end of file