Commit b8b6591f560a1c8f5554fabae3acbb54ba2c1ee1
1 parent
29e324be
update...
Showing
11 changed files
with
535 additions
and
28 deletions
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<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<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<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> 保存</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 + ', '+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
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 | ... | ... |