Commit 398be398a02b2b00df9fdd161f71df9eff5b8fd2
1 parent
abd9f44a
update...
Showing
14 changed files
with
1007 additions
and
134 deletions
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
| ... | ... | @@ -1025,7 +1025,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 1025 | 1025 | sch.setLate2(false); |
| 1026 | 1026 | LateAdjustHandle.remove(sch); |
| 1027 | 1027 | } |
| 1028 | - } else if (sch.getFcsjActual() != null){ | |
| 1028 | + } else if (StringUtils.isNotEmpty(sch.getFcsjActual()) && StringUtils.isEmpty(fcsjActual)){ | |
| 1029 | 1029 | //撤销实发 |
| 1030 | 1030 | revokeRealOutgo(sch.getId()); |
| 1031 | 1031 | } |
| ... | ... | @@ -1049,7 +1049,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 1049 | 1049 | |
| 1050 | 1050 | //重新计算车辆执行班次 |
| 1051 | 1051 | dayOfSchedule.reCalcExecPlan(sch.getClZbh()); |
| 1052 | - } else if(StringUtils.isNotEmpty(sch.getZdsjActual())){ | |
| 1052 | + } else if(StringUtils.isNotEmpty(sch.getZdsjActual()) && StringUtils.isEmpty(zdsjActual)){ | |
| 1053 | 1053 | //清除实达时间 |
| 1054 | 1054 | sch.clearZdsjActual(); |
| 1055 | 1055 | //清除路牌下一班起点到达时间 | ... | ... |
src/main/resources/static/real_control_v2/css/main.css
| ... | ... | @@ -1134,3 +1134,27 @@ dl.intimity span.late-badge{ |
| 1134 | 1134 | margin: 0; |
| 1135 | 1135 | width: auto; |
| 1136 | 1136 | } |
| 1137 | + | |
| 1138 | +ul.left_tabs_lg{ | |
| 1139 | + border: 1px solid #efeded; | |
| 1140 | + height: 100%; | |
| 1141 | + background: #fafafa; | |
| 1142 | +} | |
| 1143 | + | |
| 1144 | +ul.left_tabs_lg li{ | |
| 1145 | + line-height: 40px; | |
| 1146 | + font-size: 15px; | |
| 1147 | +} | |
| 1148 | + | |
| 1149 | +#schedule-addsch-modal .uk-modal-footer{ | |
| 1150 | + border-top: none; | |
| 1151 | + background: none; | |
| 1152 | +} | |
| 1153 | + | |
| 1154 | +.ct_line_lp_badge{ | |
| 1155 | + float: left; | |
| 1156 | + margin-top: 6px; | |
| 1157 | + background: #e0e0e0; | |
| 1158 | + padding: 2px 7px; | |
| 1159 | + border-radius: 3px; | |
| 1160 | +} | ... | ... |
src/main/resources/static/real_control_v2/css/modal_extend.css
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/add_temp_sch.html
| 1 | 1 | <div class="uk-modal ct-form-modal ct_move_modal" id="schedule-addsch-modal"> |
| 2 | - <div class="uk-modal-dialog"> | |
| 2 | + <div class="uk-modal-dialog" style="width: 800px;"> | |
| 3 | 3 | <a href="" class="uk-modal-close uk-close"></a> |
| 4 | 4 | <div class="uk-modal-header"> |
| 5 | 5 | <h2>新增临加班次</h2></div> |
| 6 | + | |
| 7 | + <div class="uk-grid"> | |
| 8 | + <div class="uk-width-1-4"> | |
| 9 | + <ul data-uk-switcher="{connect:'#tempScheduleContent'}" class="uk-nav uk-nav-side left_tabs_lg" > | |
| 10 | + <li data-handle="normal"><a>1、临加班次</a></li> | |
| 11 | + <li data-handle="toAndFro"><a>2、往返</a></li> | |
| 12 | + <!--<li data-handle="parkToPark"><a>3、场到场</a></li>--> | |
| 13 | + </ul> | |
| 14 | + </div> | |
| 15 | + <div class="uk-width-3-4"> | |
| 16 | + <ul id="tempScheduleContent" class="uk-switcher"> | |
| 17 | + <li class="normalCont"></li> | |
| 18 | + <li class="toAndFroCont"></li> | |
| 19 | + <!--<li></li>--> | |
| 20 | + </ul> | |
| 21 | + </div> | |
| 22 | + </div> | |
| 23 | + </div> | |
| 24 | + | |
| 25 | + <!-- 普通单程临加班次 --> | |
| 26 | + <script id="add_normal_sch-form-temp" type="text/html"> | |
| 6 | 27 | <form class="uk-form uk-form-horizontal"> |
| 28 | + <div class="uk-grid"> | |
| 29 | + <div class="uk-width-1-2"> | |
| 30 | + <div class="uk-form-row"> | |
| 31 | + <label class="uk-form-label">班次类型</label> | |
| 32 | + <div class="uk-form-controls"> | |
| 33 | + <select class="form-control nt-dictionary" name="bcType" data-code="{{bcType}}" | |
| 34 | + data-group=ScheduleType></select> | |
| 35 | + </div> | |
| 36 | + </div> | |
| 37 | + </div> | |
| 38 | + <div class="uk-width-1-2"> | |
| 39 | + <div class="uk-form-row"> | |
| 40 | + <label class="uk-form-label">上下行</label> | |
| 41 | + <div class="uk-form-controls"> | |
| 42 | + <select name="xlDir"> | |
| 43 | + <option value="0">上行</option> | |
| 44 | + <option value="1">下行</option> | |
| 45 | + </select> | |
| 46 | + </div> | |
| 47 | + </div> | |
| 48 | + </div> | |
| 49 | + </div> | |
| 50 | + <div class="uk-grid"> | |
| 51 | + <div class="uk-width-1-2"> | |
| 52 | + <div class="uk-form-row"> | |
| 53 | + <label class="uk-form-label">起点站</label> | |
| 54 | + <div class="uk-form-controls"> | |
| 55 | + <select name="qdzCode" required> | |
| 56 | + </select> | |
| 57 | + </div> | |
| 58 | + </div> | |
| 59 | + </div> | |
| 60 | + <div class="uk-width-1-2"> | |
| 61 | + <div class="uk-form-row"> | |
| 62 | + <label class="uk-form-label">终点站</label> | |
| 63 | + <div class="uk-form-controls"> | |
| 64 | + <select name="zdzCode" required> | |
| 65 | + </select> | |
| 66 | + </div> | |
| 67 | + </div> | |
| 68 | + </div> | |
| 69 | + </div> | |
| 70 | + <div class="uk-grid"> | |
| 71 | + <div class="uk-width-1-2"> | |
| 72 | + <div class="uk-form-row"> | |
| 73 | + <label class="uk-form-label">开始时间</label> | |
| 74 | + <div class="uk-form-controls"> | |
| 75 | + <input type="time" value="{{zdsj}}" name="fcsj" required> | |
| 76 | + </div> | |
| 77 | + </div> | |
| 78 | + </div> | |
| 79 | + <div class="uk-width-1-2"> | |
| 80 | + <div class="uk-form-row"> | |
| 81 | + <label class="uk-form-label">结束时间</label> | |
| 82 | + <div class="uk-form-controls"> | |
| 83 | + <input type="time" name="zdsj" required> | |
| 84 | + </div> | |
| 85 | + </div> | |
| 86 | + </div> | |
| 87 | + </div> | |
| 88 | + <div class="uk-grid"> | |
| 89 | + <div class="uk-width-1-2"> | |
| 90 | + <div class="uk-form-row"> | |
| 91 | + <label class="uk-form-label">车辆</label> | |
| 92 | + <div class="uk-form-controls"> | |
| 93 | + <div class="uk-autocomplete uk-form car-autocom"> | |
| 94 | + <input type="text" value="{{clZbh}}" name="clZbh" required> | |
| 95 | + </div> | |
| 96 | + </div> | |
| 97 | + </div> | |
| 98 | + </div> | |
| 99 | + <div class="uk-width-1-2"> | |
| 100 | + <div class="uk-form-row"> | |
| 101 | + <label class="uk-form-label">里程</label> | |
| 102 | + <div class="uk-form-controls"> | |
| 103 | + <input type="text" name="jhlc" value="{{jhlc}}" max=222 data-fv-lessthan-inclusive="false" | |
| 104 | + required> | |
| 105 | + </div> | |
| 106 | + </div> | |
| 107 | + </div> | |
| 108 | + </div> | |
| 109 | + <div class="uk-grid"> | |
| 110 | + <div class="uk-width-1-2"> | |
| 111 | + <div class="uk-form-row"> | |
| 112 | + <label class="uk-form-label">驾驶员</label> | |
| 113 | + <div class="uk-form-controls"> | |
| 114 | + <div class="uk-autocomplete uk-form jsy-autocom"> | |
| 115 | + <input type="text" value="{{jGh}}/{{jName}}" name="jsy" required> | |
| 116 | + </div> | |
| 117 | + </div> | |
| 118 | + </div> | |
| 119 | + </div> | |
| 120 | + <div class="uk-width-1-2"> | |
| 121 | + <div class="uk-form-row"> | |
| 122 | + <label class="uk-form-label">售票员</label> | |
| 123 | + <div class="uk-form-controls"> | |
| 124 | + <div class="uk-autocomplete uk-form spy-autocom"> | |
| 125 | + <input type="text" name="spy" value="{{sGh}}/{{sName}}"> | |
| 126 | + </div> | |
| 127 | + </div> | |
| 128 | + </div> | |
| 129 | + </div> | |
| 130 | + </div> | |
| 131 | + <div class="uk-grid"> | |
| 132 | + <div class="uk-width-1-1"> | |
| 133 | + <div class="uk-form-row"> | |
| 134 | + <label class="uk-form-label">备注</label> | |
| 135 | + <div class="uk-form-controls"> | |
| 136 | + <div class="uk-autocomplete uk-form remarks-autocom"> | |
| 137 | + <input type="text" name="remarks"> | |
| 138 | + </div> | |
| 139 | + </div> | |
| 140 | + </div> | |
| 141 | + </div> | |
| 142 | + </div> | |
| 143 | + <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;"> | |
| 144 | + <span class="ct_line_lp_badge" ></span> | |
| 145 | + <button type="button" class="uk-button uk-modal-close">取消</button> | |
| 146 | + <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> 保存</button> | |
| 147 | + </div> | |
| 7 | 148 | </form> |
| 8 | - </div> | |
| 149 | + </script> | |
| 9 | 150 | |
| 10 | - <script id="schedule-addsch-form-temp" type="text/html"> | |
| 151 | + <!-- 线路上往返临加班次 --> | |
| 152 | + <script id="add_toAndFro_sch-form-temp" type="text/html"> | |
| 153 | + <form class="uk-form uk-form-horizontal one_form"> | |
| 11 | 154 | <div class="uk-grid"> |
| 12 | 155 | <div class="uk-width-1-2"> |
| 13 | 156 | <div class="uk-form-row"> |
| ... | ... | @@ -92,8 +235,7 @@ |
| 92 | 235 | <div class="uk-grid"> |
| 93 | 236 | <div class="uk-width-1-2"> |
| 94 | 237 | <div class="uk-form-row"> |
| 95 | - <label class="uk-form-label">驾驶员 | |
| 96 | - <!--<i class="uk-icon-question-circle" data-uk-tooltip title="如果有驾驶员未提示,请至后台“基础信息 -人员信息”里纠正该员工的“工种”类别 "></i>--></label> | |
| 238 | + <label class="uk-form-label">驾驶员</label> | |
| 97 | 239 | <div class="uk-form-controls"> |
| 98 | 240 | <div class="uk-autocomplete uk-form jsy-autocom"> |
| 99 | 241 | <input type="text" value="{{jGh}}/{{jName}}" name="jsy" required> |
| ... | ... | @@ -112,7 +254,140 @@ |
| 112 | 254 | </div> |
| 113 | 255 | </div> |
| 114 | 256 | </div> |
| 257 | + <div class="uk-grid"> | |
| 258 | + <div class="uk-width-1-1"> | |
| 259 | + <div class="uk-form-row"> | |
| 260 | + <label class="uk-form-label">备注</label> | |
| 261 | + <div class="uk-form-controls"> | |
| 262 | + <div class="uk-autocomplete uk-form remarks-autocom"> | |
| 263 | + <input type="text" name="remarks"> | |
| 264 | + </div> | |
| 265 | + </div> | |
| 266 | + </div> | |
| 267 | + </div> | |
| 268 | + </div> | |
| 269 | + </form> | |
| 270 | + <hr style="margin-top: 35px;"> | |
| 271 | + <form class="uk-form uk-form-horizontal two_form"> | |
| 272 | + <div class="uk-grid"> | |
| 273 | + <div class="uk-width-1-2"> | |
| 274 | + <div class="uk-form-row"> | |
| 275 | + <label class="uk-form-label">班次类型</label> | |
| 276 | + <div class="uk-form-controls"> | |
| 277 | + <select class="form-control nt-dictionary" name="bcType" data-code="{{bcType}}" | |
| 278 | + data-group=ScheduleType></select> | |
| 279 | + </div> | |
| 280 | + </div> | |
| 281 | + </div> | |
| 282 | + <div class="uk-width-1-2"> | |
| 283 | + <div class="uk-form-row"> | |
| 284 | + <label class="uk-form-label">上下行</label> | |
| 285 | + <div class="uk-form-controls"> | |
| 286 | + <select name="xlDir"> | |
| 287 | + <option value="0">上行</option> | |
| 288 | + <option value="1">下行</option> | |
| 289 | + </select> | |
| 290 | + </div> | |
| 291 | + </div> | |
| 292 | + </div> | |
| 293 | + </div> | |
| 294 | + <div class="uk-grid"> | |
| 295 | + <div class="uk-width-1-2"> | |
| 296 | + <div class="uk-form-row"> | |
| 297 | + <label class="uk-form-label">起点站</label> | |
| 298 | + <div class="uk-form-controls"> | |
| 299 | + <select name="qdzCode" required> | |
| 300 | + </select> | |
| 301 | + </div> | |
| 302 | + </div> | |
| 303 | + </div> | |
| 304 | + <div class="uk-width-1-2"> | |
| 305 | + <div class="uk-form-row"> | |
| 306 | + <label class="uk-form-label">终点站</label> | |
| 307 | + <div class="uk-form-controls"> | |
| 308 | + <select name="zdzCode" required> | |
| 309 | + </select> | |
| 310 | + </div> | |
| 311 | + </div> | |
| 312 | + </div> | |
| 313 | + </div> | |
| 314 | + <div class="uk-grid"> | |
| 315 | + <div class="uk-width-1-2"> | |
| 316 | + <div class="uk-form-row"> | |
| 317 | + <label class="uk-form-label">开始时间</label> | |
| 318 | + <div class="uk-form-controls"> | |
| 319 | + <input type="time" value="{{zdsj}}" name="fcsj" required> | |
| 320 | + </div> | |
| 321 | + </div> | |
| 322 | + </div> | |
| 323 | + <div class="uk-width-1-2"> | |
| 324 | + <div class="uk-form-row"> | |
| 325 | + <label class="uk-form-label">结束时间</label> | |
| 326 | + <div class="uk-form-controls"> | |
| 327 | + <input type="time" name="zdsj" required> | |
| 328 | + </div> | |
| 329 | + </div> | |
| 330 | + </div> | |
| 331 | + </div> | |
| 332 | + <div class="uk-grid"> | |
| 333 | + <div class="uk-width-1-2"> | |
| 334 | + <div class="uk-form-row"> | |
| 335 | + <label class="uk-form-label">车辆</label> | |
| 336 | + <div class="uk-form-controls"> | |
| 337 | + <div class="uk-autocomplete uk-form car-autocom"> | |
| 338 | + <input type="text" value="{{clZbh}}" name="clZbh" required> | |
| 339 | + </div> | |
| 340 | + </div> | |
| 341 | + </div> | |
| 342 | + </div> | |
| 343 | + <div class="uk-width-1-2"> | |
| 344 | + <div class="uk-form-row"> | |
| 345 | + <label class="uk-form-label">里程</label> | |
| 346 | + <div class="uk-form-controls"> | |
| 347 | + <input type="text" name="jhlc" value="{{jhlc}}" max=222 data-fv-lessthan-inclusive="false" | |
| 348 | + required> | |
| 349 | + </div> | |
| 350 | + </div> | |
| 351 | + </div> | |
| 352 | + </div> | |
| 353 | + <div class="uk-grid"> | |
| 354 | + <div class="uk-width-1-2"> | |
| 355 | + <div class="uk-form-row"> | |
| 356 | + <label class="uk-form-label">驾驶员</label> | |
| 357 | + <div class="uk-form-controls"> | |
| 358 | + <div class="uk-autocomplete uk-form jsy-autocom"> | |
| 359 | + <input type="text" value="{{jGh}}/{{jName}}" name="jsy" required> | |
| 360 | + </div> | |
| 361 | + </div> | |
| 362 | + </div> | |
| 363 | + </div> | |
| 364 | + <div class="uk-width-1-2"> | |
| 365 | + <div class="uk-form-row"> | |
| 366 | + <label class="uk-form-label">售票员</label> | |
| 367 | + <div class="uk-form-controls"> | |
| 368 | + <div class="uk-autocomplete uk-form spy-autocom"> | |
| 369 | + <input type="text" name="spy" value="{{sGh}}/{{sName}}"> | |
| 370 | + </div> | |
| 371 | + </div> | |
| 372 | + </div> | |
| 373 | + </div> | |
| 374 | + </div> | |
| 375 | + <div class="uk-grid"> | |
| 376 | + <div class="uk-width-1-1"> | |
| 377 | + <div class="uk-form-row"> | |
| 378 | + <label class="uk-form-label">备注</label> | |
| 379 | + <div class="uk-form-controls"> | |
| 380 | + <div class="uk-autocomplete uk-form remarks-autocom"> | |
| 381 | + <input type="text" name="remarks"> | |
| 382 | + </div> | |
| 383 | + </div> | |
| 384 | + </div> | |
| 385 | + </div> | |
| 386 | + </div> | |
| 387 | + </form> | |
| 388 | + | |
| 115 | 389 | <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;"> |
| 390 | + <span class="ct_line_lp_badge" ></span> | |
| 116 | 391 | <button type="button" class="uk-button uk-modal-close">取消</button> |
| 117 | 392 | <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> 保存</button> |
| 118 | 393 | </div> |
| ... | ... | @@ -121,146 +396,404 @@ |
| 121 | 396 | <script> |
| 122 | 397 | (function () { |
| 123 | 398 | var modal = '#schedule-addsch-modal', |
| 124 | - sch, stationRoutes, parks, information; | |
| 399 | + sch, stationRoutes, parks, information,carsArray; | |
| 125 | 400 | |
| 126 | - var normalInfo = []; | |
| 127 | 401 | $(modal).on('init', function (e, data) { |
| 128 | 402 | e.stopPropagation(); |
| 129 | 403 | sch = data.sch; |
| 130 | - //normal 班次里程和耗时 | |
| 131 | - var list = gb_common.get_vals(gb_schedule_table.findScheduleByLine(sch.xlBm)); | |
| 132 | - var upPlan = getNormalSch(list, 0) | |
| 133 | - , downPlan = getNormalSch(list, 1); | |
| 134 | - normalInfo[0] = {time: upPlan.bcsj, mileage: upPlan.jhlc}; | |
| 135 | - normalInfo[1] = {time: downPlan.bcsj, mileage: downPlan.jhlc}; | |
| 136 | - | |
| 137 | - | |
| 138 | - var formHtml = template('schedule-addsch-form-temp', sch); | |
| 139 | - $('form', modal).html(formHtml); | |
| 140 | - //字典转换 | |
| 141 | - dictionaryUtils.transformDom($('.nt-dictionary', modal)); | |
| 142 | - | |
| 143 | - //----------- Autocomplete -------------- | |
| 144 | - $.get('/basic/cars', function (rs) { | |
| 145 | - //车辆 | |
| 146 | - gb_common.carAutocomplete($('.car-autocom', modal), rs); | |
| 147 | - }); | |
| 148 | - //驾驶员 | |
| 149 | - gb_common.personAutocomplete($('.jsy-autocom', modal)); | |
| 150 | - | |
| 151 | - //售票员 | |
| 152 | - gb_common.personAutocomplete($('.spy-autocom', modal)); | |
| 153 | - | |
| 154 | 404 | //站点路由 |
| 155 | 405 | stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) { |
| 156 | 406 | return a.stationRouteCode - b.stationRouteCode; |
| 157 | 407 | }), 'directions'); |
| 158 | 408 | //停车场 |
| 159 | - $.get('/basic/parks', function (rs) { | |
| 160 | - parks = rs; | |
| 161 | - }); | |
| 409 | + parks = gb_data_basic.simpleParksArray(); | |
| 162 | 410 | //线路标准 |
| 163 | 411 | information = gb_data_basic.getLineInformation(sch.xlBm); |
| 412 | + //车辆信息 | |
| 413 | + carsArray = gb_data_basic.carsArray(); | |
| 164 | 414 | |
| 165 | - //submit | |
| 166 | - var f = $('form', modal).formValidation(gb_form_validation_opts); | |
| 167 | - f.on('success.form.fv', function (e) { | |
| 168 | - disabled_submit_btn(this); | |
| 169 | - e.preventDefault(); | |
| 170 | - var data = $(this).serializeJSON(); | |
| 171 | - data.xlBm = sch.xlBm; | |
| 172 | - data.xlName = sch.xlName; | |
| 173 | - data.lpName = sch.lpName; | |
| 174 | - //拆分驾驶员工号和姓名 | |
| 175 | - data.jGh = data.jsy.split('/')[0]; | |
| 176 | - data.jName = data.jsy.split('/')[1]; | |
| 177 | - delete data.jsy; | |
| 178 | - //拆分售票员工号和姓名 | |
| 179 | - if (data.sGh != null) { | |
| 180 | - data.sGh = data.spy.split('/')[0]; | |
| 181 | - data.sName = data.spy.split('/')[1]; | |
| 182 | - delete data.spy; | |
| 183 | - } | |
| 415 | + //监听tab切换事件 | |
| 416 | + $('.left_tabs_lg[data-uk-switcher]', modal).on('show.uk.switcher', function (event, area) { | |
| 417 | + var handle = area.data('handle'); | |
| 418 | + $('#tempScheduleContent>li').empty(); | |
| 419 | + leftTabsHandles[handle](); | |
| 420 | + }); | |
| 421 | + }); | |
| 184 | 422 | |
| 185 | - //公司信息 | |
| 186 | - var line = gb_data_basic.findLineByCodes([data.xlBm]); | |
| 187 | - if(line && line.length > 0){ | |
| 188 | - line = line[0]; | |
| 189 | - data.gsBm = line.company; | |
| 190 | - data.fgsBm = line.brancheCompany; | |
| 191 | - } | |
| 423 | + function setEndTime(diff, f) { | |
| 424 | + var et = moment($('[name=fcsj]', f).val(), 'HH:mm').add(diff, 'minutes').format('HH:mm'); | |
| 425 | + $('[name=zdsj]', f).val(et); | |
| 426 | + } | |
| 427 | + | |
| 428 | + function initAutoCom(f) { | |
| 429 | + //车辆 | |
| 430 | + if(carsArray) | |
| 431 | + gb_common.carAutocomplete($('.car-autocom', f), carsArray); | |
| 432 | + //驾驶员 | |
| 433 | + gb_common.personAutocomplete($('.jsy-autocom', f)); | |
| 434 | + //售票员 | |
| 435 | + gb_common.personAutocomplete($('.spy-autocom', f)); | |
| 436 | + //备注补全 | |
| 437 | + gb_common.remarksAutocomplete($('.remarks-autocom', f)); | |
| 438 | + } | |
| 439 | + | |
| 440 | + function initScheduleTypeChange(f, cb) { | |
| 441 | + (function (f, cb) { | |
| 442 | + $('[name=bcType],[name=xlDir]', f).on('change', function () { | |
| 443 | + var bcType_e = $('[name=bcType]', f) | |
| 444 | + , xlDir_e = $('[name=xlDir]', f); | |
| 445 | + | |
| 446 | + var routes = stationRoutes[xlDir_e.val()] | |
| 447 | + , lastCode = routes[routes.length - 1].stationCode | |
| 448 | + , opts = '', park_opts = ''; | |
| 449 | + //station options | |
| 450 | + $.each(routes, function () { | |
| 451 | + opts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>' | |
| 452 | + }); | |
| 453 | + //park options | |
| 454 | + for (var code in parks) | |
| 455 | + park_opts += '<option value="' + code + '">' + parks[code] + '</option>'; | |
| 456 | + | |
| 457 | + var qdz = $('[name=qdzCode]', f), zdz = $('[name=zdzCode]', f); | |
| 458 | + var time, mileage; | |
| 459 | + switch (bcType_e.val()) { | |
| 460 | + case 'out': | |
| 461 | + qdz.html(park_opts).val(information.carPark); | |
| 462 | + zdz.html(opts); | |
| 463 | + //出场结束时间 | |
| 464 | + time = xlDir_e.val() == 0 ? information.upOutTimer : information.downOutTimer; | |
| 465 | + mileage = xlDir_e.val() == 0 ? information.upOutMileage : information.downOutMileage; | |
| 466 | + break; | |
| 467 | + case 'in': | |
| 468 | + qdz.html(opts); | |
| 469 | + zdz.html(park_opts).val(information.carPark); | |
| 470 | + //进场结束时间 | |
| 471 | + time = xlDir_e.val() == 0 ? information.upInTimer : information.downInTimer; | |
| 472 | + mileage = xlDir_e.val() == 0 ? information.upInMileage : information.downInMileage; | |
| 473 | + break; | |
| 474 | + default: | |
| 475 | + qdz.html(opts); | |
| 476 | + zdz.html(opts).val(lastCode); | |
| 477 | + time = xlDir_e.val() == 0?information.upTravelTime:information.downTravelTime; | |
| 478 | + mileage = xlDir_e.val() == 0?information.upMileage:information.downMileage; | |
| 479 | + } | |
| 192 | 480 | |
| 193 | - gb_common.$post('/realSchedule', data, function (rs) { | |
| 194 | - //插入 | |
| 195 | - gb_schedule_table.insertSchedule(rs.t, rs.ts); | |
| 196 | - $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: rs.t}); | |
| 197 | - UIkit.modal(modal).hide(); | |
| 198 | - notify_succ('新增临加班次成功'); | |
| 481 | + setEndTime(time, f); | |
| 482 | + $('[name=jhlc]', f).val(mileage); | |
| 483 | + | |
| 484 | + cb && cb(); | |
| 485 | + }).trigger('change'); | |
| 486 | + })(f, cb); | |
| 487 | + } | |
| 488 | + | |
| 489 | + function initStationChange(f, cb) { | |
| 490 | + (function (f, cb) { | |
| 491 | + //起点站改变 | |
| 492 | + $('[name=qdzCode]', f).on('change', function () { | |
| 493 | + var bcType = $('[name=bcType]', f).val(); | |
| 494 | + if(bcType!='in' && bcType!='out'){ | |
| 495 | + var ops = $('[name=zdzCode]', f).find('option'); | |
| 496 | + var flag, code = $(this).val(); | |
| 497 | + $.each(ops, function () { | |
| 498 | + if (!flag) | |
| 499 | + $(this).attr('disabled', 'disabled'); | |
| 500 | + else | |
| 501 | + $(this).removeAttr('disabled'); | |
| 502 | + if (this.value == code) | |
| 503 | + flag = true; | |
| 504 | + }); | |
| 505 | + setBcType(f); | |
| 506 | + } | |
| 507 | + cb && cb(); | |
| 199 | 508 | }); |
| 200 | - }); | |
| 509 | + //终点站改变 | |
| 510 | + $('[name=zdzCode]', f).on('change', function () { | |
| 511 | + var bcType = $('[name=bcType]', f).val(); | |
| 512 | + if(bcType!='in' && bcType!='out'){ | |
| 513 | + var ops = $('[name=qdzCode]', f).find('option'); | |
| 514 | + var flag, code = $(this).val(); | |
| 515 | + $.each(ops, function () { | |
| 516 | + if (this.value == code) | |
| 517 | + flag = true; | |
| 518 | + | |
| 519 | + if (flag) | |
| 520 | + $(this).attr('disabled', 'disabled'); | |
| 521 | + else | |
| 522 | + $(this).removeAttr('disabled'); | |
| 523 | + }); | |
| 524 | + setBcType(f); | |
| 525 | + } | |
| 201 | 526 | |
| 202 | - //班次类型 和 上下行切换 | |
| 203 | - $('[name=bcType],[name=xlDir]', f).on('change', function () { | |
| 204 | - var bcType_e = $('[name=bcType]', f) | |
| 205 | - , xlDir_e = $('[name=xlDir]', f); | |
| 206 | - | |
| 207 | - var routes = stationRoutes[xlDir_e.val()] | |
| 208 | - , lastCode = routes[routes.length - 1].stationCode | |
| 209 | - , opts = '', park_opts = ''; | |
| 210 | - //station options | |
| 211 | - $.each(routes, function () { | |
| 212 | - opts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>' | |
| 527 | + cb && cb(); | |
| 213 | 528 | }); |
| 214 | - //park options | |
| 215 | - for (var code in parks) | |
| 216 | - park_opts += '<option value="' + code + '">' + parks[code] + '</option>'; | |
| 217 | - | |
| 218 | - var qdz = $('[name=qdzCode]', f), zdz = $('[name=zdzCode]', f); | |
| 219 | - var time, mileage; | |
| 220 | - switch (bcType_e.val()) { | |
| 221 | - case 'out': | |
| 222 | - qdz.html(park_opts).val(information.carPark); | |
| 223 | - zdz.html(opts); | |
| 224 | - //出场结束时间 | |
| 225 | - time = xlDir_e.val() == 0 ? information.upOutTimer : information.downOutTimer; | |
| 226 | - mileage = xlDir_e.val() == 0 ? information.upOutMileage : information.downOutMileage; | |
| 227 | - break; | |
| 228 | - case 'in': | |
| 229 | - qdz.html(opts); | |
| 230 | - zdz.html(park_opts).val(information.carPark); | |
| 231 | - //进场结束时间 | |
| 232 | - time = xlDir_e.val() == 0 ? information.upInTimer : information.downInTimer; | |
| 233 | - mileage = xlDir_e.val() == 0 ? information.upInMileage : information.downInMileage; | |
| 234 | - break; | |
| 235 | - default: | |
| 236 | - qdz.html(opts); | |
| 237 | - zdz.html(opts).val(lastCode); | |
| 238 | - time = xlDir_e.val() == 0?normalInfo[0].time:normalInfo[1].time; | |
| 239 | - mileage = xlDir_e.val() == 0?normalInfo[0].mileage:normalInfo[1].mileage; | |
| 240 | - } | |
| 529 | + })(f, cb); | |
| 530 | + } | |
| 241 | 531 | |
| 242 | - setEndTime(time); | |
| 532 | + function setBcType(f) { | |
| 533 | + var qdzCode = $('[name=qdzCode]', f).val(), | |
| 534 | + zdzCode =$('[name=zdzCode]', f).val(), | |
| 535 | + updown = $('[name=xlDir]', f).val(); | |
| 536 | + var rts = stationRoutes[updown]; | |
| 537 | + if(rts[0].stationCode == qdzCode | |
| 538 | + && rts[rts.length - 1].stationCode == zdzCode){ | |
| 539 | + $('[name=bcType]', f).val('normal'); | |
| 540 | + $('[name=jhlc]', f).val(updown == 0?information.upMileage:information.downMileage); | |
| 541 | + } | |
| 542 | + else { | |
| 543 | + var type = $('[name=bcType]', f).val(); | |
| 544 | + if(type=='in' || type=='out') | |
| 545 | + return; | |
| 546 | + $('[name=bcType]', f).val('region'); | |
| 547 | + //计算区间站点间公里 | |
| 548 | + var mileage = calcMileage(qdzCode, zdzCode, rts); | |
| 243 | 549 | $('[name=jhlc]', f).val(mileage); |
| 244 | - }).trigger('change'); | |
| 550 | + } | |
| 551 | + } | |
| 245 | 552 | |
| 553 | + function calcMileage(s, e, rts) { | |
| 554 | + var mileage = 0, flag, code; | |
| 555 | + //从原始站点路由字段里取值 | |
| 556 | + $.each(rts, function () { | |
| 557 | + code = this['stationCode']; | |
| 558 | + if (flag) | |
| 559 | + mileage = gb_common.accAdd(mileage, this.distances); | |
| 560 | + if (code == s) | |
| 561 | + flag = true; | |
| 562 | + if (code == e) | |
| 563 | + return false; | |
| 564 | + }); | |
| 565 | + return mileage; | |
| 566 | + } | |
| 246 | 567 | |
| 247 | - function setEndTime(diff) { | |
| 248 | - var et = moment($('[name=fcsj]', f).val(), 'HH:mm').add(diff, 'minutes').format('HH:mm'); | |
| 249 | - $('[name=zdsj]', f).val(et); | |
| 568 | + /** | |
| 569 | + * 提交表单 | |
| 570 | + */ | |
| 571 | + var submitScheduleForm = function (data, cb) { | |
| 572 | + data.xlBm = sch.xlBm; | |
| 573 | + data.xlName = sch.xlName; | |
| 574 | + data.lpName = sch.lpName; | |
| 575 | + //拆分驾驶员工号和姓名 | |
| 576 | + data.jGh = data.jsy.split('/')[0]; | |
| 577 | + data.jName = data.jsy.split('/')[1]; | |
| 578 | + delete data.jsy; | |
| 579 | + //拆分售票员工号和姓名 | |
| 580 | + if (data.sGh != null) { | |
| 581 | + data.sGh = data.spy.split('/')[0]; | |
| 582 | + data.sName = data.spy.split('/')[1]; | |
| 583 | + delete data.spy; | |
| 250 | 584 | } |
| 251 | - }); | |
| 252 | 585 | |
| 253 | - function getNormalSch(list, updown) { | |
| 254 | - var sch; | |
| 255 | - $.each(list, function () { | |
| 256 | - if (this.bcType == 'normal' && this.xlDir == updown) { | |
| 257 | - sch = this; | |
| 258 | - return false; | |
| 259 | - } | |
| 586 | + //公司信息 | |
| 587 | + var line = gb_data_basic.findLineByCodes([data.xlBm]); | |
| 588 | + if(line && line.length > 0){ | |
| 589 | + line = line[0]; | |
| 590 | + data.gsBm = line.company; | |
| 591 | + data.fgsBm = line.brancheCompany; | |
| 592 | + } | |
| 593 | + | |
| 594 | + gb_common.$post('/realSchedule', data, function (rs) { | |
| 595 | + notify_succ('新增临加班次成功'); | |
| 596 | + cb && cb(rs); | |
| 260 | 597 | }); |
| 598 | + }; | |
| 599 | + | |
| 600 | + /** | |
| 601 | + * 普通单程临加班次 | |
| 602 | + * @type {{show}} | |
| 603 | + */ | |
| 604 | + var normalObj = (function () { | |
| 605 | + var cont = $('.normalCont', modal); | |
| 606 | + var show = function () { | |
| 607 | + var formHtml = template('add_normal_sch-form-temp', sch); | |
| 608 | + cont.html(formHtml); | |
| 609 | + var f = $('form', cont); | |
| 610 | + | |
| 611 | + initAutoCom(f); | |
| 612 | + //字典转换 | |
| 613 | + dictionaryUtils.transformDom($('.nt-dictionary', f)); | |
| 614 | + //站点切换 | |
| 615 | + initStationChange(f); | |
| 616 | + //类型、走向切换 | |
| 617 | + initScheduleTypeChange(f); | |
| 618 | + | |
| 619 | + //校验 | |
| 620 | + f.formValidation({framework: 'uikit', locale: 'zh_CN'}); | |
| 621 | + //提交 | |
| 622 | + f.on('success.form.fv', function (e) { | |
| 623 | + e.preventDefault(); | |
| 624 | + | |
| 625 | + disabled_submit_btn(f); | |
| 626 | + var data = $(f).serializeJSON(); | |
| 627 | + submitScheduleForm(data, function (rs) { | |
| 628 | + //前端数据更新 | |
| 629 | + gb_schedule_table.insertSchedule(rs.t, rs.ts); | |
| 630 | + $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: rs.t}); | |
| 631 | + UIkit.modal(modal).hide(); | |
| 632 | + }); | |
| 633 | + }); | |
| 634 | + $('.ct_line_lp_badge', f).html(sch.xlName + ', '+sch.lpName); | |
| 635 | + }; | |
| 636 | + | |
| 637 | + return { | |
| 638 | + show: show | |
| 639 | + } | |
| 640 | + })(); | |
| 641 | + | |
| 642 | + /** | |
| 643 | + * 线路上往返 | |
| 644 | + */ | |
| 645 | + var toAndFroObj = (function () { | |
| 646 | + var cont = $('.toAndFroCont', modal); | |
| 647 | + var show = function () { | |
| 648 | + var formHtml = template('add_toAndFro_sch-form-temp', sch); | |
| 649 | + cont.html(formHtml); | |
| 650 | + //字典转换 | |
| 651 | + dictionaryUtils.transformDom($('.nt-dictionary', cont)); | |
| 652 | + var f1 = $('.one_form', cont); | |
| 653 | + var f2 = $('.two_form', cont); | |
| 654 | + //第1个表单事件 | |
| 655 | + initStationChange(f1, synchroFormData); | |
| 656 | + initScheduleTypeChange(f1, synchroFormData); | |
| 657 | + //第2个表单事件 | |
| 658 | + initStationChange(f2); | |
| 659 | + initScheduleTypeChange(f2); | |
| 660 | + //第一个结束时间改变 | |
| 661 | + $('[name=zdsj]', f1).on('input', synchroTimes).trigger('input'); | |
| 662 | + //默认1备注同步到2 | |
| 663 | + $('.remarks-autocom', f1).on('selectitem.uk.autocomplete', function (e, data, acobject) { | |
| 664 | + $('[name=remarks]', f2).val(data.value); | |
| 665 | + }); | |
| 666 | + //自动补全 | |
| 667 | + initAutoCom(f1); | |
| 668 | + initAutoCom(f2); | |
| 669 | + | |
| 670 | + //表单校验提交相关 | |
| 671 | + var dataArray; | |
| 672 | + var fs = $('form', cont); | |
| 673 | + fs.formValidation({framework: 'uikit', locale: 'zh_CN'}); | |
| 674 | + fs.on('success.form.fv', function (e) { | |
| 675 | + e.preventDefault(); | |
| 676 | + dataArray.push($(this).serializeJSON()); | |
| 677 | + $(this).data('valid', true); | |
| 678 | + if (allValidSuccess()) { | |
| 679 | + //开始post | |
| 680 | + var i = 0; | |
| 681 | + var inArr = []; | |
| 682 | + var upArr = []; | |
| 683 | + (function () { | |
| 684 | + var f = arguments.callee; | |
| 685 | + if (i >= dataArray.length) { | |
| 686 | + //前端数据更新 | |
| 687 | + var last = inArr.pop(); | |
| 688 | + gb_schedule_table.insertSchedule(last, upArr); | |
| 689 | + $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: last}); | |
| 690 | + UIkit.modal(modal).hide(); | |
| 691 | + return; | |
| 692 | + } | |
| 693 | + submitScheduleForm(dataArray[i], function (rs) { | |
| 694 | + inArr.push(rs.t); | |
| 695 | + upArr = upArr.concat(rs.ts); | |
| 696 | + upArr.push(rs.t); | |
| 697 | + i++; | |
| 698 | + f(); | |
| 699 | + }); | |
| 700 | + })(); | |
| 701 | + } | |
| 702 | + }); | |
| 703 | + //提交 | |
| 704 | + $('[type=submit]', cont).on('click', function () { | |
| 705 | + $(this).addClass('disabled').attr('disabled', 'disabled'); | |
| 706 | + dataArray = []; | |
| 707 | + fs.data('valid', false); | |
| 708 | + fs.formValidation('validate'); | |
| 709 | + }); | |
| 710 | + $('.ct_line_lp_badge', cont).html(sch.xlName + ', '+sch.lpName); | |
| 711 | + }; | |
| 712 | + | |
| 713 | + function allValidSuccess() { | |
| 714 | + var flag = true; | |
| 715 | + $('form:visible', cont).each(function (i, f) { | |
| 716 | + if (!$(f).data('valid')) { | |
| 717 | + flag = false; | |
| 718 | + return false; | |
| 719 | + } | |
| 720 | + }); | |
| 721 | + return flag; | |
| 722 | + } | |
| 261 | 723 | |
| 262 | - return sch; | |
| 724 | + /** | |
| 725 | + * 同步2个表单的数据 | |
| 726 | + */ | |
| 727 | + var bcTypes = {'normal': 'normal', 'region': 'region', 'out': 'in', 'in': 'out'}; | |
| 728 | + var synchroFormData = function () { | |
| 729 | + var f1 = $('.one_form', cont); | |
| 730 | + var f2 = $('.two_form', cont); | |
| 731 | + | |
| 732 | + //同步班次类型 | |
| 733 | + var type = $('[name=bcType]', f1).val(); | |
| 734 | + if (bcTypes[type]) | |
| 735 | + $('[name=bcType]', f2).val(bcTypes[type]).trigger('change'); | |
| 736 | + var updown = $('[name=xlDir]', f1).val(); | |
| 737 | + | |
| 738 | + if (type != 'out' && type != 'in') { | |
| 739 | + //走向 | |
| 740 | + $('[name=xlDir]', f2).val(updown == 0 ? 1 : 0).trigger('change'); | |
| 741 | + | |
| 742 | + //第一个表单终点 = 第二个起点 | |
| 743 | + var oneZdName = $('[name=zdzCode] option:selected', f1).text(); | |
| 744 | + $('[name=qdzCode]', f2).val(searchParallelStation(oneZdName, updown == 0 ? 1 : 0)).trigger('change'); | |
| 745 | + //第一个表单起点 = 第二个终点 | |
| 746 | + var oneQdName = $('[name=qdzCode] option:selected', f1).text(); | |
| 747 | + $('[name=zdzCode]', f2).val(searchParallelStation(oneQdName, updown == 0 ? 1 : 0)).trigger('change'); | |
| 748 | + } | |
| 749 | + else { | |
| 750 | + //进出场走向相同 | |
| 751 | + $('[name=xlDir]', f2).val(updown).trigger('change'); | |
| 752 | + //第一个表单终点 = 第二个起点 | |
| 753 | + $('[name=qdzCode]', f2).val($('[name=zdzCode]', f1).val()); | |
| 754 | + //第一个表单起点 = 第二个终点 | |
| 755 | + $('[name=zdzCode]', f2).val($('[name=qdzCode]', f1).val()); | |
| 756 | + } | |
| 757 | + }; | |
| 758 | + | |
| 759 | + /** | |
| 760 | + * 同步时间 | |
| 761 | + */ | |
| 762 | + var synchroTimes = function () { | |
| 763 | + var f1 = $('.one_form', cont); | |
| 764 | + var f2 = $('.two_form', cont); | |
| 765 | + var updown = $('[name=xlDir]', f2).val(); | |
| 766 | + var oneZdsj = $('[name=zdsj]', f1).val(); | |
| 767 | + | |
| 768 | + //全程班次历时 | |
| 769 | + var diff = updown==0?information.upTravelTime:information.downTravelTime; | |
| 770 | + //设置第二个表单开始时间 | |
| 771 | + $('[name=fcsj]', f2).val(oneZdsj); | |
| 772 | + setEndTime(diff, f2); | |
| 773 | + }; | |
| 774 | + | |
| 775 | + return { | |
| 776 | + show : show | |
| 777 | + } | |
| 778 | + })(); | |
| 779 | + | |
| 780 | + /** 左 tabs 切换处理*/ | |
| 781 | + var leftTabsHandles = { | |
| 782 | + normal: normalObj.show, | |
| 783 | + toAndFro: toAndFroObj.show | |
| 784 | + }; | |
| 785 | + | |
| 786 | + //返回另一个走向对应的站点 | |
| 787 | + function searchParallelStation(stationName, updown) { | |
| 788 | + var routes = stationRoutes[updown] | |
| 789 | + , len = routes.length; | |
| 790 | + | |
| 791 | + for (var i = 0; i < len; i++) { | |
| 792 | + if (routes[i].stationName == stationName) | |
| 793 | + return routes[i].stationCode; | |
| 794 | + } | |
| 263 | 795 | } |
| 796 | + | |
| 264 | 797 | })(); |
| 265 | 798 | </script> |
| 266 | 799 | </div> | ... | ... |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/add_temp_sch_old.html
0 → 100644
| 1 | +<div class="uk-modal ct-form-modal ct_move_modal" id="schedule-addsch-modal"> | |
| 2 | + <div class="uk-modal-dialog"> | |
| 3 | + <a href="" class="uk-modal-close uk-close"></a> | |
| 4 | + <div class="uk-modal-header"> | |
| 5 | + <h2>新增临加班次</h2></div> | |
| 6 | + <form class="uk-form uk-form-horizontal"> | |
| 7 | + </form> | |
| 8 | + </div> | |
| 9 | + | |
| 10 | + <script id="schedule-addsch-form-temp" type="text/html"> | |
| 11 | + <div class="uk-grid"> | |
| 12 | + <div class="uk-width-1-2"> | |
| 13 | + <div class="uk-form-row"> | |
| 14 | + <label class="uk-form-label">班次类型</label> | |
| 15 | + <div class="uk-form-controls"> | |
| 16 | + <select class="form-control nt-dictionary" name="bcType" data-code="{{bcType}}" | |
| 17 | + data-group=ScheduleType></select> | |
| 18 | + </div> | |
| 19 | + </div> | |
| 20 | + </div> | |
| 21 | + <div class="uk-width-1-2"> | |
| 22 | + <div class="uk-form-row"> | |
| 23 | + <label class="uk-form-label">上下行</label> | |
| 24 | + <div class="uk-form-controls"> | |
| 25 | + <select name="xlDir"> | |
| 26 | + <option value="0">上行</option> | |
| 27 | + <option value="1">下行</option> | |
| 28 | + </select> | |
| 29 | + </div> | |
| 30 | + </div> | |
| 31 | + </div> | |
| 32 | + </div> | |
| 33 | + <div class="uk-grid"> | |
| 34 | + <div class="uk-width-1-2"> | |
| 35 | + <div class="uk-form-row"> | |
| 36 | + <label class="uk-form-label">起点站</label> | |
| 37 | + <div class="uk-form-controls"> | |
| 38 | + <select name="qdzCode" required> | |
| 39 | + </select> | |
| 40 | + </div> | |
| 41 | + </div> | |
| 42 | + </div> | |
| 43 | + <div class="uk-width-1-2"> | |
| 44 | + <div class="uk-form-row"> | |
| 45 | + <label class="uk-form-label">终点站</label> | |
| 46 | + <div class="uk-form-controls"> | |
| 47 | + <select name="zdzCode" required> | |
| 48 | + </select> | |
| 49 | + </div> | |
| 50 | + </div> | |
| 51 | + </div> | |
| 52 | + </div> | |
| 53 | + <div class="uk-grid"> | |
| 54 | + <div class="uk-width-1-2"> | |
| 55 | + <div class="uk-form-row"> | |
| 56 | + <label class="uk-form-label">开始时间</label> | |
| 57 | + <div class="uk-form-controls"> | |
| 58 | + <input type="time" value="{{zdsj}}" name="fcsj" required> | |
| 59 | + </div> | |
| 60 | + </div> | |
| 61 | + </div> | |
| 62 | + <div class="uk-width-1-2"> | |
| 63 | + <div class="uk-form-row"> | |
| 64 | + <label class="uk-form-label">结束时间</label> | |
| 65 | + <div class="uk-form-controls"> | |
| 66 | + <input type="time" name="zdsj" required> | |
| 67 | + </div> | |
| 68 | + </div> | |
| 69 | + </div> | |
| 70 | + </div> | |
| 71 | + <div class="uk-grid"> | |
| 72 | + <div class="uk-width-1-2"> | |
| 73 | + <div class="uk-form-row"> | |
| 74 | + <label class="uk-form-label">车辆</label> | |
| 75 | + <div class="uk-form-controls"> | |
| 76 | + <div class="uk-autocomplete uk-form car-autocom"> | |
| 77 | + <input type="text" value="{{clZbh}}" name="clZbh" required> | |
| 78 | + </div> | |
| 79 | + </div> | |
| 80 | + </div> | |
| 81 | + </div> | |
| 82 | + <div class="uk-width-1-2"> | |
| 83 | + <div class="uk-form-row"> | |
| 84 | + <label class="uk-form-label">里程</label> | |
| 85 | + <div class="uk-form-controls"> | |
| 86 | + <input type="text" name="jhlc" value="{{jhlc}}" max=222 data-fv-lessthan-inclusive="false" | |
| 87 | + required> | |
| 88 | + </div> | |
| 89 | + </div> | |
| 90 | + </div> | |
| 91 | + </div> | |
| 92 | + <div class="uk-grid"> | |
| 93 | + <div class="uk-width-1-2"> | |
| 94 | + <div class="uk-form-row"> | |
| 95 | + <label class="uk-form-label">驾驶员 | |
| 96 | + <!--<i class="uk-icon-question-circle" data-uk-tooltip title="如果有驾驶员未提示,请至后台“基础信息 -人员信息”里纠正该员工的“工种”类别 "></i>--></label> | |
| 97 | + <div class="uk-form-controls"> | |
| 98 | + <div class="uk-autocomplete uk-form jsy-autocom"> | |
| 99 | + <input type="text" value="{{jGh}}/{{jName}}" name="jsy" required> | |
| 100 | + </div> | |
| 101 | + </div> | |
| 102 | + </div> | |
| 103 | + </div> | |
| 104 | + <div class="uk-width-1-2"> | |
| 105 | + <div class="uk-form-row"> | |
| 106 | + <label class="uk-form-label">售票员</label> | |
| 107 | + <div class="uk-form-controls"> | |
| 108 | + <div class="uk-autocomplete uk-form spy-autocom"> | |
| 109 | + <input type="text" name="spy" value="{{sGh}}/{{sName}}"> | |
| 110 | + </div> | |
| 111 | + </div> | |
| 112 | + </div> | |
| 113 | + </div> | |
| 114 | + </div> | |
| 115 | + <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;"> | |
| 116 | + <button type="button" class="uk-button uk-modal-close">取消</button> | |
| 117 | + <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> 保存</button> | |
| 118 | + </div> | |
| 119 | + </script> | |
| 120 | + | |
| 121 | + <script> | |
| 122 | + (function () { | |
| 123 | + var modal = '#schedule-addsch-modal', | |
| 124 | + sch, stationRoutes, parks, information; | |
| 125 | + | |
| 126 | + var normalInfo = []; | |
| 127 | + $(modal).on('init', function (e, data) { | |
| 128 | + e.stopPropagation(); | |
| 129 | + sch = data.sch; | |
| 130 | + //normal 班次里程和耗时 | |
| 131 | + var list = gb_common.get_vals(gb_schedule_table.findScheduleByLine(sch.xlBm)); | |
| 132 | + var upPlan = getNormalSch(list, 0) | |
| 133 | + , downPlan = getNormalSch(list, 1); | |
| 134 | + normalInfo[0] = {time: upPlan.bcsj, mileage: upPlan.jhlc}; | |
| 135 | + normalInfo[1] = {time: downPlan.bcsj, mileage: downPlan.jhlc}; | |
| 136 | + | |
| 137 | + | |
| 138 | + var formHtml = template('schedule-addsch-form-temp', sch); | |
| 139 | + $('form', modal).html(formHtml); | |
| 140 | + //字典转换 | |
| 141 | + dictionaryUtils.transformDom($('.nt-dictionary', modal)); | |
| 142 | + | |
| 143 | + //----------- Autocomplete -------------- | |
| 144 | + $.get('/basic/cars', function (rs) { | |
| 145 | + //车辆 | |
| 146 | + gb_common.carAutocomplete($('.car-autocom', modal), rs); | |
| 147 | + }); | |
| 148 | + //驾驶员 | |
| 149 | + gb_common.personAutocomplete($('.jsy-autocom', modal)); | |
| 150 | + | |
| 151 | + //售票员 | |
| 152 | + gb_common.personAutocomplete($('.spy-autocom', modal)); | |
| 153 | + | |
| 154 | + //站点路由 | |
| 155 | + stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) { | |
| 156 | + return a.stationRouteCode - b.stationRouteCode; | |
| 157 | + }), 'directions'); | |
| 158 | + //停车场 | |
| 159 | + $.get('/basic/parks', function (rs) { | |
| 160 | + parks = rs; | |
| 161 | + }); | |
| 162 | + //线路标准 | |
| 163 | + information = gb_data_basic.getLineInformation(sch.xlBm); | |
| 164 | + | |
| 165 | + //submit | |
| 166 | + var f = $('form', modal).formValidation(gb_form_validation_opts); | |
| 167 | + f.on('success.form.fv', function (e) { | |
| 168 | + disabled_submit_btn(this); | |
| 169 | + e.preventDefault(); | |
| 170 | + var data = $(this).serializeJSON(); | |
| 171 | + data.xlBm = sch.xlBm; | |
| 172 | + data.xlName = sch.xlName; | |
| 173 | + data.lpName = sch.lpName; | |
| 174 | + //拆分驾驶员工号和姓名 | |
| 175 | + data.jGh = data.jsy.split('/')[0]; | |
| 176 | + data.jName = data.jsy.split('/')[1]; | |
| 177 | + delete data.jsy; | |
| 178 | + //拆分售票员工号和姓名 | |
| 179 | + if (data.sGh != null) { | |
| 180 | + data.sGh = data.spy.split('/')[0]; | |
| 181 | + data.sName = data.spy.split('/')[1]; | |
| 182 | + delete data.spy; | |
| 183 | + } | |
| 184 | + | |
| 185 | + //公司信息 | |
| 186 | + var line = gb_data_basic.findLineByCodes([data.xlBm]); | |
| 187 | + if(line && line.length > 0){ | |
| 188 | + line = line[0]; | |
| 189 | + data.gsBm = line.company; | |
| 190 | + data.fgsBm = line.brancheCompany; | |
| 191 | + } | |
| 192 | + | |
| 193 | + gb_common.$post('/realSchedule', data, function (rs) { | |
| 194 | + //插入 | |
| 195 | + gb_schedule_table.insertSchedule(rs.t, rs.ts); | |
| 196 | + $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: rs.t}); | |
| 197 | + UIkit.modal(modal).hide(); | |
| 198 | + notify_succ('新增临加班次成功'); | |
| 199 | + }); | |
| 200 | + }); | |
| 201 | + | |
| 202 | + //班次类型 和 上下行切换 | |
| 203 | + $('[name=bcType],[name=xlDir]', f).on('change', function () { | |
| 204 | + var bcType_e = $('[name=bcType]', f) | |
| 205 | + , xlDir_e = $('[name=xlDir]', f); | |
| 206 | + | |
| 207 | + var routes = stationRoutes[xlDir_e.val()] | |
| 208 | + , lastCode = routes[routes.length - 1].stationCode | |
| 209 | + , opts = '', park_opts = ''; | |
| 210 | + //station options | |
| 211 | + $.each(routes, function () { | |
| 212 | + opts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>' | |
| 213 | + }); | |
| 214 | + //park options | |
| 215 | + for (var code in parks) | |
| 216 | + park_opts += '<option value="' + code + '">' + parks[code] + '</option>'; | |
| 217 | + | |
| 218 | + var qdz = $('[name=qdzCode]', f), zdz = $('[name=zdzCode]', f); | |
| 219 | + var time, mileage; | |
| 220 | + switch (bcType_e.val()) { | |
| 221 | + case 'out': | |
| 222 | + qdz.html(park_opts).val(information.carPark); | |
| 223 | + zdz.html(opts); | |
| 224 | + //出场结束时间 | |
| 225 | + time = xlDir_e.val() == 0 ? information.upOutTimer : information.downOutTimer; | |
| 226 | + mileage = xlDir_e.val() == 0 ? information.upOutMileage : information.downOutMileage; | |
| 227 | + break; | |
| 228 | + case 'in': | |
| 229 | + qdz.html(opts); | |
| 230 | + zdz.html(park_opts).val(information.carPark); | |
| 231 | + //进场结束时间 | |
| 232 | + time = xlDir_e.val() == 0 ? information.upInTimer : information.downInTimer; | |
| 233 | + mileage = xlDir_e.val() == 0 ? information.upInMileage : information.downInMileage; | |
| 234 | + break; | |
| 235 | + default: | |
| 236 | + qdz.html(opts); | |
| 237 | + zdz.html(opts).val(lastCode); | |
| 238 | + time = xlDir_e.val() == 0?normalInfo[0].time:normalInfo[1].time; | |
| 239 | + mileage = xlDir_e.val() == 0?normalInfo[0].mileage:normalInfo[1].mileage; | |
| 240 | + } | |
| 241 | + | |
| 242 | + setEndTime(time); | |
| 243 | + $('[name=jhlc]', f).val(mileage); | |
| 244 | + }).trigger('change'); | |
| 245 | + | |
| 246 | + | |
| 247 | + function setEndTime(diff) { | |
| 248 | + var et = moment($('[name=fcsj]', f).val(), 'HH:mm').add(diff, 'minutes').format('HH:mm'); | |
| 249 | + $('[name=zdsj]', f).val(et); | |
| 250 | + } | |
| 251 | + }); | |
| 252 | + | |
| 253 | + function getNormalSch(list, updown) { | |
| 254 | + var sch; | |
| 255 | + $.each(list, function () { | |
| 256 | + if (this.bcType == 'normal' && this.xlDir == updown) { | |
| 257 | + sch = this; | |
| 258 | + return false; | |
| 259 | + } | |
| 260 | + }); | |
| 261 | + | |
| 262 | + return sch; | |
| 263 | + } | |
| 264 | + })(); | |
| 265 | + </script> | |
| 266 | +</div> | ... | ... |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task/add_sub_task_inpark.html
| ... | ... | @@ -304,10 +304,12 @@ |
| 304 | 304 | $(this).data('valid', true); |
| 305 | 305 | |
| 306 | 306 | if(allValidSuccess()){ |
| 307 | - var i = 0; | |
| 307 | + var i = 0, rst; | |
| 308 | 308 | (function () { |
| 309 | 309 | var f = arguments.callee; |
| 310 | 310 | if(i >= dataArray.length){ |
| 311 | + //完成后更新前端数据 | |
| 312 | + gb_schedule_table.updateSchedule(rst); | |
| 311 | 313 | UIkit.modal(modal).hide(); |
| 312 | 314 | $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch}); |
| 313 | 315 | return; |
| ... | ... | @@ -324,7 +326,7 @@ |
| 324 | 326 | data.remarks = ''; |
| 325 | 327 | gb_common.$post('/childTask', data, function (rs) { |
| 326 | 328 | notify_succ('子任务添加成功'); |
| 327 | - gb_schedule_table.updateSchedule(rs.t); | |
| 329 | + rst = rs.t; | |
| 328 | 330 | i++; |
| 329 | 331 | f(); |
| 330 | 332 | }); | ... | ... |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task/add_sub_task_oil.html
| ... | ... | @@ -262,10 +262,11 @@ |
| 262 | 262 | $(this).data('valid', true); |
| 263 | 263 | |
| 264 | 264 | if(allValidSuccess()){ |
| 265 | - var i = 0; | |
| 265 | + var i = 0, rst; | |
| 266 | 266 | (function () { |
| 267 | 267 | var f = arguments.callee; |
| 268 | 268 | if(i >= dataArray.length){ |
| 269 | + gb_schedule_table.updateSchedule(rst); | |
| 269 | 270 | UIkit.modal(modal).hide(); |
| 270 | 271 | $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch}); |
| 271 | 272 | return; |
| ... | ... | @@ -282,7 +283,7 @@ |
| 282 | 283 | data.remarks = ''; |
| 283 | 284 | gb_common.$post('/childTask', data, function (rs) { |
| 284 | 285 | notify_succ('子任务添加成功'); |
| 285 | - gb_schedule_table.updateSchedule(rs.t); | |
| 286 | + rst = rs.t; | |
| 286 | 287 | i++; |
| 287 | 288 | f(); |
| 288 | 289 | }); | ... | ... |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task/add_sub_task_outpark.html
| ... | ... | @@ -240,10 +240,11 @@ |
| 240 | 240 | $(this).data('valid', true); |
| 241 | 241 | |
| 242 | 242 | if (allValidSuccess()) { |
| 243 | - var i = 0; | |
| 243 | + var i = 0,rst; | |
| 244 | 244 | (function () { |
| 245 | 245 | var f = arguments.callee; |
| 246 | 246 | if (i >= dataArray.length) { |
| 247 | + gb_schedule_table.updateSchedule(rst); | |
| 247 | 248 | UIkit.modal(modal).hide(); |
| 248 | 249 | $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch}); |
| 249 | 250 | return; |
| ... | ... | @@ -251,7 +252,7 @@ |
| 251 | 252 | var data = dataArray[i]; |
| 252 | 253 | gb_common.$post('/childTask', data, function (rs) { |
| 253 | 254 | notify_succ('子任务添加成功'); |
| 254 | - gb_schedule_table.updateSchedule(rs.t); | |
| 255 | + rst = rs.t; | |
| 255 | 256 | i++; |
| 256 | 257 | f(); |
| 257 | 258 | }); | ... | ... |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task/add_sub_task_range_turn.html
| ... | ... | @@ -347,7 +347,7 @@ |
| 347 | 347 | /** |
| 348 | 348 | * 为班次添加备注 |
| 349 | 349 | */ |
| 350 | - var remarks = '调头' + $('[name=endDate]', csf).val() + ' 因 ' + $('#turnReason', modal).val() + '在' + $('[name=endStation] option:selected', csf).text() + '调头'; | |
| 350 | + var remarks = '调头' + $('[name=endDate]', csf).val() + ' 因 ' + $.trim($('#turnReason', modal).val()) + '在' + $('[name=endStation] option:selected', csf).text() + '调头'; | |
| 351 | 351 | gb_schedule_table.addRemarks([sch, nextSch], gb_common.trim(remarks, 'g')); |
| 352 | 352 | UIkit.modal(modal).hide(); |
| 353 | 353 | $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch}); | ... | ... |
src/main/resources/static/real_control_v2/js/common.js
| ... | ... | @@ -217,6 +217,10 @@ var gb_common = (function () { |
| 217 | 217 | //init_autocom_pinyin(element, data); |
| 218 | 218 | init_autocom_pinyin(element, gb_data_basic.allPersonnel()); |
| 219 | 219 | }; |
| 220 | + | |
| 221 | + var remarksAutocomplete = function (element) { | |
| 222 | + init_autocom_pinyin(element, gb_data_basic.remarksMapps()); | |
| 223 | + }; | |
| 220 | 224 | |
| 221 | 225 | var carAutocomplete = function (element, list) { |
| 222 | 226 | var data = []; |
| ... | ... | @@ -345,7 +349,8 @@ var gb_common = (function () { |
| 345 | 349 | init_autocom_pinyin: init_autocom_pinyin, |
| 346 | 350 | accAdd: accAdd, |
| 347 | 351 | numSubtr: numSubtr, |
| 348 | - trim: trim | |
| 352 | + trim: trim, | |
| 353 | + remarksAutocomplete: remarksAutocomplete | |
| 349 | 354 | |
| 350 | 355 | //whichTransitionEvent:whichTransitionEvent |
| 351 | 356 | }; | ... | ... |
src/main/resources/static/real_control_v2/js/data/data_basic.js
| ... | ... | @@ -78,6 +78,12 @@ var gb_data_basic = (function () { |
| 78 | 78 | }); |
| 79 | 79 | }); |
| 80 | 80 | |
| 81 | + //车辆数据 | |
| 82 | + var carsArray; | |
| 83 | + $.get('/basic/cars?t=' + Math.random(), function (rs) { | |
| 84 | + carsArray = rs; | |
| 85 | + }); | |
| 86 | + | |
| 81 | 87 | var getCarparkByCode = function (code) { |
| 82 | 88 | return carparks[code]; |
| 83 | 89 | }; |
| ... | ... | @@ -132,6 +138,24 @@ var gb_data_basic = (function () { |
| 132 | 138 | var stationRouteSort = function (a, b) { |
| 133 | 139 | return a.stationRouteCode - b.stationRouteCode; |
| 134 | 140 | }; |
| 141 | + | |
| 142 | + /** | |
| 143 | + * 常用的备注补全列表 | |
| 144 | + */ | |
| 145 | + var remarksArray = ['保养', '故障', '肇事', '加油', '维修', '援外', '路阻' | |
| 146 | + , '故障(离合器坏)', '故障,(方向盘坏)', '故障(排挡坏)', '故障(门坏)', '故障(雨刮器坏)','故障(刹车坏)', '故障(气打不上)' | |
| 147 | + ,'故障(整车无电)', '故障(故障灯常亮)', '故障(警报灯亮)', '故障(玻璃坏)', '故障(反光镜坏)', '故障(发电机坏)', '故障(漏防冻液)' | |
| 148 | + , '故障(漏水)','故障(轮胎坏)', '故障(无动力)', '故障(喷机油)', '故障(水温高)', '保养(一级保养)' | |
| 149 | + , '保养(二级保养)', '保养(三级保养)', '换车出场', '临加进场', '临加出场']; | |
| 150 | + var remarksMapps = []; | |
| 151 | + $.each(remarksArray, function (i, t) { | |
| 152 | + remarksMapps.push({ | |
| 153 | + value: t, | |
| 154 | + fullChars: pinyin.getFullChars(t).toUpperCase(), | |
| 155 | + camelChars: pinyin.getCamelChars(t) | |
| 156 | + }); | |
| 157 | + }); | |
| 158 | + | |
| 135 | 159 | //文件载入完毕 |
| 136 | 160 | res_load_ep.emitLater('load_data_basic'); |
| 137 | 161 | |
| ... | ... | @@ -198,6 +222,18 @@ var gb_data_basic = (function () { |
| 198 | 222 | }, |
| 199 | 223 | nbbm2PlateMap: function () { |
| 200 | 224 | return nbbm2PlateMap; |
| 225 | + }, | |
| 226 | + carsArray: function () { | |
| 227 | + return carsArray; | |
| 228 | + }, | |
| 229 | + simpleParksArray: function () { | |
| 230 | + var map = {}; | |
| 231 | + for(var code in carparks) | |
| 232 | + map[code] = carparks[code].parkName; | |
| 233 | + return map; | |
| 234 | + }, | |
| 235 | + remarksMapps: function () { | |
| 236 | + return remarksMapps; | |
| 201 | 237 | } |
| 202 | 238 | }; |
| 203 | 239 | })(); | ... | ... |
src/main/resources/static/real_control_v2/js/line_schedule/context_menu.js
| ... | ... | @@ -229,6 +229,11 @@ var gb_schedule_context_menu = (function () { |
| 229 | 229 | Cancel: '取消' |
| 230 | 230 | } |
| 231 | 231 | }); |
| 232 | + }, | |
| 233 | + add_temp_sch: function (sch) { | |
| 234 | + open_modal(folder + '/add_temp_sch.html', { | |
| 235 | + sch: sch | |
| 236 | + }, modal_opts); | |
| 232 | 237 | } |
| 233 | 238 | }; |
| 234 | 239 | |
| ... | ... | @@ -273,6 +278,9 @@ var gb_schedule_context_menu = (function () { |
| 273 | 278 | 'shortcut': { |
| 274 | 279 | name: '...', |
| 275 | 280 | items: { |
| 281 | + 'add_temp_sch':{ | |
| 282 | + name: '新增临加班次' | |
| 283 | + }, | |
| 276 | 284 | 'add_oil': { |
| 277 | 285 | name: '(子任务)空驶进出场' |
| 278 | 286 | }, | ... | ... |
src/main/resources/static/real_control_v2/js/line_schedule/sch_table.js
| ... | ... | @@ -440,8 +440,6 @@ var gb_schedule_table = (function () { |
| 440 | 440 | |
| 441 | 441 | //头部点击去掉选中光标 |
| 442 | 442 | $(document).on('click', '.header-title', function () { |
| 443 | - // $(this).parents('.schedule-wrap').find('.relevance-active') | |
| 444 | - // .removeClass('relevance-active'); | |
| 445 | 443 | reset_drag_active_all(this); |
| 446 | 444 | }); |
| 447 | 445 | ... | ... |
src/main/resources/static/real_control_v2/js/main.js
| ... | ... | @@ -171,8 +171,8 @@ var disabled_submit_btn = function (form) { |
| 171 | 171 | function showUpdateDescription() { |
| 172 | 172 | //更新说明 |
| 173 | 173 | var updateDescription = { |
| 174 | - date: '2017-04-24', | |
| 175 | - text: '<h5>应到实到时间按路牌连接显示</h5><h5>批量子任务时,如果主任务烂班,则自动复一个全程烂班子任务</h5><h5>鼠标悬停在子任务数字徽章上可查看详细</h5>' | |
| 174 | + date: '2017-04-25', | |
| 175 | + text: '<h5>临加班次功能扩展!</h5>' | |
| 176 | 176 | }; |
| 177 | 177 | |
| 178 | 178 | var storage = window.localStorage | ... | ... |