Commit 398be398a02b2b00df9fdd161f71df9eff5b8fd2

Authored by 潘钊
1 parent abd9f44a

update...

src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
@@ -1025,7 +1025,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf @@ -1025,7 +1025,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf
1025 sch.setLate2(false); 1025 sch.setLate2(false);
1026 LateAdjustHandle.remove(sch); 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 revokeRealOutgo(sch.getId()); 1030 revokeRealOutgo(sch.getId());
1031 } 1031 }
@@ -1049,7 +1049,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf @@ -1049,7 +1049,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf
1049 1049
1050 //重新计算车辆执行班次 1050 //重新计算车辆执行班次
1051 dayOfSchedule.reCalcExecPlan(sch.getClZbh()); 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 sch.clearZdsjActual(); 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,3 +1134,27 @@ dl.intimity span.late-badge{
1134 margin: 0; 1134 margin: 0;
1135 width: auto; 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
@@ -3,7 +3,6 @@ @@ -3,7 +3,6 @@
3 } 3 }
4 4
5 .uk-modal.ct_move_modal .uk-modal-dialog{ 5 .uk-modal.ct_move_modal .uk-modal-dialog{
6 - border: 1px solid #dd6952;  
7 6
8 position: absolute !important; 7 position: absolute !important;
9 margin: 0 !important; 8 margin: 0 !important;
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/add_temp_sch.html
1 <div class="uk-modal ct-form-modal ct_move_modal" id="schedule-addsch-modal"> 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 <a href="" class="uk-modal-close uk-close"></a> 3 <a href="" class="uk-modal-close uk-close"></a>
4 <div class="uk-modal-header"> 4 <div class="uk-modal-header">
5 <h2>新增临加班次</h2></div> 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 <form class="uk-form uk-form-horizontal"> 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> &nbsp;保存</button>
  147 + </div>
7 </form> 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 <div class="uk-grid"> 154 <div class="uk-grid">
12 <div class="uk-width-1-2"> 155 <div class="uk-width-1-2">
13 <div class="uk-form-row"> 156 <div class="uk-form-row">
@@ -92,8 +235,7 @@ @@ -92,8 +235,7 @@
92 <div class="uk-grid"> 235 <div class="uk-grid">
93 <div class="uk-width-1-2"> 236 <div class="uk-width-1-2">
94 <div class="uk-form-row"> 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 <div class="uk-form-controls"> 239 <div class="uk-form-controls">
98 <div class="uk-autocomplete uk-form jsy-autocom"> 240 <div class="uk-autocomplete uk-form jsy-autocom">
99 <input type="text" value="{{jGh}}/{{jName}}" name="jsy" required> 241 <input type="text" value="{{jGh}}/{{jName}}" name="jsy" required>
@@ -112,7 +254,140 @@ @@ -112,7 +254,140 @@
112 </div> 254 </div>
113 </div> 255 </div>
114 </div> 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 <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;"> 389 <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;">
  390 + <span class="ct_line_lp_badge" ></span>
116 <button type="button" class="uk-button uk-modal-close">取消</button> 391 <button type="button" class="uk-button uk-modal-close">取消</button>
117 <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存</button> 392 <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存</button>
118 </div> 393 </div>
@@ -121,146 +396,404 @@ @@ -121,146 +396,404 @@
121 <script> 396 <script>
122 (function () { 397 (function () {
123 var modal = '#schedule-addsch-modal', 398 var modal = '#schedule-addsch-modal',
124 - sch, stationRoutes, parks, information; 399 + sch, stationRoutes, parks, information,carsArray;
125 400
126 - var normalInfo = [];  
127 $(modal).on('init', function (e, data) { 401 $(modal).on('init', function (e, data) {
128 e.stopPropagation(); 402 e.stopPropagation();
129 sch = data.sch; 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 stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) { 405 stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) {
156 return a.stationRouteCode - b.stationRouteCode; 406 return a.stationRouteCode - b.stationRouteCode;
157 }), 'directions'); 407 }), 'directions');
158 //停车场 408 //停车场
159 - $.get('/basic/parks', function (rs) {  
160 - parks = rs;  
161 - }); 409 + parks = gb_data_basic.simpleParksArray();
162 //线路标准 410 //线路标准
163 information = gb_data_basic.getLineInformation(sch.xlBm); 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 $('[name=jhlc]', f).val(mileage); 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 + ',&nbsp;'+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 + ',&nbsp;'+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 </script> 798 </script>
266 </div> 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> &nbsp;保存</button>
  118 + </div>
  119 + </script>
  120 +
  121 + <script>
  122 + (function () {
  123 + var modal = '#schedule-addsch-modal',
  124 + sch, stationRoutes, parks, information;
  125 +
  126 + var normalInfo = [];
  127 + $(modal).on('init', function (e, data) {
  128 + e.stopPropagation();
  129 + sch = data.sch;
  130 + //normal 班次里程和耗时
  131 + var list = gb_common.get_vals(gb_schedule_table.findScheduleByLine(sch.xlBm));
  132 + var upPlan = getNormalSch(list, 0)
  133 + , downPlan = getNormalSch(list, 1);
  134 + normalInfo[0] = {time: upPlan.bcsj, mileage: upPlan.jhlc};
  135 + normalInfo[1] = {time: downPlan.bcsj, mileage: downPlan.jhlc};
  136 +
  137 +
  138 + var formHtml = template('schedule-addsch-form-temp', sch);
  139 + $('form', modal).html(formHtml);
  140 + //字典转换
  141 + dictionaryUtils.transformDom($('.nt-dictionary', modal));
  142 +
  143 + //----------- Autocomplete --------------
  144 + $.get('/basic/cars', function (rs) {
  145 + //车辆
  146 + gb_common.carAutocomplete($('.car-autocom', modal), rs);
  147 + });
  148 + //驾驶员
  149 + gb_common.personAutocomplete($('.jsy-autocom', modal));
  150 +
  151 + //售票员
  152 + gb_common.personAutocomplete($('.spy-autocom', modal));
  153 +
  154 + //站点路由
  155 + stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) {
  156 + return a.stationRouteCode - b.stationRouteCode;
  157 + }), 'directions');
  158 + //停车场
  159 + $.get('/basic/parks', function (rs) {
  160 + parks = rs;
  161 + });
  162 + //线路标准
  163 + information = gb_data_basic.getLineInformation(sch.xlBm);
  164 +
  165 + //submit
  166 + var f = $('form', modal).formValidation(gb_form_validation_opts);
  167 + f.on('success.form.fv', function (e) {
  168 + disabled_submit_btn(this);
  169 + e.preventDefault();
  170 + var data = $(this).serializeJSON();
  171 + data.xlBm = sch.xlBm;
  172 + data.xlName = sch.xlName;
  173 + data.lpName = sch.lpName;
  174 + //拆分驾驶员工号和姓名
  175 + data.jGh = data.jsy.split('/')[0];
  176 + data.jName = data.jsy.split('/')[1];
  177 + delete data.jsy;
  178 + //拆分售票员工号和姓名
  179 + if (data.sGh != null) {
  180 + data.sGh = data.spy.split('/')[0];
  181 + data.sName = data.spy.split('/')[1];
  182 + delete data.spy;
  183 + }
  184 +
  185 + //公司信息
  186 + var line = gb_data_basic.findLineByCodes([data.xlBm]);
  187 + if(line && line.length > 0){
  188 + line = line[0];
  189 + data.gsBm = line.company;
  190 + data.fgsBm = line.brancheCompany;
  191 + }
  192 +
  193 + gb_common.$post('/realSchedule', data, function (rs) {
  194 + //插入
  195 + gb_schedule_table.insertSchedule(rs.t, rs.ts);
  196 + $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: rs.t});
  197 + UIkit.modal(modal).hide();
  198 + notify_succ('新增临加班次成功');
  199 + });
  200 + });
  201 +
  202 + //班次类型 和 上下行切换
  203 + $('[name=bcType],[name=xlDir]', f).on('change', function () {
  204 + var bcType_e = $('[name=bcType]', f)
  205 + , xlDir_e = $('[name=xlDir]', f);
  206 +
  207 + var routes = stationRoutes[xlDir_e.val()]
  208 + , lastCode = routes[routes.length - 1].stationCode
  209 + , opts = '', park_opts = '';
  210 + //station options
  211 + $.each(routes, function () {
  212 + opts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>'
  213 + });
  214 + //park options
  215 + for (var code in parks)
  216 + park_opts += '<option value="' + code + '">' + parks[code] + '</option>';
  217 +
  218 + var qdz = $('[name=qdzCode]', f), zdz = $('[name=zdzCode]', f);
  219 + var time, mileage;
  220 + switch (bcType_e.val()) {
  221 + case 'out':
  222 + qdz.html(park_opts).val(information.carPark);
  223 + zdz.html(opts);
  224 + //出场结束时间
  225 + time = xlDir_e.val() == 0 ? information.upOutTimer : information.downOutTimer;
  226 + mileage = xlDir_e.val() == 0 ? information.upOutMileage : information.downOutMileage;
  227 + break;
  228 + case 'in':
  229 + qdz.html(opts);
  230 + zdz.html(park_opts).val(information.carPark);
  231 + //进场结束时间
  232 + time = xlDir_e.val() == 0 ? information.upInTimer : information.downInTimer;
  233 + mileage = xlDir_e.val() == 0 ? information.upInMileage : information.downInMileage;
  234 + break;
  235 + default:
  236 + qdz.html(opts);
  237 + zdz.html(opts).val(lastCode);
  238 + time = xlDir_e.val() == 0?normalInfo[0].time:normalInfo[1].time;
  239 + mileage = xlDir_e.val() == 0?normalInfo[0].mileage:normalInfo[1].mileage;
  240 + }
  241 +
  242 + setEndTime(time);
  243 + $('[name=jhlc]', f).val(mileage);
  244 + }).trigger('change');
  245 +
  246 +
  247 + function setEndTime(diff) {
  248 + var et = moment($('[name=fcsj]', f).val(), 'HH:mm').add(diff, 'minutes').format('HH:mm');
  249 + $('[name=zdsj]', f).val(et);
  250 + }
  251 + });
  252 +
  253 + function getNormalSch(list, updown) {
  254 + var sch;
  255 + $.each(list, function () {
  256 + if (this.bcType == 'normal' && this.xlDir == updown) {
  257 + sch = this;
  258 + return false;
  259 + }
  260 + });
  261 +
  262 + return sch;
  263 + }
  264 + })();
  265 + </script>
  266 +</div>
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task/add_sub_task_inpark.html
@@ -304,10 +304,12 @@ @@ -304,10 +304,12 @@
304 $(this).data('valid', true); 304 $(this).data('valid', true);
305 305
306 if(allValidSuccess()){ 306 if(allValidSuccess()){
307 - var i = 0; 307 + var i = 0, rst;
308 (function () { 308 (function () {
309 var f = arguments.callee; 309 var f = arguments.callee;
310 if(i >= dataArray.length){ 310 if(i >= dataArray.length){
  311 + //完成后更新前端数据
  312 + gb_schedule_table.updateSchedule(rst);
311 UIkit.modal(modal).hide(); 313 UIkit.modal(modal).hide();
312 $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch}); 314 $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch});
313 return; 315 return;
@@ -324,7 +326,7 @@ @@ -324,7 +326,7 @@
324 data.remarks = ''; 326 data.remarks = '';
325 gb_common.$post('/childTask', data, function (rs) { 327 gb_common.$post('/childTask', data, function (rs) {
326 notify_succ('子任务添加成功'); 328 notify_succ('子任务添加成功');
327 - gb_schedule_table.updateSchedule(rs.t); 329 + rst = rs.t;
328 i++; 330 i++;
329 f(); 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,10 +262,11 @@
262 $(this).data('valid', true); 262 $(this).data('valid', true);
263 263
264 if(allValidSuccess()){ 264 if(allValidSuccess()){
265 - var i = 0; 265 + var i = 0, rst;
266 (function () { 266 (function () {
267 var f = arguments.callee; 267 var f = arguments.callee;
268 if(i >= dataArray.length){ 268 if(i >= dataArray.length){
  269 + gb_schedule_table.updateSchedule(rst);
269 UIkit.modal(modal).hide(); 270 UIkit.modal(modal).hide();
270 $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch}); 271 $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch});
271 return; 272 return;
@@ -282,7 +283,7 @@ @@ -282,7 +283,7 @@
282 data.remarks = ''; 283 data.remarks = '';
283 gb_common.$post('/childTask', data, function (rs) { 284 gb_common.$post('/childTask', data, function (rs) {
284 notify_succ('子任务添加成功'); 285 notify_succ('子任务添加成功');
285 - gb_schedule_table.updateSchedule(rs.t); 286 + rst = rs.t;
286 i++; 287 i++;
287 f(); 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,10 +240,11 @@
240 $(this).data('valid', true); 240 $(this).data('valid', true);
241 241
242 if (allValidSuccess()) { 242 if (allValidSuccess()) {
243 - var i = 0; 243 + var i = 0,rst;
244 (function () { 244 (function () {
245 var f = arguments.callee; 245 var f = arguments.callee;
246 if (i >= dataArray.length) { 246 if (i >= dataArray.length) {
  247 + gb_schedule_table.updateSchedule(rst);
247 UIkit.modal(modal).hide(); 248 UIkit.modal(modal).hide();
248 $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch}); 249 $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch});
249 return; 250 return;
@@ -251,7 +252,7 @@ @@ -251,7 +252,7 @@
251 var data = dataArray[i]; 252 var data = dataArray[i];
252 gb_common.$post('/childTask', data, function (rs) { 253 gb_common.$post('/childTask', data, function (rs) {
253 notify_succ('子任务添加成功'); 254 notify_succ('子任务添加成功');
254 - gb_schedule_table.updateSchedule(rs.t); 255 + rst = rs.t;
255 i++; 256 i++;
256 f(); 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,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 gb_schedule_table.addRemarks([sch, nextSch], gb_common.trim(remarks, 'g')); 351 gb_schedule_table.addRemarks([sch, nextSch], gb_common.trim(remarks, 'g'));
352 UIkit.modal(modal).hide(); 352 UIkit.modal(modal).hide();
353 $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch}); 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,6 +217,10 @@ var gb_common = (function () {
217 //init_autocom_pinyin(element, data); 217 //init_autocom_pinyin(element, data);
218 init_autocom_pinyin(element, gb_data_basic.allPersonnel()); 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 var carAutocomplete = function (element, list) { 225 var carAutocomplete = function (element, list) {
222 var data = []; 226 var data = [];
@@ -345,7 +349,8 @@ var gb_common = (function () { @@ -345,7 +349,8 @@ var gb_common = (function () {
345 init_autocom_pinyin: init_autocom_pinyin, 349 init_autocom_pinyin: init_autocom_pinyin,
346 accAdd: accAdd, 350 accAdd: accAdd,
347 numSubtr: numSubtr, 351 numSubtr: numSubtr,
348 - trim: trim 352 + trim: trim,
  353 + remarksAutocomplete: remarksAutocomplete
349 354
350 //whichTransitionEvent:whichTransitionEvent 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,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 var getCarparkByCode = function (code) { 87 var getCarparkByCode = function (code) {
82 return carparks[code]; 88 return carparks[code];
83 }; 89 };
@@ -132,6 +138,24 @@ var gb_data_basic = (function () { @@ -132,6 +138,24 @@ var gb_data_basic = (function () {
132 var stationRouteSort = function (a, b) { 138 var stationRouteSort = function (a, b) {
133 return a.stationRouteCode - b.stationRouteCode; 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 res_load_ep.emitLater('load_data_basic'); 160 res_load_ep.emitLater('load_data_basic');
137 161
@@ -198,6 +222,18 @@ var gb_data_basic = (function () { @@ -198,6 +222,18 @@ var gb_data_basic = (function () {
198 }, 222 },
199 nbbm2PlateMap: function () { 223 nbbm2PlateMap: function () {
200 return nbbm2PlateMap; 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,6 +229,11 @@ var gb_schedule_context_menu = (function () {
229 Cancel: '取消' 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,6 +278,9 @@ var gb_schedule_context_menu = (function () {
273 'shortcut': { 278 'shortcut': {
274 name: '...', 279 name: '...',
275 items: { 280 items: {
  281 + 'add_temp_sch':{
  282 + name: '新增临加班次'
  283 + },
276 'add_oil': { 284 'add_oil': {
277 name: '(子任务)空驶进出场' 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,8 +440,6 @@ var gb_schedule_table = (function () {
440 440
441 //头部点击去掉选中光标 441 //头部点击去掉选中光标
442 $(document).on('click', '.header-title', function () { 442 $(document).on('click', '.header-title', function () {
443 - // $(this).parents('.schedule-wrap').find('.relevance-active')  
444 - // .removeClass('relevance-active');  
445 reset_drag_active_all(this); 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,8 +171,8 @@ var disabled_submit_btn = function (form) {
171 function showUpdateDescription() { 171 function showUpdateDescription() {
172 //更新说明 172 //更新说明
173 var updateDescription = { 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 var storage = window.localStorage 178 var storage = window.localStorage