Commit 7aa83666d8aa4064369907f8fd9b049345e7678c

Authored by 王通
2 parents ff49e9eb ed1eda3a

1.合并闵行变更内容

Showing 30 changed files with 2009 additions and 1828 deletions

Too many changes to show.

To preserve performance only 30 of 35 files are displayed.

... ... @@ -315,13 +315,15 @@
315 315 <plugins>
316 316 <plugin>
317 317 <artifactId>maven-compiler-plugin</artifactId>
  318 + <version>2.3.2</version><!--$NO-MVN-MAN-VER$ -->
318 319 <configuration>
319   - <source>1.7</source>
320   - <target>1.7</target>
  320 + <source>1.8</source>
  321 + <target>1.8</target>
321 322 </configuration>
322 323 </plugin>
323 324 <plugin>
324 325 <artifactId>maven-war-plugin</artifactId>
  326 + <version>2.2</version><!--$NO-MVN-MAN-VER$ -->
325 327 <configuration>
326 328 <failOnMissingWebXml>false</failOnMissingWebXml>
327 329 </configuration>
... ...
src/main/java/com/bsth/controller/realcontrol/PageForwardingController.java
... ... @@ -83,10 +83,10 @@ public class PageForwardingController {
83 83  
84 84 if ("v2_mobile".equals(type)) {
85 85 mv.setViewName("/real_control_v2_mobile/main");
86   - } else if("v2_".equals(type)) {
  86 + } else if ("v2_".equals(type)) {
  87 + //正常线调主页
87 88 mv.setViewName("/real_control_v2/main_");
88 89 } else {
89   - //正常线调主页
90 90 mv.setViewName("/real_control_v2/main");
91 91 }
92 92  
... ...
src/main/java/com/bsth/data/directive/DayOfDirectives.java
1   -package com.bsth.data.directive;
2   -
3   -import com.alibaba.fastjson.JSONObject;
4   -import com.bsth.data.LineConfigData;
5   -import com.bsth.entity.directive.D60;
6   -import com.bsth.entity.directive.D64;
7   -import com.bsth.entity.directive.Directive;
8   -import com.bsth.entity.directive.DirectiveReponse;
9   -import com.bsth.entity.realcontrol.ScheduleRealInfo;
10   -import com.bsth.service.directive.DirectiveService;
11   -import com.bsth.websocket.handler.SendUtils;
12   -import org.slf4j.Logger;
13   -import org.slf4j.LoggerFactory;
14   -import org.springframework.beans.factory.annotation.Autowired;
15   -import org.springframework.stereotype.Component;
16   -
17   -import java.util.*;
18   -import java.util.concurrent.ConcurrentHashMap;
19   -import java.util.concurrent.ConcurrentLinkedQueue;
20   -import java.util.concurrent.ConcurrentMap;
21   -
22   -/**
23   - *
24   - * @ClassName: CurrDayDirectives
25   - * @Description: TODO(当天指令数据)
26   - * @author PanZhao
27   - * @date 2016年8月14日 下午5:23:59
28   - *
29   - */
30   -@Component
31   -public class DayOfDirectives {
32   -
33   - // 当日60指令缓存
34   - private static ConcurrentMap<Integer, D60> d60Map;
35   -
36   - // 线路切换指令 64
37   - public static ConcurrentMap<String, D64> d64Map;
38   -
39   - //等待插入的指令
40   - public static ConcurrentLinkedQueue<Directive> pstDirectives;
41   - //等待更新的指令
42   - public static ConcurrentLinkedQueue<D60> pstD60s;
43   -
44   - @Autowired
45   - DirectiveService directiveService;
46   -
47   - @Autowired
48   - SendUtils sendUtils;
49   -
50   - @Autowired
51   - LineConfigData lineConfigData;
52   -
53   - static Logger logger = LoggerFactory.getLogger(DayOfDirectives.class);
54   -
55   -
56   - static{
57   - d60Map = new ConcurrentHashMap<>();
58   - d64Map = new ConcurrentHashMap<>();
59   - pstDirectives = new ConcurrentLinkedQueue<>();
60   - pstD60s = new ConcurrentLinkedQueue<>();
61   - }
62   -
63   - public void put60(D60 d60) {
64   - d60Map.put(d60.getMsgId(), d60);
65   - //等待持久化
66   - pstDirectives.add(d60);
67   - }
68   -
69   - public void put64(D64 d64) {
70   - d64Map.put(d64.getKey(), d64);
71   - //等待持久化
72   - pstDirectives.add(d64);
73   - }
74   -
75   - /**
76   - *
77   - * @Title: reply @Description: TODO(指令 46,47 响应) @throws
78   - */
79   - public void reply(DirectiveReponse res) {
80   - Integer msgId = res.getMsgId();
81   - if (msgId == null) {
82   - logger.error("reply error , msgId is null.");
83   - return;
84   - }
85   -
86   - D60 d60 = d60Map.get(msgId);
87   -
88   - if (null == d60) {
89   - logger.error("找不到msgId: " + msgId + " 对应的指令数据");
90   - return;
91   - }
92   -
93   - switch (res.getStatus()) {
94   - case 0:
95   - d60.setReply46((short) -1);// 失败
96   - break;
97   - case 1:
98   - d60.setReply46((short) 0);// 发送成功
99   - d60.setReply46Time(System.currentTimeMillis());
100   - break;
101   - case 2:
102   - d60.setReply47((short) 0);// 驾驶员阅读
103   - d60.setReply47Time(System.currentTimeMillis());
104   - break;
105   - }
106   -
107   - //更新60数据
108   - pstD60s.add(d60);
109   -
110   - ScheduleRealInfo sch = d60.getSch();
111   - if (null == sch)
112   - return;
113   -
114   - if (d60.isDispatch()) {
115   - // 更新班次状态
116   - sch.setDirectiveState(res.getStatus() * 100);
117   - // 通知页面
118   - sendUtils.sendDirectiveToPage(sch);
119   - }
120   - }
121   -
122   - /**
123   - *
124   - * @Title: reply64 @Description: TODO(64 协议响应) @throws
125   - */
126   - public void reply64(JSONObject json) {
127   - String key = json.getString("deviceId") + "_" + json.getString("timestamp");
128   -
129   - D64 d64 = d64Map.get(key);
130   -
131   - if (null == d64)
132   - logger.warn("64响应 -找不到请求源,json: " + json);
133   - else {
134   - JSONObject data = json.getJSONObject("data");
135   -
136   - if (null == data)
137   - logger.warn("64响应 data is null ,json: " + json);
138   - else {
139   - logger.info(d64.getDeviceId() + "_" + d64.getData().getLineId() + "响应:" + data.getShort("requestAck"));
140   - /*d64.setRespAck(data.getShort("requestAck"));
141   - // 持久化*/
142   - //64 响应不入库了...
143   - }
144   - }
145   - }
146   -
147   - @Autowired
148   - DirectivesPstThread directivesPstThread;
149   - public void clearAll(){
150   - d60Map = new ConcurrentHashMap<>();
151   - d64Map = new ConcurrentHashMap<>();
152   - logger.info("清除指令数据 ,,,");
153   - }
154   -
155   - public Collection<D60> all60(){
156   - return d60Map.values();
157   - }
158   -
159   - public Collection<D64> all64(){
160   - return d64Map.values();
161   - }
162   -
163   - public D60 get(Integer msgId){
164   - return d60Map.get(msgId);
165   - }
166   -
167   - public Collection<Directive> all(){
168   - List<Directive> all = new ArrayList<>();
169   - all.addAll(d60Map.values());
170   - all.addAll(d64Map.values());
171   -
172   - return all;
173   - }
174   -
175   - public static class DComparator implements Comparator<Directive>{
176   -
177   - @Override
178   - public int compare(Directive d1, Directive d2) {
179   - return (int) (d2.getTimestamp() - d1.getTimestamp());
180   - }
181   - }
182   - }
  1 +package com.bsth.data.directive;
  2 +
  3 +import com.alibaba.fastjson.JSONObject;
  4 +import com.bsth.data.LineConfigData;
  5 +import com.bsth.data.schedule.DayOfSchedule;
  6 +import com.bsth.entity.directive.D60;
  7 +import com.bsth.entity.directive.D64;
  8 +import com.bsth.entity.directive.Directive;
  9 +import com.bsth.entity.directive.DirectiveReponse;
  10 +import com.bsth.entity.realcontrol.ScheduleRealInfo;
  11 +import com.bsth.service.directive.DirectiveService;
  12 +import com.bsth.websocket.handler.SendUtils;
  13 +import org.slf4j.Logger;
  14 +import org.slf4j.LoggerFactory;
  15 +import org.springframework.beans.factory.annotation.Autowired;
  16 +import org.springframework.stereotype.Component;
  17 +
  18 +import java.util.*;
  19 +import java.util.concurrent.ConcurrentHashMap;
  20 +import java.util.concurrent.ConcurrentLinkedQueue;
  21 +import java.util.concurrent.ConcurrentMap;
  22 +
  23 +/**
  24 + *
  25 + * @ClassName: CurrDayDirectives
  26 + * @Description: TODO(当天指令数据)
  27 + * @author PanZhao
  28 + * @date 2016年8月14日 下午5:23:59
  29 + *
  30 + */
  31 +@Component
  32 +public class DayOfDirectives {
  33 +
  34 + // 当日60指令缓存
  35 + private static ConcurrentMap<Integer, D60> d60Map;
  36 +
  37 + // 线路切换指令 64
  38 + public static ConcurrentMap<String, D64> d64Map;
  39 +
  40 + //等待插入的指令
  41 + public static ConcurrentLinkedQueue<Directive> pstDirectives;
  42 + //等待更新的指令
  43 + public static ConcurrentLinkedQueue<D60> pstD60s;
  44 +
  45 + @Autowired
  46 + DirectiveService directiveService;
  47 +
  48 + @Autowired
  49 + SendUtils sendUtils;
  50 +
  51 + @Autowired
  52 + LineConfigData lineConfigData;
  53 +
  54 + @Autowired
  55 + private DayOfSchedule dayOfSchedule;
  56 +
  57 + static Logger logger = LoggerFactory.getLogger(DayOfDirectives.class);
  58 +
  59 +
  60 + static{
  61 + d60Map = new ConcurrentHashMap<>();
  62 + d64Map = new ConcurrentHashMap<>();
  63 + pstDirectives = new ConcurrentLinkedQueue<>();
  64 + pstD60s = new ConcurrentLinkedQueue<>();
  65 + }
  66 +
  67 + public void put60(D60 d60) {
  68 + d60Map.put(d60.getMsgId(), d60);
  69 + //等待持久化
  70 + pstDirectives.add(d60);
  71 + }
  72 +
  73 + public void put64(D64 d64) {
  74 + d64Map.put(d64.getKey(), d64);
  75 + //等待持久化
  76 + pstDirectives.add(d64);
  77 + }
  78 +
  79 + /**
  80 + *
  81 + * @Title: reply @Description: TODO(指令 46,47 响应) @throws
  82 + */
  83 + public void reply(DirectiveReponse res) {
  84 + Integer msgId = res.getMsgId();
  85 + if (msgId == null) {
  86 + logger.error("reply error , msgId is null.");
  87 + return;
  88 + }
  89 +
  90 + D60 d60 = d60Map.get(msgId);
  91 +
  92 + if (null == d60) {
  93 + logger.error("找不到msgId: " + msgId + " 对应的指令数据");
  94 + return;
  95 + }
  96 +
  97 + switch (res.getStatus()) {
  98 + case 0:
  99 + d60.setReply46((short) -1);// 失败
  100 + break;
  101 + case 1:
  102 + d60.setReply46((short) 0);// 发送成功
  103 + d60.setReply46Time(System.currentTimeMillis());
  104 + break;
  105 + case 2:
  106 + d60.setReply47((short) 0);// 驾驶员阅读
  107 + d60.setReply47Time(System.currentTimeMillis());
  108 + break;
  109 + }
  110 +
  111 + //更新60数据
  112 + pstD60s.add(d60);
  113 +
  114 + ScheduleRealInfo sch = d60.getSch();
  115 + if (null == sch)
  116 + return;
  117 +
  118 + if (d60.isDispatch()) {
  119 + // 更新班次状态
  120 + sch.setDirectiveState(res.getStatus() * 100);
  121 + dayOfSchedule.save(sch);
  122 + // 通知页面
  123 + sendUtils.sendDirectiveToPage(sch);
  124 + }
  125 + }
  126 +
  127 + /**
  128 + *
  129 + * @Title: reply64 @Description: TODO(64 协议响应) @throws
  130 + */
  131 + public void reply64(JSONObject json) {
  132 + String key = json.getString("deviceId") + "_" + json.getString("timestamp");
  133 +
  134 + D64 d64 = d64Map.get(key);
  135 +
  136 + if (null == d64)
  137 + logger.warn("64响应 -找不到请求源,json: " + json);
  138 + else {
  139 + JSONObject data = json.getJSONObject("data");
  140 +
  141 + if (null == data)
  142 + logger.warn("64响应 data is null ,json: " + json);
  143 + else {
  144 + logger.info(d64.getDeviceId() + "_" + d64.getData().getLineId() + "响应:" + data.getShort("requestAck"));
  145 + /*d64.setRespAck(data.getShort("requestAck"));
  146 + // 持久化*/
  147 + //64 响应不入库了...
  148 + }
  149 + }
  150 + }
  151 +
  152 + @Autowired
  153 + DirectivesPstThread directivesPstThread;
  154 + public void clearAll(){
  155 + d60Map = new ConcurrentHashMap<>();
  156 + d64Map = new ConcurrentHashMap<>();
  157 + logger.info("清除指令数据 ,,,");
  158 + }
  159 +
  160 + public Collection<D60> all60(){
  161 + return d60Map.values();
  162 + }
  163 +
  164 + public Collection<D64> all64(){
  165 + return d64Map.values();
  166 + }
  167 +
  168 + public D60 get(Integer msgId){
  169 + return d60Map.get(msgId);
  170 + }
  171 +
  172 + public Collection<Directive> all(){
  173 + List<Directive> all = new ArrayList<>();
  174 + all.addAll(d60Map.values());
  175 + all.addAll(d64Map.values());
  176 +
  177 + return all;
  178 + }
  179 +
  180 + public static class DComparator implements Comparator<Directive>{
  181 +
  182 + @Override
  183 + public int compare(Directive d1, Directive d2) {
  184 + return (int) (d2.getTimestamp() - d1.getTimestamp());
  185 + }
  186 + }
  187 + }
... ...
src/main/java/com/bsth/repository/realcontrol/ScheduleRealInfoRepository.java
... ... @@ -47,15 +47,15 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI
47 47 List<Map<String, Object>> dailyInfo(String line,String date);
48 48  
49 49 @Query(value="select d.device_id,d.sender,d.txt_content,d.timestamp,d.line_code from "
50   - + " bsth_v_directive_60 d where d.line_code=?1 and d.timestamp >=?2 and "
51   - + "d.timestamp <=?3 and d.device_id like %?4% ",nativeQuery=true)
52   - List<Object[]> historyMessage(String line,long d,long t,String code);
  50 + + " bsth_v_directive_60 d where d.rq = ?1 and d.line_code = ?2 "
  51 + + " and d.device_id like %?3% ",nativeQuery=true)
  52 + List<Object[]> historyMessage(String rq, String line, String code);
53 53  
54 54 //带指令类型字段
55 55 @Query(value="select d.device_id,d.sender,d.txt_content,d.timestamp,d.line_code from "
56   - + " bsth_v_directive_60 d where d.line_code=?1 and d.timestamp >=?2 and "
57   - + "d.timestamp <=?3 and d.device_id like %?4% and d.dispatch_instruct =?5 ",nativeQuery=true)
58   - List<Object[]> historyMessage(String line,long d,long t,String code,short dispatchInstruct);
  56 + + " bsth_v_directive_60 d where d.rq = ?1 and d.line_code = ?2 "
  57 + + " and d.device_id like %?3% and d.dispatch_instruct =?4 ",nativeQuery=true)
  58 + List<Object[]> historyMessage(String rq, String line, String code, short dispatchInstruct);
59 59  
60 60 @Query(value="SELECT r.xl_name,r.lp_name,r.cl_zbh,count(*) as cs "
61 61 + " FROM bsth_c_s_sp_info_real r RIGHT JOIN bsth_v_directive_60 d "
... ...
src/main/java/com/bsth/service/calc/impl/CalcToolServiceImpl.java
... ... @@ -236,21 +236,16 @@ public class CalcToolServiceImpl implements CalcToolService {
236 236 int lbbc=culateMileageService.culateLbbc(list_);
237 237 double lblc=culateMileageService.culateLbgl(list_);
238 238 double ssgl_lz= culateMileageService.culateCJLC(list_, "路阻");
239   - double ssgl_dm= culateMileageService.culateCJLC(list_, "吊慢");
  239 + double ssgl_dm= culateMileageService.culateCJLC(list_, "借调");
240 240 double ssgl_gz= culateMileageService.culateCJLC(list_, "故障");
241 241 double ssgl_jf= culateMileageService.culateCJLC(list_, "纠纷");
242   - double ssgl_zs= culateMileageService.culateCJLC(list_, "肇事");
  242 + double ssgl_zs= culateMileageService.culateCJLC(list_, "事故");
243 243 double ssgl_qr= culateMileageService.culateCJLC(list_, "缺人");
244   - double ssgl_qc= culateMileageService.culateCJLC(list_, "缺车");
245   - double ssgl_kx= culateMileageService.culateCJLC(list_, "客稀");
246   - double ssgl_qh= culateMileageService.culateCJLC(list_, "气候");
247   - double ssgl_yw= culateMileageService.culateCJLC(list_, "援外");
248   -
249   - double ssgl_pc=culateMileageService.culateCJLC(list_, "配车");
250   - double ssgl_by=culateMileageService.culateCJLC(list_, "保养");
251   - double ssgl_cj=culateMileageService.culateCJLC(list_, "抽减");
252   - double ssgl_qt=culateMileageService.culateCJLC(list_, "其他");
253   - double ssgl_qtz=Arith.add(Arith.add(ssgl_pc, ssgl_by), Arith.add(ssgl_cj,ssgl_qt));
  244 + double ssgl_qc= culateMileageService.culateCJLC(list_, "验车");
  245 + double ssgl_kx= culateMileageService.culateCJLC(list_, "保养");
  246 + double ssgl_qh= culateMileageService.culateCJLC(list_, "天气");
  247 + double ssgl_yw= culateMileageService.culateCJLC(list_, "支援");
  248 + double ssgl_qtz=culateMileageService.culateCJLC(list_, "其他");
254 249 int fzbc=culateMileageService.culateDtfzbc(list_s, "major", "");//放站
255 250 int fzbcZgf=culateMileageService.culateDtfzbc(list_s, "major", "zgf");
256 251 int fzbcWgf=culateMileageService.culateDtfzbc(list_s, "major", "wgf");
... ...
src/main/java/com/bsth/service/calc/impl/CalcWaybillServiceImpl.java
... ... @@ -666,20 +666,16 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer
666 666 // }
667 667  
668 668 s.setLzlc(culateService.culateCJLC(list, "路阻"));
669   - s.setDmlc(culateService.culateCJLC(list, "吊慢"));
  669 + s.setDmlc(culateService.culateCJLC(list, "借调"));
670 670 s.setGzlc(culateService.culateCJLC(list, "故障"));
671 671 s.setJflc(culateService.culateCJLC(list, "纠纷"));
672   - s.setZslc(culateService.culateCJLC(list, "肇事"));
  672 + s.setZslc(culateService.culateCJLC(list, "事故"));
673 673 s.setQrlc(culateService.culateCJLC(list, "缺人"));
674   - s.setQclc(culateService.culateCJLC(list, "缺车"));
675   - s.setKxlc(culateService.culateCJLC(list, "客稀"));
676   - s.setQhlc(culateService.culateCJLC(list, "气候"));
677   - s.setYwlc(culateService.culateCJLC(list, "援外"));
678   - double ssgl_pc=culateService.culateCJLC(list, "配车");
679   - double ssgl_by=culateService.culateCJLC(list, "保养");
680   - double ssgl_cj=culateService.culateCJLC(list, "抽减");
681   - double ssgl_qt=culateService.culateCJLC(list, "其他");
682   - s.setQtlc(Arith.add(Arith.add(ssgl_pc, ssgl_by),Arith.add(ssgl_cj, ssgl_qt)));
  674 + s.setQclc(culateService.culateCJLC(list, "验车"));
  675 + s.setKxlc(culateService.culateCJLC(list, "保养"));
  676 + s.setQhlc(culateService.culateCJLC(list, "天气"));
  677 + s.setYwlc(culateService.culateCJLC(list, "支援"));
  678 + s.setQtlc(culateService.culateCJLC(list, "其他"));
683 679 s.setLjlc(ljgl);
684 680  
685 681 s.setJhbcq(culateService.culateJhbc(list,""));
... ...
src/main/java/com/bsth/service/impl/BusIntervalServiceImpl.java
... ... @@ -100,9 +100,14 @@ public class BusIntervalServiceImpl implements BusIntervalService {
100 100  
101 101 try {
102 102  
103   - String sql = "select * from bsth_c_s_sp_info_real where schedule_date_str >= '"+startDate+"' and schedule_date_str <= '"+endDate+"'";
  103 + List<String> objList = new ArrayList<String>();
  104 + String sql = "select * from bsth_c_s_sp_info_real where schedule_date_str >= ? and schedule_date_str <= ?";
  105 + objList.add(startDate);
  106 + objList.add(endDate);
  107 +
104 108 if(line.length() != 0){
105   - sql += " and xl_bm = '"+line+"'";
  109 + sql += " and xl_bm = ?";
  110 + objList.add(line);
106 111 }
107 112 if(times.length() != 0){
108 113 String[] split = times.split("-");
... ... @@ -117,16 +122,19 @@ public class BusIntervalServiceImpl implements BusIntervalService {
117 122 }
118 123 }
119 124 if(company.length() != 0){
120   - sql += " and gs_bm = '"+company+"'";
  125 + sql += " and gs_bm = ?";
  126 + objList.add(company);
121 127 }
122 128 if(subCompany.length() != 0){
123   - sql += " and fgs_bm = '"+subCompany+"'";
  129 + sql += " and fgs_bm = ?";
  130 + objList.add(subCompany);
124 131 }
125 132 if(normal){
126 133 sql += " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'";
127 134 }
128 135  
129 136 list = jdbcTemplate.query(sql,
  137 + objList.toArray(),
130 138 new RowMapper<ScheduleRealInfo>(){
131 139 @Override
132 140 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
... ... @@ -222,14 +230,20 @@ public class BusIntervalServiceImpl implements BusIntervalService {
222 230 });
223 231  
224 232 if(model.length() != 0){
225   -// sql = "select * from bsth_c_s_ttinfo_detail where ttinfo = '"+model+"' and bc_type != 'in' and bc_type != 'out'";
226   - sql = "select id from bsth_c_s_sp_info where tt_info = '" + model + "' and bc_type != 'in' and bc_type != 'out'" +
227   - " and bc_type != 'ldks' and schedule_date >= '"+startDate+"' and schedule_date <= '"+endDate+"'";
  233 + List<String> objList2 = new ArrayList<String>();
  234 + sql = "select id from bsth_c_s_sp_info where tt_info = ? and bc_type != 'in' and bc_type != 'out'" +
  235 + " and bc_type != 'ldks' and schedule_date >= ? and schedule_date <= ?";
  236 + objList2.add(model);
  237 + objList2.add(startDate);
  238 + objList2.add(endDate);
  239 +
228 240 if(line.length() != 0){
229   - sql += " and xl_bm = '"+line+"'";
  241 + sql += " and xl_bm = ?";
  242 + objList2.add(line);
230 243 }
231 244  
232 245 ttList = jdbcTemplate.query(sql,
  246 + objList2.toArray(),
233 247 new RowMapper<Long>(){
234 248 @Override
235 249 public Long mapRow(ResultSet rs, int rowNum) throws SQLException {
... ... @@ -303,17 +317,22 @@ public class BusIntervalServiceImpl implements BusIntervalService {
303 317 Map<Long, Set<ChildTaskPlan>> schMap = new HashMap<Long, Set<ChildTaskPlan>>();
304 318 List<ChildTaskPlan> list = new ArrayList<ChildTaskPlan>();
305 319  
  320 + List<Object> objList = new ArrayList<Object>();
306 321 String sql = "select id,cc_id,mileage_type,destroy,destroy_reason," +
307 322 " mileage,type1,type2,schedule from bsth_c_s_child_task" +
308 323 " where 1=1";
  324 +
309 325 if(schedule1 != null && schedule1 > 0){
310   - sql += " and schedule >= '"+schedule1+"'";
  326 + sql += " and schedule >= ?";
  327 + objList.add(schedule1);
311 328 }
312 329 if(schedule2 != null && schedule2 > 0){
313   - sql += " and schedule <= '"+schedule2+"'";
  330 + sql += " and schedule <= ?";
  331 + objList.add(schedule2);
314 332 }
315 333  
316 334 list = jdbcTemplate.query(sql,
  335 + objList.toArray(),
317 336 new RowMapper<ChildTaskPlan>(){
318 337 @Override
319 338 public ChildTaskPlan mapRow(ResultSet rs, int rowNum) throws SQLException {
... ... @@ -354,10 +373,12 @@ public class BusIntervalServiceImpl implements BusIntervalService {
354 373 String line = map.get("line").toString();
355 374  
356 375 try {
357   -
358   - String sql = "select start_station_name, end_station_name from bsth_c_line where line_code = '"+line+"'";
  376 + List<String> objList = new ArrayList<String>();
  377 + String sql = "select start_station_name, end_station_name from bsth_c_line where line_code = ?";
  378 + objList.add(line);
359 379  
360 380 list = jdbcTemplate.query(sql,
  381 + objList.toArray(),
361 382 new RowMapper<Map<String, Object>>(){
362 383 @Override
363 384 public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
... ... @@ -393,16 +414,22 @@ public class BusIntervalServiceImpl implements BusIntervalService {
393 414 String ttId = map.get("ttId").toString();
394 415  
395 416 try {
  417 + List<String> objList = new ArrayList<String>();
396 418 String sql = "select td.lp, lp.lp_name from bsth_c_s_ttinfo_detail td" +
397 419 " left join bsth_c_s_gbi lp on td.lp = lp.id" +
398 420 " left join bsth_c_line cl on cl.id = td.xl where 1=1";
399   - if(line.length() != 0)
400   - sql += " and cl.line_code = '"+line+"'";
401   - if(ttId.length() != 0)
402   - sql += " and td.ttinfo = '"+ttId+"'";
  421 + if(line.length() != 0){
  422 + sql += " and cl.line_code = ?";
  423 + objList.add(line);
  424 + }
  425 + if(ttId.length() != 0){
  426 + sql += " and td.ttinfo = ?";
  427 + objList.add(ttId);
  428 + }
403 429 sql += " group by td.lp, lp.lp_name";
404 430  
405 431 list = jdbcTemplate.query(sql,
  432 + objList.toArray(),
406 433 new RowMapper<Map<String, Object>>(){
407 434 @Override
408 435 public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
... ... @@ -2123,7 +2150,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
2123 2150 if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("路阻") != -1){
2124 2151 lzbc++;
2125 2152 // lzlc = lzlc.add(lc);
2126   - }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("吊慢") != -1){
  2153 + }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("借调") != -1){
2127 2154 dmbc++;
2128 2155 // dmlc = dmlc.add(lc);
2129 2156 }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("故障") != -1){
... ... @@ -2132,25 +2159,25 @@ public class BusIntervalServiceImpl implements BusIntervalService {
2132 2159 }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("纠纷") != -1){
2133 2160 jfbc++;
2134 2161 // jflc = jflc.add(lc);
2135   - }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("肇事") != -1){
  2162 + }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("事故") != -1){
2136 2163 zsbc++;
2137 2164 // zslc = zslc.add(lc);
2138 2165 }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("缺人") != -1){
2139 2166 qrbc++;
2140 2167 // qrlc = qrlc.add(lc);
2141   - }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("车") != -1){
  2168 + }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("车") != -1){
2142 2169 qcbc++;
2143 2170 // qclc = qclc.add(lc);
2144   - }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("客稀") != -1){
  2171 + }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("保养") != -1){
2145 2172 kxbc++;
2146 2173 // kxlc = kxlc.add(lc);
2147   - }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("气候") != -1){
  2174 + }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("天气") != -1){
2148 2175 qhbc++;
2149 2176 // qhlc = qhlc.add(lc);
2150   - }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("援外") != -1){
  2177 + }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("支援") != -1){
2151 2178 wybc++;
2152 2179 // wylc = wylc.add(lc);
2153   - } else {
  2180 + }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("其他") != -1){
2154 2181 qtbc++;
2155 2182 // qtlc = qtlc.add(lc);
2156 2183 }
... ... @@ -2171,19 +2198,16 @@ public class BusIntervalServiceImpl implements BusIntervalService {
2171 2198  
2172 2199 sjlc = new BigDecimal(culateService.culateSjgl(tempList) + culateService.culateLjgl(tempList));
2173 2200 lzlc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "路阻"));
2174   - dmlc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "吊慢"));
  2201 + dmlc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "借调"));
2175 2202 gzlc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "故障"));
2176 2203 jflc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "纠纷"));
2177   - zslc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "肇事"));
  2204 + zslc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "事故"));
2178 2205 qrlc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "缺人"));
2179   - qclc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "缺车"));
2180   - kxlc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "客稀"));
2181   - qhlc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "气候"));
2182   - wylc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "援外"));
2183   - qtlc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "配车")).add(
2184   - new BigDecimal(culateService.culateCJLC(keyMap.get(key), "保养"))).add(
2185   - new BigDecimal(culateService.culateCJLC(keyMap.get(key), "抽减"))).add(
2186   - new BigDecimal(culateService.culateCJLC(keyMap.get(key), "其他")));
  2206 + qclc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "验车"));
  2207 + kxlc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "保养"));
  2208 + qhlc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "天气"));
  2209 + wylc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "支援"));
  2210 + qtlc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "其他"));
2187 2211  
2188 2212 boolean flag = true;
2189 2213 if(jhlc.doubleValue() == 0d){
... ... @@ -2359,11 +2383,14 @@ public class BusIntervalServiceImpl implements BusIntervalService {
2359 2383 endDate = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
2360 2384 }
2361 2385 try {
2362   -
2363   - String sql = "select * from bsth_c_s_sp_info_real where schedule_date_str"
2364   - + " >= '"+startDate+"' and schedule_date_str <= '"+endDate+"'";
  2386 + List<String> objList = new ArrayList<String>();
  2387 + String sql = "select * from bsth_c_s_sp_info_real where schedule_date_str >= ? and schedule_date_str <= ?";
  2388 + objList.add(startDate);
  2389 + objList.add(endDate);
  2390 +
2365 2391 if(line.length() != 0){
2366   - sql += " and xl_bm = '"+line+"'";
  2392 + sql += " and xl_bm = ?";
  2393 + objList.add(line);
2367 2394 }
2368 2395 if(sfqr == 1 && times.length() != 0){
2369 2396 String[] split = times.split("-");
... ... @@ -2378,14 +2405,17 @@ public class BusIntervalServiceImpl implements BusIntervalService {
2378 2405 }
2379 2406 }
2380 2407 if(company.length() != 0){
2381   - sql += " and gs_bm = '"+company+"'";
  2408 + sql += " and gs_bm = ?";
  2409 + objList.add(company);
2382 2410 }
2383 2411 if(subCompany.length() != 0){
2384   - sql += " and fgs_bm = '"+subCompany+"'";
  2412 + sql += " and fgs_bm = ?";
  2413 + objList.add(subCompany);
2385 2414 }
2386 2415 sql += " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'";
2387 2416  
2388 2417 list = jdbcTemplate.query(sql,
  2418 + objList.toArray(),
2389 2419 new RowMapper<ScheduleRealInfo>(){
2390 2420 @Override
2391 2421 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
... ... @@ -3173,20 +3203,30 @@ public class BusIntervalServiceImpl implements BusIntervalService {
3173 3203 if(map.get("sfyy")!=null)
3174 3204 sfyy = map.get("sfyy").toString().trim();
3175 3205  
  3206 + List<String> objList = new ArrayList<String>();
3176 3207 String sql = "select id, cl_zbh, fcsj, fcsj_actual, j_gh, j_name, lp_name, qdz_name, " +
3177 3208 "schedule_date_str, xl_name, zdsj, zdsj_actual, fgs_bm, fgs_name, gs_name, xl_dir, xl_bm " +
3178 3209 "from bsth_c_s_sp_info_real " +
3179   - "where schedule_date_str >= '"+startDate+"' and schedule_date_str <= '"+endDate+"' " +
  3210 + "where schedule_date_str >= ? and schedule_date_str <= ? " +
3180 3211 "and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks' and cc_service = 0";
  3212 + objList.add(startDate);
  3213 + objList.add(endDate);
3181 3214  
3182   - if(company.length() != 0)
3183   - sql += " and gs_bm = '"+company+"'";
3184   - if(subCompany.length() != 0)
3185   - sql += " and fgs_bm = '"+subCompany+"'";
3186   - if(line.length() != 0)
3187   - sql += " and xl_bm = '"+line+"'";
  3215 + if(company.length() != 0){
  3216 + sql += " and gs_bm = ?";
  3217 + objList.add(company);
  3218 + }
  3219 + if(subCompany.length() != 0){
  3220 + sql += " and fgs_bm = ?";
  3221 + objList.add(subCompany);
  3222 + }
  3223 + if(line.length() != 0){
  3224 + sql += " and xl_bm = ?";
  3225 + objList.add(line);
  3226 + }
3188 3227  
3189 3228 List<ScheduleRealInfo> list = jdbcTemplate.query(sql,
  3229 + objList.toArray(),
3190 3230 new RowMapper<ScheduleRealInfo>(){
3191 3231 @Override
3192 3232 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
... ...
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
... ... @@ -1286,9 +1286,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1286 1286  
1287 1287 List<Object[]> list0 = new ArrayList<Object[]>();
1288 1288 if(instructType > -1){
1289   - list0 = scheduleRealInfoRepository.historyMessage(line, d, t, device, instructType);
  1289 + list0 = scheduleRealInfoRepository.historyMessage(date, line, device, instructType);
1290 1290 } else {
1291   - list0 = scheduleRealInfoRepository.historyMessage(line, d, t, device);
  1291 + list0 = scheduleRealInfoRepository.historyMessage(date, line, device);
1292 1292 }
1293 1293 for (Object[] obj : list0) {
1294 1294 if (obj != null) {
... ... @@ -1325,9 +1325,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1325 1325 if(!device2.equals("")){
1326 1326 List<Object[]> list1 = new ArrayList<Object[]>();
1327 1327 if(instructType > -1){
1328   - list1 =scheduleRealInfoRepository.historyMessage(line, d, t, device2, instructType);
  1328 + list1 =scheduleRealInfoRepository.historyMessage(date, line, device2, instructType);
1329 1329 } else {
1330   - list1 =scheduleRealInfoRepository.historyMessage(line, d, t, device2);
  1330 + list1 =scheduleRealInfoRepository.historyMessage(date, line, device2);
1331 1331 }
1332 1332 for (Object[] obj : list1) {
1333 1333 if (obj != null) {
... ... @@ -2618,20 +2618,16 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2618 2618 double lbgl = culateService.culateLbgl(list_s);
2619 2619 map.put("ssgl", lbgl);
2620 2620 map.put("ssgl_lz", culateService.culateCJLC(list_s, "路阻"));
2621   - map.put("ssgl_dm", culateService.culateCJLC(list_s, "吊慢"));
  2621 + map.put("ssgl_dm", culateService.culateCJLC(list_s, "借调"));
2622 2622 map.put("ssgl_gz", culateService.culateCJLC(list_s, "故障"));
2623 2623 map.put("ssgl_jf", culateService.culateCJLC(list_s, "纠纷"));
2624   - map.put("ssgl_zs", culateService.culateCJLC(list_s, "肇事"));
  2624 + map.put("ssgl_zs", culateService.culateCJLC(list_s, "事故"));
2625 2625 map.put("ssgl_qr", culateService.culateCJLC(list_s, "缺人"));
2626   - map.put("ssgl_qc", culateService.culateCJLC(list_s, "缺车"));
2627   - map.put("ssgl_kx", culateService.culateCJLC(list_s, "客稀"));
2628   - map.put("ssgl_qh", culateService.culateCJLC(list_s, "气候"));
2629   - map.put("ssgl_yw", culateService.culateCJLC(list_s, "援外"));
2630   - double ssgl_pc = culateService.culateCJLC(list_s, "配车");
2631   - double ssgl_by = culateService.culateCJLC(list_s, "保养");
2632   - double ssgl_cj = culateService.culateCJLC(list_s, "抽减");
2633   - double ssgl_qt = culateService.culateCJLC(list_s, "其他");
2634   - map.put("ssgl_other", Arith.add(Arith.add(ssgl_pc, ssgl_by), Arith.add(ssgl_cj, ssgl_qt)));
  2626 + map.put("ssgl_qc", culateService.culateCJLC(list_s, "验车"));
  2627 + map.put("ssgl_kx", culateService.culateCJLC(list_s, "保养"));
  2628 + map.put("ssgl_qh", culateService.culateCJLC(list_s, "天气"));
  2629 + map.put("ssgl_yw", culateService.culateCJLC(list_s, "支援"));
  2630 + map.put("ssgl_other", culateService.culateCJLC(list_s, "其他"));
2635 2631 map.put("ssbc", culateService.culateLbbc(list_s));
2636 2632 double ljgl = culateService.culateLjgl(lists);
2637 2633 map.put("ljgl", ljgl);
... ... @@ -2715,20 +2711,16 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2715 2711 double lbgl = culateService.culateLbgl(list_s);
2716 2712 map.put("ssgl", lbgl);
2717 2713 map.put("ssgl_lz", culateService.culateCJLC(list_s, "路阻"));
2718   - map.put("ssgl_dm", culateService.culateCJLC(list_s, "吊慢"));
  2714 + map.put("ssgl_dm", culateService.culateCJLC(list_s, "借调"));
2719 2715 map.put("ssgl_gz", culateService.culateCJLC(list_s, "故障"));
2720 2716 map.put("ssgl_jf", culateService.culateCJLC(list_s, "纠纷"));
2721   - map.put("ssgl_zs", culateService.culateCJLC(list_s, "肇事"));
  2717 + map.put("ssgl_zs", culateService.culateCJLC(list_s, "事故"));
2722 2718 map.put("ssgl_qr", culateService.culateCJLC(list_s, "缺人"));
2723   - map.put("ssgl_qc", culateService.culateCJLC(list_s, "缺车"));
2724   - map.put("ssgl_kx", culateService.culateCJLC(list_s, "客稀"));
2725   - map.put("ssgl_qh", culateService.culateCJLC(list_s, "气候"));
2726   - map.put("ssgl_yw", culateService.culateCJLC(list_s, "援外"));
2727   - double ssgl_pc = culateService.culateCJLC(list_s, "配车");
2728   - double ssgl_by = culateService.culateCJLC(list_s, "保养");
2729   - double ssgl_cj = culateService.culateCJLC(list_s, "抽减");
2730   - double ssgl_qt = culateService.culateCJLC(list_s, "其他");
2731   - map.put("ssgl_other", Arith.add(Arith.add(ssgl_pc, ssgl_by), Arith.add(ssgl_cj, ssgl_qt)));
  2719 + map.put("ssgl_qc", culateService.culateCJLC(list_s, "验车"));
  2720 + map.put("ssgl_kx", culateService.culateCJLC(list_s, "保养"));
  2721 + map.put("ssgl_qh", culateService.culateCJLC(list_s, "天气"));
  2722 + map.put("ssgl_yw", culateService.culateCJLC(list_s, "支援"));
  2723 + map.put("ssgl_other", culateService.culateCJLC(list_s, "其他"));
2732 2724 map.put("ssbc", culateService.culateLbbc(list_s));
2733 2725 double ljgl = culateService.culateLjgl(lists);
2734 2726 map.put("ljgl", ljgl);
... ... @@ -2811,20 +2803,16 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2811 2803 }
2812 2804  
2813 2805 map.put("ssgl_lz", culateService.culateCJLC(list, "路阻"));
2814   - map.put("ssgl_dm", culateService.culateCJLC(list, "吊慢"));
  2806 + map.put("ssgl_dm", culateService.culateCJLC(list, "借调"));
2815 2807 map.put("ssgl_gz", culateService.culateCJLC(list, "故障"));
2816 2808 map.put("ssgl_jf", culateService.culateCJLC(list, "纠纷"));
2817   - map.put("ssgl_zs", culateService.culateCJLC(list, "肇事"));
  2809 + map.put("ssgl_zs", culateService.culateCJLC(list, "事故"));
2818 2810 map.put("ssgl_qr", culateService.culateCJLC(list, "缺人"));
2819   - map.put("ssgl_qc", culateService.culateCJLC(list, "缺车"));
2820   - map.put("ssgl_kx", culateService.culateCJLC(list, "客稀"));
2821   - map.put("ssgl_qh", culateService.culateCJLC(list, "气候"));
2822   - map.put("ssgl_yw", culateService.culateCJLC(list, "援外"));
2823   - double ssgl_pc = culateService.culateCJLC(list, "配车");
2824   - double ssgl_by = culateService.culateCJLC(list, "保养");
2825   - double ssgl_cj = culateService.culateCJLC(list, "抽减");
2826   - double ssgl_qt = culateService.culateCJLC(list, "其他");
2827   - map.put("ssgl_other", Arith.add(Arith.add(ssgl_pc, ssgl_by), Arith.add(ssgl_cj, ssgl_qt)));
  2811 + map.put("ssgl_qc", culateService.culateCJLC(list, "验车"));
  2812 + map.put("ssgl_kx", culateService.culateCJLC(list, "保养"));
  2813 + map.put("ssgl_qh", culateService.culateCJLC(list, "天气"));
  2814 + map.put("ssgl_yw", culateService.culateCJLC(list, "支援"));
  2815 + map.put("ssgl_other", culateService.culateCJLC(list, "其他"));
2828 2816 map.put("ssbc", culateService.culateLbbc(list));
2829 2817 map.put("ljgl", ljgl);
2830 2818 map.put("jhbc", culateService.culateJhbc(list, ""));
... ... @@ -2953,20 +2941,16 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2953 2941 map.put("zt", 1);
2954 2942 }
2955 2943 map.put("ssgl_lz", culateService.culateCJLC(list, "路阻"));
2956   - map.put("ssgl_dm", culateService.culateCJLC(list, "吊慢"));
  2944 + map.put("ssgl_dm", culateService.culateCJLC(list, "借调"));
2957 2945 map.put("ssgl_gz", culateService.culateCJLC(list, "故障"));
2958 2946 map.put("ssgl_jf", culateService.culateCJLC(list, "纠纷"));
2959   - map.put("ssgl_zs", culateService.culateCJLC(list, "肇事"));
  2947 + map.put("ssgl_zs", culateService.culateCJLC(list, "事故"));
2960 2948 map.put("ssgl_qr", culateService.culateCJLC(list, "缺人"));
2961   - map.put("ssgl_qc", culateService.culateCJLC(list, "缺车"));
2962   - map.put("ssgl_kx", culateService.culateCJLC(list, "客稀"));
2963   - map.put("ssgl_qh", culateService.culateCJLC(list, "气候"));
2964   - map.put("ssgl_yw", culateService.culateCJLC(list, "援外"));
2965   - double ssgl_pc = culateService.culateCJLC(list, "配车");
2966   - double ssgl_by = culateService.culateCJLC(list, "保养");
2967   - double ssgl_cj = culateService.culateCJLC(list, "抽减");
2968   - double ssgl_qt = culateService.culateCJLC(list, "其他");
2969   - map.put("ssgl_other", Arith.add(Arith.add(ssgl_pc, ssgl_by), Arith.add(ssgl_cj, ssgl_qt)));
  2949 + map.put("ssgl_qc", culateService.culateCJLC(list, "验车"));
  2950 + map.put("ssgl_kx", culateService.culateCJLC(list, "保养"));
  2951 + map.put("ssgl_qh", culateService.culateCJLC(list, "天气"));
  2952 + map.put("ssgl_yw", culateService.culateCJLC(list, "支援"));
  2953 + map.put("ssgl_other", culateService.culateCJLC(list, "其他"));
2970 2954  
2971 2955 map.put("ssbc", culateService.culateLbbc(list));
2972 2956 map.put("ljgl", ljgl);
... ... @@ -3147,20 +3131,16 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
3147 3131 map.put("zt", 1);
3148 3132 }
3149 3133 map.put("ssgl_lz", culateService.culateCJLC(list, "路阻"));
3150   - map.put("ssgl_dm", culateService.culateCJLC(list, "吊慢"));
  3134 + map.put("ssgl_dm", culateService.culateCJLC(list, "借调"));
3151 3135 map.put("ssgl_gz", culateService.culateCJLC(list, "故障"));
3152 3136 map.put("ssgl_jf", culateService.culateCJLC(list, "纠纷"));
3153   - map.put("ssgl_zs", culateService.culateCJLC(list, "肇事"));
  3137 + map.put("ssgl_zs", culateService.culateCJLC(list, "事故"));
3154 3138 map.put("ssgl_qr", culateService.culateCJLC(list, "缺人"));
3155   - map.put("ssgl_qc", culateService.culateCJLC(list, "缺车"));
3156   - map.put("ssgl_kx", culateService.culateCJLC(list, "客稀"));
3157   - map.put("ssgl_qh", culateService.culateCJLC(list, "气候"));
3158   - map.put("ssgl_yw", culateService.culateCJLC(list, "援外"));
3159   - double ssgl_pc = culateService.culateCJLC(list, "配车");
3160   - double ssgl_by = culateService.culateCJLC(list, "保养");
3161   - double ssgl_cj = culateService.culateCJLC(list, "抽减");
3162   - double ssgl_qt = culateService.culateCJLC(list, "其他");
3163   - map.put("ssgl_other", Arith.add(Arith.add(ssgl_pc, ssgl_by), Arith.add(ssgl_cj, ssgl_qt)));
  3139 + map.put("ssgl_qc", culateService.culateCJLC(list, "验车"));
  3140 + map.put("ssgl_kx", culateService.culateCJLC(list, "保养"));
  3141 + map.put("ssgl_qh", culateService.culateCJLC(list, "天气"));
  3142 + map.put("ssgl_yw", culateService.culateCJLC(list, "支援"));
  3143 + map.put("ssgl_other", culateService.culateCJLC(list, "其他"));
3164 3144  
3165 3145 map.put("ssbc", culateService.culateLbbc(list));
3166 3146 map.put("ljgl", ljgl);
... ... @@ -3232,23 +3212,23 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
3232 3212 ssgl += childTaskPlan.getMileage();
3233 3213 if (childTaskPlan.getDestroyReason().equals("路阻")) {
3234 3214 ssgl_lz += childTaskPlan.getMileage();
3235   - } else if (childTaskPlan.getDestroyReason().equals("吊慢")) {
  3215 + } else if (childTaskPlan.getDestroyReason().equals("借调")) {
3236 3216 ssgl_dm += childTaskPlan.getMileage();
3237 3217 } else if (childTaskPlan.getDestroyReason().equals("故障")) {
3238 3218 ssgl_gz += childTaskPlan.getMileage();
3239 3219 } else if (childTaskPlan.getDestroyReason().equals("纠纷")) {
3240 3220 ssgl_jf += childTaskPlan.getMileage();
3241   - } else if (childTaskPlan.getDestroyReason().equals("肇事")) {
  3221 + } else if (childTaskPlan.getDestroyReason().equals("事故")) {
3242 3222 ssgl_zs += childTaskPlan.getMileage();
3243 3223 } else if (childTaskPlan.getDestroyReason().equals("缺人")) {
3244 3224 ssgl_qr += childTaskPlan.getMileage();
3245   - } else if (childTaskPlan.getDestroyReason().equals("车")) {
  3225 + } else if (childTaskPlan.getDestroyReason().equals("车")) {
3246 3226 ssgl_qc += childTaskPlan.getMileage();
3247   - } else if (childTaskPlan.getDestroyReason().equals("客稀")) {
  3227 + } else if (childTaskPlan.getDestroyReason().equals("保养")) {
3248 3228 ssgl_kx += childTaskPlan.getMileage();
3249   - } else if (childTaskPlan.getDestroyReason().equals("气候")) {
  3229 + } else if (childTaskPlan.getDestroyReason().equals("天气")) {
3250 3230 ssgl_qh += childTaskPlan.getMileage();
3251   - } else if (childTaskPlan.getDestroyReason().equals("援外")) {
  3231 + } else if (childTaskPlan.getDestroyReason().equals("支援")) {
3252 3232 ssgl_yw += childTaskPlan.getMileage();
3253 3233 } else {
3254 3234 ssgl_other += childTaskPlan.getMileage();
... ...
src/main/java/com/bsth/service/report/impl/CulateMileageServiceImpl.java
... ... @@ -31,7 +31,8 @@ public class CulateMileageServiceImpl implements CulateMileageService{
31 31 @Override
32 32 public List<Map<String, Object>> jobFwqk(List<ScheduleRealInfo> lists) {
33 33 // TODO Auto-generated method stub
34   - String[] lblxs = {"配车", "保养","故障","肇事","路阻","纠纷","缺人","客稀","缺车","气候","援外","吊慢","抽减","其他" };
  34 +// String[] lblxs = {"配车","保养","故障","肇事","路阻","纠纷","缺人","客稀","缺车","气候","援外","吊慢","抽减","其他" };
  35 + String[] lblxs = {"路阻","借调","故障","纠纷","事故","缺人","验车","保养","天气","支援","其他"};
35 36 List<Map<String, Object>> list=new ArrayList<Map<String,Object>>();
36 37 for (int i = 0; i < lists.size(); i++) {
37 38 ScheduleRealInfo scheduleRealInfo = lists.get(i);
... ...
src/main/java/com/bsth/service/report/impl/ReportServiceImpl.java
... ... @@ -1671,7 +1671,8 @@ public class ReportServiceImpl implements ReportService{
1671 1671 @Override
1672 1672 public List<Map<String, Object>> jobFwqk(Map<String, Object> map) {
1673 1673 // TODO Auto-generated method stub
1674   - String[] lblxs = {"配车", "保养","故障","肇事","路阻","纠纷","缺人","客稀","缺车","气候","援外","吊慢","抽减","其他" };
  1674 +// String[] lblxs = {"配车","保养","故障","肇事","路阻","纠纷","缺人","客稀","缺车","气候","援外","吊慢","抽减","其他" };
  1675 + String[] lblxs = {"路阻","借调","故障","纠纷","事故","缺人","验车","保养","天气","支援","其他"};
1675 1676 String line=map.get("line").toString();
1676 1677 String date=map.get("date").toString();
1677 1678 map.put("bcType", "normal");
... ... @@ -2694,20 +2695,20 @@ public class ReportServiceImpl implements ReportService{
2694 2695 double lbss=culateService.culateSsMile(list);//烂班少驶
2695 2696 map.put("lbss", lbss);
2696 2697 map.put("ssgl_lz", culateService.culateSsMileXx(list, "路阻"));
2697   - map.put("ssgl_dm", culateService.culateSsMileXx(list, "吊慢"));
  2698 + map.put("ssgl_dm", culateService.culateSsMileXx(list, "借调"));
2698 2699 map.put("ssgl_gz", culateService.culateSsMileXx(list, "故障"));
2699 2700 map.put("ssgl_jf", culateService.culateSsMileXx(list, "纠纷"));
2700   - map.put("ssgl_zs", culateService.culateSsMileXx(list, "肇事"));
  2701 + map.put("ssgl_zs", culateService.culateSsMileXx(list, "事故"));
2701 2702 map.put("ssgl_qr", culateService.culateSsMileXx(list, "缺人"));
2702   - map.put("ssgl_qc", culateService.culateSsMileXx(list, "缺车"));
2703   - map.put("ssgl_kx", culateService.culateSsMileXx(list, "客稀"));
2704   - map.put("ssgl_qh", culateService.culateSsMileXx(list, "气候"));
2705   - map.put("ssgl_yw", culateService.culateSsMileXx(list, "援外"));
  2703 + map.put("ssgl_qc", culateService.culateSsMileXx(list, "验车"));
  2704 + map.put("ssgl_kx", culateService.culateSsMileXx(list, "保养"));
  2705 + map.put("ssgl_qh", culateService.culateSsMileXx(list, "天气"));
  2706 + map.put("ssgl_yw", culateService.culateSsMileXx(list, "支援"));
2706 2707 map.put("ssgl_other", culateService.culateSsMileXx(list, "其他"));
2707 2708  
2708 2709  
2709 2710 double zrwjcclc=culateService.culateZrwJccLc(list, "故障");
2710   - double zrwjcclc1=culateService.culateZrwJccLc(list, "肇事");
  2711 + double zrwjcclc1=Arith.add(culateService.culateZrwJccLc(list, "肇事"), culateService.culateZrwJccLc(list, "事故"));
2711 2712 double zrwjcclc2=culateService.culateZrwJccLc(list, "纠纷");
2712 2713 double zrwjcclcqt=Arith.add(culateService.culateZrwJccLc(list, "其他"),culateService.culateZrwJccLc(list, ""));
2713 2714 map.put("jhwjcclc_z", Arith.add(jhwjcclc,zrwjcclcqt));
... ...
src/main/java/com/bsth/service/schedule/impl/PeopleCarPlanServiceImpl.java
... ... @@ -46,18 +46,27 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
46 46 List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>();
47 47  
48 48 try {
49   - String sql = "select * from bsth_c_s_sp_info_real where schedule_date_str = '"+date+"'";
  49 + List<String> objList = new ArrayList<String>();
  50 + String sql = "select * from bsth_c_s_sp_info_real where schedule_date_str = ?";
  51 + objList.add(date);
50 52  
51   - if(line.length() != 0)
52   - sql += " and xl_bm = '"+line+"'";
53   - if(company.length() != 0)
54   - sql += " and gs_bm = '"+company+"'";
55   - if(subCompany.length() != 0)
56   - sql += " and fgs_bm = '"+subCompany+"'";
  53 + if(line.length() != 0){
  54 + sql += " and xl_bm = ?";
  55 + objList.add(line);
  56 + }
  57 + if(company.length() != 0){
  58 + sql += " and gs_bm = ?";
  59 + objList.add(company);
  60 + }
  61 + if(subCompany.length() != 0){
  62 + sql += " and fgs_bm = ?";
  63 + objList.add(subCompany);
  64 + }
57 65  
58 66 sql += " order by gs_bm, fgs_bm, xl_bm";
59 67  
60 68 list = jdbcTemplate.query(sql,
  69 + objList.toArray(),
61 70 new RowMapper<ScheduleRealInfo>(){
62 71 @Override
63 72 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
... ... @@ -193,17 +202,25 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
193 202 }
194 203  
195 204 try {
196   -
197   - String sql = "select * from bsth_c_s_sp_info where schedule_date = '"+date+"'";
  205 + List<String> objList = new ArrayList<String>();
  206 + String sql = "select * from bsth_c_s_sp_info where schedule_date = ?";
  207 + objList.add(date);
  208 +
198 209 if(line.length() != 0){
199   - sql += " and xl_bm = '"+line+"'";
  210 + sql += " and xl_bm = ?";
  211 + objList.add(line);
  212 + }
  213 + if(company.length() != 0){
  214 + sql += " and gs_bm = ?";
  215 + objList.add(company);
  216 + }
  217 + if(subCompany.length() != 0){
  218 + sql += " and fgs_bm = ?";
  219 + objList.add(subCompany);
200 220 }
201   - if(company.length() != 0)
202   - sql += " and gs_bm = '"+company+"'";
203   - if(subCompany.length() != 0)
204   - sql += " and fgs_bm = '"+subCompany+"'";
205 221  
206 222 list = jdbcTemplate.query(sql,
  223 + objList.toArray(),
207 224 new RowMapper<SchedulePlanInfo>(){
208 225 @Override
209 226 public SchedulePlanInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
... ... @@ -601,19 +618,25 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
601 618 endDate = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
602 619 }
603 620 try {
604   -
  621 + List<String> objList = new ArrayList<String>();
605 622 String sql = "select schedule_date_str,xl_name,bc_type,gs_name,fgs_name,fgs_bm,bcs,"
606 623 +"fcno,fcsj,fcsj_actual,zdsj,zdsj_actual,bcsj,qdz_name,sp_id,cc_service"
607   - +" from bsth_c_s_sp_info_real where schedule_date_str >= '"+startDate
608   - +"' and schedule_date_str <= '"+endDate+"'";
  624 + +" from bsth_c_s_sp_info_real where schedule_date_str >= ?"
  625 + +" and schedule_date_str <= ?";
  626 + objList.add(startDate);
  627 + objList.add(endDate);
  628 +
609 629 if(line.length() != 0){
610   - sql += " and xl_bm = '"+line+"'";
  630 + sql += " and xl_bm = ?";
  631 + objList.add(line);
611 632 }
612 633 if(company.length() != 0){
613   - sql += " and gs_bm = '"+company+"'";
  634 + sql += " and gs_bm = ?";
  635 + objList.add(company);
614 636 }
615 637 if(subCompany.length() != 0){
616   - sql += " and fgs_bm = '"+subCompany+"'";
  638 + sql += " and fgs_bm = ?";
  639 + objList.add(subCompany);
617 640 }
618 641 sql += " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'";
619 642 if(Integer.valueOf(bcType) == 1){
... ... @@ -622,6 +645,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
622 645 sql += " and bc_type = 'region'";
623 646 }
624 647 list = jdbcTemplate.query(sql,
  648 + objList.toArray(),
625 649 new RowMapper<ScheduleRealInfo>(){
626 650 @Override
627 651 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
... ... @@ -915,19 +939,26 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
915 939 endDate = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
916 940 }
917 941 try {
918   -
919   - String sql = "select * from bsth_c_s_sp_info_real where schedule_date_str >= '"+startDate+"' and schedule_date_str <= '"+endDate+"'";
  942 + List<String> objList = new ArrayList<String>();
  943 + String sql = "select * from bsth_c_s_sp_info_real where schedule_date_str >= ? and schedule_date_str <= ?";
  944 + objList.add(startDate);
  945 + objList.add(endDate);
  946 +
920 947 if(line.length() != 0){
921   - sql += " and xl_bm = '"+line+"'";
  948 + sql += " and xl_bm = ?";
  949 + objList.add(line);
922 950 }
923 951 if(nbbm.length() != 0){
924   - sql += " and cl_zbh like '%"+nbbm+"%'";
  952 + sql += " and cl_zbh like ?";
  953 + objList.add("%" + nbbm + "%");
925 954 }
926 955 if(company.length() != 0){
927   - sql += " and gs_bm like '"+company+"'";
  956 + sql += " and gs_bm = ?";
  957 + objList.add(company);
928 958 }
929 959 if(subCompany.length() != 0){
930   - sql += " and fgs_bm like '"+subCompany+"'";
  960 + sql += " and fgs_bm = ?";
  961 + objList.add(subCompany);
931 962 }
932 963 sql += " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'";
933 964 if(bcType.trim().equals("1")){
... ... @@ -937,6 +968,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
937 968 }
938 969  
939 970 list = jdbcTemplate.query(sql,
  971 + objList.toArray(),
940 972 new RowMapper<ScheduleRealInfo>(){
941 973 @Override
942 974 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
... ... @@ -1206,20 +1238,28 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1206 1238 isCancel = map.get("isCancel").toString().trim();
1207 1239 }
1208 1240 try {
  1241 + List<String> objList = new ArrayList<String>();
1209 1242 String sql = "select tt.id, tt.name from bsth_c_s_ttinfo tt left join" +
1210 1243 " (select tt_info from bsth_c_s_sp_info where 1=1";
1211   - if(startDate.trim().length() > 0)
1212   - sql += " and schedule_date >= '"+startDate+"'";
1213   - if(endDate.trim().length() > 0)
1214   - sql += " and schedule_date <= '"+endDate+"'";
  1244 +
  1245 + if(startDate.trim().length() > 0){
  1246 + sql += " and schedule_date >= ?";
  1247 + objList.add(startDate);
  1248 + }
  1249 + if(endDate.trim().length() > 0){
  1250 + sql += " and schedule_date <= ?";
  1251 + objList.add(endDate);
  1252 + }
1215 1253 if(line.trim().length() != 0){
1216   - sql += " and xl_bm = '"+line+"'";
  1254 + sql += " and xl_bm = ?";
  1255 + objList.add(line);
1217 1256 } else {
1218 1257 return resList;
1219 1258 }
1220 1259 sql += " ) sp on sp.tt_info = tt.id where sp.tt_info is not null group by tt.id, tt.name";
1221 1260  
1222 1261 resList = jdbcTemplate.query(sql,
  1262 + objList.toArray(),
1223 1263 new RowMapper<Map<String, Object>>(){
1224 1264 @Override
1225 1265 public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
... ... @@ -1261,18 +1301,28 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1261 1301 date = sdf.format(new Date());
1262 1302  
1263 1303 try {
  1304 + List<String> objList = new ArrayList<String>();
1264 1305 String sql = "select a.schedule_date_str, a.real_exec_date, a.xl_name, a.fcsj, a.fcsj_actual, a.zdsj, a.zdsj_actual, a.qdz_name, a.zdz_name, a.xl_dir, a.status, a.gs_name, a.fgs_name,"
1265 1306 + " a.xl_bm, a.fgs_bm, a.cc_service, b.start_opt from bsth_c_s_sp_info_real a left join (select line, start_opt from bsth_c_line_config order by id desc) b on a.xl_bm = b.line"
1266   - + " where schedule_date_str = '"+date+"'"
  1307 + + " where schedule_date_str = ?"
1267 1308 + " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks' and bc_type != 'region'";
1268   - if(line.trim().length() != 0)
1269   - sql += " and xl_bm = '"+line+"'";
1270   - if(company.length() != 0)
1271   - sql += " and gs_bm = '"+company+"'";
1272   - if(subCompany.length() != 0)
1273   - sql += " and fgs_bm = '"+subCompany+"'";
  1309 + objList.add(date);
  1310 +
  1311 + if(line.trim().length() != 0){
  1312 + sql += " and xl_bm = ?";
  1313 + objList.add(line);
  1314 + }
  1315 + if(company.length() != 0){
  1316 + sql += " and gs_bm = ?";
  1317 + objList.add(company);
  1318 + }
  1319 + if(subCompany.length() != 0){
  1320 + sql += " and fgs_bm = ?";
  1321 + objList.add(subCompany);
  1322 + }
1274 1323  
1275 1324 list = jdbcTemplate.query(sql,
  1325 + objList.toArray(),
1276 1326 new RowMapper<ScheduleRealInfo>(){
1277 1327 @Override
1278 1328 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
... ... @@ -1532,19 +1582,30 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1532 1582 }
1533 1583  
1534 1584 try {
  1585 + List<String> objList = new ArrayList<String>();
1535 1586 String sql = "select a.schedule_date_str, a.real_exec_date, a.xl_bm, a.xl_name, a.fcsj, a.fcsj_actual, a.zdsj, a.zdsj_actual, a.qdz_name, a.zdz_name, a.xl_dir, a.status, a.gs_name, a.fgs_name,"
1536 1587 + " a.fgs_bm, a.cc_service, a.remarks, a.adjust_exps, b.start_opt from bsth_c_s_sp_info_real a left join (select line, start_opt from bsth_c_line_config order by id desc) b "
1537 1588 + " on a.xl_bm = b.line"
1538   - + " where schedule_date_str >= '"+startDate+"' and schedule_date_str <= '"+endDate+"'"
  1589 + + " where schedule_date_str >= ? and schedule_date_str <= ?"
1539 1590 + " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks' and bc_type != 'region'";
1540   - if(line.length() != 0)
1541   - sql += " and xl_bm = '"+line+"'";
1542   - if(company.length() != 0)
1543   - sql += " and gs_bm = '"+company+"'";
1544   - if(subCompany.length() != 0)
1545   - sql += " and fgs_bm = '"+subCompany+"'";
  1591 + objList.add(startDate);
  1592 + objList.add(endDate);
  1593 +
  1594 + if(line.length() != 0){
  1595 + sql += " and xl_bm = ?";
  1596 + objList.add(line);
  1597 + }
  1598 + if(company.length() != 0){
  1599 + sql += " and gs_bm = ?";
  1600 + objList.add(company);
  1601 + }
  1602 + if(subCompany.length() != 0){
  1603 + sql += " and fgs_bm = ?";
  1604 + objList.add(subCompany);
  1605 + }
1546 1606  
1547 1607 list = jdbcTemplate.query(sql,
  1608 + objList.toArray(),
1548 1609 new RowMapper<ScheduleRealInfo>(){
1549 1610 @Override
1550 1611 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
... ... @@ -2150,24 +2211,30 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
2150 2211 // String code = map.get("code").toString();
2151 2212 String type = map.get("type").toString();
2152 2213  
  2214 + List<String> objList = new ArrayList<String>();
2153 2215 String sql_="select * from bsth_c_s_sp_info_real "
2154   - + " WHERE schedule_date_str = '"+date+"' ";
  2216 + + " WHERE schedule_date_str = ? ";
  2217 + objList.add(date);
  2218 +
2155 2219 if(!line.equals("")){
2156   - sql_ += " and xl_bm = '"+line+"'";
  2220 + sql_ += " and xl_bm = ?";
  2221 + objList.add(line);
2157 2222 }
2158 2223 if(company.length() != 0){
2159   - sql_ += " and gs_bm='"+company+"'";
  2224 + sql_ += " and gs_bm = ?";
  2225 + objList.add(company);
2160 2226 }
2161 2227 if(subCompany.length() != 0){
2162   - sql_ += " and fgs_bm='"+subCompany+"'";
  2228 + sql_ += " and fgs_bm = ?";
  2229 + objList.add(subCompany);
2163 2230 }
2164 2231  
2165   -
2166 2232 String sql="SELECT r.id,r.schedule_date_str,r.xl_name,r.xl_bm,r.cl_zbh,r.j_gh,r.j_name,r.fcsj,"
2167 2233 + " r.gs_name,r.fgs_name,CONCAT(r.xl_bm,'_',r.id) as line_sch FROM ("+sql_+") AS r"
2168 2234 + " order by r.gs_bm,r.fgs_bm,r.xl_bm,r.id ";
2169 2235  
2170 2236 List<Map<String, Object>> tempList = jdbcTemplate.query(sql,
  2237 + objList.toArray(),
2171 2238 new RowMapper<Map<String, Object>>(){
2172 2239 @Override
2173 2240 public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
... ... @@ -2372,14 +2439,18 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
2372 2439 // String code = map.get("code").toString();
2373 2440 String type = map.get("type").toString();
2374 2441  
  2442 + List<String> objList = new ArrayList<String>();
2375 2443 String sql_="select * from bsth_c_s_sp_info_real "
2376   - + " WHERE schedule_date_str = '"+date+"' and xl_bm = '"+line+"'";
  2444 + + " WHERE schedule_date_str = ? and xl_bm = ?";
  2445 + objList.add(date);
  2446 + objList.add(line);
2377 2447  
2378 2448 String sql="SELECT r.id,r.schedule_date_str,r.xl_name,r.xl_bm,r.cl_zbh,r.j_gh,r.j_name,r.fcsj,"
2379 2449 + " r.gs_name,r.fgs_name,CONCAT(r.xl_bm,'_',r.id) as gh_sch FROM ("+sql_+") AS r"
2380 2450 + " order by r.xl_name,r.id ";
2381 2451  
2382 2452 List<Map<String, Object>> list = jdbcTemplate.query(sql,
  2453 + objList.toArray(),
2383 2454 new RowMapper<Map<String, Object>>(){
2384 2455 @Override
2385 2456 public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
... ... @@ -2577,14 +2648,17 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
2577 2648 if(map.get("type")!=null)
2578 2649 type = map.get("type").toString().trim();
2579 2650  
2580   - String sql_="select * from bsth_c_s_sp_info_real "
2581   - + " WHERE schedule_date_str = '"+date+"' and j_gh = '"+jgh+"'";
  2651 + List<String> objList = new ArrayList<String>();
  2652 + String sql_ = "select * from bsth_c_s_sp_info_real "
  2653 + + " WHERE schedule_date_str = ? and j_gh = ?";
  2654 + objList.add(date);
  2655 + objList.add(jgh);
2582 2656  
2583 2657 if(!line.equals("")){
2584   - sql_ +=" and xl_bm = '"+line+"'";
  2658 + sql_ +=" and xl_bm = ?";
  2659 + objList.add(line);
2585 2660 }
2586 2661  
2587   -
2588 2662 String sql="SELECT r.id,r.schedule_date_str,r.fcsj,r.xl_name,r.xl_bm,r.cl_zbh,r.j_gh,r.j_name,"
2589 2663 + " r.fcsj,d. TIMESTAMP,d.reply46,d.reply47,d.reply46time,d.reply47time,"
2590 2664 + " r.gs_name,r.fgs_name FROM ("+sql_+") "
... ... @@ -2593,6 +2667,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
2593 2667  
2594 2668  
2595 2669 List<Map<String, Object>> list = jdbcTemplate.query(sql,
  2670 + objList.toArray(),
2596 2671 new RowMapper<Map<String, Object>>(){
2597 2672 @Override
2598 2673 public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
... ...
src/main/resources/static/pages/base/stationroute/add.html
... ... @@ -381,7 +381,7 @@ $(&#39;#add_station_mobal&#39;).on(&#39;AddStationMobal.show&#39;, function(e, addMap,ajaxd,stao
381 381 staobj.setAddStation({});
382 382 var add_direction_v = $('#stationdirSelect').val();
383 383 var version = $("#versions").val();
384   - PublicFunctions.resjtreeDate(Line.id,add_direction_v,version);
  384 + fun.resjtreeDate(Line.id,add_direction_v,version);
385 385 //ajaxd.getSectionRouteInfo(Line.id,add_direction_v,version,function(data) {
386 386 // fun.linePanlThree(Line.id,data,add_direction_v,version);
387 387 //});
... ...
src/main/resources/static/pages/base/stationroute/js/stationroute-ajax-getdata.js
... ... @@ -98,12 +98,12 @@ var GetAjaxData = function(){
98 98 });
99 99 },
100 100 findUpStationRouteCode : function(lineId,diraction,stationRouteCode,callback) {
101   - $get('/stationroute/findUpStationRouteCode',{lineId:lineId,direction:diraction,stationRouteCode:stationRouteCode,version:version},function(result) {
  101 + $get('/stationroute/findUpStationRouteCode',{lineId:lineId,direction:diraction,stationRouteCode:stationRouteCode},function(result) {
102 102 callback && callback(result);
103 103 });
104 104 },
105 105 findUpSectionRouteCode : function(lineId,diraction,sectionRouteCode,callback) {
106   - $get('/sectionroute/findUpSectionRouteCode',{lineId:lineId,direction:diraction,sectionRouteCode:sectionRouteCode,version:version},function(result) {
  106 + $get('/sectionroute/findUpSectionRouteCode',{lineId:lineId,direction:diraction,sectionRouteCode:sectionRouteCode},function(result) {
107 107 callback && callback(result);
108 108 });
109 109 },
... ...
src/main/resources/static/pages/base/stationroute/js/stationroute-list-function.js
... ... @@ -118,7 +118,7 @@ var PublicFunctions = function () {
118 118 $('#inout_carpark_tree').show();
119 119 $('#InoutCarparktreeMobal .table-toolbar').show();
120 120  
121   - GetAjaxData.getRouteByStartEnd(id, version, start[0], end[0], function (result1) {
  121 + GetAjaxData.getRouteByStartEnd(id, version, start[0], end[0], function (result1){
122 122 var routes = result1.data.routes, rootNode;
123 123 WorldsBMap.clearMarkAndOverlays();
124 124 var startPoint = mapData[start.join('_')], endPoint = mapData[end.join('_')], point, points;
... ...
src/main/resources/static/pages/base/stationroute/js/stationroute-list-map.js
... ... @@ -549,7 +549,7 @@ window.WorldsBMap = function () {
549 549 var html2 = '<div style="position: absolute; margin: 0pt; padding: 0pt; width: 160px; height: 26px; left: -10px; top: -35px; overflow: hidden;">'
550 550 + '<img class="rm3_image" style="border:none;left:0px; top:0px; position:absolute;" src="/pages/base/stationroute/css/img/back160.png">'
551 551 + '</div>'
552   - + '<label class=" BMapLabel" unselectable="on" style="position: absolute; -moz-user-select: none; display: inline; cursor: inherit; border: 0px none; padding: 2px 1px 1px; white-space: nowrap; font: 12px arial,simsun; z-index: 80; color: rgb(255, 102, 0); left: 15px; top: -35px;"><span style="float: left; color: #fdfdfd; margin-left: -22px; font-size: 6px;">' + s + '</span>' + stationName + '</label>';
  552 + + '<label class=" BMapLabel" unselectable="on" style="position: absolute; -moz-user-select: none; display: inline; cursor: inherit; border: 0px none; padding: 2px 1px 1px; white-space: nowrap; font: 12px arial,simsun; z-index: 80; color: rgb(255, 102, 0); left: 15px; top: -35px;"><span style="float: left; color: #fdfdfd; margin-left: -22px; font-size: 11px;">' + s + '</span>' + stationName + '</label>';
553 553  
554 554 var myRichMarker1 = new BMapLib.RichMarker(html2, point_center, {
555 555 "title": stationName,
... ...
src/main/resources/static/pages/forms/mh_sj/scheduleDaily/scheduleDaily_mh.html
... ... @@ -95,16 +95,16 @@ word-wrap: break-word;
95 95 <td colspan="5" rowspan="2">原因</td>
96 96 </tr>
97 97 <tr>
98   - <td><span >路阻</span></td>
99   - <td><span>吊慢</span></td>
100   - <td><span >故障</span></td>
101   - <td><span >纠纷</span></td>
102   - <td><span >肇事</span></td>
  98 + <td><span>路阻</span></td>
  99 + <td><span>借调</span></td>
  100 + <td><span>故障</span></td>
  101 + <td><span>纠纷</span></td>
  102 + <td><span>事故</span></td>
103 103 <td><span>缺人</span></td>
104   - <td><span>缺车</span></td>
105   - <td><span >客稀</span></td>
106   - <td><span>气候</span></td>
107   - <td><span>援外</span></td>
  104 + <td><span>验车</span></td>
  105 + <td><span>保养</span></td>
  106 + <td><span>天气</span></td>
  107 + <td><span>支援</span></td>
108 108 <td><span>其他</span></td>
109 109 <td><span ><c>全日</c></span></td>
110 110 <td><span >早高峰</span></td>
... ...
src/main/resources/static/pages/forms/mould/lbStatuAnaly.xls
No preview for this file type
src/main/resources/static/pages/forms/mould/scheduleDaily.xls
No preview for this file type
src/main/resources/static/pages/forms/mould/scheduleDaily_m.xls
No preview for this file type
src/main/resources/static/pages/forms/mould/statisticsDaily_2.xls
No preview for this file type
src/main/resources/static/pages/forms/statement/historyMessage.html
... ... @@ -31,10 +31,9 @@
31 31 <span class="item-label" style="width: 80px;">指令类型: </span>
32 32 <select class="form-control" id="directiveSelect" name="dType">
33 33 <option value="-1">全部</option>
34   - <option value="0">调度指令</option>
35   - <option value="1">运营指令</option>
36   - <option value="2">线路切换指令</option>
37   - <option value="3">消息短语</option>
  34 + <option value="2">调度指令</option>
  35 + <option value="3">运营指令</option>
  36 + <option value="0">消息短语</option>
38 37 </select>
39 38 </div>
40 39 <div style="display: inline-block;margin-left: 12px;">
... ...
src/main/resources/static/pages/forms/statement/lbStatuAnaly.html
... ... @@ -33,15 +33,15 @@
33 33 <span class="item-label" style="width: 80px;">烂班原因: </span>
34 34 <input class="form-control" type="checkbox" id="totalLb" style="width: 20px;" checked="true"/>全选
35 35 <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="0" checked="true"/>路阻
36   - <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="1" checked="true"/>吊慢
  36 + <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="1" checked="true"/>借调
37 37 <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="2" checked="true"/>故障
38 38 <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="3" checked="true"/>纠纷
39   - <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="4" checked="true"/>肇事
  39 + <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="4" checked="true"/>事故
40 40 <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="5" checked="true"/>缺人
41   - <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="6" checked="true"/>缺车
42   - <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="7" checked="true"/>客稀
43   - <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="8" checked="true"/>气候
44   - <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="9" checked="true"/>援外
  41 + <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="6" checked="true"/>验车
  42 + <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="7" checked="true"/>保养
  43 + <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="8" checked="true"/>天气
  44 + <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="9" checked="true"/>支援
45 45 <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="10" checked="true"/>其他
46 46 </div>
47 47 <div style="margin-top: 5px"></div>
... ... @@ -538,15 +538,15 @@
538 538 <tr>
539 539 <th class="hidden"></th>
540 540 {{if reason[0].checked == true}}<th colspan="3">路阻</th>{{/if}}
541   - {{if reason[1].checked == true}}<th colspan="3">吊慢</th>{{/if}}
  541 + {{if reason[1].checked == true}}<th colspan="3">借调</th>{{/if}}
542 542 {{if reason[2].checked == true}}<th colspan="3">故障</th>{{/if}}
543 543 {{if reason[3].checked == true}}<th colspan="3">纠纷</th>{{/if}}
544   - {{if reason[4].checked == true}}<th colspan="3">肇事</th>{{/if}}
  544 + {{if reason[4].checked == true}}<th colspan="3">事故</th>{{/if}}
545 545 {{if reason[5].checked == true}}<th colspan="3">缺人</th>{{/if}}
546   - {{if reason[6].checked == true}}<th colspan="3">缺车</th>{{/if}}
547   - {{if reason[7].checked == true}}<th colspan="3">客稀</th>{{/if}}
548   - {{if reason[8].checked == true}}<th colspan="3">气候</th>{{/if}}
549   - {{if reason[9].checked == true}}<th colspan="3">援外</th>{{/if}}
  546 + {{if reason[6].checked == true}}<th colspan="3">验车</th>{{/if}}
  547 + {{if reason[7].checked == true}}<th colspan="3">保养</th>{{/if}}
  548 + {{if reason[8].checked == true}}<th colspan="3">天气</th>{{/if}}
  549 + {{if reason[9].checked == true}}<th colspan="3">支援</th>{{/if}}
550 550 {{if reason[10].checked == true}}<th colspan="3">其他</th>{{/if}}
551 551 </tr>
552 552 <tr>
... ...
src/main/resources/static/pages/forms/statement/scheduleDaily.html
... ... @@ -92,15 +92,15 @@
92 92 </tr>
93 93 <tr>
94 94 <td><span>路阻</span></td>
95   - <td><span>吊慢</span></td>
  95 + <td><span>借调</span></td>
96 96 <td><span>故障</span></td>
97 97 <td><span>纠纷</span></td>
98   - <td><span>肇事</span></td>
  98 + <td><span>事故</span></td>
99 99 <td><span>缺人</span></td>
100   - <td><span>缺车</span></td>
101   - <td><span>客稀</span></td>
102   - <td><span>气候</span></td>
103   - <td><span>援外</span></td>
  100 + <td><span>验车</span></td>
  101 + <td><span>保养</span></td>
  102 + <td><span>天气</span></td>
  103 + <td><span>支援</span></td>
104 104 <td><span>其他</span></td>
105 105 <td><span>全日</span></td>
106 106 <td><span>早高峰</span></td>
... ...
src/main/resources/static/pages/forms/statement/scheduleDailyQp.html
... ... @@ -74,15 +74,15 @@
74 74 </tr>
75 75 <tr>
76 76 <td>路阻</td>
77   - <td>吊慢</td>
  77 + <td>借调</td>
78 78 <td>故障</td>
79 79 <td>纠纷</td>
80   - <td>肇事</td>
  80 + <td>事故</td>
81 81 <td>缺人</td>
82   - <td>缺车</td>
83   - <td>客稀</td>
84   - <td>气候</td>
85   - <td>援外</td>
  82 + <td>验车</td>
  83 + <td>保养</td>
  84 + <td>天气</td>
  85 + <td>支援</td>
86 86 <td>其他</td>
87 87 <td><c>全日</c></td>
88 88 <td>早高峰</td>
... ...
src/main/resources/static/pages/forms/statement/statisticsDaily.html
... ... @@ -111,16 +111,16 @@
111 111 <td rowspan="2">原因</td>
112 112 </tr>
113 113 <tr>
114   - <td><span >路阻</span></td>
115   - <td><span>吊慢</span></td>
116   - <td><span >故障</span></td>
117   - <td><span >纠纷</span></td>
118   - <td><span >肇事</span></td>
  114 + <td><span>路阻</span></td>
  115 + <td><span>借调</span></td>
  116 + <td><span>故障</span></td>
  117 + <td><span>纠纷</span></td>
  118 + <td><span>事故</span></td>
119 119 <td><span>缺人</span></td>
120   - <td><span>缺车</span></td>
121   - <td><span >客稀</span></td>
122   - <td><span>气候</span></td>
123   - <td><span>援外</span></td>
  120 + <td><span>验车</span></td>
  121 + <td><span>保养</span></td>
  122 + <td><span>天气</span></td>
  123 + <td><span>支援</span></td>
124 124 <td><span>其他</span></td>
125 125 <td><span>营运</span></td>
126 126 <td><span>空驶</span></td>
... ...
src/main/resources/static/pages/permission/user/changePWD.html
1   -<div class="row">
2   -<div class="col-md-12">
3   -<!-- BEGIN VALIDATION STATES-->
4   -<div class="portlet light portlet-fit portlet-form bordered">
5   -<div class="portlet-body">
6   - <form class="form-horizontal" id="changePWDForm">
7   - <div class="form-group" style="margin-top: 60px">
8   - <label class="control-label col-md-5">原始密码:
9   - </label>
10   - <div class="col-md-4">
11   - <div class="input-icon right">
12   - <i class="fa"></i>
13   - <input type="password" class="form-control" name="oldPWD" /> </div>
14   - </div>
15   - </div>
16   - <div class="form-group">
17   - <label class="control-label col-md-5">输入新密码:
18   - </label>
19   - <div class="col-md-4">
20   - <div class="input-icon right">
21   - <i class="fa"></i>
22   - <input type="password" class="form-control" name="newPWD" /> </div>
23   - </div>
24   - </div>
25   - <div class="form-group">
26   - <label class="control-label col-md-5">确认新密码:
27   - </label>
28   - <div class="col-md-4">
29   - <div class="input-icon right">
30   - <i class="fa"></i>
31   - <input type="password" class="form-control" name="cnewPWD" /> </div>
32   - </div>
33   - </div>
34   - <div class="form-actions">
35   - <div class="row">
36   - <div class="col-md-offset-5 col-md-7">
37   - <button type="button" id="confirm" class="btn green">确定</button>
38   - <button type="reset" class="btn default">取消</button>
39   - </div>
40   - </div>
41   - </div>
42   - </form>
43   -</div>
44   -</div>
45   -</div>
46   -</div>
47   -
48   -<script>
49   -$(function(){
50   - $("#confirm").on("click",function(){
51   - var data = $('#changePWDForm').serializeJSON();
52   - $.post('/user/changePWD',data,function(msg){
53   - layer.alert(msg);
54   - });
55   - });
56   -});
  1 +<div class="row">
  2 +<div class="col-md-12">
  3 +<!-- BEGIN VALIDATION STATES-->
  4 +<div class="portlet light portlet-fit portlet-form bordered">
  5 +<div class="portlet-body">
  6 + <form class="form-horizontal" id="changePWDForm">
  7 + <div class="alert alert-danger display-hide">
  8 + <button class="close" data-close="alert"></button>您的输入有误,请检查下面的输入项
  9 + </div>
  10 + <div class="form-group" style="margin-top: 60px">
  11 + <label class="control-label col-md-5">原始密码:
  12 + </label>
  13 + <div class="col-md-4">
  14 + <div class="input-icon right">
  15 + <i class="fa"></i>
  16 + <input type="password" class="form-control" name="oldPWD" /> </div>
  17 + </div>
  18 + </div>
  19 + <div class="form-group">
  20 + <label class="control-label col-md-5">输入新密码:
  21 + </label>
  22 + <div class="col-md-4">
  23 + <div class="input-icon right">
  24 + <i class="fa"></i>
  25 + <input type="password" class="form-control" name="newPWD" id="newPWD"/> </div>
  26 + </div>
  27 + </div>
  28 + <div class="form-group">
  29 + <label class="control-label col-md-5">确认新密码:
  30 + </label>
  31 + <div class="col-md-4">
  32 + <div class="input-icon right">
  33 + <i class="fa"></i>
  34 + <input type="password" class="form-control" name="cnewPWD" /> </div>
  35 + </div>
  36 + </div>
  37 + <div class="form-actions">
  38 + <div class="row">
  39 + <div class="col-md-offset-5 col-md-7">
  40 + <button type="submit" id="confirm" class="btn green">确定</button>
  41 + <button type="reset" class="btn default">取消</button>
  42 + </div>
  43 + </div>
  44 + </div>
  45 + </form>
  46 +</div>
  47 +</div>
  48 +</div>
  49 +</div>
  50 +
  51 +<script>
  52 +$(function(){
  53 + var form = $('#changePWDForm');
  54 + //表单 validate
  55 + var error = $('.alert-danger', form);
  56 +
  57 + var validate = function (pwd) {
  58 + var flag = true;
  59 + for (var i = 1; i < pwd.length - 1; i++) {
  60 + var first = pwd.charCodeAt(i - 1);
  61 + var second = pwd.charCodeAt(i);
  62 + var third = pwd.charCodeAt(i + 1);
  63 + if (!(first >= 48 && third <= 57 || first >= 65 && third <= 90 || first >= 97 && third <= 122)) {
  64 + continue;
  65 + }
  66 + if (third - second == 1 && second - first == 1) {
  67 + flag = false;
  68 + }
  69 + }
  70 +
  71 + return flag;
  72 + }
  73 +
  74 + $.validator.addMethod("passwordrule", function(value, element) {
  75 + var reg = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*?[#?!@$%^&*-.]).{8,16}$/;
  76 + return this.optional(element) || reg.test(value) && validate(value);
  77 + }, "需包含大小写字母、数字、以及特殊符号的8-16位字符,并不能有123、abc这样的连续字符");
  78 +
  79 + //表单 validate
  80 + form.validate({
  81 + errorElement : 'span',
  82 + errorClass : 'help-block help-block-error',
  83 + focusInvalid : false,
  84 + rules : {
  85 + 'newPWD' : {
  86 + required : true,
  87 + minlength: 6,
  88 + maxlength: 16,
  89 + passwordrule:true
  90 + },
  91 + 'cnewPWD' : {
  92 + equalTo: '#newPWD'
  93 + }
  94 + },
  95 + invalidHandler : function(event, validator) {
  96 + error.show();
  97 + App.scrollTo(error, -200);
  98 + },
  99 +
  100 + highlight : function(element) {
  101 + $(element).closest('.form-group').addClass('has-error');
  102 + },
  103 +
  104 + unhighlight : function(element) {
  105 + $(element).closest('.form-group').removeClass('has-error');
  106 + },
  107 +
  108 + success : function(label) {
  109 + label.closest('.form-group').removeClass('has-error');
  110 + },
  111 +
  112 + submitHandler : function(f) {
  113 + var params = form.serializeJSON();
  114 + error.hide();
  115 + var keys;
  116 + $.ajax({
  117 + url: "/user/login/jCryptionKey?t="+Math.random(),
  118 + type: "Get",
  119 + async:false,
  120 + data: null,
  121 + success: function(data) {
  122 + keys = data.publickey;
  123 + }
  124 + });
  125 + //RSA加密
  126 + var encrypt = new JSEncrypt();
  127 + encrypt.setPublicKey(keys);
  128 + params.oldPWD = encrypt.encrypt(params.oldPWD);
  129 + params.newPWD = encrypt.encrypt(params.newPWD);
  130 + params.cnewPWD = encrypt.encrypt(params.cnewPWD);
  131 + $.ajax({
  132 + url: '/user/changePWD',
  133 + type: 'POST',
  134 + traditional: true,
  135 + data: params,
  136 + success: function(msg){
  137 + layer.alert(msg);
  138 + layer.closeAll('page');
  139 + }
  140 + });
  141 + }
  142 + });
  143 +});
57 144 </script>
58 145 \ No newline at end of file
... ...
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/fcxxwt.html
1   -<div class="uk-modal ct-form-modal ct_move_modal" id="schedule-fcxxwt-modal">
2   - <div class="uk-modal-dialog">
3   - <a href="" class="uk-modal-close uk-close"></a>
4   - <div class="uk-modal-header">
5   - <h2>发车信息微调</h2></div>
6   - <form class="uk-form uk-form-horizontal">
7   - </form>
8   - </div>
9   -
10   - <script id="schedule-fcxxwt-form-temp" type="text/html">
11   - <input type="hidden" name="id" value="{{sch.id}}"/>
12   -
13   - <div class="uk-grid">
14   - <div class="uk-width-1-2">
15   - <div class="uk-form-row">
16   - <label class="uk-form-label" >发车站点</label>
17   - <div class="uk-form-controls">
18   - <input type="text" value="{{sch.qdzName}}" disabled>
19   - </div>
20   - </div>
21   - </div>
22   - <div class="uk-width-1-2">
23   - <div class="uk-form-row">
24   - <label class="uk-form-label" >结束站点</label>
25   - <div class="uk-form-controls">
26   - <input type="text" value="{{sch.zdzName}}" disabled>
27   - </div>
28   - </div>
29   - </div>
30   - </div>
31   - <div class="uk-grid">
32   - <div class="uk-width-1-2">
33   - <div class="uk-form-row">
34   - <label class="uk-form-label" >车辆编码</label>
35   - <div class="uk-form-controls">
36   - <div class="uk-autocomplete uk-form car-autocom">
37   - <input type="text" value="{{sch.clZbh}}" name="clZbh" required>
38   - </div>
39   - </div>
40   - </div>
41   - </div>
42   - <div class="uk-width-1-2">
43   - <div class="uk-form-row">
44   - <label class="uk-form-label" >路 牌</label>
45   - <div class="uk-form-controls">
46   - <input type="text" value="{{sch.lpName}}" disabled>
47   - </div>
48   - </div>
49   - </div>
50   - </div>
51   -
52   - <div class="uk-grid">
53   - <div class="uk-width-1-2">
54   - <div class="uk-form-row">
55   - <label class="uk-form-label" >驾驶员</label>
56   - <div class="uk-form-controls">
57   - <div class="uk-autocomplete uk-form jsy-autocom">
58   - <input type="text" value="{{sch.jGh}}/{{sch.jName}}" name="jsy" required>
59   - </div>
60   - </div>
61   - </div>
62   - </div>
63   - <div class="uk-width-1-2">
64   - <div class="uk-form-row">
65   - <label class="uk-form-label" >售票员</label>
66   - <div class="uk-form-controls">
67   - <div class="uk-autocomplete uk-form spy-autocom">
68   - <input type="text" value="{{sch.sGh}}/{{sch.sName}}" name="spy">
69   - </div>
70   - </div>
71   - </div>
72   - </div>
73   - </div>
74   -
75   - <div class="uk-grid">
76   - <div class="uk-width-1-2">
77   - <div class="uk-form-row">
78   - <label class="uk-form-label" >计发时刻</label>
79   - <div class="uk-form-controls">
80   - <input type="text" value="{{sch.fcsj}}" disabled>
81   - </div>
82   - </div>
83   - </div>
84   - <div class="uk-width-1-2">
85   - <div class="uk-form-row">
86   - <label class="uk-form-label" >实际时刻</label>
87   - <div class="uk-form-controls">
88   - <input type="time" value="{{sch.fcsjActual}}" name="fcsjActual" {{if sch.status==0}}autofocus{{/if}}>
89   - </div>
90   - </div>
91   - </div>
92   - </div>
93   -
94   - <div class="uk-grid">
95   - <div class="uk-width-1-2">
96   - <div class="uk-form-row">
97   - <label class="uk-form-label" >到达时刻</label>
98   - <div class="uk-form-controls">
99   - <input type="time" value="{{sch.zdsjActual}}" name="zdsjActual" {{if sch.status==1}}autofocus{{/if}}>
100   - </div>
101   - </div>
102   - </div>
103   - <div class="uk-width-1-2">
104   - <div class="uk-form-row">
105   - <label class="uk-form-label" >班次类型</label>
106   - <div class="uk-form-controls">
107   - <select class="form-control nt-dictionary" data-code="{{sch.bcType}}" name="bcType" data-group=ScheduleType></select>
108   - </div>
109   - </div>
110   - </div>
111   - </div>
112   -
113   - <div class="uk-grid">
114   - <div class="uk-width-1-1">
115   - <div class="uk-form-row">
116   - <label class="uk-form-label" >调整说明</label>
117   - <div class="uk-form-controls">
118   - <select name="adjustExps">
119   - <option value="">请选择..</option>
120   - {{each adjustExps as exp i}}
121   - <option value="{{exp}}">{{exp}}</option>
122   - {{/each}}
123   - </select>
124   - </div>
125   - </div>
126   - </div>
127   - </div>
128   - <div class="uk-grid">
129   - <div class="uk-width-1-1">
130   - <div class="uk-form-row ct-stacked">
131   - <div class="uk-form-controls" style="margin-top: 5px;">
132   - <textarea id="form-s-t" cols="30" rows="5" name="remarks" data-fv-stringlength="true" data-fv-stringlength-max="50" placeholder="备注,不超过50个字符">{{sch.remarks}}</textarea>
133   - </div>
134   - </div>
135   - </div>
136   - </div>
137   -
138   - <hr class="modal-dotted-hr">
139   - <div class="uk-grid">
140   - <div class="uk-width-1-2">
141   - <div class="uk-form-row">
142   - <label class="uk-form-label" >里程</label>
143   - <div class="uk-form-controls">
144   - <input type="text" value="{{if sch.status==-1}}0{{else}}{{sch.jhlc}}{{/if}}" name="jhlc" required>
145   - </div>
146   - </div>
147   - </div>
148   - <div class="uk-width-1-2">
149   - <div class="uk-form-row">
150   - <div class="uk-form-controls" style="margin-left: 0;margin-top: 9px;">
151   - <label>
152   - <input class="i-cbox destroy-box" type="checkbox" name="status" value="-1" {{if sch.status==-1}}checked disabled{{/if}}>
153   - 是否烂班
154   - </label>
155   - </div>
156   - </div>
157   - </div>
158   - </div>
159   -
160   - <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;">
161   - <button type="button" class="uk-button uk-modal-close">取消</button>
162   - <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存</button>
163   - </div>
164   - </script>
165   -
166   - <script>
167   - (function() {
168   - var adjustExps = ['配车', '保养', '故障', '肇事', '路阻', '纠纷', '缺人', '客稀', '缺车', '气候', '援外', '吊慢', '抽减', '其他'];
169   - var modal = '#schedule-fcxxwt-modal'
170   - ,sch;
171   - $(modal).on('init', function(e, data) {
172   - e.stopPropagation();
173   - sch=data.sch;
174   - var formHtml = template('schedule-fcxxwt-form-temp', {sch: sch, adjustExps:adjustExps});
175   - $('form', modal).html(formHtml);
176   - //字典转换
177   - dictionaryUtils.transformDom($('.nt-dictionary', modal));
178   -
179   - //车辆自动补全
180   - $.get('/basic/cars', function (rs) {
181   - gb_common.carAutocomplete($('.car-autocom', modal), rs);
182   - });
183   - //驾驶员自动补全
184   - gb_common.personAutocomplete($('.jsy-autocom', modal));
185   - //售票员
186   - gb_common.personAutocomplete($('.spy-autocom', modal));
187   -
188   - //submit
189   - var f = $('form', modal).formValidation(gb_form_validation_opts);
190   - f.on('success.form.fv', function(e) {
191   - e.preventDefault();
192   - var data = $(this).serializeJSON();
193   -
194   - //校验实发实达时间
195   - if(!validation_s_e_Time(data)){
196   - notify_err("实发时间不能晚于实达时间!");
197   - return;
198   - }
199   -
200   - //正常班次里程修改为0
201   - var normalDestory = data.jhlc==0 && sch.bcType != 'in' && sch.bcType != 'out';
202   - //修改里程
203   - var editJhlc = data.jhlc != sch.jhlc && data.jhlc != 0;
204   - if(!data.adjustExps && (data.status==-1 || normalDestory || editJhlc)){
205   - notify_err("当前操作需要选择调整原因!");
206   - return;
207   - }
208   - postData(data);
209   - });
210   -
211   - var postData = function (data) {
212   - gb_common.$post('/realSchedule/schInfoFineTune', data, function(rs){
213   - gb_schedule_table.updateSchedule(rs.ts);
214   - UIkit.modal(modal).hide();
215   - notify_succ('操作成功!');
216   - //计算应发未发
217   - gb_schedule_table.calc_yfwf_num(sch.xlBm);
218   - //更新路牌公里统计面板
219   - gb_schedule_table.showLpMileageTipBySch(sch);
220   - });
221   - };
222   -
223   - //班次类型
224   - $('select[name=bcType] option', f).each(function(){
225   - var whiteList=['venting', 'major', 'normal', sch.bcType];
226   - if(whiteList.indexOf($(this).val()) == -1)
227   - $(this).remove();
228   - });
229   - if(sch.bcType == 'out' || sch.bcType == 'in'){
230   - $('[name=bcType]', f).attr('disabled', 'disabled');
231   - }
232   -
233   - //是否烂班
234   - $('.destroy-box', f).on('click', function () {
235   - if($(this)[0].checked)
236   - $('input[name=jhlc]', f).val(0);
237   - else
238   - $('input[name=jhlc]', f).val(sch.jhlc);
239   - });
240   -
241   - $('[name=adjustExps]', f).on('change', function(){
242   - var rem=$('[name=remarks]', f);
243   - rem.val(rem.val() + $(this).val() + ',').trigger('input');
244   - });
245   -
246   -
247   - $('select[name=bcType]', modal).on('change', function(){
248   - var type = $(this).val();
249   - if(sch.bcType == 'in' || sch.bcType == 'out')
250   - return;
251   -
252   - var url, detailModal;
253   - if(type=='venting'){
254   - url='/real_control_v2/fragments/line_schedule/context_menu/bc_type_venting.html';
255   - detailModal='#bctype-venting-modal';
256   - }
257   - else if(type=='major'){
258   - detailModal='#bctype-major-modal';
259   - url='/real_control_v2/fragments/line_schedule/context_menu/bc_type_major.html';
260   - }
261   - else return;
262   -
263   - //重置类型,等待调整界面触发刷新事件
264   - $(this).val(sch.bcType);
265   -
266   - $.get(url, function(htmlStr){
267   - $(document.body).append(htmlStr);
268   -
269   - UIkit.modal(detailModal, {bgclose: true,modal:false}).show();
270   - $(detailModal).trigger('init', {sch: sch, parentModal: modal});
271   - })
272   - });
273   -
274   - /**
275   - * 相同选项 也触发 onchange
276   - */
277   - $('select[name=bcType]', modal).mousedown(function () {
278   - this.sindex = $(this)[0].selectedIndex;
279   - $(this)[0].selectedIndex = -1;
280   - }).mouseout(function () {
281   - if ($(this)[0].selectedIndex === -1) {
282   - $(this)[0].selectedIndex = this.sindex;
283   - }
284   - });
285   - });
286   -
287   - function validation_s_e_Time(data) {
288   - var config = gb_data_line_config.get(sch.xlBm);
289   - var st = get_time(sch.scheduleDateStr, data.fcsjActual, config);
290   - var et = get_time(sch.scheduleDateStr, data.zdsjActual, config);
291   - if(st && et && st > et)
292   - return false;
293   - return true;
294   - }
295   -
296   - var DAY_TIME = 1000 * 60 * 60 * 24;
297   - function get_time(rq, timeStr, config) {
298   - var t = null;
299   - if(timeStr){
300   - t = moment(rq + timeStr, 'YYYY-MM-DDHH:mm');
301   - if(timeStr.localeCompare(config.startOpt) < 0)
302   - return t + DAY_TIME;
303   - }
304   -
305   - return t;
306   - }
307   - })();
308   - </script>
309   -</div>
  1 +<div class="uk-modal ct-form-modal ct_move_modal" id="schedule-fcxxwt-modal">
  2 + <div class="uk-modal-dialog">
  3 + <a href="" class="uk-modal-close uk-close"></a>
  4 + <div class="uk-modal-header">
  5 + <h2>发车信息微调</h2></div>
  6 + <form class="uk-form uk-form-horizontal">
  7 + </form>
  8 + </div>
  9 +
  10 + <script id="schedule-fcxxwt-form-temp" type="text/html">
  11 + <input type="hidden" name="id" value="{{sch.id}}"/>
  12 +
  13 + <div class="uk-grid">
  14 + <div class="uk-width-1-2">
  15 + <div class="uk-form-row">
  16 + <label class="uk-form-label" >发车站点</label>
  17 + <div class="uk-form-controls">
  18 + <input type="text" value="{{sch.qdzName}}" disabled>
  19 + </div>
  20 + </div>
  21 + </div>
  22 + <div class="uk-width-1-2">
  23 + <div class="uk-form-row">
  24 + <label class="uk-form-label" >结束站点</label>
  25 + <div class="uk-form-controls">
  26 + <input type="text" value="{{sch.zdzName}}" disabled>
  27 + </div>
  28 + </div>
  29 + </div>
  30 + </div>
  31 + <div class="uk-grid">
  32 + <div class="uk-width-1-2">
  33 + <div class="uk-form-row">
  34 + <label class="uk-form-label" >车辆编码</label>
  35 + <div class="uk-form-controls">
  36 + <div class="uk-autocomplete uk-form car-autocom">
  37 + <input type="text" value="{{sch.clZbh}}" name="clZbh" required>
  38 + </div>
  39 + </div>
  40 + </div>
  41 + </div>
  42 + <div class="uk-width-1-2">
  43 + <div class="uk-form-row">
  44 + <label class="uk-form-label" >路 牌</label>
  45 + <div class="uk-form-controls">
  46 + <input type="text" value="{{sch.lpName}}" disabled>
  47 + </div>
  48 + </div>
  49 + </div>
  50 + </div>
  51 +
  52 + <div class="uk-grid">
  53 + <div class="uk-width-1-2">
  54 + <div class="uk-form-row">
  55 + <label class="uk-form-label" >驾驶员</label>
  56 + <div class="uk-form-controls">
  57 + <div class="uk-autocomplete uk-form jsy-autocom">
  58 + <input type="text" value="{{sch.jGh}}/{{sch.jName}}" name="jsy" required>
  59 + </div>
  60 + </div>
  61 + </div>
  62 + </div>
  63 + <div class="uk-width-1-2">
  64 + <div class="uk-form-row">
  65 + <label class="uk-form-label" >售票员</label>
  66 + <div class="uk-form-controls">
  67 + <div class="uk-autocomplete uk-form spy-autocom">
  68 + <input type="text" value="{{sch.sGh}}/{{sch.sName}}" name="spy">
  69 + </div>
  70 + </div>
  71 + </div>
  72 + </div>
  73 + </div>
  74 +
  75 + <div class="uk-grid">
  76 + <div class="uk-width-1-2">
  77 + <div class="uk-form-row">
  78 + <label class="uk-form-label" >计发时刻</label>
  79 + <div class="uk-form-controls">
  80 + <input type="text" value="{{sch.fcsj}}" disabled>
  81 + </div>
  82 + </div>
  83 + </div>
  84 + <div class="uk-width-1-2">
  85 + <div class="uk-form-row">
  86 + <label class="uk-form-label" >实际时刻</label>
  87 + <div class="uk-form-controls">
  88 + <input type="time" value="{{sch.fcsjActual}}" name="fcsjActual" {{if sch.status==0}}autofocus{{/if}}>
  89 + </div>
  90 + </div>
  91 + </div>
  92 + </div>
  93 +
  94 + <div class="uk-grid">
  95 + <div class="uk-width-1-2">
  96 + <div class="uk-form-row">
  97 + <label class="uk-form-label" >到达时刻</label>
  98 + <div class="uk-form-controls">
  99 + <input type="time" value="{{sch.zdsjActual}}" name="zdsjActual" {{if sch.status==1}}autofocus{{/if}}>
  100 + </div>
  101 + </div>
  102 + </div>
  103 + <div class="uk-width-1-2">
  104 + <div class="uk-form-row">
  105 + <label class="uk-form-label" >班次类型</label>
  106 + <div class="uk-form-controls">
  107 + <select class="form-control nt-dictionary" data-code="{{sch.bcType}}" name="bcType" data-group=ScheduleType></select>
  108 + </div>
  109 + </div>
  110 + </div>
  111 + </div>
  112 +
  113 + <div class="uk-grid">
  114 + <div class="uk-width-1-1">
  115 + <div class="uk-form-row">
  116 + <label class="uk-form-label" >调整说明</label>
  117 + <div class="uk-form-controls">
  118 + <select name="adjustExps">
  119 + <option value="">请选择..</option>
  120 + {{each adjustExps as exp i}}
  121 + <option value="{{exp}}">{{exp}}</option>
  122 + {{/each}}
  123 + </select>
  124 + </div>
  125 + </div>
  126 + </div>
  127 + </div>
  128 + <div class="uk-grid">
  129 + <div class="uk-width-1-1">
  130 + <div class="uk-form-row ct-stacked">
  131 + <div class="uk-form-controls" style="margin-top: 5px;">
  132 + <textarea id="form-s-t" cols="30" rows="5" name="remarks" data-fv-stringlength="true" data-fv-stringlength-max="50" placeholder="备注,不超过50个字符">{{sch.remarks}}</textarea>
  133 + </div>
  134 + </div>
  135 + </div>
  136 + </div>
  137 +
  138 + <hr class="modal-dotted-hr">
  139 + <div class="uk-grid">
  140 + <div class="uk-width-1-2">
  141 + <div class="uk-form-row">
  142 + <label class="uk-form-label" >里程</label>
  143 + <div class="uk-form-controls">
  144 + <input type="text" value="{{if sch.status==-1}}0{{else}}{{sch.jhlc}}{{/if}}" name="jhlc" required>
  145 + </div>
  146 + </div>
  147 + </div>
  148 + <div class="uk-width-1-2">
  149 + <div class="uk-form-row">
  150 + <div class="uk-form-controls" style="margin-left: 0;margin-top: 9px;">
  151 + <label>
  152 + <input class="i-cbox destroy-box" type="checkbox" name="status" value="-1" {{if sch.status==-1}}checked disabled{{/if}}>
  153 + 是否烂班
  154 + </label>
  155 + </div>
  156 + </div>
  157 + </div>
  158 + </div>
  159 +
  160 + <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;">
  161 + <button type="button" class="uk-button uk-modal-close">取消</button>
  162 + <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存</button>
  163 + </div>
  164 + </script>
  165 +
  166 + <script>
  167 + (function() {
  168 + var adjustExps = ['保养', '故障', '事故', '路阻', '纠纷', '缺人', '验车', '天气', '支援', '借调', '其他'];
  169 + var modal = '#schedule-fcxxwt-modal'
  170 + ,sch;
  171 + $(modal).on('init', function(e, data) {
  172 + e.stopPropagation();
  173 + sch=data.sch;
  174 + var formHtml = template('schedule-fcxxwt-form-temp', {sch: sch, adjustExps:adjustExps});
  175 + $('form', modal).html(formHtml);
  176 + //字典转换
  177 + dictionaryUtils.transformDom($('.nt-dictionary', modal));
  178 +
  179 + //车辆自动补全
  180 + $.get('/basic/cars', function (rs) {
  181 + gb_common.carAutocomplete($('.car-autocom', modal), rs);
  182 + });
  183 + //驾驶员自动补全
  184 + gb_common.personAutocomplete($('.jsy-autocom', modal));
  185 + //售票员
  186 + gb_common.personAutocomplete($('.spy-autocom', modal));
  187 +
  188 + //submit
  189 + var f = $('form', modal).formValidation(gb_form_validation_opts);
  190 + f.on('success.form.fv', function(e) {
  191 + e.preventDefault();
  192 + var data = $(this).serializeJSON();
  193 +
  194 + //校验实发实达时间
  195 + if(!validation_s_e_Time(data)){
  196 + notify_err("实发时间不能晚于实达时间!");
  197 + return;
  198 + }
  199 +
  200 + //正常班次里程修改为0
  201 + var normalDestory = data.jhlc==0 && sch.bcType != 'in' && sch.bcType != 'out';
  202 + //修改里程
  203 + var editJhlc = data.jhlc != sch.jhlc && data.jhlc != 0;
  204 + if(!data.adjustExps && (data.status==-1 || normalDestory || editJhlc)){
  205 + notify_err("当前操作需要选择调整原因!");
  206 + return;
  207 + }
  208 + postData(data);
  209 + });
  210 +
  211 + var postData = function (data) {
  212 + gb_common.$post('/realSchedule/schInfoFineTune', data, function(rs){
  213 + gb_schedule_table.updateSchedule(rs.ts);
  214 + UIkit.modal(modal).hide();
  215 + notify_succ('操作成功!');
  216 + //计算应发未发
  217 + gb_schedule_table.calc_yfwf_num(sch.xlBm);
  218 + //更新路牌公里统计面板
  219 + gb_schedule_table.showLpMileageTipBySch(sch);
  220 + });
  221 + };
  222 +
  223 + //班次类型
  224 + $('select[name=bcType] option', f).each(function(){
  225 + var whiteList=['venting', 'major', 'normal', sch.bcType];
  226 + if(whiteList.indexOf($(this).val()) == -1)
  227 + $(this).remove();
  228 + });
  229 + if(sch.bcType == 'out' || sch.bcType == 'in'){
  230 + $('[name=bcType]', f).attr('disabled', 'disabled');
  231 + }
  232 +
  233 + //是否烂班
  234 + $('.destroy-box', f).on('click', function () {
  235 + if($(this)[0].checked)
  236 + $('input[name=jhlc]', f).val(0);
  237 + else
  238 + $('input[name=jhlc]', f).val(sch.jhlc);
  239 + });
  240 +
  241 + $('[name=adjustExps]', f).on('change', function(){
  242 + var rem=$('[name=remarks]', f);
  243 + rem.val(rem.val() + $(this).val() + ',').trigger('input');
  244 + });
  245 +
  246 +
  247 + $('select[name=bcType]', modal).on('change', function(){
  248 + var type = $(this).val();
  249 + if(sch.bcType == 'in' || sch.bcType == 'out')
  250 + return;
  251 +
  252 + var url, detailModal;
  253 + if(type=='venting'){
  254 + url='/real_control_v2/fragments/line_schedule/context_menu/bc_type_venting.html';
  255 + detailModal='#bctype-venting-modal';
  256 + }
  257 + else if(type=='major'){
  258 + detailModal='#bctype-major-modal';
  259 + url='/real_control_v2/fragments/line_schedule/context_menu/bc_type_major.html';
  260 + }
  261 + else return;
  262 +
  263 + //重置类型,等待调整界面触发刷新事件
  264 + $(this).val(sch.bcType);
  265 +
  266 + $.get(url, function(htmlStr){
  267 + $(document.body).append(htmlStr);
  268 +
  269 + UIkit.modal(detailModal, {bgclose: true,modal:false}).show();
  270 + $(detailModal).trigger('init', {sch: sch, parentModal: modal});
  271 + })
  272 + });
  273 +
  274 + /**
  275 + * 相同选项 也触发 onchange
  276 + */
  277 + $('select[name=bcType]', modal).mousedown(function () {
  278 + this.sindex = $(this)[0].selectedIndex;
  279 + $(this)[0].selectedIndex = -1;
  280 + }).mouseout(function () {
  281 + if ($(this)[0].selectedIndex === -1) {
  282 + $(this)[0].selectedIndex = this.sindex;
  283 + }
  284 + });
  285 + });
  286 +
  287 + function validation_s_e_Time(data) {
  288 + var config = gb_data_line_config.get(sch.xlBm);
  289 + var st = get_time(sch.scheduleDateStr, data.fcsjActual, config);
  290 + var et = get_time(sch.scheduleDateStr, data.zdsjActual, config);
  291 + if(st && et && st > et)
  292 + return false;
  293 + return true;
  294 + }
  295 +
  296 + var DAY_TIME = 1000 * 60 * 60 * 24;
  297 + function get_time(rq, timeStr, config) {
  298 + var t = null;
  299 + if(timeStr){
  300 + t = moment(rq + timeStr, 'YYYY-MM-DDHH:mm');
  301 + if(timeStr.localeCompare(config.startOpt) < 0)
  302 + return t + DAY_TIME;
  303 + }
  304 +
  305 + return t;
  306 + }
  307 + })();
  308 + </script>
  309 +</div>
... ...
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/jhlb.html
1   -<div class="uk-modal ct-form-modal ct_move_modal" id="schedule-jhlb-modal">
2   - <div class="uk-modal-dialog" style="width: 370px;">
3   - <a href="" class="uk-modal-close uk-close"></a>
4   - <div class="uk-modal-header">
5   - <h2>计划烂班</h2></div>
6   - <form class="uk-form uk-form-horizontal">
7   - </form>
8   - </div>
9   -
10   - <script id="schedule-jhlb-form-temp" type="text/html">
11   - <div class="uk-grid">
12   - <div class="uk-width-1-1">
13   - <div class="uk-form-row">
14   - <label class="uk-form-label" >内部编码</label>
15   - <div class="uk-form-controls">
16   - <input value="{{sch.clZbh}}" disabled/>
17   - </div>
18   - </div>
19   - </div>
20   - </div>
21   -
22   - <div class="uk-grid">
23   - <div class="uk-width-1-1">
24   - <div class="uk-form-row">
25   - <label class="uk-form-label" >路牌</label>
26   - <div class="uk-form-controls">
27   - <select name="lpName">
28   - {{if lps.length > 1}}
29   - <option value="-100">全部</option>
30   - {{/if}}
31   - {{each lps as lpName i}}
32   - <option value="{{lpName}}">{{lpName}}</option>
33   - {{/each}}
34   - </select>
35   - </div>
36   - </div>
37   - </div>
38   - </div>
39   -
40   - <div class="uk-grid">
41   - <div class="uk-width-1-1">
42   - <div class="uk-form-row">
43   - <label class="uk-form-label" >班次
44   - <hr>
45   - <label>全选
46   - <input class="i-cbox" name="allCheck" type="checkbox" >
47   - </label>
48   - </label>
49   - <div class="uk-form-controls sch-time-checkbox-list">
50   - {{each list as sch i}}
51   - <label data-lp="{{sch.lpName}}" {{if sch.destroy}}class="destroy-sch"{{/if}}>
52   - <input class="i-cbox" name="ids[]" value="{{sch.id}}" type="checkbox" {{if sch.destroy}}disabled{{/if}}>
53   - {{sch.dfsj}}
54   -
55   - {{if sch.bcType == "out"}}
56   - <span class="uk-badge uk-badge-success">出场</span>
57   - {{else if sch.bcType == "in"}}
58   - <span class="uk-badge uk-badge-warning">进场</span>
59   - {{else if sch.bcType == "venting"}}
60   - <span class="uk-badge uk-badge-danger">直放</span>
61   - {{else if sch.bcType == "major"}}
62   - <span class="uk-badge uk-badge-danger">放站</span>
63   - {{/if}}
64   - {{if sch.sflj}}
65   - <span class="uk-badge uk-badge-danger">临加</span>
66   - {{/if}}
67   - {{if sch.destroy}}
68   - <small>已烂班</small>
69   - {{/if}}
70   - </label>
71   - {{/each}}
72   - </div>
73   - </div>
74   - </div>
75   - </div>
76   - <div class="uk-grid">
77   - <div class="uk-width-1-1">
78   - <div class="uk-form-row">
79   - <label class="uk-form-label" >调整说明</label>
80   - <div class="uk-form-controls">
81   - <select name="adjustExps" required>
82   - <option value="">请选择..</option>
83   - {{each adjustExps as exp i}}
84   - <option value="{{exp}}">{{exp}}</option>
85   - {{/each}}
86   - </select>
87   - </div>
88   - </div>
89   - </div>
90   - </div>
91   - <div class="uk-grid">
92   - <div class="uk-width-1-1">
93   - <div class="uk-form-row ct-stacked">
94   - <div class="uk-form-controls" style="margin-top: 5px;">
95   - <textarea id="form-s-t" cols="30" rows="5" name="remarks" data-fv-stringlength="true" data-fv-stringlength-max="20" placeholder="烂班说明,不超过20个字符"></textarea>
96   - </div>
97   - </div>
98   - </div>
99   - </div>
100   -
101   - <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;">
102   - <button type="button" class="uk-button uk-modal-close">取消</button>
103   - <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存</button>
104   - </div>
105   - </script>
106   -
107   - <script>
108   - (function() {
109   - var adjustExps = ['配车', '保养', '故障', '肇事', '路阻', '纠纷', '缺人', '客稀', '缺车', '气候', '援外', '吊慢', '抽减', '其他'];
110   - var modal = '#schedule-jhlb-modal',
111   - sch;
112   - $(modal).on('init', function(e, data) {
113   - e.stopPropagation();
114   - sch = data.sch;
115   - //获取车辆所有班次
116   - var schArr = gb_common.get_vals(gb_schedule_table.findScheduleByLine(sch.xlBm)).filter(function(item) {
117   - return item.clZbh == sch.clZbh;
118   - }).sort(gb_schedule_table.schedule_sort);
119   -
120   - //获取路牌
121   - var lps = {};
122   - $.each(schArr, function () {
123   - lps[this.lpName]=1;
124   - });
125   -
126   - var formHtml = template('schedule-jhlb-form-temp', {
127   - sch: sch,
128   - list: schArr,
129   - adjustExps:adjustExps,
130   - lps: gb_common.get_keys(lps)
131   - });
132   - $('form', modal).html(formHtml);
133   -
134   - if(!sch.destroy){
135   - //选中班次
136   - var ckbox=$('input[type=checkbox][value='+sch.id+']', f).attr('checked', 'checked');
137   - //滚动到可视区域
138   - var cont=$('.sch-time-checkbox-list', f);
139   - cont.animate({
140   - scrollTop: ckbox.offset().top - cont.offset().top + cont.scrollTop() - 10
141   - }, 500);
142   - }
143   -
144   - //submit
145   - var f = $('form', modal).formValidation(gb_form_validation_opts);
146   - f.on('success.form.fv', function(e) {
147   - e.preventDefault();
148   - var data = $(this).serializeJSON();
149   - if(!data.ids || data.ids.length==0){
150   - UIkit.modal(modal).hide();
151   - return;
152   - }
153   - var idsStr='';
154   - $.each(data.ids, function(){idsStr+=(','+this)});
155   - data.idsStr=idsStr.substr(1);
156   - //提交
157   - gb_common.$post('/realSchedule/destroy', data, function(rs){
158   - gb_schedule_table.updateSchedule(rs.ts);
159   - UIkit.modal(modal).hide();
160   - notify_succ('烂班操作成功!');
161   - //calc 应发未发
162   - gb_schedule_table.calc_yfwf_num(sch.xlBm);
163   - });
164   - });
165   -
166   - $('[name=adjustExps]', f).on('change', function(){
167   - var rem=$('[name=remarks]', f);
168   - rem.val(rem.val() + $(this).val() + ',').trigger('input');
169   - });
170   -
171   - //路牌切换事件
172   - $('[name=lpName]', f).on('change', function () {
173   - var v = $(this).val();
174   - var lbs = $('.sch-time-checkbox-list label', modal);
175   - if(v=='-100'){
176   - //显示全部
177   - lbs.show();
178   - }
179   - else {
180   - lbs.hide().each(function () {
181   - if($(this).data('lp')==v)
182   - $(this).show();
183   - else{
184   - //将隐藏的checkbox取消选中
185   - $(this).find('input[type=checkbox]')[0].checked=false;
186   - }
187   - });
188   - }
189   - });
190   -
191   - //全选
192   - $('[name=allCheck]', f).on('click', function () {
193   - var cbs = $('.sch-time-checkbox-list label input[type=checkbox]:visible:enabled', modal);
194   - var status = this.checked;
195   - cbs.each(function () {
196   - this.checked = status;
197   - });
198   - });
199   - });
200   - })();
201   - </script>
202   -</div>
  1 +<div class="uk-modal ct-form-modal ct_move_modal" id="schedule-jhlb-modal">
  2 + <div class="uk-modal-dialog" style="width: 370px;">
  3 + <a href="" class="uk-modal-close uk-close"></a>
  4 + <div class="uk-modal-header">
  5 + <h2>计划烂班</h2></div>
  6 + <form class="uk-form uk-form-horizontal">
  7 + </form>
  8 + </div>
  9 +
  10 + <script id="schedule-jhlb-form-temp" type="text/html">
  11 + <div class="uk-grid">
  12 + <div class="uk-width-1-1">
  13 + <div class="uk-form-row">
  14 + <label class="uk-form-label" >内部编码</label>
  15 + <div class="uk-form-controls">
  16 + <input value="{{sch.clZbh}}" disabled/>
  17 + </div>
  18 + </div>
  19 + </div>
  20 + </div>
  21 +
  22 + <div class="uk-grid">
  23 + <div class="uk-width-1-1">
  24 + <div class="uk-form-row">
  25 + <label class="uk-form-label" >路牌</label>
  26 + <div class="uk-form-controls">
  27 + <select name="lpName">
  28 + {{if lps.length > 1}}
  29 + <option value="-100">全部</option>
  30 + {{/if}}
  31 + {{each lps as lpName i}}
  32 + <option value="{{lpName}}">{{lpName}}</option>
  33 + {{/each}}
  34 + </select>
  35 + </div>
  36 + </div>
  37 + </div>
  38 + </div>
  39 +
  40 + <div class="uk-grid">
  41 + <div class="uk-width-1-1">
  42 + <div class="uk-form-row">
  43 + <label class="uk-form-label" >班次
  44 + <hr>
  45 + <label>全选
  46 + <input class="i-cbox" name="allCheck" type="checkbox" >
  47 + </label>
  48 + </label>
  49 + <div class="uk-form-controls sch-time-checkbox-list">
  50 + {{each list as sch i}}
  51 + <label data-lp="{{sch.lpName}}" {{if sch.destroy}}class="destroy-sch"{{/if}}>
  52 + <input class="i-cbox" name="ids[]" value="{{sch.id}}" type="checkbox" {{if sch.destroy}}disabled{{/if}}>
  53 + {{sch.dfsj}}
  54 +
  55 + {{if sch.bcType == "out"}}
  56 + <span class="uk-badge uk-badge-success">出场</span>
  57 + {{else if sch.bcType == "in"}}
  58 + <span class="uk-badge uk-badge-warning">进场</span>
  59 + {{else if sch.bcType == "venting"}}
  60 + <span class="uk-badge uk-badge-danger">直放</span>
  61 + {{else if sch.bcType == "major"}}
  62 + <span class="uk-badge uk-badge-danger">放站</span>
  63 + {{/if}}
  64 + {{if sch.sflj}}
  65 + <span class="uk-badge uk-badge-danger">临加</span>
  66 + {{/if}}
  67 + {{if sch.destroy}}
  68 + <small>已烂班</small>
  69 + {{/if}}
  70 + </label>
  71 + {{/each}}
  72 + </div>
  73 + </div>
  74 + </div>
  75 + </div>
  76 + <div class="uk-grid">
  77 + <div class="uk-width-1-1">
  78 + <div class="uk-form-row">
  79 + <label class="uk-form-label" >调整说明</label>
  80 + <div class="uk-form-controls">
  81 + <select name="adjustExps" required>
  82 + <option value="">请选择..</option>
  83 + {{each adjustExps as exp i}}
  84 + <option value="{{exp}}">{{exp}}</option>
  85 + {{/each}}
  86 + </select>
  87 + </div>
  88 + </div>
  89 + </div>
  90 + </div>
  91 + <div class="uk-grid">
  92 + <div class="uk-width-1-1">
  93 + <div class="uk-form-row ct-stacked">
  94 + <div class="uk-form-controls" style="margin-top: 5px;">
  95 + <textarea id="form-s-t" cols="30" rows="5" name="remarks" data-fv-stringlength="true" data-fv-stringlength-max="20" placeholder="烂班说明,不超过20个字符"></textarea>
  96 + </div>
  97 + </div>
  98 + </div>
  99 + </div>
  100 +
  101 + <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;">
  102 + <button type="button" class="uk-button uk-modal-close">取消</button>
  103 + <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存</button>
  104 + </div>
  105 + </script>
  106 +
  107 + <script>
  108 + (function() {
  109 + var adjustExps = ['保养', '故障', '事故', '路阻', '纠纷', '缺人', '验车', '天气', '支援', '借调', '其他'];
  110 + var modal = '#schedule-jhlb-modal',
  111 + sch;
  112 + $(modal).on('init', function(e, data) {
  113 + e.stopPropagation();
  114 + sch = data.sch;
  115 + //获取车辆所有班次
  116 + var schArr = gb_common.get_vals(gb_schedule_table.findScheduleByLine(sch.xlBm)).filter(function(item) {
  117 + return item.clZbh == sch.clZbh;
  118 + }).sort(gb_schedule_table.schedule_sort);
  119 +
  120 + //获取路牌
  121 + var lps = {};
  122 + $.each(schArr, function () {
  123 + lps[this.lpName]=1;
  124 + });
  125 +
  126 + var formHtml = template('schedule-jhlb-form-temp', {
  127 + sch: sch,
  128 + list: schArr,
  129 + adjustExps:adjustExps,
  130 + lps: gb_common.get_keys(lps)
  131 + });
  132 + $('form', modal).html(formHtml);
  133 +
  134 + if(!sch.destroy){
  135 + //选中班次
  136 + var ckbox=$('input[type=checkbox][value='+sch.id+']', f).attr('checked', 'checked');
  137 + //滚动到可视区域
  138 + var cont=$('.sch-time-checkbox-list', f);
  139 + cont.animate({
  140 + scrollTop: ckbox.offset().top - cont.offset().top + cont.scrollTop() - 10
  141 + }, 500);
  142 + }
  143 +
  144 + //submit
  145 + var f = $('form', modal).formValidation(gb_form_validation_opts);
  146 + f.on('success.form.fv', function(e) {
  147 + e.preventDefault();
  148 + var data = $(this).serializeJSON();
  149 + if(!data.ids || data.ids.length==0){
  150 + UIkit.modal(modal).hide();
  151 + return;
  152 + }
  153 + var idsStr='';
  154 + $.each(data.ids, function(){idsStr+=(','+this)});
  155 + data.idsStr=idsStr.substr(1);
  156 + //提交
  157 + gb_common.$post('/realSchedule/destroy', data, function(rs){
  158 + gb_schedule_table.updateSchedule(rs.ts);
  159 + UIkit.modal(modal).hide();
  160 + notify_succ('烂班操作成功!');
  161 + //calc 应发未发
  162 + gb_schedule_table.calc_yfwf_num(sch.xlBm);
  163 + });
  164 + });
  165 +
  166 + $('[name=adjustExps]', f).on('change', function(){
  167 + var rem=$('[name=remarks]', f);
  168 + rem.val(rem.val() + $(this).val() + ',').trigger('input');
  169 + });
  170 +
  171 + //路牌切换事件
  172 + $('[name=lpName]', f).on('change', function () {
  173 + var v = $(this).val();
  174 + var lbs = $('.sch-time-checkbox-list label', modal);
  175 + if(v=='-100'){
  176 + //显示全部
  177 + lbs.show();
  178 + }
  179 + else {
  180 + lbs.hide().each(function () {
  181 + if($(this).data('lp')==v)
  182 + $(this).show();
  183 + else{
  184 + //将隐藏的checkbox取消选中
  185 + $(this).find('input[type=checkbox]')[0].checked=false;
  186 + }
  187 + });
  188 + }
  189 + });
  190 +
  191 + //全选
  192 + $('[name=allCheck]', f).on('click', function () {
  193 + var cbs = $('.sch-time-checkbox-list label input[type=checkbox]:visible:enabled', modal);
  194 + var status = this.checked;
  195 + cbs.each(function () {
  196 + this.checked = status;
  197 + });
  198 + });
  199 + });
  200 + })();
  201 + </script>
  202 +</div>
... ...
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task/add_sub_task_inpark.html
1   -<div class="uk-modal ct_move_modal" id="add-sub-task-inpark-modal">
2   - <div class="uk-modal-dialog">
3   - <a href="" class="uk-modal-close uk-close"></a>
4   - <div class="uk-modal-header">
5   - <h2>回场子任务</h2></div>
6   -
7   - <div style="width: 100%;padding-left: 1%;">
8   - <div class="sub-task-card">
9   - <div class="uk-panel uk-panel-box uk-panel-box-primary twins_task_panel">
10   - <div class="uk-panel-badge uk-badge">营运</div>
11   - <h3 class="uk-panel-title">线路上站点间</h3>
12   - <form class="uk-form uk-form-horizontal inpark_form" service_form>
13   - <input type="hidden" name="type2" value="1">
14   - <input type="hidden" name="mileageType" value="service">
15   - <div class="uk-grid">
16   - <div class="uk-width-3-10">
17   - <div class="uk-form-row">
18   - <label class="uk-form-label">班次类型 </label>
19   - </div>
20   - </div>
21   - <div class="uk-width-7-10 pl5">
22   - <select name="type1" class="ct_focus" disabled>
23   - <option value="正常">正常</option>
24   - <option value="临加">临加</option>
25   - </select>
26   - </div>
27   - </div>
28   - <div class="uk-grid">
29   - <div class="uk-width-3-10">
30   - <div class="uk-form-row">
31   - <label class="uk-form-label">起点 </label>
32   - </div>
33   - </div>
34   - <div class="uk-width-7-10 pl5">
35   - <select name="startStation" disabled></select>
36   - </div>
37   - </div>
38   - <div class="uk-grid">
39   - <div class="uk-width-3-10">
40   - <div class="uk-form-row">
41   - <label class="uk-form-label">终点 </label>
42   - </div>
43   - </div>
44   - <div class="uk-width-7-10 pl5">
45   - <select name="endStation" class="ct_focus"></select>
46   - </div>
47   - </div>
48   - <div class="uk-grid">
49   - <div class="uk-width-3-10">
50   - <div class="uk-form-row">
51   - <label class="uk-form-label">营运里程</label>
52   - </div>
53   - </div>
54   - <div class="uk-width-7-10 pl5">
55   - <input type="number" step="0.01" name="mileage" required>
56   - </div>
57   - </div>
58   - <div class="uk-grid">
59   - <div class="uk-width-3-10">
60   - <div class="uk-form-row">
61   - <label class="uk-form-label">开始时间</label>
62   - </div>
63   - </div>
64   - <div class="uk-width-7-10 pl5">
65   - <input type="time" name="startDate" required>
66   - </div>
67   - </div>
68   - <div class="uk-grid">
69   - <div class="uk-width-3-10">
70   - <div class="uk-form-row">
71   - <label class="uk-form-label">结束时间</label>
72   - </div>
73   - </div>
74   - <div class="uk-width-7-10 pl5">
75   - <input type="time" name="endDate" required>
76   - </div>
77   - </div>
78   - </form>
79   - </div>
80   - </div>
81   - <div class="sub-task-card">
82   - <div class="uk-panel uk-panel-box uk-panel-box-secondary">
83   - <div class="uk-panel-badge uk-badge uk-badge-default">空驶</div>
84   - <h3 class="uk-panel-title">进场</h3>
85   - <form class="uk-form uk-form-horizontal inpark_form" empty_form>
86   - <input type="hidden" name="type2" value="2">
87   - <input type="hidden" name="mileageType" value="empty">
88   - <div class="uk-grid">
89   - <div class="uk-width-3-10">
90   - <div class="uk-form-row">
91   - <label class="uk-form-label">班次类型 </label>
92   - </div>
93   - </div>
94   - <div class="uk-width-7-10 pl5">
95   - <select name="type1" class="ct_focus">
96   - <option value="正常">正常</option>
97   - <option value="临加">临加</option>
98   - </select>
99   - </div>
100   - </div>
101   - <div class="uk-grid">
102   - <div class="uk-width-3-10">
103   - <div class="uk-form-row">
104   - <label class="uk-form-label">起点 </label>
105   - </div>
106   - </div>
107   - <div class="uk-width-7-10 pl5">
108   - <select name="startStation" ></select>
109   - </div>
110   - </div>
111   - <div class="uk-grid">
112   - <div class="uk-width-3-10">
113   - <div class="uk-form-row">
114   - <label class="uk-form-label">终点 </label>
115   - </div>
116   - </div>
117   - <div class="uk-width-7-10 pl5">
118   - <select name="endStation" class="ct_focus"></select>
119   - </div>
120   - </div>
121   - <div class="uk-grid">
122   - <div class="uk-width-3-10">
123   - <div class="uk-form-row">
124   - <label class="uk-form-label">空驶里程</label>
125   - </div>
126   - </div>
127   - <div class="uk-width-7-10 pl5">
128   - <input type="number" step="0.01" name="mileage" required style="width: calc(100% - 62px);">
129   - <a style="font-size: 12px;color: grey;cursor: default;" data-uk-tooltip title="可选择回场路径,设置途径点位。暂不开放" id="inpark_paths_link">路径(<span>0</span>)</a>
130   - </div>
131   - </div>
132   - <div class="uk-grid">
133   - <div class="uk-width-3-10">
134   - <div class="uk-form-row">
135   - <label class="uk-form-label">开始时间</label>
136   - </div>
137   - </div>
138   - <div class="uk-width-7-10 pl5">
139   - <input type="time" name="startDate" required>
140   - </div>
141   - </div>
142   - <div class="uk-grid">
143   - <div class="uk-width-3-10">
144   - <div class="uk-form-row">
145   - <label class="uk-form-label">结束时间</label>
146   - </div>
147   - </div>
148   - <div class="uk-width-7-10 pl5">
149   - <input type="time" name="endDate" required>
150   - </div>
151   - </div>
152   - </form>
153   - </div>
154   - </div>
155   - <div class="sub-task-card destroy-card uk-animation-scale">
156   - <div class="uk-panel uk-panel-box uk-panel-box-danger">
157   - <div class="uk-panel-badge uk-badge uk-badge-danger">烂班</div>
158   - <h3 class="uk-panel-title">线路上站点间</h3>
159   - <form class="uk-form uk-form-horizontal inpark_form" destroy_form>
160   - <input type="hidden" value="正常" name="type1">
161   - <input type="hidden" value="1" name="type2">
162   - <input type="hidden" name="mileageType" value="service">
163   - <input type="hidden" name="destroy" value="true">
164   - <div class="uk-grid" style="height: 30px;">
165   - </div>
166   - <div class="uk-grid">
167   - <div class="uk-width-3-10">
168   - <div class="uk-form-row">
169   - <label class="uk-form-label">起点 </label>
170   - </div>
171   - </div>
172   - <div class="uk-width-7-10 pl5">
173   - <select name="startStation" disabled></select>
174   - </div>
175   - </div>
176   - <div class="uk-grid">
177   - <div class="uk-width-3-10">
178   - <div class="uk-form-row">
179   - <label class="uk-form-label">终点 </label>
180   - </div>
181   - </div>
182   - <div class="uk-width-7-10 pl5">
183   - <select name="endStation" class="ct_focus" disabled></select>
184   - </div>
185   - </div>
186   - <div class="uk-grid">
187   - <div class="uk-width-3-10">
188   - <div class="uk-form-row">
189   - <label class="uk-form-label">烂班里程</label>
190   - </div>
191   - </div>
192   - <div class="uk-width-7-10 pl5">
193   - <input type="number" step="0.01" name="mileage" required>
194   - </div>
195   - </div>
196   - <div class="uk-grid">
197   - <div class="uk-width-3-10">
198   - <div class="uk-form-row">
199   - <label class="uk-form-label">开始时间</label>
200   - </div>
201   - </div>
202   - <div class="uk-width-7-10 pl5">
203   - <input type="time" name="startDate" required>
204   - </div>
205   - </div>
206   - <div class="uk-grid">
207   - <div class="uk-width-3-10">
208   - <div class="uk-form-row">
209   - <label class="uk-form-label">烂班原因</label>
210   - </div>
211   - </div>
212   - <div class="uk-width-7-10 pl5">
213   - <select name="destroyReason" required></select>
214   - </div>
215   - </div>
216   - </form>
217   - </div>
218   - </div>
219   -
220   - <form class="uk-form" style="margin-top: 15px; padding: 0 10px 0 0;">
221   - <textarea placeholder="备注" style="width: 100%;height: 70px;" id="globalRemarks"></textarea>
222   - </form>
223   - </div>
224   -
225   - <div class="uk-modal-footer uk-text-right">
226   - <button type="button" class="uk-button uk-modal-close">取消</button>
227   - <button type="button" class="uk-button uk-button-primary" id="submitChildTaskBtn">提交子任务</button>
228   -
229   - <div class="ct-footer-left">
230   - <a id="betweenStationRangeCalc" data-drawer-id="station_route_spacing_chart_drawer">站点间公里不准?</a>
231   - </div>
232   - </div>
233   - </div>
234   -
235   - <div class="ct-bottom-drawer">
236   - <div class="ct-bottom-drawer-body"></div>
237   - </div>
238   -
239   - <script id="sub-task-inpark-form-temp" type="text/html">
240   - </script>
241   -
242   - <script>
243   - (function () {
244   - var modal = '#add-sub-task-inpark-modal',
245   - serviceForm = $('form[service_form]', modal),
246   - emptyForm = $('form[empty_form]', modal),
247   - destroyForm = $('form[destroy_form]', modal),
248   - sch, stationRoutes, parks, information, esCode, timeLocStations;
249   - var adjustExps = ['配车', '保养', '故障', '肇事', '路阻', '纠纷', '缺人', '客稀', '缺车', '气候', '援外', '吊慢', '抽减', '其他'];
250   - $(modal).on('init', function (e, data) {
251   - e.stopPropagation();
252   - sch = data.sch;
253   -
254   - //站点路由
255   - stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) {
256   - return a.stationRouteCode - b.stationRouteCode;
257   - }), 'directions')[sch.xlDir];
258   - //空驶终点(停车场)
259   - //切换进场终点
260   - $('select[name=endStation]', emptyForm).on('change', inparkNavigation);
261   - $.get('/basic/parks', function (rs) {
262   - parks = rs;
263   - var opts = '';
264   - for (var code in parks) {
265   - opts += '<option value="' + code + '">' + parks[code] + '</option>';
266   - }
267   - $('select[name=endStation]', emptyForm).html(opts).val(information.carPark).trigger('change');
268   - });
269   - //线路标准
270   - information = gb_data_basic.getLineInformation(sch.xlBm);
271   - //本地存储的站点耗时
272   - getLocStationsSpace();
273   -
274   - //设置默认值
275   - setDefaultVal();
276   -
277   - //切换营运终点
278   - $('select[name=endStation]', serviceForm).val(esCode).on('change', function () {
279   - var val = $(this).val();
280   - if (val == esCode) {
281   - $('.uk-modal-dialog', modal).removeClass('three-children');
282   - $('.sub-task-card.destroy-card').css("display", "none");
283   - }
284   - else {
285   - $('.uk-modal-dialog', modal).addClass('three-children');
286   - $('.sub-task-card.destroy-card').css("display", "inline-block");
287   - }
288   -
289   - reClac();
290   - }).trigger('change');
291   -
292   -
293   - var dataArray = [];
294   - var fs = $('form.inpark_form', modal).formValidation({
295   - framework: 'uikit',
296   - locale: 'zh_CN'
297   - });
298   - fs.on('success.form.fv', function(e) {
299   - e.preventDefault();
300   - if($(this).is(':hidden'))
301   - return;
302   - dataArray.push($.extend($(this).serializeJSON(), getDisabledVal(this)
303   - , {remarks: $('#globalRemarks',modal).val(), 'schedule.id': sch.id}));
304   - $(this).data('valid', true);
305   -
306   - if(allValidSuccess()){
307   - var i = 0, rst;
308   - (function () {
309   - var f = arguments.callee;
310   - if(i >= dataArray.length){
311   - //完成后更新前端数据
312   - gb_schedule_table.updateSchedule(rst);
313   - UIkit.modal(modal).hide();
314   - $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch});
315   - return;
316   - }
317   - var data = dataArray[i];
318   - //里程为0的不保存
319   - if(data.mileage==0){
320   - i++;
321   - f();
322   - }
323   - else{
324   - //营运子任务不写备注
325   - if(data.mileageType == 'service' && !data.destroy)
326   - data.remarks = '';
327   - gb_common.$post('/childTask', data, function (rs) {
328   - notify_succ('子任务添加成功');
329   - rst = rs.t;
330   - i++;
331   - f();
332   - });
333   - }
334   - })();
335   - }
336   - });
337   -
338   - //校验不过
339   - fs.on('err.field.fv', function () {
340   - $('#submitChildTaskBtn', modal).removeClass('disabled').removeAttr('disabled');
341   - });
342   -
343   - //submit
344   - $('#submitChildTaskBtn', modal).on('click', function () {
345   - $(this).addClass('disabled').attr('disabled','disabled');
346   - dataArray = [];
347   - fs.data('valid', false);
348   - fs.formValidation('validate');
349   - //fs.submit();
350   - });
351   -
352   - //选择烂班原因
353   - $('select[name=destroyReason]', destroyForm).on('change', function () {
354   - var e =$('#globalRemarks', modal);
355   - e.val(e.val() + $(this).val() + ',');
356   - });
357   -
358   - //根据主任务状态,复子任务
359   - updateTwinsTaskBySch(sch);
360   - });
361   -
362   - function allValidSuccess() {
363   - var flag = true;
364   - $('form.inpark_form:visible', modal).each(function (i, f) {
365   - if(!$(f).data('valid')){
366   - flag = false;
367   - return false;
368   - }
369   - });
370   - return flag;
371   - }
372   -
373   - //获取表单disabled 项的值
374   - function getDisabledVal(f) {
375   - var rs = {};
376   - $('input,select', f).each(function () {
377   - if($(this).attr('disabled')){
378   - rs[$(this).attr('name')]=$(this).val();
379   - }
380   - });
381   - return rs;
382   - }
383   -
384   - function setDefaultVal() {
385   - var routeOpts = '';
386   - $.each(stationRoutes, function () {
387   - routeOpts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>';
388   - });
389   - esCode = stationRoutes[stationRoutes.length - 1].stationCode;
390   -
391   - //营运起终点
392   - $('select[name=startStation],select[name=endStation]', serviceForm).html(routeOpts);
393   - //空驶起点
394   - $('select[name=startStation]', emptyForm).html(routeOpts).val(esCode);
395   - //烂班起终点
396   - $('select[name=startStation],select[name=endStation]', destroyForm).html(routeOpts).val(esCode);
397   -
398   - //烂班原因
399   - var adjustExpsOpts = '<option value="">请选择...</option>';
400   - $.each(adjustExps, function (i, str) {
401   - adjustExpsOpts += '<option value="' + str + '">' + str + '</option>';
402   - });
403   - $('select[name=destroyReason]', destroyForm).html(adjustExpsOpts);
404   -
405   - //营运开始时间
406   - $('input[name=startDate]', serviceForm).val(sch.fcsjActual?sch.fcsjActual:sch.dfsj);
407   -
408   - //营运班次类型
409   - $('select[name=type1]', serviceForm).val(sch['sflj']?'临加':'正常');
410   - }
411   -
412   - //点击 路径
413   - $('#inpark_paths_link', modal).on('click', function () {
414   -
415   - });
416   -
417   - //进场导航
418   - var drivingRouteResult;
419   - function inparkNavigation() {
420   - var start = $('select[name=startStation]', emptyForm).val()
421   - ,end = $('select[name=endStation]', emptyForm).val();
422   -
423   - if(!end) return;
424   -
425   - var station = getStationByCode(start).station
426   - ,park = gb_data_basic.getCarparkByCode(end);
427   -
428   - if(!park){
429   - notify_err('无法找到停车场的坐标对照!!!');
430   - return;
431   - }
432   - var tArray = park['gCenterPoint'].split(' ');
433   - var sCoord = TransGPS.wgsToBD(station['gLaty'], station['gLonx'])
434   - ,eCoord = TransGPS.wgsToBD(parseFloat(tArray[1]), parseFloat(tArray[0]));
435   -
436   - var sp = new BMap.Point(sCoord.lng,sCoord.lat);
437   - var ep = new BMap.Point(eCoord.lng,eCoord.lat);
438   -
439   - var driving = new BMap.DrivingRoute('上海', {
440   - onSearchComplete: function (rs) {
441   - drivingRouteResult = rs;
442   - calcInparkMileage(0);
443   - }
444   - });
445   - driving.search(sp,ep);
446   - }
447   -
448   - function calcInparkMileage(index) {
449   - var count = drivingRouteResult.getNumPlans();
450   -
451   - //选择方案
452   - var routePlan = drivingRouteResult.getPlan(index);
453   - //里程
454   - var mileage = routePlan.getDistance(false);
455   - $('input[name=mileage]', emptyForm).val(mileage / 1000);
456   - //结束时间
457   - var duratio = routePlan.getDuration(false);
458   - var st = $('input[name=startDate]', emptyForm).val();
459   - var ets = moment(st, 'HH:mm').add(duratio, 'seconds').format('HH:mm');
460   - $('input[name=endDate]', emptyForm).val(ets);
461   -
462   -
463   - $('#inpark_paths_link span', modal).text(count);
464   - }
465   -
466   - function getStationByCode(code) {
467   - for(var i = 0; i < stationRoutes.length; i++){
468   - if(stationRoutes[i]['stationCode']==code)
469   - return stationRoutes[i];
470   - }
471   - return null;
472   - }
473   -
474   - function reClac() {
475   - var serviceEnd = $('select[name=endStation]', serviceForm).val();
476   - //空驶起点 == 营运终点
477   - $('select[name=startStation]', emptyForm).val(serviceEnd);
478   -
479   - //计算营运里程
480   - var s = $('select[name=startStation]', serviceForm).val(),
481   - e = $('select[name=endStation]', serviceForm).val();
482   - var sMileage = calcMileage(s, e);
483   - if(sMileage >= 0)
484   - $('input[name=mileage]', serviceForm).val(sMileage);
485   -
486   - //营运结束时间
487   - var et = sch.dfsjT + (parseInt(sMileage / sch.jhlcOrig * sch.bcsj) * 60 * 1000)
488   - ,ets = et > sch.zdsjT?sch.zdsj:moment(et).format('HH:mm');
489   - $('input[name=endDate]', serviceForm).val(ets);
490   -
491   - //有烂班
492   - if (serviceEnd != esCode) {
493   - //烂班起点 == 营运终点
494   - $('select[name=startStation]', destroyForm).val(serviceEnd);
495   - //计算烂班公里
496   - s = $('select[name=startStation]', destroyForm).val();
497   - e = $('select[name=endStation]', destroyForm).val();
498   - var dMileage = calcMileage(s, e);
499   - $('input[name=mileage]', destroyForm).val(dMileage);
500   - //烂班开始时间
501   - $('input[name=startDate]', destroyForm).val(ets);
502   - }
503   -
504   - //进场开始时间
505   - $('input[name=startDate]', emptyForm).val(ets);
506   -
507   - //重新导航
508   - inparkNavigation();
509   - }
510   -
511   - function calcMileage(s, e) {
512   - var mileage = 0, flag, code;
513   - if (timeLocStations) {
514   - //空间坐标计算的站距
515   - $.each(timeLocStations, function () {
516   - code = this.station['STATION_CODE'];
517   - if (flag)
518   - mileage = gb_common.accAdd(mileage, this.toDistanceGl);
519   - if (code == s)
520   - flag = true;
521   - if (code == e)
522   - return false;
523   - });
524   - }
525   - else{
526   - //从原始站点路由字段里取值
527   - $.each(stationRoutes, function () {
528   - code = this['stationCode'];
529   - if (flag)
530   - mileage = gb_common.accAdd(mileage, this.distances);
531   - if (code == s)
532   - flag = true;
533   - if (code == e)
534   - return false;
535   - });
536   - }
537   - return mileage;
538   - }
539   -
540   - //从本地localStorage获取站间距数据
541   - function getLocStationsSpace() {
542   - try {
543   - timeLocStations = window.localStorage.getItem('control_route_distance_' + sch.xlBm);
544   - if (timeLocStations)
545   - timeLocStations = JSON.parse(timeLocStations).stations[sch.xlDir == 0 ? 'up' : 'down'];
546   - } catch (e) {
547   - console.log(e);
548   - }
549   - }
550   -
551   - //站间距计算后刷新
552   - $(modal).on('refresh_station_space', function () {
553   - getLocStationsSpace();
554   - reClac();
555   - });
556   -
557   - //------ 下抽屉 ------
558   - $('#betweenStationRangeCalc', modal).on('click', function () {
559   - var id = $(this).data('drawer-id');
560   - switchBtmDrawer(id, '/real_control_v2/fragments/line_schedule/context_menu/sub_task/station_route_spacing_chart.html');
561   - });
562   -
563   - var btmDrawer = $('.ct-bottom-drawer', modal);
564   - //打开事件
565   - btmDrawer.on('drawer_show', function () {
566   - var url = $(this).data('url');
567   - if (!url) {
568   - alert('无效的地址');
569   - }
570   -
571   - var drawerPanel = $(this).data('name');
572   - $('.ct-bottom-drawer-body', btmDrawer).load(url, function () {
573   - $('#' + drawerPanel).trigger('drawer-init', {sch: sch});
574   - });
575   - });
576   -
577   - function switchBtmDrawer(id, url) {
578   - if (btmDrawer.hasClass('open') && btmDrawer.data('name') == id) {
579   - btmDrawer.removeClass('open');
580   - btmDrawer.removeData('name').removeData('url');
581   - }
582   - else {
583   - btmDrawer.addClass('open');
584   - btmDrawer.data('name', id).data('url', url).trigger('drawer_show');
585   - }
586   - }
587   -
588   -
589   - function updateTwinsTaskBySch(sch) {
590   - //主任务是烂班
591   - if(sch.destroy){
592   - serviceForm.prepend('<input type="hidden" name="destroy" value="true">');
593   - $('[name=mileage]', serviceForm).val(sch.jhlcOrig).attr('disabled', 'disabled');
594   - $('.twins_task_panel .uk-badge', modal).addClass('uk-badge-danger').text('烂班');
595   - //终点禁选
596   - $('select[name=endStation]', serviceForm).attr('disabled', 'disabled');
597   - //开始结束时间禁选
598   -
599   - //空驶起点
600   - $('select[name=startStation]', emptyForm).val(sch.qdzCode);
601   - }
602   - }
603   - })();
604   - </script>
  1 +<div class="uk-modal ct_move_modal" id="add-sub-task-inpark-modal">
  2 + <div class="uk-modal-dialog">
  3 + <a href="" class="uk-modal-close uk-close"></a>
  4 + <div class="uk-modal-header">
  5 + <h2>回场子任务</h2></div>
  6 +
  7 + <div style="width: 100%;padding-left: 1%;">
  8 + <div class="sub-task-card">
  9 + <div class="uk-panel uk-panel-box uk-panel-box-primary twins_task_panel">
  10 + <div class="uk-panel-badge uk-badge">营运</div>
  11 + <h3 class="uk-panel-title">线路上站点间</h3>
  12 + <form class="uk-form uk-form-horizontal inpark_form" service_form>
  13 + <input type="hidden" name="type2" value="1">
  14 + <input type="hidden" name="mileageType" value="service">
  15 + <div class="uk-grid">
  16 + <div class="uk-width-3-10">
  17 + <div class="uk-form-row">
  18 + <label class="uk-form-label">班次类型 </label>
  19 + </div>
  20 + </div>
  21 + <div class="uk-width-7-10 pl5">
  22 + <select name="type1" class="ct_focus" disabled>
  23 + <option value="正常">正常</option>
  24 + <option value="临加">临加</option>
  25 + </select>
  26 + </div>
  27 + </div>
  28 + <div class="uk-grid">
  29 + <div class="uk-width-3-10">
  30 + <div class="uk-form-row">
  31 + <label class="uk-form-label">起点 </label>
  32 + </div>
  33 + </div>
  34 + <div class="uk-width-7-10 pl5">
  35 + <select name="startStation" disabled></select>
  36 + </div>
  37 + </div>
  38 + <div class="uk-grid">
  39 + <div class="uk-width-3-10">
  40 + <div class="uk-form-row">
  41 + <label class="uk-form-label">终点 </label>
  42 + </div>
  43 + </div>
  44 + <div class="uk-width-7-10 pl5">
  45 + <select name="endStation" class="ct_focus"></select>
  46 + </div>
  47 + </div>
  48 + <div class="uk-grid">
  49 + <div class="uk-width-3-10">
  50 + <div class="uk-form-row">
  51 + <label class="uk-form-label">营运里程</label>
  52 + </div>
  53 + </div>
  54 + <div class="uk-width-7-10 pl5">
  55 + <input type="number" step="0.01" name="mileage" required>
  56 + </div>
  57 + </div>
  58 + <div class="uk-grid">
  59 + <div class="uk-width-3-10">
  60 + <div class="uk-form-row">
  61 + <label class="uk-form-label">开始时间</label>
  62 + </div>
  63 + </div>
  64 + <div class="uk-width-7-10 pl5">
  65 + <input type="time" name="startDate" required>
  66 + </div>
  67 + </div>
  68 + <div class="uk-grid">
  69 + <div class="uk-width-3-10">
  70 + <div class="uk-form-row">
  71 + <label class="uk-form-label">结束时间</label>
  72 + </div>
  73 + </div>
  74 + <div class="uk-width-7-10 pl5">
  75 + <input type="time" name="endDate" required>
  76 + </div>
  77 + </div>
  78 + </form>
  79 + </div>
  80 + </div>
  81 + <div class="sub-task-card">
  82 + <div class="uk-panel uk-panel-box uk-panel-box-secondary">
  83 + <div class="uk-panel-badge uk-badge uk-badge-default">空驶</div>
  84 + <h3 class="uk-panel-title">进场</h3>
  85 + <form class="uk-form uk-form-horizontal inpark_form" empty_form>
  86 + <input type="hidden" name="type2" value="2">
  87 + <input type="hidden" name="mileageType" value="empty">
  88 + <div class="uk-grid">
  89 + <div class="uk-width-3-10">
  90 + <div class="uk-form-row">
  91 + <label class="uk-form-label">班次类型 </label>
  92 + </div>
  93 + </div>
  94 + <div class="uk-width-7-10 pl5">
  95 + <select name="type1" class="ct_focus">
  96 + <option value="正常">正常</option>
  97 + <option value="临加">临加</option>
  98 + </select>
  99 + </div>
  100 + </div>
  101 + <div class="uk-grid">
  102 + <div class="uk-width-3-10">
  103 + <div class="uk-form-row">
  104 + <label class="uk-form-label">起点 </label>
  105 + </div>
  106 + </div>
  107 + <div class="uk-width-7-10 pl5">
  108 + <select name="startStation" ></select>
  109 + </div>
  110 + </div>
  111 + <div class="uk-grid">
  112 + <div class="uk-width-3-10">
  113 + <div class="uk-form-row">
  114 + <label class="uk-form-label">终点 </label>
  115 + </div>
  116 + </div>
  117 + <div class="uk-width-7-10 pl5">
  118 + <select name="endStation" class="ct_focus"></select>
  119 + </div>
  120 + </div>
  121 + <div class="uk-grid">
  122 + <div class="uk-width-3-10">
  123 + <div class="uk-form-row">
  124 + <label class="uk-form-label">空驶里程</label>
  125 + </div>
  126 + </div>
  127 + <div class="uk-width-7-10 pl5">
  128 + <input type="number" step="0.01" name="mileage" required style="width: calc(100% - 62px);">
  129 + <a style="font-size: 12px;color: grey;cursor: default;" data-uk-tooltip title="可选择回场路径,设置途径点位。暂不开放" id="inpark_paths_link">路径(<span>0</span>)</a>
  130 + </div>
  131 + </div>
  132 + <div class="uk-grid">
  133 + <div class="uk-width-3-10">
  134 + <div class="uk-form-row">
  135 + <label class="uk-form-label">开始时间</label>
  136 + </div>
  137 + </div>
  138 + <div class="uk-width-7-10 pl5">
  139 + <input type="time" name="startDate" required>
  140 + </div>
  141 + </div>
  142 + <div class="uk-grid">
  143 + <div class="uk-width-3-10">
  144 + <div class="uk-form-row">
  145 + <label class="uk-form-label">结束时间</label>
  146 + </div>
  147 + </div>
  148 + <div class="uk-width-7-10 pl5">
  149 + <input type="time" name="endDate" required>
  150 + </div>
  151 + </div>
  152 + </form>
  153 + </div>
  154 + </div>
  155 + <div class="sub-task-card destroy-card uk-animation-scale">
  156 + <div class="uk-panel uk-panel-box uk-panel-box-danger">
  157 + <div class="uk-panel-badge uk-badge uk-badge-danger">烂班</div>
  158 + <h3 class="uk-panel-title">线路上站点间</h3>
  159 + <form class="uk-form uk-form-horizontal inpark_form" destroy_form>
  160 + <input type="hidden" value="正常" name="type1">
  161 + <input type="hidden" value="1" name="type2">
  162 + <input type="hidden" name="mileageType" value="service">
  163 + <input type="hidden" name="destroy" value="true">
  164 + <div class="uk-grid" style="height: 30px;">
  165 + </div>
  166 + <div class="uk-grid">
  167 + <div class="uk-width-3-10">
  168 + <div class="uk-form-row">
  169 + <label class="uk-form-label">起点 </label>
  170 + </div>
  171 + </div>
  172 + <div class="uk-width-7-10 pl5">
  173 + <select name="startStation" disabled></select>
  174 + </div>
  175 + </div>
  176 + <div class="uk-grid">
  177 + <div class="uk-width-3-10">
  178 + <div class="uk-form-row">
  179 + <label class="uk-form-label">终点 </label>
  180 + </div>
  181 + </div>
  182 + <div class="uk-width-7-10 pl5">
  183 + <select name="endStation" class="ct_focus" disabled></select>
  184 + </div>
  185 + </div>
  186 + <div class="uk-grid">
  187 + <div class="uk-width-3-10">
  188 + <div class="uk-form-row">
  189 + <label class="uk-form-label">烂班里程</label>
  190 + </div>
  191 + </div>
  192 + <div class="uk-width-7-10 pl5">
  193 + <input type="number" step="0.01" name="mileage" required>
  194 + </div>
  195 + </div>
  196 + <div class="uk-grid">
  197 + <div class="uk-width-3-10">
  198 + <div class="uk-form-row">
  199 + <label class="uk-form-label">开始时间</label>
  200 + </div>
  201 + </div>
  202 + <div class="uk-width-7-10 pl5">
  203 + <input type="time" name="startDate" required>
  204 + </div>
  205 + </div>
  206 + <div class="uk-grid">
  207 + <div class="uk-width-3-10">
  208 + <div class="uk-form-row">
  209 + <label class="uk-form-label">烂班原因</label>
  210 + </div>
  211 + </div>
  212 + <div class="uk-width-7-10 pl5">
  213 + <select name="destroyReason" required></select>
  214 + </div>
  215 + </div>
  216 + </form>
  217 + </div>
  218 + </div>
  219 +
  220 + <form class="uk-form" style="margin-top: 15px; padding: 0 10px 0 0;">
  221 + <textarea placeholder="备注" style="width: 100%;height: 70px;" id="globalRemarks"></textarea>
  222 + </form>
  223 + </div>
  224 +
  225 + <div class="uk-modal-footer uk-text-right">
  226 + <button type="button" class="uk-button uk-modal-close">取消</button>
  227 + <button type="button" class="uk-button uk-button-primary" id="submitChildTaskBtn">提交子任务</button>
  228 +
  229 + <div class="ct-footer-left">
  230 + <a id="betweenStationRangeCalc" data-drawer-id="station_route_spacing_chart_drawer">站点间公里不准?</a>
  231 + </div>
  232 + </div>
  233 + </div>
  234 +
  235 + <div class="ct-bottom-drawer">
  236 + <div class="ct-bottom-drawer-body"></div>
  237 + </div>
  238 +
  239 + <script id="sub-task-inpark-form-temp" type="text/html">
  240 + </script>
  241 +
  242 + <script>
  243 + (function () {
  244 + var modal = '#add-sub-task-inpark-modal',
  245 + serviceForm = $('form[service_form]', modal),
  246 + emptyForm = $('form[empty_form]', modal),
  247 + destroyForm = $('form[destroy_form]', modal),
  248 + sch, stationRoutes, parks, information, esCode, timeLocStations;
  249 + var adjustExps = ['保养', '故障', '事故', '路阻', '纠纷', '缺人', '验车', '天气', '支援', '借调', '其他'];
  250 + $(modal).on('init', function (e, data) {
  251 + e.stopPropagation();
  252 + sch = data.sch;
  253 +
  254 + //站点路由
  255 + stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) {
  256 + return a.stationRouteCode - b.stationRouteCode;
  257 + }), 'directions')[sch.xlDir];
  258 + //空驶终点(停车场)
  259 + //切换进场终点
  260 + $('select[name=endStation]', emptyForm).on('change', inparkNavigation);
  261 + $.get('/basic/parks', function (rs) {
  262 + parks = rs;
  263 + var opts = '';
  264 + for (var code in parks) {
  265 + opts += '<option value="' + code + '">' + parks[code] + '</option>';
  266 + }
  267 + $('select[name=endStation]', emptyForm).html(opts).val(information.carPark).trigger('change');
  268 + });
  269 + //线路标准
  270 + information = gb_data_basic.getLineInformation(sch.xlBm);
  271 + //本地存储的站点耗时
  272 + getLocStationsSpace();
  273 +
  274 + //设置默认值
  275 + setDefaultVal();
  276 +
  277 + //切换营运终点
  278 + $('select[name=endStation]', serviceForm).val(esCode).on('change', function () {
  279 + var val = $(this).val();
  280 + if (val == esCode) {
  281 + $('.uk-modal-dialog', modal).removeClass('three-children');
  282 + $('.sub-task-card.destroy-card').css("display", "none");
  283 + }
  284 + else {
  285 + $('.uk-modal-dialog', modal).addClass('three-children');
  286 + $('.sub-task-card.destroy-card').css("display", "inline-block");
  287 + }
  288 +
  289 + reClac();
  290 + }).trigger('change');
  291 +
  292 +
  293 + var dataArray = [];
  294 + var fs = $('form.inpark_form', modal).formValidation({
  295 + framework: 'uikit',
  296 + locale: 'zh_CN'
  297 + });
  298 + fs.on('success.form.fv', function(e) {
  299 + e.preventDefault();
  300 + if($(this).is(':hidden'))
  301 + return;
  302 + dataArray.push($.extend($(this).serializeJSON(), getDisabledVal(this)
  303 + , {remarks: $('#globalRemarks',modal).val(), 'schedule.id': sch.id}));
  304 + $(this).data('valid', true);
  305 +
  306 + if(allValidSuccess()){
  307 + var i = 0, rst;
  308 + (function () {
  309 + var f = arguments.callee;
  310 + if(i >= dataArray.length){
  311 + //完成后更新前端数据
  312 + gb_schedule_table.updateSchedule(rst);
  313 + UIkit.modal(modal).hide();
  314 + $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch});
  315 + return;
  316 + }
  317 + var data = dataArray[i];
  318 + //里程为0的不保存
  319 + if(data.mileage==0){
  320 + i++;
  321 + f();
  322 + }
  323 + else{
  324 + //营运子任务不写备注
  325 + if(data.mileageType == 'service' && !data.destroy)
  326 + data.remarks = '';
  327 + gb_common.$post('/childTask', data, function (rs) {
  328 + notify_succ('子任务添加成功');
  329 + rst = rs.t;
  330 + i++;
  331 + f();
  332 + });
  333 + }
  334 + })();
  335 + }
  336 + });
  337 +
  338 + //校验不过
  339 + fs.on('err.field.fv', function () {
  340 + $('#submitChildTaskBtn', modal).removeClass('disabled').removeAttr('disabled');
  341 + });
  342 +
  343 + //submit
  344 + $('#submitChildTaskBtn', modal).on('click', function () {
  345 + $(this).addClass('disabled').attr('disabled','disabled');
  346 + dataArray = [];
  347 + fs.data('valid', false);
  348 + fs.formValidation('validate');
  349 + //fs.submit();
  350 + });
  351 +
  352 + //选择烂班原因
  353 + $('select[name=destroyReason]', destroyForm).on('change', function () {
  354 + var e =$('#globalRemarks', modal);
  355 + e.val(e.val() + $(this).val() + ',');
  356 + });
  357 +
  358 + //根据主任务状态,复子任务
  359 + updateTwinsTaskBySch(sch);
  360 + });
  361 +
  362 + function allValidSuccess() {
  363 + var flag = true;
  364 + $('form.inpark_form:visible', modal).each(function (i, f) {
  365 + if(!$(f).data('valid')){
  366 + flag = false;
  367 + return false;
  368 + }
  369 + });
  370 + return flag;
  371 + }
  372 +
  373 + //获取表单disabled 项的值
  374 + function getDisabledVal(f) {
  375 + var rs = {};
  376 + $('input,select', f).each(function () {
  377 + if($(this).attr('disabled')){
  378 + rs[$(this).attr('name')]=$(this).val();
  379 + }
  380 + });
  381 + return rs;
  382 + }
  383 +
  384 + function setDefaultVal() {
  385 + var routeOpts = '';
  386 + $.each(stationRoutes, function () {
  387 + routeOpts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>';
  388 + });
  389 + esCode = stationRoutes[stationRoutes.length - 1].stationCode;
  390 +
  391 + //营运起终点
  392 + $('select[name=startStation],select[name=endStation]', serviceForm).html(routeOpts);
  393 + //空驶起点
  394 + $('select[name=startStation]', emptyForm).html(routeOpts).val(esCode);
  395 + //烂班起终点
  396 + $('select[name=startStation],select[name=endStation]', destroyForm).html(routeOpts).val(esCode);
  397 +
  398 + //烂班原因
  399 + var adjustExpsOpts = '<option value="">请选择...</option>';
  400 + $.each(adjustExps, function (i, str) {
  401 + adjustExpsOpts += '<option value="' + str + '">' + str + '</option>';
  402 + });
  403 + $('select[name=destroyReason]', destroyForm).html(adjustExpsOpts);
  404 +
  405 + //营运开始时间
  406 + $('input[name=startDate]', serviceForm).val(sch.fcsjActual?sch.fcsjActual:sch.dfsj);
  407 +
  408 + //营运班次类型
  409 + $('select[name=type1]', serviceForm).val(sch['sflj']?'临加':'正常');
  410 + }
  411 +
  412 + //点击 路径
  413 + $('#inpark_paths_link', modal).on('click', function () {
  414 +
  415 + });
  416 +
  417 + //进场导航
  418 + var drivingRouteResult;
  419 + function inparkNavigation() {
  420 + var start = $('select[name=startStation]', emptyForm).val()
  421 + ,end = $('select[name=endStation]', emptyForm).val();
  422 +
  423 + if(!end) return;
  424 +
  425 + var station = getStationByCode(start).station
  426 + ,park = gb_data_basic.getCarparkByCode(end);
  427 +
  428 + if(!park){
  429 + notify_err('无法找到停车场的坐标对照!!!');
  430 + return;
  431 + }
  432 + var tArray = park['gCenterPoint'].split(' ');
  433 + var sCoord = TransGPS.wgsToBD(station['gLaty'], station['gLonx'])
  434 + ,eCoord = TransGPS.wgsToBD(parseFloat(tArray[1]), parseFloat(tArray[0]));
  435 +
  436 + var sp = new BMap.Point(sCoord.lng,sCoord.lat);
  437 + var ep = new BMap.Point(eCoord.lng,eCoord.lat);
  438 +
  439 + var driving = new BMap.DrivingRoute('上海', {
  440 + onSearchComplete: function (rs) {
  441 + drivingRouteResult = rs;
  442 + calcInparkMileage(0);
  443 + }
  444 + });
  445 + driving.search(sp,ep);
  446 + }
  447 +
  448 + function calcInparkMileage(index) {
  449 + var count = drivingRouteResult.getNumPlans();
  450 +
  451 + //选择方案
  452 + var routePlan = drivingRouteResult.getPlan(index);
  453 + //里程
  454 + var mileage = routePlan.getDistance(false);
  455 + $('input[name=mileage]', emptyForm).val(mileage / 1000);
  456 + //结束时间
  457 + var duratio = routePlan.getDuration(false);
  458 + var st = $('input[name=startDate]', emptyForm).val();
  459 + var ets = moment(st, 'HH:mm').add(duratio, 'seconds').format('HH:mm');
  460 + $('input[name=endDate]', emptyForm).val(ets);
  461 +
  462 +
  463 + $('#inpark_paths_link span', modal).text(count);
  464 + }
  465 +
  466 + function getStationByCode(code) {
  467 + for(var i = 0; i < stationRoutes.length; i++){
  468 + if(stationRoutes[i]['stationCode']==code)
  469 + return stationRoutes[i];
  470 + }
  471 + return null;
  472 + }
  473 +
  474 + function reClac() {
  475 + var serviceEnd = $('select[name=endStation]', serviceForm).val();
  476 + //空驶起点 == 营运终点
  477 + $('select[name=startStation]', emptyForm).val(serviceEnd);
  478 +
  479 + //计算营运里程
  480 + var s = $('select[name=startStation]', serviceForm).val(),
  481 + e = $('select[name=endStation]', serviceForm).val();
  482 + var sMileage = calcMileage(s, e);
  483 + if(sMileage >= 0)
  484 + $('input[name=mileage]', serviceForm).val(sMileage);
  485 +
  486 + //营运结束时间
  487 + var et = sch.dfsjT + (parseInt(sMileage / sch.jhlcOrig * sch.bcsj) * 60 * 1000)
  488 + ,ets = et > sch.zdsjT?sch.zdsj:moment(et).format('HH:mm');
  489 + $('input[name=endDate]', serviceForm).val(ets);
  490 +
  491 + //有烂班
  492 + if (serviceEnd != esCode) {
  493 + //烂班起点 == 营运终点
  494 + $('select[name=startStation]', destroyForm).val(serviceEnd);
  495 + //计算烂班公里
  496 + s = $('select[name=startStation]', destroyForm).val();
  497 + e = $('select[name=endStation]', destroyForm).val();
  498 + var dMileage = calcMileage(s, e);
  499 + $('input[name=mileage]', destroyForm).val(dMileage);
  500 + //烂班开始时间
  501 + $('input[name=startDate]', destroyForm).val(ets);
  502 + }
  503 +
  504 + //进场开始时间
  505 + $('input[name=startDate]', emptyForm).val(ets);
  506 +
  507 + //重新导航
  508 + inparkNavigation();
  509 + }
  510 +
  511 + function calcMileage(s, e) {
  512 + var mileage = 0, flag, code;
  513 + if (timeLocStations) {
  514 + //空间坐标计算的站距
  515 + $.each(timeLocStations, function () {
  516 + code = this.station['STATION_CODE'];
  517 + if (flag)
  518 + mileage = gb_common.accAdd(mileage, this.toDistanceGl);
  519 + if (code == s)
  520 + flag = true;
  521 + if (code == e)
  522 + return false;
  523 + });
  524 + }
  525 + else{
  526 + //从原始站点路由字段里取值
  527 + $.each(stationRoutes, function () {
  528 + code = this['stationCode'];
  529 + if (flag)
  530 + mileage = gb_common.accAdd(mileage, this.distances);
  531 + if (code == s)
  532 + flag = true;
  533 + if (code == e)
  534 + return false;
  535 + });
  536 + }
  537 + return mileage;
  538 + }
  539 +
  540 + //从本地localStorage获取站间距数据
  541 + function getLocStationsSpace() {
  542 + try {
  543 + timeLocStations = window.localStorage.getItem('control_route_distance_' + sch.xlBm);
  544 + if (timeLocStations)
  545 + timeLocStations = JSON.parse(timeLocStations).stations[sch.xlDir == 0 ? 'up' : 'down'];
  546 + } catch (e) {
  547 + console.log(e);
  548 + }
  549 + }
  550 +
  551 + //站间距计算后刷新
  552 + $(modal).on('refresh_station_space', function () {
  553 + getLocStationsSpace();
  554 + reClac();
  555 + });
  556 +
  557 + //------ 下抽屉 ------
  558 + $('#betweenStationRangeCalc', modal).on('click', function () {
  559 + var id = $(this).data('drawer-id');
  560 + switchBtmDrawer(id, '/real_control_v2/fragments/line_schedule/context_menu/sub_task/station_route_spacing_chart.html');
  561 + });
  562 +
  563 + var btmDrawer = $('.ct-bottom-drawer', modal);
  564 + //打开事件
  565 + btmDrawer.on('drawer_show', function () {
  566 + var url = $(this).data('url');
  567 + if (!url) {
  568 + alert('无效的地址');
  569 + }
  570 +
  571 + var drawerPanel = $(this).data('name');
  572 + $('.ct-bottom-drawer-body', btmDrawer).load(url, function () {
  573 + $('#' + drawerPanel).trigger('drawer-init', {sch: sch});
  574 + });
  575 + });
  576 +
  577 + function switchBtmDrawer(id, url) {
  578 + if (btmDrawer.hasClass('open') && btmDrawer.data('name') == id) {
  579 + btmDrawer.removeClass('open');
  580 + btmDrawer.removeData('name').removeData('url');
  581 + }
  582 + else {
  583 + btmDrawer.addClass('open');
  584 + btmDrawer.data('name', id).data('url', url).trigger('drawer_show');
  585 + }
  586 + }
  587 +
  588 +
  589 + function updateTwinsTaskBySch(sch) {
  590 + //主任务是烂班
  591 + if(sch.destroy){
  592 + serviceForm.prepend('<input type="hidden" name="destroy" value="true">');
  593 + $('[name=mileage]', serviceForm).val(sch.jhlcOrig).attr('disabled', 'disabled');
  594 + $('.twins_task_panel .uk-badge', modal).addClass('uk-badge-danger').text('烂班');
  595 + //终点禁选
  596 + $('select[name=endStation]', serviceForm).attr('disabled', 'disabled');
  597 + //开始结束时间禁选
  598 +
  599 + //空驶起点
  600 + $('select[name=startStation]', emptyForm).val(sch.qdzCode);
  601 + }
  602 + }
  603 + })();
  604 + </script>
605 605 </div>
606 606 \ No newline at end of file
... ...
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task/add_sub_task_other.html
1   -<div class="uk-modal ct-form-modal ct_move_modal" id="add-sub-task-other-modal">
2   - <div class="uk-modal-dialog" style="width: 635px;">
3   - <a href="" class="uk-modal-close uk-close"></a>
4   - <div class="uk-modal-header">
5   - <h2>自定义子任务</h2></div>
6   - <form class="uk-form uk-form-horizontal">
7   - </form>
8   - </div>
9   -
10   - <script id="sub-task-other-form-temp" type="text/html">
11   - <input type="hidden" value="{{sch.id}}" name="schedule.id">
12   - <div class="uk-grid">
13   - <div class="uk-width-1-1">
14   - <div class="uk-form-row">
15   - <label class="uk-form-label">班次类型</label>
16   - <div class="uk-form-controls">
17   - <select class="form-control" name="type1" style="width: 65px;">
18   - <option>正常</option>
19   - <option>临加</option>
20   - </select>
21   - <select class="form-control nt-dictionary" name="type2" data-group=ChildTaskType
22   - style="width: 126px;;"></select>
23   - </div>
24   - </div>
25   - </div>
26   - </div>
27   - <div class="uk-grid">
28   - <div class="uk-width-1-2">
29   - <div class="uk-form-row">
30   - <label class="uk-form-label">起点 </label>
31   - <div class="uk-form-controls">
32   - <select name="startStation" required></select>
33   - </div>
34   - </div>
35   - </div>
36   - <div class="uk-width-1-2">
37   - <div class="uk-form-row">
38   - <label class="uk-form-label">终点</label>
39   - <div class="uk-form-controls">
40   - <select name="endStation" required></select>
41   - </div>
42   - </div>
43   - </div>
44   - </div>
45   -
46   - <div class="uk-grid">
47   - <div class="uk-width-1-2">
48   - <div class="uk-form-row">
49   - <label class="uk-form-label">里程类型</label>
50   - <div class="uk-form-controls">
51   - <select class="form-control nt-dictionary" required name="mileageType"
52   - data-group="MileageType"></select>
53   - </div>
54   - </div>
55   - </div>
56   - <div class="uk-width-1-2">
57   - <div class="uk-form-row">
58   - <label class="uk-form-label">公里数</label>
59   - <div class="uk-form-controls">
60   - <input class="form-control" name="mileage" max=222 data-fv-lessthan-inclusive="false" required>
61   - </div>
62   - </div>
63   - </div>
64   - </div>
65   -
66   - <div class="uk-grid">
67   - <div class="uk-width-1-2">
68   - <div class="uk-form-row">
69   - <label class="uk-form-label">开始时间</label>
70   - <div class="uk-form-controls">
71   - <input name="startDate" value="{{sch.fcsj}}" type="time" required>
72   - </div>
73   - </div>
74   - </div>
75   - <div class="uk-width-1-2">
76   - <div class="uk-form-row">
77   - <label class="uk-form-label">结束时间</label>
78   - <div class="uk-form-controls">
79   - <input name="endDate" value="{{sch.zdsj}}" type="time" required>
80   - </div>
81   - </div>
82   - </div>
83   - </div>
84   -
85   - <div class="uk-grid">
86   - <div class="uk-width-1-2">
87   - <div class="uk-form-row" style="padding-top: 5px;">
88   - <label class="uk-form-label"></label>
89   - <div class="uk-form-controls">
90   - <label>
91   - <input type="checkbox" value=1 name="destroy" class="i-cbox"> 是否烂班
92   - </label>
93   - </div>
94   - </div>
95   - </div>
96   - <div class="uk-width-1-2 destroy_reason_wrap" style="display: none;">
97   - <div class="uk-form-row">
98   - <label class="uk-form-label">烂班原因</label>
99   - <div class="uk-form-controls">
100   - <select class="form-control" name="destroyReason" required>
101   - <option value="">请选择...</option>
102   - {{each adjustExps as exp i}}
103   - <option value="{{exp}}">{{exp}}</option>
104   - {{/each}}
105   - </select>
106   - </div>
107   - </div>
108   - </div>
109   - </div>
110   -
111   - <div class="uk-grid">
112   - <div class="uk-width-1-1">
113   - <div class="uk-form-row ct-stacked">
114   - <div class="uk-form-controls" style="margin-top: 5px;">
115   - <textarea id="form-s-t" cols="30" rows="5" name="remarks" data-fv-stringlength="true"
116   - data-fv-stringlength-max="50" placeholder="备注,不超过50个字符"></textarea>
117   - </div>
118   - </div>
119   - </div>
120   - </div>
121   - <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;">
122   - <button type="button" class="uk-button uk-modal-close">取消</button>
123   - <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存</button>
124   - </div>
125   - </script>
126   -
127   - <script>
128   - (function () {
129   - var modal = '#add-sub-task-other-modal',
130   - sch, stationRoutes, parks, information;
131   - var adjustExps = ['配车', '保养', '故障', '肇事', '路阻', '纠纷', '缺人', '客稀', '缺车', '气候', '援外', '吊慢', '抽减', '其他'];
132   - $(modal).on('init', function (e, data) {
133   - e.stopPropagation();
134   - sch = data.sch;
135   - var formHtml = template('sub-task-other-form-temp', {sch: sch, adjustExps: adjustExps});
136   - $('form', modal).html(formHtml);
137   - //字典转换
138   - dictionaryUtils.transformDom($('.nt-dictionary', modal));
139   -
140   - //站点路由
141   - stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) {
142   - return a.stationRouteCode - b.stationRouteCode;
143   - }), 'directions');
144   - //停车场
145   - $.get('/basic/parks', function (rs) {
146   - parks = rs;
147   - });
148   - //线路标准
149   - information = gb_data_basic.getLineInformation(sch.xlBm);
150   -
151   - //submit
152   - var f = $('form', modal).formValidation(gb_form_validation_opts);
153   - f.on('success.form.fv', function (e) {
154   - disabled_submit_btn(this);
155   - e.preventDefault();
156   - var data = $(this).serializeJSON();
157   -
158   - gb_common.$post('/childTask', data, function (rs) {
159   - notify_succ('子任务添加成功');
160   - gb_schedule_table.updateSchedule(rs.t);
161   - $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: rs.t});
162   - UIkit.modal(modal).hide();
163   - });
164   - });
165   -
166   - //班次类型
167   - $('[name=type2]', f).on('change', function () {
168   - var routes = stationRoutes[sch.xlDir]
169   - , lastCode = routes[routes.length - 1].stationCode
170   - , opts = '', park_opts = '';
171   - //station options
172   - $.each(routes, function () {
173   - opts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>'
174   - });
175   - //park options
176   - for (var code in parks)
177   - park_opts += '<option value="' + code + '">' + parks[code] + '</option>';
178   -
179   - var qdz = $('[name=startStation]', f), zdz = $('[name=endStation]', f), mType = $('[name=mileageType]', f);
180   - switch ($(this).val()) {
181   - case '3'://出场
182   - qdz.html(park_opts).val(information.carPark);
183   - zdz.html(opts);
184   - mType.val('empty');
185   - break;
186   - case '2'://进场
187   - qdz.html(opts);
188   - zdz.html(park_opts).val(information.carPark);
189   - mType.val('empty');
190   - break;
191   - default:
192   - qdz.html(opts);
193   - zdz.html(opts).val(lastCode);
194   - mType.val('service');
195   -
196   - }
197   - });
198   -
199   - //是否烂班
200   - $('[name=destroy]', f).on('click', function () {
201   - if (this.checked) {
202   - $('.destroy_reason_wrap', modal).show();//.find('[name=destroyReason]').attr('required', 'required');
203   - }
204   - else {
205   - $('.destroy_reason_wrap', modal).hide();//.find('[name=destroyReason]').removeAttr('required');
206   - }
207   - });
208   -
209   - $('[name=destroyReason]', f).on('change', function () {
210   - var rem = $('[name=remarks]', f);
211   - rem.val(rem.val() + $(this).val() + ',');
212   - });
213   - });
214   - })();
215   - </script>
216   -</div>
  1 +<div class="uk-modal ct-form-modal ct_move_modal" id="add-sub-task-other-modal">
  2 + <div class="uk-modal-dialog" style="width: 635px;">
  3 + <a href="" class="uk-modal-close uk-close"></a>
  4 + <div class="uk-modal-header">
  5 + <h2>自定义子任务</h2></div>
  6 + <form class="uk-form uk-form-horizontal">
  7 + </form>
  8 + </div>
  9 +
  10 + <script id="sub-task-other-form-temp" type="text/html">
  11 + <input type="hidden" value="{{sch.id}}" name="schedule.id">
  12 + <div class="uk-grid">
  13 + <div class="uk-width-1-1">
  14 + <div class="uk-form-row">
  15 + <label class="uk-form-label">班次类型</label>
  16 + <div class="uk-form-controls">
  17 + <select class="form-control" name="type1" style="width: 65px;">
  18 + <option>正常</option>
  19 + <option>临加</option>
  20 + </select>
  21 + <select class="form-control nt-dictionary" name="type2" data-group=ChildTaskType
  22 + style="width: 126px;;"></select>
  23 + </div>
  24 + </div>
  25 + </div>
  26 + </div>
  27 + <div class="uk-grid">
  28 + <div class="uk-width-1-2">
  29 + <div class="uk-form-row">
  30 + <label class="uk-form-label">起点 </label>
  31 + <div class="uk-form-controls">
  32 + <select name="startStation" required></select>
  33 + </div>
  34 + </div>
  35 + </div>
  36 + <div class="uk-width-1-2">
  37 + <div class="uk-form-row">
  38 + <label class="uk-form-label">终点</label>
  39 + <div class="uk-form-controls">
  40 + <select name="endStation" required></select>
  41 + </div>
  42 + </div>
  43 + </div>
  44 + </div>
  45 +
  46 + <div class="uk-grid">
  47 + <div class="uk-width-1-2">
  48 + <div class="uk-form-row">
  49 + <label class="uk-form-label">里程类型</label>
  50 + <div class="uk-form-controls">
  51 + <select class="form-control nt-dictionary" required name="mileageType"
  52 + data-group="MileageType"></select>
  53 + </div>
  54 + </div>
  55 + </div>
  56 + <div class="uk-width-1-2">
  57 + <div class="uk-form-row">
  58 + <label class="uk-form-label">公里数</label>
  59 + <div class="uk-form-controls">
  60 + <input class="form-control" name="mileage" max=222 data-fv-lessthan-inclusive="false" required>
  61 + </div>
  62 + </div>
  63 + </div>
  64 + </div>
  65 +
  66 + <div class="uk-grid">
  67 + <div class="uk-width-1-2">
  68 + <div class="uk-form-row">
  69 + <label class="uk-form-label">开始时间</label>
  70 + <div class="uk-form-controls">
  71 + <input name="startDate" value="{{sch.fcsj}}" type="time" required>
  72 + </div>
  73 + </div>
  74 + </div>
  75 + <div class="uk-width-1-2">
  76 + <div class="uk-form-row">
  77 + <label class="uk-form-label">结束时间</label>
  78 + <div class="uk-form-controls">
  79 + <input name="endDate" value="{{sch.zdsj}}" type="time" required>
  80 + </div>
  81 + </div>
  82 + </div>
  83 + </div>
  84 +
  85 + <div class="uk-grid">
  86 + <div class="uk-width-1-2">
  87 + <div class="uk-form-row" style="padding-top: 5px;">
  88 + <label class="uk-form-label"></label>
  89 + <div class="uk-form-controls">
  90 + <label>
  91 + <input type="checkbox" value=1 name="destroy" class="i-cbox"> 是否烂班
  92 + </label>
  93 + </div>
  94 + </div>
  95 + </div>
  96 + <div class="uk-width-1-2 destroy_reason_wrap" style="display: none;">
  97 + <div class="uk-form-row">
  98 + <label class="uk-form-label">烂班原因</label>
  99 + <div class="uk-form-controls">
  100 + <select class="form-control" name="destroyReason" required>
  101 + <option value="">请选择...</option>
  102 + {{each adjustExps as exp i}}
  103 + <option value="{{exp}}">{{exp}}</option>
  104 + {{/each}}
  105 + </select>
  106 + </div>
  107 + </div>
  108 + </div>
  109 + </div>
  110 +
  111 + <div class="uk-grid">
  112 + <div class="uk-width-1-1">
  113 + <div class="uk-form-row ct-stacked">
  114 + <div class="uk-form-controls" style="margin-top: 5px;">
  115 + <textarea id="form-s-t" cols="30" rows="5" name="remarks" data-fv-stringlength="true"
  116 + data-fv-stringlength-max="50" placeholder="备注,不超过50个字符"></textarea>
  117 + </div>
  118 + </div>
  119 + </div>
  120 + </div>
  121 + <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;">
  122 + <button type="button" class="uk-button uk-modal-close">取消</button>
  123 + <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存</button>
  124 + </div>
  125 + </script>
  126 +
  127 + <script>
  128 + (function () {
  129 + var modal = '#add-sub-task-other-modal',
  130 + sch, stationRoutes, parks, information;
  131 + var adjustExps = ['保养', '故障', '事故', '路阻', '纠纷', '缺人', '验车', '天气', '支援', '借调', '其他'];
  132 + $(modal).on('init', function (e, data) {
  133 + e.stopPropagation();
  134 + sch = data.sch;
  135 + var formHtml = template('sub-task-other-form-temp', {sch: sch, adjustExps: adjustExps});
  136 + $('form', modal).html(formHtml);
  137 + //字典转换
  138 + dictionaryUtils.transformDom($('.nt-dictionary', modal));
  139 +
  140 + //站点路由
  141 + stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) {
  142 + return a.stationRouteCode - b.stationRouteCode;
  143 + }), 'directions');
  144 + //停车场
  145 + $.get('/basic/parks', function (rs) {
  146 + parks = rs;
  147 + });
  148 + //线路标准
  149 + information = gb_data_basic.getLineInformation(sch.xlBm);
  150 +
  151 + //submit
  152 + var f = $('form', modal).formValidation(gb_form_validation_opts);
  153 + f.on('success.form.fv', function (e) {
  154 + disabled_submit_btn(this);
  155 + e.preventDefault();
  156 + var data = $(this).serializeJSON();
  157 +
  158 + gb_common.$post('/childTask', data, function (rs) {
  159 + notify_succ('子任务添加成功');
  160 + gb_schedule_table.updateSchedule(rs.t);
  161 + $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: rs.t});
  162 + UIkit.modal(modal).hide();
  163 + });
  164 + });
  165 +
  166 + //班次类型
  167 + $('[name=type2]', f).on('change', function () {
  168 + var routes = stationRoutes[sch.xlDir]
  169 + , lastCode = routes[routes.length - 1].stationCode
  170 + , opts = '', park_opts = '';
  171 + //station options
  172 + $.each(routes, function () {
  173 + opts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>'
  174 + });
  175 + //park options
  176 + for (var code in parks)
  177 + park_opts += '<option value="' + code + '">' + parks[code] + '</option>';
  178 +
  179 + var qdz = $('[name=startStation]', f), zdz = $('[name=endStation]', f), mType = $('[name=mileageType]', f);
  180 + switch ($(this).val()) {
  181 + case '3'://出场
  182 + qdz.html(park_opts).val(information.carPark);
  183 + zdz.html(opts);
  184 + mType.val('empty');
  185 + break;
  186 + case '2'://进场
  187 + qdz.html(opts);
  188 + zdz.html(park_opts).val(information.carPark);
  189 + mType.val('empty');
  190 + break;
  191 + default:
  192 + qdz.html(opts);
  193 + zdz.html(opts).val(lastCode);
  194 + mType.val('service');
  195 +
  196 + }
  197 + });
  198 +
  199 + //是否烂班
  200 + $('[name=destroy]', f).on('click', function () {
  201 + if (this.checked) {
  202 + $('.destroy_reason_wrap', modal).show();//.find('[name=destroyReason]').attr('required', 'required');
  203 + }
  204 + else {
  205 + $('.destroy_reason_wrap', modal).hide();//.find('[name=destroyReason]').removeAttr('required');
  206 + }
  207 + });
  208 +
  209 + $('[name=destroyReason]', f).on('change', function () {
  210 + var rem = $('[name=remarks]', f);
  211 + rem.val(rem.val() + $(this).val() + ',');
  212 + });
  213 + });
  214 + })();
  215 + </script>
  216 +</div>
... ...