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 </div> 605 </div>
606 \ No newline at end of file 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 </div> 606 </div>
607 \ No newline at end of file 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>