Commit 8c60311af437f723737552b0bb8057b962ef3ca9

Authored by 潘钊
1 parent ffe68954

update

@@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
5 <groupId>com.bsth</groupId> 5 <groupId>com.bsth</groupId>
6 <artifactId>bsth_control</artifactId> 6 <artifactId>bsth_control</artifactId>
7 <version>0.0.1-SNAPSHOT</version> 7 <version>0.0.1-SNAPSHOT</version>
8 - <packaging>jar</packaging> 8 + <packaging>war</packaging>
9 9
10 <parent> 10 <parent>
11 <groupId>org.springframework.boot</groupId> 11 <groupId>org.springframework.boot</groupId>
@@ -22,7 +22,7 @@ @@ -22,7 +22,7 @@
22 <dependency> 22 <dependency>
23 <groupId>org.springframework.boot</groupId> 23 <groupId>org.springframework.boot</groupId>
24 <artifactId>spring-boot-starter-tomcat</artifactId> 24 <artifactId>spring-boot-starter-tomcat</artifactId>
25 - <!--<scope>provided</scope>--> 25 + <scope>provided</scope>
26 </dependency> 26 </dependency>
27 27
28 <dependency> 28 <dependency>
src/main/java/com/bsth/StartCommand.java
@@ -93,7 +93,7 @@ public class StartCommand implements CommandLineRunner{ @@ -93,7 +93,7 @@ public class StartCommand implements CommandLineRunner{
93 * 每15秒从数据库抓取到离站信息和班次匹配 93 * 每15秒从数据库抓取到离站信息和班次匹配
94 * (网关生成的到离站数据也是延迟批量入库,所以缩短该线程执行周期并不会提高 “实际到离站” 的实时性) 94 * (网关生成的到离站数据也是延迟批量入库,所以缩短该线程执行周期并不会提高 “实际到离站” 的实时性)
95 */ 95 */
96 - //scheduler.scheduleWithFixedDelay(gpsArrivalStationThread, 35, 1200, TimeUnit.SECONDS); 96 + scheduler.scheduleWithFixedDelay(gpsArrivalStationThread, 35, 1200, TimeUnit.SECONDS);
97 97
98 /** 98 /**
99 * 首个调度指令下发(2分钟运行一次) 99 * 首个调度指令下发(2分钟运行一次)
src/main/java/com/bsth/controller/realcontrol/ScheduleRealInfoController.java
@@ -15,6 +15,7 @@ import com.bsth.controller.BaseController; @@ -15,6 +15,7 @@ import com.bsth.controller.BaseController;
15 import com.bsth.entity.realcontrol.ScheduleRealInfo; 15 import com.bsth.entity.realcontrol.ScheduleRealInfo;
16 import com.bsth.security.util.SecurityUtils; 16 import com.bsth.security.util.SecurityUtils;
17 import com.bsth.service.realcontrol.ScheduleRealInfoService; 17 import com.bsth.service.realcontrol.ScheduleRealInfoService;
  18 +import com.bsth.service.realcontrol.buffer.GetSchedulePlanThread;
18 import com.bsth.service.realcontrol.buffer.ScheduleBuffer; 19 import com.bsth.service.realcontrol.buffer.ScheduleBuffer;
19 import com.bsth.vehicle.common.CommonMapped; 20 import com.bsth.vehicle.common.CommonMapped;
20 import com.google.common.base.Splitter; 21 import com.google.common.base.Splitter;
@@ -24,6 +25,9 @@ import com.google.common.base.Splitter; @@ -24,6 +25,9 @@ import com.google.common.base.Splitter;
24 public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo, Long> { 25 public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo, Long> {
25 26
26 @Autowired 27 @Autowired
  28 + GetSchedulePlanThread getSchedulePlanThread;
  29 +
  30 + @Autowired
27 ScheduleRealInfoService scheduleRealInfoService; 31 ScheduleRealInfoService scheduleRealInfoService;
28 32
29 @RequestMapping(value = "/lines") 33 @RequestMapping(value = "/lines")
@@ -35,8 +39,9 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo, @@ -35,8 +39,9 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
35 * 39 *
36 * @Title: registerLine @Description: TODO(注册线路,后续才能收到数据推送) @param @param 40 * @Title: registerLine @Description: TODO(注册线路,后续才能收到数据推送) @param @param
37 * lineCodes @throws 41 * lineCodes @throws
  42 + * 用GET 防止监控模式下被拦截
38 */ 43 */
39 - @RequestMapping(value = "/registerLine", method = RequestMethod.POST) 44 + @RequestMapping(value = "/registerLine", method = RequestMethod.GET)
40 public int registerLine(@RequestParam String lineCodes) { 45 public int registerLine(@RequestParam String lineCodes) {
41 List<String> list = Splitter.on(",").trimResults().omitEmptyStrings().splitToList(lineCodes); 46 List<String> list = Splitter.on(",").trimResults().omitEmptyStrings().splitToList(lineCodes);
42 String userName = SecurityUtils.getCurrentUser().getUserName(); 47 String userName = SecurityUtils.getCurrentUser().getUserName();
@@ -253,6 +258,12 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo, @@ -253,6 +258,12 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
253 public Map<String, Object> findRouteByLine(@RequestParam Integer lineId){ 258 public Map<String, Object> findRouteByLine(@RequestParam Integer lineId){
254 return scheduleRealInfoService.findRouteByLine(lineId); 259 return scheduleRealInfoService.findRouteByLine(lineId);
255 } 260 }
  261 +
  262 + @RequestMapping(value = "/test/getSch")
  263 + public int getSch(){
  264 + getSchedulePlanThread.start();
  265 + return 1;
  266 + }
256 267
257 /** 268 /**
258 * 269 *
src/main/java/com/bsth/entity/sys/SessionLog.java 0 → 100644
  1 +package com.bsth.entity.sys;
  2 +
  3 +import java.util.Date;
  4 +
  5 +import javax.persistence.Column;
  6 +import javax.persistence.Entity;
  7 +import javax.persistence.GeneratedValue;
  8 +import javax.persistence.GenerationType;
  9 +import javax.persistence.Id;
  10 +import javax.persistence.ManyToOne;
  11 +import javax.persistence.Table;
  12 +
  13 +/**
  14 + *
  15 + * @ClassName: SessionLog
  16 + * @Description: TODO(session日志)
  17 + * @author PanZhao
  18 + * @date 2016年7月20日 下午4:46:27
  19 + *
  20 + */
  21 +@Entity
  22 +@Table(name = "bsth_c_sys_sessionlog")
  23 +public class SessionLog {
  24 +
  25 + @Id
  26 + @GeneratedValue(strategy = GenerationType.IDENTITY)
  27 + private Integer id;
  28 +
  29 + @ManyToOne
  30 + private SysUser user;
  31 +
  32 + /** 登录时间 */
  33 + private Date loginDate;
  34 +
  35 + @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
  36 + private Date createDate;
  37 +
  38 + /** 登出时间 */
  39 + private Date logoutDate;
  40 +
  41 + /** 登出方式 0:主动登出, -1:其他 */
  42 + private int logoutType;
  43 +
  44 + public Integer getId() {
  45 + return id;
  46 + }
  47 +
  48 + public void setId(Integer id) {
  49 + this.id = id;
  50 + }
  51 +
  52 + public SysUser getUser() {
  53 + return user;
  54 + }
  55 +
  56 + public void setUser(SysUser user) {
  57 + this.user = user;
  58 + }
  59 +
  60 + public Date getLoginDate() {
  61 + return loginDate;
  62 + }
  63 +
  64 + public void setLoginDate(Date loginDate) {
  65 + this.loginDate = loginDate;
  66 + }
  67 +
  68 + public Date getCreateDate() {
  69 + return createDate;
  70 + }
  71 +
  72 + public void setCreateDate(Date createDate) {
  73 + this.createDate = createDate;
  74 + }
  75 +
  76 + public Date getLogoutDate() {
  77 + return logoutDate;
  78 + }
  79 +
  80 + public void setLogoutDate(Date logoutDate) {
  81 + this.logoutDate = logoutDate;
  82 + }
  83 +
  84 + public int getLogoutType() {
  85 + return logoutType;
  86 + }
  87 +
  88 + public void setLogoutType(int logoutType) {
  89 + this.logoutType = logoutType;
  90 + }
  91 +}
src/main/java/com/bsth/entity/sys/SignControl.java 0 → 100644
  1 +package com.bsth.entity.sys;
  2 +
  3 +import java.util.Date;
  4 +
  5 +import javax.persistence.Entity;
  6 +import javax.persistence.GeneratedValue;
  7 +import javax.persistence.GenerationType;
  8 +import javax.persistence.Id;
  9 +import javax.persistence.ManyToOne;
  10 +import javax.persistence.Table;
  11 +
  12 +/**
  13 + *
  14 + * @ClassName: SignControl
  15 + * @Description: TODO(进出线调记录)
  16 + * @author PanZhao
  17 + * @date 2016年7月20日 下午4:50:50
  18 + *
  19 + */
  20 +@Entity
  21 +@Table(name = "bsth_c_sys_sign")
  22 +public class SignControl {
  23 +
  24 + @Id
  25 + @GeneratedValue(strategy = GenerationType.IDENTITY)
  26 + private Integer id;
  27 +
  28 + /** 登入线调时间 */
  29 + private Date signDate;
  30 +
  31 + @ManyToOne
  32 + private SessionLog session;
  33 +
  34 +}
src/main/java/com/bsth/service/realcontrol/buffer/ScheduleBuffer.java
@@ -93,7 +93,7 @@ public class ScheduleBuffer { @@ -93,7 +93,7 @@ public class ScheduleBuffer {
93 schedul.syncTime(); 93 schedul.syncTime();
94 } 94 }
95 95
96 - //发车时间排序 96 + //发车顺序号排序
97 Collections.sort(list, scheduleComparator); 97 Collections.sort(list, scheduleComparator);
98 98
99 String zbh; 99 String zbh;
@@ -184,7 +184,8 @@ public class ScheduleBuffer { @@ -184,7 +184,8 @@ public class ScheduleBuffer {
184 184
185 @Override 185 @Override
186 public int compare(ScheduleRealInfo o1, ScheduleRealInfo o2) { 186 public int compare(ScheduleRealInfo o1, ScheduleRealInfo o2) {
187 - return (int) (o1.getFcsjT() - o2.getFcsjT()); 187 + //return (int) (o1.getFcsjT() - o2.getFcsjT());
  188 + return o1.getFcno() - o2.getFcno();
188 } 189 }
189 } 190 }
190 191
src/main/java/com/bsth/vehicle/directive/service/DirectiveServiceImpl.java
@@ -49,7 +49,7 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;Directive60, Integer&gt; @@ -49,7 +49,7 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;Directive60, Integer&gt;
49 49
50 SimpleDateFormat sdfHHmm = new SimpleDateFormat("HH点mm分"); 50 SimpleDateFormat sdfHHmm = new SimpleDateFormat("HH点mm分");
51 51
52 - static Long schDiff = 1000 * 60 * 30L; 52 + static Long schDiff = 1000 * 60 * 60L;
53 53
54 //城市代码 54 //城市代码
55 static final short cityCode = 22; 55 static final short cityCode = 22;
@@ -84,9 +84,9 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;Directive60, Integer&gt; @@ -84,9 +84,9 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;Directive60, Integer&gt;
84 Directive60 directive = null; 84 Directive60 directive = null;
85 try { 85 try {
86 //如果发车时间距当前时间较远,则不发送 86 //如果发车时间距当前时间较远,则不发送
87 - /*if(Math.abs(sch.getFcsjT() - System.currentTimeMillis()) > schDiff){ 87 + if(Math.abs(sch.getFcsjT() - System.currentTimeMillis()) > schDiff){
88 return 0; 88 return 0;
89 - }*/ 89 + }
90 90
91 String text = "已完成" + finish + "个班次,下一发车时间" + sdfHHmm.format(new Date(sch.getFcsjT())) 91 String text = "已完成" + finish + "个班次,下一发车时间" + sdfHHmm.format(new Date(sch.getFcsjT()))
92 + ",由" + sch.getQdzName() + "发往" + sch.getZdzName(); 92 + ",由" + sch.getQdzName() + "发往" + sch.getZdzName();
src/main/java/com/bsth/vehicle/directive/thread/FirstScheduleIssuedThread.java
1 package com.bsth.vehicle.directive.thread; 1 package com.bsth.vehicle.directive.thread;
2 2
3 -import java.util.LinkedList;  
4 import java.util.List; 3 import java.util.List;
5 import java.util.Set; 4 import java.util.Set;
6 5
src/main/java/com/bsth/vehicle/gpsdata/service/GpsDataServiceImpl.java
@@ -129,11 +129,11 @@ public class GpsDataServiceImpl implements GpsDataService{ @@ -129,11 +129,11 @@ public class GpsDataServiceImpl implements GpsDataService{
129 //day_of_year 129 //day_of_year
130 Calendar sCal = Calendar.getInstance(); 130 Calendar sCal = Calendar.getInstance();
131 sCal.setTime(new Date(st * 1000)); 131 sCal.setTime(new Date(st * 1000));
132 - int sDayOfYear = /*sCal.get(Calendar.DAY_OF_YEAR)*/200; 132 + int sDayOfYear = sCal.get(Calendar.DAY_OF_YEAR)/*200*/;
133 133
134 Calendar eCal = Calendar.getInstance(); 134 Calendar eCal = Calendar.getInstance();
135 eCal.setTime(new Date(et * 1000)); 135 eCal.setTime(new Date(et * 1000));
136 - int eDayOfYear = /*eCal.get(Calendar.DAY_OF_YEAR)*/200; 136 + int eDayOfYear = eCal.get(Calendar.DAY_OF_YEAR)/*200*/;
137 137
138 Calendar weekCal = Calendar.getInstance(); 138 Calendar weekCal = Calendar.getInstance();
139 139
@@ -189,7 +189,7 @@ public class GpsDataServiceImpl implements GpsDataService{ @@ -189,7 +189,7 @@ public class GpsDataServiceImpl implements GpsDataService{
189 inv = inv.substring(0, inv.length() - 1); 189 inv = inv.substring(0, inv.length() - 1);
190 190
191 //查询到离站数据 191 //查询到离站数据
192 - Map<String, ArrivalInfo> arrivalMap = findArrivalByTs(/*weekOfYear*/30, st, et, inv); 192 + Map<String, ArrivalInfo> arrivalMap = findArrivalByTs(weekOfYear/*30*/, st, et, inv);
193 193
194 String sql = "select DEVICE_ID,LON,LAT,TS,INOUT_STOP,SERVICE_STATE ,STOP_NO from bsth_c_gps_info where days_year=? and device_id in ("+inv+") and ts > ? and ts < ?"; 194 String sql = "select DEVICE_ID,LON,LAT,TS,INOUT_STOP,SERVICE_STATE ,STOP_NO from bsth_c_gps_info where days_year=? and device_id in ("+inv+") and ts > ? and ts < ?";
195 try{ 195 try{
src/main/resources/application-dev.properties
@@ -8,9 +8,9 @@ spring.jpa.hibernate.naming_strategy= org.hibernate.cfg.ImprovedNamingStrategy @@ -8,9 +8,9 @@ spring.jpa.hibernate.naming_strategy= org.hibernate.cfg.ImprovedNamingStrategy
8 spring.jpa.database= MYSQL 8 spring.jpa.database= MYSQL
9 spring.jpa.show-sql= true 9 spring.jpa.show-sql= true
10 spring.datasource.driver-class-name= com.mysql.jdbc.Driver 10 spring.datasource.driver-class-name= com.mysql.jdbc.Driver
11 -spring.datasource.url= jdbc:mysql://192.168.168.201:3306/control 11 +spring.datasource.url= jdbc:mysql://127.0.0.1:3306/control
12 spring.datasource.username= root 12 spring.datasource.username= root
13 -spring.datasource.password= 123456 13 +spring.datasource.password= panzhao
14 #DATASOURCE 14 #DATASOURCE
15 spring.datasource.max-active=100 15 spring.datasource.max-active=100
16 spring.datasource.max-idle=8 16 spring.datasource.max-idle=8
@@ -25,6 +25,6 @@ spring.datasource.validation-query=select 1 @@ -25,6 +25,6 @@ spring.datasource.validation-query=select 1
25 25
26 ## 26 ##
27 ##\u5B9E\u65F6gps 27 ##\u5B9E\u65F6gps
28 -http.gps.real.url= http://192.168.168.171:8080/transport_server/rtgps/ 28 +http.gps.real.url= http://192.168.168.201:8080/transport_server/rtgps/
29 ##\u6D88\u606F\u4E0B\u53D1 29 ##\u6D88\u606F\u4E0B\u53D1
30 -http.send.directive = http://192.168.168.171:8080/transport_server/message/ 30 +http.send.directive = http://192.168.168.201:8080/transport_server/message/
src/main/resources/static/assets/js/common.js
@@ -24,6 +24,7 @@ function successHandle(json, handle){ @@ -24,6 +24,7 @@ function successHandle(json, handle){
24 var status = json.status; 24 var status = json.status;
25 if(status == 407){ 25 if(status == 407){
26 alert('被注销的登录'); 26 alert('被注销的登录');
  27 + location.reload(true);
27 return; 28 return;
28 } 29 }
29 30
src/main/resources/static/login.html
@@ -94,7 +94,7 @@ Login page @@ -94,7 +94,7 @@ Login page
94 94
95 <div class="input-icon right" style="display: inline-block;"> 95 <div class="input-icon right" style="display: inline-block;">
96 <i class="fa fa-key"></i> 96 <i class="fa fa-key"></i>
97 - <input type="password" class="form-control " placeholder="密码" name="password" value="admin"> </div> 97 + <input type="password" class="form-control " placeholder="密码" name="password" value="" > </div>
98 &nbsp;&nbsp; 98 &nbsp;&nbsp;
99 <button type="submit" class="btn blue buttonLogin" style="border-radius: 5px !important; 99 <button type="submit" class="btn blue buttonLogin" style="border-radius: 5px !important;
100 font-family: 微软雅黑;">登&nbsp;录</button> 100 font-family: 微软雅黑;">登&nbsp;录</button>
@@ -112,6 +112,7 @@ Login page @@ -112,6 +112,7 @@ Login page
112 112
113 <script type="text/javascript"> 113 <script type="text/javascript">
114 $(function() { 114 $(function() {
  115 + $('input[name=password]').focus();
115 /* setCenterCss(); */ 116 /* setCenterCss(); */
116 if ($.url().param('error')) { 117 if ($.url().param('error')) {
117 //去session里查一下失败信息 118 //去session里查一下失败信息
src/main/resources/static/pages/control/line/css/lineControl.css
  1 +.portlet.light > .portlet-title.banner{
  2 + padding: 17px 20px 0px 20px;
  3 + border-bottom: none;
  4 + margin-bottom: 0;
  5 + padding-bottom: 5px;
  6 +}
  7 +.portlet-fullscreen.monitor #top-tabs-wrap .nav-tabs,
  8 +.portlet.light.monitor > .portlet-title.banner{
  9 + background: linear-gradient(to right ,#595959, #7b7b7b,#595959);
  10 +}
  11 +
  12 +.portlet.light.main > .portlet-title.banner,
  13 +.portlet-fullscreen.main #top-tabs-wrap .nav-tabs{
  14 + background: linear-gradient(to right ,#082F4A, #125688,#0a3f64);
  15 +}
  16 +
  17 +.portlet-fullscreen.portlet.light.monitor .nav-tabs > li > a:hover{
  18 + background: #656565;
  19 +}
  20 +
  21 +.portlet-fullscreen.portlet.light.monitor .nav-tabs>li.active>a{
  22 + background: #FFFFFF;
  23 +}
  24 +
1 .load-anim{ 25 .load-anim{
2 position: fixed;z-index: 9999999;width: 100%;height: 100%; 26 position: fixed;z-index: 9999999;width: 100%;height: 100%;
3 background: rgba(8, 47, 74, 0.89);top: 0;left: 0; 27 background: rgba(8, 47, 74, 0.89);top: 0;left: 0;
@@ -2280,6 +2304,13 @@ tr._tr_active.active-line-no .out-badge{ @@ -2280,6 +2304,13 @@ tr._tr_active.active-line-no .out-badge{
2280 background-color: #5d5da9 !important; 2304 background-color: #5d5da9 !important;
2281 } 2305 }
2282 2306
  2307 +
2283 .pb-table tr.selected.dir_1{ 2308 .pb-table tr.selected.dir_1{
2284 background-color: #dc5a5a !important; 2309 background-color: #dc5a5a !important;
  2310 +}
  2311 +
  2312 +#tab_home .tab-pane .row.card_wrap:last-child .line_chart,
  2313 +#tab_home .tab-pane .row.card_wrap:last-child .col-lg-2 {
  2314 + border-bottom: 1px solid #DADADA;
  2315 + border-bottom: 1px solid #DADADA;
2285 } 2316 }
2286 \ No newline at end of file 2317 \ No newline at end of file
src/main/resources/static/pages/control/line/index.html
@@ -8,13 +8,13 @@ @@ -8,13 +8,13 @@
8 8
9 <div class="portlet light portlet-fullscreen" style="transition: all .5s ease;padding: 0;" oncontextmenu=self.event.returnValue=false> 9 <div class="portlet light portlet-fullscreen" style="transition: all .5s ease;padding: 0;" oncontextmenu=self.event.returnValue=false>
10 10
11 - <div class="portlet-title" style="padding: 17px 20px 0px 20px;border-bottom: none;margin-bottom: 0;background: linear-gradient(to right ,#082F4A, #125688,#0a3f64);padding-bottom: 5px;"> 11 + <div class="portlet-title banner" >
12 <div class="caption col_hide_1280" style="color: #FFF;"> 12 <div class="caption col_hide_1280" style="color: #FFF;">
13 <i class="fa fa-life-ring" style="font-size: 22px;color: #FFF;"></i> <span 13 <i class="fa fa-life-ring" style="font-size: 22px;color: #FFF;"></i> <span
14 class="caption-subject bold" style="font-size: 24px;">闵行公交线路调度系统</span> 14 class="caption-subject bold" style="font-size: 24px;">闵行公交线路调度系统</span>
15 </div> 15 </div>
16 <div class="col_hide_1440" style="color: white;font-size: 18px;position: absolute;right: 25px;top: 75px;"> 16 <div class="col_hide_1440" style="color: white;font-size: 18px;position: absolute;right: 25px;top: 75px;">
17 - <span class="top_username"></span>,在线! 17 + <span class="top_username"></span> <span class="operation_mode_text animated" ></span>
18 </div> 18 </div>
19 <div class="actions col_hide_1280" > 19 <div class="actions col_hide_1280" >
20 <div class="btn-group"> 20 <div class="btn-group">
@@ -64,7 +64,7 @@ @@ -64,7 +64,7 @@
64 </div> 64 </div>
65 65
66 <button id="exitBtn" type="button" class="btn btn-danger" style="margin-left: 8px;padding: 6.5px 9px !important;" > 66 <button id="exitBtn" type="button" class="btn btn-danger" style="margin-left: 8px;padding: 6.5px 9px !important;" >
67 - <i class="fa fa-close" ></i> 退出系统</button> 67 + <!-- <i class="fa fa-close" ></i> -->退出线路调度</button>
68 </div> 68 </div>
69 </div> 69 </div>
70 </div> 70 </div>
@@ -237,13 +237,29 @@ var lineCodes = &#39;&#39; //全部线路编码字符串,由data.js初始化 @@ -237,13 +237,29 @@ var lineCodes = &#39;&#39; //全部线路编码字符串,由data.js初始化
237 ,animationend = 'webkitAnimationEnd animationend'; 237 ,animationend = 'webkitAnimationEnd animationend';
238 moment.locale('zh-cn'); 238 moment.locale('zh-cn');
239 239
240 -var cUser; 240 +var cUser
  241 + , storage = window.localStorage
  242 + , operationMode = storage.getItem('operationMode');
  243 +
241 //当前用户 244 //当前用户
242 $.get('/user/currentUser', function(user){ 245 $.get('/user/currentUser', function(user){
243 cUser = user; 246 cUser = user;
244 - $('.portlet-fullscreen .top_username').text(cUser.userName); 247 + $('.portlet-fullscreen .top_username').text(cUser.userName)
  248 + var t = operationMode == 0?',<abbr title="系统将对当前的提交请求进行拦截">监控模式</abbr> 在线'
  249 + :',主调模式 在线';
  250 + $('.portlet-fullscreen .operation_mode_text').html(t);
245 }); 251 });
  252 +
  253 +//打个标记
  254 +storage.setItem('real_control_flag', 1);
  255 +
246 $(function() { 256 $(function() {
  257 + //主调和监控模式横幅颜色
  258 + if(operationMode == 0)
  259 + $('.portlet-fullscreen').addClass('monitor');
  260 + else
  261 + $('.portlet-fullscreen').addClass('main');
  262 +
247 //加载模板文件 263 //加载模板文件
248 getTemp('temps/home_tp.html'); 264 getTemp('temps/home_tp.html');
249 getTemp('temps/tooltip_tp.html'); 265 getTemp('temps/tooltip_tp.html');
src/main/resources/static/pages/control/line/js/data.js
@@ -29,7 +29,8 @@ var _data = (function(){ @@ -29,7 +29,8 @@ var _data = (function(){
29 var carDeviceIdMapp = {}; 29 var carDeviceIdMapp = {};
30 30
31 var fcsjSort = function(a, b){ 31 var fcsjSort = function(a, b){
32 - return a.fcsjT - b.fcsjT; 32 + //return a.fcsjT - b.fcsjT;
  33 + return a.fcno - b.fcno;
33 } 34 }
34 35
35 var dataObject = { 36 var dataObject = {
@@ -132,7 +133,7 @@ var _data = (function(){ @@ -132,7 +133,7 @@ var _data = (function(){
132 } 133 }
133 //查询站点路由 134 //查询站点路由
134 ,queryStationRoute : function(lineId,container, cb, width){ 135 ,queryStationRoute : function(lineId,container, cb, width){
135 - $get('/stationroute/all', {'line.lineCode_eq': lineId}, function(routes){ 136 + $get('/stationroute/all', {'line.lineCode_eq': lineId, 'destroy_eq': 0}, function(routes){
136 var svgData = analyData(routes); 137 var svgData = analyData(routes);
137 cb && cb(lineId, svgData, container, width); 138 cb && cb(lineId, svgData, container, width);
138 }); 139 });
@@ -165,9 +166,7 @@ var _data = (function(){ @@ -165,9 +166,7 @@ var _data = (function(){
165 }); 166 });
166 167
167 //按发车时间排序 168 //按发车时间排序
168 - list.sort(function(a, b){  
169 - return a.fcsjT - b.fcsjT;  
170 - }); 169 + list.sort(fcsjSort);
171 } 170 }
172 cb && cb(rs); 171 cb && cb(rs);
173 }); 172 });
src/main/resources/static/pages/control/line/js/main.js
@@ -6,6 +6,10 @@ @@ -6,6 +6,10 @@
6 icon : 3, 6 icon : 3,
7 skin : 'layui-layer-cfm-delete' 7 skin : 'layui-layer-cfm-delete'
8 }, function(){ 8 }, function(){
  9 + //清除标记
  10 + storage.removeItem('real_control_flag');
  11 + //解绑事件
  12 + $(document).unbind('ajaxSend', interceptPOST);
9 layer.closeAll(); 13 layer.closeAll();
10 window.location.href = '/pages/control/lineallot/allot.html'; 14 window.location.href = '/pages/control/lineallot/allot.html';
11 }); 15 });
@@ -112,8 +116,19 @@ setTimeout(function(){ @@ -112,8 +116,19 @@ setTimeout(function(){
112 homeObject.init(); 116 homeObject.init();
113 }); 117 });
114 118
  119 + //监控模式下,拦截post请求
  120 + if(operationMode == 0){
  121 + $(document).on('ajaxSend', interceptPOST);
  122 + }
115 }, 200) 123 }, 200)
116 124
  125 + function interceptPOST(e, xhr, t){
  126 + if(t && (t.method == 'POST' || t.type == 'POST')){
  127 + console.log(e, xhr, t);
  128 + xhr.abort();
  129 + layer.msg('监控模式!',{offset: 'ct', shift : 6});
  130 + }
  131 + }
117 132
118 function gpslistToMap(gpslist){ 133 function gpslistToMap(gpslist){
119 var map = {} 134 var map = {}
src/main/resources/static/pages/control/line/js/webSocketHandle.js
@@ -5,7 +5,7 @@ var reqCodeMap = {0xA1: &#39;请求æ¢å¤è¿è¥&#39;, 0xA2: &#39;申请调档&#39;, 0xA3: &#39;å‡ºåœ @@ -5,7 +5,7 @@ var reqCodeMap = {0xA1: &#39;请求æ¢å¤è¿è¥&#39;, 0xA2: &#39;申请调档&#39;, 0xA3: &#39;出åœ
5 5
6 //将当å‰ç”¨æˆ·å’Œçº¿è·¯ç»‘定到åŽå° 6 //将当å‰ç”¨æˆ·å’Œçº¿è·¯ç»‘定到åŽå°
7 setTimeout(function(){ 7 setTimeout(function(){
8 - $.post('/realSchedule/registerLine', {lineCodes: lineCodes} 8 + $.get('/realSchedule/registerLine', {lineCodes: lineCodes}
9 ,function(rs){ 9 ,function(rs){
10 if(rs == 0){ 10 if(rs == 0){
11 console.log('注册线路æˆåŠŸï¼'); 11 console.log('注册线路æˆåŠŸï¼');
src/main/resources/static/pages/control/line/temps/home_tp.html
@@ -8,7 +8,7 @@ @@ -8,7 +8,7 @@
8 <div class="col-lg-2 "> 8 <div class="col-lg-2 ">
9 9
10 <div class="title"> 10 <div class="title">
11 - 发往{{lineObj.startStationName}}方向 <span class="up-number" id="{{lineObj.lineCode}}_0_badge"> 0 </span> 11 + 发往{{lineObj.endStationName}}方向 <span class="up-number" id="{{lineObj.lineCode}}_0_badge"> 0 </span>
12 <div class="help_text dropdown"> 12 <div class="help_text dropdown">
13 <!--<span class=" blue dropdown-toggle col_hide_1440" 13 <!--<span class=" blue dropdown-toggle col_hide_1440"
14 data-toggle="dropdown" aria-expanded="true" 14 data-toggle="dropdown" aria-expanded="true"
@@ -59,7 +59,7 @@ @@ -59,7 +59,7 @@
59 <div class="col-lg-2 down"> 59 <div class="col-lg-2 down">
60 60
61 <div class="title"> 61 <div class="title">
62 - 发往{{lineObj.endStationName}}方向 <span class="down-number" id="{{lineObj.lineCode}}_1_badge"> 0 </span> 62 + 发往{{lineObj.startStationName}}方向 <span class="down-number" id="{{lineObj.lineCode}}_1_badge"> 0 </span>
63 <div class="help_text dropdown"> 63 <div class="help_text dropdown">
64 <!--<span class=" blue dropdown-toggle col_hide_1440" 64 <!--<span class=" blue dropdown-toggle col_hide_1440"
65 data-toggle="dropdown" aria-expanded="true" 65 data-toggle="dropdown" aria-expanded="true"
src/main/resources/static/pages/control/lineallot/allot.html
@@ -78,12 +78,42 @@ @@ -78,12 +78,42 @@
78 font-family: 仿宋; 78 font-family: 仿宋;
79 } 79 }
80 80
81 -.selected a{ 81 +/* .selected a{
82 position: absolute; 82 position: absolute;
83 bottom: 20px; 83 bottom: 20px;
84 } 84 }
85 .selected a.btn{ 85 .selected a.btn{
86 bottom: 10px; 86 bottom: 10px;
  87 +} */
  88 +
  89 +.lb_panel{
  90 + position: absolute;
  91 + bottom: 20px;
  92 +}
  93 +
  94 +.lb_panel a{
  95 + margin-right: 5px;
  96 +}
  97 +
  98 +.gotoControl.red{
  99 + background: #ec7b7b;
  100 + border-color: #ec7b7b;
  101 +}
  102 +
  103 +.gotoControl.red:hover{
  104 + background: #d96262;
  105 + border-color: #d96262;
  106 +}
  107 +
  108 +#resetBtn,#historyBtn{
  109 + vertical-align: bottom;
  110 + display: inline-block;
  111 + margin-bottom: 3px;
  112 +}
  113 +
  114 +/** 闵行没有分公司,直接隐藏 */
  115 +.company,.sub-company{
  116 + display: none !important;
87 } 117 }
88 </style> 118 </style>
89 119
@@ -118,9 +148,8 @@ @@ -118,9 +148,8 @@
118 <input type="text" id="searchLineInput" class="form-control input-lg" placeholder="搜索线路"> </div> 148 <input type="text" id="searchLineInput" class="form-control input-lg" placeholder="搜索线路"> </div>
119 </div> 149 </div>
120 </div> 150 </div>
121 -  
122 <div class="line-select-cont col-md-12" > 151 <div class="line-select-cont col-md-12" >
123 - <div class="line-select-body"> 152 + <div class="line-select-body" style="margin-top: 20px;">
124 <span class="load-text">加载中...</span> 153 <span class="load-text">加载中...</span>
125 </div> 154 </div>
126 </div> 155 </div>
@@ -130,15 +159,19 @@ @@ -130,15 +159,19 @@
130 <h5 style="font-family: 仿宋; display: block;">已选中线路</h5> 159 <h5 style="font-family: 仿宋; display: block;">已选中线路</h5>
131 <div class="selected-body"></div> 160 <div class="selected-body"></div>
132 161
133 - <a href="javascript:;" id="gotoControl" class="btn btn-lg blue" >  
134 - <i class="fa fa-check"></i> 确定 </a>  
135 -  
136 -  
137 - <a href="javascript:;" id="resetBtn" style="left: 120px;color: #3598DC;">  
138 - <i class="fa fa-history"></i> 重置</a>  
139 -  
140 - <a href="javascript:;" id="historyBtn" style="left: 180px;color: #f36a5a;">  
141 - <i class="fa fa-history"></i> 历史纪录 </a> 162 + <div class="lb_panel">
  163 + <a href="javascript:;" class="btn btn-lg blue gotoControl red" data-status=1>
  164 + <i class="fa fa-power-off"></i> 主调模式 </a>
  165 +
  166 + <a href="javascript:;" id="monitor" class="btn btn-lg grey gotoControl" data-status=0>
  167 + <i class="fa fa-tv"></i> 监控模式 </a>
  168 + &nbsp;
  169 + <a href="javascript:;" id="resetBtn" style="left: 120px;color: #3598DC;">
  170 + <i class="fa fa-history"></i> 重置</a>
  171 +
  172 + <a href="javascript:;" id="historyBtn" style="left: 180px;color: #f36a5a;">
  173 + <i class="fa fa-history"></i> 历史纪录 </a>
  174 + </div>
142 </div> 175 </div>
143 </div> 176 </div>
144 </div> 177 </div>
@@ -254,7 +287,7 @@ $(function(){ @@ -254,7 +287,7 @@ $(function(){
254 }); 287 });
255 288
256 //确定 289 //确定
257 - $('#gotoControl').on('click', function(){ 290 + $('.gotoControl').on('click', function(){
258 var lines = $('.selected-body .line'); 291 var lines = $('.selected-body .line');
259 if(lines.length == 0){ 292 if(lines.length == 0){
260 layer.alert('你还没有选择线路!',{icon: 3}); 293 layer.alert('你还没有选择线路!',{icon: 3});
@@ -268,6 +301,8 @@ $(function(){ @@ -268,6 +301,8 @@ $(function(){
268 lsData.push(lineIdMap[$(e).data('id')]); 301 lsData.push(lineIdMap[$(e).data('id')]);
269 }); 302 });
270 storage.setItem('lineControlItems', JSON.stringify(lsData)); 303 storage.setItem('lineControlItems', JSON.stringify(lsData));
  304 + //监控模式还是主调模式
  305 + storage.setItem('operationMode', $(this).data('status'));
271 //将线路路由缓存到localstorage 306 //将线路路由缓存到localstorage
272 cacheRoute(lsData, function(cacheData){ 307 cacheRoute(lsData, function(cacheData){
273 for(var lineCode in cacheData){ 308 for(var lineCode in cacheData){
src/main/resources/static/pages/mapmonitor/real/css/real.css
@@ -87,11 +87,22 @@ label.BMapLabel{ @@ -87,11 +87,22 @@ label.BMapLabel{
87 87
88 .mapRightWrap.to_playBack{ 88 .mapRightWrap.to_playBack{
89 transform:rotateY(180deg); 89 transform:rotateY(180deg);
90 - height: 476px;  
91 - width: 390px 90 + min-height: 454px;
  91 + width: 390px;
  92 + height: auto;
92 } 93 }
93 94
94 -.mapRightWrap.to_playBack .alert{ 95 +.mapRightWrap.playBack{
  96 + min-height: 454px;
  97 + width: 390px;
  98 + height: auto;
  99 +}
  100 +
  101 +/* .mapRightWrap.playBack form select{
  102 + width: 100%;
  103 +} */
  104 +
  105 +.mapRightWrap.playBack .alert{
95 font-size: 13px; 106 font-size: 13px;
96 margin-top: 1px; 107 margin-top: 1px;
97 width: calc(100% - 2px); 108 width: calc(100% - 2px);
@@ -107,6 +118,7 @@ label.BMapLabel{ @@ -107,6 +118,7 @@ label.BMapLabel{
107 .mapRightWrap.search{ 118 .mapRightWrap.search{
108 height: 47px; 119 height: 47px;
109 padding-top: 0; 120 padding-top: 0;
  121 + background-color: #626775 !important;
110 } 122 }
111 123
112 .playBack form{ 124 .playBack form{
@@ -631,22 +643,22 @@ html{ @@ -631,22 +643,22 @@ html{
631 } 643 }
632 644
633 .play-back-list{ 645 .play-back-list{
634 - display: none; 646 +display: none;
635 position: absolute; 647 position: absolute;
636 width: 295px; 648 width: 295px;
637 right: 5px; 649 right: 5px;
638 - background: linear-gradient(to right ,#0d4770,#0a3f64);  
639 z-index: 9999; 650 z-index: 9999;
640 -  
641 height: calc(100% - 50px); 651 height: calc(100% - 50px);
642 top: 25px; 652 top: 25px;
643 padding: 15px 7px 3px; 653 padding: 15px 7px 3px;
  654 + background: white;
  655 + border-radius: 5px !important;
644 } 656 }
645 657
646 .progress-wrap{ 658 .progress-wrap{
647 width: calc(100% - 340px); 659 width: calc(100% - 340px);
648 height: 10px; 660 height: 10px;
649 - bottom: 20px; 661 + bottom: 33px;
650 left: 20px; 662 left: 20px;
651 position: absolute; 663 position: absolute;
652 display: none; 664 display: none;
@@ -688,7 +700,7 @@ html{ @@ -688,7 +700,7 @@ html{
688 height: 44px; 700 height: 44px;
689 position: absolute; 701 position: absolute;
690 right: 320px; 702 right: 320px;
691 - bottom: 40px; 703 + bottom: 58px;
692 padding: 9px 0 0 25px; 704 padding: 9px 0 0 25px;
693 border-radius: 15px !important; 705 border-radius: 15px !important;
694 } 706 }
@@ -720,13 +732,11 @@ html{ @@ -720,13 +732,11 @@ html{
720 } 732 }
721 733
722 .pback-logs{ 734 .pback-logs{
723 - height: 100%;  
724 - width: 100%;  
725 - color: #e1e1e1; 735 + color: #333333;
726 } 736 }
727 .pback-logs-item{ 737 .pback-logs-item{
728 padding: 8px 12px; 738 padding: 8px 12px;
729 - border-bottom: 1px dashed #5a5a5a; 739 + border-bottom: 1px dashed #d2d2d2;
730 } 740 }
731 741
732 .pback-logs-item-date{ 742 .pback-logs-item-date{
@@ -742,19 +752,20 @@ html{ @@ -742,19 +752,20 @@ html{
742 } 752 }
743 753
744 .progress-mark-info{ 754 .progress-mark-info{
745 - position: absolute; 755 + position: absolute;
746 width: 62px; 756 width: 62px;
747 - height: 30px; 757 + height: 27px;
748 z-index: 10000; 758 z-index: 10000;
749 background: #1bbc9b; 759 background: #1bbc9b;
750 display: none; 760 display: none;
751 - top: -35px;  
752 - padding: 5px 3px; 761 + top: -30px;
  762 + padding: 4px 3px;
753 color: white; 763 color: white;
754 } 764 }
755 765
756 #progress-mark-time{ 766 #progress-mark-time{
757 /* transition: all 1s ease; */ 767 /* transition: all 1s ease; */
  768 + top: 12px;
758 } 769 }
759 770
760 #progress-mark-time-mouse{ 771 #progress-mark-time-mouse{
src/main/resources/static/pages/mapmonitor/real/js/playBack.js
@@ -34,7 +34,6 @@ var playBack = (function() { @@ -34,7 +34,6 @@ var playBack = (function() {
34 var lineRoute; 34 var lineRoute;
35 //默认以第一辆车为焦点 35 //默认以第一辆车为焦点
36 var firstCar; 36 var firstCar;
37 - //S0I-058,S0I-055 ,隧道六线  
38 37
39 function getCurrMap(){ 38 function getCurrMap(){
40 return realMap[realMap.getMap().fName]; 39 return realMap[realMap.getMap().fName];
@@ -79,6 +78,7 @@ var playBack = (function() { @@ -79,6 +78,7 @@ var playBack = (function() {
79 getCurrMap().clear(); 78 getCurrMap().clear();
80 //坐标归0 79 //坐标归0
81 cIndex = 0; 80 cIndex = 0;
  81 + $('.pback-logs').html('');
82 //动画 82 //动画
83 $('.play-back-list').removeClass('fadeInRightBig').addClass('fadeOutRightBig'); 83 $('.play-back-list').removeClass('fadeInRightBig').addClass('fadeOutRightBig');
84 $('.play-back-btns,.progress-wrap').removeClass('fadeInUpBig').addClass('fadeOutDownBig'); 84 $('.play-back-btns,.progress-wrap').removeClass('fadeInUpBig').addClass('fadeOutDownBig');
@@ -183,6 +183,10 @@ var playBack = (function() { @@ -183,6 +183,10 @@ var playBack = (function() {
183 183
184 //点击轨迹回放按钮 184 //点击轨迹回放按钮
185 $('#playBackBtn').on('click', function(){ 185 $('#playBackBtn').on('click', function(){
  186 + //表单校验
  187 + if(!customFormValidate('#playBackForm'))
  188 + return;
  189 +
186 var params = $('#playBackForm').serializeJSON(); 190 var params = $('#playBackForm').serializeJSON();
187 //查询历史gps数据 191 //查询历史gps数据
188 var fs = 'YYYY-MM-DDHH:mm' 192 var fs = 'YYYY-MM-DDHH:mm'
@@ -198,7 +202,7 @@ var playBack = (function() { @@ -198,7 +202,7 @@ var playBack = (function() {
198 success:function(rs){ 202 success:function(rs){
199 gpsArray = rs; 203 gpsArray = rs;
200 size = gpsArray.length; 204 size = gpsArray.length;
201 - //layer.closeAll(); 205 + layer.closeAll();
202 //切出轨迹回放面板 206 //切出轨迹回放面板
203 $('.mapRightWrap,.mapTools,.leftUtilsWrap').fadeOut(); 207 $('.mapRightWrap,.mapTools,.leftUtilsWrap').fadeOut();
204 $('.play-back-list,.play-back-btns,.progress-wrap').show(); 208 $('.play-back-list,.play-back-btns,.progress-wrap').show();
@@ -214,23 +218,29 @@ var playBack = (function() { @@ -214,23 +218,29 @@ var playBack = (function() {
214 getCurrMap().clear(); 218 getCurrMap().clear();
215 219
216 firstCar = params.nbbm[0]; 220 firstCar = params.nbbm[0];
217 - layer.msg('加载线路图层数据...', {icon: 16, time: 0,shade:0.3});  
218 - $.get('/realSchedule/findRouteByLine', {lineId: $('.mapRightWrap select[name=lineCode]').val()} 221 +
  222 + var lineCode = $('.mapRightWrap select[name=lineCode]').val();
  223 + if(lineCode != -1){
  224 + layer.msg('加载线路图层数据...', {icon: 16, time: 0,shade:0.3});
  225 + $.get('/realSchedule/findRouteByLine', {lineId: lineCode}
219 ,function(route){ 226 ,function(route){
220 lineRoute = route; 227 lineRoute = route;
221 getCurrMap().drawLine(lineRoute); 228 getCurrMap().drawLine(lineRoute);
222 - //开始播放 229 + layer.closeAll();
223 play(); 230 play();
224 - }); 231 + });
  232 + }
  233 + else
  234 + play();
225 } 235 }
226 }); 236 });
227 }); 237 });
228 238
229 //默认值 239 //默认值
230 - $('input[name=sDate]').val('2016-04-24'); 240 + /* $('input[name=sDate]').val('2016-04-24');
231 $('input[name=sTime]').val('04:00'); 241 $('input[name=sTime]').val('04:00');
232 $('input[name=eDate]').val('2016-04-24'); 242 $('input[name=eDate]').val('2016-04-24');
233 - $('input[name=eTime]').val('04:40'); 243 + $('input[name=eTime]').val('05:40');*/
234 } 244 }
235 }; 245 };
236 246
@@ -283,6 +293,36 @@ var playBack = (function() { @@ -283,6 +293,36 @@ var playBack = (function() {
283 //$pmk.css('width', w); 293 //$pmk.css('width', w);
284 play(); 294 play();
285 } 295 }
  296 +
  297 + /**
  298 + * 自定义表单校验
  299 + */
  300 + function customFormValidate(f){
  301 + var rs = true;
  302 + //所有可见的项
  303 + var es = $('input,select', f);
  304 +
  305 + for(var i = 0, e; e = es[i++];){
  306 + if($(e).attr('required') && ( $(e).val() == null || $(e).val() == '')){
  307 + if($(e).hasClass('select2-hidden-accessible'))
  308 + $(e).next().find('.select2-selection').addClass('custom-val-error');
  309 + else
  310 + $(e).addClass('custom-val-error');
  311 + rs = false;
  312 + }
  313 + else{
  314 + if($(e).hasClass('select2-hidden-accessible'))
  315 + $(e).next().find('.select2-selection').removeClass('custom-val-error');
  316 + else
  317 + $(e).removeClass('custom-val-error');
  318 + }
  319 + }
  320 +
  321 + if(!rs){
  322 + layer.alert('数据完整性校验失败,请检查输入项', {icon: 2, title: '操作失败', shift: 5});
  323 + }
  324 + return rs;
  325 + }
286 326
287 return exports; 327 return exports;
288 })(); 328 })();
289 \ No newline at end of file 329 \ No newline at end of file
src/main/resources/static/pages/mapmonitor/real/js/real.js
@@ -41,9 +41,9 @@ @@ -41,9 +41,9 @@
41 } 41 }
42 var method = $(this).data('click'); 42 var method = $(this).data('click');
43 43
44 - if (!method || playAnimation) 44 + /*if (!method || playAnimation)
45 return; 45 return;
46 - playAnimation = true; 46 + playAnimation = true;*/
47 47
48 $('.mapTools').addClass('disable'); 48 $('.mapTools').addClass('disable');
49 $('.mapTools div.item.active').removeClass('active'); 49 $('.mapTools div.item.active').removeClass('active');
@@ -58,19 +58,25 @@ @@ -58,19 +58,25 @@
58 // 车辆 58 // 车辆
59 vehicle : function() { 59 vehicle : function() {
60 60
61 - mrw.html('').addClass('to_vehicle vehicle');  
62 - resetRotate(null, vehiclePanel.showData); 61 + /*mrw.html('').addClass('to_vehicle vehicle');
  62 + resetRotate(null, vehiclePanel.showData);*/
  63 + mrw.html('').addClass('vehicle');
  64 + vehiclePanel.showData();
63 }, 65 },
64 search : function() { 66 search : function() {
65 - mrw.html('').addClass('to_searchPanel search');  
66 - resetRotate(null, searchPanel.init); 67 + /*mrw.html('').addClass('to_searchPanel search');
  68 + resetRotate(null, searchPanel.init);*/
  69 + mrw.html('').addClass('search');
  70 + searchPanel.init();
67 }, 71 },
68 notice : function() { 72 notice : function() {
69 alert('notice'); 73 alert('notice');
70 }, 74 },
71 playBack : function() { 75 playBack : function() {
72 - mrw.html('').addClass('to_playBack playBack');  
73 - resetRotate(null, playBack.init); 76 + /*mrw.html('').addClass('to_playBack playBack');
  77 + resetRotate(null, playBack.init);*/
  78 + mrw.html('').addClass('playBack');
  79 + playBack.init();
74 80
75 }, 81 },
76 clearStyle : function() { 82 clearStyle : function() {
src/main/resources/static/pages/mapmonitor/real/real.html
@@ -26,137 +26,23 @@ @@ -26,137 +26,23 @@
26 26
27 <div class="mapTools z-depth-3 "> 27 <div class="mapTools z-depth-3 ">
28 <div class="item active" data-click="vehicle"> 28 <div class="item active" data-click="vehicle">
29 - <i class="fa fa-bus"></i> &nbsp;线路 29 + <i class="fa fa-bus"></i> 线路
30 </div> 30 </div>
31 <div class="item" data-click="search"> 31 <div class="item" data-click="search">
32 - <i class="fa fa-search"></i> &nbsp;搜索 32 + <i class="fa fa-search"></i> 搜索
33 </div> 33 </div>
34 <!-- <div class="item" data-click="notice"> --> 34 <!-- <div class="item" data-click="notice"> -->
35 <div class="item" > 35 <div class="item" >
36 - <i class="fa fa-bell-o"></i> &nbsp;安全 36 + <i class="fa fa-bell-o"></i> 安全
37 </div> 37 </div>
38 <div class="item" data-click="playBack"> 38 <div class="item" data-click="playBack">
39 - <i class="fa fa-history"></i> &nbsp;回放 39 + <i class="fa fa-history"></i> 回放
40 </div> 40 </div>
41 </div> 41 </div>
42 42
43 <!-- 轨迹回放面板 --> 43 <!-- 轨迹回放面板 -->
44 -<div class="play-back-list animated fadeInRightBig">  
45 - <div class="pback-logs">  
46 - <!-- <div class="pback-logs-item">  
47 - W2B-012 进站 金桥路浦东大道站  
48 - <span class="pback-logs-item-date">07月17 12:40</span>  
49 - </div>  
50 - <div class="pback-logs-item">  
51 - W2B-012 出站 金桥路浦东大道站  
52 - <span class="pback-logs-item-date">07月17 12:42</span>  
53 - </div>  
54 - <div class="pback-logs-item">  
55 - W2B-012 进站 金桥路浦东大道站  
56 - <span class="pback-logs-item-date">07月17 12:40</span>  
57 - </div>  
58 - <div class="pback-logs-item">  
59 - W2B-012 出站 金桥路浦东大道站  
60 - <span class="pback-logs-item-date">07月17 12:42</span>  
61 - </div>  
62 - <div class="pback-logs-item">  
63 - W2B-012 进站 金桥路浦东大道站  
64 - <span class="pback-logs-item-date">07月17 12:40</span>  
65 - </div>  
66 - <div class="pback-logs-item">  
67 - W2B-012 出站 金桥路浦东大道站  
68 - <span class="pback-logs-item-date">07月17 12:42</span>  
69 - </div>  
70 - <div class="pback-logs-item">  
71 - W2B-012 进站 金桥路浦东大道站  
72 - <span class="pback-logs-item-date">07月17 12:40</span>  
73 - </div>  
74 - <div class="pback-logs-item">  
75 - W2B-012 出站 金桥路浦东大道站  
76 - <span class="pback-logs-item-date">07月17 12:42</span>  
77 - </div>  
78 - <div class="pback-logs-item">  
79 - W2B-012 进站 金桥路浦东大道站  
80 - <span class="pback-logs-item-date">07月17 12:40</span>  
81 - </div>  
82 - <div class="pback-logs-item">  
83 - W2B-012 出站 金桥路浦东大道站  
84 - <span class="pback-logs-item-date">07月17 12:42</span>  
85 - </div>  
86 - <div class="pback-logs-item">  
87 - W2B-012 进站 金桥路浦东大道站  
88 - <span class="pback-logs-item-date">07月17 12:40</span>  
89 - </div>  
90 - <div class="pback-logs-item">  
91 - W2B-012 出站 金桥路浦东大道站  
92 - <span class="pback-logs-item-date">07月17 12:42</span>  
93 - </div>  
94 - <div class="pback-logs-item">  
95 - W2B-012 进站 金桥路浦东大道站  
96 - <span class="pback-logs-item-date">07月17 12:40</span>  
97 - </div>  
98 - <div class="pback-logs-item">  
99 - W2B-012 出站 金桥路浦东大道站  
100 - <span class="pback-logs-item-date">07月17 12:42</span>  
101 - </div><div class="pback-logs-item">  
102 - W2B-012 进站 金桥路浦东大道站  
103 - <span class="pback-logs-item-date">07月17 12:40</span>  
104 - </div>  
105 - <div class="pback-logs-item">  
106 - W2B-012 出站 金桥路浦东大道站  
107 - <span class="pback-logs-item-date">07月17 12:42</span>  
108 - </div>  
109 - <div class="pback-logs-item">  
110 - W2B-012 进站 金桥路浦东大道站  
111 - <span class="pback-logs-item-date">07月17 12:40</span>  
112 - </div>  
113 - <div class="pback-logs-item">  
114 - W2B-012 出站 金桥路浦东大道站  
115 - <span class="pback-logs-item-date">07月17 12:42</span>  
116 - </div>  
117 - <div class="pback-logs-item">  
118 - W2B-012 进站 金桥路浦东大道站  
119 - <span class="pback-logs-item-date">07月17 12:40</span>  
120 - </div>  
121 - <div class="pback-logs-item">  
122 - W2B-012 出站 金桥路浦东大道站  
123 - <span class="pback-logs-item-date">07月17 12:42</span>  
124 - </div>  
125 - <div class="pback-logs-item">  
126 - W2B-012 进站 金桥路浦东大道站  
127 - <span class="pback-logs-item-date">07月17 12:40</span>  
128 - </div>  
129 - <div class="pback-logs-item">  
130 - W2B-012 出站 金桥路浦东大道站  
131 - <span class="pback-logs-item-date">07月17 12:42</span>  
132 - </div>  
133 -  
134 - <div class="pback-logs-item">  
135 - W2B-012 进站 金桥路浦东大道站  
136 - <span class="pback-logs-item-date">07月17 12:40</span>  
137 - </div>  
138 - <div class="pback-logs-item">  
139 - W2B-012 出站 金桥路浦东大道站  
140 - <span class="pback-logs-item-date">07月17 12:42</span>  
141 - </div>  
142 - <div class="pback-logs-item">  
143 - W2B-012 进站 金桥路浦东大道站  
144 - <span class="pback-logs-item-date">07月17 12:40</span>  
145 - </div>  
146 - <div class="pback-logs-item">  
147 - W2B-012 出站 金桥路浦东大道站  
148 - <span class="pback-logs-item-date">07月17 12:42</span>  
149 - </div>  
150 - <div class="pback-logs-item">  
151 - W2B-012 进站 金桥路浦东大道站  
152 - <span class="pback-logs-item-date">07月17 12:40</span>  
153 - </div>  
154 - <div class="pback-logs-item">  
155 - W2B-012 出站 金桥路浦东大道站  
156 - <span class="pback-logs-item-date">07月17 12:42</span>  
157 - </div> -->  
158 -  
159 - </div> 44 +<div class="play-back-list animated fadeInRightBig z-depth-2">
  45 + <div class="pback-logs"></div>
160 </div> 46 </div>
161 <div class="play-back-btns z-depth-1 animated fadeInUpBig"> 47 <div class="play-back-btns z-depth-1 animated fadeInUpBig">
162 <i class="fa fa-play playBtn" data-status=0></i> 48 <i class="fa fa-play playBtn" data-status=0></i>
src/main/resources/static/pages/mapmonitor/real/temps/playBack.html
  1 +
  2 +<!-- W2B-083 , W2B-084 , W2B-087 85路 -->
1 <script id="play_back_panel_temp" type="text/html"> 3 <script id="play_back_panel_temp" type="text/html">
2 <div class="alert alert-info animated flipInX"> 4 <div class="alert alert-info animated flipInX">
3 -<i class="fa fa-exclamation-circle" ></i> 最多跨一天回放,请尽量小范围的查询 W2B-083 , W2B-084 , W2B-087 85路</div> 5 +<i class="fa fa-exclamation-circle" ></i> 最多跨一天回放,请尽量小范围的查询</div>
4 <form class="form-horizontal" role="form" id="playBackForm"> 6 <form class="form-horizontal" role="form" id="playBackForm">
5 <div class="form-body"> 7 <div class="form-body">
6 <div class="form-group"> 8 <div class="form-group">
7 <label class="col-md-3 control-label">车辆编码</label> 9 <label class="col-md-3 control-label">车辆编码</label>
8 <div class="col-md-9"> 10 <div class="col-md-9">
9 - <select class="form-control" name="nbbm[]" placeholder="车辆编码" multiple="multiple"></select> 11 + <select class="form-control" name="nbbm[]" placeholder="车辆编码" multiple="multiple" required=1 style="width:100%;"></select>
10 </div> 12 </div>
11 </div> 13 </div>
12 14
13 <div class="form-group"> 15 <div class="form-group">
14 <label class="col-md-3 control-label">起始时间</label> 16 <label class="col-md-3 control-label">起始时间</label>
15 <div class="col-md-9"> 17 <div class="col-md-9">
16 - <input type="date" name="sDate" class="form-control" placeholder="日期">  
17 - <input type="time" name="sTime" class="form-control" placeholder="时间"> 18 + <input type="date" name="sDate" class="form-control" placeholder="日期" required=1>
  19 + <input type="time" name="sTime" class="form-control" placeholder="时间" required=1>
18 </div> 20 </div>
19 </div> 21 </div>
20 <div class="form-group"> 22 <div class="form-group">
21 <label class="col-md-3 control-label">截止时间</label> 23 <label class="col-md-3 control-label">截止时间</label>
22 <div class="col-md-9"> 24 <div class="col-md-9">
23 - <input type="date" name="eDate" class="form-control" placeholder="截止时间">  
24 - <input type="time" name="eTime" class="form-control" placeholder="时间"> 25 + <input type="date" name="eDate" class="form-control" placeholder="截止时间" required=1>
  26 + <input type="time" name="eTime" class="form-control" placeholder="时间" required=1>
25 </div> 27 </div>
26 </div> 28 </div>
27 </div> 29 </div>
@@ -30,13 +32,13 @@ @@ -30,13 +32,13 @@
30 <div class="form-group"> 32 <div class="form-group">
31 <label class="col-md-3 control-label">线路图层</label> 33 <label class="col-md-3 control-label">线路图层</label>
32 <div class="col-md-9"> 34 <div class="col-md-9">
33 - <select class="form-control" name="lineCode" ></select> 35 + <select class="form-control" name="lineCode" style="width:100%;"></select>
34 </div> 36 </div>
35 </div> 37 </div>
36 </form> 38 </form>
37 <hr> 39 <hr>
38 <div class="form-actions"> 40 <div class="form-actions">
39 - <div class="row" style="text-align: center;margin-left: 0;"> 41 + <div class="row" style="text-align: center;margin-left: 0;margin-bottom: 20px;">
40 <div > 42 <div >
41 <button type="button" class="btn green-meadow btn-lg" id="playBackBtn"> <i class="fa fa-play-circle"> </i> &nbsp;轨迹回放 </button> 43 <button type="button" class="btn green-meadow btn-lg" id="playBackBtn"> <i class="fa fa-play-circle"> </i> &nbsp;轨迹回放 </button>
42 </div> 44 </div>