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 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 3 import com.bsth.common.ResponseCode;
8 4 import com.bsth.controller.BaseController;
9 5 import com.bsth.entity.calc.CalcStatistics;
10 6 import com.bsth.entity.calc.CalcWaybill;
11 7 import com.bsth.service.calc.CalcWaybillService;
12   -
13 8 import org.springframework.beans.factory.annotation.Autowired;
14 9 import org.springframework.web.bind.annotation.RequestMapping;
15 10 import org.springframework.web.bind.annotation.RequestParam;
16 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 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 635 }
636 636  
637 637 int code = dayOfSchedule.reloadSch(lineCode);
  638 +
  639 + //重新按公司编码索引数据
  640 + dayOfSchedule.groupByGsbm();
638 641 rs.put("status", code==0? ResponseCode.SUCCESS: ResponseCode.ERROR);
639 642 return rs;
640 643 }
... ...
src/main/java/com/bsth/controller/realcontrol/ServiceDataInterface.java
... ... @@ -103,7 +103,7 @@ public class ServiceDataInterface {
103 103 if (StringUtils.isEmpty(secretKey) || !secretKey.equals(SECRE_KEY))
104 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 107 for (ScheduleRealInfo sch : all) {
108 108 if (sch.getGsBm() != null
109 109 && sch.getGsBm().equals(companyId)
... ...
src/main/java/com/bsth/data/gpsdata_v2/handlers/InStationProcess.java
... ... @@ -132,8 +132,6 @@ public class InStationProcess {
132 132  
133 133 sch.setZdsjActualAll(rsT);
134 134 sch.setSiginCompate(2);
135   - //通知误点停靠程序,有车辆到站
136   - LateAdjustHandle.carArrive(gps);
137 135  
138 136 //持久化
139 137 dayOfSchedule.save(sch);
... ... @@ -147,6 +145,10 @@ public class InStationProcess {
147 145 else
148 146 dayOfSchedule.removeExecPlan(nbbm);
149 147  
  148 + //通知误点停靠程序,有车辆到站
  149 + //LateAdjustHandle.carArrive(gps, next);
  150 + LateAdjustHandle.carArrive(gps);
  151 +
150 152 //路牌的下一个班次,页面显示起点实际到达时间
151 153 ScheduleRealInfo lpNext = dayOfSchedule.nextByLp(sch);
152 154 if (lpNext != null) {
... ...
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
... ... @@ -56,13 +56,16 @@ public class DayOfSchedule {
56 56 //按线路分组的 “原始计划” 排班数据
57 57 public static Map<String, List<SchedulePlanInfo>> schedulePlanMap;
58 58  
59   - // 按车辆分组的班次数据
  59 + // 按车辆索引的班次数据
60 60 private static ListMultimap<String, ScheduleRealInfo> nbbmScheduleMap;
61 61  
62   - //按线路分组计划用车
  62 + // 按营运公司索引的班次数据
  63 + private static ListMultimap<String, ScheduleRealInfo> gsBmScheduleMap;
  64 +
  65 + //按线路索引计划用车
63 66 private static HashMultimap<String, String> lineNbbmsMap;
64 67  
65   - //按路牌分组的班次数据 线路编码_路牌名称 ——> 班次list
  68 + //按路牌索引班次数据 线路编码_路牌名称 ——> 班次list
66 69 private static ArrayListMultimap<String, ScheduleRealInfo> lpScheduleMap;
67 70  
68 71 // 班次主键映射
... ... @@ -108,6 +111,7 @@ public class DayOfSchedule {
108 111 nbbmScheduleMap = ArrayListMultimap.create();
109 112 nbbmScheduleMap = Multimaps.synchronizedListMultimap(nbbmScheduleMap);
110 113  
  114 + gsBmScheduleMap = ArrayListMultimap.create();
111 115 lpScheduleMap = ArrayListMultimap.create();
112 116 lineNbbmsMap = HashMultimap.create();
113 117  
... ... @@ -629,7 +633,7 @@ public class DayOfSchedule {
629 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 637 && (!limitPark || parks.contains(temp.getQdzCode())))
634 638 continue;
635 639  
... ... @@ -641,6 +645,10 @@ public class DayOfSchedule {
641 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 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 700 && (!limitPark || parks.contains(temp.getQdzCode())))
693 701 continue;
694 702  
... ... @@ -1131,4 +1139,26 @@ public class DayOfSchedule {
1131 1139 public String sizeString(){
1132 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 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 70 //班次被压入
71 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 75 sch.setLate2(true);
76 76 sendUtils.sendAutoWdtz(sch, old);
... ... @@ -170,8 +170,7 @@ public class LateAdjustHandle implements ApplicationContextAware {
170 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 174 , name2 = null;
176 175 if (StringUtils.isNotEmpty(gps.getCarparkNo())) {
177 176 name2 = BasicData.stationCode2NameMap.get(gps.getCarparkNo());
... ... @@ -196,7 +195,8 @@ public class LateAdjustHandle implements ApplicationContextAware {
196 195 }
197 196  
198 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 202 long dt = Arith.addLong(gps.getTimestamp(), (sch.getLateMinute() * 60 * 1000));
... ... @@ -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 260 @Override
219 261 public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
220 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 77 }
78 78 }
79 79  
  80 + //按公司编码索引数据
  81 + dayOfSchedule.groupByGsbm();
  82 +
80 83 //首末班入库(给网关用的数据)
81 84 FirstAndLastHandler.saveAll();
82 85 } catch (Exception e) {
... ...
src/main/java/com/bsth/entity/Line.java
... ... @@ -98,6 +98,9 @@ public class Line implements Serializable {
98 98 /** 是否营运 <1:是;0:否> bit length(50)*/
99 99 private Integer sfyy;
100 100  
  101 + /** 线路区域 <0:区内,1:区外> bit length(1)*/
  102 + private Integer region;
  103 +
101 104 /** 起始调度电话 varchar length(50) */
102 105 private String startPhone;
103 106  
... ... @@ -498,6 +501,13 @@ public class Line implements Serializable {
498 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 512 public Integer getRemove() {
503 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 58 + "l.startStationEndTime=?9, l.endStationFirstTime=?10, l.endStationEndTime=?11, l.linePlayType=?12, "
59 59 + "l.openDate=?13, l.es=?14, l.shortName=?15, l.shanghaiLinecode=?16, l.eqLinecode=?17, l.startPhone=?18, "
60 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 63 public int update(String name, String company, String brancheCompany, String level, String nature,
64 64 String startStationName, String endStationName, String startStationFirstTime, String startStationEndTime,
65 65 String endStationFirstTime, String endStationEndTime, Integer linePlayType, Date openDate, String es,
66 66 String shortName, String shanghaiLinecode, String eqLinecode, String startPhone, String endPhone,
67 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 79 l.getOpenDate(), l.getEs(), l.getShortName(), l.getShanghaiLinecode(), l.getEqLinecode(),
80 80 l.getStartPhone(), l.getEndPhone(), l.getCarSumNumber(), l.getHvacCarNumber(), l.getOrdCarNumber(),
81 81 l.getHistory(), l.getDescriptions(), l.getDestroy(), l.getSupperLine(), l.getSpacGrade(),
82   - l.getWarrantCar(), l.getLineCode());
  82 + l.getWarrantCar(), l.getLineCode(), l.getRegion());
83 83 if (status==1) {
84 84 map.put("status", ResponseCode.SUCCESS);
85 85 } else {
... ...
src/main/java/com/bsth/service/impl/TrafficManageServiceImpl.java
... ... @@ -35,6 +35,7 @@ import org.springframework.data.domain.Sort.Direction;
35 35 import org.springframework.stereotype.Service;
36 36  
37 37 import java.io.*;
  38 +import java.net.InetAddress;
38 39 import java.sql.Connection;
39 40 import java.sql.PreparedStatement;
40 41 import java.sql.ResultSet;
... ... @@ -530,7 +531,7 @@ public class TrafficManageServiceImpl implements TrafficManageService{
530 531 try {
531 532 //发送邮件
532 533 EmailBean mail = new EmailBean();
533   - mail.setSubject("路单日志数据"+date);
  534 + mail.setSubject(InetAddress.getLocalHost().getHostAddress()+":路单日志数据"+date);
534 535 mail.setContent(logSuccess+"<br/>成功数:"+countSuccess+"<br/>" +logFailure+"<br/>失败数:"+countFailure);
535 536 sendEmailController.sendMail(emailSendToAddress, mail);
536 537 logger.info("setLD-sendMail:邮件发送成功!");
... ... @@ -945,8 +946,8 @@ public class TrafficManageServiceImpl implements TrafficManageService{
945 946 DecimalFormat df = new DecimalFormat("######0.000");
946 947 try {
947 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 951 String bcType,sxx;// 班次类型、上下行
951 952 // 上传的时刻表集合
952 953 List<TTInfo> ttinfoList = new ArrayList<>();
... ... @@ -963,6 +964,8 @@ public class TrafficManageServiceImpl implements TrafficManageService{
963 964 if(ttInfo == null)
964 965 continue;
965 966 ttinfoList.add(ttInfo); // 保存时刻表
  967 + zlc = 0.0f;
  968 + yylc = 0.0f;
966 969 // 获得时刻表
967 970 param = new HashMap();
968 971 param.put("ttinfo.id_eq", ttInfo.getId());
... ... @@ -1030,13 +1033,13 @@ public class TrafficManageServiceImpl implements TrafficManageService{
1030 1033 }
1031 1034 sBufferC.append("</BCList>");
1032 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 1043 if(ssop.setSKB(userNameOther, passwordOther, sBuffer.toString()).isSuccess()){
1041 1044 result = "success";
1042 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 236 return rs;
237 237 }
238 238 else if (!fgsbm.equals(spy.getBrancheCompanyCode())) {
239   - msg = ("【售票员】: " + jGh + "/" + spy.getPersonnelName() + "是" + spy.getBrancheCompany() + "的人员");
  239 + msg = ("【售票员】: " + sGh + "/" + spy.getPersonnelName() + "是" + spy.getBrancheCompany() + "的人员");
240 240 rs.put("msg", msg);
241 241 rs.put("checkStatus", -1);
242 242 return rs;
... ... @@ -3473,7 +3473,15 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
3473 3473 }
3474 3474  
3475 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 3485 jName = getPersonName(sch.getGsBm(), jGh);
3478 3486 if (StringUtils.isEmpty(jName)) {
3479 3487 rs.put("msg", sch.getXlName() + "所属的公司编码下找不到工号为【" + jGh + "】的驾驶员");
... ... @@ -5138,6 +5146,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
5138 5146 List<String> leftList = Splitter.on(",").splitToList(leftIdx);
5139 5147 List<String> rightList = Splitter.on(",").splitToList(rightIdx);
5140 5148 Set<String> lpSet = new HashSet<>();
  5149 + Set<String> carSet = new HashSet<>();
5141 5150  
5142 5151 List<ScheduleRealInfo> largeList, smallList;
5143 5152 if (leftList.size() > rightList.size()) {
... ... @@ -5168,6 +5177,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
5168 5177  
5169 5178 lpSet.add(leftSch.getXlBm() + "_" + leftSch.getLpName());
5170 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 5187 ts.addAll(dayOfSchedule.updateQdzTimePlan(lpName));
5176 5188 }
5177 5189  
  5190 + //重新就算车辆当前执行班次
  5191 + for(String nbbm : carSet){
  5192 + dayOfSchedule.reCalcExecPlan(nbbm);
  5193 + }
  5194 +
  5195 +
5178 5196 for (ScheduleRealInfo sch : ts) {
5179 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 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 732 @Override
695 733 public DataToolsFile exportDynamicTTinfo(DTInfos dtInfos, DataToolsFileType type) throws ScheduleException {
696 734 try {
... ... @@ -707,6 +745,7 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail
707 745 org.apache.poi.ss.usermodel.Workbook wb = excelPoiOperator.createWorkBook();
708 746 this.createDynamicTTinfoSheet(wb, dtInfos, excelPoiOperator);
709 747 this.createDynamicTTinfoStatSheet(wb, dtInfos, excelPoiOperator);
  748 + this.createParameterInfoSheet(wb, dtInfos, excelPoiOperator);
710 749  
711 750 // wb内存写入文件
712 751 String filepath = dataToolsProperties.getFileoutputDir() +
... ...
src/main/java/com/bsth/service/schedule/datatools/TTinfoDetailDynamicData.java
... ... @@ -14,7 +14,7 @@ import java.util.List;
14 14 public interface TTinfoDetailDynamicData {
15 15  
16 16 //---------------------- 生成时刻表用对象(以下) ---------------------//
17   - public static enum BcType { // 班次类型枚举
  17 + enum BcType { // 班次类型枚举
18 18 IN("in"), // 进场
19 19 OUT("out"), // 出场
20 20 BD("bd"), // 早例保
... ... @@ -37,7 +37,7 @@ public interface TTinfoDetailDynamicData {
37 37 }
38 38 }
39 39  
40   - public static class BcObj { // 班次对象
  40 + class BcObj { // 班次对象
41 41 /** 班次时间 */
42 42 private Integer bcsj;
43 43 /** 停站时间 */
... ... @@ -175,7 +175,7 @@ public interface TTinfoDetailDynamicData {
175 175 }
176 176 }
177 177  
178   - public static class LpObj { // 路牌对象
  178 + class LpObj { // 路牌对象
179 179 /** 路牌名字 */
180 180 private String lpname;
181 181 /** 每圈的第一个班次是否上行 */
... ... @@ -321,7 +321,7 @@ public interface TTinfoDetailDynamicData {
321 321  
322 322 }
323 323  
324   - public static class StatInfo { // 统计数据对象
  324 + class StatInfo { // 统计数据对象
325 325 /** 统计项目 */
326 326 private String statItem;
327 327 /** 统计值 */
... ... @@ -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 372 private List<LpObj> lpObjList;
350 373 /** 统计数据列表 */
351 374 private List<StatInfo> statInfoList;
  375 + /** 参数对象信息 */
  376 + private List<ParameterInfo> parameterInfoList;
352 377  
353 378 public List<LpObj> getLpObjList() {
354 379 return lpObjList;
... ... @@ -365,6 +390,14 @@ public interface TTinfoDetailDynamicData {
365 390 public void setStatInfoList(List<StatInfo> statInfoList) {
366 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 408 * @return
376 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 1 <!-- 片段标题 START -->
2 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 6 </div>
7 7 <!-- 片段标题 END -->
8 8  
9 9 <!-- 线路信息导航栏组件 START -->
10 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 15 </ul>
16 16 <!-- 线路信息导航栏组件 END -->
17 17  
18 18 <!-- 信息容器组件 START -->
19 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 548 </div>
504 549 <!-- 信息容器组件 END -->
505 550  
... ...
src/main/resources/static/pages/base/line/details.html
1 1 <!-- 片段标题 START -->
2 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 6 </div>
7 7 <!-- 片段标题 START -->
8 8  
9 9 <!-- 线路信息导航栏组件 START -->
10 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 15 </ul>
16 16 <!-- 线路信息导航栏组件 START -->
17 17  
18 18 <!-- 信息容器组件 START -->
19 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 502 </div>
464 503 <!-- 信息容器组件 END -->
465 504  
... ...
src/main/resources/static/pages/base/line/edit.html
... ... @@ -21,111 +21,114 @@
21 21 <!-- 信息容器组件标题 START -->
22 22 <div class="portlet-title">
23 23 <div class="caption">
24   - <i class="icon-equalizer font-red-sunglo"></i>
  24 + <i class="icon-equalizer font-red-sunglo"></i>
25 25 <span class="caption-subject font-red-sunglo bold uppercase">修改线路信息</span>
26 26 </div>
27 27 </div>
28 28 <!-- 信息容器组件标题 END -->
29   -
  29 +
30 30 <!-- 表单容器组件 START -->
31 31 <div class="portlet-body form" id="lineEditForm">
32   -
  32 +
33 33 <!-- START FORM -->
34 34 <form action="/" class="form-horizontal" id="line_edit_form" >
35   -
  35 +
36 36 <!-- 错误提示信息组件 START -->
37 37 <div class="alert alert-danger display-hide">
38 38 <button class="close" data-close="alert"></button>
39 39 您的输入有误,请检查下面的输入项
40 40 </div>
41 41 <!-- 错误提示信息组件 END -->
42   -
  42 +
43 43 <!-- 表单内容 START -->
  44 +
  45 +
  46 + <!-- 表单内容 -->
44 47 <div class="form-body">
45   - <input type="hidden" name="id" id="lineId">
46   -
  48 +
47 49 <!-- 表单分组组件 form-group START -->
48 50 <div class="form-group">
  51 + <input type="hidden" name="id" id="lineId">
49 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 55 <!-- 线路编码 (* 必填项) START -->
54 56 <div class="col-md-6">
55 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 68 <div class="col-md-6">
66 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 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 84 <div class="col-md-6">
82   - <label class="control-label col-md-5">
  85 + <label class="control-label col-md-5">
83 86 <span class="required"> * </span>所属公司&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
84 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 95 <div class="col-md-6">
93   - <label class="control-label col-md-5">
  96 + <label class="control-label col-md-5">
94 97 <span class="required"> * </span>所属分公司&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
95 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 110 <div class="col-md-6">
108   - <label class="control-label col-md-5">
  111 + <label class="control-label col-md-5">
109 112 <span class="required"> * </span>线路等级&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
110 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 116 <option value="">-- 请选择线路等级 --</option>
114 117 <option value="1">一级线路</option>
115 118 <option value="2">二级线路</option>
116 119 <option value="0">未知等级</option>
117 120 </select>
118 121 </div>
119   - </div>
120   - <!-- 线路等级 END -->
121   -
  122 + </div>
  123 + <!-- 线路等级 END -->
  124 +
122 125 <!-- 线路性质 START (因为options值基本固定,所以在页面固定。【以后可以根具需求修改成使用字典表实现】) -->
123 126 <div class="col-md-6">
124   - <label class="control-label col-md-5">
  127 + <label class="control-label col-md-5">
125 128 <span class="required"> * </span>线路性质&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
126 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 132 <option value="">-- 请选择线路性质 --</option>
130 133 <option value="lj">路救</option>
131 134 <option value="bc">备车</option>
... ... @@ -138,167 +141,197 @@
138 141 <option value="cctxl">村村通线路</option>
139 142 <option value="qt">其他</option>
140 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 153 <div class="col-md-6">
151 154 <label class="control-label col-md-5">
152 155 <span class="required"> * </span>是否宵夜&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
153 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 162 <label for="radio16">
159 163 <span></span>
160 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 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 183 <div class="col-md-6">
179 184 <label class="control-label col-md-5">
180 185 <span class="required"> * </span>是否撤销&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
181 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 192 <label for="radio14">
187 193 <span></span>
188 194 <span class="check"></span>
189   - <span class="box"></span> 是
  195 + <span class="box"></span> 是
190 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 216 <!-- 起始站名称 START (该字段值会在规划线路站点操作时会去验证是否有值。如果为空,则用线路规划站点的起点站。默认使用该字段填写值) -->
210 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 219 起始站名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
213 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 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 245 <!-- 起始站首班车时间 (* 必填项) START -->
236 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 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 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 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 299 <div class="col-md-6">
286 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 303 <option value="">-- 请选择线路类型 --</option>
290 304 <option value="0">双向</option>
291 305 <option value="1">环线</option>
292 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 331 <div class="col-md-6">
299 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 335 <option value="">-- 请选择大间隔等级 --</option>
303 336 <option value="1">一级</option>
304 337 <option value="2">二级</option>
... ... @@ -306,157 +339,163 @@
306 339 <option value="4">四级</option>
307 340 <option value="5">五级</option>
308 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 359 <div class="col-md-6">
319 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 366 <!-- 线路简称 END -->
325   -
  367 +
326 368 <!-- 英文名称 START -->
327 369 <div class="col-md-6">
328 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 405 <!-- 起始站调度电话 START -->
362 406 <div class="col-md-6">
363 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 416 <div class="col-md-6">
372 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 429 <!-- 车辆总数 START -->
384 430 <div class="col-md-6">
385 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 440 <div class="col-md-6">
394 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 454 <div class="col-md-6">
407 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 463 <div class="col-md-6">
415 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 476 <div class="col-md-6">
440 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 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 486 <!-- 描述/说明 START -->
449 487 <div class="col-md-6">
450 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 497 </div>
459   -
  498 +
460 499 <!-- 表单按钮组件 START -->
461 500 <div class="form-actions">
462 501 <div class="row">
... ...
src/main/resources/static/pages/base/line/js/line-add-form.js
... ... @@ -123,7 +123,8 @@ $(function(){
123 123 'hvacCarNumber' : {number : true,digits : true,maxlength: 8},// 空调车辆数 必须输入合法的数字(负数,小数)。 必须输入整数。 最大长度.
124 124 'ordCarNumber' : {number : true,digits : true,maxlength: 8},// 普通车辆数 必须输入合法的数字(负数,小数)。 必须输入整数。最大长度.
125 125 'history' : {maxlength: 200},// 线路沿革 输入长度最多是 200 的字符串(汉字算一个字符)。
126   - 'descriptions' : {maxlength: 200}// 描述/说明 输入长度最多是 200 的字符串(汉字算一个字符)。
  126 + 'descriptions' : {maxlength: 200},// 描述/说明 输入长度最多是 200 的字符串(汉字算一个字符)。
  127 + 'region' : {required : true}// 线路区域必选
127 128 },
128 129 messages:{
129 130 'lineCode':{
... ...
src/main/resources/static/pages/base/line/js/line-edit-form.js
... ... @@ -175,7 +175,8 @@
175 175 'hvacCarNumber' : {number : true,digits : true,maxlength: 8},// 空调车辆数 必须输入合法的数字(负数,小数)。 必须输入整数。 最大长度.
176 176 'ordCarNumber' : {number : true,digits : true,maxlength: 8},// 普通车辆数 必须输入合法的数字(负数,小数)。 必须输入整数。最大长度.
177 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 152 <script src="/pages/base/timesmodel/js/v2/core/InternalGroupObj.js"></script>
153 153 <script src="/pages/base/timesmodel/js/v2/core/InternalLpObj.js"></script>
154 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 160 <script src="/pages/base/timesmodel/js/v2/main_v2.js"></script>
157 161 <script src="/pages/base/timesmodel/js/d3.relationshipgraph.js"></script>
158 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 321 $.get('/pages/base/timesmodel/paramadd.html', function(m){
322 322 $(pjaxContainer).append(m);
323 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 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 687 return _fcjxIntervalObj.epeakfcjx.min;
681 688 },
682 689 /**
683   - * 获取晚高峰最发车间隙。
  690 + * 获取晚高峰最发车间隙。
684 691 * @returns int
685 692 */
686 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 140 InternalBcObj.prototype.getBcTime = function() {
141 141 return this._$_bcsj;
142 142 };
  143 +InternalBcObj.prototype.setBcTime = function(iTime) {
  144 + this._$_bcsj = iTime;
  145 +};
143 146 /**
144 147 * 获取停站时间。
145 148 * @returns int
... ...
src/main/resources/static/pages/base/timesmodel/js/v2/core/InternalLpObj.js
... ... @@ -492,7 +492,8 @@ InternalLpObj.prototype.fnGetQBcIndexWithFcTimeFromGroupArray = function(
492 492 group = groupArray[i];
493 493 if (group) {
494 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 497 bc1time = group.getBc1().getFcTimeObj();
497 498 console.log("bc1time=" + bc1time.format("HH:mm") + " tempdiff=" + tempdiff);
498 499 tempdiff = Math.abs(bc1time.diff(fctime));
... ... @@ -518,7 +519,7 @@ InternalLpObj.prototype.fnGetQBcIndexWithFcTimeFromGroupArray = function(
518 519 }
519 520  
520 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 523 bc2time = group.getBc2().getFcTimeObj();
523 524 console.log("bc2time=" + bc2time.format("HH:mm") + " tempdiff=" + tempdiff);
524 525 tempdiff = Math.abs(bc2time.diff(fctime));
... ... @@ -755,6 +756,11 @@ InternalLpObj.prototype.fnAddEatBc = function(groupIndex, bcIndex, factory, para
755 756 var oPreBc;
756 757 var oEatBc;
757 758 var iBcModifyTime;
  759 +
  760 + if (!this.getBc(groupIndex, bcIndex)) { //
  761 + return 0;
  762 + }
  763 +
758 764 oPreBc = this.getBc( // 前一个邻接班次
759 765 bcIndex == 0 ? groupIndex - 1 : groupIndex,
760 766 bcIndex == 1 ? 0 : 1);
... ... @@ -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 865 * @param oBc {moment} 指定班次
967 866 * @returns {object} 上一个班次,如果没有,返回false
... ... @@ -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 924 var i;
1027 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 940 oBcIndex = this.fnGetBcChainInfo(i);
1040 941 iQIndex = oBcIndex["s_q"];
1041 942 iBcIndex = oBcIndex["s_b"];
1042 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 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 163 var iFirstStopTime =
164 164 _paramObj.fnCalcuFixedStopNumber(
165 165 _paramObj.addMinute(aBcArray[0].getFcTimeObj(), -10),
166   - _qIsUp,
  166 + !_qIsUp,
167 167 iXXTime
168 168 );
169 169 var oFlagBc = _factory.createBcObj( // 标记班次
... ... @@ -174,9 +174,6 @@ var InternalScheduleObj = function(paramObj, lpArray, factory) {
174 174 _paramObj.addMinute(aBcArray[0].getFcTimeObj(), -(iFirstStopTime + iXXTime)),
175 175 _paramObj
176 176 );
177   - console.log("ddfdfdf=" + (iFirstStopTime));
178   - console.log("ddfdfdf=" + (iXXTime));
179   - console.log("ttt ==" + oFlagBc.getFcTimeObj().format("HH:mm"));
180 177 oFlagBc.fnSetDelFlag(true); // 标记了删除记号
181 178  
182 179 _internalLpArray[0].setBc(0, 1, oFlagBc);
... ... @@ -467,109 +464,71 @@ var InternalScheduleObj = function(paramObj, lpArray, factory) {
467 464  
468 465 //----------------------- 初始化方法4,计算中标线位置 -------------------------//
469 466 var _iZbx_lpIndex; // 中标线对应第几个路牌
470   -
471 467 var _fnInitFun4 = function() { // 初始化方法4
472 468 console.log("//---------------- 行车计划,初始化方法4 start ----------------//");
473 469  
474   - //---------------------------- 1、模拟一个中标线,使用临时路牌 ----------------------//
475   - // 构造中标线
476   - // 中标线开始时间,就是方向的首班车时间
  470 + // 中标线开始时间,早的首班车时间,和上标线的开始时间方向相反
477 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 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 527 console.log("中标线对应第" + (_iZbx_lpIndex + 1) + "个路牌");
571 528  
572 529 console.log("//---------------- 行车计划,初始化方法4 end ----------------//");
  530 +
  531 +
573 532 };
574 533  
575 534 //-------------------- 重要的内部方法 -----------------------//
... ... @@ -1176,7 +1135,7 @@ var InternalScheduleObj = function(paramObj, lpArray, factory) {
1176 1135 var aLbLpindexes = []; // 除上标线,中标线的连班路牌索引
1177 1136 var i;
1178 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 1139 aLbLpindexes.push(i);
1181 1140 }
1182 1141 }
... ... @@ -1225,7 +1184,10 @@ var InternalScheduleObj = function(paramObj, lpArray, factory) {
1225 1184 var iBindex;
1226 1185 // 补上标线到中标线之间的连班路牌的班次
1227 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 1191 oLp = _internalLpArray[aLbLpindexes[i]];
1230 1192 aMinbcPos = oLp.getMinBcObjPosition();
1231 1193 iQindex = aMinbcPos[0];
... ... @@ -1398,7 +1360,7 @@ var InternalScheduleObj = function(paramObj, lpArray, factory) {
1398 1360 var iDEQIndex = aDEIndex[0];
1399 1361 var iDEBIndex = aDEIndex[1];
1400 1362  
1401   - // 注意,本模型只有连班才有吃饭
  1363 + // TODO:注意,本模型只有连班才有吃饭
1402 1364  
1403 1365 var i;
1404 1366 var oLp;
... ... @@ -1415,7 +1377,6 @@ var InternalScheduleObj = function(paramObj, lpArray, factory) {
1415 1377 var j;
1416 1378 for (i = 0; i < aLbIndex.length; i++) {
1417 1379 oLp = _internalLpArray[aLbIndex[i]];
1418   -
1419 1380 // 午饭
1420 1381 iLTime = oLp.fnAddEatBc(iLEQIndex, iLEBIndex, _factory, _paramObj);
1421 1382 // 晚饭
... ... @@ -1670,7 +1631,7 @@ var InternalScheduleObj = function(paramObj, lpArray, factory) {
1670 1631 // }
1671 1632  
1672 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 1701 var aUpBc = !oStartTime ? _fnGetBcList(true) : _fnGetBcList2(true, oStartTime); // 指定方向的班次列表
1741 1702 var aDownBc = !oStartTime ? _fnGetBcList(false) : _fnGetBcList2(false, oStartTime); // 指定方向的班次列表
1742 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 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 785 return {
751 786 /**
752 787 * 工厂对象,创建不同的对象。
... ... @@ -794,7 +829,7 @@ var Main_v2 = function() {
794 829 // 8、调整路牌班次间隔(使用平均停站时间)
795 830 schedule.fnAdjustLpBcInterval(1);
796 831  
797   - // 9、调整纵向班次间隔
  832 + // 9、调整班次发车间隔
798 833 schedule.fnAdjustBcInterval(false);
799 834  
800 835 // 10、确定末班车
... ... @@ -804,9 +839,9 @@ var Main_v2 = function() {
804 839 schedule.fnRemoveDelLastFlagBc();
805 840  
806 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 845 // 10、补进出场例保班次
811 846 schedule.fnCalcuOtherBc();
812 847  
... ... @@ -823,10 +858,14 @@ var Main_v2 = function() {
823 858 * @param aInternalLpObj 内部路牌对象列表
824 859 */
825 860 exportDataConfig: function(aInternalLpObj) {
  861 + $('.exportAddXls').off('click');
  862 + $('.exportAddXlsx').off('click');
  863 +
826 864 $('.exportAddXls').on('click', function() {
827 865 var aInfos = {
828 866 "lpObjList": _funCalcuExportData_lpObjList(aInternalLpObj), // 路牌班次信息列表
829   - "statInfoList": _funCalcuExportData_statInfoList(aInternalLpObj) // 统计项目列表
  867 + "statInfoList": _funCalcuExportData_statInfoList(aInternalLpObj), // 统计项目列表
  868 + "parameterInfoList" : __funCalcuExportData_paramInfoList() // 参数对象
830 869 };
831 870  
832 871 console.log(aInfos);
... ... @@ -859,7 +898,8 @@ var Main_v2 = function() {
859 898 $('.exportAddXlsx').on('click', function() {
860 899 var aInfos = {
861 900 "lpObjList": _funCalcuExportData_lpObjList(aInternalLpObj), // 路牌班次信息列表
862   - "statInfoList": _funCalcuExportData_statInfoList(aInternalLpObj) // 统计项目列表
  901 + "statInfoList": _funCalcuExportData_statInfoList(aInternalLpObj), // 统计项目列表
  902 + "parameterInfoList" : __funCalcuExportData_paramInfoList() // 参数对象
863 903 };
864 904  
865 905 console.log(aInfos);
... ... @@ -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 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 22 var AdjustTripS1 = (function() {
4 23  
5 24 function _f1(aBc, schedule, paramObj, fre) {
... ... @@ -138,47 +157,4 @@ var AdjustTripS1 = (function() {
138 157 }
139 158  
140 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 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 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 197 \ No newline at end of file
... ...