Commit b8b6591f560a1c8f5554fabae3acbb54ba2c1ee1

Authored by 潘钊
1 parent 29e324be

update...

src/main/java/com/bsth/data/BasicData.java
... ... @@ -31,7 +31,7 @@ public class BasicData implements CommandLineRunner {
31 31 //公司代码和公司名对照(K: 公司编码,V:公司名)
32 32 public static Map<String, String> businessCodeNameMap;
33 33  
34   - //分公司公司代码和分公司公司名对照(K: 公司编码+分公司编码,V:分公司公司名)
  34 + //分公司公司代码和分公司公司名对照(K: 公司编码_分公司编码,V:分公司公司名)
35 35 public static Map<String, String> businessFgsCodeNameMap;
36 36  
37 37 //设备号和车辆自编号 (K: 设备编码 ,V:车辆自编号)
... ... @@ -333,7 +333,7 @@ public class BasicData implements CommandLineRunner {
333 333  
334 334 perTempMap.put(jobCode, p);
335 335  
336   - allPersonMap.put(jobCode.substring(jobCode.indexOf("-")+1), p.getPersonnelName());
  336 + allPersonMap.put(jobCode, p.getPersonnelName());
337 337 }
338 338  
339 339 jsyMap = jsyTempMap;
... ...
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
... ... @@ -341,10 +341,36 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
341 341 rs.put("msg", "驾驶员工号不能为空!");
342 342 return rs;
343 343 }
344   - //截取工号
  344 + //截取驾驶员工号
345 345 if (t.getjGh().indexOf("-") != -1) {
346 346 t.setjGh(t.getjGh().split("-")[1]);
347 347 }
  348 + //检查驾驶员工号
  349 + String jName = BasicData.allPerson.get(t.getGsBm() + '-' + t.getjGh());
  350 + if(StringUtils.isEmpty(jName)){
  351 + rs.put("msg", t.getXlName() + "所属的公司编码下找不到工号为【" + t.getjGh() + "】的驾驶员");
  352 + rs.put("status", ResponseCode.ERROR);
  353 + return rs;
  354 + }
  355 + else if(StringUtils.isEmpty(t.getjName())){
  356 + t.setjName(jName);//补上驾驶员名称
  357 + }
  358 +
  359 + //有售票员
  360 + if(StringUtils.isNotEmpty(t.getsGh())){
  361 + String sName = BasicData.allPerson.get(t.getGsBm() + '-' + t.getsGh());
  362 + if(StringUtils.isEmpty(sName)){
  363 + rs.put("msg", t.getXlName() + "所属的公司编码下找不到工号为【" + t.getjGh() + "】的售票员");
  364 + rs.put("status", ResponseCode.ERROR);
  365 + return rs;
  366 + }else if(StringUtils.isEmpty(t.getsName())){
  367 + t.setsName(sName);//补上售票员名称
  368 + }
  369 + }
  370 +
  371 + //公司 和 分公司名称
  372 + t.setGsName(BasicData.businessCodeNameMap.get(t.getGsBm()));
  373 + t.setFgsName(BasicData.businessFgsCodeNameMap.get(t.getGsBm() + "_" + t.getFgsBm()));
348 374  
349 375 t.setScheduleDateStr(schDate);
350 376 t.setScheduleDate(sdfyyyyMMdd.parse(schDate));
... ... @@ -2842,13 +2868,21 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2842 2868 continue;
2843 2869  
2844 2870 if (StringUtils.isNotEmpty(cpc.getJsy())) {
  2871 + String jGh = cpc.getJsy().split("/")[0];
  2872 + if(!BasicData.allPerson.containsKey(sch.getGsBm()+"-"+jGh)){
  2873 + rs.put("msg", sch.getXlName() + "所属的公司编码下找不到工号为【" + jGh + "】的驾驶员");
  2874 + rs.put("status", ResponseCode.ERROR);
  2875 + return rs;
  2876 + }
2845 2877 //换驾驶员
2846   - persoChange(sch, cpc.getJsy().split("/")[0]);
  2878 + persoChange(sch, jGh);
  2879 + set.add(sch);
2847 2880 }
2848 2881  
2849 2882 //换售票员
2850 2883 if (StringUtils.isNotEmpty(cpc.getSpy())) {
2851 2884 persoChangeSPY(sch, cpc.getSpy().split("/")[0]);
  2885 + set.add(sch);
2852 2886 }
2853 2887  
2854 2888 //换车
... ... @@ -2872,7 +2906,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2872 2906 public void persoChange(ScheduleRealInfo sch, String jGh) {
2873 2907 if (sch.getjGh().equals(jGh))
2874 2908 return;
2875   - String jName = BasicData.allPerson.get(jGh);
  2909 + String jName = BasicData.allPerson.get(sch.getGsBm() + "-"+ jGh);
2876 2910 if (StringUtils.isNotEmpty(jName)) {
2877 2911  
2878 2912 if (jGh.indexOf("-") != -1)
... ...
src/main/resources/static/real_control_v2/fragments/home/context_menu.html
... ... @@ -10,8 +10,11 @@
10 10 <form class="uk-form">
11 11 <input type="hidden" value="{{nbbm}}" name="nbbm" />
12 12 <div class="uk-form-row">
13   - <select>
  13 + <select style="width: 170px;" class="common_phrase_sel">
14 14 <option value="">------ 常用短语 -------</option>
  15 + <option value="天气异常,请小心驾驶">天气异常,请小心驾驶</option>
  16 + <option value="请适当减速慢行,保持最佳行车间距">请适当减速慢行,保持最佳行车间距</option>
  17 + <option value="请准点执行班次任务">请准点执行班次任务</option>
15 18 </select>
16 19 </div>
17 20 <div class="uk-form-row">
... ...
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/add_temp_sch.html
... ... @@ -9,14 +9,14 @@
9 9 <ul data-uk-switcher="{connect:'#tempScheduleContent'}" class="uk-nav uk-nav-side left_tabs_lg" >
10 10 <li data-handle="normal"><a>1、临加班次</a></li>
11 11 <li data-handle="toAndFro"><a>2、往返</a></li>
12   - <!--<li data-handle="parkToPark"><a>3、场到场</a></li>-->
  12 + <li data-handle="parkToPark"><a>3、场到场</a></li>
13 13 </ul>
14 14 </div>
15 15 <div class="uk-width-3-4">
16 16 <ul id="tempScheduleContent" class="uk-switcher">
17 17 <li class="normalCont"></li>
18 18 <li class="toAndFroCont"></li>
19   - <!--<li></li>-->
  19 + <li class="parkToParkCont"></li>
20 20 </ul>
21 21 </div>
22 22 </div>
... ... @@ -393,6 +393,134 @@
393 393 </div>
394 394 </script>
395 395  
  396 +
  397 + <!-- 场到场临加班次 -->
  398 + <script id="add_park2park_sch-form-temp" type="text/html">
  399 + <form class="uk-form uk-form-horizontal">
  400 + <div class="uk-grid">
  401 + <div class="uk-width-1-2">
  402 + <div class="uk-form-row">
  403 + <label class="uk-form-label">班次类型</label>
  404 + <div class="uk-form-controls">
  405 + <select class="form-control" name="bcType">
  406 + <option value="in">进场</option>
  407 + </select>
  408 + </div>
  409 + </div>
  410 + </div>
  411 + <div class="uk-width-1-2">
  412 + <div class="uk-form-row">
  413 + <label class="uk-form-label">上下行</label>
  414 + <div class="uk-form-controls">
  415 + <select name="xlDir">
  416 + <option value="0">上行</option>
  417 + <option value="1">下行</option>
  418 + </select>
  419 + </div>
  420 + </div>
  421 + </div>
  422 + </div>
  423 + <div class="uk-grid">
  424 + <div class="uk-width-1-2">
  425 + <div class="uk-form-row">
  426 + <label class="uk-form-label">起点站</label>
  427 + <div class="uk-form-controls">
  428 + <select name="qdzCode" required>
  429 + </select>
  430 + </div>
  431 + </div>
  432 + </div>
  433 + <div class="uk-width-1-2">
  434 + <div class="uk-form-row">
  435 + <label class="uk-form-label">终点站</label>
  436 + <div class="uk-form-controls">
  437 + <select name="zdzCode" required>
  438 + </select>
  439 + </div>
  440 + </div>
  441 + </div>
  442 + </div>
  443 + <div class="uk-grid">
  444 + <div class="uk-width-1-2">
  445 + <div class="uk-form-row">
  446 + <label class="uk-form-label">开始时间</label>
  447 + <div class="uk-form-controls">
  448 + <input type="time" value="{{zdsj}}" name="fcsj" required>
  449 + </div>
  450 + </div>
  451 + </div>
  452 + <div class="uk-width-1-2">
  453 + <div class="uk-form-row">
  454 + <label class="uk-form-label">结束时间</label>
  455 + <div class="uk-form-controls">
  456 + <input type="time" name="zdsj" value="{{zdsj}}" required>
  457 + </div>
  458 + </div>
  459 + </div>
  460 + </div>
  461 + <div class="uk-grid">
  462 + <div class="uk-width-1-2">
  463 + <div class="uk-form-row">
  464 + <label class="uk-form-label">车辆</label>
  465 + <div class="uk-form-controls">
  466 + <div class="uk-autocomplete uk-form car-autocom">
  467 + <input type="text" value="{{clZbh}}" name="clZbh" required>
  468 + </div>
  469 + </div>
  470 + </div>
  471 + </div>
  472 + <div class="uk-width-1-2">
  473 + <div class="uk-form-row">
  474 + <label class="uk-form-label">里程</label>
  475 + <div class="uk-form-controls">
  476 + <input type="text" name="jhlc" value="{{jhlc}}" max=222 data-fv-lessthan-inclusive="false"
  477 + required>
  478 + </div>
  479 + </div>
  480 + </div>
  481 + </div>
  482 + <div class="uk-grid">
  483 + <div class="uk-width-1-2">
  484 + <div class="uk-form-row">
  485 + <label class="uk-form-label">驾驶员</label>
  486 + <div class="uk-form-controls">
  487 + <div class="uk-autocomplete uk-form jsy-autocom">
  488 + <input type="text" value="{{jGh}}/{{jName}}" name="jsy" required>
  489 + </div>
  490 + </div>
  491 + </div>
  492 + </div>
  493 + <div class="uk-width-1-2">
  494 + <div class="uk-form-row">
  495 + <label class="uk-form-label">售票员</label>
  496 + <div class="uk-form-controls">
  497 + <div class="uk-autocomplete uk-form spy-autocom">
  498 + <input type="text" name="spy" value="{{sGh}}/{{sName}}">
  499 + </div>
  500 + </div>
  501 + </div>
  502 + </div>
  503 + </div>
  504 + <div class="uk-grid">
  505 + <div class="uk-width-1-1">
  506 + <div class="uk-form-row">
  507 + <label class="uk-form-label">备注</label>
  508 + <div class="uk-form-controls">
  509 + <div class="uk-autocomplete uk-form remarks-autocom">
  510 + <input type="text" name="remarks">
  511 + </div>
  512 + </div>
  513 + </div>
  514 + </div>
  515 + </div>
  516 + <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;">
  517 + <span class="ct_line_lp_badge" ></span>
  518 + <button type="button" class="uk-button uk-modal-close">取消</button>
  519 + <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存</button>
  520 + </div>
  521 + </form>
  522 + </script>
  523 +
396 524 <script>
397 525 (function () {
398 526 var modal = '#schedule-addsch-modal',
... ... @@ -777,10 +905,69 @@
777 905 }
778 906 })();
779 907  
  908 + /**
  909 + * 场到场
  910 + */
  911 + var parkToParkObj = (function () {
  912 +
  913 + var cont = $('.parkToParkCont', modal);
  914 + var show = function () {
  915 + var formHtml = template('add_park2park_sch-form-temp', sch);
  916 + cont.html(formHtml);
  917 + var f = $('form', cont);
  918 +
  919 + initAutoCom(f);
  920 + //字典转换
  921 + dictionaryUtils.transformDom($('.nt-dictionary', f));
  922 +
  923 + //park options
  924 + var park_opts;
  925 + for (var code in parks)
  926 + park_opts += '<option value="' + code + '">' + parks[code] + '</option>';
  927 + $('[name=qdzCode]', f).html(park_opts);
  928 + $('[name=zdzCode]', f).html(park_opts);
  929 + if(sch.bcType=='in'){
  930 + $('[name=qdzCode]', f).val(sch.zdzCode);
  931 + //选中的也是场到场班次
  932 + if(gb_data_basic.getCarparkByCode(sch.qdzCode) != null){
  933 + //默认做返程
  934 + $('[name=zdzCode]', f).val(sch.qdzCode);
  935 + $('[name=remarks]', f).val(sch.remarks);
  936 + $('[name=jhlc]', f).val(sch.jhlc);
  937 + //时间
  938 + var zdsj = moment(sch.zdsj, 'HH:mm').add('minutes', sch.bcsj).format('HH:mm');
  939 + $('[name=zdsj]', f).val(zdsj);
  940 + }
  941 + }
  942 +
  943 + //校验
  944 + f.formValidation({framework: 'uikit', locale: 'zh_CN'});
  945 + //提交
  946 + f.on('success.form.fv', function (e) {
  947 + e.preventDefault();
  948 +
  949 + disabled_submit_btn(f);
  950 + var data = $(f).serializeJSON();
  951 + submitScheduleForm(data, function (rs) {
  952 + //前端数据更新
  953 + gb_schedule_table.insertSchedule(rs.t, rs.ts);
  954 + $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: rs.t});
  955 + UIkit.modal(modal).hide();
  956 + });
  957 + });
  958 + $('.ct_line_lp_badge', f).html(sch.xlName + ',&nbsp;'+sch.lpName);
  959 + };
  960 +
  961 + return {
  962 + show: show
  963 + }
  964 + })();
  965 +
780 966 /** 左 tabs 切换处理*/
781 967 var leftTabsHandles = {
782 968 normal: normalObj.show,
783   - toAndFro: toAndFroObj.show
  969 + toAndFro: toAndFroObj.show,
  970 + parkToPark: parkToParkObj.show
784 971 };
785 972  
786 973 //返回另一个走向对应的站点
... ...
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/jhlb.html
... ... @@ -92,7 +92,7 @@
92 92 <div class="uk-width-1-1">
93 93 <div class="uk-form-row ct-stacked">
94 94 <div class="uk-form-controls" style="margin-top: 5px;">
95   - <textarea id="form-s-t" cols="30" rows="5" name="remarks" data-fv-stringlength="true" data-fv-stringlength-max="20" placeholder="烂班说明,不超过20个字符。非必填"></textarea>
  95 + <textarea id="form-s-t" cols="30" rows="5" name="remarks" data-fv-stringlength="true" data-fv-stringlength-max="20" placeholder="烂班说明,不超过20个字符"></textarea>
96 96 </div>
97 97 </div>
98 98 </div>
... ...
src/main/resources/static/real_control_v2/js/common.js
... ... @@ -27,6 +27,30 @@ var gb_common = (function () {
27 27 return rs;
28 28 };
29 29  
  30 + /**
  31 + * 从班次集合里提取驾驶员
  32 + * @param list
  33 + */
  34 + var extractJsy = function (list) {
  35 + var rs = {};
  36 + $.each(list, function () {
  37 + rs[this.jGh + '/' + this.jName]=1;
  38 + });
  39 + return rs;
  40 + };
  41 +
  42 + /**
  43 + * 从班次集合里提取路牌
  44 + * @param list
  45 + */
  46 + var extractLpName = function (list) {
  47 + var rs = {};
  48 + $.each(list, function () {
  49 + rs[this.lpName]=1;
  50 + });
  51 + return rs;
  52 + };
  53 +
30 54 var compileTempByDom = function (dom, opts) {
31 55 var tps = {},
32 56 id;
... ... @@ -334,6 +358,8 @@ var gb_common = (function () {
334 358 return {
335 359 reqCode80: reqCode80,
336 360 groupBy: groupBy,
  361 + extractJsy: extractJsy,
  362 + extractLpName: extractLpName,
337 363 compileTempByDom: compileTempByDom,
338 364 $get: $get,
339 365 $post: $post,
... ...
src/main/resources/static/real_control_v2/js/data/data_basic.js
... ... @@ -57,11 +57,12 @@ var gb_data_basic = (function () {
57 57 function loadAllPersonnel(cb) {
58 58 $.get('/basic/all_personnel', function (rs) {
59 59 //转换成自动补全组件需要的数据
60   - var data = [], name;
  60 + var data = [], name, code;
61 61 for (var jobCode in rs) {
62 62 name = rs[jobCode];
  63 + code = jobCode.indexOf('-')!=-1?jobCode.split('-')[1]:jobCode;
63 64 data.push({
64   - value: jobCode + '/' + name,
  65 + value: code + '/' + name,
65 66 fullChars: pinyin.getFullChars(name).toUpperCase(),
66 67 camelChars: pinyin.getCamelChars(name)
67 68 });
... ...
src/main/resources/static/real_control_v2/js/home/context_menu.js
... ... @@ -64,6 +64,9 @@ var gb_home_context_menu = (function() {
64 64  
65 65 //form submit
66 66 var f = $('form', modal).formValidation(gb_form_validation_opts);
  67 + $('.common_phrase_sel', f).on('change', function () {
  68 + $('[name=text]', f).text($(this).val());
  69 + });
67 70 f.on('success.form.fv', function(e) {
68 71 e.preventDefault();
69 72 ajaxPostPhrase(f.serializeJSON(), function() {
... ...
src/main/resources/static/real_control_v2/js/line_schedule/sch_table.js
... ... @@ -407,7 +407,6 @@ var gb_schedule_table = (function () {
407 407 tempDL.addClass('relevance-active');
408 408 if (i < schArr.length - 1 && this.id == id) {
409 409 nextSch = schArr[i + 1];
410   - //tempDL.addClass('intimity');
411 410 }
412 411 });
413 412  
... ...
src/main/resources/static/real_control_v2/js/line_schedule/search.js
... ... @@ -7,7 +7,7 @@ var gb_sch_search = (function() {
7 7 ' {{~items}}' +
8 8 ' <li data-value="{{ $item.value }}">' +
9 9 ' <a>' +
10   - ' {{ $item.value }}' +
  10 + ' {{ $item.text }}' +
11 11 ' <small >{{$item.exec}}</small>' +
12 12 ' <small class="search-result-desc">{{{ $item.desc }}}</small>' +
13 13 ' </a>' +
... ... @@ -17,7 +17,7 @@ var gb_sch_search = (function() {
17 17 '</script>';
18 18  
19 19 var ips = '.search_sch_panel input',
20   - _input, schArr, lineCode, group_cars;
  20 + _input, schArr, lineCode, group_cars, lp_pinyins, jsy_pinyins, searchType;
21 21 $(document)
22 22 .on('focus', ips, function() {
23 23 $(this).parent().addClass('active');
... ... @@ -25,16 +25,36 @@ var gb_sch_search = (function() {
25 25 schArr = gb_common.get_vals(gb_schedule_table.findScheduleByLine(lineCode));
26 26  
27 27 group_cars = gb_common.groupBy(schArr, 'clZbh');
  28 + var group_lp = gb_common.extractLpName(schArr);
  29 + //路牌对照
  30 + lp_pinyins = [];
  31 + for(var lp in group_lp){
  32 + lp_pinyins.push({
  33 + fullChars: pinyin.getFullChars(lp).toUpperCase(),
  34 + camelChars: pinyin.getCamelChars(lp),
  35 + lp: lp
  36 + });
  37 + }
  38 + //驾驶员对照
  39 + /* var group_jsy = gb_common.extractJsy(schArr);
  40 + jsy_pinyins = [];
  41 + for(var jsy in group_jsy){
  42 + jsy_pinyins.push({
  43 + fullChars: pinyin.getFullChars(jsy).toUpperCase(),
  44 + camelChars: pinyin.getCamelChars(jsy),
  45 + val: jsy
  46 + });
  47 + }*/
28 48 _input = $(this);
29 49 })
30 50 .on('blur', ips, function() {
31 51 if ($(this).val() == ''){
32   - reset_all();
  52 + reset_all($(this).parents('li.line_schedule'));
33 53 }
34 54 });
35 55  
36 56 $(document).on('click', '.search_sch_panel i.cancel', function(){
37   - reset_all();
  57 + reset_all($(this).parents('li.line_schedule'));
38 58 });
39 59  
40 60 var elements = '.search_sch_panel .sch-search-autocom';
... ... @@ -56,16 +76,21 @@ var gb_sch_search = (function() {
56 76 }).on('selectitem.uk.autocomplete', selectitem);
57 77 }
58 78  
59   - var autocomplete_source = function(release) {
60   - var rs = [],
61   - v = _input.val().toUpperCase(),
62   - gps, yfwf_map = gb_schedule_table.car_yfwf_map(lineCode);
63   -
  79 + /**
  80 + * 车辆搜索函数
  81 + * @param v
  82 + * @param release
  83 + */
  84 + var searchCar = function (v, release) {
  85 + var rs = [], gps;
  86 + //应发未发数据
  87 + var yfwf_map = gb_schedule_table.car_yfwf_map(lineCode);
64 88 for (var car in group_cars) {
65 89 if (car.indexOf(v) != -1) {
66 90 //车辆对应的gps
67 91 gps = gb_data_gps.findGpsByNbbm(car)
68 92 rs.push({
  93 + text: car,
69 94 value: car,
70 95 desc: '应发未发:' + (yfwf_map[car] == null ? 0 : yfwf_map[car]),
71 96 exec: execSch(gps)
... ... @@ -73,14 +98,123 @@ var gb_sch_search = (function() {
73 98 }
74 99 }
75 100  
  101 + searchType = 'car';
  102 + release && release(rs);
  103 + }
  104 +
  105 + /**
  106 + * 路牌搜索函数
  107 + * @param v
  108 + * @param release
  109 + */
  110 + var searchLp = function (v, release) {
  111 + var rs = [];
  112 + v = v.split('LP')[1];
  113 +
  114 + $.each(lp_pinyins, function () {
  115 + if(this.lp.indexOf(v) != -1 || this.fullChars.indexOf(v) != -1 || this.camelChars.indexOf(v) != -1){
  116 + rs.push({
  117 + text: this.lp,
  118 + value: 'lp' + this.lp,
  119 + desc: '',
  120 + exec: '路牌'
  121 + });
  122 + }
  123 + });
  124 + searchType = 'lp';
76 125 release && release(rs);
77 126 }
78 127  
79   - var reset_all = function() {
80   - var cont = 'li.line_schedule[data-id=' + lineCode + ']';
  128 + /**
  129 + * 按时间范围搜索
  130 + */
  131 + var dt = 1000 * 60 * 60 * 24;
  132 + var gbRange = {};
  133 + var searchTimeRange = function (v, release) {
  134 + var sm, em, text,value, fs = 'HH:mm',fs2='HHmm';
  135 + var start = v.indexOf('ST')==0;
  136 + var ei = v.indexOf('ET');
  137 + var end = ei!=-1 && v.length > ei + 2;
  138 +
  139 + if(start && !end){
  140 + sm = strToTime(v.substr(2));
  141 + text = '搜索' + sm.format(fs) + '之后的班次';
  142 + value = 'st' + sm.format(fs2);
  143 + }
  144 + else if(!start && end){
  145 + em = strToTime(v.substr(2));
  146 + text = '搜索' + em.format(fs) + '之前的班次';
  147 + value = 'et' + em.format(fs2);
  148 + }
  149 + else if(start && end){
  150 + sm = strToTime(v.substring(2, ei));
  151 + em = strToTime(v.substr(ei + 2));
  152 + text = '搜索' + sm.format(fs) + ' 至 ' + em.format(fs) + '之间的班次';
  153 + value = 'st' + sm.format(fs2) + 'et' + em.format(fs2);
  154 + }
  155 +
  156 + var threeBefore = moment().format('HH') < '03';
  157 +
  158 + if(sm) {
  159 + gbRange.st = sm.format('x');
  160 + if (threeBefore)
  161 + gbRange.st -= dt;
  162 + }
  163 + if(em){
  164 + gbRange.et = em.format('x');
  165 + if (threeBefore)
  166 + gbRange.et -= dt;
  167 + }
  168 + searchType = 'timeRange';
  169 + release && release([{
  170 + text: text,
  171 + value: value,
  172 + desc: '',
  173 + exec: ''
  174 + }]);
  175 + }
  176 +
  177 + /**
  178 + * 按驾驶员搜索
  179 +
  180 + var searchJsy = function (v, release) {
  181 + var rs = [];
  182 + v = v.split('JSY')[1];
  183 +
  184 + $.each(jsy_pinyins, function () {
  185 + if(this.val.indexOf(v) != -1 || this.fullChars.indexOf(v) != -1 || this.camelChars.indexOf(v) != -1){
  186 + rs.push({
  187 + text: this.val,
  188 + value: 'jsy' + this.val,
  189 + desc: '',
  190 + exec: '驾驶员'
  191 + });
  192 + }
  193 + });
  194 + searchType = 'jsy';
  195 + release && release(rs);
  196 + }*/
  197 +
  198 + var defaultHandler = searchCar;
  199 + var searchHandlerMapp = {'LP': searchLp/*,'JSY': searchJsy*/, 'ST': searchTimeRange, 'ET': searchTimeRange};
  200 + var autocomplete_source = function(release) {
  201 + var v = _input.val().toUpperCase();
  202 +
  203 + for(var k in searchHandlerMapp){
  204 + if(v.indexOf(k) == 0 && v!=k){
  205 + searchHandlerMapp[k](v, release);
  206 + return;
  207 + }
  208 + }
  209 + //搜索车辆
  210 + searchCar(v, release);
  211 + }
  212 +
  213 + var reset_all = function(cont) {
  214 + //var cont = 'li.line_schedule[data-id=' + lineCode + ']';
81 215 //uikit 会记住上一次搜索值,触发keyup以清空该值
82 216 $('.sch-search-autocom input', cont).val('').trigger('keyup').parent().removeClass('active');
83   - $('.line-schedule-table .ct_table_body dl._search_hide', cont).removeClass('_search_hide');
  217 + $('.line-schedule-table .ct_table_body', cont).removeClass('search_result_body').find('dl._search_hide').removeClass('_search_hide');
84 218 //更新滚动条高度
85 219 $('.ct_table_wrap', cont).perfectScrollbar('update');
86 220 }
... ... @@ -98,13 +232,28 @@ var gb_sch_search = (function() {
98 232 var cont = 'li.line_schedule[data-id=' + lineCode + ']',
99 233 tbodys = $('.line-schedule-table .ct_table_body', cont);
100 234  
  235 + tbodys.addClass('search_result_body');
101 236 $('.sch-search-autocom input', cont).val(data.value).parent().addClass('active');
102 237  
  238 + var v = splitVal(data.value, searchType);
103 239 $.each(tbodys, function() {
104   - filterScheduleByNbbm(this, data.value);
  240 + if(searchType=='car')
  241 + filterScheduleByNbbm(this, v);
  242 + if(searchType=='lp')
  243 + filterScheduleByLpName(this, v);
  244 + if(searchType=='timeRange')
  245 + filterScheduleByTimeRange(this);
  246 + /*if(searchType=='jsy')
  247 + filterScheduleByJsy(this, v);*/
105 248 });
  249 + gbRange = {};
106 250 }
107 251  
  252 + /**
  253 + * 根据车辆过滤表格
  254 + * @param tbody
  255 + * @param car
  256 + */
108 257 var filterScheduleByNbbm = function(tbody, car) {
109 258 var dls = $('dl', tbody),
110 259 dds;
... ... @@ -119,6 +268,111 @@ var gb_sch_search = (function() {
119 268 $(tbody).parents('.ct_table_wrap')[0].scrollTop = 0;
120 269 }
121 270  
  271 + /**
  272 + * 根据路牌过滤表格
  273 + * @param tbody
  274 + * @param lpName
  275 + */
  276 + var filterScheduleByLpName = function (tbody, lpName) {
  277 + var dls = $('dl', tbody),
  278 + dds;
  279 + dls.removeClass('_search_hide');
  280 + $.each(dls, function() {
  281 + dds = $('dd', this);
  282 + if (lpName != $('a', dds[1]).text())
  283 + $(this).addClass('_search_hide');
  284 + });
  285 +
  286 + //滚动条置顶
  287 + $(tbody).parents('.ct_table_wrap')[0].scrollTop = 0;
  288 + }
  289 +
  290 + /**
  291 + * 根据时间范围过滤表格
  292 + * @param tbody
  293 + */
  294 + var filterScheduleByTimeRange = function (tbody) {
  295 + var dls = $('dl', tbody),
  296 + dds;
  297 + dls.removeClass('_search_hide');
  298 + $.each(dls, function() {
  299 + dds = $('dd', this);
  300 + var t = $(dds[6]).data('sort-val');
  301 + if((gbRange.st && t < gbRange.st)
  302 + || (gbRange.et && t > gbRange.et)){
  303 + $(this).addClass('_search_hide');
  304 + }
  305 + });
  306 +
  307 + //滚动条置顶
  308 + $(tbody).parents('.ct_table_wrap')[0].scrollTop = 0;
  309 + }
  310 +
  311 + /**
  312 + * 根据驾驶员过滤表格
  313 +
  314 + var filterScheduleByJsy = function (tbody, jsy) {
  315 +
  316 + }*/
  317 +
  318 +
  319 + function splitVal(v, type) {
  320 + if(type=='car')
  321 + return v;
  322 + if(type=='lp')
  323 + return v.split('lp')[1];
  324 + }
  325 +
  326 + function strToTime(str) {
  327 + var len=str.length, array=new Array(2);
  328 + str = str.replace(new RegExp(':','gm'),':');
  329 + if(str.indexOf(':') != -1){
  330 + array = str.split(':');
  331 + array[0] = splitBefore(array[0], 2);
  332 + array[1] = splitBefore(array[1], 2);
  333 + }
  334 + else{
  335 + if(len == 1)
  336 + str = '0'+str+'00';
  337 + else {
  338 + str = splitBefore2(str);
  339 + }
  340 + array[0] = str.substr(0, 2);
  341 + array[1] = str.substr(2, 2);
  342 + }
  343 +
  344 + return moment(array[0]+array[1], 'HHmm');
  345 + }
  346 +
  347 + function splitBefore(str, size) {
  348 + var len = str.length;
  349 + if(len==size)
  350 + return str;
  351 + else if(len > size)
  352 + return str.substr(0, 2);
  353 + else{
  354 + var coverStr='';
  355 + var c = size - len;
  356 + for(var i = 0; i < c; i ++)
  357 + coverStr+='0';
  358 + return coverStr + str;
  359 + }
  360 + }
  361 +
  362 + function splitBefore2(str, size) {
  363 + var len = str.length;
  364 + if(len==size)
  365 + return str;
  366 + else if(len > size)
  367 + return str.substr(0, 2);
  368 + else{
  369 + var coverStr='';
  370 + var c = size - len;
  371 + for(var i = 0; i < c; i ++)
  372 + coverStr+='0';
  373 + return str + coverStr;
  374 + }
  375 + }
122 376 return {
123 377 init: init
124 378 };
... ...
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-25',
175   - text: '<h5>临加班次功能扩展!</h5>'
  174 + date: '2017-04-26',
  175 + text: '<h5>临加班次新增一项场到场</h5><h5>搜索框可按路牌搜索,lp 打头,st 和 et打头可搜索时间范围</h5>'
176 176 };
177 177  
178 178 var storage = window.localStorage
... ...