Commit a219b6f749e3759c7d58856e57529945e34bfe7a

Authored by 王通
1 parent 1e706ca6

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

2.调度员点击安全驾驶反馈至dsm
src/main/java/com/bsth/controller/realcontrol/ScheduleRealInfoController.java
1 package com.bsth.controller.realcontrol; 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 import java.util.ArrayList; 11 import java.util.ArrayList;
4 import java.util.Arrays; 12 import java.util.Arrays;
5 import java.util.Collection; 13 import java.util.Collection;
@@ -7,6 +15,10 @@ import java.util.HashMap; @@ -7,6 +15,10 @@ import java.util.HashMap;
7 import java.util.List; 15 import java.util.List;
8 import java.util.Map; 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 import org.apache.commons.lang3.StringEscapeUtils; 22 import org.apache.commons.lang3.StringEscapeUtils;
11 import org.joda.time.format.DateTimeFormat; 23 import org.joda.time.format.DateTimeFormat;
12 import org.joda.time.format.DateTimeFormatter; 24 import org.joda.time.format.DateTimeFormatter;
@@ -711,7 +723,7 @@ public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo, @@ -711,7 +723,7 @@ public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo,
711 723
712 /** 724 /**
713 * 从历史库里删除临加班次 725 * 从历史库里删除临加班次
714 - * @param sch 726 + * @param param
715 * @return 727 * @return
716 */ 728 */
717 @RequestMapping(value = "wxsb", method = RequestMethod.POST) 729 @RequestMapping(value = "wxsb", method = RequestMethod.POST)
@@ -728,4 +740,50 @@ public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo, @@ -728,4 +740,50 @@ public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo,
728 public Map<String, String> lineLevel(@RequestParam String idx){ 740 public Map<String, String> lineLevel(@RequestParam String idx){
729 return scheduleRealInfoService.getLevelsByLines(Arrays.asList(idx.split(","))); 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,6 +27,7 @@ import com.bsth.webService.trafficManage.org.tempuri.WebServiceSoap;
27 import org.apache.commons.lang.StringEscapeUtils; 27 import org.apache.commons.lang.StringEscapeUtils;
28 import org.apache.commons.lang.StringUtils; 28 import org.apache.commons.lang.StringUtils;
29 import org.apache.commons.lang.time.DateUtils; 29 import org.apache.commons.lang.time.DateUtils;
  30 +import org.joda.time.DateTime;
30 import org.slf4j.Logger; 31 import org.slf4j.Logger;
31 import org.slf4j.LoggerFactory; 32 import org.slf4j.LoggerFactory;
32 import org.springframework.beans.factory.annotation.Autowired; 33 import org.springframework.beans.factory.annotation.Autowired;
@@ -125,6 +126,12 @@ public class TrafficManageServiceImpl implements TrafficManageService{ @@ -125,6 +126,12 @@ public class TrafficManageServiceImpl implements TrafficManageService{
125 @Autowired 126 @Autowired
126 private SendEmailController sendEmailController; 127 private SendEmailController sendEmailController;
127 128
  129 + /**
  130 + * 线路版本repository
  131 + */
  132 + @Autowired
  133 + private LineVersionsRepository lineVersionsRepository;
  134 +
128 // 运管处上传接口 135 // 运管处上传接口
129 private com.bsth.webService.trafficManage.up.org.tempuri.WebServiceSoap webServiceSoapUp; 136 private com.bsth.webService.trafficManage.up.org.tempuri.WebServiceSoap webServiceSoapUp;
130 private WebServiceSoap ssop ; 137 private WebServiceSoap ssop ;
@@ -383,7 +390,7 @@ public class TrafficManageServiceImpl implements TrafficManageService{ @@ -383,7 +390,7 @@ public class TrafficManageServiceImpl implements TrafficManageService{
383 String date = theDate == null ?sdfnyr.format(DateUtils.addDays(new Date(), -1)) : theDate; 390 String date = theDate == null ?sdfnyr.format(DateUtils.addDays(new Date(), -1)) : theDate;
384 StringBuffer sf = new StringBuffer(); 391 StringBuffer sf = new StringBuffer();
385 Results results = null; 392 Results results = null;
386 - String str = "",xlbm; 393 + String str = "", xlbm = null, oldXlbm = null;
387 List<Map<String,Object>> listGroup = null; 394 List<Map<String,Object>> listGroup = null;
388 int scount = 0, ccount = 0; 395 int scount = 0, ccount = 0;
389 long start = System.currentTimeMillis(); 396 long start = System.currentTimeMillis();
@@ -412,10 +419,19 @@ public class TrafficManageServiceImpl implements TrafficManageService{ @@ -412,10 +419,19 @@ public class TrafficManageServiceImpl implements TrafficManageService{
412 code2line.put(line.getLineCode(), line); 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 for(Map<String,Object> schRealInfo:listGroup){ 430 for(Map<String,Object> schRealInfo:listGroup){
416 if(schRealInfo != null){ 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 if(line == null || line.getInUse() == null || line.getInUse() == 0){ 435 if(line == null || line.getInUse() == null || line.getInUse() == 0){
420 ccount++; 436 ccount++;
421 continue; 437 continue;
@@ -425,7 +441,14 @@ public class TrafficManageServiceImpl implements TrafficManageService{ @@ -425,7 +441,14 @@ public class TrafficManageServiceImpl implements TrafficManageService{
425 sf.append("<DLDS>"); 441 sf.append("<DLDS>");
426 } 442 }
427 counter ++; 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 sf.append("<DLD>"); 453 sf.append("<DLD>");
431 sf.append("<RQ>").append(date).append("</RQ>"); 454 sf.append("<RQ>").append(date).append("</RQ>");
@@ -460,7 +483,7 @@ public class TrafficManageServiceImpl implements TrafficManageService{ @@ -460,7 +483,7 @@ public class TrafficManageServiceImpl implements TrafficManageService{
460 // 起点站的参数 483 // 起点站的参数
461 otherMap.put("stationMark","B"); 484 otherMap.put("stationMark","B");
462 paramMap = packageYgcStationNumParam(scheduleRealInfo,otherMap); 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 sf.append("<FCZDBM>").append(scheduleRealInfo.getQdzCode()).append("</FCZDBM>"); 487 sf.append("<FCZDBM>").append(scheduleRealInfo.getQdzCode()).append("</FCZDBM>");
465 sf.append("<JHFCSJ>").append(scheduleRealInfo.getFcsj()).append("</JHFCSJ>"); 488 sf.append("<JHFCSJ>").append(scheduleRealInfo.getFcsj()).append("</JHFCSJ>");
466 sf.append("<DFSJ>").append(scheduleRealInfo.getDfsj()).append("</DFSJ>"); 489 sf.append("<DFSJ>").append(scheduleRealInfo.getDfsj()).append("</DFSJ>");
@@ -470,7 +493,7 @@ public class TrafficManageServiceImpl implements TrafficManageService{ @@ -470,7 +493,7 @@ public class TrafficManageServiceImpl implements TrafficManageService{
470 // 终点站的参数 493 // 终点站的参数
471 otherMap.put("stationMark","E"); 494 otherMap.put("stationMark","E");
472 paramMap = packageYgcStationNumParam(scheduleRealInfo,otherMap); 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 sf.append("<DDZDBM>").append(scheduleRealInfo.getZdzCode()).append("</DDZDBM>"); 497 sf.append("<DDZDBM>").append(scheduleRealInfo.getZdzCode()).append("</DDZDBM>");
475 sf.append("<JHDDSJ>").append(scheduleRealInfo.getZdsj()).append("</JHDDSJ>"); 498 sf.append("<JHDDSJ>").append(scheduleRealInfo.getZdsj()).append("</JHDDSJ>");
476 sf.append("<SJDDSJ>").append(scheduleRealInfo.getZdsjActual()).append("</SJDDSJ>"); 499 sf.append("<SJDDSJ>").append(scheduleRealInfo.getZdsjActual()).append("</SJDDSJ>");
@@ -499,6 +522,7 @@ public class TrafficManageServiceImpl implements TrafficManageService{ @@ -499,6 +522,7 @@ public class TrafficManageServiceImpl implements TrafficManageService{
499 scount += invokeSetLD(str, counter); 522 scount += invokeSetLD(str, counter);
500 } 523 }
501 } catch (Exception e) { 524 } catch (Exception e) {
  525 + e.printStackTrace();
502 logger.error("setLD:", e); 526 logger.error("setLD:", e);
503 } finally { 527 } finally {
504 try { 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 \ No newline at end of file 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>