Commit a57e714216e1026f454aac531ac0930984106bc0

Authored by 潘钊
2 parents 03fe6765 00864ff1

Merge branch 'minhang' of http://222.66.0.204:8090/panzhaov5/bsth_control into minhang

Showing 47 changed files with 1978 additions and 1571 deletions
src/main/java/com/bsth/controller/realcontrol/FrequentPhrasesController.java
1 -package com.bsth.controller.realcontrol;  
2 -  
3 -import com.bsth.controller.BaseController;  
4 -import com.bsth.entity.realcontrol.FrequentPhrases;  
5 -import org.springframework.web.bind.annotation.RequestMapping;  
6 -import org.springframework.web.bind.annotation.RestController;  
7 -  
8 -/**  
9 - * Created by panzhao on 2017/9/17.  
10 - */  
11 -@RestController  
12 -@RequestMapping("frequent_phrases")  
13 -public class FrequentPhrasesController extends BaseController<FrequentPhrases, Integer>{  
14 -  
15 -} 1 +package com.bsth.controller.realcontrol;
  2 +
  3 +import com.bsth.controller.BaseController;
  4 +import com.bsth.entity.realcontrol.FrequentPhrases;
  5 +import org.springframework.web.bind.annotation.RequestMapping;
  6 +import org.springframework.web.bind.annotation.RestController;
  7 +
  8 +/**
  9 + * Created by panzhao on 2017/9/17.
  10 + */
  11 +@RestController
  12 +@RequestMapping("frequent_phrases")
  13 +public class FrequentPhrasesController extends BaseController<FrequentPhrases, Integer>{
  14 +
  15 +}
src/main/java/com/bsth/controller/traffic/VehicleInoutStopController.java 0 → 100644
  1 +package com.bsth.controller.traffic;
  2 +
  3 +import com.bsth.controller.BaseController;
  4 +import com.bsth.entity.traffic.VehicleInoutStop;
  5 +import org.springframework.web.bind.annotation.RequestMapping;
  6 +import org.springframework.web.bind.annotation.RestController;
  7 +/**
  8 + *
  9 + * @author BSTH
  10 + *
  11 + */
  12 +@RestController
  13 +@RequestMapping("vehicle_stop")
  14 +public class VehicleInoutStopController extends BaseController<VehicleInoutStop,Integer> {
  15 +}
src/main/java/com/bsth/entity/realcontrol/FrequentPhrases.java
1 -package com.bsth.entity.realcontrol;  
2 -  
3 -import javax.persistence.Entity;  
4 -import javax.persistence.GeneratedValue;  
5 -import javax.persistence.Id;  
6 -import javax.persistence.Table;  
7 -  
8 -/**  
9 - * 常用短语  
10 - * Created by panzhao on 2017/9/17.  
11 - */  
12 -@Entity  
13 -@Table(name = "bsth_c_s_frequent_phrases")  
14 -public class FrequentPhrases {  
15 -  
16 - @Id  
17 - @GeneratedValue  
18 - private Integer id;  
19 -  
20 - /**  
21 - * 用户名  
22 - */  
23 - private String userName;  
24 -  
25 - /**  
26 - * 短语  
27 - */  
28 - private String text;  
29 -  
30 - public Integer getId() {  
31 - return id;  
32 - }  
33 -  
34 - public void setId(Integer id) {  
35 - this.id = id;  
36 - }  
37 -  
38 - public String getUserName() {  
39 - return userName;  
40 - }  
41 -  
42 - public void setUserName(String userName) {  
43 - this.userName = userName;  
44 - }  
45 -  
46 - public String getText() {  
47 - return text;  
48 - }  
49 -  
50 - public void setText(String text) {  
51 - this.text = text;  
52 - }  
53 -} 1 +package com.bsth.entity.realcontrol;
  2 +
  3 +import javax.persistence.Entity;
  4 +import javax.persistence.GeneratedValue;
  5 +import javax.persistence.Id;
  6 +import javax.persistence.Table;
  7 +
  8 +/**
  9 + * 常用短语
  10 + * Created by panzhao on 2017/9/17.
  11 + */
  12 +@Entity
  13 +@Table(name = "bsth_c_s_frequent_phrases")
  14 +public class FrequentPhrases {
  15 +
  16 + @Id
  17 + @GeneratedValue
  18 + private Integer id;
  19 +
  20 + /**
  21 + * 用户名
  22 + */
  23 + private String userName;
  24 +
  25 + /**
  26 + * 短语
  27 + */
  28 + private String text;
  29 +
  30 + public Integer getId() {
  31 + return id;
  32 + }
  33 +
  34 + public void setId(Integer id) {
  35 + this.id = id;
  36 + }
  37 +
  38 + public String getUserName() {
  39 + return userName;
  40 + }
  41 +
  42 + public void setUserName(String userName) {
  43 + this.userName = userName;
  44 + }
  45 +
  46 + public String getText() {
  47 + return text;
  48 + }
  49 +
  50 + public void setText(String text) {
  51 + this.text = text;
  52 + }
  53 +}
src/main/java/com/bsth/entity/search/PredicatesBuilder.java
@@ -108,7 +108,10 @@ public class PredicatesBuilder { @@ -108,7 +108,10 @@ public class PredicatesBuilder {
108 String.class.isAssignableFrom(rightType)) { // Date >= String 108 String.class.isAssignableFrom(rightType)) { // Date >= String
109 DateTime dateTime = new DateTime(object); 109 DateTime dateTime = new DateTime(object);
110 return cb.greaterThanOrEqualTo((Path<Date>) expression, dateTime.toDate()); 110 return cb.greaterThanOrEqualTo((Path<Date>) expression, dateTime.toDate());
111 - } else { 111 + } else if (long.class.isAssignableFrom(leftType) &&
  112 + String.class.isAssignableFrom(rightType)) { // Long >= String
  113 + return cb.greaterThanOrEqualTo((Path<Long>) expression, Long.valueOf(object+""));
  114 + } else {
112 throw new RuntimeException("ge 不支持类型组合:" + expression.getJavaType() + ">=" + object.getClass()); 115 throw new RuntimeException("ge 不支持类型组合:" + expression.getJavaType() + ">=" + object.getClass());
113 } 116 }
114 } 117 }
@@ -140,7 +143,10 @@ public class PredicatesBuilder { @@ -140,7 +143,10 @@ public class PredicatesBuilder {
140 String.class.isAssignableFrom(rightType)) { // Date <= String 143 String.class.isAssignableFrom(rightType)) { // Date <= String
141 DateTime dateTime = new DateTime(object); 144 DateTime dateTime = new DateTime(object);
142 return cb.lessThanOrEqualTo((Path<Date>) expression, dateTime.toDate()); 145 return cb.lessThanOrEqualTo((Path<Date>) expression, dateTime.toDate());
143 - } else { 146 + }else if (long.class.isAssignableFrom(leftType) &&
  147 + String.class.isAssignableFrom(rightType)) { // Long <= String
  148 + return cb.lessThanOrEqualTo((Path<Long>) expression, Long.valueOf(object + "") );
  149 + } else {
144 throw new RuntimeException("le 不支持类型组合:" + expression.getJavaType() + "<=" + object.getClass()); 150 throw new RuntimeException("le 不支持类型组合:" + expression.getJavaType() + "<=" + object.getClass());
145 } 151 }
146 } 152 }
src/main/java/com/bsth/entity/traffic/VehicleInoutStop.java
1 -package com.bsth.entity.traffic;  
2 -  
3 -import com.bsth.entity.Cars;  
4 -import com.bsth.entity.Line;  
5 -  
6 -import javax.persistence.*;  
7 -import java.util.Date;  
8 -  
9 -/**  
10 - *  
11 - * @ClassName: VehicleInoutStop(车载上报停靠站信息)  
12 - *  
13 - * @Description: TODO(线路标准信息)  
14 - *  
15 - * @Author bsth@zq  
16 - *  
17 - * @Date 2017-9-18 9:34:39  
18 - *  
19 - * @Version 公交调度系统BS版 0.1  
20 - *  
21 - */  
22 -@Entity  
23 -@Table(name = "bsth_c_shreal")  
24 -public class VehicleInoutStop {  
25 -  
26 - @Id  
27 - @GeneratedValue(strategy = GenerationType.IDENTITY)  
28 - private Integer id;  
29 -  
30 - @ManyToOne  
31 - private Line line;  
32 -  
33 - @ManyToOne  
34 - private Cars cars;  
35 -  
36 - // 站点序号  
37 - private Integer stop;  
38 -  
39 - // 营运状态  
40 - private Integer serviceState;  
41 -  
42 - // 上下行  
43 - private Integer upDown;  
44 -  
45 - // 进出站/站内外  
46 - private Integer inOutStop;  
47 -  
48 - // 上报时间  
49 - private Date reportDate;  
50 -  
51 - public Integer getId() {  
52 - return id;  
53 - }  
54 -  
55 - public void setId(Integer id) {  
56 - this.id = id;  
57 - }  
58 -  
59 - public Line getLine() {  
60 - return line;  
61 - }  
62 -  
63 - public void setLine(Line line) {  
64 - this.line = line;  
65 - }  
66 -  
67 - public Cars getCars() {  
68 - return cars;  
69 - }  
70 -  
71 - public void setCars(Cars cars) {  
72 - this.cars = cars;  
73 - }  
74 -  
75 - public Integer getStop() {  
76 - return stop;  
77 - }  
78 -  
79 - public void setStop(Integer stop) {  
80 - this.stop = stop;  
81 - }  
82 -  
83 - public Integer getServiceState() {  
84 - return serviceState;  
85 - }  
86 -  
87 - public void setServiceState(Integer serviceState) {  
88 - this.serviceState = serviceState;  
89 - }  
90 -  
91 - public Integer getUpDown() {  
92 - return upDown;  
93 - }  
94 -  
95 - public void setUpDown(Integer upDown) {  
96 - this.upDown = upDown;  
97 - }  
98 -  
99 - public Integer getInOutStop() {  
100 - return inOutStop;  
101 - }  
102 -  
103 - public void setInOutStop(Integer inOutStop) {  
104 - this.inOutStop = inOutStop;  
105 - }  
106 -  
107 - public Date getReportDate() {  
108 - return reportDate;  
109 - }  
110 -  
111 - public void setReportDate(Date reportDate) {  
112 - this.reportDate = reportDate;  
113 - }  
114 -} 1 +package com.bsth.entity.traffic;
  2 +
  3 +import com.bsth.entity.Cars;
  4 +import com.bsth.entity.Line;
  5 +
  6 +import javax.persistence.*;
  7 +import java.util.Date;
  8 +
  9 +/**
  10 + *
  11 + * @ClassName: VehicleInoutStop(车载上报停靠站信息)
  12 + *
  13 + * @Description: TODO(线路标准信息)
  14 + *
  15 + * @Author bsth@zq
  16 + *
  17 + * @Date 2017-9-18 9:34:39
  18 + *
  19 + * @Version 公交调度系统BS版 0.1
  20 + *
  21 + */
  22 +@Entity
  23 +@Table(name = "bsth_c_shreal")
  24 +public class VehicleInoutStop {
  25 +
  26 + @Id
  27 + @GeneratedValue(strategy = GenerationType.IDENTITY)
  28 + private Integer id;
  29 +
  30 + @ManyToOne
  31 + private Line line;
  32 +
  33 + @ManyToOne
  34 + private Cars cars;
  35 +
  36 + // 站点序号
  37 + private Integer stop;
  38 +
  39 + // 营运状态
  40 + private Integer serviceState;
  41 +
  42 + // 上下行
  43 + private Integer upDown;
  44 +
  45 + // 进出站/站内外
  46 + private Integer inOutStop;
  47 +
  48 + // 上报时间
  49 + private long reportDate;
  50 +
  51 + public Integer getId() {
  52 + return id;
  53 + }
  54 +
  55 + public void setId(Integer id) {
  56 + this.id = id;
  57 + }
  58 +
  59 + public Line getLine() {
  60 + return line;
  61 + }
  62 +
  63 + public void setLine(Line line) {
  64 + this.line = line;
  65 + }
  66 +
  67 + public Cars getCars() {
  68 + return cars;
  69 + }
  70 +
  71 + public void setCars(Cars cars) {
  72 + this.cars = cars;
  73 + }
  74 +
  75 + public Integer getStop() {
  76 + return stop;
  77 + }
  78 +
  79 + public void setStop(Integer stop) {
  80 + this.stop = stop;
  81 + }
  82 +
  83 + public Integer getServiceState() {
  84 + return serviceState;
  85 + }
  86 +
  87 + public void setServiceState(Integer serviceState) {
  88 + this.serviceState = serviceState;
  89 + }
  90 +
  91 + public Integer getUpDown() {
  92 + return upDown;
  93 + }
  94 +
  95 + public void setUpDown(Integer upDown) {
  96 + this.upDown = upDown;
  97 + }
  98 +
  99 + public Integer getInOutStop() {
  100 + return inOutStop;
  101 + }
  102 +
  103 + public void setInOutStop(Integer inOutStop) {
  104 + this.inOutStop = inOutStop;
  105 + }
  106 +
  107 + public long getReportDate() { return reportDate; }
  108 +
  109 + public void setReportDate(long reportDate) { this.reportDate = reportDate; }
  110 +}
src/main/java/com/bsth/repository/realcontrol/FrequentPhrasesRepository.java
1 -package com.bsth.repository.realcontrol;  
2 -  
3 -import com.bsth.entity.realcontrol.FrequentPhrases;  
4 -import com.bsth.repository.BaseRepository;  
5 -import org.springframework.stereotype.Repository;  
6 -  
7 -/**  
8 - * Created by panzhao on 2017/9/17.  
9 - */  
10 -@Repository  
11 -public interface FrequentPhrasesRepository extends BaseRepository<FrequentPhrases, Integer> {  
12 -} 1 +package com.bsth.repository.realcontrol;
  2 +
  3 +import com.bsth.entity.realcontrol.FrequentPhrases;
  4 +import com.bsth.repository.BaseRepository;
  5 +import org.springframework.stereotype.Repository;
  6 +
  7 +/**
  8 + * Created by panzhao on 2017/9/17.
  9 + */
  10 +@Repository
  11 +public interface FrequentPhrasesRepository extends BaseRepository<FrequentPhrases, Integer> {
  12 +}
src/main/java/com/bsth/repository/traffic/VehicleInoutStopRepository.java
1 -package com.bsth.repository.traffic;  
2 -  
3 -import com.bsth.entity.traffic.VehicleInoutStop;  
4 -import com.bsth.repository.BaseRepository;  
5 -  
6 -public interface VehicleInoutStopRepository extends BaseRepository<VehicleInoutStop, Integer> {  
7 -} 1 +package com.bsth.repository.traffic;
  2 +
  3 +import com.bsth.entity.traffic.VehicleInoutStop;
  4 +import com.bsth.repository.BaseRepository;
  5 +
  6 +public interface VehicleInoutStopRepository extends BaseRepository<VehicleInoutStop, Integer> {
  7 +}
src/main/java/com/bsth/service/realcontrol/FrequentPhrasesService.java
1 -package com.bsth.service.realcontrol;  
2 -  
3 -import com.bsth.entity.realcontrol.FrequentPhrases;  
4 -import com.bsth.service.BaseService;  
5 -  
6 -/**  
7 - * Created by panzhao on 2017/9/17.  
8 - */  
9 -public interface FrequentPhrasesService extends BaseService<FrequentPhrases, Integer> {  
10 -} 1 +package com.bsth.service.realcontrol;
  2 +
  3 +import com.bsth.entity.realcontrol.FrequentPhrases;
  4 +import com.bsth.service.BaseService;
  5 +
  6 +/**
  7 + * Created by panzhao on 2017/9/17.
  8 + */
  9 +public interface FrequentPhrasesService extends BaseService<FrequentPhrases, Integer> {
  10 +}
src/main/java/com/bsth/service/realcontrol/impl/FrequentPhrasesServiceImpl.java
1 -package com.bsth.service.realcontrol.impl;  
2 -  
3 -import com.bsth.entity.realcontrol.FrequentPhrases;  
4 -import com.bsth.security.util.SecurityUtils;  
5 -import com.bsth.service.impl.BaseServiceImpl;  
6 -import com.bsth.service.realcontrol.FrequentPhrasesService;  
7 -import org.springframework.stereotype.Service;  
8 -  
9 -import java.util.Map;  
10 -  
11 -/**  
12 - * Created by panzhao on 2017/9/17.  
13 - */  
14 -@Service  
15 -public class FrequentPhrasesServiceImpl extends BaseServiceImpl<FrequentPhrases, Integer> implements FrequentPhrasesService {  
16 -  
17 - @Override  
18 - public Map<String, Object> save(FrequentPhrases fp) {  
19 - fp.setUserName(SecurityUtils.getCurrentUser().getUserName());  
20 - return super.save(fp);  
21 - }  
22 -  
23 - @Override  
24 - public Iterable<FrequentPhrases> list(Map<String, Object> map) {  
25 - map.put("userName_eq", SecurityUtils.getCurrentUser().getUserName());  
26 - return super.list(map);  
27 - }  
28 -} 1 +package com.bsth.service.realcontrol.impl;
  2 +
  3 +import com.bsth.entity.realcontrol.FrequentPhrases;
  4 +import com.bsth.security.util.SecurityUtils;
  5 +import com.bsth.service.impl.BaseServiceImpl;
  6 +import com.bsth.service.realcontrol.FrequentPhrasesService;
  7 +import org.springframework.stereotype.Service;
  8 +
  9 +import java.util.Map;
  10 +
  11 +/**
  12 + * Created by panzhao on 2017/9/17.
  13 + */
  14 +@Service
  15 +public class FrequentPhrasesServiceImpl extends BaseServiceImpl<FrequentPhrases, Integer> implements FrequentPhrasesService {
  16 +
  17 + @Override
  18 + public Map<String, Object> save(FrequentPhrases fp) {
  19 + fp.setUserName(SecurityUtils.getCurrentUser().getUserName());
  20 + return super.save(fp);
  21 + }
  22 +
  23 + @Override
  24 + public Iterable<FrequentPhrases> list(Map<String, Object> map) {
  25 + map.put("userName_eq", SecurityUtils.getCurrentUser().getUserName());
  26 + return super.list(map);
  27 + }
  28 +}
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
@@ -2608,7 +2608,8 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2608,7 +2608,8 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2608 path + "export/统计日报" + sdfSimple.format(sdfMonth.parse(date)) + ".xls"); 2608 path + "export/统计日报" + sdfSimple.format(sdfMonth.parse(date)) + ".xls");
2609 } catch (Exception e) { 2609 } catch (Exception e) {
2610 // TODO: handle exception 2610 // TODO: handle exception
2611 - e.printStackTrace(); 2611 + //e.printStackTrace();
  2612 + logger.info("" , e);
2612 } 2613 }
2613 } 2614 }
2614 2615
src/main/java/com/bsth/service/schedule/datatools/TTInfoDetailDataToolsImpl.java
@@ -271,7 +271,7 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail @@ -271,7 +271,7 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail
271 for (int r = 1; r < sheet.getRows(); r++) { 271 for (int r = 1; r < sheet.getRows(); r++) {
272 List<FcInfo> fcInfos = new ArrayList<>(); 272 List<FcInfo> fcInfos = new ArrayList<>();
273 // 每行第一列都是路牌 273 // 每行第一列都是路牌
274 - fcInfos.add(new FcInfo(null, null, sheet.getCell(0, r).getContents(), null, null, null, null)); // 用fcsj放置路牌显示 274 + fcInfos.add(new FcInfo(null, null, sheet.getCell(0, r).getContents(), null, null, null, null, null)); // 用fcsj放置路牌显示
275 275
276 int bc_ks = 0; // 空驶班次 276 int bc_ks = 0; // 空驶班次
277 int bc_yy = 0; // 营运班次 277 int bc_yy = 0; // 营运班次
@@ -294,7 +294,9 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail @@ -294,7 +294,9 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail
294 String qdzCode = content == null ? "" : content[7]; // 起点站编码 294 String qdzCode = content == null ? "" : content[7]; // 起点站编码
295 String zdzCode = content == null ? "" : content[8]; // 终点站编码 295 String zdzCode = content == null ? "" : content[8]; // 终点站编码
296 296
297 - FcInfo fcInfo = new FcInfo(ttdid_str, bctype, fcsj, xldir, isfb, qdzCode, zdzCode); 297 + String ists = content == null ? "" : content[9]; // 是否停驶
  298 +
  299 + FcInfo fcInfo = new FcInfo(ttdid_str, bctype, fcsj, xldir, isfb, qdzCode, zdzCode, ists);
298 300
299 if (StringUtils.isNotEmpty(fzdname)) 301 if (StringUtils.isNotEmpty(fzdname))
300 headarrays[c] = fzdname; 302 headarrays[c] = fzdname;
@@ -328,10 +330,10 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail @@ -328,10 +330,10 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail
328 } 330 }
329 331
330 // 添加一列 空驶班次/空驶里程,fcsj放置数据 332 // 添加一列 空驶班次/空驶里程,fcsj放置数据
331 - fcInfos.add(new FcInfo(null, null, String.format("%d/%.3f", bc_ks, lc_ks), null, null, null, null)); 333 + fcInfos.add(new FcInfo(null, null, String.format("%d/%.3f", bc_ks, lc_ks), null, null, null, null, null));
332 334
333 // 添加一列 营运班次/营运里程,fcsj放置数据 335 // 添加一列 营运班次/营运里程,fcsj放置数据
334 - fcInfos.add(new FcInfo(null, null, String.format("%d/%.3f", bc_yy, lc_yy), null, null, null, null)); 336 + fcInfos.add(new FcInfo(null, null, String.format("%d/%.3f", bc_yy, lc_yy), null, null, null, null, null));
335 337
336 editInfo.getContents().add(fcInfos); 338 editInfo.getContents().add(fcInfos);
337 } 339 }
src/main/java/com/bsth/service/schedule/datatools/TTInfoDetailForEdit.java
@@ -29,6 +29,8 @@ public interface TTInfoDetailForEdit { @@ -29,6 +29,8 @@ public interface TTInfoDetailForEdit {
29 private String qdzCode; 29 private String qdzCode;
30 /** 终点站code */ 30 /** 终点站code */
31 private String zdzCode; 31 private String zdzCode;
  32 + /** 是否停驶 */
  33 + private Boolean ists;
32 34
33 public FcInfo() { 35 public FcInfo() {
34 } 36 }
@@ -40,7 +42,8 @@ public interface TTInfoDetailForEdit { @@ -40,7 +42,8 @@ public interface TTInfoDetailForEdit {
40 String xldir, 42 String xldir,
41 String isfb, 43 String isfb,
42 String qdzCode, 44 String qdzCode,
43 - String zdzCode) { 45 + String zdzCode,
  46 + String ists) {
44 this.ttdid = StringUtils.isEmpty(ttdid_str) ? null : Long.valueOf(ttdid_str); 47 this.ttdid = StringUtils.isEmpty(ttdid_str) ? null : Long.valueOf(ttdid_str);
45 this.bc_type = bc_type; 48 this.bc_type = bc_type;
46 this.fcsj = fcsj; 49 this.fcsj = fcsj;
@@ -59,6 +62,13 @@ public interface TTInfoDetailForEdit { @@ -59,6 +62,13 @@ public interface TTInfoDetailForEdit {
59 this.zdzCode = zdzCode; 62 this.zdzCode = zdzCode;
60 } 63 }
61 64
  65 + if ("N".equals(ists))
  66 + this.ists = false;
  67 + else if ("Y".equals(ists) || "true".equals(ists))
  68 + this.ists = true;
  69 + else
  70 + this.ists = false;
  71 +
62 } 72 }
63 73
64 public Long getTtdid() { 74 public Long getTtdid() {
@@ -116,6 +126,14 @@ public interface TTInfoDetailForEdit { @@ -116,6 +126,14 @@ public interface TTInfoDetailForEdit {
116 public void setZdzCode(String zdzCode) { 126 public void setZdzCode(String zdzCode) {
117 this.zdzCode = zdzCode; 127 this.zdzCode = zdzCode;
118 } 128 }
  129 +
  130 + public Boolean getIsts() {
  131 + return ists;
  132 + }
  133 +
  134 + public void setIsts(Boolean ists) {
  135 + this.ists = ists;
  136 + }
119 } 137 }
120 138
121 /** 139 /**
src/main/java/com/bsth/service/traffic/VehicleInoutStopService.java
1 -package com.bsth.service.traffic;  
2 -  
3 -import com.bsth.entity.traffic.VehicleInoutStop;  
4 -import com.bsth.service.BaseService;  
5 -  
6 -  
7 -/**  
8 - * 时刻模板上传日志  
9 - */  
10 -public interface VehicleInoutStopService extends BaseService<VehicleInoutStop,Integer> {  
11 -  
12 -} 1 +package com.bsth.service.traffic;
  2 +
  3 +import com.bsth.entity.traffic.VehicleInoutStop;
  4 +import com.bsth.service.BaseService;
  5 +
  6 +
  7 +/**
  8 + * 时刻模板上传日志
  9 + */
  10 +public interface VehicleInoutStopService extends BaseService<VehicleInoutStop,Integer> {
  11 +
  12 +}
src/main/java/com/bsth/service/traffic/impl/VehicleInoutStopServiceImpl.java
1 -package com.bsth.service.traffic.impl;  
2 -  
3 -import com.bsth.entity.traffic.VehicleInoutStop;  
4 -import com.bsth.service.impl.BaseServiceImpl;  
5 -import com.bsth.service.traffic.VehicleInoutStopService;  
6 -import org.slf4j.Logger;  
7 -import org.slf4j.LoggerFactory;  
8 -import org.springframework.stereotype.Service;  
9 -  
10 -/**  
11 - *  
12 - * @ClassName: TrafficManageServiceImpl(运管处接口service业务层实现类)  
13 - *  
14 - * @Extends : BaseService  
15 - *  
16 - * @Description:  
17 - *  
18 - * @Author bsth@zq  
19 - *  
20 - * @Date 2016年10月28日 上午9:21:17  
21 - *  
22 - * @Version 公交调度系统BS版 0.1  
23 - *  
24 - */  
25 -  
26 -@Service  
27 -public class VehicleInoutStopServiceImpl extends BaseServiceImpl<VehicleInoutStop,Integer> implements VehicleInoutStopService {  
28 -  
29 - Logger logger = LoggerFactory.getLogger(this.getClass());  
30 -  
31 -} 1 +package com.bsth.service.traffic.impl;
  2 +
  3 +import com.bsth.entity.traffic.VehicleInoutStop;
  4 +import com.bsth.service.impl.BaseServiceImpl;
  5 +import com.bsth.service.traffic.VehicleInoutStopService;
  6 +import org.slf4j.Logger;
  7 +import org.slf4j.LoggerFactory;
  8 +import org.springframework.stereotype.Service;
  9 +
  10 +/**
  11 + *
  12 + * @ClassName: TrafficManageServiceImpl(运管处接口service业务层实现类)
  13 + *
  14 + * @Extends : BaseService
  15 + *
  16 + * @Description:
  17 + *
  18 + * @Author bsth@zq
  19 + *
  20 + * @Date 2016年10月28日 上午9:21:17
  21 + *
  22 + * @Version 公交调度系统BS版 0.1
  23 + *
  24 + */
  25 +
  26 +@Service
  27 +public class VehicleInoutStopServiceImpl extends BaseServiceImpl<VehicleInoutStop,Integer> implements VehicleInoutStopService {
  28 +
  29 + Logger logger = LoggerFactory.getLogger(this.getClass());
  30 +
  31 +}
src/main/resources/datatools/ktrs/ttinfodetailoutputforedit.ktr
@@ -3892,7 +3892,7 @@ @@ -3892,7 +3892,7 @@
3892 <optimizationLevel>9</optimizationLevel> 3892 <optimizationLevel>9</optimizationLevel>
3893 <jsScripts> <jsScript> <jsScript_type>0</jsScript_type> 3893 <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
3894 <jsScript_name>Script 1</jsScript_name> 3894 <jsScript_name>Script 1</jsScript_name>
3895 - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x987a;&#x5e8f;&#xff0c;id,fcsj,jhlc,zdname,bctype,xldir,isfb&#xa;var all_content_array &#x3d; &#x5b;&#x5d;&#x3b;&#xa;var all_content &#x3d; &#x22;&#x22;&#x3b; &#xa;all_content_array.push&#x28;id&#x29;&#x3b;&#xa;all_content_array.push&#x28;fcsj&#x29;&#x3b;&#xa;all_content_array.push&#x28;jhlc&#x29;&#x3b;&#xa;all_content_array.push&#x28;fczdName&#x29;&#x3b;&#xa;all_content_array.push&#x28;bc_type&#x29;&#x3b;&#xa;all_content_array.push&#x28;xl_dir&#x29;&#x3b;&#xa;all_content_array.push&#x28;isfb&#x29;&#x3b;&#xa;all_content_array.push&#x28;qdz_code &#x7c;&#x7c; &#x27;null&#x27;&#x29;&#x3b;&#xa;all_content_array.push&#x28;zdz_code &#x7c;&#x7c; &#x27;null&#x27;&#x29;&#x3b;&#xa;&#xa;all_content &#x3d; all_content_array.join&#x28;&#x22;,&#x22;&#x29;&#x3b; &#x2f;&#x2f; &#x9017;&#x53f7;&#x5206;&#x9694;</jsScript_script> 3895 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x987a;&#x5e8f;&#xff0c;id,fcsj,jhlc,zdname,bctype,xldir,isfb&#xa;var all_content_array &#x3d; &#x5b;&#x5d;&#x3b;&#xa;var all_content &#x3d; &#x22;&#x22;&#x3b; &#xa;all_content_array.push&#x28;id&#x29;&#x3b;&#xa;all_content_array.push&#x28;fcsj&#x29;&#x3b;&#xa;all_content_array.push&#x28;jhlc&#x29;&#x3b;&#xa;all_content_array.push&#x28;fczdName&#x29;&#x3b;&#xa;all_content_array.push&#x28;bc_type&#x29;&#x3b;&#xa;all_content_array.push&#x28;xl_dir&#x29;&#x3b;&#xa;all_content_array.push&#x28;isfb&#x29;&#x3b;&#xa;all_content_array.push&#x28;qdz_code &#x7c;&#x7c; &#x27;null&#x27;&#x29;&#x3b;&#xa;all_content_array.push&#x28;zdz_code &#x7c;&#x7c; &#x27;null&#x27;&#x29;&#x3b;&#xa;all_content_array.push&#x28;ists&#x29;&#x3b;&#xa;&#xa;all_content &#x3d; all_content_array.join&#x28;&#x22;,&#x22;&#x29;&#x3b; &#x2f;&#x2f; &#x9017;&#x53f7;&#x5206;&#x9694;</jsScript_script>
3896 </jsScript> </jsScripts> <fields> <field> <name>all_content</name> 3896 </jsScript> </jsScripts> <fields> <field> <name>all_content</name>
3897 <rename>all_content</rename> 3897 <rename>all_content</rename>
3898 <type>String</type> 3898 <type>String</type>
@@ -3964,7 +3964,7 @@ @@ -3964,7 +3964,7 @@
3964 <schema_name/> 3964 <schema_name/>
3965 </partitioning> 3965 </partitioning>
3966 <connection>bus_control_variable</connection> 3966 <connection>bus_control_variable</connection>
3967 - <sql>select &#xa;t.id as id&#xa;, concat&#x28;g.id, &#x27;_&#x27;, g.lp_name&#x29; as lp&#xa;, g.xl as xl&#xa;, qdz_code&#xa;, qdz_name&#xa;, zdz_code&#xa;, zdz_name&#xa;, fcsj&#xa;, jhlc&#xa;, bc_type &#xa;, bcs&#xa;, fcno&#xa;, xl_dir&#xa;, isfb&#xa;from bsth_c_s_ttinfo_detail t left join &#xa;bsth_c_s_gbi g on t.lp &#x3d; g.id &#xa;where &#xa;g.xl &#x3d; &#x3f; and&#xa;t.ttinfo &#x3d; &#x3f; &#xa;order by g.lp_no asc, t.bcs asc</sql> 3967 + <sql>select &#xa;t.id as id&#xa;, concat&#x28;g.id, &#x27;_&#x27;, g.lp_name&#x29; as lp&#xa;, g.xl as xl&#xa;, qdz_code&#xa;, qdz_name&#xa;, zdz_code&#xa;, zdz_name&#xa;, fcsj&#xa;, jhlc&#xa;, bc_type &#xa;, bcs&#xa;, fcno&#xa;, xl_dir&#xa;, isfb&#xa;, ists&#xa;from bsth_c_s_ttinfo_detail t left join &#xa;bsth_c_s_gbi g on t.lp &#x3d; g.id &#xa;where &#xa;g.xl &#x3d; &#x3f; and&#xa;t.ttinfo &#x3d; &#x3f; &#xa;order by g.lp_no asc, t.bcs asc</sql>
3968 <limit>0</limit> 3968 <limit>0</limit>
3969 <lookup>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</lookup> 3969 <lookup>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</lookup>
3970 <execute_each_row>N</execute_each_row> 3970 <execute_each_row>N</execute_each_row>
src/main/resources/static/pages/report/oil/oilListMonth.html
@@ -242,7 +242,9 @@ @@ -242,7 +242,9 @@
242 } 242 }
243 var line = $("#line").val(); 243 var line = $("#line").val();
244 var date = $("#date").val(); 244 var date = $("#date").val();
245 - $get('/ylb/oilListMonth', {line:line,date:date,type:'export'}, function(result){ 245 + var gsdm = $("#gsdm").val();
  246 + var fgsdm = $("#fgsdm").val();
  247 + $get('/ylb/oilListMonth', {line:line,date:date,gsdm:gsdm,fgsdm,fgsdm,type:'export'}, function(result){
246 window.open("/downloadFile/download?fileName=月存油报表"+moment(date).format("YYYYMMDD")); 248 window.open("/downloadFile/download?fileName=月存油报表"+moment(date).format("YYYYMMDD"));
247 }); 249 });
248 }); 250 });
src/main/resources/static/pages/scheduleApp/module/basicInfo/busInfoManage/index.html
@@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
27 <span class="caption-subject bold uppercase">车辆信息表</span> 27 <span class="caption-subject bold uppercase">车辆信息表</span>
28 </div> 28 </div>
29 <div class="actions"> 29 <div class="actions">
30 - <a href="javascirpt:" class="btn btn-circle blue" ng-click="ctrl.goForm()"> 30 + <a href="javascript:" class="btn btn-circle blue" ng-click="ctrl.goForm()">
31 <i class="fa fa-plus"></i> 31 <i class="fa fa-plus"></i>
32 添加车辆信息 32 添加车辆信息
33 </a> 33 </a>
src/main/resources/static/pages/scheduleApp/module/basicInfo/deviceInfoManage/index.html
@@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
27 <span class="caption-subject bold uppercase">设备信息表</span> 27 <span class="caption-subject bold uppercase">设备信息表</span>
28 </div> 28 </div>
29 <div class="actions"> 29 <div class="actions">
30 - <a href="javascirpt:" class="btn btn-circle blue" ng-click="ctrl.goForm()"> 30 + <a href="javascript:" class="btn btn-circle blue" ng-click="ctrl.goForm()">
31 <i class="fa fa-plus"></i> 31 <i class="fa fa-plus"></i>
32 添加设备信息 32 添加设备信息
33 </a> 33 </a>
src/main/resources/static/pages/scheduleApp/module/basicInfo/employeeInfoManage/index.html
@@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
27 <span class="caption-subject bold uppercase">人员信息表</span> 27 <span class="caption-subject bold uppercase">人员信息表</span>
28 </div> 28 </div>
29 <div class="actions"> 29 <div class="actions">
30 - <a href="javascirpt:" class="btn btn-circle blue" ng-click="ctrl.goForm()"> 30 + <a href="javascript:" class="btn btn-circle blue" ng-click="ctrl.goForm()">
31 <i class="fa fa-plus"></i> 31 <i class="fa fa-plus"></i>
32 添加人员信息 32 添加人员信息
33 </a> 33 </a>
src/main/resources/static/pages/scheduleApp/module/basicInfo/employeeInfoManage/list.html
@@ -55,20 +55,18 @@ @@ -55,20 +55,18 @@
55 </sa-Select5> 55 </sa-Select5>
56 </td> 56 </td>
57 <td> 57 <td>
58 - <div>  
59 - <sa-Select5 name="gz"  
60 - model="ctrl.searchCondition()"  
61 - cmaps="{'posts_eq': 'code'}"  
62 - dcname="posts_eq"  
63 - icname="code"  
64 - dsparams="{{ {type: 'dic', param: 'gzType' } | json }}"  
65 - iterobjname="item"  
66 - iterobjexp="item.name"  
67 - searchph="请输拼音..."  
68 - searchexp="this.name"  
69 - >  
70 - </sa-Select5>  
71 - </div> 58 + <sa-Select5 name="gz"
  59 + model="ctrl.searchCondition()"
  60 + cmaps="{'posts_eq': 'code'}"
  61 + dcname="posts_eq"
  62 + icname="code"
  63 + dsparams="{{ {type: 'dic', param: 'gzType' } | json }}"
  64 + iterobjname="item"
  65 + iterobjexp="item.name"
  66 + searchph="请输拼音..."
  67 + searchexp="this.name"
  68 + >
  69 + </sa-Select5>
72 </td> 70 </td>
73 <td> 71 <td>
74 <div> 72 <div>
src/main/resources/static/pages/scheduleApp/module/common/dts2/ttinfotable/saTimeTable.js
@@ -20,6 +20,7 @@ angular.module(&#39;ScheduleApp&#39;).factory( @@ -20,6 +20,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(
20 this.fcsj = detailInfo && detailInfo.fcsj; // 发车时间 20 this.fcsj = detailInfo && detailInfo.fcsj; // 发车时间
21 this.bc_type = detailInfo && detailInfo.bc_type; // 班次类型 21 this.bc_type = detailInfo && detailInfo.bc_type; // 班次类型
22 this.xldir = detailInfo && detailInfo.xldir; // 线路上下行 22 this.xldir = detailInfo && detailInfo.xldir; // 线路上下行
  23 + this.ists = detailInfo && detailInfo.ists; // 是否停驶
23 this.isfb = detailInfo && detailInfo.isfb; // 是否分班 24 this.isfb = detailInfo && detailInfo.isfb; // 是否分班
24 this.qdzCode = detailInfo && detailInfo.qdzCode; // 起点站Code 25 this.qdzCode = detailInfo && detailInfo.qdzCode; // 起点站Code
25 this.zdzCode = detailInfo && detailInfo.zdzCode; // 终点站Code 26 this.zdzCode = detailInfo && detailInfo.zdzCode; // 终点站Code
src/main/resources/static/pages/scheduleApp/module/common/dts2/ttinfotable/saTimeTableTemplate.html
@@ -220,6 +220,10 @@ @@ -220,6 +220,10 @@
220 background: #e43a45 !important; 220 background: #e43a45 !important;
221 color: white; 221 color: white;
222 } 222 }
  223 + .tt_table dd.ists {
  224 + background: #105383 !important;
  225 + color: white;
  226 + }
223 .tt_table dd.region { 227 .tt_table dd.region {
224 background: #686d7b !important; 228 background: #686d7b !important;
225 color: white; 229 color: white;
@@ -360,6 +364,7 @@ @@ -360,6 +364,7 @@
360 lpName: !cell.ttdid, 364 lpName: !cell.ttdid,
361 error: cell.isValidInfo, 365 error: cell.isValidInfo,
362 active: cell.sel, 366 active: cell.sel,
  367 + ists: cell.ists,
363 region: cell.bc_type == 'region', 368 region: cell.bc_type == 'region',
364 isfb: cell.isfb 369 isfb: cell.isfb
365 }"> 370 }">
src/main/resources/static/pages/scheduleApp/module/common/prj-common-directive.js
@@ -3915,6 +3915,7 @@ angular.module(&#39;ScheduleApp&#39;).factory( @@ -3915,6 +3915,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(
3915 this.fcsj = detailInfo && detailInfo.fcsj; // 发车时间 3915 this.fcsj = detailInfo && detailInfo.fcsj; // 发车时间
3916 this.bc_type = detailInfo && detailInfo.bc_type; // 班次类型 3916 this.bc_type = detailInfo && detailInfo.bc_type; // 班次类型
3917 this.xldir = detailInfo && detailInfo.xldir; // 线路上下行 3917 this.xldir = detailInfo && detailInfo.xldir; // 线路上下行
  3918 + this.ists = detailInfo && detailInfo.ists; // 是否停驶
3918 this.isfb = detailInfo && detailInfo.isfb; // 是否分班 3919 this.isfb = detailInfo && detailInfo.isfb; // 是否分班
3919 this.qdzCode = detailInfo && detailInfo.qdzCode; // 起点站Code 3920 this.qdzCode = detailInfo && detailInfo.qdzCode; // 起点站Code
3920 this.zdzCode = detailInfo && detailInfo.zdzCode; // 终点站Code 3921 this.zdzCode = detailInfo && detailInfo.zdzCode; // 终点站Code
src/main/resources/static/pages/scheduleApp/module/common/prj-common-globalservice.js
@@ -537,7 +537,15 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;SchedulePlanInfoManageService_g&#39;, [&#39;$reso @@ -537,7 +537,15 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;SchedulePlanInfoManageService_g&#39;, [&#39;$reso
537 } 537 }
538 }, 538 },
539 get: { 539 get: {
540 - method: 'GET' 540 + method: 'GET',
  541 + transformResponse: function(rs) {
  542 + var dst = angular.fromJson(rs);
  543 + if (dst.status == 'SUCCESS') {
  544 + return dst.data;
  545 + } else {
  546 + return dst;
  547 + }
  548 + }
541 }, 549 },
542 save: { 550 save: {
543 method: 'POST' 551 method: 'POST'
src/main/resources/static/pages/scheduleApp/module/common/prj-common-ui-route-state.js
@@ -772,7 +772,7 @@ ScheduleApp.config([ @@ -772,7 +772,7 @@ ScheduleApp.config([
772 $stateProvider 772 $stateProvider
773 // 排班计划明细管理模块 773 // 排班计划明细管理模块
774 .state("schedulePlanInfoManage", { 774 .state("schedulePlanInfoManage", {
775 - url: '/schedulePlanInfoManage/:spid/:xlname/:ttname/:stime/:etime', 775 + url: '/schedulePlanInfoManage/:spid/:xlid/:xlname/:ttname/:stime/:etime',
776 views: { 776 views: {
777 "": { 777 "": {
778 templateUrl: 'pages/scheduleApp/module/core/schedulePlanManage/info/index_info.html' 778 templateUrl: 'pages/scheduleApp/module/core/schedulePlanManage/info/index_info.html'
@@ -793,6 +793,24 @@ ScheduleApp.config([ @@ -793,6 +793,24 @@ ScheduleApp.config([
793 }); 793 });
794 }] 794 }]
795 } 795 }
  796 + })
  797 +
  798 + .state("schedulePlanInfoManage_edit", { // 时刻表详细信息编辑
  799 + url: '/schedulePlanInfoManage_edit/:spid/:xlid/:xlname/:ttname/:stime/:etime/:spinfoid',
  800 + views: {
  801 + "": {templateUrl: 'pages/scheduleApp/module/core/schedulePlanManage/info/edit.html'}
  802 + },
  803 + resolve: {
  804 + deps: ['$ocLazyLoad', function($ocLazyLoad) {
  805 + return $ocLazyLoad.load({
  806 + name: 'schedulePlanInfoManage_module',
  807 + insertBefore: '#ng_load_plugins_before', // 动态载入模块时放置的位置
  808 + files: [
  809 + "pages/scheduleApp/module/core/schedulePlanManage/info/module.js"
  810 + ]
  811 + });
  812 + }]
  813 + }
796 }); 814 });
797 815
798 } 816 }
src/main/resources/static/pages/scheduleApp/module/core/busConfig/index.html
@@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
27 <span class="caption-subject bold uppercase">配置表</span> 27 <span class="caption-subject bold uppercase">配置表</span>
28 </div> 28 </div>
29 <div class="actions"> 29 <div class="actions">
30 - <a href="javascirpt:" class="btn btn-circle blue" ng-click="ctrl.goForm()"> 30 + <a href="javascript:" class="btn btn-circle blue" ng-click="ctrl.goForm()">
31 <i class="fa fa-plus"></i> 31 <i class="fa fa-plus"></i>
32 添加配置 32 添加配置
33 </a> 33 </a>
src/main/resources/static/pages/scheduleApp/module/core/employeeConfig/index.html
@@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
27 <span class="caption-subject bold uppercase">配置表</span> 27 <span class="caption-subject bold uppercase">配置表</span>
28 </div> 28 </div>
29 <div class="actions"> 29 <div class="actions">
30 - <a href="javascirpt:" class="btn btn-circle blue" ng-click="ctrl.goForm()"> 30 + <a href="javascript:" class="btn btn-circle blue" ng-click="ctrl.goForm()">
31 <i class="fa fa-plus"></i> 31 <i class="fa fa-plus"></i>
32 添加配置 32 添加配置
33 </a> 33 </a>
src/main/resources/static/pages/scheduleApp/module/core/rerunManage/index.html
@@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
27 <span class="caption-subject bold uppercase">套跑信息</span> 27 <span class="caption-subject bold uppercase">套跑信息</span>
28 </div> 28 </div>
29 <div class="actions"> 29 <div class="actions">
30 - <a href="javascirpt:" class="btn btn-circle blue" ng-click="ctrl.goForm()"> 30 + <a href="javascript:" class="btn btn-circle blue" ng-click="ctrl.goForm()">
31 <i class="fa fa-plus"></i> 31 <i class="fa fa-plus"></i>
32 添加套跑 32 添加套跑
33 </a> 33 </a>
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/index.html
@@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
27 <span class="caption-subject bold uppercase">排班计划</span> 27 <span class="caption-subject bold uppercase">排班计划</span>
28 </div> 28 </div>
29 <div class="actions"> 29 <div class="actions">
30 - <a href="javascirpt:" class="btn btn-circle blue" ng-click="ctrl.goForm()"> 30 + <a href="javascript:" class="btn btn-circle blue" ng-click="ctrl.goForm()">
31 <i class="fa fa-plus"></i> 31 <i class="fa fa-plus"></i>
32 生成计划 32 生成计划
33 </a> 33 </a>
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/info/edit.html 0 → 100644
  1 +<div ng-controller="SchedulePlanInfoManageEditCtrl as ctrl">
  2 + <div class="page-head">
  3 + <div class="page-title">
  4 + <h1>排班明细管理</h1>
  5 + </div>
  6 + </div>
  7 +
  8 + <ul class="page-breadcrumb breadcrumb">
  9 + <li>
  10 + <a href="/pages/home.html" data-pjax>首页</a>
  11 + <i class="fa fa-circle"></i>
  12 + </li>
  13 + <li>
  14 + <span class="active">运营计划管理</span>
  15 + <i class="fa fa-circle"></i>
  16 + </li>
  17 + <li>
  18 + <a href="javascript:" ng-click="ctrl.toPlanPage()">排班计划管理</a>
  19 + <i class="fa fa-circle"></i>
  20 + </li>
  21 + <li>
  22 + <a href="javascript:" ng-click="ctrl.toPlanInfoListPage()">排班计划管理</a>
  23 + <i class="fa fa-circle"></i>
  24 + </li>
  25 + <li>
  26 + <span class="active">修改计划班次明细</span>
  27 + </li>
  28 + </ul>
  29 +
  30 + <h1>TODO</h1>
  31 +
  32 +
  33 +
  34 +
  35 +</div>
  36 +
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/info/list_info.html
1 <!-- ui-route busInfoManage.list --> 1 <!-- ui-route busInfoManage.list -->
2 -<div ng-controller="SchedulePlanInfoManageListCtrl as ctrl"> 2 +<div ng-controller="SchedulePlanInfoManageListCtrl as ctrl" >
3 <div style="width: 100%; height: 100%; overflow: auto"> 3 <div style="width: 100%; height: 100%; overflow: auto">
4 <table class="fixTable table table-striped table-bordered table-hover table-checkable order-column"> 4 <table class="fixTable table table-striped table-bordered table-hover table-checkable order-column">
5 <thead> 5 <thead>
6 <tr role="row" class="heading"> 6 <tr role="row" class="heading">
7 <th style="width: 70px;">序号</th> 7 <th style="width: 70px;">序号</th>
8 - <th style="width: 80px;">线路</th> 8 + <th style="width: 80px;">操作</th>
9 <th style="width: 150px;">日期</th> 9 <th style="width: 150px;">日期</th>
10 - <th style="width: 50px;">路牌</th>  
11 - <th style="width: 100px;">车辆</th>  
12 - <th style="width: 120px;">驾驶员(工号)</th> 10 + <th style="width: 100px;">路牌</th>
  11 + <th style="width: 80px;">车辆</th>
  12 + <th style="width: 140px;">行车人员</th>
13 <!--<th style="width: 120px;">售票员(工号)</th>--> 13 <!--<th style="width: 120px;">售票员(工号)</th>-->
14 <th style="width: 80px;">班次类型</th> 14 <th style="width: 80px;">班次类型</th>
15 <th style="width: 80px;">发车时间</th> 15 <th style="width: 80px;">发车时间</th>
16 - <th style="width: 80px;">上下行</th> 16 + <th style="width: 70px;">上下行</th>
17 <th style="width: 80px;">起点站</th> 17 <th style="width: 80px;">起点站</th>
18 <th style="width: 80px;">终点站</th> 18 <th style="width: 80px;">终点站</th>
19 <th style="width: 60px">备注</th> 19 <th style="width: 60px">备注</th>
20 <th style="width: 100%">时刻表</th> 20 <th style="width: 100%">时刻表</th>
21 - <th style="width: 90px;">修改人</th>  
22 - <th style="width: 90px;">修改时间</th> 21 + <th style="width: 80px;">修改人</th>
  22 + <th style="width: 80px;">修改时间</th>
23 23
24 <!-- TODO:还有其他的 --> 24 <!-- TODO:还有其他的 -->
25 25
@@ -32,6 +32,7 @@ @@ -32,6 +32,7 @@
32 <input type="text" class="form-control input-sm" 32 <input type="text" class="form-control input-sm"
33 name="scheduleDate" placeholder="选择日期..." 33 name="scheduleDate" placeholder="选择日期..."
34 uib-datepicker-popup="yyyy-MM-dd" 34 uib-datepicker-popup="yyyy-MM-dd"
  35 + datepicker-append-to-body="true"
35 is-open="ctrl.scheduleDate" 36 is-open="ctrl.scheduleDate"
36 ng-model="ctrl.searchCondition()['scheduleDate_eq']" readonly/> 37 ng-model="ctrl.searchCondition()['scheduleDate_eq']" readonly/>
37 <span class="input-group-btn"> 38 <span class="input-group-btn">
@@ -41,6 +42,22 @@ @@ -41,6 +42,22 @@
41 </span> 42 </span>
42 </div> 43 </div>
43 </td> 44 </td>
  45 + <td>
  46 + <div style="position: absolute;width: 90px">
  47 + <sa-Select5 name="lp"
  48 + model="ctrl.searchCondition()"
  49 + cmaps="{'lp_eq' : 'id'}"
  50 + dcname="lp_eq"
  51 + icname="id"
  52 + dsparams="{{ {type: 'ajax', param:{'xl.id_eq': xlid, 'type': 'all'}, atype:'lpInfo2' } | json }}"
  53 + iterobjname="item"
  54 + iterobjexp="item.lpName"
  55 + searchph="..."
  56 + searchexp="this.lpName"
  57 + >
  58 + </sa-Select5>
  59 + </div>
  60 + </td>
44 <td></td> 61 <td></td>
45 <td></td> 62 <td></td>
46 <td></td> 63 <td></td>
@@ -67,7 +84,9 @@ @@ -67,7 +84,9 @@
67 </td> 84 </td>
68 85
69 <td> 86 <td>
70 - <span ng-bind="info.xlName"></span> 87 + <a href="javascript:" class="btn btn-info btn-sm" ng-click="ctrl.toEditPage(info.id)" >
  88 + 修改
  89 + </a>
71 </td> 90 </td>
72 <td> 91 <td>
73 <span ng-bind="info.scheduleDate | date: 'yyyy-MM-dd'"></span> 92 <span ng-bind="info.scheduleDate | date: 'yyyy-MM-dd'"></span>
@@ -78,10 +97,40 @@ @@ -78,10 +97,40 @@
78 <td> 97 <td>
79 <span ng-bind="info.clZbh"></span> 98 <span ng-bind="info.clZbh"></span>
80 </td> 99 </td>
81 - <td>  
82 - <span>{{info.jName ? info.jName + '(' + info.jGh + ')' : ''}}</span>  
83 100
  101 + <td class="container-fluid">
  102 + <div class="row">
  103 + <div style="padding-right: 1px;" class="col-md-6">
  104 + <div ng-if="info.jName">
  105 + <a href="#">
  106 + <i class="fa fa-bus" aria-hidden="true"></i>
  107 + {{info.jName}}
  108 + </a>
  109 + </div>
  110 + <div ng-if="info.sName">
  111 + <a href="#">
  112 + <i class="fa fa-ticket" aria-hidden="true"></i>
  113 + {{info.sName}}
  114 + </a>
  115 + </div>
  116 + </div>
  117 + <div style="padding-left: 1px;" class="col-md-6">
  118 + <div ng-if="info.jGh">
  119 + <a href="#" style="padding-left: 5px">
  120 + {{info.jGh}}
  121 + </a>
  122 + </div>
  123 + <div ng-if="info.sGh">
  124 + <a href="#" style="padding-left: 5px">
  125 + {{info.sGh}}
  126 + </a>
  127 + </div>
  128 + </div>
  129 + </div>
84 </td> 130 </td>
  131 +
  132 +
  133 +
85 <!--<td>--> 134 <!--<td>-->
86 <!--<span>{{info.sGh ? info.sName + '(' + info.sGh + ')' : ''}}</span>--> 135 <!--<span>{{info.sGh ? info.sName + '(' + info.sGh + ')' : ''}}</span>-->
87 <!--</td>--> 136 <!--</td>-->
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/info/module.js
@@ -70,6 +70,7 @@ angular.module(&#39;ScheduleApp&#39;).controller( @@ -70,6 +70,7 @@ angular.module(&#39;ScheduleApp&#39;).controller(
70 function($state, $stateParams, $scope) { 70 function($state, $stateParams, $scope) {
71 var self = this; 71 var self = this;
72 var spid = $stateParams.spid; // 排班规则id 72 var spid = $stateParams.spid; // 排班规则id
  73 + var xlid = $stateParams.xlid; // 线路id
73 var xlname = $stateParams.xlname; // 线路名字 74 var xlname = $stateParams.xlname; // 线路名字
74 var ttname = $stateParams.ttname; // 时刻表名字 75 var ttname = $stateParams.ttname; // 时刻表名字
75 var stime = $stateParams.stime; // 开始时间 76 var stime = $stateParams.stime; // 开始时间
@@ -77,6 +78,7 @@ angular.module(&#39;ScheduleApp&#39;).controller( @@ -77,6 +78,7 @@ angular.module(&#39;ScheduleApp&#39;).controller(
77 78
78 $scope.spid = spid; 79 $scope.spid = spid;
79 $scope.xlname = xlname; 80 $scope.xlname = xlname;
  81 + $scope.xlid = xlid;
80 $scope.ttname = ttname; 82 $scope.ttname = ttname;
81 $scope.stime = stime; 83 $scope.stime = stime;
82 $scope.etime = etime; 84 $scope.etime = etime;
@@ -96,10 +98,15 @@ angular.module(&#39;ScheduleApp&#39;).controller( @@ -96,10 +98,15 @@ angular.module(&#39;ScheduleApp&#39;).controller(
96 'SchedulePlanInfoManageListCtrl', 98 'SchedulePlanInfoManageListCtrl',
97 [ 99 [
98 'SchedulePlanInfoManageService', 100 'SchedulePlanInfoManageService',
  101 + '$stateParams',
99 '$scope', 102 '$scope',
100 - function(service, $scope) { 103 + '$state',
  104 + function(service, $stateParams, $scope, $state) {
101 var self = this; 105 var self = this;
102 106
  107 + // 线路id
  108 + self.xlid = $stateParams.xlid;
  109 +
103 // 日期 日期控件开关 110 // 日期 日期控件开关
104 self.scheduleDate = false; 111 self.scheduleDate = false;
105 self.scheduleDate_open = function() { 112 self.scheduleDate_open = function() {
@@ -135,9 +142,22 @@ angular.module(&#39;ScheduleApp&#39;).controller( @@ -135,9 +142,22 @@ angular.module(&#39;ScheduleApp&#39;).controller(
135 142
136 self.doPage(); 143 self.doPage();
137 144
  145 + self.toEditPage = function(spinfoid) {
  146 + $state.go("schedulePlanInfoManage_edit", {
  147 + spid : $stateParams.spid,
  148 + xlid : $stateParams.xlid,
  149 + xlname: $stateParams.xlname,
  150 + ttname: $stateParams.ttname,
  151 + stime: $stateParams.stime,
  152 + etime: $stateParams.etime,
  153 + spinfoid: spinfoid
  154 + });
  155 + };
  156 +
138 $scope.$watch( 157 $scope.$watch(
139 function() { 158 function() {
140 - return self.searchCondition()['scheduleDate_eq']; 159 + //return self.searchCondition()['scheduleDate_eq'];
  160 + return self.searchCondition();
141 }, 161 },
142 function(newValue, oldValue) { 162 function(newValue, oldValue) {
143 if (newValue == undefined && oldValue == undefined) { 163 if (newValue == undefined && oldValue == undefined) {
@@ -145,13 +165,61 @@ angular.module(&#39;ScheduleApp&#39;).controller( @@ -145,13 +165,61 @@ angular.module(&#39;ScheduleApp&#39;).controller(
145 } else { 165 } else {
146 self.doPage(); 166 self.doPage();
147 } 167 }
148 - } 168 + },
  169 + true
149 ); 170 );
150 171
151 } 172 }
152 ] 173 ]
153 ); 174 );
154 175
  176 +// edit.html
  177 +angular.module("ScheduleApp").controller(
  178 + 'SchedulePlanInfoManageEditCtrl',
  179 + [
  180 + 'SchedulePlanInfoManageService',
  181 + '$stateParams',
  182 + '$state',
  183 + function(service, $stateParams, $state) {
  184 + var self = this;
  185 + var SchedulePlanInfo = service.getQueryClass();
  186 +
  187 + // 获取id
  188 + var spinfoid = $stateParams.spinfoid;
  189 +
  190 + // 欲保存的busInfo信息,绑定
  191 + self.schedulePlanInfoForSave = new SchedulePlanInfo;
  192 +
  193 + self.toPlanPage = function() {
  194 + $state.go("schedulePlanManage");
  195 + };
  196 + self.toPlanInfoListPage = function() {
  197 + $state.go("schedulePlanInfoManage", $stateParams);
  198 + };
  199 +
  200 + // 获取数据
  201 + SchedulePlanInfo.get({id: spinfoid}, function(value) {
  202 + self.schedulePlanInfoForSave = value;
  203 +
  204 + // TODO
  205 + });
  206 +
  207 + // 提交方法
  208 + self.submit = function() {
  209 + // 保存或者更新
  210 + self.schedulePlanInfoForSave.$save(function() {
  211 + self.toPlanInfoListPage();
  212 + });
  213 + };
  214 + // 取消方法
  215 + self.cancel = function() {
  216 + self.toPlanInfoListPage();
  217 + };
  218 +
  219 +
  220 + }
  221 + ]
  222 +);
155 223
156 224
157 225
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/info/route.js
@@ -11,7 +11,7 @@ ScheduleApp.config([ @@ -11,7 +11,7 @@ ScheduleApp.config([
11 $stateProvider 11 $stateProvider
12 // 排班计划明细管理模块 12 // 排班计划明细管理模块
13 .state("schedulePlanInfoManage", { 13 .state("schedulePlanInfoManage", {
14 - url: '/schedulePlanInfoManage/:spid/:xlname/:ttname/:stime/:etime', 14 + url: '/schedulePlanInfoManage/:spid/:xlid/:xlname/:ttname/:stime/:etime',
15 views: { 15 views: {
16 "": { 16 "": {
17 templateUrl: 'pages/scheduleApp/module/core/schedulePlanManage/info/index_info.html' 17 templateUrl: 'pages/scheduleApp/module/core/schedulePlanManage/info/index_info.html'
@@ -32,6 +32,24 @@ ScheduleApp.config([ @@ -32,6 +32,24 @@ ScheduleApp.config([
32 }); 32 });
33 }] 33 }]
34 } 34 }
  35 + })
  36 +
  37 + .state("schedulePlanInfoManage_edit", { // 时刻表详细信息编辑
  38 + url: '/schedulePlanInfoManage_edit/:spid/:xlid/:xlname/:ttname/:stime/:etime/:spinfoid',
  39 + views: {
  40 + "": {templateUrl: 'pages/scheduleApp/module/core/schedulePlanManage/info/edit.html'}
  41 + },
  42 + resolve: {
  43 + deps: ['$ocLazyLoad', function($ocLazyLoad) {
  44 + return $ocLazyLoad.load({
  45 + name: 'schedulePlanInfoManage_module',
  46 + insertBefore: '#ng_load_plugins_before', // 动态载入模块时放置的位置
  47 + files: [
  48 + "pages/scheduleApp/module/core/schedulePlanManage/info/module.js"
  49 + ]
  50 + });
  51 + }]
  52 + }
35 }); 53 });
36 54
37 } 55 }
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/list.html
@@ -132,7 +132,7 @@ @@ -132,7 +132,7 @@
132 <td> 132 <td>
133 <!--<a href="details.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 详细 </a>--> 133 <!--<a href="details.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 详细 </a>-->
134 <!--<a href="edit.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 修改 </a>--> 134 <!--<a href="edit.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 修改 </a>-->
135 - <a ui-sref="schedulePlanInfoManage({spid : info.id, xlname : info.xl.name, ttname : info.ttInfoNames, stime : info.scheduleFromTime, etime : info.scheduleToTime})" 135 + <a ui-sref="schedulePlanInfoManage({spid : info.id, xlid: info.xl.id, xlname : info.xl.name, ttname : info.ttInfoNames, stime : info.scheduleFromTime, etime : info.scheduleToTime})"
136 class="btn btn-info btn-sm"> 明细 </a> 136 class="btn btn-info btn-sm"> 明细 </a>
137 <a sweetalert 137 <a sweetalert
138 sweet-options="{title: '是否删除排班计划?',text: '线路:' + info.xl.name + '</br>开始时间:' + ctrl.toDateStr(info.scheduleFromTime) + '</br>结束时间:' + ctrl.toDateStr(info.scheduleToTime) + '</br>请谨慎删除!', html: true,type: 'warning',showCancelButton: true,confirmButtonColor: '#DD6B55',confirmButtonText: '是',cancelButtonText: '取消'}" 138 sweet-options="{title: '是否删除排班计划?',text: '线路:' + info.xl.name + '</br>开始时间:' + ctrl.toDateStr(info.scheduleFromTime) + '</br>结束时间:' + ctrl.toDateStr(info.scheduleToTime) + '</br>请谨慎删除!', html: true,type: 'warning',showCancelButton: true,confirmButtonColor: '#DD6B55',confirmButtonText: '是',cancelButtonText: '取消'}"
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/service.js
@@ -81,7 +81,15 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;SchedulePlanInfoManageService_g&#39;, [&#39;$reso @@ -81,7 +81,15 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;SchedulePlanInfoManageService_g&#39;, [&#39;$reso
81 } 81 }
82 }, 82 },
83 get: { 83 get: {
84 - method: 'GET' 84 + method: 'GET',
  85 + transformResponse: function(rs) {
  86 + var dst = angular.fromJson(rs);
  87 + if (dst.status == 'SUCCESS') {
  88 + return dst.data;
  89 + } else {
  90 + return dst;
  91 + }
  92 + }
85 }, 93 },
86 save: { 94 save: {
87 method: 'POST' 95 method: 'POST'
src/main/resources/static/pages/scheduleApp/module/core/scheduleRuleManage/index.html
@@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
27 <span class="caption-subject bold uppercase">排班规则</span> 27 <span class="caption-subject bold uppercase">排班规则</span>
28 </div> 28 </div>
29 <div class="actions"> 29 <div class="actions">
30 - <a href="javascirpt:" class="btn btn-circle blue" ng-click="ctrl.goForm()"> 30 + <a href="javascript:" class="btn btn-circle blue" ng-click="ctrl.goForm()">
31 <i class="fa fa-plus"></i> 31 <i class="fa fa-plus"></i>
32 添加规则 32 添加规则
33 </a> 33 </a>
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/detailedit/edit3.html
@@ -36,6 +36,7 @@ @@ -36,6 +36,7 @@
36 <!--<i class="fa fa-arrow-down" aria-hidden="true"></i>--> 36 <!--<i class="fa fa-arrow-down" aria-hidden="true"></i>-->
37 <!--<span style="padding-right: 10px;">下行班次</span>--> 37 <!--<span style="padding-right: 10px;">下行班次</span>-->
38 <!--<i class="fa fa-circle-o-notch" aria-hidden="true"></i>--> 38 <!--<i class="fa fa-circle-o-notch" aria-hidden="true"></i>-->
  39 + <span style="padding-right: 10px;background: #105383;color: white;text-align: center;">停驶班次</span>
39 <span style="padding-right: 10px;background: #686d7b;color: white;text-align: center;">区间班次</span> 40 <span style="padding-right: 10px;background: #686d7b;color: white;text-align: center;">区间班次</span>
40 <!--<i class="fa fa-adjust" aria-hidden="true"></i>--> 41 <!--<i class="fa fa-adjust" aria-hidden="true"></i>-->
41 <span style="padding-right: 10px;background: #adff00;color: #501a1a;text-align: center;">分班班次</span> 42 <span style="padding-right: 10px;background: #adff00;color: #501a1a;text-align: center;">分班班次</span>
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/index.html
@@ -31,7 +31,7 @@ @@ -31,7 +31,7 @@
31 <!--<i class="fa fa-plus"></i>--> 31 <!--<i class="fa fa-plus"></i>-->
32 <!--测试--> 32 <!--测试-->
33 <!--</a>--> 33 <!--</a>-->
34 - <a href="javascirpt:" class="btn btn-circle blue" ng-click="ctrl.toTtInfoManageForm()"> 34 + <a href="javascript:" class="btn btn-circle blue" ng-click="ctrl.toTtInfoManageForm()">
35 <i class="fa fa-plus"></i> 35 <i class="fa fa-plus"></i>
36 添加时刻表 36 添加时刻表
37 </a> 37 </a>
src/main/resources/static/pages/trafficManage/js/lineStationUploadRecord.js
@@ -13,16 +13,57 @@ @@ -13,16 +13,57 @@
13 */ 13 */
14 14
15 (function(){ 15 (function(){
  16 + var page = 0, initPag;
16 // 关闭左侧栏 17 // 关闭左侧栏
17 if (!$('body').hasClass('page-sidebar-closed')) 18 if (!$('body').hasClass('page-sidebar-closed'))
18 $('.menu-toggler.sidebar-toggler').click(); 19 $('.menu-toggler.sidebar-toggler').click();
19 - // 日期控件  
20 - $('#dateInput').datetimepicker({  
21 - // 日期控件时间格式  
22 - format : 'YYYY-MM-DD',  
23 - // 语言  
24 - locale: 'zh-cn'  
25 - }); 20 +
  21 + $("#dateInput").datetimepicker({
  22 + format : 'YYYY-MM-DD',
  23 + locale : 'zh-cn'
  24 + });
  25 +
  26 + var lines = new Array();
  27 +
  28 + $('#line').select2({
  29 + ajax: {
  30 + url: '/realSchedule/findLine',
  31 + type: 'post',
  32 + dataType: 'json',
  33 + delay: 150,
  34 + data: function(params){
  35 + return{line: params.term};
  36 + },
  37 + processResults: function (data) {
  38 + return {
  39 + results: data
  40 + };
  41 + },
  42 + cache: true
  43 + },
  44 + templateResult: function(repo){
  45 + if (repo.loading) return repo.text;
  46 + var h = '<span>'+repo.text+'</span>';
  47 + return h;
  48 + },
  49 + escapeMarkup: function (markup) { return markup; },
  50 + minimumInputLength: 1,
  51 + templateSelection: function(repo){
  52 + return repo.text;
  53 + },
  54 + language: {
  55 + noResults: function(){
  56 + return '<span style="color:red;font-size: 12px;">没有搜索到线路!</span>';
  57 + },
  58 + inputTooShort : function(e) {
  59 + return '<span style="color:gray;font-size: 12px;"><i class="fa fa-search"></i> 输入线路搜索线路</span>';
  60 + },
  61 + searching : function() {
  62 + return '<span style="color:gray;font-size: 12px;"> 正在搜索线路...</span>';
  63 + }
  64 + }
  65 + });
  66 +
26 // 日期范围输入框限制,绑定按键和粘贴事件 67 // 日期范围输入框限制,绑定按键和粘贴事件
27 $(".dateRange").keyup(function(){ 68 $(".dateRange").keyup(function(){
28 var tmptxt=$(this).val(); 69 var tmptxt=$(this).val();
@@ -48,81 +89,112 @@ @@ -48,81 +89,112 @@
48 if(tmptxt < 0){ 89 if(tmptxt < 0){
49 $(this).val(00); 90 $(this).val(00);
50 } 91 }
51 - }).css("ime-mode", "disabled");  
52 - /**  
53 - * 取得编码-公司map  
54 - * gsmap["5"] = 南汇公司  
55 - * gsmap["5_3"] = 芦潮港分公司  
56 - */  
57 - function getBusMap(){  
58 - // 取得公司信息,替换公司编码  
59 - var gsmap = {};  
60 - $get('/business/all', null, function(array){  
61 - $.each(array, function(i, gs){  
62 - var k = gs.upCode + '_' + gs.businessCode;  
63 - if(gs.upCode === '88'){  
64 - k = gs.businessCode;  
65 - }  
66 - gsmap[k] = gs.businessName;  
67 - });  
68 - });  
69 - return gsmap;  
70 - }  
71 - /**  
72 - * 设置公司自动完成  
73 - */  
74 - var lines = new Array();  
75 - var gsmap = getBusMap();  
76 - // 取得所有线路  
77 - $get('/line/all', null, function(allLine) {  
78 - // 遍历数组  
79 - $.each(allLine, function(i, e) {  
80 - var companyCode = e.company;  
81 - e.company = gsmap[e.company];  
82 - e.brancheCompany = gsmap[companyCode+"_"+e.brancheCompany];  
83 - var line = '{"hex":"' + e.company + '","label":"' + e.name  
84 - + '"}';  
85 - var obj = jQuery.parseJSON(line);  
86 - lines[i] = obj;  
87 - });  
88 - });  
89 - // 给输入框绑定autocomplete事件  
90 - $("input[name='xl.name_eq']").autocompleter({  
91 - highlightMatches : true,  
92 - source : lines,  
93 - template : '{{ label }} <span>({{ hex }})</span>',  
94 - hint : true,  
95 - empty : false,  
96 - limit : 5,  
97 - });  
98 - // 设置autocompleter的宽度和输入框一样  
99 - $(".autocompleter").css("width",  
100 - $("input[name='xl.name_eq']").css("width"));  
101 -  
102 - /**  
103 - * 设置内部编码自动完成  
104 - */  
105 - var cars = new Array();  
106 - // 取得所有车辆  
107 - $get('/cars/all', null, function(allCars) {  
108 - // 遍历数组  
109 - $.each(allCars, function(i, e) {  
110 - var car = '{"hex":"' + e.insideCode + '","label":"' + e.insideCode  
111 - + '"}';  
112 - var obj = jQuery.parseJSON(car);  
113 - cars[i] = obj;  
114 - });  
115 - });  
116 - // 给输入框绑定autocomplete事件  
117 - $("input[name='xl.insideCode_eq']").autocompleter({  
118 - highlightMatches : true,  
119 - source : cars,  
120 - template : '{{ label }}',  
121 - hint : true,  
122 - empty : false,  
123 - limit : 5,  
124 - });  
125 - // 设置autocompleter的宽度和输入框一样  
126 - $(".autocompleter").css("width",  
127 - $("input[name='xl.insideCode_eq']").css("width")); 92 + }).css("ime-mode", "disabled");
  93 +
  94 + // 绑定查询事件
  95 + $("#search").click(searchM);
  96 + // 查询方法
  97 + function searchM(pagination) {
  98 + if($("#dateInput").val() == ""){
  99 + alert("请选择时间");
  100 + return ;
  101 + }
  102 + var params = {};
  103 + // 排序(按方向与序号)
  104 + params['order'] = 'reportDate';
  105 + // 排序方向.
  106 + params['direction'] = 'ASC';
  107 + // 记录当前页数
  108 + params['page'] = page;
  109 + // 弹出正在加载层
  110 + var i = layer.load(2);
  111 + // 取得输入框的值
  112 + var inputs = $(".form-inline input,select");
  113 + // 遍历数组
  114 + $.each(inputs, function(i, element) {
  115 + params[$(element).attr("name")] = $(element).val();
  116 + });
  117 +
  118 + var startDate = params['startDate'];
  119 + var endDate = params['endDate'];
  120 + var reportDate = params['reportDate'];
  121 + if($("#carPlate").val() != ''){
  122 + params['cars.carPlate_eq'] = changeCarPlate($("#carPlate").val());
  123 + }
  124 + if($("#insideCode").val() != ''){
  125 + params['cars.insideCode_eq'] = $("#insideCode").val().toUpperCase();
  126 + }
  127 + // 默认开始时间
  128 + params['reportDate_ge'] = str2datetime(reportDate+" 00:00:00");
  129 + // 默认结束时间
  130 + params['reportDate_le'] = str2datetime(reportDate+" 23:59:59");
  131 +
  132 + // 指定的开始时间
  133 + if(startDate != ''){
  134 + params['reportDate_gt'] = str2datetime(reportDate+" "+ (startDate > 9 ? startDate : "0"+startDate + ":00:00"));
  135 + }
  136 + // 指定的结束时间
  137 + if(endDate != ''){
  138 + params['reportDate_lt'] = str2datetime(reportDate+" "+ (endDate > 9 ? endDate : "0"+endDate + ":59:59"));
  139 + }
  140 + $get('/vehicle_stop', params, function(data) {
  141 + var content = data.content;
  142 + _dateFormat(content);
  143 + var bodyHtm = template('lineStationUploadRecord_list_temp', {
  144 + list : content
  145 + });
  146 + $('#vehicle_stop tbody').html(bodyHtm);
  147 + if(pagination && data.content.length > 0){
  148 + //重新分页
  149 + initPag = true;
  150 + showPagination(data);
  151 + }
  152 + layer.close(i);
  153 + });
  154 + }
  155 +
  156 + /** 分页栏组件 */
  157 + function showPagination(data){
  158 + // 分页组件
  159 + $('#pagination').jqPaginator({
  160 + // 总页数
  161 + totalPages: data.totalPages,
  162 + // 中间显示页数
  163 + visiblePages: 6,
  164 + // 当前页
  165 + currentPage: page + 1,
  166 + first: '<li class="first"><a href="javascript:void(0);">首页<\/a><\/li>',
  167 + prev: '<li class="prev"><a href="javascript:void(0);">上一页<\/a><\/li>',
  168 + next: '<li class="next"><a href="javascript:void(0);">下一页<\/a><\/li>',
  169 + last: '<li class="last"><a href="javascript:void(0);">尾页<\/a><\/li>',
  170 + page: '<li class="page"><a href="javascript:void(0);">{{page}}<\/a><\/li>',
  171 + onPageChange: function (num, type) {
  172 + if(initPag){
  173 + initPag = false;
  174 + return;
  175 + }
  176 + page = num - 1;
  177 + searchM(false);
  178 + }
  179 + });
  180 + }
  181 +
  182 + //转换时间格式
  183 + function _dateFormat(list) {
  184 + var fs = 'YYYY-MM-DD HH:mm:ss';
  185 + $.each(list, function(i, obj) {
  186 + obj.reportDate = moment(obj.reportDate).format(fs);
  187 + });
  188 + }
  189 +
  190 + // 时间字符串转成时间戳
  191 + function str2datetime(stringTime){
  192 + return Date.parse(new Date(stringTime));
  193 + }
  194 +
  195 + // 时间字符串转成时间戳
  196 + function changeCarPlate(carPlate){
  197 + var tmp = "沪" + carPlate.substr(0, 1) + "-" + carPlate.substr(1, carPlate.length);
  198 + return tmp.toUpperCase();;
  199 + }
128 })(); 200 })();
129 \ No newline at end of file 201 \ No newline at end of file
src/main/resources/static/pages/trafficManage/lineStationUploadRecord.html
@@ -8,30 +8,40 @@ @@ -8,30 +8,40 @@
8 </ul> 8 </ul>
9 <div class="tab_line"> 9 <div class="tab_line">
10 <div class="col-md-12"> 10 <div class="col-md-12">
11 - <ul class="breadcrumb">  
12 - <li>筛选数据:</li>  
13 - <li>日期:</li>  
14 - <li><input type="text" class="inputCommon dateTime" name="date" id="dateInput" placeholder="日期"></li>  
15 - <li>时间范围:</li>  
16 - <li><input type="text" class="inputCommon dateRange" name="startDate">至  
17 - <input type="text" class="inputCommon dateRange" name="endDate">时</li>  
18 - <li>线路名称:</li>  
19 - <li><input type="text" class="form-control form-filter input-sm"  
20 - name="xl.name_eq" maxlength="40" /></li>  
21 - <li>内部编码:</li>  
22 - <li><input type="text" class="form-control form-filter input-sm"  
23 - name="xl.insideCode_eq" maxlength="40" /></li>  
24 - <li>车牌号:</li>  
25 - <li><input type="text" class="inputCommon inputCarPlate"  
26 - name="xl.carPlate_eq" maxlength="40" /></li>  
27 - <li><a class="btn btn-circle blue" id="search">筛选</a></li>  
28 - </ul> 11 + <form class="form-inline" action="">
  12 + <div class="inLine_block" class="param">
  13 + <span class="item-label" style="width: 80px;">筛选数据:日期:</span>
  14 + <input class="form-control" name="reportDate" type="text" id="dateInput" style="width: 180px;"/>
  15 + </div>
  16 + <div class="inLine_block" style="display: inline-block;margin-left: 15px;">
  17 + <span class="item-label" style="width: 80px;">时间范围:</span>
  18 + <input type="text" name="startDate" class="inputCommon dateRange">至
  19 + <input type="text" name="endDate" class="inputCommon dateRange">时
  20 + </div>
  21 + <div class="inLine_block" style="display: inline-block;margin-left: 15px;">
  22 + <span class="item-label" style="width: 80px;">线路名称:</span>
  23 + <select class="form-control" name="line.id_eq" id="line" style="width: 150px;"></select>
  24 + </div>
  25 + <div class="inLine_block" style="display: inline-block;margin-left: 15px;">
  26 + <span class="item-label" style="width: 80px;">内部编码:</span>
  27 + <input type="text" name="cars.insideCode_eq" id="insideCode" style="width: 120px;" maxlength="40"/>
  28 + </div>
  29 + <div class="inLine_block" style="display: inline-block;margin-left: 15px;">
  30 + <span class="item-label" style="width: 80px;">车牌号:</span>
  31 + <input type="text" name="cars.carPlate_eq" id="carPlate" style="width: 120px;" maxlength="40"/>
  32 + <span style="color: red;width: 80px;">(沪D-12345 '沪'和'-'去掉)</span>
  33 + </div>
  34 + <div class="form-group" style="display: inline-block;margin-left: 15px;">
  35 + <a class="btn btn-circle blue" id="search">筛选</a>
  36 + </div>
  37 + </form>
29 </div> 38 </div>
30 <div class="col-md-12 panel-wrap"> 39 <div class="col-md-12 panel-wrap">
31 <div class="_panel"> 40 <div class="_panel">
32 <div class="table-container"> 41 <div class="table-container">
33 <table 42 <table
34 - class="table table-striped table-bordered table-advance pb-table head"> 43 + class="table table-striped table-bordered table-advance pb-table head"
  44 + id="vehicle_stop">
35 <thead> 45 <thead>
36 <tr> 46 <tr>
37 <th>序号</th> 47 <th>序号</th>
@@ -59,53 +69,127 @@ @@ -59,53 +69,127 @@
59 </div> 69 </div>
60 </div> 70 </div>
61 </div> 71 </div>
62 -<script id="lineStationRecord_list_temp" type="text/html"> 72 +<script id="lineStationUploadRecord_list_temp" type="text/html">
63 {{each list as obj i}} 73 {{each list as obj i}}
64 <tr> 74 <tr>
65 <td class="seq" style="vertical-align: middle;"> 75 <td class="seq" style="vertical-align: middle;">
66 {{i+1}} 76 {{i+1}}
67 </td> 77 </td>
68 <td> 78 <td>
69 - {{obj.name}} 79 + {{if obj.line.company == '55'}}
  80 + 上南公司
  81 + {{else if obj.line.company == '22'}}
  82 + 金高公司
  83 + {{else if obj.line.company == '05'}}
  84 + 杨高公司
  85 + {{else if obj.line.company == '26'}}
  86 + 南汇公司
  87 + {{else if obj.line.company == '77'}}
  88 + 闵行公司
  89 + {{/if}}
70 </td> 90 </td>
71 - <td class="ttInfoId">  
72 - {{obj.company}} 91 + <td>
  92 + {{if obj.line.company == '55'}}
  93 +
  94 + {{if obj.line.brancheCompany == '1'}}
  95 + 上南二分公司
  96 + {{else if obj.line.brancheCompany == '2'}}
  97 + 上南三分公司
  98 + {{else if obj.line.brancheCompany == '3'}}
  99 + 上南六分公司
  100 + {{else if obj.line.brancheCompany == '4'}}
  101 + 上南一分公司
  102 + {{/if}}
  103 +
  104 + {{else if obj.line.company == '22'}}
  105 +
  106 + {{if obj.line.brancheCompany == '1'}}
  107 + 四分公司
  108 + {{else if obj.line.brancheCompany == '2'}}
  109 + 二分公司
  110 + {{else if obj.line.brancheCompany == '3'}}
  111 + 三分公司
  112 + {{else if obj.line.brancheCompany == '5'}}
  113 + 一分公司
  114 + {{/if}}
  115 +
  116 + {{else if obj.line.company == '05'}}
  117 +
  118 + {{if obj.line.brancheCompany == '1'}}
  119 + 川沙分公司
  120 + {{else if obj.line.brancheCompany == '2'}}
  121 + 金桥分公司
  122 + {{else if obj.line.brancheCompany == '3'}}
  123 + 芦潮港分公司
  124 + {{else if obj.line.brancheCompany == '5'}}
  125 + 杨高分公司
  126 + {{else if obj.line.brancheCompany == '6'}}
  127 + 周浦分公司
  128 + {{/if}}
  129 +
  130 + {{else if obj.line.company == '26'}}
  131 +
  132 + {{if obj.line.brancheCompany == '1'}}
  133 + 南汇一分
  134 + {{else if obj.line.brancheCompany == '2'}}
  135 + 南汇二分
  136 + {{else if obj.line.brancheCompany == '3'}}
  137 + 南汇三分
  138 + {{else if obj.line.brancheCompany == '4'}}
  139 + 南汇维修公司
  140 + {{else if obj.line.brancheCompany == '5'}}
  141 + 南汇公司
  142 + {{/if}}
  143 +
  144 + {{/if}}
73 </td> 145 </td>
74 <td> 146 <td>
75 - 147 + {{obj.line.name}}
76 </td> 148 </td>
77 - <td >  
78 - 149 + <td>
  150 + {{obj.line.shanghaiLinecode}}
79 </td> 151 </td>
80 <td> 152 <td>
81 - {{obj.name}} 153 + {{obj.cars.insideCode}}
82 </td> 154 </td>
83 <td> 155 <td>
84 - {{obj.company}} 156 + {{obj.cars.equipmentCode}}
85 </td> 157 </td>
86 <td> 158 <td>
87 - 159 + {{obj.cars.carPlate}}
88 </td> 160 </td>
89 - <td >  
90 - 161 + <td>
  162 + {{obj.stop}}
91 </td> 163 </td>
92 <td> 164 <td>
93 - {{obj.name}} 165 + {{if obj.serviceState == 0}}
  166 + 营运
  167 + {{else if obj.serviceState == 1}}
  168 + 停运
  169 + {{/if}}
94 </td> 170 </td>
95 <td> 171 <td>
96 - {{obj.company}} 172 + {{if obj.upDown == 0}}
  173 + 上行
  174 + {{else if obj.upDown == 1}}
  175 + 下行
  176 + {{/if}}
97 </td> 177 </td>
98 <td> 178 <td>
99 - 179 + {{if obj.inOutStop == 0}}
  180 + 站内
  181 + {{else if obj.inOutStop == 1}}
  182 + 站外
  183 + {{/if}}
100 </td> 184 </td>
101 - <td >  
102 - 185 + <td>
  186 + {{obj.reportDate}}
103 </td> 187 </td>
104 </tr> 188 </tr>
105 {{/each}} 189 {{/each}}
106 {{if list.length == 0}} 190 {{if list.length == 0}}
107 <tr class="muted"> 191 <tr class="muted">
108 - <td colspan=5 style="text-align: center;"><h6>没有找到相关数据</h6></td> 192 + <td colspan=13 style="text-align: center;"><h6>没有找到相关数据</h6></td>
109 </tr> 193 </tr>
110 {{/if}} 194 {{/if}}
111 </script> 195 </script>
src/main/resources/static/real_control_v2/alone_page/home/alone_data_basic.js
1 -/* 基础数据管理模块 */  
2 -  
3 -var gb_data_basic = (function () {  
4 -  
5 - var stationRoutes, lineCode2NameAll, lineInformations, nbbm2deviceMap, device2nbbmMap, allPersonnel, svgAttrs;  
6 - var ep = EventProxy.create("stationRoutes", "lineCode2Name", "lineInformations", "nbbm2deviceId", "all_personnel", "svg_attrs"  
7 - , function (routes, code2Name, informations, nbbm2device, all_personnel, svgAttrMap) {  
8 - stationRoutes = routes;  
9 - lineCode2NameAll = code2Name;  
10 - lineInformations = informations;  
11 - nbbm2deviceMap = nbbm2device;  
12 - device2nbbmMap = gb_common.inverse(nbbm2deviceMap);  
13 - allPersonnel = all_personnel;  
14 - svgAttrs = svgAttrMap;  
15 -  
16 - res_load_ep.emitLater('data-basic');  
17 - });  
18 -  
19 - var storage = window.localStorage;  
20 - //激活的线路  
21 - var activeLines = JSON.parse(storage.getItem('lineControlItems'));  
22 - //lineCode to line object  
23 - var codeToLine = {};  
24 - //lineCode idx string  
25 - var line_idx = (function () {  
26 - var str = '';  
27 - for (var i = 0, item; item = activeLines[i++];) {  
28 - str += (',' + item.lineCode);  
29 - codeToLine[item.lineCode] = item;  
30 - }  
31 - return str.substr(1);  
32 - })();  
33 -  
34 - //站点路由  
35 - gb_common.$get('/stationroute/multiLine', {lineIds: line_idx}, function (rs) {  
36 - var list = rs.list;//JSON.parse(rs.list);  
37 - var routeData = gb_common.groupBy(list, 'lineCode');  
38 - //排序  
39 - for (var lineCode in routeData) {  
40 - routeData[lineCode].sort(stationRouteSort);  
41 - }  
42 - ep.emit('stationRoutes', routeData);  
43 - });  
44 -  
45 - //线路标准信息  
46 - /*gb_common.$get('/lineInformation/line/multi', {lineCodes: line_idx}, function (rs) {  
47 - var informations = {};  
48 - $.each(rs, function () {  
49 - informations[this.line.lineCode] = this;  
50 - delete this['line'];  
51 - });  
52 - ep.emit('lineInformations', informations);  
53 - });*/  
54 - ep.emit('lineInformations', {});  
55 -  
56 - //人员信息  
57 - ep.emit('all_personnel', {});  
58 - /*loadAllPersonnel(function (data) {  
59 - ep.emit('all_personnel', data);  
60 - });  
61 - function loadAllPersonnel(cb) {  
62 - $.get('/personnel/all_py', function (rs) {  
63 - //转换成自动补全组件需要的数据  
64 - var data = [], code;  
65 - for(var i =0, p; p = rs[i++];){  
66 - code = p['workId'].indexOf('-')!=-1?p['workId'].split('-')[1]:p['workId'];  
67 - data.push({  
68 - value: code + '/' + p.name,  
69 - fullChars: p.fullChars.toUpperCase(),  
70 - camelChars: p.camelChars.toUpperCase()  
71 - });  
72 - }  
73 - cb && cb(data);  
74 - });  
75 - }*/  
76 -  
77 - var carparks = {};  
78 - //停车场数据  
79 -/* gb_common.$get('/realMap/carParkSpatialData', {}, function (rs) {  
80 - rs.list.sort(function (a, b) {  
81 - return a.parkName.localeCompare(b.parkName);  
82 - });  
83 - $.each(rs.list, function () {  
84 - carparks[this.parkCode] = this;  
85 - });  
86 - });*/  
87 -  
88 - //车辆数据  
89 - var carsArray;  
90 - /*$.get('/basic/cars?t=' + Math.random(), function (rs) {  
91 - carsArray = rs;  
92 - });*/  
93 -  
94 - var getCarparkByCode = function (code) {  
95 - return carparks[code];  
96 - };  
97 -  
98 - //line code to name  
99 - $.get('/basic/lineCode2Name', function (rs) {  
100 - ep.emit('lineCode2Name', rs);  
101 - });  
102 -  
103 - //nbbm to device id  
104 - $.get('/basic/nbbm2deviceId', function (rs) {  
105 - ep.emit('nbbm2deviceId', rs);  
106 - });  
107 - //nbbm to 车牌号  
108 - var nbbm2PlateMap;  
109 - $.get('/basic/nbbm2PlateNo', function (rs) {  
110 - nbbm2PlateMap = rs;  
111 - });  
112 -  
113 - //模拟图属性数据  
114 - gb_common.$get('/realSchedule/svgAttr', {idx: line_idx}, function (rs) {  
115 - var data = {};  
116 - $.each(rs.list, function () {  
117 - this.hideStations = JSON.parse(this.hideStations);  
118 - this.nicknames = JSON.parse(this.nicknames);  
119 - data[this.lineCode] = this;  
120 - });  
121 - ep.emit('svg_attrs', data);  
122 - });  
123 -  
124 - //站点和停车场历时、公里对照数据  
125 - var stat_park_data;  
126 - /*var load_stat_park_data = function () {  
127 - $.get('/basic/station2ParkData?t='+Math.random(), {idx: line_idx}, function (rs) {  
128 - stat_park_data = rs;  
129 - });  
130 - }  
131 - load_stat_park_data();*/  
132 -  
133 - function findLineByCodes(codeArr) {  
134 - var rs = [];  
135 - $.each(codeArr, function () {  
136 - rs.push(codeToLine[this]);  
137 - });  
138 - return rs;  
139 - }  
140 -  
141 - var findCodeByLinename = function (name) {  
142 - for (var code in lineCode2NameAll) {  
143 - if (name == lineCode2NameAll[code])  
144 - return code;  
145 - }  
146 -  
147 - return null;  
148 - };  
149 -  
150 - var getLineInformation = function (lineCode) {  
151 - return lineInformations[lineCode];  
152 - };  
153 -  
154 - var stationRouteSort = function (a, b) {  
155 - return a.stationRouteCode - b.stationRouteCode;  
156 - };  
157 -  
158 - /**  
159 - * 常用的备注补全列表  
160 - */  
161 - var remarksArray = ['保养', '故障', '肇事', '加油', '维修', '援外', '路阻'  
162 - , '故障(离合器坏)', '故障,(方向盘坏)', '故障(排挡坏)', '故障(门坏)', '故障(雨刮器坏)','故障(刹车坏)', '故障(气打不上)'  
163 - ,'故障(整车无电)', '故障(故障灯常亮)', '故障(警报灯亮)', '故障(玻璃坏)', '故障(反光镜坏)', '故障(发电机坏)', '故障(漏防冻液)'  
164 - , '故障(漏水)','故障(轮胎坏)', '故障(无动力)', '故障(喷机油)', '故障(水温高)', '保养(一级保养)'  
165 - , '保养(二级保养)', '保养(三级保养)', '换车出场', '临加进场', '临加出场'];  
166 - var remarksMapps = [];  
167 - $.each(remarksArray, function (i, t) {  
168 - remarksMapps.push({  
169 - value: t,  
170 - fullChars: pinyin.getFullChars(t).toUpperCase(),  
171 - camelChars: pinyin.getCamelChars(t)  
172 - });  
173 - });  
174 -  
175 - //文件载入完毕  
176 - res_load_ep.emitLater('load_data_basic');  
177 -  
178 - return {  
179 - activeLines: activeLines,  
180 - line_idx: line_idx,  
181 - codeToLine: codeToLine,  
182 - nbbm2deviceMap: function () {  
183 - return nbbm2deviceMap;  
184 - },  
185 - device2nbbmMap: function () {  
186 - return device2nbbmMap;  
187 - },  
188 - getLineInformation: getLineInformation,  
189 - allInformations: function () {  
190 - return lineInformations;  
191 - },  
192 - stationRoutes: function (lineCode) {  
193 - return stationRoutes[lineCode]  
194 - },  
195 - findLineByCodes: findLineByCodes,  
196 - lineCode2NameAll: function () {  
197 - return lineCode2NameAll  
198 - },  
199 - allPersonnel: function () {  
200 - return allPersonnel;  
201 - },  
202 - findCodeByLinename: findCodeByLinename,  
203 - getCarparkByCode: getCarparkByCode,  
204 - getSvgAttr: function (lineCode) {  
205 - return svgAttrs[lineCode];  
206 - },  
207 - setSvgAttr: function (attr) {  
208 - attr.hideStations = JSON.parse(attr.hideStations);  
209 - attr.nicknames = JSON.parse(attr.nicknames);  
210 - svgAttrs[attr.lineCode] = attr;  
211 - },  
212 - //是否是环线  
213 - isLoopLine: function (lineCode) {  
214 - var data = gb_common.groupBy(stationRoutes[lineCode], 'directions');  
215 - //下行只有2个站点  
216 - var len = data[0].length;  
217 - if (len > 0 && data[1].length == 2) {  
218 - var first = data[0][0],  
219 - end = data[0][len - 1];  
220 -  
221 - /*if(first.stationName != end.stationName)  
222 - return false;*/  
223 -  
224 - var fPoint = {latitude: first.station.gLaty, longitude: first.station.gLonx}  
225 - , ePoint = {latitude: end.station.gLaty, longitude: end.station.gLonx};  
226 -  
227 - //并且上行起终点距离200米内  
228 - if (geolib.getDistance(fPoint, ePoint) < 200) {  
229 - return true;  
230 - }  
231 - }  
232 -  
233 - return false;  
234 - },  
235 - //刷新员工信息  
236 - refreshAllPersonnel: function (cb) {  
237 - loadAllPersonnel(function (data) {  
238 - allPersonnel = data;  
239 - cb && cb();  
240 - });  
241 - },  
242 - nbbm2PlateMap: function () {  
243 - return nbbm2PlateMap;  
244 - },  
245 - carsArray: function () {  
246 - return carsArray;  
247 - },  
248 - simpleParksArray: function () {  
249 - var map = {};  
250 - for(var code in carparks)  
251 - map[code] = carparks[code].parkName;  
252 - return map;  
253 - },  
254 - remarksMapps: function () {  
255 - return remarksMapps;  
256 - },  
257 - get_stat_park_data: function () {  
258 - return stat_park_data;  
259 - },  
260 - reload_stat_park_data: function () {  
261 - load_stat_park_data();  
262 - }  
263 - };  
264 -})(); 1 +/* 基础数据管理模块 */
  2 +
  3 +var gb_data_basic = (function () {
  4 +
  5 + var stationRoutes, lineCode2NameAll, lineInformations, nbbm2deviceMap, device2nbbmMap, allPersonnel, svgAttrs;
  6 + var ep = EventProxy.create("stationRoutes", "lineCode2Name", "lineInformations", "nbbm2deviceId", "all_personnel", "svg_attrs"
  7 + , function (routes, code2Name, informations, nbbm2device, all_personnel, svgAttrMap) {
  8 + stationRoutes = routes;
  9 + lineCode2NameAll = code2Name;
  10 + lineInformations = informations;
  11 + nbbm2deviceMap = nbbm2device;
  12 + device2nbbmMap = gb_common.inverse(nbbm2deviceMap);
  13 + allPersonnel = all_personnel;
  14 + svgAttrs = svgAttrMap;
  15 +
  16 + res_load_ep.emitLater('data-basic');
  17 + });
  18 +
  19 + var storage = window.localStorage;
  20 + //激活的线路
  21 + var activeLines = JSON.parse(storage.getItem('lineControlItems'));
  22 + //lineCode to line object
  23 + var codeToLine = {};
  24 + //lineCode idx string
  25 + var line_idx = (function () {
  26 + var str = '';
  27 + for (var i = 0, item; item = activeLines[i++];) {
  28 + str += (',' + item.lineCode);
  29 + codeToLine[item.lineCode] = item;
  30 + }
  31 + return str.substr(1);
  32 + })();
  33 +
  34 + //站点路由
  35 + gb_common.$get('/stationroute/multiLine', {lineIds: line_idx}, function (rs) {
  36 + var list = rs.list;//JSON.parse(rs.list);
  37 + var routeData = gb_common.groupBy(list, 'lineCode');
  38 + //排序
  39 + for (var lineCode in routeData) {
  40 + routeData[lineCode].sort(stationRouteSort);
  41 + }
  42 + ep.emit('stationRoutes', routeData);
  43 + });
  44 +
  45 + //线路标准信息
  46 + /*gb_common.$get('/lineInformation/line/multi', {lineCodes: line_idx}, function (rs) {
  47 + var informations = {};
  48 + $.each(rs, function () {
  49 + informations[this.line.lineCode] = this;
  50 + delete this['line'];
  51 + });
  52 + ep.emit('lineInformations', informations);
  53 + });*/
  54 + ep.emit('lineInformations', {});
  55 +
  56 + //人员信息
  57 + ep.emit('all_personnel', {});
  58 + /*loadAllPersonnel(function (data) {
  59 + ep.emit('all_personnel', data);
  60 + });
  61 + function loadAllPersonnel(cb) {
  62 + $.get('/personnel/all_py', function (rs) {
  63 + //转换成自动补全组件需要的数据
  64 + var data = [], code;
  65 + for(var i =0, p; p = rs[i++];){
  66 + code = p['workId'].indexOf('-')!=-1?p['workId'].split('-')[1]:p['workId'];
  67 + data.push({
  68 + value: code + '/' + p.name,
  69 + fullChars: p.fullChars.toUpperCase(),
  70 + camelChars: p.camelChars.toUpperCase()
  71 + });
  72 + }
  73 + cb && cb(data);
  74 + });
  75 + }*/
  76 +
  77 + var carparks = {};
  78 + //停车场数据
  79 +/* gb_common.$get('/realMap/carParkSpatialData', {}, function (rs) {
  80 + rs.list.sort(function (a, b) {
  81 + return a.parkName.localeCompare(b.parkName);
  82 + });
  83 + $.each(rs.list, function () {
  84 + carparks[this.parkCode] = this;
  85 + });
  86 + });*/
  87 +
  88 + //车辆数据
  89 + var carsArray;
  90 + /*$.get('/basic/cars?t=' + Math.random(), function (rs) {
  91 + carsArray = rs;
  92 + });*/
  93 +
  94 + var getCarparkByCode = function (code) {
  95 + return carparks[code];
  96 + };
  97 +
  98 + //line code to name
  99 + $.get('/basic/lineCode2Name', function (rs) {
  100 + ep.emit('lineCode2Name', rs);
  101 + });
  102 +
  103 + //nbbm to device id
  104 + $.get('/basic/nbbm2deviceId', function (rs) {
  105 + ep.emit('nbbm2deviceId', rs);
  106 + });
  107 + //nbbm to 车牌号
  108 + var nbbm2PlateMap;
  109 + $.get('/basic/nbbm2PlateNo', function (rs) {
  110 + nbbm2PlateMap = rs;
  111 + });
  112 +
  113 + //模拟图属性数据
  114 + gb_common.$get('/realSchedule/svgAttr', {idx: line_idx}, function (rs) {
  115 + var data = {};
  116 + $.each(rs.list, function () {
  117 + this.hideStations = JSON.parse(this.hideStations);
  118 + this.nicknames = JSON.parse(this.nicknames);
  119 + data[this.lineCode] = this;
  120 + });
  121 + ep.emit('svg_attrs', data);
  122 + });
  123 +
  124 + //站点和停车场历时、公里对照数据
  125 + var stat_park_data;
  126 + /*var load_stat_park_data = function () {
  127 + $.get('/basic/station2ParkData?t='+Math.random(), {idx: line_idx}, function (rs) {
  128 + stat_park_data = rs;
  129 + });
  130 + }
  131 + load_stat_park_data();*/
  132 +
  133 + function findLineByCodes(codeArr) {
  134 + var rs = [];
  135 + $.each(codeArr, function () {
  136 + rs.push(codeToLine[this]);
  137 + });
  138 + return rs;
  139 + }
  140 +
  141 + var findCodeByLinename = function (name) {
  142 + for (var code in lineCode2NameAll) {
  143 + if (name == lineCode2NameAll[code])
  144 + return code;
  145 + }
  146 +
  147 + return null;
  148 + };
  149 +
  150 + var getLineInformation = function (lineCode) {
  151 + return lineInformations[lineCode];
  152 + };
  153 +
  154 + var stationRouteSort = function (a, b) {
  155 + return a.stationRouteCode - b.stationRouteCode;
  156 + };
  157 +
  158 + /**
  159 + * 常用的备注补全列表
  160 + */
  161 + var remarksArray = ['保养', '故障', '肇事', '加油', '维修', '援外', '路阻'
  162 + , '故障(离合器坏)', '故障,(方向盘坏)', '故障(排挡坏)', '故障(门坏)', '故障(雨刮器坏)','故障(刹车坏)', '故障(气打不上)'
  163 + ,'故障(整车无电)', '故障(故障灯常亮)', '故障(警报灯亮)', '故障(玻璃坏)', '故障(反光镜坏)', '故障(发电机坏)', '故障(漏防冻液)'
  164 + , '故障(漏水)','故障(轮胎坏)', '故障(无动力)', '故障(喷机油)', '故障(水温高)', '保养(一级保养)'
  165 + , '保养(二级保养)', '保养(三级保养)', '换车出场', '临加进场', '临加出场'];
  166 + var remarksMapps = [];
  167 + $.each(remarksArray, function (i, t) {
  168 + remarksMapps.push({
  169 + value: t,
  170 + fullChars: pinyin.getFullChars(t).toUpperCase(),
  171 + camelChars: pinyin.getCamelChars(t)
  172 + });
  173 + });
  174 +
  175 + //文件载入完毕
  176 + res_load_ep.emitLater('load_data_basic');
  177 +
  178 + return {
  179 + activeLines: activeLines,
  180 + line_idx: line_idx,
  181 + codeToLine: codeToLine,
  182 + nbbm2deviceMap: function () {
  183 + return nbbm2deviceMap;
  184 + },
  185 + device2nbbmMap: function () {
  186 + return device2nbbmMap;
  187 + },
  188 + getLineInformation: getLineInformation,
  189 + allInformations: function () {
  190 + return lineInformations;
  191 + },
  192 + stationRoutes: function (lineCode) {
  193 + return stationRoutes[lineCode]
  194 + },
  195 + findLineByCodes: findLineByCodes,
  196 + lineCode2NameAll: function () {
  197 + return lineCode2NameAll
  198 + },
  199 + allPersonnel: function () {
  200 + return allPersonnel;
  201 + },
  202 + findCodeByLinename: findCodeByLinename,
  203 + getCarparkByCode: getCarparkByCode,
  204 + getSvgAttr: function (lineCode) {
  205 + return svgAttrs[lineCode];
  206 + },
  207 + setSvgAttr: function (attr) {
  208 + attr.hideStations = JSON.parse(attr.hideStations);
  209 + attr.nicknames = JSON.parse(attr.nicknames);
  210 + svgAttrs[attr.lineCode] = attr;
  211 + },
  212 + //是否是环线
  213 + isLoopLine: function (lineCode) {
  214 + var data = gb_common.groupBy(stationRoutes[lineCode], 'directions');
  215 + //下行只有2个站点
  216 + var len = data[0].length;
  217 + if (len > 0 && data[1].length == 2) {
  218 + var first = data[0][0],
  219 + end = data[0][len - 1];
  220 +
  221 + /*if(first.stationName != end.stationName)
  222 + return false;*/
  223 +
  224 + var fPoint = {latitude: first.station.gLaty, longitude: first.station.gLonx}
  225 + , ePoint = {latitude: end.station.gLaty, longitude: end.station.gLonx};
  226 +
  227 + //并且上行起终点距离200米内
  228 + if (geolib.getDistance(fPoint, ePoint) < 200) {
  229 + return true;
  230 + }
  231 + }
  232 +
  233 + return false;
  234 + },
  235 + //刷新员工信息
  236 + refreshAllPersonnel: function (cb) {
  237 + loadAllPersonnel(function (data) {
  238 + allPersonnel = data;
  239 + cb && cb();
  240 + });
  241 + },
  242 + nbbm2PlateMap: function () {
  243 + return nbbm2PlateMap;
  244 + },
  245 + carsArray: function () {
  246 + return carsArray;
  247 + },
  248 + simpleParksArray: function () {
  249 + var map = {};
  250 + for(var code in carparks)
  251 + map[code] = carparks[code].parkName;
  252 + return map;
  253 + },
  254 + remarksMapps: function () {
  255 + return remarksMapps;
  256 + },
  257 + get_stat_park_data: function () {
  258 + return stat_park_data;
  259 + },
  260 + reload_stat_park_data: function () {
  261 + load_stat_park_data();
  262 + }
  263 + };
  264 +})();
src/main/resources/static/real_control_v2/alone_page/home/alone_data_gps.js
1 -/* gps 数据管理模块 */  
2 -  
3 -var gb_data_gps = (function () {  
4 -  
5 - //fixed time refresh delay  
6 - var delay = 1000 * 7;  
7 - //deviceId ——> gps  
8 - var realData = {};  
9 - //refresh after callback  
10 - var refreshEventCallbacks = [];  
11 - //register callback function  
12 - var registerCallback = function (cb) {  
13 - if (cb)  
14 - refreshEventCallbacks.push(cb);  
15 - };  
16 -  
17 - var refresh = function (cb) {  
18 - $.ajax({  
19 - url: '/gps/real/line',  
20 - data: {lineCodes: gb_data_basic.line_idx},  
21 - dataType: 'json',  
22 - success: function (rs) {  
23 - //用定时的gps来检测session断开  
24 - if(rs.status && rs.status==407){  
25 - location.href = '/login.html';  
26 - return;  
27 - }  
28 - refreshData(rs);  
29 - cb();  
30 - },  
31 - error: function (xr, t) {  
32 - notify_err('刷新GPS失败,稍后重试' + t);  
33 - cb();  
34 - }  
35 - });  
36 - };  
37 -  
38 - var refreshData = function (rs) {  
39 - var old, addArr = [],  
40 - upArr = [],  
41 - upDownChange = [];  
42 -  
43 - var schArray;  
44 - $.each(rs, function () {  
45 - old = realData[this.deviceId];  
46 - if (old) {  
47 - if (this.timestamp > old.timestamp) {  
48 - if (old.upDown != this.upDown)  
49 - upDownChange.push(this);  
50 - else  
51 - upArr.push(this);  
52 - }  
53 -  
54 - } else  
55 - addArr.push(this);  
56 -  
57 - //班次信息  
58 - /*if (this.schId) {  
59 - schArray = gb_schedule_table.findScheduleByLine(this.lineId);  
60 - if (schArray)  
61 - this.sch = schArray[this.schId];  
62 - }*/  
63 -  
64 - //时间格式化  
65 - this.dateStr = moment(this.timestamp).format('YYYY-MM-DD HH:mm:ss');  
66 - realData[this.deviceId] = this;  
67 - });  
68 -  
69 - //console.log('add array size: ' + addArr.length, 'up array size: ' + upArr.length);  
70 - //CCCallFuncN  
71 - $.each(refreshEventCallbacks, function (i, cb) {  
72 - cb(addArr, upArr, upDownChange);  
73 - });  
74 -  
75 - };  
76 -  
77 - var startFixedTime;  
78 - var fixedTimeRefresh = function () {  
79 - if (startFixedTime)  
80 - return;  
81 - startFixedTime = true;  
82 -  
83 - (function () {  
84 - var f = arguments.callee;  
85 - refresh(function () {  
86 - setTimeout(f, delay);  
87 - });  
88 - })();  
89 - };  
90 -  
91 - var gpsByLineCode = function (lineCode) {  
92 - var rs = [];  
93 - for (var device in realData) {  
94 - if (realData[device].lineId == lineCode)  
95 - rs.push(realData[device]);  
96 - }  
97 - return rs;  
98 - };  
99 -  
100 - var findOne = function (deviceId) {  
101 - return realData[deviceId];  
102 - };  
103 -  
104 - var findGpsByNbbm = function (nbbm) {  
105 - return realData[gb_data_basic.nbbm2deviceMap()[nbbm]];  
106 - };  
107 -  
108 - /**  
109 - * 设备掉线事件  
110 - */  
111 - var deviceOffline = function (gps) {  
112 - $.each(offlineCallbacks, function (i, cb) {  
113 - cb(gps);  
114 - });  
115 - };  
116 -  
117 - //注册掉线事件回调函数  
118 - var offlineCallbacks = [];  
119 - var registerOfflineCb = function (cb) {  
120 - if (cb)  
121 - offlineCallbacks.push(cb);  
122 - };  
123 -  
124 - return {  
125 - fixedTimeRefresh: fixedTimeRefresh,  
126 - registerCallback: registerCallback,  
127 - allGps: realData,  
128 - gpsByLineCode: gpsByLineCode,  
129 - findOne: findOne,  
130 - findGpsByNbbm: findGpsByNbbm,  
131 - deviceOffline: deviceOffline,  
132 - registerOfflineCb: registerOfflineCb  
133 - };  
134 -})(); 1 +/* gps 数据管理模块 */
  2 +
  3 +var gb_data_gps = (function () {
  4 +
  5 + //fixed time refresh delay
  6 + var delay = 1000 * 7;
  7 + //deviceId ——> gps
  8 + var realData = {};
  9 + //refresh after callback
  10 + var refreshEventCallbacks = [];
  11 + //register callback function
  12 + var registerCallback = function (cb) {
  13 + if (cb)
  14 + refreshEventCallbacks.push(cb);
  15 + };
  16 +
  17 + var refresh = function (cb) {
  18 + $.ajax({
  19 + url: '/gps/real/line',
  20 + data: {lineCodes: gb_data_basic.line_idx},
  21 + dataType: 'json',
  22 + success: function (rs) {
  23 + //用定时的gps来检测session断开
  24 + if(rs.status && rs.status==407){
  25 + location.href = '/login.html';
  26 + return;
  27 + }
  28 + refreshData(rs);
  29 + cb();
  30 + },
  31 + error: function (xr, t) {
  32 + notify_err('刷新GPS失败,稍后重试' + t);
  33 + cb();
  34 + }
  35 + });
  36 + };
  37 +
  38 + var refreshData = function (rs) {
  39 + var old, addArr = [],
  40 + upArr = [],
  41 + upDownChange = [];
  42 +
  43 + var schArray;
  44 + $.each(rs, function () {
  45 + old = realData[this.deviceId];
  46 + if (old) {
  47 + if (this.timestamp > old.timestamp) {
  48 + if (old.upDown != this.upDown)
  49 + upDownChange.push(this);
  50 + else
  51 + upArr.push(this);
  52 + }
  53 +
  54 + } else
  55 + addArr.push(this);
  56 +
  57 + //班次信息
  58 + /*if (this.schId) {
  59 + schArray = gb_schedule_table.findScheduleByLine(this.lineId);
  60 + if (schArray)
  61 + this.sch = schArray[this.schId];
  62 + }*/
  63 +
  64 + //时间格式化
  65 + this.dateStr = moment(this.timestamp).format('YYYY-MM-DD HH:mm:ss');
  66 + realData[this.deviceId] = this;
  67 + });
  68 +
  69 + //console.log('add array size: ' + addArr.length, 'up array size: ' + upArr.length);
  70 + //CCCallFuncN
  71 + $.each(refreshEventCallbacks, function (i, cb) {
  72 + cb(addArr, upArr, upDownChange);
  73 + });
  74 +
  75 + };
  76 +
  77 + var startFixedTime;
  78 + var fixedTimeRefresh = function () {
  79 + if (startFixedTime)
  80 + return;
  81 + startFixedTime = true;
  82 +
  83 + (function () {
  84 + var f = arguments.callee;
  85 + refresh(function () {
  86 + setTimeout(f, delay);
  87 + });
  88 + })();
  89 + };
  90 +
  91 + var gpsByLineCode = function (lineCode) {
  92 + var rs = [];
  93 + for (var device in realData) {
  94 + if (realData[device].lineId == lineCode)
  95 + rs.push(realData[device]);
  96 + }
  97 + return rs;
  98 + };
  99 +
  100 + var findOne = function (deviceId) {
  101 + return realData[deviceId];
  102 + };
  103 +
  104 + var findGpsByNbbm = function (nbbm) {
  105 + return realData[gb_data_basic.nbbm2deviceMap()[nbbm]];
  106 + };
  107 +
  108 + /**
  109 + * 设备掉线事件
  110 + */
  111 + var deviceOffline = function (gps) {
  112 + $.each(offlineCallbacks, function (i, cb) {
  113 + cb(gps);
  114 + });
  115 + };
  116 +
  117 + //注册掉线事件回调函数
  118 + var offlineCallbacks = [];
  119 + var registerOfflineCb = function (cb) {
  120 + if (cb)
  121 + offlineCallbacks.push(cb);
  122 + };
  123 +
  124 + return {
  125 + fixedTimeRefresh: fixedTimeRefresh,
  126 + registerCallback: registerCallback,
  127 + allGps: realData,
  128 + gpsByLineCode: gpsByLineCode,
  129 + findOne: findOne,
  130 + findGpsByNbbm: findGpsByNbbm,
  131 + deviceOffline: deviceOffline,
  132 + registerOfflineCb: registerOfflineCb
  133 + };
  134 +})();
src/main/resources/static/real_control_v2/alone_page/home/home_wrap.html
1 -<!DOCTYPE html>  
2 -<html lang="zh-cn">  
3 -  
4 -<head>  
5 - <meta charset="UTF-8">  
6 - <title>主页模拟图</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/sticky.gradient.min.css" merge="plugins"/>  
14 -  
15 - <!-- main style -->  
16 - <link rel="stylesheet" href="/real_control_v2/css/main.css" />  
17 - <!-- home style -->  
18 - <link rel="stylesheet" href="/real_control_v2/css/home.css" merge="custom_style"/>  
19 -  
20 - <!-- custom table -->  
21 - <link rel="stylesheet" href="/real_control_v2/css/ct_table.css" merge="custom_style"/>  
22 - <!-- jquery contextMenu style -->  
23 - <link rel="stylesheet" href="/real_control_v2/assets/css/jquery.contextMenu.min.css" merge="plugins"/>  
24 - <!-- formvalidation style -->  
25 - <link rel="stylesheet" href="/real_control_v2/assets/plugins/formvalidation/formValidation.min.css" merge="plugins"/>  
26 - <!-- js tree -->  
27 - <link rel="stylesheet" href="/real_control_v2/assets/plugins/jstree/default/style.css" merge="plugins"/>  
28 - <!-- tooltip css-->  
29 - <link rel="stylesheet" href="/real_control_v2/assets/plugins/qtip/jquery.qtip.min.css" merge="plugins"/>  
30 - <link rel="stylesheet" href="/real_control_v2/css/pace.css" merge="plugins"/>  
31 -  
32 - <link rel="stylesheet" href="/real_control_v2/css/modal_extend.css" merge="custom_style"/>  
33 - <!-- perfect-scrollbar style -->  
34 - <link rel="stylesheet" href="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.css" merge="plugins"/>  
35 - <!-- layer 3.0.3 -->  
36 - <link rel="stylesheet" href="/real_control_v2/assets/plugins/layer3.0.3/skin/default/layer.css" merge="plugins"/>  
37 - <link rel="stylesheet" href="/real_control_v2/assets/plugins/layer3.0.3/skin/moon/style.css" merge="plugins"/>  
38 -  
39 -  
40 - <style>  
41 - .main-container{  
42 - height: 100% !important;  
43 - }  
44 -  
45 - #main-tab-content{  
46 - padding: 0 !important;  
47 - }  
48 -  
49 - .home-panel{  
50 -  
51 - }  
52 -  
53 - #home-main-content{  
54 - padding: 0 !important;  
55 - }  
56 -  
57 - #main-tab-content>.home-panel>#home-main-content{  
58 - overflow: inherit !important;  
59 - }  
60 - </style>  
61 -</head>  
62 -  
63 -<body>  
64 -<!--<div class="main-container" style="height: 100%;">  
65 -</div>-->  
66 -<div class="main-container">  
67 - <ul id="main-tab-content">  
68 - <li class="home-panel"></li>  
69 - </ul>  
70 -</div>  
71 -  
72 -  
73 -<!-- 地图相关 -->  
74 -<script src="http://api.map.baidu.com/api?v=2.0&ak=IGGrr4UjwIYzatoCRFKEL8sT"></script>  
75 -<script src="http://api.map.baidu.com/library/TrafficControl/1.4/src/TrafficControl_min.js"></script>  
76 -<script src="/assets/js/baidu//MarkerClusterer.js" merge="plugins"></script>  
77 -<script src="/assets/js/TransGPS.js" merge="plugins"></script>  
78 -<!-- jquery -->  
79 -<script src="/real_control_v2/assets/js/jquery.min.js"></script>  
80 -<!-- jquery actual -->  
81 -<script src="/real_control_v2/assets/js/jquery.actual.min.js" merge="plugins"></script>  
82 -<!-- jquery.serializejson JSON序列化插件 -->  
83 -<script src="/assets/plugins/jquery.serializejson.js" merge="plugins"></script>  
84 -<!-- moment.js 日期处理类库 -->  
85 -<script src="/real_control_v2/assets/plugins/moment/moment.min.js"></script>  
86 -<script src="/real_control_v2/assets/plugins/moment/zh-cn.js"></script>  
87 -  
88 -<!-- flatpickr -->  
89 -<script src="/real_control_v2/assets/plugins/flatpickr/flatpickr.min.js" merge="plugins"></script>  
90 -<script src="/real_control_v2/assets/plugins/flatpickr/l10n/zh.js" merge="plugins"></script>  
91 -  
92 -<!-- perfect-scrollbar -->  
93 -<script src="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.jquery.js" merge="plugins"></script>  
94 -<!-- common js -->  
95 -<script src="/real_control_v2/js/common.js"></script>  
96 -<!-- art-template 模版引擎 -->  
97 -<script src="/assets/plugins/template.js" merge="plugins"></script>  
98 -<!-- d3 -->  
99 -<script src="/assets/js/d3.min.js"></script>  
100 -<!-- EventProxy -->  
101 -<script src="/assets/js/eventproxy.js"></script>  
102 -  
103 -<script>  
104 -  
105 -  
106 - var res_load_ep = EventProxy.create('load_home_layout', 'load_home_line_panel', 'load_data_basic', 'data-basic', function () {  
107 - //加载主页  
108 - gb_home_layout.layout(function () {  
109 - gb_home_line_panel.init(function () {  
110 - //gps自刷新  
111 - gb_data_gps.fixedTimeRefresh();  
112 -  
113 - $('.uk-icon-send-o.home_alone_page').remove();  
114 - });  
115 - });  
116 - });  
117 -  
118 - function connectArr(arr, separator, transFun) {  
119 - var rs = '';  
120 - $.each(arr, function (i, item) {  
121 - if (transFun)  
122 - item = transFun(item);  
123 - rs += (separator + item);  
124 - });  
125 - return rs.substr(separator.length);  
126 - }  
127 -  
128 - var isArray = function (obj) {  
129 - return Object.prototype.toString.call(obj) === '[object Array]';  
130 - };  
131 -  
132 - var gb_form_validation_opts = {  
133 - framework: 'uikit',  
134 - locale: 'zh_CN',  
135 - icon: {  
136 - valid: 'uk-icon-check',  
137 - invalid: 'uk-icon-times',  
138 - validating: 'uk-icon-refresh'  
139 - }  
140 - };  
141 -  
142 -</script>  
143 -  
144 -<!-- uikit core -->  
145 -<script src="/real_control_v2/assets/plugins/uikit-2.27.1/uikit.min.js" merge="uikit_js"></script>  
146 -<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/notify.min.js" merge="uikit_js"></script>  
147 -<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/pagination.min.js" merge="uikit_js"></script>  
148 -<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/tooltip.min.js" merge="uikit_js"></script>  
149 -<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/sticky.min.js" merge="uikit_js"></script>  
150 -  
151 -  
152 -<!-- jquery contextMenu -->  
153 -<script src="/real_control_v2/assets/js/jquery.contextMenu.min.js" merge="plugins"></script>  
154 -<script src="/real_control_v2/assets/js/jquery.ui.position.min.js" merge="plugins"></script>  
155 -<!-- formvalidation- -->  
156 -<script src="/real_control_v2/assets/plugins/formvalidation/formValidation.min.js" merge="plugins"></script>  
157 -<script src="/real_control_v2/assets/plugins/formvalidation/zh_CN.js" merge="plugins"></script>  
158 -<script src="/real_control_v2/assets/plugins/formvalidation/uikit.min.js" merge="plugins"></script>  
159 -<!-- js tree -->  
160 -<script src="/real_control_v2/assets/plugins/jstree/jstree.min.js" merge="plugins"></script>  
161 -<!-- simple pinyin -->  
162 -<script src="/assets/plugins/pinyin.js" merge="plugins"></script>  
163 -<!-- qtip -->  
164 -<script src="/real_control_v2/assets/plugins/qtip/jquery.qtip.min.js" merge="plugins"></script>  
165 -<!-- layer 3.0.3 -->  
166 -<script src="/real_control_v2/assets/plugins/layer3.0.3/layer.js" merge="plugins"></script>  
167 -  
168 -<!-- 数据 -->  
169 -<script src="/real_control_v2/alone_page/home/alone_data_basic.js" merge="custom_js"></script>  
170 -<script src="/real_control_v2/alone_page/home/alone_data_gps.js" merge="custom_js"></script>  
171 -<script src="/real_control_v2/js/data/gps_abnormal.js" merge="custom_js"></script>  
172 -<!-- 线路模拟图 -->  
173 -<script src="/real_control_v2/js/utils/svg_chart.js" merge="custom_js"></script>  
174 -<script src="/real_control_v2/js/utils/svg_data_convert.js" merge="custom_js"></script>  
175 -<script src="/real_control_v2/js/utils/svg_chart_tooltip.js" merge="custom_js"></script>  
176 -<script src="/real_control_v2/js/utils/svg_chart_map.js" merge="custom_js"></script>  
177 -  
178 -<!-- custom table js -->  
179 -<script src="/real_control_v2/js/utils/ct_table.js" merge="custom_js"></script>  
180 -<!-- home js -->  
181 -<script src="/real_control_v2/js/home/layout.js" merge="custom_js"></script>  
182 -<script src="/real_control_v2/js/home/line_panel.js" merge="custom_js"></script>  
183 -<script src="/real_control_v2/js/home/context_menu.js" merge="custom_js"></script>  
184 -  
185 -  
186 -<!-- 模态框扩展 -->  
187 -<script src="/real_control_v2/js/modal_extend.js" merge="custom_js"></script>  
188 -  
189 -</body>  
190 -  
191 -</html> 1 +<!DOCTYPE html>
  2 +<html lang="zh-cn">
  3 +
  4 +<head>
  5 + <meta charset="UTF-8">
  6 + <title>主页模拟图</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/sticky.gradient.min.css" merge="plugins"/>
  14 +
  15 + <!-- main style -->
  16 + <link rel="stylesheet" href="/real_control_v2/css/main.css" />
  17 + <!-- home style -->
  18 + <link rel="stylesheet" href="/real_control_v2/css/home.css" merge="custom_style"/>
  19 +
  20 + <!-- custom table -->
  21 + <link rel="stylesheet" href="/real_control_v2/css/ct_table.css" merge="custom_style"/>
  22 + <!-- jquery contextMenu style -->
  23 + <link rel="stylesheet" href="/real_control_v2/assets/css/jquery.contextMenu.min.css" merge="plugins"/>
  24 + <!-- formvalidation style -->
  25 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/formvalidation/formValidation.min.css" merge="plugins"/>
  26 + <!-- js tree -->
  27 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/jstree/default/style.css" merge="plugins"/>
  28 + <!-- tooltip css-->
  29 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/qtip/jquery.qtip.min.css" merge="plugins"/>
  30 + <link rel="stylesheet" href="/real_control_v2/css/pace.css" merge="plugins"/>
  31 +
  32 + <link rel="stylesheet" href="/real_control_v2/css/modal_extend.css" merge="custom_style"/>
  33 + <!-- perfect-scrollbar style -->
  34 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.css" merge="plugins"/>
  35 + <!-- layer 3.0.3 -->
  36 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/layer3.0.3/skin/default/layer.css" merge="plugins"/>
  37 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/layer3.0.3/skin/moon/style.css" merge="plugins"/>
  38 +
  39 +
  40 + <style>
  41 + .main-container{
  42 + height: 100% !important;
  43 + }
  44 +
  45 + #main-tab-content{
  46 + padding: 0 !important;
  47 + }
  48 +
  49 + .home-panel{
  50 +
  51 + }
  52 +
  53 + #home-main-content{
  54 + padding: 0 !important;
  55 + }
  56 +
  57 + #main-tab-content>.home-panel>#home-main-content{
  58 + overflow: inherit !important;
  59 + }
  60 + </style>
  61 +</head>
  62 +
  63 +<body>
  64 +<!--<div class="main-container" style="height: 100%;">
  65 +</div>-->
  66 +<div class="main-container">
  67 + <ul id="main-tab-content">
  68 + <li class="home-panel"></li>
  69 + </ul>
  70 +</div>
  71 +
  72 +
  73 +<!-- 地图相关 -->
  74 +<script src="http://api.map.baidu.com/api?v=2.0&ak=IGGrr4UjwIYzatoCRFKEL8sT"></script>
  75 +<script src="http://api.map.baidu.com/library/TrafficControl/1.4/src/TrafficControl_min.js"></script>
  76 +<script src="/assets/js/baidu//MarkerClusterer.js" merge="plugins"></script>
  77 +<script src="/assets/js/TransGPS.js" merge="plugins"></script>
  78 +<!-- jquery -->
  79 +<script src="/real_control_v2/assets/js/jquery.min.js"></script>
  80 +<!-- jquery actual -->
  81 +<script src="/real_control_v2/assets/js/jquery.actual.min.js" merge="plugins"></script>
  82 +<!-- jquery.serializejson JSON序列化插件 -->
  83 +<script src="/assets/plugins/jquery.serializejson.js" merge="plugins"></script>
  84 +<!-- moment.js 日期处理类库 -->
  85 +<script src="/real_control_v2/assets/plugins/moment/moment.min.js"></script>
  86 +<script src="/real_control_v2/assets/plugins/moment/zh-cn.js"></script>
  87 +
  88 +<!-- flatpickr -->
  89 +<script src="/real_control_v2/assets/plugins/flatpickr/flatpickr.min.js" merge="plugins"></script>
  90 +<script src="/real_control_v2/assets/plugins/flatpickr/l10n/zh.js" merge="plugins"></script>
  91 +
  92 +<!-- perfect-scrollbar -->
  93 +<script src="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.jquery.js" merge="plugins"></script>
  94 +<!-- common js -->
  95 +<script src="/real_control_v2/js/common.js"></script>
  96 +<!-- art-template 模版引擎 -->
  97 +<script src="/assets/plugins/template.js" merge="plugins"></script>
  98 +<!-- d3 -->
  99 +<script src="/assets/js/d3.min.js"></script>
  100 +<!-- EventProxy -->
  101 +<script src="/assets/js/eventproxy.js"></script>
  102 +
  103 +<script>
  104 +
  105 +
  106 + var res_load_ep = EventProxy.create('load_home_layout', 'load_home_line_panel', 'load_data_basic', 'data-basic', function () {
  107 + //加载主页
  108 + gb_home_layout.layout(function () {
  109 + gb_home_line_panel.init(function () {
  110 + //gps自刷新
  111 + gb_data_gps.fixedTimeRefresh();
  112 +
  113 + $('.uk-icon-send-o.home_alone_page').remove();
  114 + });
  115 + });
  116 + });
  117 +
  118 + function connectArr(arr, separator, transFun) {
  119 + var rs = '';
  120 + $.each(arr, function (i, item) {
  121 + if (transFun)
  122 + item = transFun(item);
  123 + rs += (separator + item);
  124 + });
  125 + return rs.substr(separator.length);
  126 + }
  127 +
  128 + var isArray = function (obj) {
  129 + return Object.prototype.toString.call(obj) === '[object Array]';
  130 + };
  131 +
  132 + var gb_form_validation_opts = {
  133 + framework: 'uikit',
  134 + locale: 'zh_CN',
  135 + icon: {
  136 + valid: 'uk-icon-check',
  137 + invalid: 'uk-icon-times',
  138 + validating: 'uk-icon-refresh'
  139 + }
  140 + };
  141 +
  142 +</script>
  143 +
  144 +<!-- uikit core -->
  145 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/uikit.min.js" merge="uikit_js"></script>
  146 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/notify.min.js" merge="uikit_js"></script>
  147 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/pagination.min.js" merge="uikit_js"></script>
  148 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/tooltip.min.js" merge="uikit_js"></script>
  149 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/sticky.min.js" merge="uikit_js"></script>
  150 +
  151 +
  152 +<!-- jquery contextMenu -->
  153 +<script src="/real_control_v2/assets/js/jquery.contextMenu.min.js" merge="plugins"></script>
  154 +<script src="/real_control_v2/assets/js/jquery.ui.position.min.js" merge="plugins"></script>
  155 +<!-- formvalidation- -->
  156 +<script src="/real_control_v2/assets/plugins/formvalidation/formValidation.min.js" merge="plugins"></script>
  157 +<script src="/real_control_v2/assets/plugins/formvalidation/zh_CN.js" merge="plugins"></script>
  158 +<script src="/real_control_v2/assets/plugins/formvalidation/uikit.min.js" merge="plugins"></script>
  159 +<!-- js tree -->
  160 +<script src="/real_control_v2/assets/plugins/jstree/jstree.min.js" merge="plugins"></script>
  161 +<!-- simple pinyin -->
  162 +<script src="/assets/plugins/pinyin.js" merge="plugins"></script>
  163 +<!-- qtip -->
  164 +<script src="/real_control_v2/assets/plugins/qtip/jquery.qtip.min.js" merge="plugins"></script>
  165 +<!-- layer 3.0.3 -->
  166 +<script src="/real_control_v2/assets/plugins/layer3.0.3/layer.js" merge="plugins"></script>
  167 +
  168 +<!-- 数据 -->
  169 +<script src="/real_control_v2/alone_page/home/alone_data_basic.js" merge="custom_js"></script>
  170 +<script src="/real_control_v2/alone_page/home/alone_data_gps.js" merge="custom_js"></script>
  171 +<script src="/real_control_v2/js/data/gps_abnormal.js" merge="custom_js"></script>
  172 +<!-- 线路模拟图 -->
  173 +<script src="/real_control_v2/js/utils/svg_chart.js" merge="custom_js"></script>
  174 +<script src="/real_control_v2/js/utils/svg_data_convert.js" merge="custom_js"></script>
  175 +<script src="/real_control_v2/js/utils/svg_chart_tooltip.js" merge="custom_js"></script>
  176 +<script src="/real_control_v2/js/utils/svg_chart_map.js" merge="custom_js"></script>
  177 +
  178 +<!-- custom table js -->
  179 +<script src="/real_control_v2/js/utils/ct_table.js" merge="custom_js"></script>
  180 +<!-- home js -->
  181 +<script src="/real_control_v2/js/home/layout.js" merge="custom_js"></script>
  182 +<script src="/real_control_v2/js/home/line_panel.js" merge="custom_js"></script>
  183 +<script src="/real_control_v2/js/home/context_menu.js" merge="custom_js"></script>
  184 +
  185 +
  186 +<!-- 模态框扩展 -->
  187 +<script src="/real_control_v2/js/modal_extend.js" merge="custom_js"></script>
  188 +
  189 +</body>
  190 +
  191 +</html>
src/main/resources/static/real_control_v2/alone_page/map/alone_data_basic.js
1 -/* 基础数据管理模块 */  
2 -  
3 -var gb_data_basic = (function () {  
4 -  
5 - var stationRoutes, lineCode2NameAll, lineInformations, nbbm2deviceMap, device2nbbmMap, allPersonnel, svgAttrs;  
6 - var ep = EventProxy.create("stationRoutes", "lineCode2Name", "lineInformations", "nbbm2deviceId", "all_personnel", "svg_attrs"  
7 - , function (routes, code2Name, informations, nbbm2device, all_personnel, svgAttrMap) {  
8 - stationRoutes = routes;  
9 - lineCode2NameAll = code2Name;  
10 - lineInformations = informations;  
11 - nbbm2deviceMap = nbbm2device;  
12 - device2nbbmMap = gb_common.inverse(nbbm2deviceMap);  
13 - allPersonnel = all_personnel;  
14 - svgAttrs = svgAttrMap;  
15 -  
16 - res_load_ep.emitLater('data-basic');  
17 - });  
18 -  
19 - var storage = window.localStorage;  
20 - //激活的线路  
21 - var activeLines = JSON.parse(storage.getItem('lineControlItems'));  
22 - //lineCode to line object  
23 - var codeToLine = {};  
24 - //lineCode idx string  
25 - var line_idx = (function () {  
26 - var str = '';  
27 - for (var i = 0, item; item = activeLines[i++];) {  
28 - str += (',' + item.lineCode);  
29 - codeToLine[item.lineCode] = item;  
30 - }  
31 - return str.substr(1);  
32 - })();  
33 -  
34 - //站点路由  
35 - gb_common.$get('/stationroute/multiLine', {lineIds: line_idx}, function (rs) {  
36 - var list = rs.list;//JSON.parse(rs.list);  
37 - var routeData = gb_common.groupBy(list, 'lineCode');  
38 - //排序  
39 - for (var lineCode in routeData) {  
40 - routeData[lineCode].sort(stationRouteSort);  
41 - }  
42 - ep.emit('stationRoutes', routeData);  
43 - });  
44 -  
45 - //线路标准信息  
46 - gb_common.$get('/lineInformation/line/multi', {lineCodes: line_idx}, function (rs) {  
47 - var informations = {};  
48 - $.each(rs, function () {  
49 - informations[this.line.lineCode] = this;  
50 - delete this['line'];  
51 - });  
52 - ep.emit('lineInformations', informations);  
53 - });  
54 -  
55 - //人员信息  
56 - loadAllPersonnel(function (data) {  
57 - ep.emit('all_personnel', data);  
58 - });  
59 - function loadAllPersonnel(cb) {  
60 - $.get('/personnel/all_py', function (rs) {  
61 - //转换成自动补全组件需要的数据  
62 - var data = [], code;  
63 - for(var i =0, p; p = rs[i++];){  
64 - code = p['workId'].indexOf('-')!=-1?p['workId'].split('-')[1]:p['workId'];  
65 - data.push({  
66 - value: code + '/' + p.name,  
67 - fullChars: p.fullChars.toUpperCase(),  
68 - camelChars: p.camelChars.toUpperCase()  
69 - });  
70 - }  
71 - cb && cb(data);  
72 - });  
73 - }  
74 -  
75 - var carparks = {};  
76 - //停车场数据  
77 - gb_common.$get('/realMap/carParkSpatialData', {}, function (rs) {  
78 - rs.list.sort(function (a, b) {  
79 - return a.parkName.localeCompare(b.parkName);  
80 - });  
81 - $.each(rs.list, function () {  
82 - carparks[this.parkCode] = this;  
83 - });  
84 - });  
85 -  
86 - //车辆数据  
87 - var carsArray;  
88 - $.get('/basic/cars?t=' + Math.random(), function (rs) {  
89 - carsArray = rs;  
90 - });  
91 -  
92 - var getCarparkByCode = function (code) {  
93 - return carparks[code];  
94 - };  
95 -  
96 - //line code to name  
97 - $.get('/basic/lineCode2Name', function (rs) {  
98 - ep.emit('lineCode2Name', rs);  
99 - });  
100 -  
101 - //nbbm to device id  
102 - $.get('/basic/nbbm2deviceId', function (rs) {  
103 - ep.emit('nbbm2deviceId', rs);  
104 - });  
105 - //nbbm to 车牌号  
106 - var nbbm2PlateMap;  
107 - $.get('/basic/nbbm2PlateNo', function (rs) {  
108 - nbbm2PlateMap = rs;  
109 - });  
110 -  
111 - //模拟图属性数据  
112 - gb_common.$get('/realSchedule/svgAttr', {idx: line_idx}, function (rs) {  
113 - var data = {};  
114 - $.each(rs.list, function () {  
115 - this.hideStations = JSON.parse(this.hideStations);  
116 - this.nicknames = JSON.parse(this.nicknames);  
117 - data[this.lineCode] = this;  
118 - });  
119 - ep.emit('svg_attrs', data);  
120 - });  
121 -  
122 - //站点和停车场历时、公里对照数据  
123 - var stat_park_data;  
124 - var load_stat_park_data = function () {  
125 - $.get('/basic/station2ParkData?t='+Math.random(), {idx: line_idx}, function (rs) {  
126 - stat_park_data = rs;  
127 - });  
128 - }  
129 - load_stat_park_data();  
130 -  
131 - function findLineByCodes(codeArr) {  
132 - var rs = [];  
133 - $.each(codeArr, function () {  
134 - rs.push(codeToLine[this]);  
135 - });  
136 - return rs;  
137 - }  
138 -  
139 - var findCodeByLinename = function (name) {  
140 - for (var code in lineCode2NameAll) {  
141 - if (name == lineCode2NameAll[code])  
142 - return code;  
143 - }  
144 -  
145 - return null;  
146 - };  
147 -  
148 - var getLineInformation = function (lineCode) {  
149 - return lineInformations[lineCode];  
150 - };  
151 -  
152 - var stationRouteSort = function (a, b) {  
153 - return a.stationRouteCode - b.stationRouteCode;  
154 - };  
155 -  
156 - return {  
157 - activeLines: activeLines,  
158 - line_idx: line_idx,  
159 - codeToLine: codeToLine,  
160 - nbbm2deviceMap: function () {  
161 - return nbbm2deviceMap;  
162 - },  
163 - device2nbbmMap: function () {  
164 - return device2nbbmMap;  
165 - },  
166 - getLineInformation: getLineInformation,  
167 - allInformations: function () {  
168 - return lineInformations;  
169 - },  
170 - stationRoutes: function (lineCode) {  
171 - return stationRoutes[lineCode]  
172 - },  
173 - findLineByCodes: findLineByCodes,  
174 - lineCode2NameAll: function () {  
175 - return lineCode2NameAll  
176 - },  
177 - allPersonnel: function () {  
178 - return allPersonnel;  
179 - },  
180 - findCodeByLinename: findCodeByLinename,  
181 - getCarparkByCode: getCarparkByCode,  
182 - getSvgAttr: function (lineCode) {  
183 - return svgAttrs[lineCode];  
184 - },  
185 - setSvgAttr: function (attr) {  
186 - attr.hideStations = JSON.parse(attr.hideStations);  
187 - attr.nicknames = JSON.parse(attr.nicknames);  
188 - svgAttrs[attr.lineCode] = attr;  
189 - },  
190 - //是否是环线  
191 - isLoopLine: function (lineCode) {  
192 - var data = gb_common.groupBy(stationRoutes[lineCode], 'directions');  
193 - //下行只有2个站点  
194 - var len = data[0].length;  
195 - if (len > 0 && data[1].length == 2) {  
196 - var first = data[0][0],  
197 - end = data[0][len - 1];  
198 -  
199 - /*if(first.stationName != end.stationName)  
200 - return false;*/  
201 -  
202 - var fPoint = {latitude: first.station.gLaty, longitude: first.station.gLonx}  
203 - , ePoint = {latitude: end.station.gLaty, longitude: end.station.gLonx};  
204 -  
205 - //并且上行起终点距离200米内  
206 - if (geolib.getDistance(fPoint, ePoint) < 200) {  
207 - return true;  
208 - }  
209 - }  
210 -  
211 - return false;  
212 - },  
213 - //刷新员工信息  
214 - refreshAllPersonnel: function (cb) {  
215 - loadAllPersonnel(function (data) {  
216 - allPersonnel = data;  
217 - cb && cb();  
218 - });  
219 - },  
220 - nbbm2PlateMap: function () {  
221 - return nbbm2PlateMap;  
222 - },  
223 - carsArray: function () {  
224 - return carsArray;  
225 - },  
226 - simpleParksArray: function () {  
227 - var map = {};  
228 - for(var code in carparks)  
229 - map[code] = carparks[code].parkName;  
230 - return map;  
231 - },  
232 - remarksMapps: function () {  
233 - return remarksMapps;  
234 - },  
235 - get_stat_park_data: function () {  
236 - return stat_park_data;  
237 - },  
238 - reload_stat_park_data: function () {  
239 - load_stat_park_data();  
240 - }  
241 - };  
242 -})(); 1 +/* 基础数据管理模块 */
  2 +
  3 +var gb_data_basic = (function () {
  4 +
  5 + var stationRoutes, lineCode2NameAll, lineInformations, nbbm2deviceMap, device2nbbmMap, allPersonnel, svgAttrs;
  6 + var ep = EventProxy.create("stationRoutes", "lineCode2Name", "lineInformations", "nbbm2deviceId", "all_personnel", "svg_attrs"
  7 + , function (routes, code2Name, informations, nbbm2device, all_personnel, svgAttrMap) {
  8 + stationRoutes = routes;
  9 + lineCode2NameAll = code2Name;
  10 + lineInformations = informations;
  11 + nbbm2deviceMap = nbbm2device;
  12 + device2nbbmMap = gb_common.inverse(nbbm2deviceMap);
  13 + allPersonnel = all_personnel;
  14 + svgAttrs = svgAttrMap;
  15 +
  16 + res_load_ep.emitLater('data-basic');
  17 + });
  18 +
  19 + var storage = window.localStorage;
  20 + //激活的线路
  21 + var activeLines = JSON.parse(storage.getItem('lineControlItems'));
  22 + //lineCode to line object
  23 + var codeToLine = {};
  24 + //lineCode idx string
  25 + var line_idx = (function () {
  26 + var str = '';
  27 + for (var i = 0, item; item = activeLines[i++];) {
  28 + str += (',' + item.lineCode);
  29 + codeToLine[item.lineCode] = item;
  30 + }
  31 + return str.substr(1);
  32 + })();
  33 +
  34 + //站点路由
  35 + gb_common.$get('/stationroute/multiLine', {lineIds: line_idx}, function (rs) {
  36 + var list = rs.list;//JSON.parse(rs.list);
  37 + var routeData = gb_common.groupBy(list, 'lineCode');
  38 + //排序
  39 + for (var lineCode in routeData) {
  40 + routeData[lineCode].sort(stationRouteSort);
  41 + }
  42 + ep.emit('stationRoutes', routeData);
  43 + });
  44 +
  45 + //线路标准信息
  46 + gb_common.$get('/lineInformation/line/multi', {lineCodes: line_idx}, function (rs) {
  47 + var informations = {};
  48 + $.each(rs, function () {
  49 + informations[this.line.lineCode] = this;
  50 + delete this['line'];
  51 + });
  52 + ep.emit('lineInformations', informations);
  53 + });
  54 +
  55 + //人员信息
  56 + loadAllPersonnel(function (data) {
  57 + ep.emit('all_personnel', data);
  58 + });
  59 + function loadAllPersonnel(cb) {
  60 + $.get('/personnel/all_py', function (rs) {
  61 + //转换成自动补全组件需要的数据
  62 + var data = [], code;
  63 + for(var i =0, p; p = rs[i++];){
  64 + code = p['workId'].indexOf('-')!=-1?p['workId'].split('-')[1]:p['workId'];
  65 + data.push({
  66 + value: code + '/' + p.name,
  67 + fullChars: p.fullChars.toUpperCase(),
  68 + camelChars: p.camelChars.toUpperCase()
  69 + });
  70 + }
  71 + cb && cb(data);
  72 + });
  73 + }
  74 +
  75 + var carparks = {};
  76 + //停车场数据
  77 + gb_common.$get('/realMap/carParkSpatialData', {}, function (rs) {
  78 + rs.list.sort(function (a, b) {
  79 + return a.parkName.localeCompare(b.parkName);
  80 + });
  81 + $.each(rs.list, function () {
  82 + carparks[this.parkCode] = this;
  83 + });
  84 + });
  85 +
  86 + //车辆数据
  87 + var carsArray;
  88 + $.get('/basic/cars?t=' + Math.random(), function (rs) {
  89 + carsArray = rs;
  90 + });
  91 +
  92 + var getCarparkByCode = function (code) {
  93 + return carparks[code];
  94 + };
  95 +
  96 + //line code to name
  97 + $.get('/basic/lineCode2Name', function (rs) {
  98 + ep.emit('lineCode2Name', rs);
  99 + });
  100 +
  101 + //nbbm to device id
  102 + $.get('/basic/nbbm2deviceId', function (rs) {
  103 + ep.emit('nbbm2deviceId', rs);
  104 + });
  105 + //nbbm to 车牌号
  106 + var nbbm2PlateMap;
  107 + $.get('/basic/nbbm2PlateNo', function (rs) {
  108 + nbbm2PlateMap = rs;
  109 + });
  110 +
  111 + //模拟图属性数据
  112 + gb_common.$get('/realSchedule/svgAttr', {idx: line_idx}, function (rs) {
  113 + var data = {};
  114 + $.each(rs.list, function () {
  115 + this.hideStations = JSON.parse(this.hideStations);
  116 + this.nicknames = JSON.parse(this.nicknames);
  117 + data[this.lineCode] = this;
  118 + });
  119 + ep.emit('svg_attrs', data);
  120 + });
  121 +
  122 + //站点和停车场历时、公里对照数据
  123 + var stat_park_data;
  124 + var load_stat_park_data = function () {
  125 + $.get('/basic/station2ParkData?t='+Math.random(), {idx: line_idx}, function (rs) {
  126 + stat_park_data = rs;
  127 + });
  128 + }
  129 + load_stat_park_data();
  130 +
  131 + function findLineByCodes(codeArr) {
  132 + var rs = [];
  133 + $.each(codeArr, function () {
  134 + rs.push(codeToLine[this]);
  135 + });
  136 + return rs;
  137 + }
  138 +
  139 + var findCodeByLinename = function (name) {
  140 + for (var code in lineCode2NameAll) {
  141 + if (name == lineCode2NameAll[code])
  142 + return code;
  143 + }
  144 +
  145 + return null;
  146 + };
  147 +
  148 + var getLineInformation = function (lineCode) {
  149 + return lineInformations[lineCode];
  150 + };
  151 +
  152 + var stationRouteSort = function (a, b) {
  153 + return a.stationRouteCode - b.stationRouteCode;
  154 + };
  155 +
  156 + return {
  157 + activeLines: activeLines,
  158 + line_idx: line_idx,
  159 + codeToLine: codeToLine,
  160 + nbbm2deviceMap: function () {
  161 + return nbbm2deviceMap;
  162 + },
  163 + device2nbbmMap: function () {
  164 + return device2nbbmMap;
  165 + },
  166 + getLineInformation: getLineInformation,
  167 + allInformations: function () {
  168 + return lineInformations;
  169 + },
  170 + stationRoutes: function (lineCode) {
  171 + return stationRoutes[lineCode]
  172 + },
  173 + findLineByCodes: findLineByCodes,
  174 + lineCode2NameAll: function () {
  175 + return lineCode2NameAll
  176 + },
  177 + allPersonnel: function () {
  178 + return allPersonnel;
  179 + },
  180 + findCodeByLinename: findCodeByLinename,
  181 + getCarparkByCode: getCarparkByCode,
  182 + getSvgAttr: function (lineCode) {
  183 + return svgAttrs[lineCode];
  184 + },
  185 + setSvgAttr: function (attr) {
  186 + attr.hideStations = JSON.parse(attr.hideStations);
  187 + attr.nicknames = JSON.parse(attr.nicknames);
  188 + svgAttrs[attr.lineCode] = attr;
  189 + },
  190 + //是否是环线
  191 + isLoopLine: function (lineCode) {
  192 + var data = gb_common.groupBy(stationRoutes[lineCode], 'directions');
  193 + //下行只有2个站点
  194 + var len = data[0].length;
  195 + if (len > 0 && data[1].length == 2) {
  196 + var first = data[0][0],
  197 + end = data[0][len - 1];
  198 +
  199 + /*if(first.stationName != end.stationName)
  200 + return false;*/
  201 +
  202 + var fPoint = {latitude: first.station.gLaty, longitude: first.station.gLonx}
  203 + , ePoint = {latitude: end.station.gLaty, longitude: end.station.gLonx};
  204 +
  205 + //并且上行起终点距离200米内
  206 + if (geolib.getDistance(fPoint, ePoint) < 200) {
  207 + return true;
  208 + }
  209 + }
  210 +
  211 + return false;
  212 + },
  213 + //刷新员工信息
  214 + refreshAllPersonnel: function (cb) {
  215 + loadAllPersonnel(function (data) {
  216 + allPersonnel = data;
  217 + cb && cb();
  218 + });
  219 + },
  220 + nbbm2PlateMap: function () {
  221 + return nbbm2PlateMap;
  222 + },
  223 + carsArray: function () {
  224 + return carsArray;
  225 + },
  226 + simpleParksArray: function () {
  227 + var map = {};
  228 + for(var code in carparks)
  229 + map[code] = carparks[code].parkName;
  230 + return map;
  231 + },
  232 + remarksMapps: function () {
  233 + return remarksMapps;
  234 + },
  235 + get_stat_park_data: function () {
  236 + return stat_park_data;
  237 + },
  238 + reload_stat_park_data: function () {
  239 + load_stat_park_data();
  240 + }
  241 + };
  242 +})();
src/main/resources/static/real_control_v2/alone_page/map/alone_data_gps.js
1 -/* gps 数据管理模块 */  
2 -  
3 -var gb_data_gps = (function () {  
4 -  
5 - //fixed time refresh delay  
6 - var delay = 1000 * 7;  
7 - //deviceId ——> gps  
8 - var realData = {};  
9 - //refresh after callback  
10 - var refreshEventCallbacks = [];  
11 - //register callback function  
12 - var registerCallback = function (cb) {  
13 - if (cb)  
14 - refreshEventCallbacks.push(cb);  
15 - };  
16 -  
17 - var refresh = function (cb) {  
18 - $.ajax({  
19 - url: '/gps/real/line',  
20 - data: {lineCodes: gb_data_basic.line_idx},  
21 - dataType: 'json',  
22 - success: function (rs) {  
23 - //用定时的gps来检测session断开  
24 - if(rs.status && rs.status==407){  
25 - location.href = '/login.html';  
26 - return;  
27 - }  
28 - refreshData(rs);  
29 - cb();  
30 - },  
31 - error: function (xr, t) {  
32 - notify_err('刷新GPS失败,稍后重试' + t);  
33 - cb();  
34 - }  
35 - });  
36 - };  
37 -  
38 - var refreshData = function (rs) {  
39 - var old, addArr = [],  
40 - upArr = [],  
41 - upDownChange = [];  
42 -  
43 - var schArray;  
44 - $.each(rs, function () {  
45 - old = realData[this.deviceId];  
46 - if (old) {  
47 - if (this.timestamp > old.timestamp) {  
48 - if (old.upDown != this.upDown)  
49 - upDownChange.push(this);  
50 - else  
51 - upArr.push(this);  
52 - }  
53 -  
54 - } else  
55 - addArr.push(this);  
56 -  
57 - /* //班次信息  
58 - if (this.schId) {  
59 - schArray = gb_schedule_table.findScheduleByLine(this.lineId);  
60 - if (schArray)  
61 - this.sch = schArray[this.schId];  
62 - }*/  
63 -  
64 - //时间格式化  
65 - this.dateStr = moment(this.timestamp).format('YYYY-MM-DD HH:mm:ss');  
66 - realData[this.deviceId] = this;  
67 - });  
68 -  
69 - //console.log('add array size: ' + addArr.length, 'up array size: ' + upArr.length);  
70 - //CCCallFuncN  
71 - $.each(refreshEventCallbacks, function (i, cb) {  
72 - cb(addArr, upArr, upDownChange);  
73 - });  
74 -  
75 - };  
76 -  
77 - var startFixedTime;  
78 - var fixedTimeRefresh = function () {  
79 - if (startFixedTime)  
80 - return;  
81 - startFixedTime = true;  
82 -  
83 - (function () {  
84 - var f = arguments.callee;  
85 - refresh(function () {  
86 - setTimeout(f, delay);  
87 - });  
88 - })();  
89 - };  
90 -  
91 - var gpsByLineCode = function (lineCode) {  
92 - var rs = [];  
93 - for (var device in realData) {  
94 - if (realData[device].lineId == lineCode)  
95 - rs.push(realData[device]);  
96 - }  
97 - return rs;  
98 - };  
99 -  
100 - var findOne = function (deviceId) {  
101 - return realData[deviceId];  
102 - };  
103 -  
104 - var findGpsByNbbm = function (nbbm) {  
105 - return realData[gb_data_basic.nbbm2deviceMap()[nbbm]];  
106 - };  
107 -  
108 - /**  
109 - * 设备掉线事件  
110 - */  
111 - var deviceOffline = function (gps) {  
112 - $.each(offlineCallbacks, function (i, cb) {  
113 - cb(gps);  
114 - });  
115 - };  
116 -  
117 - //注册掉线事件回调函数  
118 - var offlineCallbacks = [];  
119 - var registerOfflineCb = function (cb) {  
120 - if (cb)  
121 - offlineCallbacks.push(cb);  
122 - };  
123 -  
124 - return {  
125 - fixedTimeRefresh: fixedTimeRefresh,  
126 - registerCallback: registerCallback,  
127 - allGps: realData,  
128 - gpsByLineCode: gpsByLineCode,  
129 - findOne: findOne,  
130 - findGpsByNbbm: findGpsByNbbm,  
131 - deviceOffline: deviceOffline,  
132 - registerOfflineCb: registerOfflineCb  
133 - };  
134 -})(); 1 +/* gps 数据管理模块 */
  2 +
  3 +var gb_data_gps = (function () {
  4 +
  5 + //fixed time refresh delay
  6 + var delay = 1000 * 7;
  7 + //deviceId ——> gps
  8 + var realData = {};
  9 + //refresh after callback
  10 + var refreshEventCallbacks = [];
  11 + //register callback function
  12 + var registerCallback = function (cb) {
  13 + if (cb)
  14 + refreshEventCallbacks.push(cb);
  15 + };
  16 +
  17 + var refresh = function (cb) {
  18 + $.ajax({
  19 + url: '/gps/real/line',
  20 + data: {lineCodes: gb_data_basic.line_idx},
  21 + dataType: 'json',
  22 + success: function (rs) {
  23 + //用定时的gps来检测session断开
  24 + if(rs.status && rs.status==407){
  25 + location.href = '/login.html';
  26 + return;
  27 + }
  28 + refreshData(rs);
  29 + cb();
  30 + },
  31 + error: function (xr, t) {
  32 + notify_err('刷新GPS失败,稍后重试' + t);
  33 + cb();
  34 + }
  35 + });
  36 + };
  37 +
  38 + var refreshData = function (rs) {
  39 + var old, addArr = [],
  40 + upArr = [],
  41 + upDownChange = [];
  42 +
  43 + var schArray;
  44 + $.each(rs, function () {
  45 + old = realData[this.deviceId];
  46 + if (old) {
  47 + if (this.timestamp > old.timestamp) {
  48 + if (old.upDown != this.upDown)
  49 + upDownChange.push(this);
  50 + else
  51 + upArr.push(this);
  52 + }
  53 +
  54 + } else
  55 + addArr.push(this);
  56 +
  57 + /* //班次信息
  58 + if (this.schId) {
  59 + schArray = gb_schedule_table.findScheduleByLine(this.lineId);
  60 + if (schArray)
  61 + this.sch = schArray[this.schId];
  62 + }*/
  63 +
  64 + //时间格式化
  65 + this.dateStr = moment(this.timestamp).format('YYYY-MM-DD HH:mm:ss');
  66 + realData[this.deviceId] = this;
  67 + });
  68 +
  69 + //console.log('add array size: ' + addArr.length, 'up array size: ' + upArr.length);
  70 + //CCCallFuncN
  71 + $.each(refreshEventCallbacks, function (i, cb) {
  72 + cb(addArr, upArr, upDownChange);
  73 + });
  74 +
  75 + };
  76 +
  77 + var startFixedTime;
  78 + var fixedTimeRefresh = function () {
  79 + if (startFixedTime)
  80 + return;
  81 + startFixedTime = true;
  82 +
  83 + (function () {
  84 + var f = arguments.callee;
  85 + refresh(function () {
  86 + setTimeout(f, delay);
  87 + });
  88 + })();
  89 + };
  90 +
  91 + var gpsByLineCode = function (lineCode) {
  92 + var rs = [];
  93 + for (var device in realData) {
  94 + if (realData[device].lineId == lineCode)
  95 + rs.push(realData[device]);
  96 + }
  97 + return rs;
  98 + };
  99 +
  100 + var findOne = function (deviceId) {
  101 + return realData[deviceId];
  102 + };
  103 +
  104 + var findGpsByNbbm = function (nbbm) {
  105 + return realData[gb_data_basic.nbbm2deviceMap()[nbbm]];
  106 + };
  107 +
  108 + /**
  109 + * 设备掉线事件
  110 + */
  111 + var deviceOffline = function (gps) {
  112 + $.each(offlineCallbacks, function (i, cb) {
  113 + cb(gps);
  114 + });
  115 + };
  116 +
  117 + //注册掉线事件回调函数
  118 + var offlineCallbacks = [];
  119 + var registerOfflineCb = function (cb) {
  120 + if (cb)
  121 + offlineCallbacks.push(cb);
  122 + };
  123 +
  124 + return {
  125 + fixedTimeRefresh: fixedTimeRefresh,
  126 + registerCallback: registerCallback,
  127 + allGps: realData,
  128 + gpsByLineCode: gpsByLineCode,
  129 + findOne: findOne,
  130 + findGpsByNbbm: findGpsByNbbm,
  131 + deviceOffline: deviceOffline,
  132 + registerOfflineCb: registerOfflineCb
  133 + };
  134 +})();
src/main/resources/static/real_control_v2/alone_page/map/alone_wrap.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"  
10 - merge="plugins"/>  
11 - <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/tooltip.gradient.min.css"  
12 - merge="plugins"/>  
13 - <link rel="stylesheet"  
14 - href="/real_control_v2/assets/plugins/uikit-2.27.1/components/autocomplete.gradient.min.css" merge="plugins"/>  
15 - <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/accordion.gradient.min.css"  
16 - merge="plugins"/>  
17 - <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/slidenav.gradient.min.css"  
18 - merge="plugins"/>  
19 - <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/sticky.gradient.min.css"  
20 - merge="plugins"/>  
21 -  
22 - <!-- main style -->  
23 - <link rel="stylesheet" href="/real_control_v2/css/main.css"/>  
24 - <!-- north style -->  
25 - <link rel="stylesheet" href="/real_control_v2/css/north.css" merge="custom_style"/>  
26 - <!-- home style -->  
27 - <link rel="stylesheet" href="/real_control_v2/css/home.css" merge="custom_style"/>  
28 -  
29 - <!-- js tree -->  
30 - <link rel="stylesheet" href="/real_control_v2/assets/plugins/jstree/default/style.css" merge="plugins"/>  
31 -  
32 - <link rel="stylesheet" href="/real_control_v2/css/modal_extend.css" merge="custom_style"/>  
33 - <!-- perfect-scrollbar style -->  
34 - <link rel="stylesheet" href="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.css"  
35 - merge="plugins"/>  
36 - <!-- layer 3.0.3 -->  
37 - <link rel="stylesheet" href="/real_control_v2/assets/plugins/layer3.0.3/skin/default/layer.css" merge="plugins"/>  
38 - <link rel="stylesheet" href="/real_control_v2/assets/plugins/layer3.0.3/skin/moon/style.css" merge="plugins"/>  
39 -  
40 - <!-- flatpickr -->  
41 - <link rel="stylesheet" href="/real_control_v2/assets/plugins/flatpickr/flatpickr.min.css" merge="plugins"/>  
42 - <link rel="stylesheet" href="/real_control_v2/assets/plugins/flatpickr/themes/airbnb.css" merge="plugins"/>  
43 -  
44 - <link rel="stylesheet" href="/real_control_v2/css/ct_table.css" merge="custom_style"/>  
45 -</head>  
46 -  
47 -<body>  
48 -<div class="main-container" style="height: 100%;">  
49 - <span style="position: absolute;left: calc(50% - 35px);top: calc(45% - 35px);">加载中...</span>  
50 -</div>  
51 -  
52 -<!-- 地图相关 -->  
53 -<script src="http://api.map.baidu.com/api?v=2.0&ak=IGGrr4UjwIYzatoCRFKEL8sT"></script>  
54 -<script src="http://api.map.baidu.com/library/TrafficControl/1.4/src/TrafficControl_min.js"></script>  
55 -<script src="/assets/js/baidu//MarkerClusterer.js" merge="plugins"></script>  
56 -<script src="/assets/js/TransGPS.js" merge="plugins"></script>  
57 -<!-- 高德 -->  
58 -<script src="http://webapi.amap.com/maps?v=1.3&key=16cb1c5043847e09ef9edafdd77befda"></script>  
59 -<!-- jquery -->  
60 -<script src="/real_control_v2/assets/js/jquery.min.js"></script>  
61 -<!-- jquery actual -->  
62 -<script src="/real_control_v2/assets/js/jquery.actual.min.js" merge="plugins"></script>  
63 -<!-- moment.js 日期处理类库 -->  
64 -<script src="/real_control_v2/assets/plugins/moment/moment.min.js"></script>  
65 -<script src="/real_control_v2/assets/plugins/moment/zh-cn.js"></script>  
66 -  
67 -<!-- flatpickr -->  
68 -<script src="/real_control_v2/assets/plugins/flatpickr/flatpickr.min.js" merge="plugins"></script>  
69 -<script src="/real_control_v2/assets/plugins/flatpickr/l10n/zh.js" merge="plugins"></script>  
70 -  
71 -<!-- perfect-scrollbar -->  
72 -<script src="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.jquery.js" merge="plugins"></script>  
73 -<!-- common js -->  
74 -<script src="/real_control_v2/js/common.js"></script>  
75 -<!-- art-template 模版引擎 -->  
76 -<script src="/assets/plugins/template.js" merge="plugins"></script>  
77 -<!-- d3 -->  
78 -<script src="/assets/js/d3.min.js"></script>  
79 -<!-- EventProxy -->  
80 -<script src="/assets/js/eventproxy.js"></script>  
81 -<!-- uikit core -->  
82 -<script src="/real_control_v2/assets/plugins/uikit-2.27.1/uikit.min.js" merge="uikit_js"></script>  
83 -<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/notify.min.js" merge="uikit_js"></script>  
84 -<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/tooltip.min.js" merge="uikit_js"></script>  
85 -<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/autocomplete.min.js" merge="uikit_js"></script>  
86 -<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/accordion.min.js" merge="uikit_js"></script>  
87 -<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/sticky.min.js" merge="uikit_js"></script>  
88 -  
89 -<!-- js tree -->  
90 -<script src="/real_control_v2/assets/plugins/jstree/jstree.min.js" merge="plugins"></script>  
91 -<!-- layer 3.0.3 -->  
92 -<script src="/real_control_v2/assets/plugins/layer3.0.3/layer.js" merge="plugins"></script>  
93 -  
94 -<!-- 模态框扩展 -->  
95 -<script src="/real_control_v2/js/modal_extend.js" merge="custom_js"></script>  
96 -  
97 -<script src="/real_control_v2/alone_page/map/alone_data_basic.js" merge="custom_js"></script>  
98 -<script src="/real_control_v2/alone_page/map/alone_data_gps.js" merge="custom_js"></script>  
99 -<script src="/real_control_v2/js/utils/ct_table.js" merge="custom_js"></script>  
100 -<!-- jquery.serializejson JSON序列化插件 -->  
101 -<script src="/assets/plugins/jquery.serializejson.js" merge="uikit_js"></script>  
102 -  
103 -</body>  
104 -<script>  
105 - gb_data_gps.fixedTimeRefresh();  
106 - var res_load_ep = EventProxy.create('data-basic', function () {  
107 -  
108 - //嵌入地图页面  
109 - $('.main-container').load('/real_control_v2/mapmonitor/real.html', function () {  
110 - $('.map-system-msg.flex-left').remove();  
111 - });  
112 - });  
113 -  
114 - var isArray = function (obj) {  
115 - return Object.prototype.toString.call(obj) === '[object Array]';  
116 - };  
117 -</script>  
118 -</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"
  10 + merge="plugins"/>
  11 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/tooltip.gradient.min.css"
  12 + merge="plugins"/>
  13 + <link rel="stylesheet"
  14 + href="/real_control_v2/assets/plugins/uikit-2.27.1/components/autocomplete.gradient.min.css" merge="plugins"/>
  15 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/accordion.gradient.min.css"
  16 + merge="plugins"/>
  17 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/slidenav.gradient.min.css"
  18 + merge="plugins"/>
  19 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/sticky.gradient.min.css"
  20 + merge="plugins"/>
  21 +
  22 + <!-- main style -->
  23 + <link rel="stylesheet" href="/real_control_v2/css/main.css"/>
  24 + <!-- north style -->
  25 + <link rel="stylesheet" href="/real_control_v2/css/north.css" merge="custom_style"/>
  26 + <!-- home style -->
  27 + <link rel="stylesheet" href="/real_control_v2/css/home.css" merge="custom_style"/>
  28 +
  29 + <!-- js tree -->
  30 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/jstree/default/style.css" merge="plugins"/>
  31 +
  32 + <link rel="stylesheet" href="/real_control_v2/css/modal_extend.css" merge="custom_style"/>
  33 + <!-- perfect-scrollbar style -->
  34 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.css"
  35 + merge="plugins"/>
  36 + <!-- layer 3.0.3 -->
  37 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/layer3.0.3/skin/default/layer.css" merge="plugins"/>
  38 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/layer3.0.3/skin/moon/style.css" merge="plugins"/>
  39 +
  40 + <!-- flatpickr -->
  41 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/flatpickr/flatpickr.min.css" merge="plugins"/>
  42 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/flatpickr/themes/airbnb.css" merge="plugins"/>
  43 +
  44 + <link rel="stylesheet" href="/real_control_v2/css/ct_table.css" merge="custom_style"/>
  45 +</head>
  46 +
  47 +<body>
  48 +<div class="main-container" style="height: 100%;">
  49 + <span style="position: absolute;left: calc(50% - 35px);top: calc(45% - 35px);">加载中...</span>
  50 +</div>
  51 +
  52 +<!-- 地图相关 -->
  53 +<script src="http://api.map.baidu.com/api?v=2.0&ak=IGGrr4UjwIYzatoCRFKEL8sT"></script>
  54 +<script src="http://api.map.baidu.com/library/TrafficControl/1.4/src/TrafficControl_min.js"></script>
  55 +<script src="/assets/js/baidu//MarkerClusterer.js" merge="plugins"></script>
  56 +<script src="/assets/js/TransGPS.js" merge="plugins"></script>
  57 +<!-- 高德 -->
  58 +<script src="http://webapi.amap.com/maps?v=1.3&key=16cb1c5043847e09ef9edafdd77befda"></script>
  59 +<!-- jquery -->
  60 +<script src="/real_control_v2/assets/js/jquery.min.js"></script>
  61 +<!-- jquery actual -->
  62 +<script src="/real_control_v2/assets/js/jquery.actual.min.js" merge="plugins"></script>
  63 +<!-- moment.js 日期处理类库 -->
  64 +<script src="/real_control_v2/assets/plugins/moment/moment.min.js"></script>
  65 +<script src="/real_control_v2/assets/plugins/moment/zh-cn.js"></script>
  66 +
  67 +<!-- flatpickr -->
  68 +<script src="/real_control_v2/assets/plugins/flatpickr/flatpickr.min.js" merge="plugins"></script>
  69 +<script src="/real_control_v2/assets/plugins/flatpickr/l10n/zh.js" merge="plugins"></script>
  70 +
  71 +<!-- perfect-scrollbar -->
  72 +<script src="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.jquery.js" merge="plugins"></script>
  73 +<!-- common js -->
  74 +<script src="/real_control_v2/js/common.js"></script>
  75 +<!-- art-template 模版引擎 -->
  76 +<script src="/assets/plugins/template.js" merge="plugins"></script>
  77 +<!-- d3 -->
  78 +<script src="/assets/js/d3.min.js"></script>
  79 +<!-- EventProxy -->
  80 +<script src="/assets/js/eventproxy.js"></script>
  81 +<!-- uikit core -->
  82 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/uikit.min.js" merge="uikit_js"></script>
  83 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/notify.min.js" merge="uikit_js"></script>
  84 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/tooltip.min.js" merge="uikit_js"></script>
  85 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/autocomplete.min.js" merge="uikit_js"></script>
  86 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/accordion.min.js" merge="uikit_js"></script>
  87 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/sticky.min.js" merge="uikit_js"></script>
  88 +
  89 +<!-- js tree -->
  90 +<script src="/real_control_v2/assets/plugins/jstree/jstree.min.js" merge="plugins"></script>
  91 +<!-- layer 3.0.3 -->
  92 +<script src="/real_control_v2/assets/plugins/layer3.0.3/layer.js" merge="plugins"></script>
  93 +
  94 +<!-- 模态框扩展 -->
  95 +<script src="/real_control_v2/js/modal_extend.js" merge="custom_js"></script>
  96 +
  97 +<script src="/real_control_v2/alone_page/map/alone_data_basic.js" merge="custom_js"></script>
  98 +<script src="/real_control_v2/alone_page/map/alone_data_gps.js" merge="custom_js"></script>
  99 +<script src="/real_control_v2/js/utils/ct_table.js" merge="custom_js"></script>
  100 +<!-- jquery.serializejson JSON序列化插件 -->
  101 +<script src="/assets/plugins/jquery.serializejson.js" merge="uikit_js"></script>
  102 +
  103 +</body>
  104 +<script>
  105 + gb_data_gps.fixedTimeRefresh();
  106 + var res_load_ep = EventProxy.create('data-basic', function () {
  107 +
  108 + //嵌入地图页面
  109 + $('.main-container').load('/real_control_v2/mapmonitor/real.html', function () {
  110 + $('.map-system-msg.flex-left').remove();
  111 + });
  112 + });
  113 +
  114 + var isArray = function (obj) {
  115 + return Object.prototype.toString.call(obj) === '[object Array]';
  116 + };
  117 +</script>
  118 +</html>
src/main/resources/static/real_control_v2/js/data/data_line_config.js
1 -/**  
2 - * 线路配置信息  
3 - * @type {{}}  
4 - */  
5 -var gb_data_line_config = (function () {  
6 -  
7 - var lineConfigMap;  
8 -  
9 - var storage = window.localStorage;  
10 - var activeLines = JSON.parse(storage.getItem('lineControlItems'));  
11 - var line_idx = (function () {  
12 - var str = '';  
13 - for (var i = 0, item; item = activeLines[i++];) {  
14 - str += (',' + item.lineCode);  
15 - }  
16 - return str.substr(1);  
17 - })();  
18 -  
19 - gb_common.$get('/lineConfig/findByIdx', {idx: line_idx}, function (rs) {  
20 - lineConfigMap = {};  
21 - $.each(rs.list, function () {  
22 - lineConfigMap[this.line.lineCode] = this;  
23 - });  
24 -  
25 - console.log('lineConfigMap', lineConfigMap);  
26 - });  
27 -  
28 - return {  
29 - get: function (lineCode) {  
30 - return lineConfigMap[lineCode];  
31 - }  
32 - }; 1 +/**
  2 + * 线路配置信息
  3 + * @type {{}}
  4 + */
  5 +var gb_data_line_config = (function () {
  6 +
  7 + var lineConfigMap;
  8 +
  9 + var storage = window.localStorage;
  10 + var activeLines = JSON.parse(storage.getItem('lineControlItems'));
  11 + var line_idx = (function () {
  12 + var str = '';
  13 + for (var i = 0, item; item = activeLines[i++];) {
  14 + str += (',' + item.lineCode);
  15 + }
  16 + return str.substr(1);
  17 + })();
  18 +
  19 + gb_common.$get('/lineConfig/findByIdx', {idx: line_idx}, function (rs) {
  20 + lineConfigMap = {};
  21 + $.each(rs.list, function () {
  22 + lineConfigMap[this.line.lineCode] = this;
  23 + });
  24 +
  25 + console.log('lineConfigMap', lineConfigMap);
  26 + });
  27 +
  28 + return {
  29 + get: function (lineCode) {
  30 + return lineConfigMap[lineCode];
  31 + }
  32 + };
33 })(); 33 })();
34 \ No newline at end of file 34 \ No newline at end of file