Commit 63abccb23d37c8cd0f3afe9d4b3f188d44deb142

Authored by 潘钊
1 parent 3a8e56b9

update...

src/main/java/com/bsth/data/Station2ParkBuffer.java
... ... @@ -2,6 +2,7 @@ package com.bsth.data;
2 2  
3 3 import com.bsth.common.ResponseCode;
4 4 import com.bsth.entity.realcontrol.ChildTaskPlan;
  5 +import com.bsth.entity.realcontrol.ScheduleRealInfo;
5 6 import com.bsth.entity.realcontrol.StationToPark;
6 7 import com.bsth.repository.realcontrol.StationToParkRepository;
7 8 import com.bsth.util.Arith;
... ... @@ -101,6 +102,47 @@ public class Station2ParkBuffer implements CommandLineRunner {
101 102 }
102 103 }
103 104  
  105 + public static void put(ScheduleRealInfo sch){
  106 + try{
  107 + String type = sch.getBcType();
  108 + String lineCode = sch.getXlBm(), sName, eName;
  109 +
  110 + if (type.equals("in")) {
  111 + sName = sch.getQdzName();
  112 + eName = sch.getZdzName();
  113 + } else if (type.equals("out")) {
  114 + eName = sch.getQdzName();
  115 + sName = sch.getZdzName();
  116 + } else
  117 + return;
  118 +
  119 + long dt = sch.getZdsjT() - sch.getDfsjT();
  120 + Float time = Float.parseFloat(String.valueOf(Arith.div(Arith.div(dt, 1000), 60)));
  121 + Float mileage = Float.parseFloat(sch.getJhlc().toString());
  122 +
  123 + StationToPark stp = get(lineCode, sName, eName);
  124 + if (stp == null) {
  125 + stp = new StationToPark();
  126 + stp.setLineCode(lineCode);
  127 + stp.setStationName(sName);
  128 + stp.setParkName(eName);
  129 + listMultimap.put(lineCode, stp);
  130 + }
  131 +
  132 + if (type.equals("in")) {
  133 + stp.setTime1(time);
  134 + stp.setMileage1(mileage);
  135 + } else {
  136 + stp.setTime2(time);
  137 + stp.setMileage2(mileage);
  138 + }
  139 +
  140 + pstBuff.add(stp);
  141 + }catch (Exception e){
  142 + log.error("", e);
  143 + }
  144 + }
  145 +
104 146 public static Float calcMinute(ChildTaskPlan ctask) {
105 147 long t = 0;
106 148  
... ...
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
... ... @@ -944,8 +944,11 @@ public class DayOfSchedule {
944 944 ScheduleRealInfo sch = schAttrCalculator.calcCurrentExecSch(list);
945 945 carExecutePlanMap.put(nbbm, sch);
946 946  
947   - if(sch==null)
  947 + if(sch==null){
  948 + logger.info("车辆" + nbbm + "无可执行任务,切换至非营运状态");
  949 + DirectivePushQueue.put6003(nbbm, 1, Integer.parseInt(sch.getXlDir()), null, "系统");
948 950 return;
  951 + }
949 952 try {
950 953 GpsEntity gps = gpsRealData.get(BasicData.deviceId2NbbmMap.inverse().get(nbbm));
951 954 if(gps != null && gps.isOnline()){
... ...
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
... ... @@ -10,6 +10,7 @@ import com.bsth.controller.realcontrol.dto.DfsjChange;
10 10 import com.bsth.controller.realcontrol.dto.LpData;
11 11 import com.bsth.data.BasicData;
12 12 import com.bsth.data.LineConfigData;
  13 +import com.bsth.data.Station2ParkBuffer;
13 14 import com.bsth.data.schedule.DayOfSchedule;
14 15 import com.bsth.data.schedule.SchAttrCalculator;
15 16 import com.bsth.data.schedule.ScheduleComparator;
... ... @@ -590,6 +591,8 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf
590 591 //重新计算车辆当前执行班次
591 592 dayOfSchedule.reCalcExecPlan(t.getClZbh());
592 593  
  594 + //记录站到场历时数据
  595 + Station2ParkBuffer.put(t);
593 596  
594 597 rs.put("ts", ts);
595 598 rs.put("t", t);
... ...
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/add_temp_sch.html
... ... @@ -30,7 +30,7 @@
30 30 <div class="uk-form-row">
31 31 <label class="uk-form-label">班次类型</label>
32 32 <div class="uk-form-controls">
33   - <select class="form-control nt-dictionary" required name="bcType" data-code="{{bcType}}"
  33 + <select class="form-control nt-dictionary" name="bcType" data-code="{{bcType}}"
34 34 data-group=ScheduleType></select>
35 35 </div>
36 36 </div>
... ... @@ -52,7 +52,7 @@
52 52 <div class="uk-form-row">
53 53 <label class="uk-form-label">起点站</label>
54 54 <div class="uk-form-controls">
55   - <select name="qdzCode" required>
  55 + <select name="qdzCode" >
56 56 </select>
57 57 </div>
58 58 </div>
... ... @@ -61,7 +61,7 @@
61 61 <div class="uk-form-row">
62 62 <label class="uk-form-label">终点站</label>
63 63 <div class="uk-form-controls">
64   - <select name="zdzCode" required>
  64 + <select name="zdzCode" >
65 65 </select>
66 66 </div>
67 67 </div>
... ... @@ -156,7 +156,7 @@
156 156 <div class="uk-form-row">
157 157 <label class="uk-form-label">班次类型</label>
158 158 <div class="uk-form-controls">
159   - <select class="form-control nt-dictionary" name="bcType" required data-code="{{bcType}}"
  159 + <select class="form-control nt-dictionary" name="bcType" data-code="{{bcType}}"
160 160 data-group=ScheduleType></select>
161 161 </div>
162 162 </div>
... ... @@ -178,7 +178,7 @@
178 178 <div class="uk-form-row">
179 179 <label class="uk-form-label">起点站</label>
180 180 <div class="uk-form-controls">
181   - <select name="qdzCode" required>
  181 + <select name="qdzCode" >
182 182 </select>
183 183 </div>
184 184 </div>
... ... @@ -187,7 +187,7 @@
187 187 <div class="uk-form-row">
188 188 <label class="uk-form-label">终点站</label>
189 189 <div class="uk-form-controls">
190   - <select name="zdzCode" required>
  190 + <select name="zdzCode" >
191 191 </select>
192 192 </div>
193 193 </div>
... ... @@ -274,7 +274,7 @@
274 274 <div class="uk-form-row">
275 275 <label class="uk-form-label">班次类型</label>
276 276 <div class="uk-form-controls">
277   - <select class="form-control nt-dictionary" name="bcType" required data-code="{{bcType}}"
  277 + <select class="form-control nt-dictionary" name="bcType" data-code="{{bcType}}"
278 278 data-group=ScheduleType></select>
279 279 </div>
280 280 </div>
... ... @@ -296,7 +296,7 @@
296 296 <div class="uk-form-row">
297 297 <label class="uk-form-label">起点站</label>
298 298 <div class="uk-form-controls">
299   - <select name="qdzCode" required>
  299 + <select name="qdzCode" >
300 300 </select>
301 301 </div>
302 302 </div>
... ... @@ -305,7 +305,7 @@
305 305 <div class="uk-form-row">
306 306 <label class="uk-form-label">终点站</label>
307 307 <div class="uk-form-controls">
308   - <select name="zdzCode" required>
  308 + <select name="zdzCode" >
309 309 </select>
310 310 </div>
311 311 </div>
... ... @@ -425,7 +425,7 @@
425 425 <div class="uk-form-row">
426 426 <label class="uk-form-label">起点站</label>
427 427 <div class="uk-form-controls">
428   - <select name="qdzCode" required>
  428 + <select name="qdzCode" >
429 429 </select>
430 430 </div>
431 431 </div>
... ... @@ -434,7 +434,7 @@
434 434 <div class="uk-form-row">
435 435 <label class="uk-form-label">终点站</label>
436 436 <div class="uk-form-controls">
437   - <select name="zdzCode" required>
  437 + <select name="zdzCode" >
438 438 </select>
439 439 </div>
440 440 </div>
... ... @@ -524,11 +524,14 @@
524 524 <script>
525 525 (function () {
526 526 var modal = '#schedule-addsch-modal',
527   - sch, stationRoutes, parks, information,carsArray;
  527 + sch, stationRoutes, parks, information,carsArray, st_park_data;
528 528  
529 529 $(modal).on('init', function (e, data) {
530 530 e.stopPropagation();
531 531 sch = data.sch;
  532 +
  533 + //站到场数据
  534 + st_park_data = gb_data_basic.get_stat_park_data()[sch.xlBm];
532 535 //站点路由
533 536 stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) {
534 537 return a.stationRouteCode - b.stationRouteCode;
... ... @@ -537,6 +540,8 @@
537 540 parks = gb_data_basic.simpleParksArray();
538 541 //线路标准
539 542 information = gb_data_basic.getLineInformation(sch.xlBm);
  543 + //停车场排序,常用的放前面
  544 + parks = sort_parks(parks, information, st_park_data);
540 545 //车辆信息
541 546 carsArray = gb_data_basic.carsArray();
542 547  
... ... @@ -579,8 +584,10 @@
579 584 opts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>'
580 585 });
581 586 //park options
582   - for (var code in parks)
583   - park_opts += '<option value="' + code + '">' + parks[code] + '</option>';
  587 + for(var i=0,p;p=parks[i++];)
  588 + park_opts += '<option value="' + p.code + '">' + p.name + '</option>';
  589 + /*for (var code in parks)
  590 + park_opts += '<option value="' + code + '">' + parks[code] + '</option>';*/
584 591  
585 592 var qdz = $('[name=qdzCode]', f), zdz = $('[name=zdzCode]', f);
586 593 var time, mileage;
... ... @@ -922,8 +929,10 @@
922 929  
923 930 //park options
924 931 var park_opts;
925   - for (var code in parks)
926   - park_opts += '<option value="' + code + '">' + parks[code] + '</option>';
  932 + for(var i=0,p;p=parks[i++];)
  933 + park_opts += '<option value="' + p.code + '">' + p.name + '</option>';
  934 + /*for (var code in parks)
  935 + park_opts += '<option value="' + code + '">' + parks[code] + '</option>';*/
927 936 $('[name=qdzCode]', f).html(park_opts);
928 937 $('[name=zdzCode]', f).html(park_opts);
929 938 if(sch.bcType=='in'){
... ... @@ -981,6 +990,44 @@
981 990 }
982 991 }
983 992  
  993 +
  994 + /**
  995 + * 停车场排序
  996 + * @param parks 停车场 code 2 name
  997 + * @param information 线路标准
  998 + * @param st_park_data 站到场
  999 + */
  1000 + function sort_parks(parks, information, st_park_data) {
  1001 + var array = [], names=[];
  1002 + for(var code in parks){
  1003 + array.push({code: code, name: parks[code]});
  1004 + }
  1005 +
  1006 + if(st_park_data && st_park_data.length > 0){
  1007 + $.each(st_park_data, function () {
  1008 + names.push(this.parkName);
  1009 + });
  1010 + }
  1011 +
  1012 + //debugger
  1013 + array.sort(function (a, b) {
  1014 + if(a.code==information.carPark)
  1015 + return -1;
  1016 + if(b.code==information.carPark)
  1017 + return 1;
  1018 +
  1019 + var ai = names.indexOf(a.name),
  1020 + bi = names.indexOf(b.name);
  1021 +
  1022 + if(ai!=-1 && bi==-1)
  1023 + return -1;
  1024 + else if(ai==-1 && bi!=-1)
  1025 + return 1;
  1026 + else
  1027 + return a.name.localeCompare(b.name);
  1028 + });
  1029 + return array;
  1030 + }
984 1031 })();
985 1032 </script>
986 1033 </div>
... ...
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/lj_zrw.html
... ... @@ -303,10 +303,10 @@
303 303 var xlBm = $('[name=lineSelect]', f).val();
304 304 var xlName = $('[name=lineSelect]', f).find("option:selected").text();
305 305 var lpName = $('[name=lpName]', f).val();
306   - sch = {xlBm: xlBm,xlName: xlName, lpName: lpName};
  306 + sch = {xlBm: xlBm,xlName: xlName, lpName: lpName, zdsj: moment().format('HH:mm')};
307 307 }
308 308  
309   - open_modal(folder + '/add_temp_sch.html', {
  309 + open_modal(folder + '/temp_sch/main.html', {
310 310 sch: sch
311 311 }, modal_opts);
312 312 };
... ...
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/add_temp_sch_old.html renamed to src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/temp_sch/add_normal.html
1   -<div class="uk-modal ct-form-modal ct_move_modal" id="schedule-addsch-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-addsch-form-temp" type="text/html">
11   - <div class="uk-grid">
12   - <div class="uk-width-1-2">
13   - <div class="uk-form-row">
14   - <label class="uk-form-label">班次类型</label>
15   - <div class="uk-form-controls">
16   - <select class="form-control nt-dictionary" name="bcType" data-code="{{bcType}}"
17   - data-group=ScheduleType></select>
18   - </div>
19   - </div>
20   - </div>
21   - <div class="uk-width-1-2">
22   - <div class="uk-form-row">
23   - <label class="uk-form-label">上下行</label>
24   - <div class="uk-form-controls">
25   - <select name="xlDir">
26   - <option value="0">上行</option>
27   - <option value="1">下行</option>
28   - </select>
29   - </div>
30   - </div>
31   - </div>
32   - </div>
33   - <div class="uk-grid">
34   - <div class="uk-width-1-2">
35   - <div class="uk-form-row">
36   - <label class="uk-form-label">起点站</label>
37   - <div class="uk-form-controls">
38   - <select name="qdzCode" required>
39   - </select>
40   - </div>
41   - </div>
42   - </div>
43   - <div class="uk-width-1-2">
44   - <div class="uk-form-row">
45   - <label class="uk-form-label">终点站</label>
46   - <div class="uk-form-controls">
47   - <select name="zdzCode" required>
48   - </select>
49   - </div>
50   - </div>
51   - </div>
52   - </div>
53   - <div class="uk-grid">
54   - <div class="uk-width-1-2">
55   - <div class="uk-form-row">
56   - <label class="uk-form-label">开始时间</label>
57   - <div class="uk-form-controls">
58   - <input type="time" value="{{zdsj}}" name="fcsj" required>
59   - </div>
60   - </div>
61   - </div>
62   - <div class="uk-width-1-2">
63   - <div class="uk-form-row">
64   - <label class="uk-form-label">结束时间</label>
65   - <div class="uk-form-controls">
66   - <input type="time" name="zdsj" required>
67   - </div>
68   - </div>
69   - </div>
70   - </div>
71   - <div class="uk-grid">
72   - <div class="uk-width-1-2">
73   - <div class="uk-form-row">
74   - <label class="uk-form-label">车辆</label>
75   - <div class="uk-form-controls">
76   - <div class="uk-autocomplete uk-form car-autocom">
77   - <input type="text" value="{{clZbh}}" name="clZbh" required>
78   - </div>
79   - </div>
80   - </div>
81   - </div>
82   - <div class="uk-width-1-2">
83   - <div class="uk-form-row">
84   - <label class="uk-form-label">里程</label>
85   - <div class="uk-form-controls">
86   - <input type="text" name="jhlc" value="{{jhlc}}" max=222 data-fv-lessthan-inclusive="false"
87   - required>
88   - </div>
89   - </div>
90   - </div>
91   - </div>
92   - <div class="uk-grid">
93   - <div class="uk-width-1-2">
94   - <div class="uk-form-row">
95   - <label class="uk-form-label">驾驶员
96   - <!--<i class="uk-icon-question-circle" data-uk-tooltip title="如果有驾驶员未提示,请至后台“基础信息 -人员信息”里纠正该员工的“工种”类别 "></i>--></label>
97   - <div class="uk-form-controls">
98   - <div class="uk-autocomplete uk-form jsy-autocom">
99   - <input type="text" value="{{jGh}}/{{jName}}" name="jsy" required>
100   - </div>
101   - </div>
102   - </div>
103   - </div>
104   - <div class="uk-width-1-2">
105   - <div class="uk-form-row">
106   - <label class="uk-form-label">售票员</label>
107   - <div class="uk-form-controls">
108   - <div class="uk-autocomplete uk-form spy-autocom">
109   - <input type="text" name="spy" value="{{sGh}}/{{sName}}">
110   - </div>
111   - </div>
112   - </div>
113   - </div>
114   - </div>
115   - <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;">
116   - <button type="button" class="uk-button uk-modal-close">取消</button>
117   - <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存</button>
118   - </div>
119   - </script>
120   -
121   - <script>
122   - (function () {
123   - var modal = '#schedule-addsch-modal',
124   - sch, stationRoutes, parks, information;
125   -
126   - var normalInfo = [];
127   - $(modal).on('init', function (e, data) {
128   - e.stopPropagation();
129   - sch = data.sch;
130   - //normal 班次里程和耗时
131   - var list = gb_common.get_vals(gb_schedule_table.findScheduleByLine(sch.xlBm));
132   - var upPlan = getNormalSch(list, 0)
133   - , downPlan = getNormalSch(list, 1);
134   - normalInfo[0] = {time: upPlan.bcsj, mileage: upPlan.jhlc};
135   - normalInfo[1] = {time: downPlan.bcsj, mileage: downPlan.jhlc};
136   -
137   -
138   - var formHtml = template('schedule-addsch-form-temp', sch);
139   - $('form', modal).html(formHtml);
140   - //字典转换
141   - dictionaryUtils.transformDom($('.nt-dictionary', modal));
142   -
143   - //----------- Autocomplete --------------
144   - $.get('/basic/cars', function (rs) {
145   - //车辆
146   - gb_common.carAutocomplete($('.car-autocom', modal), rs);
147   - });
148   - //驾驶员
149   - gb_common.personAutocomplete($('.jsy-autocom', modal));
150   -
151   - //售票员
152   - gb_common.personAutocomplete($('.spy-autocom', modal));
153   -
154   - //站点路由
155   - stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) {
156   - return a.stationRouteCode - b.stationRouteCode;
157   - }), 'directions');
158   - //停车场
159   - $.get('/basic/parks', function (rs) {
160   - parks = rs;
161   - });
162   - //线路标准
163   - information = gb_data_basic.getLineInformation(sch.xlBm);
164   -
165   - //submit
166   - var f = $('form', modal).formValidation(gb_form_validation_opts);
167   - f.on('success.form.fv', function (e) {
168   - disabled_submit_btn(this);
169   - e.preventDefault();
170   - var data = $(this).serializeJSON();
171   - data.xlBm = sch.xlBm;
172   - data.xlName = sch.xlName;
173   - data.lpName = sch.lpName;
174   - //拆分驾驶员工号和姓名
175   - data.jGh = data.jsy.split('/')[0];
176   - data.jName = data.jsy.split('/')[1];
177   - delete data.jsy;
178   - //拆分售票员工号和姓名
179   - if (data.sGh != null) {
180   - data.sGh = data.spy.split('/')[0];
181   - data.sName = data.spy.split('/')[1];
182   - delete data.spy;
183   - }
184   -
185   - //公司信息
186   - var line = gb_data_basic.findLineByCodes([data.xlBm]);
187   - if(line && line.length > 0){
188   - line = line[0];
189   - data.gsBm = line.company;
190   - data.fgsBm = line.brancheCompany;
191   - }
192   -
193   - gb_common.$post('/realSchedule', data, function (rs) {
194   - //插入
195   - gb_schedule_table.insertSchedule(rs.t, rs.ts);
196   - $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: rs.t});
197   - UIkit.modal(modal).hide();
198   - notify_succ('新增临加班次成功');
199   - });
200   - });
201   -
202   - //班次类型 和 上下行切换
203   - $('[name=bcType],[name=xlDir]', f).on('change', function () {
204   - var bcType_e = $('[name=bcType]', f)
205   - , xlDir_e = $('[name=xlDir]', f);
206   -
207   - var routes = stationRoutes[xlDir_e.val()]
208   - , lastCode = routes[routes.length - 1].stationCode
209   - , opts = '', park_opts = '';
210   - //station options
211   - $.each(routes, function () {
212   - opts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>'
213   - });
214   - //park options
215   - for (var code in parks)
216   - park_opts += '<option value="' + code + '">' + parks[code] + '</option>';
217   -
218   - var qdz = $('[name=qdzCode]', f), zdz = $('[name=zdzCode]', f);
219   - var time, mileage;
220   - switch (bcType_e.val()) {
221   - case 'out':
222   - qdz.html(park_opts).val(information.carPark);
223   - zdz.html(opts);
224   - //出场结束时间
225   - time = xlDir_e.val() == 0 ? information.upOutTimer : information.downOutTimer;
226   - mileage = xlDir_e.val() == 0 ? information.upOutMileage : information.downOutMileage;
227   - break;
228   - case 'in':
229   - qdz.html(opts);
230   - zdz.html(park_opts).val(information.carPark);
231   - //进场结束时间
232   - time = xlDir_e.val() == 0 ? information.upInTimer : information.downInTimer;
233   - mileage = xlDir_e.val() == 0 ? information.upInMileage : information.downInMileage;
234   - break;
235   - default:
236   - qdz.html(opts);
237   - zdz.html(opts).val(lastCode);
238   - time = xlDir_e.val() == 0?normalInfo[0].time:normalInfo[1].time;
239   - mileage = xlDir_e.val() == 0?normalInfo[0].mileage:normalInfo[1].mileage;
240   - }
241   -
242   - setEndTime(time);
243   - $('[name=jhlc]', f).val(mileage);
244   - }).trigger('change');
245   -
246   -
247   - function setEndTime(diff) {
248   - var et = moment($('[name=fcsj]', f).val(), 'HH:mm').add(diff, 'minutes').format('HH:mm');
249   - $('[name=zdsj]', f).val(et);
250   - }
251   - });
252   -
253   - function getNormalSch(list, updown) {
254   - var sch;
255   - $.each(list, function () {
256   - if (this.bcType == 'normal' && this.xlDir == updown) {
257   - sch = this;
258   - return false;
259   - }
260   - });
261   -
262   - return sch;
263   - }
264   - })();
265   - </script>
266   -</div>
  1 +<!-- 临加班次form -->
  2 +<script id="add_normal_sch-form-temp" type="text/html">
  3 + <form class="uk-form uk-form-horizontal add-sch-form">
  4 + <div class="uk-grid">
  5 + <div class="uk-width-1-2">
  6 + <div class="uk-form-row">
  7 + <label class="uk-form-label">班次类型</label>
  8 + <div class="uk-form-controls">
  9 + <select class="form-control nt-dictionary" name="bcType" data-code="{{bcType}}"
  10 + data-group=ScheduleType></select>
  11 + </div>
  12 + </div>
  13 + </div>
  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 + <select name="xlDir">
  19 + <option value="0">上行</option>
  20 + <option value="1">下行</option>
  21 + </select>
  22 + </div>
  23 + </div>
  24 + </div>
  25 + </div>
  26 + <div class="uk-grid">
  27 + <div class="uk-width-1-2">
  28 + <div class="uk-form-row">
  29 + <label class="uk-form-label">起点站</label>
  30 + <div class="uk-form-controls">
  31 + <select name="qdzCode">
  32 + </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="zdzCode">
  41 + </select>
  42 + </div>
  43 + </div>
  44 + </div>
  45 + </div>
  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 + <input type="time" value="{{zdsjActual==null?zdsj:zdsjActual}}" name="fcsj" required>
  52 + </div>
  53 + </div>
  54 + </div>
  55 + <div class="uk-width-1-2">
  56 + <div class="uk-form-row">
  57 + <label class="uk-form-label">结束时间</label>
  58 + <div class="uk-form-controls">
  59 + <input type="time" name="zdsj" required>
  60 + </div>
  61 + </div>
  62 + </div>
  63 + </div>
  64 + <div class="uk-grid">
  65 + <div class="uk-width-1-2">
  66 + <div class="uk-form-row">
  67 + <label class="uk-form-label">车辆</label>
  68 + <div class="uk-form-controls">
  69 + <div class="uk-autocomplete uk-form car-autocom">
  70 + <input type="text" value="{{clZbh}}" name="clZbh" required>
  71 + </div>
  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 type="text" name="jhlc" value="{{jhlc}}" max=222 data-fv-lessthan-inclusive="false"
  80 + required>
  81 + </div>
  82 + </div>
  83 + </div>
  84 + </div>
  85 + <div class="uk-grid">
  86 + <div class="uk-width-1-2">
  87 + <div class="uk-form-row">
  88 + <label class="uk-form-label">驾驶员</label>
  89 + <div class="uk-form-controls">
  90 + <div class="uk-autocomplete uk-form jsy-autocom">
  91 + <input type="text" value="{{jGh}}/{{jName}}" name="jsy" required>
  92 + </div>
  93 + </div>
  94 + </div>
  95 + </div>
  96 + <div class="uk-width-1-2">
  97 + <div class="uk-form-row">
  98 + <label class="uk-form-label">售票员</label>
  99 + <div class="uk-form-controls">
  100 + <div class="uk-autocomplete uk-form spy-autocom">
  101 + <input type="text" name="spy" value="{{sGh}}/{{sName}}">
  102 + </div>
  103 + </div>
  104 + </div>
  105 + </div>
  106 + </div>
  107 + <div class="uk-grid">
  108 + <div class="uk-width-1-1">
  109 + <div class="uk-form-row">
  110 + <label class="uk-form-label">备注</label>
  111 + <div class="uk-form-controls">
  112 + <div class="uk-autocomplete uk-form remarks-autocom">
  113 + <input type="text" name="remarks">
  114 + </div>
  115 + </div>
  116 + </div>
  117 + </div>
  118 + </div>
  119 + <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;">
  120 + <span class="ct_line_lp_badge"></span>
  121 + <button type="button" class="uk-button uk-modal-close">取消</button>
  122 + <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存
  123 + </button>
  124 + </div>
  125 + </form>
  126 +</script>
  127 +<script>
  128 + (function () {
  129 + var wrap = '#schedule-addsch-modal .normalCont', sch, nf, submitFun;
  130 +
  131 + $(wrap).on('init', function (e, data) {
  132 + e.stopPropagation();
  133 + sch = data.sch;
  134 + submitFun = data.submitFun;
  135 +
  136 + nf = addForm();
  137 + //提交
  138 + nf.on('success.form.fv', function (e) {
  139 + e.preventDefault();
  140 +
  141 + disabled_submit_btn(nf);
  142 + var data = nf.serializeJSON();
  143 + submitFun(data, function (rs) {
  144 + //前端数据更新
  145 + gb_schedule_table.insertSchedule(rs.t, rs.ts);
  146 + $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: rs.t});
  147 + try {
  148 + if(rs.t.bcType=='in' || rs.t.bcType=='out')
  149 + gb_data_basic.reload_stat_park_data();
  150 + }catch (e){
  151 + console.log(e);}
  152 + UIkit.modal('#schedule-addsch-modal').hide();
  153 + });
  154 + });
  155 + $('.ct_line_lp_badge', nf).html(sch.xlName + ',&nbsp;'+sch.lpName);
  156 + });
  157 +
  158 + function addForm() {
  159 + var htmlStr = template('add_normal_sch-form-temp', sch);
  160 + var f = $(htmlStr);
  161 + $(wrap).append(f);
  162 + //字典转换
  163 + dictionaryUtils.transformDom($('.nt-dictionary', f));
  164 + //validation
  165 + f.formValidation({framework: 'uikit', locale: 'zh_CN'});
  166 + //autocomp
  167 + f.trigger('init-autoCom');
  168 +
  169 + $f('bcType', f).trigger('change');
  170 + return f;
  171 + }
  172 +
  173 + function $f(name, f) {
  174 + return $('[name=' + name + ']', f);
  175 + }
  176 + })();
  177 +</script>
267 178 \ No newline at end of file
... ...
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/temp_sch/add_park_to_park.html 0 → 100644
  1 +<!-- 临加场到场班次form -->
  2 +<script id="add_park_to_park_sch-form-temp" type="text/html">
  3 + <form class="uk-form uk-form-horizontal">
  4 + <div class="uk-grid">
  5 + <div class="uk-width-1-2">
  6 + <div class="uk-form-row">
  7 + <label class="uk-form-label">班次类型</label>
  8 + <div class="uk-form-controls">
  9 + <select class="form-control" name="bcType">
  10 + <option value="in">进场</option>
  11 + </select>
  12 + </div>
  13 + </div>
  14 + </div>
  15 + <div class="uk-width-1-2">
  16 + <div class="uk-form-row">
  17 + <label class="uk-form-label">上下行</label>
  18 + <div class="uk-form-controls">
  19 + <select name="xlDir">
  20 + <option value="0">上行</option>
  21 + <option value="1">下行</option>
  22 + </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="qdzCode">
  33 + </select>
  34 + </div>
  35 + </div>
  36 + </div>
  37 + <div class="uk-width-1-2">
  38 + <div class="uk-form-row">
  39 + <label class="uk-form-label">终点站</label>
  40 + <div class="uk-form-controls">
  41 + <select name="zdzCode">
  42 + </select>
  43 + </div>
  44 + </div>
  45 + </div>
  46 + </div>
  47 + <div class="uk-grid">
  48 + <div class="uk-width-1-2">
  49 + <div class="uk-form-row">
  50 + <label class="uk-form-label">开始时间</label>
  51 + <div class="uk-form-controls">
  52 + <input type="time" value="{{zdsjActual==null?zdsj:zdsjActual}}" name="fcsj" required>
  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 type="time" name="zdsj" required>
  61 + </div>
  62 + </div>
  63 + </div>
  64 + </div>
  65 + <div class="uk-grid">
  66 + <div class="uk-width-1-2">
  67 + <div class="uk-form-row">
  68 + <label class="uk-form-label">车辆</label>
  69 + <div class="uk-form-controls">
  70 + <div class="uk-autocomplete uk-form car-autocom">
  71 + <input type="text" value="{{clZbh}}" name="clZbh" required>
  72 + </div>
  73 + </div>
  74 + </div>
  75 + </div>
  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" name="jhlc" value="{{jhlc}}" max=222 data-fv-lessthan-inclusive="false"
  81 + required>
  82 + </div>
  83 + </div>
  84 + </div>
  85 + </div>
  86 + <div class="uk-grid">
  87 + <div class="uk-width-1-2">
  88 + <div class="uk-form-row">
  89 + <label class="uk-form-label">驾驶员</label>
  90 + <div class="uk-form-controls">
  91 + <div class="uk-autocomplete uk-form jsy-autocom">
  92 + <input type="text" value="{{jGh}}/{{jName}}" name="jsy" required>
  93 + </div>
  94 + </div>
  95 + </div>
  96 + </div>
  97 + <div class="uk-width-1-2">
  98 + <div class="uk-form-row">
  99 + <label class="uk-form-label">售票员</label>
  100 + <div class="uk-form-controls">
  101 + <div class="uk-autocomplete uk-form spy-autocom">
  102 + <input type="text" name="spy" value="{{sGh}}/{{sName}}">
  103 + </div>
  104 + </div>
  105 + </div>
  106 + </div>
  107 + </div>
  108 + <div class="uk-grid">
  109 + <div class="uk-width-1-1">
  110 + <div class="uk-form-row">
  111 + <label class="uk-form-label">备注</label>
  112 + <div class="uk-form-controls">
  113 + <div class="uk-autocomplete uk-form remarks-autocom">
  114 + <input type="text" name="remarks">
  115 + </div>
  116 + </div>
  117 + </div>
  118 + </div>
  119 + </div>
  120 + <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;">
  121 + <span class="ct_line_lp_badge"></span>
  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;保存
  124 + </button>
  125 + </div>
  126 + </form>
  127 +</script>
  128 +
  129 +<script>
  130 + (function () {
  131 + var wrap = '#schedule-addsch-modal .parkToParkCont', sch, nf, submitFun,parks,carsArray;
  132 +
  133 + $(wrap).on('init', function (e, data) {
  134 + e.stopPropagation();
  135 + sch = data.sch;
  136 + submitFun = data.submitFun;
  137 + parks = data.parks;
  138 + carsArray = data.carsArray;
  139 +
  140 + nf = addForm();
  141 + //提交
  142 + nf.on('success.form.fv', function (e) {
  143 + e.preventDefault();
  144 +
  145 + disabled_submit_btn(nf);
  146 + var data = nf.serializeJSON();
  147 + submitFun(data, function (rs) {
  148 + //前端数据更新
  149 + gb_schedule_table.insertSchedule(rs.t, rs.ts);
  150 + $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: rs.t});
  151 + try {
  152 + if(rs.t.bcType=='in' || rs.t.bcType=='out')
  153 + gb_data_basic.reload_stat_park_data();
  154 + }catch (e){
  155 + console.log(e);}
  156 + UIkit.modal('#schedule-addsch-modal').hide();
  157 + });
  158 + });
  159 + $('.ct_line_lp_badge', nf).html(sch.xlName + ',&nbsp;'+sch.lpName);
  160 + $f('zdzCode',nf).trigger('change');
  161 + });
  162 +
  163 + function addForm() {
  164 + var htmlStr = template('add_park_to_park_sch-form-temp', sch);
  165 + var f = $(htmlStr);
  166 + $(wrap).append(f);
  167 + //字典转换
  168 + dictionaryUtils.transformDom($('.nt-dictionary', f));
  169 + //validation
  170 + f.formValidation({framework: 'uikit', locale: 'zh_CN'});
  171 + //autocomp
  172 + initAutoComp(f);
  173 +
  174 + //起终点都是停车场
  175 + var park_opts;
  176 + for(var i=0,p;p=parks[i++];)
  177 + park_opts += '<option value="' + p.code + '">' + p.name + '</option>';
  178 + $f('qdzCode', f).html(park_opts);
  179 + $f('zdzCode', f).html(park_opts);
  180 +
  181 + if(sch.bcType=='in'){
  182 + $f('qdzCode', f).val(sch.zdzCode);
  183 + //选中的也是场到场班次
  184 + if(gb_data_basic.getCarparkByCode(sch.qdzCode) != null){
  185 + //默认做返程
  186 + $f('zdzCode', f).val(sch.qdzCode);
  187 + $f('remarks', f).val(sch.remarks);
  188 + $f('jhlc', f).val(sch.jhlc);
  189 + //时间
  190 + var zdsj = moment(sch.zdsj, 'HH:mm').add('minutes', sch.bcsj).format('HH:mm');
  191 + $f('zdsj', f).val(zdsj);
  192 + }
  193 + }
  194 + return f;
  195 + }
  196 +
  197 + function $f(name, f) {
  198 + return $('[name=' + name + ']', f);
  199 + }
  200 +
  201 + function initAutoComp(f) {
  202 + //车辆
  203 + if(carsArray)
  204 + gb_common.carAutocomplete($('.car-autocom', f), carsArray);
  205 + //驾驶员
  206 + gb_common.personAutocomplete($('.jsy-autocom', f));
  207 + //售票员
  208 + gb_common.personAutocomplete($('.spy-autocom', f));
  209 + //备注补全
  210 + gb_common.remarksAutocomplete($('.remarks-autocom', f));
  211 + }
  212 +
  213 + })();
  214 +</script>
0 215 \ No newline at end of file
... ...
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/temp_sch/add_two_way.html 0 → 100644
  1 +<!-- 线路上往返临加班次 -->
  2 +<script id="add_toAndFro_sch-form-temp" type="text/html">
  3 + <form class="uk-form uk-form-horizontal add-sch-form one_form">
  4 + <div class="uk-grid">
  5 + <div class="uk-width-1-2">
  6 + <div class="uk-form-row">
  7 + <label class="uk-form-label">班次类型</label>
  8 + <div class="uk-form-controls">
  9 + <select class="form-control nt-dictionary" name="bcType" data-code="{{bcType}}"
  10 + data-group=ScheduleType></select>
  11 + </div>
  12 + </div>
  13 + </div>
  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 + <select name="xlDir">
  19 + <option value="0">上行</option>
  20 + <option value="1">下行</option>
  21 + </select>
  22 + </div>
  23 + </div>
  24 + </div>
  25 + </div>
  26 + <div class="uk-grid">
  27 + <div class="uk-width-1-2">
  28 + <div class="uk-form-row">
  29 + <label class="uk-form-label">起点站</label>
  30 + <div class="uk-form-controls">
  31 + <select name="qdzCode" >
  32 + </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="zdzCode" >
  41 + </select>
  42 + </div>
  43 + </div>
  44 + </div>
  45 + </div>
  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 + <input type="time" value="{{zdsj}}" name="fcsj" required>
  52 + </div>
  53 + </div>
  54 + </div>
  55 + <div class="uk-width-1-2">
  56 + <div class="uk-form-row">
  57 + <label class="uk-form-label">结束时间</label>
  58 + <div class="uk-form-controls">
  59 + <input type="time" name="zdsj" required>
  60 + </div>
  61 + </div>
  62 + </div>
  63 + </div>
  64 + <div class="uk-grid">
  65 + <div class="uk-width-1-2">
  66 + <div class="uk-form-row">
  67 + <label class="uk-form-label">车辆</label>
  68 + <div class="uk-form-controls">
  69 + <div class="uk-autocomplete uk-form car-autocom">
  70 + <input type="text" value="{{clZbh}}" name="clZbh" required>
  71 + </div>
  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 type="text" name="jhlc" value="{{jhlc}}" max=222 data-fv-lessthan-inclusive="false"
  80 + required>
  81 + </div>
  82 + </div>
  83 + </div>
  84 + </div>
  85 + <div class="uk-grid">
  86 + <div class="uk-width-1-2">
  87 + <div class="uk-form-row">
  88 + <label class="uk-form-label">驾驶员</label>
  89 + <div class="uk-form-controls">
  90 + <div class="uk-autocomplete uk-form jsy-autocom">
  91 + <input type="text" value="{{jGh}}/{{jName}}" name="jsy" required>
  92 + </div>
  93 + </div>
  94 + </div>
  95 + </div>
  96 + <div class="uk-width-1-2">
  97 + <div class="uk-form-row">
  98 + <label class="uk-form-label">售票员</label>
  99 + <div class="uk-form-controls">
  100 + <div class="uk-autocomplete uk-form spy-autocom">
  101 + <input type="text" name="spy" value="{{sGh}}/{{sName}}">
  102 + </div>
  103 + </div>
  104 + </div>
  105 + </div>
  106 + </div>
  107 + <div class="uk-grid">
  108 + <div class="uk-width-1-1">
  109 + <div class="uk-form-row">
  110 + <label class="uk-form-label">备注</label>
  111 + <div class="uk-form-controls">
  112 + <div class="uk-autocomplete uk-form remarks-autocom">
  113 + <input type="text" name="remarks">
  114 + </div>
  115 + </div>
  116 + </div>
  117 + </div>
  118 + </div>
  119 + </form>
  120 + <hr style="margin-top: 35px;">
  121 + <form class="uk-form uk-form-horizontal add-sch-form two_form">
  122 + <div class="uk-grid">
  123 + <div class="uk-width-1-2">
  124 + <div class="uk-form-row">
  125 + <label class="uk-form-label">班次类型</label>
  126 + <div class="uk-form-controls">
  127 + <select class="form-control nt-dictionary" name="bcType" data-code="{{bcType}}"
  128 + data-group=ScheduleType></select>
  129 + </div>
  130 + </div>
  131 + </div>
  132 + <div class="uk-width-1-2">
  133 + <div class="uk-form-row">
  134 + <label class="uk-form-label">上下行</label>
  135 + <div class="uk-form-controls">
  136 + <select name="xlDir">
  137 + <option value="0">上行</option>
  138 + <option value="1">下行</option>
  139 + </select>
  140 + </div>
  141 + </div>
  142 + </div>
  143 + </div>
  144 + <div class="uk-grid">
  145 + <div class="uk-width-1-2">
  146 + <div class="uk-form-row">
  147 + <label class="uk-form-label">起点站</label>
  148 + <div class="uk-form-controls">
  149 + <select name="qdzCode" >
  150 + </select>
  151 + </div>
  152 + </div>
  153 + </div>
  154 + <div class="uk-width-1-2">
  155 + <div class="uk-form-row">
  156 + <label class="uk-form-label">终点站</label>
  157 + <div class="uk-form-controls">
  158 + <select name="zdzCode" >
  159 + </select>
  160 + </div>
  161 + </div>
  162 + </div>
  163 + </div>
  164 + <div class="uk-grid">
  165 + <div class="uk-width-1-2">
  166 + <div class="uk-form-row">
  167 + <label class="uk-form-label">开始时间</label>
  168 + <div class="uk-form-controls">
  169 + <input type="time" value="{{zdsj}}" name="fcsj" required>
  170 + </div>
  171 + </div>
  172 + </div>
  173 + <div class="uk-width-1-2">
  174 + <div class="uk-form-row">
  175 + <label class="uk-form-label">结束时间</label>
  176 + <div class="uk-form-controls">
  177 + <input type="time" name="zdsj" required>
  178 + </div>
  179 + </div>
  180 + </div>
  181 + </div>
  182 + <div class="uk-grid">
  183 + <div class="uk-width-1-2">
  184 + <div class="uk-form-row">
  185 + <label class="uk-form-label">车辆</label>
  186 + <div class="uk-form-controls">
  187 + <div class="uk-autocomplete uk-form car-autocom">
  188 + <input type="text" value="{{clZbh}}" name="clZbh" required>
  189 + </div>
  190 + </div>
  191 + </div>
  192 + </div>
  193 + <div class="uk-width-1-2">
  194 + <div class="uk-form-row">
  195 + <label class="uk-form-label">里程</label>
  196 + <div class="uk-form-controls">
  197 + <input type="text" name="jhlc" value="{{jhlc}}" max=222 data-fv-lessthan-inclusive="false"
  198 + required>
  199 + </div>
  200 + </div>
  201 + </div>
  202 + </div>
  203 + <div class="uk-grid">
  204 + <div class="uk-width-1-2">
  205 + <div class="uk-form-row">
  206 + <label class="uk-form-label">驾驶员</label>
  207 + <div class="uk-form-controls">
  208 + <div class="uk-autocomplete uk-form jsy-autocom">
  209 + <input type="text" value="{{jGh}}/{{jName}}" name="jsy" required>
  210 + </div>
  211 + </div>
  212 + </div>
  213 + </div>
  214 + <div class="uk-width-1-2">
  215 + <div class="uk-form-row">
  216 + <label class="uk-form-label">售票员</label>
  217 + <div class="uk-form-controls">
  218 + <div class="uk-autocomplete uk-form spy-autocom">
  219 + <input type="text" name="spy" value="{{sGh}}/{{sName}}">
  220 + </div>
  221 + </div>
  222 + </div>
  223 + </div>
  224 + </div>
  225 + <div class="uk-grid">
  226 + <div class="uk-width-1-1">
  227 + <div class="uk-form-row">
  228 + <label class="uk-form-label">备注</label>
  229 + <div class="uk-form-controls">
  230 + <div class="uk-autocomplete uk-form remarks-autocom">
  231 + <input type="text" name="remarks">
  232 + </div>
  233 + </div>
  234 + </div>
  235 + </div>
  236 + </div>
  237 + </form>
  238 +
  239 + <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;">
  240 + <span class="ct_line_lp_badge" ></span>
  241 + <button type="button" class="uk-button uk-modal-close">取消</button>
  242 + <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存</button>
  243 + </div>
  244 +</script>
  245 +
  246 +<script>
  247 + (function () {
  248 + var wrap = '#schedule-addsch-modal .toAndFroCont', sch, f1, f2, submitFun, stationRoutes;
  249 +
  250 + $(wrap).on('init', function (e, data) {
  251 + e.stopPropagation();
  252 + sch = data.sch;
  253 + submitFun = data.submitFun;
  254 + stationRoutes = data.stationRoutes;
  255 +
  256 + var htmlStr = template('add_toAndFro_sch-form-temp', sch);
  257 + $(wrap).append(htmlStr);
  258 + //字典转换
  259 + dictionaryUtils.transformDom($('.nt-dictionary', wrap));
  260 + //validation
  261 + $('.add-sch-form', wrap).formValidation({framework: 'uikit', locale: 'zh_CN'}).trigger('init-autoCom');
  262 + $('.add-sch-form [name=bcType]', wrap).trigger('change');
  263 +
  264 + f1 = $('.add-sch-form.one_form', wrap);
  265 + f2 = $('.add-sch-form.two_form', wrap);
  266 +
  267 + //默认1备注同步到2
  268 + $f('remarks', f1).on('input', function () {
  269 + $f('remarks', f2).val($(this).val());
  270 + });
  271 + //默认1备注同步到2
  272 + $('.remarks-autocom', f1).on('selectitem.uk.autocomplete', function (e, data, acobject) {
  273 + $f('remarks', f2).val(data.value);
  274 + });
  275 + //表单同步
  276 + $(f1).on('ct_callback', synchroFormData).trigger('ct_callback');
  277 + //修改1结束时间
  278 + $f('zdsj',f1).on('input', synchroFormData);
  279 + $('.ct_line_lp_badge', wrap).html(sch.xlName + ',&nbsp;'+sch.lpName);
  280 +
  281 + //表单校验提交相关
  282 + var dataArray;
  283 + var fs = $('.add-sch-form', wrap);
  284 + fs.on('success.form.fv', function (e) {
  285 + e.preventDefault();
  286 + dataArray.push($(this).serializeJSON());
  287 + $(this).data('valid', true);
  288 + if (allValidSuccess()) {
  289 + //开始post
  290 + var i = 0;
  291 + var inArr = [];
  292 + var upArr = [];
  293 + (function () {
  294 + var f = arguments.callee;
  295 + if (i >= dataArray.length) {
  296 + //前端数据更新
  297 + var last = inArr.pop();
  298 + gb_schedule_table.insertSchedule(last, upArr);
  299 + $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: last});
  300 +
  301 + try {
  302 + if(last.bcType=='in' || last.bcType=='out')
  303 + gb_data_basic.reload_stat_park_data();
  304 + }catch (e){
  305 + console.log(e);}
  306 + UIkit.modal('#schedule-addsch-modal').hide();
  307 + return;
  308 + }
  309 + submitFun(dataArray[i], function (rs) {
  310 + inArr.push(rs.t);
  311 + upArr = upArr.concat(rs.ts);
  312 + upArr.push(rs.t);
  313 + i++;
  314 + f();
  315 + });
  316 + })();
  317 + }
  318 + });
  319 + //提交
  320 + $('[type=submit]', wrap).on('click', function () {
  321 + $(this).addClass('disabled').attr('disabled', 'disabled');
  322 + dataArray = [];
  323 + fs.data('valid', false);
  324 + fs.formValidation('validate');
  325 + });
  326 + });
  327 +
  328 + function $f(name, f) {
  329 + return $('[name=' + name + ']', f);
  330 + }
  331 +
  332 + function allValidSuccess() {
  333 + var flag = true;
  334 + $('form.add-sch-form:visible', wrap).each(function (i, f) {
  335 + if (!$(f).data('valid')) {
  336 + flag = false;
  337 + return false;
  338 + }
  339 + });
  340 + return flag;
  341 + }
  342 +
  343 + /**
  344 + * 同步2个表单的数据
  345 + */
  346 + var bcTypes = {'normal': 'normal', 'region': 'region', 'out': 'in', 'in': 'out'};
  347 + var synchroFormData = function () {
  348 + //同步班次类型
  349 + var type = $f('bcType', f1).val();
  350 + if (bcTypes[type])
  351 + $f('bcType', f2).val(bcTypes[type]).trigger('change');
  352 + var updown = $f('xlDir', f1).val();
  353 +
  354 + //1 结束时间 = 2 开始时间
  355 + $f('fcsj', f2).val($f('zdsj', f1).val());
  356 + if (type != 'out' && type != 'in') {
  357 + //走向
  358 + $f('xlDir', f2).val(updown == 0 ? 1 : 0).trigger('change');
  359 +
  360 + //第一个表单终点 = 第二个起点
  361 + var oneZdName = $('[name=zdzCode] option:selected', f1).text();
  362 + $f('qdzCode', f2).val(searchParallelStation(oneZdName, updown == 0 ? 1 : 0));
  363 + //第一个表单起点 = 第二个终点
  364 + var oneQdName = $('[name=qdzCode] option:selected', f1).text();
  365 + $f('zdzCode', f2).val(searchParallelStation(oneQdName, updown == 0 ? 1 : 0)).trigger('change');
  366 + }
  367 + else {
  368 + //进出场走向相同
  369 + $f('xlDir', f2).val(updown).trigger('change');
  370 + //第一个表单终点 = 第二个起点
  371 + $f('qdzCode', f2).val($f('zdzCode', f1).val());
  372 + //第一个表单起点 = 第二个终点
  373 + $f('zdzCode', f2).val($f('qdzCode', f1).val()).trigger('change');
  374 + }
  375 + };
  376 +
  377 +
  378 + //返回另一个走向对应的站点
  379 + function searchParallelStation(stationName, updown) {
  380 + var routes = stationRoutes[updown]
  381 + , len = routes.length;
  382 +
  383 + for (var i = 0; i < len; i++) {
  384 + if (routes[i].stationName == stationName)
  385 + return routes[i].stationCode;
  386 + }
  387 + }
  388 + })();
  389 +</script>
0 390 \ No newline at end of file
... ...
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/temp_sch/main.html 0 → 100644
  1 +<div class="uk-modal ct-form-modal ct_move_modal" id="schedule-addsch-modal">
  2 + <div class="uk-modal-dialog" style="width: 800px;">
  3 + <a href="" class="uk-modal-close uk-close"></a>
  4 + <div class="uk-modal-header">
  5 + <h2>新增临加班次</h2></div>
  6 +
  7 + <div class="uk-grid">
  8 + <div class="uk-width-1-4">
  9 + <ul data-uk-switcher="{connect:'#tempScheduleContent'}" class="uk-nav uk-nav-side left_tabs_lg">
  10 + <li data-handle="normal"><a>1、临加班次</a></li>
  11 + <li data-handle="toAndFro"><a>2、往返</a></li>
  12 + <li data-handle="parkToPark"><a>3、场到场</a></li>
  13 + </ul>
  14 + </div>
  15 + <div class="uk-width-3-4">
  16 + <ul id="tempScheduleContent" class="uk-switcher">
  17 + <li class="normalCont"></li>
  18 + <li class="toAndFroCont"></li>
  19 + <li class="parkToParkCont"></li>
  20 + </ul>
  21 + </div>
  22 + </div>
  23 + </div>
  24 +
  25 + <script>
  26 + (function () {
  27 + var modal = '#schedule-addsch-modal',
  28 + sch, stationRoutes, parks, information, carsArray, st_park_data;
  29 +
  30 + $(modal).on('init', function (e, data) {
  31 + e.stopPropagation();
  32 + sch = data.sch;
  33 + //站到场数据
  34 + st_park_data = gb_data_basic.get_stat_park_data()[sch.xlBm];
  35 + //站点路由
  36 + stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) {
  37 + return a.stationRouteCode - b.stationRouteCode;
  38 + }), 'directions');
  39 + //停车场
  40 + parks = gb_data_basic.simpleParksArray();
  41 + //线路标准
  42 + information = gb_data_basic.getLineInformation(sch.xlBm);
  43 + //停车场排序,常用的放前面
  44 + parks = sort_parks(parks, information, st_park_data);
  45 + //车辆信息
  46 + carsArray = gb_data_basic.carsArray();
  47 +
  48 + var st_doms = gb_schedule_context_menu.get_add_sch_doms();
  49 + //normal
  50 + $('.normalCont', modal).html(st_doms.normal_dom)
  51 + .trigger('init', {sch: sch, submitFun: submit_temp_schedule_form});
  52 +
  53 + //to and fro
  54 + $('.toAndFroCont', modal).html(st_doms.two_way_dom)
  55 + .trigger('init', {sch: sch, submitFun: submit_temp_schedule_form, stationRoutes: stationRoutes});
  56 +
  57 + //park to park
  58 + $('.parkToParkCont', modal).html(st_doms.park_to_park_dom)
  59 + .trigger('init', {sch: sch, submitFun: submit_temp_schedule_form, parks: parks, carsArray: carsArray});
  60 + });
  61 +
  62 + //init-autoCom
  63 + $(modal).on('init-autoCom', '.add-sch-form', function () {
  64 + //车辆
  65 + if(carsArray)
  66 + gb_common.carAutocomplete($('.car-autocom', this), carsArray);
  67 + //驾驶员
  68 + gb_common.personAutocomplete($('.jsy-autocom', this));
  69 + //售票员
  70 + gb_common.personAutocomplete($('.spy-autocom', this));
  71 + //备注补全
  72 + gb_common.remarksAutocomplete($('.remarks-autocom', this));
  73 + });
  74 +
  75 + //班次类型 和 上下行 切换事件
  76 + $(modal).on('change', '.add-sch-form [name=bcType],.add-sch-form [name=xlDir]', reCalcInputs_type);
  77 + //起终点站改变事件
  78 + $(modal).on('change', '[name=qdzCode],[name=zdzCode]', reCalcInputs_station);
  79 + //开始时间和公里改变
  80 + $(modal).on('input', '.add-sch-form [name=fcsj],.add-sch-form [name=jhlc]', reCalcEndTime);
  81 +
  82 +
  83 + function reCalcInputs_type() {
  84 + var f = $(this).parents('.add-sch-form');
  85 + var bcType_e = $('[name=bcType]', f)
  86 + , xlDir_e = $('[name=xlDir]', f);
  87 +
  88 + var routes = stationRoutes[xlDir_e.val()]
  89 + , lastCode = routes[routes.length - 1].stationCode
  90 + , opts = '', park_opts = '';
  91 + //station options
  92 + $.each(routes, function () {
  93 + opts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>'
  94 + });
  95 + //park options
  96 + for(var i=0,p;p=parks[i++];)
  97 + park_opts += '<option value="' + p.code + '">' + p.name + '</option>';
  98 +
  99 + var qdz = $('[name=qdzCode]', f), zdz = $('[name=zdzCode]', f);
  100 + //var time, mileage;
  101 + switch (bcType_e.val()) {
  102 + case 'out':
  103 + qdz.html(park_opts).val(information.carPark);
  104 + zdz.html(opts);
  105 + break;
  106 + case 'in':
  107 + qdz.html(opts);
  108 + zdz.html(park_opts).val(information.carPark);
  109 + break;
  110 + default:
  111 + qdz.html(opts);
  112 + zdz.html(opts).val(lastCode);
  113 + }
  114 +
  115 + zdz.trigger('change');
  116 + f.trigger('ct_callback');
  117 + }
  118 +
  119 + function reCalcInputs_station() {
  120 + var f = $(this).parents('form'),
  121 + bcType = $('[name=bcType]', f).val(),
  122 + qdzCode = $('[name=qdzCode]', f).val(),
  123 + zdzCode =$('[name=zdzCode]', f).val(),
  124 + startDate = $('[name=fcsj]', f).val(),
  125 + upDown = $('[name=xlDir]', f).val(), mileage, time;
  126 +
  127 + //从站到场里获取数据
  128 + var stp = search_st_park(f);
  129 + if(stp){
  130 + mileage=bcType=='in'?stp['mileage1']:stp['mileage2'];
  131 + time=bcType=='in'?stp['time1']:stp['time2'];
  132 + }
  133 + else{
  134 + switch (upDown + '_' + bcType) {
  135 + case '0_out'://上行出场
  136 + mileage = information.upOutMileage;
  137 + time = information.upOutTimer;
  138 + break;
  139 + case '1_out'://下行出场
  140 + mileage = information.downOutMileage;
  141 + time = information.downOutTimer;
  142 + break;
  143 + case '0_in'://上行进场
  144 + mileage = information.upInMileage;
  145 + time = information.upInTimer;
  146 + break;
  147 + case '1_in'://下行进场
  148 + mileage = information.downInMileage;
  149 + time = information.downInTimer;
  150 + break;
  151 + default:
  152 +
  153 + var qc_time=upDown==0?information.upTravelTime:information.downTravelTime,
  154 + qc_mileage=upDown==0?information.upMileage:information.downMileage;
  155 + if(is_normal_sch(f)){
  156 + bcType='normal';
  157 + mileage=qc_mileage;
  158 + }
  159 + else{
  160 + bcType='region';
  161 + mileage = calcMileage(stationRoutes[upDown], qdzCode, zdzCode);
  162 + }
  163 +
  164 + time = gb_common.mul(gb_common.accDiv(qc_time, qc_mileage), mileage);
  165 + $('[name=bcType]', f).val(bcType);
  166 + }
  167 + }
  168 +
  169 + $('[name=jhlc]', f).val(mileage);
  170 + var et = moment(startDate, 'HH:mm').add(time, 'minutes');
  171 + $f('zdsj', f).val(et.format('HH:mm'));
  172 + f.trigger('ct_callback');
  173 + }
  174 +
  175 +
  176 + function reCalcEndTime() {
  177 + var f = $(this).parents('.add-sch-form')
  178 + , startDate = $f('fcsj', f).val()//开始时间
  179 + , mileage = $f('jhlc', f).val()//公里
  180 + , type2 = $f('bcType', f).val(),//班次类型
  181 + upDown = $('[name=xlDir]', f).val();
  182 + if (!startDate || !mileage)
  183 + return;
  184 +
  185 + var time;
  186 + //从站到场里获取数据
  187 + var stp = search_st_park(f);
  188 + if(stp){
  189 + time=type2=='in'?stp['time1']:stp['time2'];
  190 + }
  191 + else{
  192 + if (type2 == 'in')
  193 + time = upDown == 0 ? information.upInTimer : information.downInTimer;
  194 + else if (type2 == 'out')
  195 + time = upDown == 0 ? information.upOutTimer : information.downOutTimer;
  196 + else{
  197 + var qc_time=upDown==0?information.upTravelTime:information.downTravelTime,
  198 + qc_mileage=upDown==0?information.upMileage:information.downMileage;
  199 +
  200 + time = gb_common.mul(gb_common.accDiv(qc_time, qc_mileage), mileage);
  201 + }
  202 + }
  203 +
  204 + var et = moment(startDate, 'HH:mm').add(time, 'minutes');
  205 + $f('zdsj', f).val(et.format('HH:mm'));
  206 + f.trigger('ct_callback');
  207 + }
  208 +
  209 + function is_normal_sch(f) {
  210 + var qdzCode = $('[name=qdzCode]', f).val(),
  211 + zdzCode =$('[name=zdzCode]', f).val(),
  212 + upDown = $('[name=xlDir]', f).val(),
  213 + rts = stationRoutes[upDown];
  214 +
  215 + if(rts[0].stationCode == qdzCode
  216 + && rts[rts.length - 1].stationCode == zdzCode)
  217 + return true;
  218 + else
  219 + return false;
  220 + }
  221 +
  222 + function isInOut(bcType) {
  223 + return bcType=='in' || bcType=='out';
  224 + }
  225 +
  226 + /**
  227 + * 计算线路上站点间公里
  228 + */
  229 + function calcMileage(rts, s, e) {
  230 + var mileage = 0, flag, code;
  231 + $.each(rts, function () {
  232 + code = this['stationCode'];
  233 + if (flag)
  234 + mileage = gb_common.accAdd(mileage, this.distances);
  235 + if (code == s)
  236 + flag = true;
  237 + if (code == e)
  238 + return false;
  239 + });
  240 + return mileage;
  241 + }
  242 +
  243 + function search_st_park(f) {
  244 + if(!st_park_data)
  245 + return;
  246 + var stp;
  247 + var qdSelect=$f('qdzCode', f)[0],zdSelect=$f('zdzCode', f)[0];
  248 +
  249 + var qdzName=qdSelect.options[qdSelect.options.selectedIndex].text,
  250 + zdzName=zdSelect.options[zdSelect.options.selectedIndex].text,
  251 + type2 = $f('bcType', f).val();
  252 +
  253 + if(!isInOut(type2))
  254 + return;
  255 +
  256 + $.each(st_park_data, function () {
  257 + if((type2=='in' && this.stationName==qdzName && this.parkName==zdzName)
  258 + || (type2=='out' && this.stationName==zdzName && this.parkName==qdzName)){
  259 + stp = this;
  260 + return false;
  261 + }
  262 + });
  263 +
  264 + return stp;
  265 + }
  266 +
  267 + /**
  268 + * 停车场排序
  269 + * @param parks 停车场 code 2 name
  270 + * @param information 线路标准
  271 + * @param st_park_data 站到场
  272 + */
  273 + function sort_parks(parks, information, st_park_data) {
  274 + var array = [], names=[];
  275 + for(var code in parks){
  276 + array.push({code: code, name: parks[code]});
  277 + }
  278 +
  279 + if(st_park_data && st_park_data.length > 0){
  280 + $.each(st_park_data, function () {
  281 + names.push(this.parkName);
  282 + });
  283 + }
  284 +
  285 + //debugger
  286 + array.sort(function (a, b) {
  287 + if(a.code==information.carPark)
  288 + return -1;
  289 + if(b.code==information.carPark)
  290 + return 1;
  291 +
  292 + var ai = names.indexOf(a.name),
  293 + bi = names.indexOf(b.name);
  294 +
  295 + if(ai!=-1 && bi==-1)
  296 + return -1;
  297 + else if(ai==-1 && bi!=-1)
  298 + return 1;
  299 + else
  300 + return a.name.localeCompare(b.name);
  301 + });
  302 + return array;
  303 + }
  304 +
  305 + function $f(name, f) {
  306 + return $('[name=' + name + ']', f);
  307 + }
  308 +
  309 + /**
  310 + * 提交表单
  311 + */
  312 + function submit_temp_schedule_form(data, cb) {
  313 + data.xlBm = sch.xlBm;
  314 + data.xlName = sch.xlName;
  315 + data.lpName = sch.lpName;
  316 + //拆分驾驶员工号和姓名
  317 + data.jGh = data.jsy.split('/')[0];
  318 + data.jName = data.jsy.split('/')[1];
  319 + delete data.jsy;
  320 + //拆分售票员工号和姓名
  321 + if (data.spy != '') {
  322 + data.sGh = data.spy.split('/')[0];
  323 + data.sName = data.spy.split('/')[1];
  324 + delete data.spy;
  325 + }
  326 +
  327 + //公司信息
  328 + var line = gb_data_basic.findLineByCodes([data.xlBm]);
  329 + if(line && line.length > 0){
  330 + line = line[0];
  331 + data.gsBm = line.company;
  332 + data.fgsBm = line.brancheCompany;
  333 + }
  334 +
  335 + gb_common.$post('/realSchedule', data, function (rs) {
  336 + notify_succ('新增临加班次成功');
  337 + cb && cb(rs);
  338 + });
  339 + }
  340 + })();
  341 + </script>
  342 +</div>
... ...
src/main/resources/static/real_control_v2/js/line_schedule/context_menu.js
... ... @@ -19,10 +19,25 @@ var gb_schedule_context_menu = (function () {
19 19 $.get(folder + '/sub_task_v2/add_range_turn.html', function (dom) {
20 20 st_doms.range_dom=dom;
21 21 });
  22 + //提前缓存临加的片段页面
  23 + var add_sch_doms={};
  24 + $.get(folder + '/temp_sch/add_normal.html', function (dom) {
  25 + add_sch_doms.normal_dom=dom;
  26 + });
  27 + $.get(folder + '/temp_sch/add_two_way.html', function (dom) {
  28 + add_sch_doms.two_way_dom=dom;
  29 + });
  30 + $.get(folder + '/temp_sch/add_park_to_park.html', function (dom) {
  31 + add_sch_doms.park_to_park_dom=dom;
  32 + });
  33 +
22 34  
23 35 var callbackHandler = {
24 36 get_st_doms: function () {
25   - return st_doms;
  37 + return st_doms;
  38 + },
  39 + get_add_sch_doms: function () {
  40 + return add_sch_doms;
26 41 },
27 42 dftz: function (sch) {
28 43 open_modal(folder + '/dftz.html', {
... ... @@ -247,7 +262,7 @@ var gb_schedule_context_menu = (function () {
247 262 });
248 263 },
249 264 add_temp_sch: function (sch) {
250   - open_modal(folder + '/add_temp_sch.html', {
  265 + open_modal(folder + '/temp_sch/main.html', {
251 266 sch: sch
252 267 }, modal_opts);
253 268 },
... ...