Commit 09374973359757e7dcdad7bdd762e4a97e300675

Authored by 王通
1 parent a550cc05

1.“路救抛锚”多页面需要加(业务部小姑娘不了解系统)

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 = CoordinateConverter.transformFromWGSToBaidu(CoordinateConverter.locationMake(station['gLonx'], station['gLaty']))
434   - ,eCoord = CoordinateConverter.transformFromWGSToBaidu(CoordinateConverter.locationMake(parseFloat(tArray[0]), parseFloat(tArray[1])));
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 = CoordinateConverter.transformFromWGSToBaidu(CoordinateConverter.locationMake(station['gLonx'], station['gLaty']))
  434 + ,eCoord = CoordinateConverter.transformFromWGSToBaidu(CoordinateConverter.locationMake(parseFloat(tArray[0]), parseFloat(tArray[1])));
  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=400 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=400 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>
... ...
src/main/resources/static/real_control_v2/fragments/north/nav/history_sch/h_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   - UIkit.modal(modal).hide();
312   - $('#history-sch-edit-modal').trigger('init', {id: sch.id});
313   - return;
314   - }
315   - var data = dataArray[i];
316   - //里程为0的不保存
317   - if(data.mileage==0){
318   - i++;
319   - f();
320   - }
321   - else{
322   - //营运子任务不写备注
323   - if(data.mileageType == 'service' && !data.destroy)
324   - data.remarks = '';
325   - //需要关联的部分主任务属性
326   - data['schedule.xlBm'] = sch.xlBm;
327   - data['schedule.xlDir'] = sch.xlDir;
328   - gb_common.$post('/childTask/history', data, function (rs) {
329   - notify_succ('子任务添加成功');
330   - rst = rs.t;
331   - i++;
332   - f();
333   - });
334   - }
335   - })();
336   - }
337   - });
338   -
339   - //校验不过
340   - fs.on('err.field.fv', function () {
341   - $('#submitChildTaskBtn', modal).removeClass('disabled').removeAttr('disabled');
342   - });
343   -
344   - //submit
345   - $('#submitChildTaskBtn', modal).on('click', function () {
346   - $(this).addClass('disabled').attr('disabled','disabled');
347   - dataArray = [];
348   - fs.data('valid', false);
349   - fs.formValidation('validate');
350   - //fs.submit();
351   - });
352   -
353   - //选择烂班原因
354   - $('select[name=destroyReason]', destroyForm).on('change', function () {
355   - var e =$('#globalRemarks', modal);
356   - e.val(e.val() + $(this).val() + ',');
357   - });
358   -
359   - //根据主任务状态,复子任务
360   - updateTwinsTaskBySch(sch);
361   - });
362   -
363   - function allValidSuccess() {
364   - var flag = true;
365   - $('form.inpark_form:visible', modal).each(function (i, f) {
366   - if(!$(f).data('valid')){
367   - flag = false;
368   - return false;
369   - }
370   - });
371   - return flag;
372   - }
373   -
374   - //获取表单disabled 项的值
375   - function getDisabledVal(f) {
376   - var rs = {};
377   - $('input,select', f).each(function () {
378   - if($(this).attr('disabled')){
379   - rs[$(this).attr('name')]=$(this).val();
380   - }
381   - });
382   - return rs;
383   - }
384   -
385   - function setDefaultVal() {
386   - var routeOpts = '';
387   - $.each(stationRoutes, function () {
388   - routeOpts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>';
389   - });
390   - esCode = stationRoutes[stationRoutes.length - 1].stationCode;
391   -
392   - //营运起终点
393   - $('select[name=startStation],select[name=endStation]', serviceForm).html(routeOpts);
394   - //空驶起点
395   - $('select[name=startStation]', emptyForm).html(routeOpts).val(esCode);
396   - //烂班起终点
397   - $('select[name=startStation],select[name=endStation]', destroyForm).html(routeOpts).val(esCode);
398   -
399   - //烂班原因
400   - var adjustExpsOpts = '<option value="">请选择...</option>';
401   - $.each(adjustExps, function (i, str) {
402   - adjustExpsOpts += '<option value="' + str + '">' + str + '</option>';
403   - });
404   - $('select[name=destroyReason]', destroyForm).html(adjustExpsOpts);
405   -
406   - //营运开始时间
407   - $('input[name=startDate]', serviceForm).val(sch.fcsjActual?sch.fcsjActual:sch.dfsj);
408   -
409   - //营运班次类型
410   - $('select[name=type1]', serviceForm).val(sch['sflj']?'临加':'正常');
411   - }
412   -
413   - //点击 路径
414   - $('#inpark_paths_link', modal).on('click', function () {
415   -
416   - });
417   -
418   - //进场导航
419   - var drivingRouteResult;
420   - function inparkNavigation() {
421   - var start = $('select[name=startStation]', emptyForm).val()
422   - ,end = $('select[name=endStation]', emptyForm).val();
423   -
424   - if(!end) return;
425   -
426   - var station = getStationByCode(start).station
427   - ,park = gb_data_basic.getCarparkByCode(end);
428   -
429   - if(!park){
430   - notify_err('无法找到停车场的坐标对照!!!');
431   - return;
432   - }
433   - var tArray = park['gCenterPoint'].split(' ');
434   - var sCoord = CoordinateConverter.transformFromWGSToBaidu(CoordinateConverter.locationMake(station['gLonx'], station[''gLaty]))
435   - ,eCoord = CoordinateConverter.transformFromWGSToBaidu(CoordinateConverter.locationMake(parseFloat(tArray[0]), parseFloat(tArray[1])));
436   -
437   - var sp = new BMap.Point(sCoord.lng,sCoord.lat);
438   - var ep = new BMap.Point(eCoord.lng,eCoord.lat);
439   -
440   - var driving = new BMap.DrivingRoute('上海', {
441   - onSearchComplete: function (rs) {
442   - drivingRouteResult = rs;
443   - calcInparkMileage(0);
444   - }
445   - });
446   - driving.search(sp,ep);
447   - }
448   -
449   - function calcInparkMileage(index) {
450   - var count = drivingRouteResult.getNumPlans();
451   -
452   - //选择方案
453   - var routePlan = drivingRouteResult.getPlan(index);
454   - //里程
455   - var mileage = routePlan.getDistance(false);
456   - $('input[name=mileage]', emptyForm).val(mileage / 1000);
457   - //结束时间
458   - var duratio = routePlan.getDuration(false);
459   - var st = $('input[name=startDate]', emptyForm).val();
460   - var ets = moment(st, 'HH:mm').add(duratio, 'seconds').format('HH:mm');
461   - $('input[name=endDate]', emptyForm).val(ets);
462   -
463   -
464   - $('#inpark_paths_link span', modal).text(count);
465   - }
466   -
467   - function getStationByCode(code) {
468   - for(var i = 0; i < stationRoutes.length; i++){
469   - if(stationRoutes[i]['stationCode']==code)
470   - return stationRoutes[i];
471   - }
472   - return null;
473   - }
474   -
475   - function reClac() {
476   - var serviceEnd = $('select[name=endStation]', serviceForm).val();
477   - //空驶起点 == 营运终点
478   - $('select[name=startStation]', emptyForm).val(serviceEnd);
479   -
480   - //计算营运里程
481   - var s = $('select[name=startStation]', serviceForm).val(),
482   - e = $('select[name=endStation]', serviceForm).val();
483   - var sMileage = calcMileage(s, e);
484   - if(sMileage >= 0)
485   - $('input[name=mileage]', serviceForm).val(sMileage);
486   -
487   - //营运结束时间
488   - var et = sch.dfsjT + (parseInt(sMileage / sch.jhlcOrig * sch.bcsj) * 60 * 1000)
489   - ,ets = et > sch.zdsjT?sch.zdsj:moment(et).format('HH:mm');
490   - $('input[name=endDate]', serviceForm).val(ets);
491   -
492   - //有烂班
493   - if (serviceEnd != esCode) {
494   - //烂班起点 == 营运终点
495   - $('select[name=startStation]', destroyForm).val(serviceEnd);
496   - //计算烂班公里
497   - s = $('select[name=startStation]', destroyForm).val();
498   - e = $('select[name=endStation]', destroyForm).val();
499   - var dMileage = calcMileage(s, e);
500   - $('input[name=mileage]', destroyForm).val(dMileage);
501   - //烂班开始时间
502   - $('input[name=startDate]', destroyForm).val(ets);
503   - }
504   -
505   - //进场开始时间
506   - $('input[name=startDate]', emptyForm).val(ets);
507   -
508   - //重新导航
509   - inparkNavigation();
510   - }
511   -
512   - function calcMileage(s, e) {
513   - var mileage = 0, flag, code;
514   - if (timeLocStations) {
515   - //空间坐标计算的站距
516   - $.each(timeLocStations, function () {
517   - code = this.station['STATION_CODE'];
518   - if (flag)
519   - mileage = gb_common.accAdd(mileage, this.toDistanceGl);
520   - if (code == s)
521   - flag = true;
522   - if (code == e)
523   - return false;
524   - });
525   - }
526   - else{
527   - //从原始站点路由字段里取值
528   - $.each(stationRoutes, function () {
529   - code = this['stationCode'];
530   - if (flag)
531   - mileage = gb_common.accAdd(mileage, this.distances);
532   - if (code == s)
533   - flag = true;
534   - if (code == e)
535   - return false;
536   - });
537   - }
538   - return mileage;
539   - }
540   -
541   - //从本地localStorage获取站间距数据
542   - function getLocStationsSpace() {
543   - try {
544   - timeLocStations = window.localStorage.getItem('control_route_distance_' + sch.xlBm);
545   - if (timeLocStations)
546   - timeLocStations = JSON.parse(timeLocStations).stations[sch.xlDir == 0 ? 'up' : 'down'];
547   - } catch (e) {
548   - console.log(e);
549   - }
550   - }
551   -
552   - //站间距计算后刷新
553   - $(modal).on('refresh_station_space', function () {
554   - getLocStationsSpace();
555   - reClac();
556   - });
557   -
558   - //------ 下抽屉 ------
559   - $('#betweenStationRangeCalc', modal).on('click', function () {
560   - var id = $(this).data('drawer-id');
561   - switchBtmDrawer(id, '/real_control_v2/fragments/line_schedule/context_menu/sub_task/station_route_spacing_chart.html');
562   - });
563   -
564   - var btmDrawer = $('.ct-bottom-drawer', modal);
565   - //打开事件
566   - btmDrawer.on('drawer_show', function () {
567   - var url = $(this).data('url');
568   - if (!url) {
569   - alert('无效的地址');
570   - }
571   -
572   - var drawerPanel = $(this).data('name');
573   - $('.ct-bottom-drawer-body', btmDrawer).load(url, function () {
574   - $('#' + drawerPanel).trigger('drawer-init', {sch: sch});
575   - });
576   - });
577   -
578   - function switchBtmDrawer(id, url) {
579   - if (btmDrawer.hasClass('open') && btmDrawer.data('name') == id) {
580   - btmDrawer.removeClass('open');
581   - btmDrawer.removeData('name').removeData('url');
582   - }
583   - else {
584   - btmDrawer.addClass('open');
585   - btmDrawer.data('name', id).data('url', url).trigger('drawer_show');
586   - }
587   - }
588   -
589   -
590   - function updateTwinsTaskBySch(sch) {
591   - //主任务是烂班
592   - if(sch.destroy){
593   - serviceForm.prepend('<input type="hidden" name="destroy" value="true">');
594   - $('[name=mileage]', serviceForm).val(sch.jhlcOrig).attr('disabled', 'disabled');
595   - $('.twins_task_panel .uk-badge', modal).addClass('uk-badge-danger').text('烂班');
596   - //终点禁选
597   - $('select[name=endStation]', serviceForm).attr('disabled', 'disabled');
598   - //开始结束时间禁选
599   -
600   - //空驶起点
601   - $('select[name=startStation]', emptyForm).val(sch.qdzCode);
602   - }
603   - }
604   - })();
605   - </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 + UIkit.modal(modal).hide();
  312 + $('#history-sch-edit-modal').trigger('init', {id: sch.id});
  313 + return;
  314 + }
  315 + var data = dataArray[i];
  316 + //里程为0的不保存
  317 + if(data.mileage==0){
  318 + i++;
  319 + f();
  320 + }
  321 + else{
  322 + //营运子任务不写备注
  323 + if(data.mileageType == 'service' && !data.destroy)
  324 + data.remarks = '';
  325 + //需要关联的部分主任务属性
  326 + data['schedule.xlBm'] = sch.xlBm;
  327 + data['schedule.xlDir'] = sch.xlDir;
  328 + gb_common.$post('/childTask/history', data, function (rs) {
  329 + notify_succ('子任务添加成功');
  330 + rst = rs.t;
  331 + i++;
  332 + f();
  333 + });
  334 + }
  335 + })();
  336 + }
  337 + });
  338 +
  339 + //校验不过
  340 + fs.on('err.field.fv', function () {
  341 + $('#submitChildTaskBtn', modal).removeClass('disabled').removeAttr('disabled');
  342 + });
  343 +
  344 + //submit
  345 + $('#submitChildTaskBtn', modal).on('click', function () {
  346 + $(this).addClass('disabled').attr('disabled','disabled');
  347 + dataArray = [];
  348 + fs.data('valid', false);
  349 + fs.formValidation('validate');
  350 + //fs.submit();
  351 + });
  352 +
  353 + //选择烂班原因
  354 + $('select[name=destroyReason]', destroyForm).on('change', function () {
  355 + var e =$('#globalRemarks', modal);
  356 + e.val(e.val() + $(this).val() + ',');
  357 + });
  358 +
  359 + //根据主任务状态,复子任务
  360 + updateTwinsTaskBySch(sch);
  361 + });
  362 +
  363 + function allValidSuccess() {
  364 + var flag = true;
  365 + $('form.inpark_form:visible', modal).each(function (i, f) {
  366 + if(!$(f).data('valid')){
  367 + flag = false;
  368 + return false;
  369 + }
  370 + });
  371 + return flag;
  372 + }
  373 +
  374 + //获取表单disabled 项的值
  375 + function getDisabledVal(f) {
  376 + var rs = {};
  377 + $('input,select', f).each(function () {
  378 + if($(this).attr('disabled')){
  379 + rs[$(this).attr('name')]=$(this).val();
  380 + }
  381 + });
  382 + return rs;
  383 + }
  384 +
  385 + function setDefaultVal() {
  386 + var routeOpts = '';
  387 + $.each(stationRoutes, function () {
  388 + routeOpts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>';
  389 + });
  390 + esCode = stationRoutes[stationRoutes.length - 1].stationCode;
  391 +
  392 + //营运起终点
  393 + $('select[name=startStation],select[name=endStation]', serviceForm).html(routeOpts);
  394 + //空驶起点
  395 + $('select[name=startStation]', emptyForm).html(routeOpts).val(esCode);
  396 + //烂班起终点
  397 + $('select[name=startStation],select[name=endStation]', destroyForm).html(routeOpts).val(esCode);
  398 +
  399 + //烂班原因
  400 + var adjustExpsOpts = '<option value="">请选择...</option>';
  401 + $.each(adjustExps, function (i, str) {
  402 + adjustExpsOpts += '<option value="' + str + '">' + str + '</option>';
  403 + });
  404 + $('select[name=destroyReason]', destroyForm).html(adjustExpsOpts);
  405 +
  406 + //营运开始时间
  407 + $('input[name=startDate]', serviceForm).val(sch.fcsjActual?sch.fcsjActual:sch.dfsj);
  408 +
  409 + //营运班次类型
  410 + $('select[name=type1]', serviceForm).val(sch['sflj']?'临加':'正常');
  411 + }
  412 +
  413 + //点击 路径
  414 + $('#inpark_paths_link', modal).on('click', function () {
  415 +
  416 + });
  417 +
  418 + //进场导航
  419 + var drivingRouteResult;
  420 + function inparkNavigation() {
  421 + var start = $('select[name=startStation]', emptyForm).val()
  422 + ,end = $('select[name=endStation]', emptyForm).val();
  423 +
  424 + if(!end) return;
  425 +
  426 + var station = getStationByCode(start).station
  427 + ,park = gb_data_basic.getCarparkByCode(end);
  428 +
  429 + if(!park){
  430 + notify_err('无法找到停车场的坐标对照!!!');
  431 + return;
  432 + }
  433 + var tArray = park['gCenterPoint'].split(' ');
  434 + var sCoord = CoordinateConverter.transformFromWGSToBaidu(CoordinateConverter.locationMake(station['gLonx'], station[''gLaty]))
  435 + ,eCoord = CoordinateConverter.transformFromWGSToBaidu(CoordinateConverter.locationMake(parseFloat(tArray[0]), parseFloat(tArray[1])));
  436 +
  437 + var sp = new BMap.Point(sCoord.lng,sCoord.lat);
  438 + var ep = new BMap.Point(eCoord.lng,eCoord.lat);
  439 +
  440 + var driving = new BMap.DrivingRoute('上海', {
  441 + onSearchComplete: function (rs) {
  442 + drivingRouteResult = rs;
  443 + calcInparkMileage(0);
  444 + }
  445 + });
  446 + driving.search(sp,ep);
  447 + }
  448 +
  449 + function calcInparkMileage(index) {
  450 + var count = drivingRouteResult.getNumPlans();
  451 +
  452 + //选择方案
  453 + var routePlan = drivingRouteResult.getPlan(index);
  454 + //里程
  455 + var mileage = routePlan.getDistance(false);
  456 + $('input[name=mileage]', emptyForm).val(mileage / 1000);
  457 + //结束时间
  458 + var duratio = routePlan.getDuration(false);
  459 + var st = $('input[name=startDate]', emptyForm).val();
  460 + var ets = moment(st, 'HH:mm').add(duratio, 'seconds').format('HH:mm');
  461 + $('input[name=endDate]', emptyForm).val(ets);
  462 +
  463 +
  464 + $('#inpark_paths_link span', modal).text(count);
  465 + }
  466 +
  467 + function getStationByCode(code) {
  468 + for(var i = 0; i < stationRoutes.length; i++){
  469 + if(stationRoutes[i]['stationCode']==code)
  470 + return stationRoutes[i];
  471 + }
  472 + return null;
  473 + }
  474 +
  475 + function reClac() {
  476 + var serviceEnd = $('select[name=endStation]', serviceForm).val();
  477 + //空驶起点 == 营运终点
  478 + $('select[name=startStation]', emptyForm).val(serviceEnd);
  479 +
  480 + //计算营运里程
  481 + var s = $('select[name=startStation]', serviceForm).val(),
  482 + e = $('select[name=endStation]', serviceForm).val();
  483 + var sMileage = calcMileage(s, e);
  484 + if(sMileage >= 0)
  485 + $('input[name=mileage]', serviceForm).val(sMileage);
  486 +
  487 + //营运结束时间
  488 + var et = sch.dfsjT + (parseInt(sMileage / sch.jhlcOrig * sch.bcsj) * 60 * 1000)
  489 + ,ets = et > sch.zdsjT?sch.zdsj:moment(et).format('HH:mm');
  490 + $('input[name=endDate]', serviceForm).val(ets);
  491 +
  492 + //有烂班
  493 + if (serviceEnd != esCode) {
  494 + //烂班起点 == 营运终点
  495 + $('select[name=startStation]', destroyForm).val(serviceEnd);
  496 + //计算烂班公里
  497 + s = $('select[name=startStation]', destroyForm).val();
  498 + e = $('select[name=endStation]', destroyForm).val();
  499 + var dMileage = calcMileage(s, e);
  500 + $('input[name=mileage]', destroyForm).val(dMileage);
  501 + //烂班开始时间
  502 + $('input[name=startDate]', destroyForm).val(ets);
  503 + }
  504 +
  505 + //进场开始时间
  506 + $('input[name=startDate]', emptyForm).val(ets);
  507 +
  508 + //重新导航
  509 + inparkNavigation();
  510 + }
  511 +
  512 + function calcMileage(s, e) {
  513 + var mileage = 0, flag, code;
  514 + if (timeLocStations) {
  515 + //空间坐标计算的站距
  516 + $.each(timeLocStations, function () {
  517 + code = this.station['STATION_CODE'];
  518 + if (flag)
  519 + mileage = gb_common.accAdd(mileage, this.toDistanceGl);
  520 + if (code == s)
  521 + flag = true;
  522 + if (code == e)
  523 + return false;
  524 + });
  525 + }
  526 + else{
  527 + //从原始站点路由字段里取值
  528 + $.each(stationRoutes, function () {
  529 + code = this['stationCode'];
  530 + if (flag)
  531 + mileage = gb_common.accAdd(mileage, this.distances);
  532 + if (code == s)
  533 + flag = true;
  534 + if (code == e)
  535 + return false;
  536 + });
  537 + }
  538 + return mileage;
  539 + }
  540 +
  541 + //从本地localStorage获取站间距数据
  542 + function getLocStationsSpace() {
  543 + try {
  544 + timeLocStations = window.localStorage.getItem('control_route_distance_' + sch.xlBm);
  545 + if (timeLocStations)
  546 + timeLocStations = JSON.parse(timeLocStations).stations[sch.xlDir == 0 ? 'up' : 'down'];
  547 + } catch (e) {
  548 + console.log(e);
  549 + }
  550 + }
  551 +
  552 + //站间距计算后刷新
  553 + $(modal).on('refresh_station_space', function () {
  554 + getLocStationsSpace();
  555 + reClac();
  556 + });
  557 +
  558 + //------ 下抽屉 ------
  559 + $('#betweenStationRangeCalc', modal).on('click', function () {
  560 + var id = $(this).data('drawer-id');
  561 + switchBtmDrawer(id, '/real_control_v2/fragments/line_schedule/context_menu/sub_task/station_route_spacing_chart.html');
  562 + });
  563 +
  564 + var btmDrawer = $('.ct-bottom-drawer', modal);
  565 + //打开事件
  566 + btmDrawer.on('drawer_show', function () {
  567 + var url = $(this).data('url');
  568 + if (!url) {
  569 + alert('无效的地址');
  570 + }
  571 +
  572 + var drawerPanel = $(this).data('name');
  573 + $('.ct-bottom-drawer-body', btmDrawer).load(url, function () {
  574 + $('#' + drawerPanel).trigger('drawer-init', {sch: sch});
  575 + });
  576 + });
  577 +
  578 + function switchBtmDrawer(id, url) {
  579 + if (btmDrawer.hasClass('open') && btmDrawer.data('name') == id) {
  580 + btmDrawer.removeClass('open');
  581 + btmDrawer.removeData('name').removeData('url');
  582 + }
  583 + else {
  584 + btmDrawer.addClass('open');
  585 + btmDrawer.data('name', id).data('url', url).trigger('drawer_show');
  586 + }
  587 + }
  588 +
  589 +
  590 + function updateTwinsTaskBySch(sch) {
  591 + //主任务是烂班
  592 + if(sch.destroy){
  593 + serviceForm.prepend('<input type="hidden" name="destroy" value="true">');
  594 + $('[name=mileage]', serviceForm).val(sch.jhlcOrig).attr('disabled', 'disabled');
  595 + $('.twins_task_panel .uk-badge', modal).addClass('uk-badge-danger').text('烂班');
  596 + //终点禁选
  597 + $('select[name=endStation]', serviceForm).attr('disabled', 'disabled');
  598 + //开始结束时间禁选
  599 +
  600 + //空驶起点
  601 + $('select[name=startStation]', emptyForm).val(sch.qdzCode);
  602 + }
  603 + }
  604 + })();
  605 + </script>
606 606 </div>
607 607 \ No newline at end of file
... ...
src/main/resources/static/real_control_v2/fragments/north/nav/history_sch/h_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-2">
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   -
27   - <div class="uk-width-1-2 inout_reason_wrap" style="display: none">
28   - <div class="uk-form-row">
29   - <label class="uk-form-label">进出场原因</label>
30   - <div class="uk-form-controls">
31   - <select class="form-control" name="reason" required>
32   - <option value="">请选择..</option>
33   - <option>故障</option>
34   - <option>肇事</option>
35   - <option>纠纷</option>
36   - <option>其他</option>
37   - </select>
38   - </div>
39   - </div>
40   - </div>
41   -
42   - </div>
43   - <div class="uk-grid">
44   - <div class="uk-width-1-2">
45   - <div class="uk-form-row">
46   - <label class="uk-form-label">起点 </label>
47   - <div class="uk-form-controls">
48   - <select name="startStation" required></select>
49   - </div>
50   - </div>
51   - </div>
52   - <div class="uk-width-1-2">
53   - <div class="uk-form-row">
54   - <label class="uk-form-label">终点</label>
55   - <div class="uk-form-controls">
56   - <select name="endStation" required></select>
57   - </div>
58   - </div>
59   - </div>
60   - </div>
61   -
62   - <div class="uk-grid">
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   - <select class="form-control nt-dictionary" required name="mileageType"
68   - data-group="MileageType"></select>
69   - </div>
70   - </div>
71   - </div>
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   - <input class="form-control" name="mileage" max=400 data-fv-lessthan-inclusive="false" required>
77   - </div>
78   - </div>
79   - </div>
80   - </div>
81   -
82   - <div class="uk-grid">
83   - <div class="uk-width-1-2">
84   - <div class="uk-form-row">
85   - <label class="uk-form-label">开始时间</label>
86   - <div class="uk-form-controls">
87   - <input name="startDate" value="{{sch.fcsj}}" type="time" required>
88   - </div>
89   - </div>
90   - </div>
91   - <div class="uk-width-1-2">
92   - <div class="uk-form-row">
93   - <label class="uk-form-label">结束时间</label>
94   - <div class="uk-form-controls">
95   - <input name="endDate" value="{{sch.zdsj}}" type="time" required>
96   - </div>
97   - </div>
98   - </div>
99   - </div>
100   -
101   - <div class="uk-grid">
102   - <div class="uk-width-1-2">
103   - <div class="uk-form-row" style="padding-top: 5px;">
104   - <label class="uk-form-label"></label>
105   - <div class="uk-form-controls">
106   - <label>
107   - <input type="checkbox" value=1 name="destroy" class="i-cbox"> 是否烂班
108   - </label>
109   - </div>
110   - </div>
111   - </div>
112   - <div class="uk-width-1-2 destroy_reason_wrap" style="display: none;">
113   - <div class="uk-form-row">
114   - <label class="uk-form-label">烂班原因</label>
115   - <div class="uk-form-controls">
116   - <select class="form-control" name="destroyReason">
117   - <option value="">请选择...</option>
118   - {{each adjustExps as exp i}}
119   - <option value="{{exp}}">{{exp}}</option>
120   - {{/each}}
121   - </select>
122   - </div>
123   - </div>
124   - </div>
125   - </div>
126   -
127   - <div class="uk-grid">
128   - <div class="uk-width-1-1">
129   - <div class="uk-form-row ct-stacked">
130   - <div class="uk-form-controls" style="margin-top: 5px;">
131   - <textarea id="form-s-t" cols="30" rows="5" name="remarks" data-fv-stringlength="true"
132   - data-fv-stringlength-max="50" placeholder="备注,不超过50个字符"></textarea>
133   - </div>
134   - </div>
135   - </div>
136   - </div>
137   - <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;">
138   - <button type="button" class="uk-button uk-modal-close">取消</button>
139   - <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存</button>
140   - </div>
141   - </script>
142   -
143   - <script>
144   - (function () {
145   - var modal = '#add-sub-task-other-modal',
146   - sch, stationRoutes, parks, information;
147   - var adjustExps = ['故障', '肇事', '路阻', '纠纷', '缺人', '客稀', '缺车', '气候', '援外', '吊慢', '其他'];
148   - $(modal).on('init', function (e, data) {
149   - e.stopPropagation();
150   - sch = data.sch;
151   - var formHtml = template('sub-task-other-form-temp', {sch: sch, adjustExps: adjustExps});
152   - $('form', modal).html(formHtml);
153   - //字典转换
154   - dictionaryUtils.transformDom($('.nt-dictionary', modal));
155   -
156   - //站点路由
157   - stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) {
158   - return a.stationRouteCode - b.stationRouteCode;
159   - }), 'directions');
160   - //停车场
161   - $.get('/basic/parks', function (rs) {
162   - parks = rs;
163   - });
164   - //线路标准
165   - information = gb_data_basic.getLineInformation(sch.xlBm);
166   -
167   - //submit
168   - var f = $('form', modal).formValidation(gb_form_validation_opts);
169   - f.on('success.form.fv', function (e) {
170   - disabled_submit_btn(this);
171   - e.preventDefault();
172   - var data = $(this).serializeJSON();
173   -
174   - //需要关联的部分主任务属性
175   - data['schedule.xlBm'] = sch.xlBm;
176   - data['schedule.xlDir'] = sch.xlDir;
177   - gb_common.$post('/childTask/history', data, function (rs) {
178   - notify_succ('子任务添加成功');
179   - $('#history-sch-edit-modal').trigger('init', {id: sch.id});
180   - UIkit.modal(modal).hide();
181   - });
182   - });
183   -
184   - //班次类型
185   - $('[name=type2]', f).on('change', function () {
186   - $('.inout_reason_wrap').hide();
187   - var routes = stationRoutes[sch.xlDir]
188   - , lastCode = routes[routes.length - 1].stationCode
189   - , opts = '', park_opts = '';
190   - //station options
191   - $.each(routes, function () {
192   - opts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>'
193   - });
194   - //park options
195   - for (var code in parks)
196   - park_opts += '<option value="' + code + '">' + parks[code] + '</option>';
197   -
198   - var qdz = $('[name=startStation]', f), zdz = $('[name=endStation]', f), mType = $('[name=mileageType]', f);
199   - switch ($(this).val()) {
200   - case '3'://出场
201   - qdz.html(park_opts).val(information.carPark);
202   - zdz.html(opts);
203   - mType.val('empty');
204   - //进出场原因
205   - $('.inout_reason_wrap').show();
206   - break;
207   - case '2'://进场
208   - qdz.html(opts);
209   - zdz.html(park_opts).val(information.carPark);
210   - mType.val('empty');
211   - //进出场原因
212   - $('.inout_reason_wrap').show();
213   - break;
214   - default:
215   - qdz.html(opts);
216   - zdz.html(opts).val(lastCode);
217   - mType.val('service');
218   -
219   - }
220   - });
221   -
222   - //是否烂班
223   - $('[name=destroy]', f).on('click', function () {
224   - console.log(this, this.checked);
225   - if (this.checked) {
226   - $('.destroy_reason_wrap', modal).show();
227   - }
228   - else {
229   - $('.destroy_reason_wrap', modal).hide();
230   - }
231   - });
232   -
233   - $('[name=destroyReason]', f).on('change', function () {
234   - var rem = $('[name=remarks]', f);
235   - rem.val(rem.val() + $(this).val() + ',');
236   - });
237   - });
238   - })();
239   - </script>
240   -</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-2">
  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 +
  27 + <div class="uk-width-1-2 inout_reason_wrap" style="display: none">
  28 + <div class="uk-form-row">
  29 + <label class="uk-form-label">进出场原因</label>
  30 + <div class="uk-form-controls">
  31 + <select class="form-control" name="reason" required>
  32 + <option value="">请选择..</option>
  33 + <option>故障</option>
  34 + <option>肇事</option>
  35 + <option>纠纷</option>
  36 + <option>其他</option>
  37 + </select>
  38 + </div>
  39 + </div>
  40 + </div>
  41 +
  42 + </div>
  43 + <div class="uk-grid">
  44 + <div class="uk-width-1-2">
  45 + <div class="uk-form-row">
  46 + <label class="uk-form-label">起点 </label>
  47 + <div class="uk-form-controls">
  48 + <select name="startStation" required></select>
  49 + </div>
  50 + </div>
  51 + </div>
  52 + <div class="uk-width-1-2">
  53 + <div class="uk-form-row">
  54 + <label class="uk-form-label">终点</label>
  55 + <div class="uk-form-controls">
  56 + <select name="endStation" required></select>
  57 + </div>
  58 + </div>
  59 + </div>
  60 + </div>
  61 +
  62 + <div class="uk-grid">
  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 + <select class="form-control nt-dictionary" required name="mileageType"
  68 + data-group="MileageType"></select>
  69 + </div>
  70 + </div>
  71 + </div>
  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 + <input class="form-control" name="mileage" max=400 data-fv-lessthan-inclusive="false" required>
  77 + </div>
  78 + </div>
  79 + </div>
  80 + </div>
  81 +
  82 + <div class="uk-grid">
  83 + <div class="uk-width-1-2">
  84 + <div class="uk-form-row">
  85 + <label class="uk-form-label">开始时间</label>
  86 + <div class="uk-form-controls">
  87 + <input name="startDate" value="{{sch.fcsj}}" type="time" required>
  88 + </div>
  89 + </div>
  90 + </div>
  91 + <div class="uk-width-1-2">
  92 + <div class="uk-form-row">
  93 + <label class="uk-form-label">结束时间</label>
  94 + <div class="uk-form-controls">
  95 + <input name="endDate" value="{{sch.zdsj}}" type="time" required>
  96 + </div>
  97 + </div>
  98 + </div>
  99 + </div>
  100 +
  101 + <div class="uk-grid">
  102 + <div class="uk-width-1-2">
  103 + <div class="uk-form-row" style="padding-top: 5px;">
  104 + <label class="uk-form-label"></label>
  105 + <div class="uk-form-controls">
  106 + <label>
  107 + <input type="checkbox" value=1 name="destroy" class="i-cbox"> 是否烂班
  108 + </label>
  109 + </div>
  110 + </div>
  111 + </div>
  112 + <div class="uk-width-1-2 destroy_reason_wrap" style="display: none;">
  113 + <div class="uk-form-row">
  114 + <label class="uk-form-label">烂班原因</label>
  115 + <div class="uk-form-controls">
  116 + <select class="form-control" name="destroyReason">
  117 + <option value="">请选择...</option>
  118 + {{each adjustExps as exp i}}
  119 + <option value="{{exp}}">{{exp}}</option>
  120 + {{/each}}
  121 + </select>
  122 + </div>
  123 + </div>
  124 + </div>
  125 + </div>
  126 +
  127 + <div class="uk-grid">
  128 + <div class="uk-width-1-1">
  129 + <div class="uk-form-row ct-stacked">
  130 + <div class="uk-form-controls" style="margin-top: 5px;">
  131 + <textarea id="form-s-t" cols="30" rows="5" name="remarks" data-fv-stringlength="true"
  132 + data-fv-stringlength-max="50" placeholder="备注,不超过50个字符"></textarea>
  133 + </div>
  134 + </div>
  135 + </div>
  136 + </div>
  137 + <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;">
  138 + <button type="button" class="uk-button uk-modal-close">取消</button>
  139 + <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存</button>
  140 + </div>
  141 + </script>
  142 +
  143 + <script>
  144 + (function () {
  145 + var modal = '#add-sub-task-other-modal',
  146 + sch, stationRoutes, parks, information;
  147 + var adjustExps = ['故障', '肇事', '路阻', '纠纷', '缺人', '客稀', '缺车', '气候', '援外', '吊慢', '路救抛锚', '其他'];
  148 + $(modal).on('init', function (e, data) {
  149 + e.stopPropagation();
  150 + sch = data.sch;
  151 + var formHtml = template('sub-task-other-form-temp', {sch: sch, adjustExps: adjustExps});
  152 + $('form', modal).html(formHtml);
  153 + //字典转换
  154 + dictionaryUtils.transformDom($('.nt-dictionary', modal));
  155 +
  156 + //站点路由
  157 + stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) {
  158 + return a.stationRouteCode - b.stationRouteCode;
  159 + }), 'directions');
  160 + //停车场
  161 + $.get('/basic/parks', function (rs) {
  162 + parks = rs;
  163 + });
  164 + //线路标准
  165 + information = gb_data_basic.getLineInformation(sch.xlBm);
  166 +
  167 + //submit
  168 + var f = $('form', modal).formValidation(gb_form_validation_opts);
  169 + f.on('success.form.fv', function (e) {
  170 + disabled_submit_btn(this);
  171 + e.preventDefault();
  172 + var data = $(this).serializeJSON();
  173 +
  174 + //需要关联的部分主任务属性
  175 + data['schedule.xlBm'] = sch.xlBm;
  176 + data['schedule.xlDir'] = sch.xlDir;
  177 + gb_common.$post('/childTask/history', data, function (rs) {
  178 + notify_succ('子任务添加成功');
  179 + $('#history-sch-edit-modal').trigger('init', {id: sch.id});
  180 + UIkit.modal(modal).hide();
  181 + });
  182 + });
  183 +
  184 + //班次类型
  185 + $('[name=type2]', f).on('change', function () {
  186 + $('.inout_reason_wrap').hide();
  187 + var routes = stationRoutes[sch.xlDir]
  188 + , lastCode = routes[routes.length - 1].stationCode
  189 + , opts = '', park_opts = '';
  190 + //station options
  191 + $.each(routes, function () {
  192 + opts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>'
  193 + });
  194 + //park options
  195 + for (var code in parks)
  196 + park_opts += '<option value="' + code + '">' + parks[code] + '</option>';
  197 +
  198 + var qdz = $('[name=startStation]', f), zdz = $('[name=endStation]', f), mType = $('[name=mileageType]', f);
  199 + switch ($(this).val()) {
  200 + case '3'://出场
  201 + qdz.html(park_opts).val(information.carPark);
  202 + zdz.html(opts);
  203 + mType.val('empty');
  204 + //进出场原因
  205 + $('.inout_reason_wrap').show();
  206 + break;
  207 + case '2'://进场
  208 + qdz.html(opts);
  209 + zdz.html(park_opts).val(information.carPark);
  210 + mType.val('empty');
  211 + //进出场原因
  212 + $('.inout_reason_wrap').show();
  213 + break;
  214 + default:
  215 + qdz.html(opts);
  216 + zdz.html(opts).val(lastCode);
  217 + mType.val('service');
  218 +
  219 + }
  220 + });
  221 +
  222 + //是否烂班
  223 + $('[name=destroy]', f).on('click', function () {
  224 + console.log(this, this.checked);
  225 + if (this.checked) {
  226 + $('.destroy_reason_wrap', modal).show();
  227 + }
  228 + else {
  229 + $('.destroy_reason_wrap', modal).hide();
  230 + }
  231 + });
  232 +
  233 + $('[name=destroyReason]', f).on('change', function () {
  234 + var rem = $('[name=remarks]', f);
  235 + rem.val(rem.val() + $(this).val() + ',');
  236 + });
  237 + });
  238 + })();
  239 + </script>
  240 +</div>
... ...