Commit a219b6f749e3759c7d58856e57529945e34bfe7a

Authored by 王通
1 parent 1e706ca6

1.线路版本变更前一天的电子路单异常情况解决

2.调度员点击安全驾驶反馈至dsm
src/main/java/com/bsth/controller/realcontrol/ScheduleRealInfoController.java
1 1 package com.bsth.controller.realcontrol;
2 2  
  3 +import java.io.ByteArrayOutputStream;
  4 +import java.io.IOException;
  5 +import java.io.InputStream;
  6 +import java.io.OutputStream;
  7 +import java.net.HttpURLConnection;
  8 +import java.net.MalformedURLException;
  9 +import java.net.URL;
  10 +import java.net.URLEncoder;
3 11 import java.util.ArrayList;
4 12 import java.util.Arrays;
5 13 import java.util.Collection;
... ... @@ -7,6 +15,10 @@ import java.util.HashMap;
7 15 import java.util.List;
8 16 import java.util.Map;
9 17  
  18 +import com.bsth.entity.sys.SysUser;
  19 +import com.bsth.security.util.SecurityUtils;
  20 +import com.fasterxml.jackson.databind.ObjectMapper;
  21 +import org.apache.commons.io.IOUtils;
10 22 import org.apache.commons.lang3.StringEscapeUtils;
11 23 import org.joda.time.format.DateTimeFormat;
12 24 import org.joda.time.format.DateTimeFormatter;
... ... @@ -711,7 +723,7 @@ public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo,
711 723  
712 724 /**
713 725 * 从历史库里删除临加班次
714   - * @param sch
  726 + * @param param
715 727 * @return
716 728 */
717 729 @RequestMapping(value = "wxsb", method = RequestMethod.POST)
... ... @@ -728,4 +740,50 @@ public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo,
728 740 public Map<String, String> lineLevel(@RequestParam String idx){
729 741 return scheduleRealInfoService.getLevelsByLines(Arrays.asList(idx.split(",")));
730 742 }
  743 +
  744 + /**
  745 + * 反馈安全驾驶系统
  746 + * @param param
  747 + * @return
  748 + */
  749 + @RequestMapping(value = "ackDsm", method = RequestMethod.POST)
  750 + public Map<String, Object> ackDsm(@RequestParam Map<String, Object> param){
  751 + Map<String, Object> res = new HashMap<>();
  752 + InputStream in = null;
  753 + OutputStream out = null;
  754 + SysUser user = SecurityUtils.getCurrentUser();
  755 + DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
  756 + StringBuilder url = new StringBuilder("http://211.95.61.66:9008/modules/dsmCheckTheRecord/addDsm?"), uri = new StringBuilder();
  757 + uri.append("ddyName=").append(user == null ? "admin" : user.getUserName());
  758 + uri.append("&checkTime=").append(fmt.print(System.currentTimeMillis()));
  759 + uri.append("&nbbm=").append(param.get("nbbm"));
  760 + uri.append("&starttime=").append(fmt.print(Long.parseLong(param.get("ts").toString())));
  761 + try {
  762 + url.append(URLEncoder.encode(url.toString(), "UTF-8"));
  763 + HttpURLConnection con = (HttpURLConnection)new URL(url.toString()).openConnection();
  764 + con.setDoInput(true);
  765 + con.setRequestMethod("POST");
  766 + con.setConnectTimeout(5000);
  767 + con.setReadTimeout(5000);
  768 + con.setRequestProperty("keep-alive", "true");
  769 + con.setRequestProperty("accept", "*/*");
  770 + con.setRequestProperty("content-type", "application/x-www-form-urlencoded");
  771 + con.connect();
  772 +
  773 + if (con.getResponseCode() == 200) {
  774 + in = con.getInputStream();
  775 + ByteArrayOutputStream bout = new ByteArrayOutputStream();
  776 + IOUtils.copy(in, bout);
  777 + Map<String, Object> map = new ObjectMapper().readValue(bout.toByteArray(), Map.class);
  778 + }
  779 + } catch (MalformedURLException e) {
  780 + // TODO Auto-generated catch block
  781 + e.printStackTrace();
  782 + } catch (IOException e) {
  783 + // TODO Auto-generated catch block
  784 + e.printStackTrace();
  785 + }
  786 +
  787 + return res;
  788 + }
731 789 }
... ...
src/main/java/com/bsth/repository/LineVersionsRepository.java
1   -package com.bsth.repository;
2   -
3   -import java.util.Date;
4   -import java.util.List;
5   -
6   -import org.springframework.data.jpa.repository.Modifying;
7   -import org.springframework.data.jpa.repository.Query;
8   -import org.springframework.stereotype.Repository;
9   -import org.springframework.transaction.annotation.Transactional;
10   -
11   -import com.bsth.entity.Line;
12   -import com.bsth.entity.LineVersions;
13   -
14   -/**
15   - *
16   - * @Interface: LineVersionsRepository(线路Repository数据持久层接口)
17   - *
18   - * @Extends : BaseRepository
19   - *
20   - * @Description: TODO(线路版本Repository数据持久层接口)
21   - *
22   - * @Author bsth@lq
23   - *
24   - * @Version 公交调度系统BS版 0.1
25   - *
26   - */
27   -@Repository
28   -public interface LineVersionsRepository extends BaseRepository<LineVersions, Integer> {
29   -
30   - /**
31   - * 获取线路所有版本
32   - */
33   - @Query(value = " SELECT lv FROM LineVersions lv where lv.line.id = ?1")
34   - public List<LineVersions> findBylineId(int lineId);
35   -
36   - @Transactional
37   - @Modifying
38   - @Query(value = "UPDATE LineVersions lv set lv.line=?2, lv.lineCode=?3, lv.startDate=?4, lv.endDate=?5, "
39   - + "lv.versions=?6, lv.status=?7, lv.remark=?8, lv.name=?9 where lv.id=?1")
40   - public int update(Integer id, Line line, String lineCode, Date startDate, Date endDate, Integer versions, Integer status,
41   - String remark,String name);
42   -
43   - /**
44   - * 查询待更新线路的线路版本
45   - */
46   - @Query(value = "SELECT lv FROM LineVersions lv where lv.status = 2 and lv.startDate<sysdate() and lv.endDate > sysdate() and lv.isupdate != 1")
47   - public List<LineVersions> findupdated();
48   -
49   - /**
50   - * 更改为历史版本
51   - */
52   - @Modifying
53   - @Query(value = "UPDATE LineVersions lv set lv.status=0 where lv.line.id=?1 and lv.lineCode=?2 and lv.status=1")
54   - public void updateOdlVersions(Integer lineId, String lineCode);
55   -
56   - /**
57   - * 更改为当前版本
58   - */
59   - @Modifying
60   - @Query(value = "UPDATE LineVersions lv set lv.status=1 where lv.line.id=?1 and lv.lineCode=?2 and lv.versions=?3")
61   - public void updateNewVersions(Integer lineId, String lineCode, Integer versions);
62   -
63   -
64   - /**
65   - * 查询线路最大线路版本
66   - */
67   - @Query(value = "select lv2 from LineVersions lv2 where lv2.line.id =?1 and lv2.versions=(SELECT max(lv.versions) FROM LineVersions lv where lv.line.id = ?1) ")
68   - public LineVersions findLineVersionsMax(int lineId);
69   -
70   - /**
71   - * 获取线路版本的上一个版本
72   - */
73   - @Query(value = " SELECT lv FROM LineVersions lv where lv.line.id = ?1 and lv.versions = (SELECT MAX(v.versions) FROM LineVersions v where v.line.id = ?1 and v.versions < ?2)")
74   - public LineVersions findBylineIdAndVersions(Integer id, Integer versions);
75   -
76   -
77   - /**
78   - * 获取线路版本的上一个版本
79   - */
80   - @Query(value = " SELECT lv.versions FROM LineVersions lv where lv.line.id = ?1 and lv.status=1")
81   - public Integer findCurrentVersion(Integer id);
82   -
83   - /**
84   - * 发布版本
85   - */
86   - @Transactional
87   - @Modifying
88   - @Query(value = "UPDATE LineVersions lv set lv.isupdate=1 where lv.id=?1 ")
89   - public int issueVersion(int id);
90   -}
  1 +package com.bsth.repository;
  2 +
  3 +import java.util.Date;
  4 +import java.util.List;
  5 +
  6 +import org.springframework.data.jpa.repository.Modifying;
  7 +import org.springframework.data.jpa.repository.Query;
  8 +import org.springframework.stereotype.Repository;
  9 +import org.springframework.transaction.annotation.Transactional;
  10 +
  11 +import com.bsth.entity.Line;
  12 +import com.bsth.entity.LineVersions;
  13 +
  14 +/**
  15 + *
  16 + * @Interface: LineVersionsRepository(线路Repository数据持久层接口)
  17 + *
  18 + * @Extends : BaseRepository
  19 + *
  20 + * @Description: TODO(线路版本Repository数据持久层接口)
  21 + *
  22 + * @Author bsth@lq
  23 + *
  24 + * @Version 公交调度系统BS版 0.1
  25 + *
  26 + */
  27 +@Repository
  28 +public interface LineVersionsRepository extends BaseRepository<LineVersions, Integer> {
  29 +
  30 + /**
  31 + * 获取线路所有版本
  32 + */
  33 + @Query(value = " SELECT lv FROM LineVersions lv where lv.line.id = ?1")
  34 + public List<LineVersions> findBylineId(int lineId);
  35 +
  36 + @Transactional
  37 + @Modifying
  38 + @Query(value = "UPDATE LineVersions lv set lv.line=?2, lv.lineCode=?3, lv.startDate=?4, lv.endDate=?5, "
  39 + + "lv.versions=?6, lv.status=?7, lv.remark=?8, lv.name=?9 where lv.id=?1")
  40 + public int update(Integer id, Line line, String lineCode, Date startDate, Date endDate, Integer versions, Integer status,
  41 + String remark,String name);
  42 +
  43 + /**
  44 + * 查询待更新线路的线路版本
  45 + */
  46 + @Query(value = "SELECT lv FROM LineVersions lv where lv.status = 2 and lv.startDate<sysdate() and lv.endDate > sysdate() and lv.isupdate != 1")
  47 + public List<LineVersions> findupdated();
  48 +
  49 + /**
  50 + * 更改为历史版本
  51 + */
  52 + @Modifying
  53 + @Query(value = "UPDATE LineVersions lv set lv.status=0 where lv.line.id=?1 and lv.lineCode=?2 and lv.status=1")
  54 + public void updateOdlVersions(Integer lineId, String lineCode);
  55 +
  56 + /**
  57 + * 更改为当前版本
  58 + */
  59 + @Modifying
  60 + @Query(value = "UPDATE LineVersions lv set lv.status=1 where lv.line.id=?1 and lv.lineCode=?2 and lv.versions=?3")
  61 + public void updateNewVersions(Integer lineId, String lineCode, Integer versions);
  62 +
  63 +
  64 + /**
  65 + * 查询线路最大线路版本
  66 + */
  67 + @Query(value = "select lv2 from LineVersions lv2 where lv2.line.id =?1 and lv2.versions=(SELECT max(lv.versions) FROM LineVersions lv where lv.line.id = ?1) ")
  68 + public LineVersions findLineVersionsMax(int lineId);
  69 +
  70 + /**
  71 + * 获取线路版本的上一个版本
  72 + */
  73 + @Query(value = " SELECT lv FROM LineVersions lv where lv.line.id = ?1 and lv.versions = (SELECT MAX(v.versions) FROM LineVersions v where v.line.id = ?1 and v.versions < ?2)")
  74 + public LineVersions findBylineIdAndVersions(Integer id, Integer versions);
  75 +
  76 +
  77 + /**
  78 + * 获取线路版本的上一个版本
  79 + */
  80 + @Query(value = " SELECT lv.versions FROM LineVersions lv where lv.line.id = ?1 and lv.status=1")
  81 + public Integer findCurrentVersion(Integer id);
  82 +
  83 + /**
  84 + * 发布版本
  85 + */
  86 + @Transactional
  87 + @Modifying
  88 + @Query(value = "UPDATE LineVersions lv set lv.isupdate=1 where lv.id=?1 ")
  89 + public int issueVersion(int id);
  90 +
  91 + /**
  92 + * 获取指定日期的线路版本
  93 + */
  94 + @Query(value = " SELECT lv FROM LineVersions lv where FROM_UNIXTIME(?1) between lv.startDate and lv.endDate")
  95 + public List<LineVersions> findLineVersionsByDate(int timestamp);
  96 +}
... ...
src/main/java/com/bsth/service/impl/TrafficManageServiceImpl.java
... ... @@ -27,6 +27,7 @@ import com.bsth.webService.trafficManage.org.tempuri.WebServiceSoap;
27 27 import org.apache.commons.lang.StringEscapeUtils;
28 28 import org.apache.commons.lang.StringUtils;
29 29 import org.apache.commons.lang.time.DateUtils;
  30 +import org.joda.time.DateTime;
30 31 import org.slf4j.Logger;
31 32 import org.slf4j.LoggerFactory;
32 33 import org.springframework.beans.factory.annotation.Autowired;
... ... @@ -125,6 +126,12 @@ public class TrafficManageServiceImpl implements TrafficManageService{
125 126 @Autowired
126 127 private SendEmailController sendEmailController;
127 128  
  129 + /**
  130 + * 线路版本repository
  131 + */
  132 + @Autowired
  133 + private LineVersionsRepository lineVersionsRepository;
  134 +
128 135 // 运管处上传接口
129 136 private com.bsth.webService.trafficManage.up.org.tempuri.WebServiceSoap webServiceSoapUp;
130 137 private WebServiceSoap ssop ;
... ... @@ -383,7 +390,7 @@ public class TrafficManageServiceImpl implements TrafficManageService{
383 390 String date = theDate == null ?sdfnyr.format(DateUtils.addDays(new Date(), -1)) : theDate;
384 391 StringBuffer sf = new StringBuffer();
385 392 Results results = null;
386   - String str = "",xlbm;
  393 + String str = "", xlbm = null, oldXlbm = null;
387 394 List<Map<String,Object>> listGroup = null;
388 395 int scount = 0, ccount = 0;
389 396 long start = System.currentTimeMillis();
... ... @@ -412,10 +419,19 @@ public class TrafficManageServiceImpl implements TrafficManageService{
412 419 code2line.put(line.getLineCode(), line);
413 420 }
414 421  
  422 + // 线路编码和线路版本映射(电子路单日期)
  423 + Map<String, Integer> code2version = new HashMap<>();
  424 + Iterable<LineVersions> versions = lineVersionsRepository.findLineVersionsByDate((int)(DateTime.parse(theDate).getMillis() / 1000));
  425 + for (LineVersions version : versions) {
  426 + code2version.put(version.getLineCode(), version.getVersions());
  427 + }
  428 +
  429 + Map<String, Integer> stationNumMap = null;
415 430 for(Map<String,Object> schRealInfo:listGroup){
416 431 if(schRealInfo != null){
417 432 // 获取线路是否使用标识,如果未使用,则不查该线路数据
418   - Line line = code2line.get(schRealInfo.get("xlBm")+"");
  433 + String lineCode = schRealInfo.get("xlBm")+"";
  434 + Line line = code2line.get(lineCode);
419 435 if(line == null || line.getInUse() == null || line.getInUse() == 0){
420 436 ccount++;
421 437 continue;
... ... @@ -425,7 +441,14 @@ public class TrafficManageServiceImpl implements TrafficManageService{
425 441 sf.append("<DLDS>");
426 442 }
427 443 counter ++;
428   - xlbm = BasicData.lineCode2ShangHaiCodeMap.get(schRealInfo.get("xlBm")+"");
  444 + xlbm = BasicData.lineCode2ShangHaiCodeMap.get(lineCode);
  445 + if (!xlbm.equals(oldXlbm)) {
  446 + oldXlbm = xlbm;
  447 + Integer ver = code2version.get(lineCode);
  448 + if (ver != null) {
  449 + stationNumMap = getLsStationRoute(lineCode, ver);
  450 + }
  451 + }
429 452  
430 453 sf.append("<DLD>");
431 454 sf.append("<RQ>").append(date).append("</RQ>");
... ... @@ -460,7 +483,7 @@ public class TrafficManageServiceImpl implements TrafficManageService{
460 483 // 起点站的参数
461 484 otherMap.put("stationMark","B");
462 485 paramMap = packageYgcStationNumParam(scheduleRealInfo,otherMap);
463   - sf.append("<FCZDXH>").append(getYgcStationNumByLineCodeAndDirectionAndStationName(paramMap,null)).append("</FCZDXH>");
  486 + sf.append("<FCZDXH>").append(getYgcStationNumByLineCodeAndDirectionAndStationName(paramMap,stationNumMap)).append("</FCZDXH>");
464 487 sf.append("<FCZDBM>").append(scheduleRealInfo.getQdzCode()).append("</FCZDBM>");
465 488 sf.append("<JHFCSJ>").append(scheduleRealInfo.getFcsj()).append("</JHFCSJ>");
466 489 sf.append("<DFSJ>").append(scheduleRealInfo.getDfsj()).append("</DFSJ>");
... ... @@ -470,7 +493,7 @@ public class TrafficManageServiceImpl implements TrafficManageService{
470 493 // 终点站的参数
471 494 otherMap.put("stationMark","E");
472 495 paramMap = packageYgcStationNumParam(scheduleRealInfo,otherMap);
473   - sf.append("<DDZDXH>").append(getYgcStationNumByLineCodeAndDirectionAndStationName(paramMap,null)).append("</DDZDXH>");
  496 + sf.append("<DDZDXH>").append(getYgcStationNumByLineCodeAndDirectionAndStationName(paramMap,stationNumMap)).append("</DDZDXH>");
474 497 sf.append("<DDZDBM>").append(scheduleRealInfo.getZdzCode()).append("</DDZDBM>");
475 498 sf.append("<JHDDSJ>").append(scheduleRealInfo.getZdsj()).append("</JHDDSJ>");
476 499 sf.append("<SJDDSJ>").append(scheduleRealInfo.getZdsjActual()).append("</SJDDSJ>");
... ... @@ -499,6 +522,7 @@ public class TrafficManageServiceImpl implements TrafficManageService{
499 522 scount += invokeSetLD(str, counter);
500 523 }
501 524 } catch (Exception e) {
  525 + e.printStackTrace();
502 526 logger.error("setLD:", e);
503 527 } finally {
504 528 try {
... ...
src/main/resources/static/real_control_v2/js/safe_driv/safeDriv.js
1   -/**
2   - * 安全驾驶相关
3   - */
4   -var gb_safe_driv = (function () {
5   -
6   - var codes = {
7   - 'B4': '未带口罩',
8   - 'A1': '手部违规',
9   - 'A2': '摄像头偏离',
10   - 'A3': '安全带',
11   - 'A4': '未戴袖章',
12   - 'A5': '眨眼/疲劳驾驶',
13   - 'A6': '打哈欠/打瞌睡',
14   - 'A7': '与人交谈',
15   - 'A9': '玩手机',
16   - 'A11': '抽烟',
17   - 'A12': '打电话'
18   - };
19   -
20   - var path = 'http://211.95.61.66:9005/CurrentSafeDriving/';
21   -
22   - var $wrap = $('.safe_driv_pop_wrap');
23   - var max = 5;
24   -
25   - var pop = function (sd) {
26   - //时间格式化
27   - var stm = moment(sd.ts);
28   - sd.timeStr = stm.format('HH时mm分ss秒');
29   - //异常状态文本
30   - if(sd.jctype == 'B4')
31   - sd.ycztText = codes[sd.jctype];
32   - else
33   - sd.ycztText = codes[sd.yczltype];
34   - var p;
35   - //图片地址
36   - if(sd.jctype == 'B4')
37   - p = (sd.sbbh+'_A'+sd.yczltype+'_'+stm.format('YYYYMMDDHHmmss'));
38   - else
39   - p = (sd.sbbh+'_'+sd.yczltype+'_'+stm.format('YYYYMMDDHHmmss'));
40   -
41   - var url = stm.format('YYYYMMDD')+'/'+p+'/'+p;
42   - sd.url = path + url + '.gif';
43   -
44   - var htmlStr = template('safe_driv_item-temp', sd);
45   - var items = $wrap.find('.safe_driv_pop'), len = items.length;
46   - if (len >= max)
47   - $wrap.find('.safe_driv_pop:lt(' + (len - max) + ')').remove();
48   -
49   - $wrap.append(htmlStr);
50   - };
51   -
52   -
53   -
54   - $wrap.on('click', '.safe_driv_pop', function () {
55   - var nbbm = $(this).data('nbbm');
56   - var call_btn_html = '<button class="uk-button uk-button-mini uk-button-primary" ' +
57   - 'id="m_voip_call_btn_001" ' +
58   - 'type="button" ' +
59   - 'data-nbbm="'+nbbm+'">打电话</button>';
60   -
61   - var title = $(this).data('title') + '&nbsp;' + call_btn_html;
62   - var url = $(this).data('url');
63   - $(this).remove();
64   -
65   - var lightbox = UIkit.lightbox.create([
66   - {title: title, 'source': url}
67   - ], {keyboard: false});
68   -
69   - lightbox.show();
70   - });
71   -
72   - var channelMap = {
73   - 'A1': 1,
74   - 'A2': 1,
75   - 'A3': 1,
76   - 'A9': 1,
77   - 'A4': 2,
78   - 'A5': 2,
79   - 'A6': 2,
80   - 'A7': 2
81   - };
82   - /* var showVedioModal = function (type) {
83   - var channel = channelMap[type]?channelMap[type]:1;
84   - open_modal_dom(vedioModal.replace('^^channel^^', channel) ,{}, {modal: false});
85   - $('#ssspVedioModal #vedioIframe').on('load', function () {
86   - var that = this;
87   - setTimeout(function () {
88   - $(that).show();
89   - $('#ssspVedioModal p.loading').remove();
90   - }, 500);
91   - });
92   - };*/
93   -
94   - /* $(document).on('click', '#openVedioModalBtn', function () {
95   - showVedioModal($(this).data('type'));
96   - });*/
97   -
98   -
99   - /* var showCallPhoneModal = function () {
100   - open_modal_dom(phoneModal ,{}, {modal: false});
101   - $('#callPhoneModal #phoneIframe').on('load', function () {
102   - var that = this;
103   - var iframe = this.contentWindow.document.body;
104   - setTimeout(function () {
105   - //修改css
106   - $(iframe).find('.CallCenterToolBar').css('height', '200px').css('width', '100%').css('top', '10px').css('left', 'calc(50% - 148px)').css('box-shadow', 'none');
107   - $(iframe).find('.CallCenterToolBar .top').css('display', 'none');
108   -
109   - $('.toolBar td[data-action=call]', iframe).trigger('click');
110   -
111   - //焦点
112   - $('input#telNumber', iframe).focus();
113   -
114   - $(that).show();
115   - $('#callPhoneModal p.loading').remove();
116   - }, 700);
117   - });
118   - };*/
119   -
120   - $(document).on('click', '#m_voip_call_btn_001', function () {
121   - //debugger
122   - var $lb = $('.uk-modal-dialog-lightbox');
123   - var X = $lb.offset().top + $lb.height() - 240;
124   - var Y = $lb.offset().left + $lb.width();
125   -
126   - var nbbm = $(this).data('nbbm');
127   -
128   - var style = 'top: '+X+'px;left: '+Y+'px;height: '+$lb.height()+'px';
129   - var htmlStr = template('voip_call_info_panel-temp', {style: style, nbbm: nbbm});
130   - $lb.css('width', ($lb.width() + 260) + 'px');
131   - $('.uk-lightbox-content', $lb.parent()).append(htmlStr);
132   -
133   - $(this).remove();
134   - gb_call_phone.init(nbbm);
135   - });
136   -
137   -
138   - return {
139   - pop: pop,
140   - safeCode: codes,
141   - urlPath: path//,
142   - //showVedioModal: showVedioModal
143   - }
  1 +/**
  2 + * 安全驾驶相关
  3 + */
  4 +var gb_safe_driv = (function () {
  5 +
  6 + var codes = {
  7 + 'B4': '未带口罩',
  8 + 'A1': '手部违规',
  9 + 'A2': '摄像头偏离',
  10 + 'A3': '安全带',
  11 + 'A4': '未戴袖章',
  12 + 'A5': '眨眼/疲劳驾驶',
  13 + 'A6': '打哈欠/打瞌睡',
  14 + 'A7': '与人交谈',
  15 + 'A9': '玩手机',
  16 + 'A11': '抽烟',
  17 + 'A12': '打电话'
  18 + };
  19 +
  20 + var path = 'http://211.95.61.66:9005/CurrentSafeDriving/';
  21 +
  22 + var $wrap = $('.safe_driv_pop_wrap');
  23 + var max = 5;
  24 +
  25 + var pop = function (sd) {
  26 + //时间格式化
  27 + var stm = moment(sd.ts);
  28 + sd.timeStr = stm.format('HH时mm分ss秒');
  29 + //异常状态文本
  30 + if(sd.jctype == 'B4')
  31 + sd.ycztText = codes[sd.jctype];
  32 + else
  33 + sd.ycztText = codes[sd.yczltype];
  34 + var p;
  35 + //图片地址
  36 + if(sd.jctype == 'B4')
  37 + p = (sd.sbbh+'_A'+sd.yczltype+'_'+stm.format('YYYYMMDDHHmmss'));
  38 + else
  39 + p = (sd.sbbh+'_'+sd.yczltype+'_'+stm.format('YYYYMMDDHHmmss'));
  40 +
  41 + var url = stm.format('YYYYMMDD')+'/'+p+'/'+p;
  42 + sd.url = path + url + '.gif';
  43 +
  44 + var htmlStr = template('safe_driv_item-temp', sd);
  45 + var items = $wrap.find('.safe_driv_pop'), len = items.length;
  46 + if (len >= max)
  47 + $wrap.find('.safe_driv_pop:lt(' + (len - max) + ')').remove();
  48 +
  49 + $wrap.append(htmlStr);
  50 + };
  51 +
  52 +
  53 +
  54 + $wrap.on('click', '.safe_driv_pop', function () {
  55 + var nbbm = $(this).data('nbbm'), ts = $(this).data('ts');
  56 + var call_btn_html = '<button class="uk-button uk-button-mini uk-button-primary" ' +
  57 + 'id="m_voip_call_btn_001" ' +
  58 + 'type="button" ' +
  59 + 'data-nbbm="'+nbbm+'">打电话</button>';
  60 +
  61 + var title = $(this).data('title') + '&nbsp;' + call_btn_html;
  62 + var url = $(this).data('url');
  63 + $(this).remove();
  64 +
  65 + var lightbox = UIkit.lightbox.create([
  66 + {title: title, 'source': url}
  67 + ], {keyboard: false});
  68 +
  69 + lightbox.show();
  70 +
  71 + $.post('/realSchedule/ackDsm', {ts : ts, nbbm : nbbm}, function(res) {});
  72 + });
  73 +
  74 + var channelMap = {
  75 + 'A1': 1,
  76 + 'A2': 1,
  77 + 'A3': 1,
  78 + 'A9': 1,
  79 + 'A4': 2,
  80 + 'A5': 2,
  81 + 'A6': 2,
  82 + 'A7': 2
  83 + };
  84 + /* var showVedioModal = function (type) {
  85 + var channel = channelMap[type]?channelMap[type]:1;
  86 + open_modal_dom(vedioModal.replace('^^channel^^', channel) ,{}, {modal: false});
  87 + $('#ssspVedioModal #vedioIframe').on('load', function () {
  88 + var that = this;
  89 + setTimeout(function () {
  90 + $(that).show();
  91 + $('#ssspVedioModal p.loading').remove();
  92 + }, 500);
  93 + });
  94 + };*/
  95 +
  96 + /* $(document).on('click', '#openVedioModalBtn', function () {
  97 + showVedioModal($(this).data('type'));
  98 + });*/
  99 +
  100 +
  101 + /* var showCallPhoneModal = function () {
  102 + open_modal_dom(phoneModal ,{}, {modal: false});
  103 + $('#callPhoneModal #phoneIframe').on('load', function () {
  104 + var that = this;
  105 + var iframe = this.contentWindow.document.body;
  106 + setTimeout(function () {
  107 + //修改css
  108 + $(iframe).find('.CallCenterToolBar').css('height', '200px').css('width', '100%').css('top', '10px').css('left', 'calc(50% - 148px)').css('box-shadow', 'none');
  109 + $(iframe).find('.CallCenterToolBar .top').css('display', 'none');
  110 +
  111 + $('.toolBar td[data-action=call]', iframe).trigger('click');
  112 +
  113 + //焦点
  114 + $('input#telNumber', iframe).focus();
  115 +
  116 + $(that).show();
  117 + $('#callPhoneModal p.loading').remove();
  118 + }, 700);
  119 + });
  120 + };*/
  121 +
  122 + $(document).on('click', '#m_voip_call_btn_001', function () {
  123 + //debugger
  124 + var $lb = $('.uk-modal-dialog-lightbox');
  125 + var X = $lb.offset().top + $lb.height() - 240;
  126 + var Y = $lb.offset().left + $lb.width();
  127 +
  128 + var nbbm = $(this).data('nbbm');
  129 +
  130 + var style = 'top: '+X+'px;left: '+Y+'px;height: '+$lb.height()+'px';
  131 + var htmlStr = template('voip_call_info_panel-temp', {style: style, nbbm: nbbm});
  132 + $lb.css('width', ($lb.width() + 260) + 'px');
  133 + $('.uk-lightbox-content', $lb.parent()).append(htmlStr);
  134 +
  135 + $(this).remove();
  136 + gb_call_phone.init(nbbm);
  137 + });
  138 +
  139 +
  140 + return {
  141 + pop: pop,
  142 + safeCode: codes,
  143 + urlPath: path//,
  144 + //showVedioModal: showVedioModal
  145 + }
144 146 })();
145 147 \ No newline at end of file
... ...
src/main/resources/static/real_control_v2/main.html
1   -<!DOCTYPE html>
2   -<html lang="zh-cn">
3   -
4   -<head>
5   - <meta charset="UTF-8">
6   - <title>线路调度 v2.0</title>
7   - <!-- uikit core style-->
8   - <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/css/uikit.gradient.min.css" />
9   - <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/notify.gradient.min.css" merge="plugins"/>
10   - <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/tooltip.gradient.min.css" merge="plugins"/>
11   - <link rel="stylesheet"
12   - href="/real_control_v2/assets/plugins/uikit-2.27.1/components/autocomplete.gradient.min.css" merge="plugins"/>
13   - <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/accordion.gradient.min.css" merge="plugins"/>
14   - <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/slidenav.gradient.min.css" merge="plugins"/>
15   - <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/sticky.gradient.min.css" merge="plugins"/>
16   -
17   - <!-- main style -->
18   - <link rel="stylesheet" href="/real_control_v2/css/main.css" />
19   - <!-- north style -->
20   - <link rel="stylesheet" href="/real_control_v2/css/north.css" merge="custom_style"/>
21   - <!-- home style -->
22   - <link rel="stylesheet" href="/real_control_v2/css/home.css" merge="custom_style"/>
23   - <!-- line style -->
24   - <link rel="stylesheet" href="/real_control_v2/css/line_schedule.css" merge="custom_style"/>
25   - <link rel="stylesheet" href="/real_control_v2/css/line_schedule_table.css" merge="custom_style"/>
26   -
27   - <link rel="stylesheet" href="/real_control_v2/css/sch_autocomp_result.css" merge="custom_style"/>
28   - <!-- custom table -->
29   - <link rel="stylesheet" href="/real_control_v2/css/ct_table.css" merge="custom_style"/>
30   - <!-- jquery contextMenu style -->
31   - <link rel="stylesheet" href="/real_control_v2/assets/css/jquery.contextMenu.min.css" merge="plugins"/>
32   - <!-- formvalidation style -->
33   - <link rel="stylesheet" href="/real_control_v2/assets/plugins/formvalidation/formValidation.min.css" merge="plugins"/>
34   - <!-- js tree -->
35   - <link rel="stylesheet" href="/real_control_v2/assets/plugins/jstree/default/style.css" merge="plugins"/>
36   - <!-- tooltip css-->
37   - <link rel="stylesheet" href="/real_control_v2/assets/plugins/qtip/jquery.qtip.min.css" merge="plugins"/>
38   - <link rel="stylesheet" href="/real_control_v2/css/pace.css" merge="plugins"/>
39   -
40   - <link rel="stylesheet" href="/real_control_v2/css/modal_extend.css" merge="custom_style"/>
41   - <!-- perfect-scrollbar style -->
42   - <link rel="stylesheet" href="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.css" merge="plugins"/>
43   - <!-- layer 3.0.3 -->
44   - <link rel="stylesheet" href="/real_control_v2/assets/plugins/layer3.0.3/skin/default/layer.css" merge="plugins"/>
45   - <link rel="stylesheet" href="/real_control_v2/assets/plugins/layer3.0.3/skin/moon/style.css" merge="plugins"/>
46   -
47   - <!-- flatpickr -->
48   - <link rel="stylesheet" href="/real_control_v2/assets/plugins/flatpickr/flatpickr.min.css" merge="plugins">
49   - <link rel="stylesheet" href="/real_control_v2/assets/plugins/flatpickr/themes/airbnb.css" merge="plugins">
50   -</head>
51   -
52   -<body>
53   -<div class="north uk-width-1-1 uk-panel-box">
54   - <div class="uk-grid uk-grid-match">
55   - <div class="uk-width-4-10">
56   - <div class="uk-panel">
57   - <h2 class="north-logo">
58   - <!--<i class="uk-icon-life-ring"></i>--> 浦东公交线路调度
59   - </h2>
60   - </div>
61   - </div>
62   - <div class="uk-width-6-10">
63   - <div class="uk-panel uk-width north-toolbar"></div>
64   - </div>
65   - </div>
66   - <div class="north-tabs"></div>
67   -</div>
68   -
69   -<div class="main-container">
70   - <div class="load-panel">
71   - <i class="uk-icon-spinner uk-icon-spin"></i>
72   - 正在加载数据
73   - </div>
74   -</div>
75   -
76   -<script>
77   -/* var gb_beforeunload_fun = function (e) {
78   - var confirmationMessage = "\o/";
79   - (e || window.event).returnValue = confirmationMessage;
80   - return confirmationMessage;
81   - }
82   - window.addEventListener("beforeunload", gb_beforeunload_fun);*/
83   -
84   - delete window.exports;
85   - delete window.module;
86   -
87   - var ipcMain;
88   - //是否处于electron环境下
89   - var isElectron = (function () {
90   - try {
91   - if (process.versions.electron)
92   - return true;
93   - else
94   - return false;
95   - }
96   - catch (e) {
97   - return false;
98   - }
99   - })();
100   -
101   - if (isElectron) {
102   - var link = document.createElement("link");
103   - link.type = "text/css";
104   - link.rel = "stylesheet";
105   - link.href = "/real_control_v2/css/electron.css";
106   - document.getElementsByTagName("head")[0].appendChild(link);
107   -
108   - ipcMain = require('electron').ipcRenderer;
109   - }
110   -</script>
111   -
112   -<!-- 地图相关 -->
113   -<script src="http://api.map.baidu.com/api?v=2.0&ak=IGGrr4UjwIYzatoCRFKEL8sT"></script>
114   -<script src="http://api.map.baidu.com/library/TrafficControl/1.4/src/TrafficControl_min.js"></script>
115   -<script src="/assets/js/baidu//MarkerClusterer.js" merge="plugins"></script>
116   -<script src="/assets/js/TransGPS.js" merge="plugins"></script>
117   -<!-- 高德 -->
118   -<script src="http://webapi.amap.com/maps?v=1.3&key=16cb1c5043847e09ef9edafdd77befda"></script>
119   -<!-- jquery -->
120   -<script src="/real_control_v2/assets/js/jquery.min.js"></script>
121   -<!-- jquery actual -->
122   -<script src="/real_control_v2/assets/js/jquery.actual.min.js" merge="plugins"></script>
123   -<!-- jquery.serializejson JSON序列化插件 -->
124   -<script src="/assets/plugins/jquery.serializejson.js" merge="plugins"></script>
125   -<!-- moment.js 日期处理类库 -->
126   -<script src="/real_control_v2/assets/plugins/moment/moment.min.js"></script>
127   -<script src="/real_control_v2/assets/plugins/moment/zh-cn.js"></script>
128   -
129   -<!-- flatpickr -->
130   -<script src="/real_control_v2/assets/plugins/flatpickr/flatpickr.min.js" merge="plugins"></script>
131   -<script src="/real_control_v2/assets/plugins/flatpickr/l10n/zh.js" merge="plugins"></script>
132   -
133   -<!-- perfect-scrollbar -->
134   -<script src="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.jquery.js" merge="plugins"></script>
135   -<!-- common js -->
136   -<script src="/real_control_v2/js/common.js"></script>
137   -<!-- art-template 模版引擎 -->
138   -<script src="/assets/plugins/template.js" merge="plugins"></script>
139   -<!-- d3 -->
140   -<script src="/assets/js/d3.min.js"></script>
141   -<!-- EventProxy -->
142   -<script src="/assets/js/eventproxy.js"></script>
143   -<!-- main js -->
144   -<script src="/real_control_v2/js/main.js"></script>
145   -<!-- uikit core -->
146   -<script src="/real_control_v2/assets/plugins/uikit-2.27.1/uikit.min.js" merge="uikit_js"></script>
147   -<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/notify.min.js" merge="uikit_js"></script>
148   -<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/pagination.min.js" merge="uikit_js"></script>
149   -<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/tooltip.min.js" merge="uikit_js"></script>
150   -<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/autocomplete.min.js" merge="uikit_js"></script>
151   -<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/accordion.min.js" merge="uikit_js"></script>
152   -<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/timepicker.min.js" merge="uikit_js"></script>
153   -<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/lightbox.min.js" merge="uikit_js"></script>
154   -<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/sticky.min.js" merge="uikit_js"></script>
155   -
156   -
157   -<!-- jquery contextMenu -->
158   -<script src="/real_control_v2/assets/js/jquery.contextMenu.min.js" merge="plugins"></script>
159   -<script src="/real_control_v2/assets/js/jquery.ui.position.min.js" merge="plugins"></script>
160   -<!-- formvalidation- -->
161   -<script src="/real_control_v2/assets/plugins/formvalidation/formValidation.min.js" merge="plugins"></script>
162   -<script src="/real_control_v2/assets/plugins/formvalidation/zh_CN.js" merge="plugins"></script>
163   -<script src="/real_control_v2/assets/plugins/formvalidation/uikit.min.js" merge="plugins"></script>
164   -<!-- js tree -->
165   -<script src="/real_control_v2/assets/plugins/jstree/jstree.min.js" merge="plugins"></script>
166   -<!-- simple pinyin -->
167   -<script src="/assets/plugins/pinyin.js" merge="plugins"></script>
168   -<!-- qtip -->
169   -<script src="/real_control_v2/assets/plugins/qtip/jquery.qtip.min.js" merge="plugins"></script>
170   -<!-- layer 3.0.3 -->
171   -<script src="/real_control_v2/assets/plugins/layer3.0.3/layer.js" merge="plugins"></script>
172   -
173   -<!-- 数据 -->
174   -<script src="/real_control_v2/js/data/data_basic.js" merge="custom_js"></script>
175   -<script src="/real_control_v2/js/data/data_gps.js" merge="custom_js"></script>
176   -<script src="/real_control_v2/js/data/gps_abnormal.js" merge="custom_js"></script>
177   -<script src="/real_control_v2/js/data/data_line_config.js" merge="custom_js"></script>
178   -<!-- 线路模拟图 -->
179   -<script src="/real_control_v2/js/utils/svg_chart.js" merge="custom_js"></script>
180   -<script src="/real_control_v2/js/utils/svg_data_convert.js" merge="custom_js"></script>
181   -<script src="/real_control_v2/js/utils/svg_chart_tooltip.js" merge="custom_js"></script>
182   -<script src="/real_control_v2/js/utils/svg_chart_map.js" merge="custom_js"></script>
183   -
184   -<!-- custom table js -->
185   -<script src="/real_control_v2/js/utils/ct_table.js" merge="custom_js"></script>
186   -<!-- north js -->
187   -<script src="/real_control_v2/js/north/toolbar.js" merge="custom_js"></script>
188   -<script src="/real_control_v2/js/north/tabs.js" merge="custom_js"></script>
189   -<script src="/real_control_v2/js/north/second_timer.js" merge="custom_js"></script>
190   -<!-- home js -->
191   -<script src="/real_control_v2/js/home/layout.js" merge="custom_js"></script>
192   -<script src="/real_control_v2/js/home/line_panel.js" merge="custom_js"></script>
193   -<script src="/real_control_v2/js/home/context_menu.js" merge="custom_js"></script>
194   -<!-- line schedule js -->
195   -<script src="/real_control_v2/js/line_schedule/legend.js" merge="custom_js"></script>
196   -<script src="/real_control_v2/js/line_schedule/layout.js" merge="custom_js"></script>
197   -<script src="/real_control_v2/js/line_schedule/sch_table.js" merge="custom_js"></script>
198   -<script src="/real_control_v2/js/line_schedule/context_menu.js" merge="custom_js"></script>
199   -<script src="/real_control_v2/js/line_schedule/dbclick.js" merge="custom_js"></script>
200   -<script src="/real_control_v2/js/line_schedule/search.js" merge="custom_js"></script>
201   -<script src="/real_control_v2/js/line_schedule/badge_tooltip.js" merge="custom_js"></script>
202   -<script src="/real_control_v2/js/line_schedule/mileage_count.js" merge="custom_js"></script>
203   -
204   -<!-- 字典相关 -->
205   -<script src="/assets/js/dictionary.js" merge="custom_js"></script>
206   -<!-- websocket -->
207   -<script src="/real_control_v2/assets/plugins/sockjs-client/sockjs.min.js"></script>
208   -<script src="/real_control_v2/js/websocket/sch_websocket.js" merge="custom_js"></script>
209   -<!-- tts -->
210   -<script src="/real_control_v2/js/utils/tts.js" merge="custom_js"></script>
211   -
212   -<!-- echart -->
213   -<script src="/real_control_v2/assets/echarts-3/echarts.js" merge="plugins"></script>
214   -<!-- Geolib -->
215   -<script src="/real_control_v2/geolib/geolib.js" merge="plugins"></script>
216   -
217   -<script src="/real_control_v2/js/signal_state/signal_state.js" merge="custom_js"></script>
218   -<script src="/real_control_v2/js/utils/dispatch_pattern.js" merge="custom_js"></script>
219   -
220   -<!-- 处理表单片段嵌入问题 -->
221   -<script src="/real_control_v2/js/forms/form_embed.js" merge="custom_js"></script>
222   -<!-- 模态框扩展 -->
223   -<script src="/real_control_v2/js/modal_extend.js" merge="custom_js"></script>
224   -
225   -<!-- #### 安全驾驶 start ### -->
226   -<div class="safe_driv_pop_wrap" ></div>
227   -<script id="safe_driv_item-temp" type="text/html">
228   - <div class="safe_driv_pop uk-animation-slide-bottom" data-nbbm="{{clzbh}}" data-type="{{yczltype}}" data-title="{{clzbh}} {{timeStr}} {{ycztText}}" data-url="{{url}}">
229   - <div>
230   - <span class="title">异常&nbsp;{{clzbh}}</span>
231   - <span class="text"> {{timeStr}} 出现违规驾驶({{ycztText}})</span>
232   - <span class="desc">--安全驾驶监管平台</span>
233   - </div>
234   - </div>
235   -</script>
236   -
237   -<script src="/real_control_v2/js/safe_driv/safeDriv.js" merge="custom_js"></script>
238   -<!-- #### 安全驾驶 end ### -->
239   -
240   -<!-- 打电话 -->
241   -<script src="http://114.80.178.12:9003/forward/voip/callCenterJs"></script>
242   -<script src="http://114.80.178.12:9003/forward/voip/phonePluginJs"></script>
243   -<script src="/real_control_v2/js/safe_driv/call_phone.js" ></script>
244   -
245   -<script id="voip_call_info_panel-temp" type="text/html">
246   - <div class="voip_call_info_panel" style="{{style}}">
247   - <p class="_title">VOIP</p>
248   - <form class="uk-form uk-form-horizontal">
249   -
250   - <div class="uk-form-row">
251   - <label class="uk-form-label" >工号:</label>
252   - <div class="uk-form-controls">
253   - <input type="text" name="agentID" value="1002" disabled>
254   - </div>
255   - </div>
256   - <div class="uk-form-row">
257   - <label class="uk-form-label" ">分机号:</label>
258   - <div class="uk-form-controls">
259   - <input type="text" name="dn" value="" >
260   - </div>
261   - </div>
262   - <div class="uk-form-row">
263   - <label class="uk-form-label" >自编号:</label>
264   - <div class="uk-form-controls">
265   - <input type="text" value="{{nbbm}}" disabled>
266   - </div>
267   - </div>
268   - <div class="uk-form-row">
269   - <label class="uk-form-label" >SIM号:</label>
270   - <div class="uk-form-controls">
271   - <input type="text" name="simNo" disabled>
272   - </div>
273   - </div>
274   - <hr>
275   - <h4 class="state_txt">
276   - <button class="uk-button uk-button-large" type="button" disabled>获取SIM卡号...</button>
277   - </h4>
278   - </form>
279   - </div>
280   -</script>
281   -</body>
282   -
283   -</html>
  1 +<!DOCTYPE html>
  2 +<html lang="zh-cn">
  3 +
  4 +<head>
  5 + <meta charset="UTF-8">
  6 + <title>线路调度 v2.0</title>
  7 + <!-- uikit core style-->
  8 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/css/uikit.gradient.min.css" />
  9 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/notify.gradient.min.css" merge="plugins"/>
  10 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/tooltip.gradient.min.css" merge="plugins"/>
  11 + <link rel="stylesheet"
  12 + href="/real_control_v2/assets/plugins/uikit-2.27.1/components/autocomplete.gradient.min.css" merge="plugins"/>
  13 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/accordion.gradient.min.css" merge="plugins"/>
  14 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/slidenav.gradient.min.css" merge="plugins"/>
  15 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/sticky.gradient.min.css" merge="plugins"/>
  16 +
  17 + <!-- main style -->
  18 + <link rel="stylesheet" href="/real_control_v2/css/main.css" />
  19 + <!-- north style -->
  20 + <link rel="stylesheet" href="/real_control_v2/css/north.css" merge="custom_style"/>
  21 + <!-- home style -->
  22 + <link rel="stylesheet" href="/real_control_v2/css/home.css" merge="custom_style"/>
  23 + <!-- line style -->
  24 + <link rel="stylesheet" href="/real_control_v2/css/line_schedule.css" merge="custom_style"/>
  25 + <link rel="stylesheet" href="/real_control_v2/css/line_schedule_table.css" merge="custom_style"/>
  26 +
  27 + <link rel="stylesheet" href="/real_control_v2/css/sch_autocomp_result.css" merge="custom_style"/>
  28 + <!-- custom table -->
  29 + <link rel="stylesheet" href="/real_control_v2/css/ct_table.css" merge="custom_style"/>
  30 + <!-- jquery contextMenu style -->
  31 + <link rel="stylesheet" href="/real_control_v2/assets/css/jquery.contextMenu.min.css" merge="plugins"/>
  32 + <!-- formvalidation style -->
  33 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/formvalidation/formValidation.min.css" merge="plugins"/>
  34 + <!-- js tree -->
  35 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/jstree/default/style.css" merge="plugins"/>
  36 + <!-- tooltip css-->
  37 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/qtip/jquery.qtip.min.css" merge="plugins"/>
  38 + <link rel="stylesheet" href="/real_control_v2/css/pace.css" merge="plugins"/>
  39 +
  40 + <link rel="stylesheet" href="/real_control_v2/css/modal_extend.css" merge="custom_style"/>
  41 + <!-- perfect-scrollbar style -->
  42 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.css" merge="plugins"/>
  43 + <!-- layer 3.0.3 -->
  44 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/layer3.0.3/skin/default/layer.css" merge="plugins"/>
  45 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/layer3.0.3/skin/moon/style.css" merge="plugins"/>
  46 +
  47 + <!-- flatpickr -->
  48 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/flatpickr/flatpickr.min.css" merge="plugins">
  49 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/flatpickr/themes/airbnb.css" merge="plugins">
  50 +</head>
  51 +
  52 +<body>
  53 +<div class="north uk-width-1-1 uk-panel-box">
  54 + <div class="uk-grid uk-grid-match">
  55 + <div class="uk-width-4-10">
  56 + <div class="uk-panel">
  57 + <h2 class="north-logo">
  58 + <!--<i class="uk-icon-life-ring"></i>--> 浦东公交线路调度
  59 + </h2>
  60 + </div>
  61 + </div>
  62 + <div class="uk-width-6-10">
  63 + <div class="uk-panel uk-width north-toolbar"></div>
  64 + </div>
  65 + </div>
  66 + <div class="north-tabs"></div>
  67 +</div>
  68 +
  69 +<div class="main-container">
  70 + <div class="load-panel">
  71 + <i class="uk-icon-spinner uk-icon-spin"></i>
  72 + 正在加载数据
  73 + </div>
  74 +</div>
  75 +
  76 +<script>
  77 +/* var gb_beforeunload_fun = function (e) {
  78 + var confirmationMessage = "\o/";
  79 + (e || window.event).returnValue = confirmationMessage;
  80 + return confirmationMessage;
  81 + }
  82 + window.addEventListener("beforeunload", gb_beforeunload_fun);*/
  83 +
  84 + delete window.exports;
  85 + delete window.module;
  86 +
  87 + var ipcMain;
  88 + //是否处于electron环境下
  89 + var isElectron = (function () {
  90 + try {
  91 + if (process.versions.electron)
  92 + return true;
  93 + else
  94 + return false;
  95 + }
  96 + catch (e) {
  97 + return false;
  98 + }
  99 + })();
  100 +
  101 + if (isElectron) {
  102 + var link = document.createElement("link");
  103 + link.type = "text/css";
  104 + link.rel = "stylesheet";
  105 + link.href = "/real_control_v2/css/electron.css";
  106 + document.getElementsByTagName("head")[0].appendChild(link);
  107 +
  108 + ipcMain = require('electron').ipcRenderer;
  109 + }
  110 +</script>
  111 +
  112 +<!-- 地图相关 -->
  113 +<script src="http://api.map.baidu.com/api?v=2.0&ak=IGGrr4UjwIYzatoCRFKEL8sT"></script>
  114 +<script src="http://api.map.baidu.com/library/TrafficControl/1.4/src/TrafficControl_min.js"></script>
  115 +<script src="/assets/js/baidu//MarkerClusterer.js" merge="plugins"></script>
  116 +<script src="/assets/js/TransGPS.js" merge="plugins"></script>
  117 +<!-- 高德 -->
  118 +<script src="http://webapi.amap.com/maps?v=1.3&key=16cb1c5043847e09ef9edafdd77befda"></script>
  119 +<!-- jquery -->
  120 +<script src="/real_control_v2/assets/js/jquery.min.js"></script>
  121 +<!-- jquery actual -->
  122 +<script src="/real_control_v2/assets/js/jquery.actual.min.js" merge="plugins"></script>
  123 +<!-- jquery.serializejson JSON序列化插件 -->
  124 +<script src="/assets/plugins/jquery.serializejson.js" merge="plugins"></script>
  125 +<!-- moment.js 日期处理类库 -->
  126 +<script src="/real_control_v2/assets/plugins/moment/moment.min.js"></script>
  127 +<script src="/real_control_v2/assets/plugins/moment/zh-cn.js"></script>
  128 +
  129 +<!-- flatpickr -->
  130 +<script src="/real_control_v2/assets/plugins/flatpickr/flatpickr.min.js" merge="plugins"></script>
  131 +<script src="/real_control_v2/assets/plugins/flatpickr/l10n/zh.js" merge="plugins"></script>
  132 +
  133 +<!-- perfect-scrollbar -->
  134 +<script src="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.jquery.js" merge="plugins"></script>
  135 +<!-- common js -->
  136 +<script src="/real_control_v2/js/common.js"></script>
  137 +<!-- art-template 模版引擎 -->
  138 +<script src="/assets/plugins/template.js" merge="plugins"></script>
  139 +<!-- d3 -->
  140 +<script src="/assets/js/d3.min.js"></script>
  141 +<!-- EventProxy -->
  142 +<script src="/assets/js/eventproxy.js"></script>
  143 +<!-- main js -->
  144 +<script src="/real_control_v2/js/main.js"></script>
  145 +<!-- uikit core -->
  146 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/uikit.min.js" merge="uikit_js"></script>
  147 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/notify.min.js" merge="uikit_js"></script>
  148 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/pagination.min.js" merge="uikit_js"></script>
  149 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/tooltip.min.js" merge="uikit_js"></script>
  150 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/autocomplete.min.js" merge="uikit_js"></script>
  151 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/accordion.min.js" merge="uikit_js"></script>
  152 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/timepicker.min.js" merge="uikit_js"></script>
  153 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/lightbox.min.js" merge="uikit_js"></script>
  154 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/sticky.min.js" merge="uikit_js"></script>
  155 +
  156 +
  157 +<!-- jquery contextMenu -->
  158 +<script src="/real_control_v2/assets/js/jquery.contextMenu.min.js" merge="plugins"></script>
  159 +<script src="/real_control_v2/assets/js/jquery.ui.position.min.js" merge="plugins"></script>
  160 +<!-- formvalidation- -->
  161 +<script src="/real_control_v2/assets/plugins/formvalidation/formValidation.min.js" merge="plugins"></script>
  162 +<script src="/real_control_v2/assets/plugins/formvalidation/zh_CN.js" merge="plugins"></script>
  163 +<script src="/real_control_v2/assets/plugins/formvalidation/uikit.min.js" merge="plugins"></script>
  164 +<!-- js tree -->
  165 +<script src="/real_control_v2/assets/plugins/jstree/jstree.min.js" merge="plugins"></script>
  166 +<!-- simple pinyin -->
  167 +<script src="/assets/plugins/pinyin.js" merge="plugins"></script>
  168 +<!-- qtip -->
  169 +<script src="/real_control_v2/assets/plugins/qtip/jquery.qtip.min.js" merge="plugins"></script>
  170 +<!-- layer 3.0.3 -->
  171 +<script src="/real_control_v2/assets/plugins/layer3.0.3/layer.js" merge="plugins"></script>
  172 +
  173 +<!-- 数据 -->
  174 +<script src="/real_control_v2/js/data/data_basic.js" merge="custom_js"></script>
  175 +<script src="/real_control_v2/js/data/data_gps.js" merge="custom_js"></script>
  176 +<script src="/real_control_v2/js/data/gps_abnormal.js" merge="custom_js"></script>
  177 +<script src="/real_control_v2/js/data/data_line_config.js" merge="custom_js"></script>
  178 +<!-- 线路模拟图 -->
  179 +<script src="/real_control_v2/js/utils/svg_chart.js" merge="custom_js"></script>
  180 +<script src="/real_control_v2/js/utils/svg_data_convert.js" merge="custom_js"></script>
  181 +<script src="/real_control_v2/js/utils/svg_chart_tooltip.js" merge="custom_js"></script>
  182 +<script src="/real_control_v2/js/utils/svg_chart_map.js" merge="custom_js"></script>
  183 +
  184 +<!-- custom table js -->
  185 +<script src="/real_control_v2/js/utils/ct_table.js" merge="custom_js"></script>
  186 +<!-- north js -->
  187 +<script src="/real_control_v2/js/north/toolbar.js" merge="custom_js"></script>
  188 +<script src="/real_control_v2/js/north/tabs.js" merge="custom_js"></script>
  189 +<script src="/real_control_v2/js/north/second_timer.js" merge="custom_js"></script>
  190 +<!-- home js -->
  191 +<script src="/real_control_v2/js/home/layout.js" merge="custom_js"></script>
  192 +<script src="/real_control_v2/js/home/line_panel.js" merge="custom_js"></script>
  193 +<script src="/real_control_v2/js/home/context_menu.js" merge="custom_js"></script>
  194 +<!-- line schedule js -->
  195 +<script src="/real_control_v2/js/line_schedule/legend.js" merge="custom_js"></script>
  196 +<script src="/real_control_v2/js/line_schedule/layout.js" merge="custom_js"></script>
  197 +<script src="/real_control_v2/js/line_schedule/sch_table.js" merge="custom_js"></script>
  198 +<script src="/real_control_v2/js/line_schedule/context_menu.js" merge="custom_js"></script>
  199 +<script src="/real_control_v2/js/line_schedule/dbclick.js" merge="custom_js"></script>
  200 +<script src="/real_control_v2/js/line_schedule/search.js" merge="custom_js"></script>
  201 +<script src="/real_control_v2/js/line_schedule/badge_tooltip.js" merge="custom_js"></script>
  202 +<script src="/real_control_v2/js/line_schedule/mileage_count.js" merge="custom_js"></script>
  203 +
  204 +<!-- 字典相关 -->
  205 +<script src="/assets/js/dictionary.js" merge="custom_js"></script>
  206 +<!-- websocket -->
  207 +<script src="/real_control_v2/assets/plugins/sockjs-client/sockjs.min.js"></script>
  208 +<script src="/real_control_v2/js/websocket/sch_websocket.js" merge="custom_js"></script>
  209 +<!-- tts -->
  210 +<script src="/real_control_v2/js/utils/tts.js" merge="custom_js"></script>
  211 +
  212 +<!-- echart -->
  213 +<script src="/real_control_v2/assets/echarts-3/echarts.js" merge="plugins"></script>
  214 +<!-- Geolib -->
  215 +<script src="/real_control_v2/geolib/geolib.js" merge="plugins"></script>
  216 +
  217 +<script src="/real_control_v2/js/signal_state/signal_state.js" merge="custom_js"></script>
  218 +<script src="/real_control_v2/js/utils/dispatch_pattern.js" merge="custom_js"></script>
  219 +
  220 +<!-- 处理表单片段嵌入问题 -->
  221 +<script src="/real_control_v2/js/forms/form_embed.js" merge="custom_js"></script>
  222 +<!-- 模态框扩展 -->
  223 +<script src="/real_control_v2/js/modal_extend.js" merge="custom_js"></script>
  224 +
  225 +<!-- #### 安全驾驶 start ### -->
  226 +<div class="safe_driv_pop_wrap" ></div>
  227 +<script id="safe_driv_item-temp" type="text/html">
  228 + <div class="safe_driv_pop uk-animation-slide-bottom" data-nbbm="{{clzbh}}" data-type="{{yczltype}}" data-title="{{clzbh}} {{timeStr}} {{ycztText}}" data-url="{{url}}" data-ts="{{ts}}">
  229 + <div>
  230 + <span class="title">异常&nbsp;{{clzbh}}</span>
  231 + <span class="text"> {{timeStr}} 出现违规驾驶({{ycztText}})</span>
  232 + <span class="desc">--安全驾驶监管平台</span>
  233 + </div>
  234 + </div>
  235 +</script>
  236 +
  237 +<script src="/real_control_v2/js/safe_driv/safeDriv.js" merge="custom_js"></script>
  238 +<!-- #### 安全驾驶 end ### -->
  239 +
  240 +<!-- 打电话 -->
  241 +<script src="http://114.80.178.12:9003/forward/voip/callCenterJs"></script>
  242 +<script src="http://114.80.178.12:9003/forward/voip/phonePluginJs"></script>
  243 +<script src="/real_control_v2/js/safe_driv/call_phone.js" ></script>
  244 +
  245 +<script id="voip_call_info_panel-temp" type="text/html">
  246 + <div class="voip_call_info_panel" style="{{style}}">
  247 + <p class="_title">VOIP</p>
  248 + <form class="uk-form uk-form-horizontal">
  249 +
  250 + <div class="uk-form-row">
  251 + <label class="uk-form-label" >工号:</label>
  252 + <div class="uk-form-controls">
  253 + <input type="text" name="agentID" value="1002" disabled>
  254 + </div>
  255 + </div>
  256 + <div class="uk-form-row">
  257 + <label class="uk-form-label" ">分机号:</label>
  258 + <div class="uk-form-controls">
  259 + <input type="text" name="dn" value="" >
  260 + </div>
  261 + </div>
  262 + <div class="uk-form-row">
  263 + <label class="uk-form-label" >自编号:</label>
  264 + <div class="uk-form-controls">
  265 + <input type="text" value="{{nbbm}}" disabled>
  266 + </div>
  267 + </div>
  268 + <div class="uk-form-row">
  269 + <label class="uk-form-label" >SIM号:</label>
  270 + <div class="uk-form-controls">
  271 + <input type="text" name="simNo" disabled>
  272 + </div>
  273 + </div>
  274 + <hr>
  275 + <h4 class="state_txt">
  276 + <button class="uk-button uk-button-large" type="button" disabled>获取SIM卡号...</button>
  277 + </h4>
  278 + </form>
  279 + </div>
  280 +</script>
  281 +</body>
  282 +
  283 +</html>
... ...