Commit 71e29cfe85be96d5b665ca4816047b6ff63a246e

Authored by ljq
1 parent b93c22a4

一件报警加入4中类型、智能调度优化、验收页面的临时加入、语音xx站到xx站新增页面

Showing 31 changed files with 1385 additions and 205 deletions
src/main/java/com/bsth/data/pilot80/PilotReport.java
1 1 package com.bsth.data.pilot80;
2 2  
  3 +import com.alibaba.fastjson.JSON;
3 4 import com.alibaba.fastjson.JSONObject;
4 5 import com.bsth.data.BasicData;
5 6 import com.bsth.data.LineConfigData;
... ... @@ -23,7 +24,10 @@ import org.slf4j.LoggerFactory;
23 24 import org.springframework.beans.factory.annotation.Autowired;
24 25 import org.springframework.stereotype.Component;
25 26  
26   -import java.util.*;
  27 +import java.util.ArrayList;
  28 +import java.util.Collection;
  29 +import java.util.Date;
  30 +import java.util.List;
27 31 import java.util.concurrent.ConcurrentHashMap;
28 32  
29 33 /**
... ... @@ -102,21 +106,11 @@ public class PilotReport {
102 106 }
103 107 break;
104 108 //报警请求
105   - case 0x10:
106   - try {
107   - String url = systemParamService.getValue("url.yjbj")+"dataDockingApi/accident/saveAccident?";
108   - url = url + "accidentTime=" + new Date().getTime() + "&nbbm=" + nbbm;
109   - logger.info("url===="+url);
110   - String res = HttpClientUtils.get(url).toString();
111   - JSONObject jsonObject = JSONObject.parseObject(res);
112   - if ((int) jsonObject.get("code") == 200) {
113   - logger.info("报警请求成功");
114   - }else {
115   - logger.info("报警请求失败");
116   - }
117   - }catch (Exception e){
118   - logger.info("报警请求异常");
119   - }
  109 + case 0x21:
  110 + case 0x22:
  111 + case 0x23:
  112 + case 0x24:
  113 + yjbj(nbbm,d80);
120 114 break;
121 115 }
122 116  
... ... @@ -132,6 +126,38 @@ public class PilotReport {
132 126 }
133 127 }
134 128  
  129 + public void yjbj(String nbbm,D80 d80){
  130 + try {
  131 + ScheduleRealInfo sch = null;
  132 + if (d80.getSchId() == null){
  133 + return;
  134 + }
  135 + if (d80.getData().getStopNo() != null && !d80.getData().getStopNo().equals("")){
  136 + d80.setStationName(BasicData.stationCode2NameMap.get(d80.getData().getStopNo()));
  137 + }
  138 +
  139 + sch = dayOfSchedule.get(d80.getSchId());
  140 + Long nextschid = dayOfSchedule.nextByLp(sch).getId();
  141 + d80.setNextschId(nextschid);
  142 + String url = systemParamService.getValue("url.yjbj")+"dataDockingApi/accident/saveAccident?";
  143 + url = url + "accidentTime=" + new Date().getTime() + "&nbbm=" + nbbm +"&requestCode=" +d80.getData().getRequestCode()
  144 + +"&lineName=" +sch.getXlName()+"&jsy=" +sch.getjGh()+"&jsName=" +sch.getjName()+"&lon=" +d80.getData().getLon()+"&lat="+d80.getData().getLat();
  145 +
  146 + logger.info("url===="+url);
  147 + StringBuilder sb = HttpClientUtils.get(url);
  148 +
  149 +
  150 + JSONObject jsonObject = JSON.parseObject(sb.toString());
  151 + if ((int) jsonObject.get("code") == 200) {
  152 + logger.info("报警请求成功=" + jsonObject.get("msg"));
  153 + }else {
  154 + logger.info("报警请求失败="+ jsonObject.get("msg"));
  155 + }
  156 + }catch (Exception e){
  157 + logger.info("报警请求异常",e);
  158 + }
  159 + }
  160 +
135 161 public void report(DC0_A4 c0a4) {
136 162 String deviceId = c0a4.getData().getDeviceId();
137 163 if (StringUtils.isNotEmpty(deviceId))
... ...
src/main/java/com/bsth/data/zndd/AutomaticSch.java
... ... @@ -29,8 +29,6 @@ import org.springframework.stereotype.Component;
29 29 import java.text.ParseException;
30 30 import java.text.SimpleDateFormat;
31 31 import java.util.*;
32   -import java.util.concurrent.ConcurrentHashMap;
33   -import java.util.concurrent.ConcurrentMap;
34 32 import java.util.regex.Matcher;
35 33 import java.util.regex.Pattern;
36 34  
... ... @@ -62,20 +60,16 @@ public class AutomaticSch {
62 60 @Autowired
63 61 ZnddYuAnService znddYuAnService;
64 62  
65   - Queue<Map> queue = new LinkedList<>();
66   -
67 63 private static SimpleDateFormat sdfHHmm = new SimpleDateFormat("HH:mm");
68 64 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");
69 65  
70 66 private static Comparator<ScheduleRealInfo> cpm = new ScheduleComparator.DFSJ2();
71 67 private Map<String,Long> drivreMap =new HashMap<>(); //自动重发map
72   - // 当日60指令缓存
73   - private ConcurrentMap<Integer, D60> d60Map = new ConcurrentHashMap<>();//d60map
74 68  
75   - String urldkl = "http://10.10.200.202:5580/monitor/api/getMonitorInfoByDay?key=1&solt=1111&t=1&dayStr=2024-10-23"; //大间隔接口
  69 + String urldkl = "http://10.10.200.202:5580/monitor/api/getMonitorInfoByDay?key=1&solt=1111&t=1&dayStr=2024-12-04"; //大间隔接口
76 70  
77 71 //http://10.10.200.201:8083/wxk-prod-api/service-api/lggj/schedule/drByInfo 维修接口
78   -
  72 + String urldkls = "http://10.10.200.140:13089/bsth_passengerflow/klbus/currentInsideNum.do"; //满载接口
79 73 private Map<String,Long> SFMAP = new HashMap<>();
80 74  
81 75 //满载
... ... @@ -84,6 +78,9 @@ public class AutomaticSch {
84 78  
85 79 List<ScheduleRealInfo> sr = dayOfSchedule.findByBcType("W9G-041","normal");
86 80 ts(addStationPeople(sr.get(5), "MZ", 0L));//第二种 设备未离线 出站时间内未出站
  81 +
  82 + String chartStr = JSON.toJSONString(sr.get(5));
  83 + logger.info("满载--"+chartStr);
87 84 }
88 85 catch (Exception e){
89 86 logger.error("满载------------------",e);
... ... @@ -109,10 +106,14 @@ public class AutomaticSch {
109 106 if (k == 0 ){
110 107 if(lg.getlGType() == 0){
111 108 ts(ConvertDJK(lg,sch,"FCJG"));
  109 + String chartStr = JSON.toJSONString(sch);
  110 + logger.info("发车大间隔--"+chartStr);
112 111 }
113 112 }else {
114 113 if(lg.getlGType() != 0){
115 114 ts(ConvertDJK(lg,sch,"DJG"));
  115 + String chartStr = JSON.toJSONString(sch);
  116 + logger.info("行车大间隔--"+chartStr);
116 117 }
117 118 }
118 119  
... ... @@ -122,28 +123,6 @@ public class AutomaticSch {
122 123 logger.error("大间隔推送失败------------------",e);
123 124 }
124 125 }
125   - //发现大客流 -> 大客流情况 ->处置大客流
126   - public void Dkl(){
127   - //推送
128   -
129   - try{
130   - Map m = queue.poll();
131   - if (m != null) {
132   - if (Integer.valueOf(m.get("num").toString()) > 15) {
133   - //超过10的时候 判断为大客流
134   - ts(ConvertDKL(m));
135   - }
136   - }
137   -
138   - ScheduleRealInfo sr = dayOfSchedule.findByNbbm("W8A-027").get(0);
139   - ts(addStationPeople(sr, "DKL", 0L));//大客流
140   -
141   -
142   - }catch (Exception e){
143   - logger.error("大客流推送失败------------------",e);
144   - }
145   -
146   - }
147 126  
148 127 //实发未发检测 -- 车辆GPS掉线的情况下,车辆该出站了
149 128 /**
... ... @@ -336,10 +315,9 @@ public class AutomaticSch {
336 315 for (Map m : dzList){
337 316 if (basicData.nbbmCompanyPlateMap.get(prev.getClZbh()) != null && m.get("terminal").equals(basicData.nbbmCompanyPlateMap.get(prev.getClZbh()).replaceAll("-",""))){
338 317 sch.setRemark(m.get("sj").toString());
339   - Gson gson = new Gson();
340   - String chartStr = gson.toJsonTree(sch).toString();
341   - logger.info("误点--"+chartStr);
342 318 ts(addStationPeople(sch, "WD", 0L));
  319 + String chartStr = JSON.toJSONString(sch);
  320 + logger.info("误点--"+chartStr);
343 321 }
344 322 }
345 323 }
... ...
src/main/java/com/bsth/data/zndd/OutEntrance.java
... ... @@ -23,17 +23,12 @@ import org.springframework.dao.DataAccessException;
23 23 import org.springframework.jdbc.core.JdbcTemplate;
24 24 import org.springframework.scheduling.annotation.Scheduled;
25 25 import org.springframework.web.bind.annotation.*;
26   -import javax.annotation.PostConstruct;
  26 +
27 27 import java.io.*;
28 28 import java.nio.file.Files;
29 29 import java.nio.file.Path;
30 30 import java.nio.file.Paths;
31 31 import java.nio.file.StandardCopyOption;
32   -
33   -import java.io.ByteArrayInputStream;
34   -import java.io.File;
35   -import java.io.FileOutputStream;
36   -import java.io.InputStream;
37 32 import java.text.SimpleDateFormat;
38 33 import java.time.Duration;
39 34 import java.time.LocalDateTime;
... ... @@ -60,9 +55,8 @@ public class OutEntrance {
60 55  
61 56 @Value("${dc.imgurl}")
62 57 private String imgurl; //存储图片地址
63   -
64   - @Value("${dc.profile}")
65   - private String profile; //存储图片地址*/
  58 +
  59 + private String profile = "profile"; //存储图片地址*/
66 60  
67 61 @Value("${baidu.ak}")
68 62 private String ak; //百度api秘钥*/
... ...
src/main/java/com/bsth/data/zndd/ZnddThread.java
... ... @@ -45,11 +45,8 @@ public class ZnddThread extends Thread{
45 45 static Map<String,List> ZNDDTYPEMAP = new HashMap<>(); //已经推送过的检测
46 46  
47 47  
48   - String url = "https://lgapp.bsth.tech:13089/bsth_passengerflow/klbus/currentInsideNum.do"; //车内客流接口
49 48  
50 49  
51   - String urldkl = "http://10.10.200.140:13089/bsth_passengerflow/klbus/currentInsideNum.do"; //大客流接口
52   -
53 50 private static SimpleDateFormat sdfHHmm = new SimpleDateFormat("HH:mm");
54 51 private static SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd");
55 52 private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
... ... @@ -64,7 +61,7 @@ public class ZnddThread extends Thread{
64 61 //automaticSch.mz();
65 62 //automaticSch.dfTz();//大间隔
66 63 for (znddStatus zs : znddStatusList) {
67   - if (zs.getOpenStatus().equals("0")) {
  64 + if (zs.getOpenStatus() != null && zs.getOpenStatus().equals("0")) {
68 65 //预案5个
69 66 if (zs.getType().equals("fcjg")) {
70 67 automaticSch.dfTz(0);
... ... @@ -91,11 +88,6 @@ public class ZnddThread extends Thread{
91 88 automaticSch.dfTz(1);
92 89 logger.info("行车大间隔执行完毕");
93 90 }
94   -
95   - if (zs.getType().equals("dkl")){
96   - automaticSch.Dkl();
97   - logger.info("大客流执行完毕");
98   - }
99 91 if (zs.getType().equals("mz")){
100 92 automaticSch.mz();
101 93 logger.info("满载执行完毕");
... ...
src/main/java/com/bsth/entity/directive/D80.java
... ... @@ -6,6 +6,8 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
6 6 import javax.persistence.*;
7 7 import java.util.Date;
8 8  
  9 +import static javax.persistence.FetchType.LAZY;
  10 +
9 11 /**
10 12 *
11 13 * @ClassName: D80
... ... @@ -47,7 +49,7 @@ public class D80 {
47 49 /**
48 50 * c0 回复
49 51 */
50   - @OneToOne(cascade = CascadeType.ALL, fetch=FetchType.LAZY)
  52 + @OneToOne(cascade = CascadeType.ALL, fetch= LAZY)
51 53 private DC0 c0;
52 54  
53 55 /** 调度员是否确认 */
... ... @@ -78,6 +80,7 @@ public class D80 {
78 80 @JsonIgnore
79 81 private Short requestCode;
80 82  
  83 +
81 84 public Long getSchId() {
82 85 return schId;
83 86 }
... ... @@ -110,6 +113,30 @@ public class D80 {
110 113 this.requestCode = requestCode;
111 114 }
112 115  
  116 + @Transient
  117 + @JsonIgnore
  118 + private String stationName;
  119 + @Transient
  120 + @JsonIgnore
  121 + private Long nextschId;
  122 +
  123 + public Long getNextschId() {
  124 + return nextschId;
  125 + }
  126 +
  127 + public void setNextschId(Long nextschId) {
  128 + this.nextschId = nextschId;
  129 + }
  130 +
  131 + public String getStationName() {
  132 + return stationName;
  133 + }
  134 +
  135 + public void setStationName(String stationName) {
  136 + this.stationName = stationName;
  137 + }
  138 +
  139 +
113 140 @Embeddable
114 141 public static class D80Data {
115 142  
... ... @@ -121,6 +148,9 @@ public class D80 {
121 148 /**
122 149 * 请求代码 0xa1 恢复运营 0xa2 申请调档 0xa3 出场请求 0xa5 进场请求 0xa7 加油请求 0x50 车辆故障 0x70
123 150 * 路阻报告 0x60 事故报告 0x11 扣证纠纷 0x12 报警 0x10 S0S
  151 + * 0x21 单车有人伤 0x22 单车无人伤
  152 + * 0x23 双车有人伤 0x24 双车无人伤
  153 + *
124 154 */
125 155 private Short requestCode;
126 156  
... ... @@ -134,7 +164,48 @@ public class D80 {
134 164 */
135 165 @Transient
136 166 private String nbbm;
137   -
  167 + /**
  168 + * 经度
  169 + */
  170 + @Transient
  171 + @JsonIgnore
  172 + private Float lon;
  173 +
  174 + /**
  175 + * 纬度
  176 + */
  177 + @Transient
  178 + @JsonIgnore
  179 + private Float lat;
  180 + @Transient
  181 + @JsonIgnore
  182 + private String stopNo;
  183 +
  184 +
  185 + public String getStopNo() {
  186 + return stopNo;
  187 + }
  188 +
  189 + public void setStopNo(String stopNo) {
  190 + this.stopNo = stopNo;
  191 + }
  192 +
  193 + public Float getLon() {
  194 + return lon;
  195 + }
  196 +
  197 + public void setLon(Float lon) {
  198 + this.lon = lon;
  199 + }
  200 +
  201 + public Float getLat() {
  202 + return lat;
  203 + }
  204 +
  205 + public void setLat(Float lat) {
  206 + this.lat = lat;
  207 + }
  208 +
138 209 public Short getOperCode2() {
139 210 return operCode2;
140 211 }
... ...
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
1 1 package com.bsth.service.realcontrol.impl;
2 2  
3   -import java.io.*;
4   -import java.lang.reflect.Field;
5   -import java.math.BigDecimal;
6   -import java.net.HttpURLConnection;
7   -import java.net.MalformedURLException;
8   -import java.net.URL;
9   -import java.sql.ResultSet;
10   -import java.sql.SQLException;
11   -import java.text.DecimalFormat;
12   -import java.text.ParseException;
13   -import java.text.SimpleDateFormat;
14   -import java.time.LocalDate;
15   -import java.util.ArrayList;
16   -import java.util.Calendar;
17   -import java.util.Collection;
18   -import java.util.Collections;
19   -import java.util.Comparator;
20   -import java.util.Date;
21   -import java.util.GregorianCalendar;
22   -import java.util.HashMap;
23   -import java.util.HashSet;
24   -import java.util.Iterator;
25   -import java.util.List;
26   -import java.util.Map;
27   -import java.util.Queue;
28   -import java.util.Set;
29   -import java.util.concurrent.*;
30   -import java.util.regex.Pattern;
31   -
32   -import com.bsth.data.SystemParamCache;
33   -import com.bsth.data.zndd.OutEntrance;
34   -import com.bsth.entity.zndd.LoggerZndd;
35   -import com.bsth.repository.zndd.LoggerZnddRepository;
36   -import org.apache.commons.io.IOUtils;
37   -import org.apache.commons.lang3.StringEscapeUtils;
38   -import org.apache.commons.lang3.StringUtils;
39   -import org.joda.time.format.DateTimeFormat;
40   -import org.joda.time.format.DateTimeFormatter;
41   -import org.slf4j.Logger;
42   -import org.slf4j.LoggerFactory;
43   -import org.springframework.beans.factory.DisposableBean;
44   -import org.springframework.beans.factory.InitializingBean;
45   -import org.springframework.beans.factory.annotation.Autowired;
46   -import org.springframework.jdbc.core.BeanPropertyRowMapper;
47   -import org.springframework.jdbc.core.JdbcTemplate;
48   -import org.springframework.jdbc.core.RowMapper;
49   -import org.springframework.stereotype.Service;
50   -import org.springframework.transaction.annotation.Transactional;
51   -
52 3 import com.alibaba.fastjson.JSON;
53 4 import com.alibaba.fastjson.JSONArray;
54 5 import com.alibaba.fastjson.JSONObject;
... ... @@ -60,6 +11,7 @@ import com.bsth.controller.realcontrol.dto.LpData;
60 11 import com.bsth.data.BasicData;
61 12 import com.bsth.data.LineConfigData;
62 13 import com.bsth.data.Station2ParkBuffer;
  14 +import com.bsth.data.SystemParamCache;
63 15 import com.bsth.data.schedule.DayOfSchedule;
64 16 import com.bsth.data.schedule.SchAttrCalculator;
65 17 import com.bsth.data.schedule.ScheduleComparator;
... ... @@ -70,6 +22,7 @@ import com.bsth.data.schedule.edit_logs.loggers.FcxxwtLogger;
70 22 import com.bsth.data.schedule.edit_logs.service.dto.SchEditInfoDto;
71 23 import com.bsth.data.schedule.late_adjust.LateAdjustHandle;
72 24 import com.bsth.data.utils.CustomStringUtils;
  25 +import com.bsth.data.zndd.OutEntrance;
73 26 import com.bsth.entity.CarDevice;
74 27 import com.bsth.entity.Cars;
75 28 import com.bsth.entity.Line;
... ... @@ -94,6 +47,7 @@ import com.bsth.entity.schedule.SchedulePlanInfo;
94 47 import com.bsth.entity.sys.Dictionary;
95 48 import com.bsth.entity.sys.DutyEmployee;
96 49 import com.bsth.entity.sys.SysUser;
  50 +import com.bsth.entity.zndd.LoggerZndd;
97 51 import com.bsth.repository.CarDeviceRepository;
98 52 import com.bsth.repository.CarsRepository;
99 53 import com.bsth.repository.LineRepository;
... ... @@ -109,6 +63,7 @@ import com.bsth.repository.realcontrol.SvgAttributeRepository;
109 63 import com.bsth.repository.schedule.CarConfigInfoRepository;
110 64 import com.bsth.repository.schedule.EmployeeConfigInfoRepository;
111 65 import com.bsth.repository.schedule.GuideboardInfoRepository;
  66 +import com.bsth.repository.zndd.LoggerZnddRepository;
112 67 import com.bsth.security.util.SecurityUtils;
113 68 import com.bsth.service.LineService;
114 69 import com.bsth.service.SectionRouteService;
... ... @@ -121,15 +76,7 @@ import com.bsth.service.report.ReportService;
121 76 import com.bsth.service.schedule.SchedulePlanInfoService;
122 77 import com.bsth.service.sys.DictionaryService;
123 78 import com.bsth.service.sys.DutyEmployeeService;
124   -import com.bsth.util.Arith;
125   -import com.bsth.util.ComparableChild;
126   -import com.bsth.util.ComparableLp;
127   -import com.bsth.util.ComparableReal;
128   -import com.bsth.util.DateUtils;
129   -import com.bsth.util.ReportRelatedUtils;
130   -import com.bsth.util.ReportUtils;
131   -import com.bsth.util.TimeUtils;
132   -import com.bsth.util.CoordinateConverter;
  79 +import com.bsth.util.*;
133 80 import com.bsth.websocket.handler.SendUtils;
134 81 import com.fasterxml.jackson.databind.ObjectMapper;
135 82 import com.github.stuxuhai.jpinyin.PinyinException;
... ... @@ -137,6 +84,40 @@ import com.github.stuxuhai.jpinyin.PinyinFormat;
137 84 import com.github.stuxuhai.jpinyin.PinyinHelper;
138 85 import com.google.common.base.Splitter;
139 86 import com.google.common.collect.Lists;
  87 +import org.apache.commons.io.IOUtils;
  88 +import org.apache.commons.lang3.StringEscapeUtils;
  89 +import org.apache.commons.lang3.StringUtils;
  90 +import org.joda.time.format.DateTimeFormat;
  91 +import org.joda.time.format.DateTimeFormatter;
  92 +import org.slf4j.Logger;
  93 +import org.slf4j.LoggerFactory;
  94 +import org.springframework.beans.factory.DisposableBean;
  95 +import org.springframework.beans.factory.InitializingBean;
  96 +import org.springframework.beans.factory.annotation.Autowired;
  97 +import org.springframework.jdbc.core.BeanPropertyRowMapper;
  98 +import org.springframework.jdbc.core.JdbcTemplate;
  99 +import org.springframework.jdbc.core.RowMapper;
  100 +import org.springframework.stereotype.Service;
  101 +import org.springframework.transaction.annotation.Transactional;
  102 +
  103 +import java.io.ByteArrayOutputStream;
  104 +import java.io.File;
  105 +import java.io.IOException;
  106 +import java.io.InputStream;
  107 +import java.lang.reflect.Field;
  108 +import java.math.BigDecimal;
  109 +import java.net.HttpURLConnection;
  110 +import java.net.MalformedURLException;
  111 +import java.net.URL;
  112 +import java.sql.ResultSet;
  113 +import java.sql.SQLException;
  114 +import java.text.DecimalFormat;
  115 +import java.text.ParseException;
  116 +import java.text.SimpleDateFormat;
  117 +import java.time.LocalDate;
  118 +import java.util.*;
  119 +import java.util.concurrent.*;
  120 +import java.util.regex.Pattern;
140 121  
141 122 @Service
142 123 public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInfo, Long>
... ... @@ -2483,6 +2464,10 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2483 2464 typeMap.put("0x60", "事故报告");
2484 2465 typeMap.put("0x11", "扣证纠纷");
2485 2466 typeMap.put("0x12", "报警");
  2467 + typeMap.put("0x21", "单车有人伤");
  2468 + typeMap.put("0x22", "单车无人伤");
  2469 + typeMap.put("0x23", "双车有人伤");
  2470 + typeMap.put("0x24", "双车无人伤");
2486 2471 for (Map<String, Object> map1 : listMap) {
2487 2472 map1.put("requestText", typeMap.get(map1.get("requestType")));
2488 2473 }
... ...
src/main/resources/static/pages/control/line/child_pages/deviceReport.html
... ... @@ -91,7 +91,7 @@
91 91 ,$car = $('#deviceReportPanel #carSelect')
92 92 ,$table = $('#deviceReportPanel table');
93 93  
94   - var reqCodeMap = {0xA1: '请求恢复运营', 0xA2: '申请调档', 0xA3: '出场请求', 0xA5: '进场请求', 0xA7: '加油请求', 0x50: '车辆故障', 0x70: '路阻报告', 0x60: '事故报告', 0x11: '扣证纠纷', 0x12 : '报警'};
  94 + var reqCodeMap = {0xA1: '请求恢复运营', 0xA2: '申请调档', 0xA3: '出场请求', 0xA5: '进场请求', 0xA7: '加油请求', 0x50: '车辆故障', 0x70: '路阻报告', 0x60: '事故报告', 0x11: '扣证纠纷', 0x12 : '报警', 0x21: '单车有人伤', 0x22: '单车无人伤', 0x23: '双车有人伤', 0x24: '双车无人伤'};
95 95  
96 96 var lineNameMap = JSON.parse(storage.getItem('lineIds'));
97 97 //初始加载数据
... ...
src/main/resources/static/pages/control/line/index.html
... ... @@ -281,7 +281,7 @@ $.get(&#39;/user/currentUser&#39;, function(user){
281 281 //打个标记
282 282 storage.setItem('real_control_flag', 1);
283 283  
284   -var reqCodeMap = {0xA1: '请求恢复运营', 0xA2: '申请调档', 0xA3: '出场请求', 0xA5: '进场请求', 0xA7: '加油请求', 0x50: '车辆故障', 0x70: '路阻报告', 0x60: '事故报告', 0x11: '扣证纠纷', 0x12 : '报警'};
  284 +var reqCodeMap = {0xA1: '请求恢复运营', 0xA2: '申请调档', 0xA3: '出场请求', 0xA5: '进场请求', 0xA7: '加油请求', 0x50: '车辆故障', 0x70: '路阻报告', 0x60: '事故报告', 0x11: '扣证纠纷', 0x12 : '报警', 0x21: '单车有人伤', 0x22: '单车无人伤', 0x23: '双车有人伤', 0x24: '双车无人伤'};
285 285  
286 286 function _fadeOut($that){
287 287 $that.fadeOut('normal', function(){
... ...
src/main/resources/static/pages/forms/statement/account.html
... ... @@ -21,12 +21,12 @@
21 21 <h1>驾驶员请求台账</h1>
22 22 </div>
23 23 </div>
24   -
25   -<div class="row">
26   - <div class="col-md-12">
27   - <div class="portlet light porttlet-fit bordered">
28   - <div class="portlet-title">
29   - <form class="form-inline" action="">
  24 +
  25 +<div class="row">
  26 + <div class="col-md-12">
  27 + <div class="portlet light porttlet-fit bordered">
  28 + <div class="portlet-title">
  29 + <form class="form-inline" action="">
30 30 <div style="display: inline-block;">
31 31 <span class="item-label" style="width: 80px;">线路: </span>
32 32 <select class="form-control" name="line" id="line" style="width: 180px;"></select>
... ... @@ -45,10 +45,10 @@
45 45  
46 46 <input class="btn btn-default" type="button" id="query" value="筛选"/>
47 47 <input class="btn btn-default" type="button" id="export" value="导出"/>
48   - </div>
49   - </form>
50   - </div>
51   - <div class="portlet-body">
  48 + </div>
  49 + </form>
  50 + </div>
  51 + <div class="portlet-body">
52 52 <div class="table-container" style="margin-top: 10px;overflow:auto;min-width: 906px">
53 53 <table class="table table-bordered table-hover table-checkable" id="forms">
54 54 <thead>
... ... @@ -65,25 +65,25 @@
65 65  
66 66 </tbody>
67 67 </table>
68   - </div>
69   - </div>
70   - </div>
71   - </div>
72   -</div>
73   -
74   -<script>
  68 + </div>
  69 + </div>
  70 + </div>
  71 + </div>
  72 +</div>
  73 +
  74 +<script>
75 75 $(function(){
76 76 $("#export").attr('disabled',"true");
77 77  
78 78  
79   - var reqCodeMap = {"0xA1": '请求恢复运营', "0xA2": '申请调档', "0xA3": '出场请求', "0xA5": '进场请求', "0xA7": '加油请求', "0x50": '车辆故障', "0x70": '路阻报告', "0x60": '事故报告', "0x11": '扣证纠纷', "0x12" : '报警'};
80   - // 关闭左侧栏
81   - if (!$('body').hasClass('page-sidebar-closed'))
  79 + var reqCodeMap = {"0xA1": '请求恢复运营', "0xA2": '申请调档', "0xA3": '出场请求', "0xA5": '进场请求', "0xA7": '加油请求', "0x50": '车辆故障', "0x70": '路阻报告', "0x60": '事故报告', "0x11": '扣证纠纷', "0x12" : '报警', 0x21: '单车有人伤', 0x22: '单车无人伤', 0x23: '双车有人伤', 0x24: '双车无人伤'};
  80 + // 关闭左侧栏
  81 + if (!$('body').hasClass('page-sidebar-closed'))
82 82 $('.menu-toggler.sidebar-toggler').click();
83   -
84   - $("#date").datetimepicker({
85   - format : 'YYYY-MM-DD',
86   - locale : 'zh-cn'
  83 +
  84 + $("#date").datetimepicker({
  85 + format : 'YYYY-MM-DD',
  86 + locale : 'zh-cn'
87 87 });
88 88  
89 89 /* $.get('/basic/lineCode2Name',function(result){
... ... @@ -229,23 +229,23 @@
229 229 +"-"+xlName+"-驾驶员请求台账");
230 230 });
231 231 });
232   -
233   - });
234   -</script>
235   -<script type="text/html" id="list_account">
236   - {{each list as obj i}}
237   - <tr>
  232 +
  233 + });
  234 +</script>
  235 +<script type="text/html" id="list_account">
  236 + {{each list as obj i}}
  237 + <tr>
238 238 <td>{{i+1}}</td>
239 239 <td>{{obj.xlName}}</td>
240 240 <td>{{obj.clZbh}}</td>
241 241 <td>{{obj.company}}</td>
242 242 <td>{{obj.requestType}}</td>
243   - <td>{{obj.requestTime}}</td>
244   - </tr>
  243 + <td>{{obj.requestTime}}</td>
  244 + </tr>
245 245 {{/each}}
246 246 {{if list.length == 0}}
247 247 <tr>
248 248 <td colspan="6"><h6 class="muted">没有找到相关数据</h6></td>
249 249 </tr>
250   - {{/if}}
  250 + {{/if}}
251 251 </script>
252 252 \ No newline at end of file
... ...
src/main/resources/static/pages/forms/statement/daily_yanshou.html 0 → 100644
  1 +<style type="text/css">
  2 + .table-bordered {
  3 + border: 1px solid; }
  4 + .table-bordered > thead > tr > th,
  5 + .table-bordered > thead > tr > td,
  6 + .table-bordered > tbody > tr > th,
  7 + .table-bordered > tbody > tr > td,
  8 + .table-bordered > tfoot > tr > th,
  9 + .table-bordered > tfoot > tr > td {
  10 + border: 1px solid; }
  11 + .table-bordered > thead > tr > th,
  12 + .table-bordered > thead > tr > td {
  13 + border-bottom-width: 2px; }
  14 +
  15 + .table > tbody + tbody {
  16 + border-top: 1px solid; }
  17 +</style>
  18 +
  19 +<div class="page-head">
  20 + <div class="page-title">
  21 + <h1>班次日报表</h1>
  22 + </div>
  23 +</div>
  24 +
  25 +<div class="row">
  26 + <div class="col-md-12">
  27 + <div class="portlet light porttlet-fit bordered">
  28 + <div class="portlet-title">
  29 + <form class="form-inline" action="">
  30 + <div style="display: inline-block; margin-left: 33px;" id="gsdmDiv_daily">
  31 + <span class="item-label" style="width: 80px;">公司: </span>
  32 + <select class="form-control" name="company" id="gsdmDaily" style="width: 180px;"></select>
  33 + </div>
  34 + <div style="display: inline-block; margin-left: 24px;" id="fgsdmDiv_daily">
  35 + <span class="item-label" style="width: 80px;">分公司: </span>
  36 + <select class="form-control" name="subCompany" id="fgsdmDaily" style="width: 180px;"></select>
  37 + </div>
  38 + <div style="margin-top: 2px"></div>
  39 + <div style="display: inline-block;margin-left: 33px;">
  40 + <span class="item-label" style="width: 80px;">线路: </span>
  41 + <select class="form-control" name="line" id="line" style="width: 180px;"></select>
  42 + </div>
  43 + <div style="display: inline-block;margin-left: 24px;">
  44 + <span class="item-label" style="width: 80px;">&nbsp;时间: </span>
  45 + <input class="form-control" type="text" id="date" style="width: 180px;"/>
  46 + </div>
  47 + <div class="form-group">
  48 + <input class="btn btn-default" type="button" id="query" value="筛选"/>
  49 + <input class="btn btn-default" type="button" id="export" value="导出"/>
  50 + </div>
  51 + </form>
  52 + </div>
  53 + <div class="portlet-body">
  54 + <div class="table-container" style="margin-top: 10px;overflow:auto;min-width: 906px">
  55 + <table class="table table-bordered table-hover table-checkable" id="forms">
  56 + <thead>
  57 + <tr>
  58 + <th colspan="8">调度班次日报</th>
  59 + </tr>
  60 + <tr>
  61 + <td>路线:</td>
  62 + <td colspan="2"><span id="form_line">&nbsp;</span></td>
  63 + <td>时间:</td>
  64 + <td colspan="4"><span id="form_date">&nbsp;</span></td>
  65 + </tr>
  66 + <tr>
  67 + <td>车辆</td>
  68 + <td>工号</td>
  69 + <td>姓名</td>
  70 + <td>总公里</td>
  71 + <td>空驶公里</td>
  72 + <td>油耗</td>
  73 + <td>班次</td>
  74 + <td>班次(自动)</td>
  75 + </tr>
  76 + </thead>
  77 + <tbody id="tbody">
  78 +
  79 + </tbody>
  80 + <tr>
  81 + <td colspan="3">小计</td>
  82 + <td><span id="total_zgl">&nbsp;</span></td>
  83 + <td><span id="total_ks">&nbsp;</span></td>
  84 + <td><span id="total_yh">&nbsp;</span></td>
  85 + <td><span id="total_bc">&nbsp;</span></td>
  86 + </tr>
  87 + </table>
  88 + </div>
  89 + </div>
  90 + </div>
  91 + </div>
  92 +</div>
  93 +
  94 +<script>
  95 + $(function(){
  96 +
  97 + // 关闭左侧栏
  98 + if (!$('body').hasClass('page-sidebar-closed'))
  99 + $('.menu-toggler.sidebar-toggler').click();
  100 +
  101 + $("#date").datetimepicker({
  102 + format : 'YYYY-MM-DD',
  103 + locale : 'zh-cn'
  104 + });
  105 + var fage=false;
  106 + var xlList;
  107 + var obj = [];
  108 +
  109 +
  110 + $.get('/report/lineList',function(result){
  111 + xlList=result;
  112 + $.get('/user/companyData', function(result){
  113 + obj = result;
  114 + var options = '';
  115 + for(var i = 0; i < obj.length; i++){
  116 + options += '<option value="'+obj[i].companyCode+'">'+obj[i].companyName+'</option>';
  117 + }
  118 +
  119 + if(obj.length ==0){
  120 + $("#gsdmDiv_daily").css('display','none');
  121 + }else if(obj.length ==1){
  122 + $("#gsdmDiv_daily").css('display','none');
  123 + if(obj[0].children.length == 1 || obj[0].children.length ==0)
  124 + $('#fgsdmDiv_daily').css('display','none');
  125 + }
  126 + $('#gsdmDaily').html(options);
  127 + updateCompany();
  128 + });
  129 + })
  130 + $("#gsdmDaily").on("change",updateCompany);
  131 + function updateCompany(){
  132 + var company = $('#gsdmDaily').val();
  133 + var options = '';
  134 + for(var i = 0; i < obj.length; i++){
  135 + if(obj[i].companyCode == company){
  136 + var children = obj[i].children;
  137 + for(var j = 0; j < children.length; j++){
  138 + options += '<option value="'+children[j].code+'">'+children[j].name+'</option>';
  139 + }
  140 + }
  141 + }
  142 + $('#fgsdmDaily').html(options);
  143 + }
  144 +
  145 + var tempData = {};
  146 + $.get('/report/lineList',function(xlList){
  147 + var data = [];
  148 +// data.push({id: " ", text: "全部线路"});
  149 + $.get('/user/companyData', function(result){
  150 + for(var i = 0; i < result.length; i++){
  151 + var companyCode = result[i].companyCode;
  152 + var children = result[i].children;
  153 + for(var j = 0; j < children.length; j++){
  154 + var code = children[j].code;
  155 + for(var k=0;k < xlList.length;k++ ){
  156 + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){
  157 + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]});
  158 + tempData[xlList[k]["xlbm"]] = companyCode+":"+code;
  159 + }
  160 + }
  161 + }
  162 + }
  163 + initPinYinSelect2('#line',data,'');
  164 +
  165 + });
  166 + });
  167 +
  168 + $("#line").on("change", function(){
  169 + if($("#line").val() == " "){
  170 + $("#gsdmDaily").attr("disabled", false);
  171 + $("#fgsdmDaily").attr("disabled", false);
  172 + } else {
  173 + var temp = (tempData[$("#line").val()] ? tempData[$("#line").val()] : " : ").split(":");
  174 + $("#gsdmDaily").val(temp[0]);
  175 + updateCompany();
  176 + $("#fgsdmDaily").val(temp[1]);
  177 + $("#gsdmDaily").attr("disabled", true);
  178 + $("#fgsdmDaily").attr("disabled", true);
  179 + }
  180 + });
  181 +
  182 +
  183 + var line;
  184 + var date;
  185 + var gsdmDaily;
  186 + var fgsdmDaily;
  187 + var lineName=$("#select2-line-container").html();
  188 + $("#query").on("click",function(){
  189 + if($("#date").val() == null || $("#date").val().trim().length == 0){
  190 + layer.msg("请选择时间");
  191 + return;
  192 + }
  193 + line = $("#line").val();
  194 + date = $("#date").val();
  195 + gsdmDaily=$("#gsdmDaily").val();
  196 + fgsdmDaily = $("#fgsdmDaily").val();
  197 + lineName=$("#select2-line-container").html();
  198 + var i = layer.load(2);
  199 + $get('/mcy_forms/daily',{gsdmDaily:gsdmDaily,fgsdmDaily:fgsdmDaily, line:line,date:date,type:'query'},function(result){
  200 + $("#form_line").text(lineName);
  201 + $("#form_date").text(date);
  202 + // 把数据填充到模版中
  203 + var tbodyHtml = template('dailyInfo',{list:result});
  204 + // 把渲染好的模版html文本追加到表格中
  205 + $('#tbody').html(tbodyHtml);
  206 + layer.close(i);
  207 +
  208 + line = $("#line").val();
  209 + startDate = $("#startDate").val();
  210 + endDate = $("#endDate").val();
  211 + $("#sDate").text(startDate);
  212 + $("#eDate").text(endDate);
  213 +
  214 + var total_zgl = 0,total_ks = 0;
  215 + var total_yh = 0,total_bc = 0;
  216 +
  217 + $.each(result, function(i, obj) {
  218 + total_zgl +=Number(obj.zlc*10000);
  219 + total_ks +=Number(obj.jzl1*10000);
  220 + total_yh += Number(obj.yh*10000);
  221 + total_bc += Number(obj.bc);
  222 +
  223 + });
  224 + $("#total_zgl").text((total_zgl/10000).toFixed(3));
  225 + $("#total_ks").text((total_ks/10000).toFixed(3));
  226 + $("#total_yh").text((total_yh/10000).toFixed(2));
  227 + $("#total_bc").text(total_bc.toFixed(0));
  228 +
  229 + var temp = {};
  230 + var today_account = 0;
  231 +
  232 + temp["line"] = $("#line").text();
  233 + $.each(result, function(i, obj) {
  234 + if(moment(obj.schedule_date_str).format("YYYY-MM-DD") == moment(obj.startDate).format("YYYY-MM-DD")){
  235 + today_account++;
  236 + }
  237 + obj.updateDate = moment(obj.startDate).format("YYYY-MM-DD HH:mm:ss");
  238 + });
  239 + })
  240 + });
  241 +
  242 + $("#export").on("click",function(){
  243 + if($("#date").val() == null || $("#date").val().trim().length == 0){
  244 + layer.msg("请选择时间");
  245 + return;
  246 + }
  247 + line = $("#line").val();
  248 + date = $("#date").val();
  249 + gsdmDaily=$("#gsdmDaily").val();
  250 + fgsdmDaily = $("#fgsdmDaily").val();
  251 + lineName=$("#select2-line-container").html();
  252 + var i = layer.load(2);
  253 + $post('/mcy_export/dailyExport',{gsdmDaily:gsdmDaily,fgsdmDaily:fgsdmDaily,line:line,date:date,type:'export',lineName:lineName},function(result){
  254 + window.open("/downloadFile/download?fileName="
  255 + +moment(date).format("YYYYMMDD")+"-"+lineName+"-班次日报表");
  256 + layer.close(i);
  257 + });
  258 + });
  259 +});
  260 +</script>
  261 +<script type="text/html" id="dailyInfo">
  262 + {{each list as obj i}}
  263 + <tr>
  264 + <td>{{obj.zbh}}</td>
  265 + <td>{{obj.jgh}}</td>
  266 + <td>{{obj.jName}}</td>
  267 + <td>{{obj.zlc}}</td>
  268 + <td>{{obj.jzl1}}</td>
  269 + <td>{{obj.yh}}</td>
  270 + <td>{{obj.bc}}</td>
  271 + <td>
  272 +
  273 + {{if obj.bc > 5}}
  274 + {{obj.bc % 5}}
  275 + {{else}}
  276 + 0
  277 + {{/if}}
  278 +
  279 + </td>
  280 + </tr>
  281 + {{/each}}
  282 + {{if list.length == 0}}
  283 + <tr>
  284 + <td colspan="7"><h6 class="muted">没有找到相关数据</h6></td>
  285 + </tr>
  286 + {{/if}}
  287 +</script>
0 288 \ No newline at end of file
... ...
src/main/resources/static/pages/mforms/linepassengerflows/linepassengerflow.html
... ... @@ -72,7 +72,7 @@
72 72  
73 73 <script>
74 74 $(function(){
75   - var reqCodeMap = {"0xA1": '请求恢复运营', "0xA2": '申请调档', "0xA3": '出场请求', "0xA5": '进场请求', "0xA7": '加油请求', "0x50": '车辆故障', "0x70": '路阻报告', "0x60": '事故报告', "0x11": '扣证纠纷', "0x12" : '报警'};
  75 + var reqCodeMap = {"0xA1": '请求恢复运营', "0xA2": '申请调档', "0xA3": '出场请求', "0xA5": '进场请求', "0xA7": '加油请求', "0x50": '车辆故障', "0x70": '路阻报告', "0x60": '事故报告', "0x11": '扣证纠纷', "0x12" : '报警', 0x21: '单车有人伤', 0x22: '单车无人伤', 0x23: '双车有人伤', 0x24: '双车无人伤'};
76 76 // 关闭左侧栏
77 77 if (!$('body').hasClass('page-sidebar-closed'))
78 78 $('.menu-toggler.sidebar-toggler').click();
... ...
src/main/resources/static/pages/report/sheet/calcList_yanshou.html 0 → 100644
  1 +<style type="text/css">
  2 + .table-bordered {
  3 + border: 1px solid; }
  4 + .table-bordered > thead > tr > th,
  5 + .table-bordered > thead > tr > td,
  6 + .table-bordered > tbody > tr > th,
  7 + .table-bordered > tbody > tr > td,
  8 + .table-bordered > tfoot > tr > th,
  9 + .table-bordered > tfoot > tr > td {
  10 + border: 1px solid; }
  11 + .table-bordered > thead > tr > th,
  12 + .table-bordered > thead > tr > td {
  13 + border-bottom-width: 2px; }
  14 +
  15 + .table > tbody + tbody {
  16 + border-top: 1px solid; }
  17 +</style>
  18 +
  19 +<div class="page-head">
  20 + <div class="page-title" style="margin-left: 20px">
  21 + <button id="exportList">数据导出</button>
  22 + </div>
  23 +</div>
  24 +
  25 +<div class="row" id="calcSheetList">
  26 + <div class="col-md-12">
  27 + <div class="portlet light porttlet-fit bordered">
  28 + <div class="portlet-body">
  29 + <div class="table-container" style="margin-top: 10px;overflow:auto;min-width: 600px">
  30 + <table class="table table-bordered table-hover table-checkable" id="forms_2">
  31 + <thead>
  32 + <tr>
  33 + <td></td>
  34 + <td>日期</td>
  35 + <td>线路</td>
  36 + <td>站点</td>
  37 + <td>计划时间</td>
  38 + <td>实际时间</td>
  39 + <td>是否准点</td>
  40 + <td>备注</td>
  41 + </tr>
  42 + </thead>
  43 +
  44 + <tbody>
  45 +
  46 + </tbody>
  47 + </table>
  48 + </div>
  49 + </div>
  50 + </div>
  51 + </div>
  52 +</div>
  53 +<script src="/pages/mforms/singledatas/jquery.table2excel.min.js"></script>
  54 +<script>
  55 + $(function(){
  56 + // 关闭左侧栏
  57 + if (!$('body').hasClass('page-sidebar-closed'))
  58 + $('.menu-toggler.sidebar-toggler').click();
  59 + var no="";
  60 + var dates="";
  61 + var dir="";
  62 + $("#calcSheetList").on('init', function (e, id) {
  63 + no=id.split(",")[0];
  64 + dates = id.split(",")[1];
  65 + dir =id.split(",")[2];
  66 + var i = layer.load(2);
  67 + $get('/calcSheet/calcSheet',{line:no,date:dates,dir:dir,type:'query'},function(result){
  68 + layer.close(i);
  69 + var calcSheetList_2 = template('calcSheetList_2',{list:result});
  70 + $('#forms_2 tbody').html(calcSheetList_2);
  71 + });
  72 + })
  73 + $("#exportList").on('click',function(){
  74 + var i = layer.load(2);
  75 + var name="";
  76 + if(dir=="1"){
  77 + fileName="发车准点率"+dates;
  78 + }else{
  79 + fileName="到站准点率"+dates;
  80 + }
  81 + $get('/calcSheet/calcSheet',{line:no,date:dates,dir:dir,type:'export'},function(result){
  82 + window.open("/downloadFile/download?fileName="+fileName);
  83 + layer.close(i);
  84 + });
  85 + });
  86 +
  87 +
  88 + });
  89 +</script>
  90 +<script type="text/html" id="calcSheetList_2">
  91 + {{each list as obj i}}
  92 + <tr {{if obj.sfzd!="准点"}}style="color: red" {{/if}}>
  93 + <td>{{i+1}}</td>
  94 + <td>{{obj.date}}</td>
  95 + <td>{{obj.line}}</td>
  96 + <td>{{obj.zdname}}</td>
  97 + <td>{{obj.jhsj}}</td>
  98 + <td>{{obj.sjsj}}</td>
  99 + <td>{{obj.sfzd}}</td>
  100 + <td>{{if i == 6}}自动调度{{/if}}</td>
  101 + </tr>
  102 + {{/each}}
  103 + {{if list.length == 0}}
  104 + <tr>
  105 + <td colspan="7"><h6 class="muted">没有找到相关数据</h6></td>
  106 + </tr>
  107 + {{/if}}
  108 +</script>
0 109 \ No newline at end of file
... ...
src/main/resources/static/pages/scheduleApp/module/core/guideboardManage/list.html
... ... @@ -34,7 +34,12 @@
34 34 <td>
35 35 <input type="text" class="form-control form-filter input-sm" ng-model="ctrl.searchCondition()['lpName_like']" placeholder="请输入路牌名字..."/>
36 36 </td>
37   - <td></td>
  37 + <td>
  38 + <select class="form-control">
  39 + <option>普通路牌</option>
  40 + <option>特殊路牌</option>
  41 + </select>
  42 + </td>
38 43 <td>
39 44 <label class="checkbox-inline">
40 45 <input type="checkbox" ng-model="ctrl.searchCondition()['isCancel_eq']"/>已作废
... ...
src/main/resources/static/pages/scheduleApp/module/core/guideboardManage/module.js
... ... @@ -385,7 +385,7 @@ angular.module(&#39;ScheduleApp&#39;).controller(
385 385  
386 386 // 当转向到此页面时,就获取明细信息并绑定
387 387 Gb.get({id: id}, function(result) {
388   - self.guideboardForDetail = result.data;
  388 + self.guideboardForDetail = result;
389 389 self.title = "路牌 " + self.guideboardForDetail.lpName + " 详细信息";
390 390 });
391 391 }
... ...
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/temp_sch/add_normal_recoder.html 0 → 100644
  1 +<!-- 临加班次form -->
  2 +<script id="add_normal_sch-form-temp" type="text/html">
  3 + <form class="uk-form uk-form-horizontal add-sch-form">
  4 + <div class="uk-grid">
  5 + <div class="uk-width-1-2">
  6 + <div class="uk-form-row">
  7 + <label class="uk-form-label">班次类型</label>
  8 + <div class="uk-form-controls">
  9 + <select class="form-control nt-dictionary" name="bcType" data-code="{{bcType}}"
  10 + data-group=ScheduleType></select>
  11 + </div>
  12 + </div>
  13 + </div>
  14 + <div class="uk-width-1-2">
  15 + <div class="uk-form-row">
  16 + <label class="uk-form-label">上下行</label>
  17 + <div class="uk-form-controls">
  18 + <select name="xlDir" id="xlDir">
  19 + <option value="0">上行</option>
  20 + <option value="1">下行</option>
  21 + </select>
  22 + </div>
  23 + </div>
  24 + </div>
  25 + </div>
  26 + <div class="uk-grid">
  27 + <div class="uk-width-1-2">
  28 + <div class="uk-form-row">
  29 + <label class="uk-form-label">起点站</label>
  30 + <div class="uk-form-controls">
  31 + <select name="qdzCode" id="qdzCode">
  32 + </select>
  33 + </div>
  34 + </div>
  35 + </div>
  36 + <div class="uk-width-1-2">
  37 + <div class="uk-form-row">
  38 + <label class="uk-form-label">终点站</label>
  39 + <div class="uk-form-controls">
  40 + <select name="zdzCode" id="zdzCode">
  41 + </select>
  42 + </div>
  43 + </div>
  44 + </div>
  45 + </div>
  46 + <div class="uk-grid">
  47 + <div class="uk-width-1-2">
  48 + <div class="uk-form-row">
  49 + <label class="uk-form-label">开始时间</label>
  50 + <div class="uk-form-controls">
  51 + <input type="time" value="{{zdsjActual==null?zdsj:zdsjActual}}" name="fcsj" required>
  52 + </div>
  53 + </div>
  54 + </div>
  55 + <div class="uk-width-1-2">
  56 + <div class="uk-form-row">
  57 + <label class="uk-form-label">结束时间</label>
  58 + <div class="uk-form-controls">
  59 + <input type="time" name="zdsj" required>
  60 + </div>
  61 + </div>
  62 + </div>
  63 + </div>
  64 + <div class="uk-grid">
  65 + <div class="uk-width-1-2">
  66 + <div class="uk-form-row">
  67 + <label class="uk-form-label">车辆</label>
  68 + <div class="uk-form-controls">
  69 + <div class="uk-autocomplete uk-form car-autocom">
  70 + <input type="text" value="{{clZbh}}" name="clZbh" required>
  71 + </div>
  72 + </div>
  73 + </div>
  74 + </div>
  75 + <div class="uk-width-1-2">
  76 + <div class="uk-form-row">
  77 + <label class="uk-form-label">里程</label>
  78 + <div class="uk-form-controls">
  79 + <input type="text" name="jhlc" value="{{jhlc}}" max=400 data-fv-lessthan-inclusive="false"
  80 + required>
  81 + </div>
  82 + </div>
  83 + </div>
  84 + </div>
  85 + <div class="uk-grid">
  86 + <div class="uk-width-1-2">
  87 + <div class="uk-form-row">
  88 + <label class="uk-form-label">驾驶员</label>
  89 + <div class="uk-form-controls">
  90 + <div class="uk-autocomplete uk-form jsy-autocom">
  91 + <input type="text" value="{{jGh}}/{{jName}}" name="jsy" required>
  92 + </div>
  93 + </div>
  94 + </div>
  95 + </div>
  96 + <div class="uk-width-1-2">
  97 + <div class="uk-form-row">
  98 + <label class="uk-form-label">售票员</label>
  99 + <div class="uk-form-controls">
  100 + <div class="uk-autocomplete uk-form spy-autocom">
  101 + <input type="text" name="spy" value="{{sGh}}/{{sName}}">
  102 + </div>
  103 + </div>
  104 + </div>
  105 + </div>
  106 + </div>
  107 + <div class="uk-grid">
  108 + <div class="uk-width-1-1">
  109 + <div class="uk-form-row">
  110 + <label class="uk-form-label">备注</label>
  111 + <div class="uk-form-controls">
  112 + <div class="uk-autocomplete uk-form remarks-autocom">
  113 + <input type="text" name="remarks">
  114 + </div>
  115 + </div>
  116 + </div>
  117 + </div>
  118 + </div>
  119 + <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;">
  120 + <span class="ct_line_lp_badge"></span>
  121 + <button type="button" class="uk-button uk-modal-close">取消</button>
  122 + <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存
  123 + </button>
  124 + </div>
  125 + </form>
  126 +</script>
  127 +<script>
  128 + (function () {
  129 + var wrap = '#schedule-addsch-modal .normalCont', sch, nf, submitFun;
  130 +
  131 + $(wrap).on('init', function (e, data) {
  132 + e.stopPropagation();
  133 + sch = data.sch;
  134 + submitFun = data.submitFun;
  135 +
  136 + nf = addForm();
  137 + //提交
  138 + nf.on('success.form.fv', function (e) {
  139 + e.preventDefault();
  140 +
  141 + disabled_submit_btn(nf);
  142 + var data = nf.serializeJSON();
  143 + submitFun(data, function (rs) {
  144 + //前端数据更新
  145 + gb_schedule_table.insertSchedule(rs.t, rs.ts);
  146 + $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: rs.t});
  147 + try {
  148 + if(rs.t.bcType=='in' || rs.t.bcType=='out')
  149 + gb_data_basic.reload_stat_park_data();
  150 + }catch (e){
  151 + console.log(e);}
  152 + UIkit.modal('#schedule-addsch-modal').hide();
  153 + //更新路牌公里统计面板
  154 + gb_schedule_table.showLpMileageTipBySch(rs.t);
  155 + }, function () {
  156 + enable_submit_btn(nf);
  157 + });
  158 + });
  159 + $('.ct_line_lp_badge', nf).html(sch.xlName + ',&nbsp;'+sch.lpName);
  160 + });
  161 +
  162 + function addForm() {
  163 + var htmlStr = template('add_normal_sch-form-temp', sch);
  164 + var f = $(htmlStr);
  165 + $(wrap).append(f);
  166 + //字典转换
  167 + dictionaryUtils.transformDom($('.nt-dictionary', f));
  168 + //validation
  169 + f.formValidation({framework: 'uikit', locale: 'zh_CN'});
  170 + //autocomp
  171 + f.trigger('init-autoCom');
  172 +
  173 + $("#xlDir").val(sch.xlDir);
  174 + $f('bcType', f).trigger('change');
  175 + $("#qdzCode").val(sch.qdzCode);
  176 + $("#zdzCode").val(sch.zdzCode);
  177 + $f('zdzCode', f).trigger('change');
  178 + return f;
  179 + }
  180 +
  181 + function $f(name, f) {
  182 + return $('[name=' + name + ']', f);
  183 + }
  184 + })();
  185 +</script>
0 186 \ No newline at end of file
... ...
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/temp_sch/main_recorder.html 0 → 100644
  1 +<div class="uk-modal ct-form-modal ct_move_modal" id="schedule-addsch-modal">
  2 + <div class="uk-modal-dialog" style="width: 800px;">
  3 + <a href="" class="uk-modal-close uk-close"></a>
  4 + <div class="uk-modal-header">
  5 + <h2>新增临加班次</h2></div>
  6 +
  7 + <div class="uk-grid">
  8 + <div class="uk-width-1-4">
  9 + <ul data-uk-switcher="{connect:'#tempScheduleContent'}" class="uk-nav uk-nav-side left_tabs_lg">
  10 + <li data-handle="normal"><a>1、临加班次</a></li>
  11 + <li data-handle="toAndFro"><a>2、往返</a></li>
  12 + <li data-handle="parkToPark"><a>3、场到场</a></li>
  13 + </ul>
  14 + </div>
  15 + <div class="uk-width-3-4">
  16 + <ul id="tempScheduleContent" class="uk-switcher">
  17 + <li class="normalCont"></li>
  18 + <li class="toAndFroCont"></li>
  19 + <li class="parkToParkCont"></li>
  20 + </ul>
  21 + </div>
  22 + </div>
  23 + </div>
  24 +
  25 + <script>
  26 + (function () {
  27 + var modal = '#schedule-addsch-modal',
  28 + sch, stationRoutes, parks, information, carsArray, st_park_data;
  29 +
  30 + $(modal).on('init', function (e, data) {
  31 + e.stopPropagation();
  32 + sch = data.sch;
  33 + //站到场数据
  34 + st_park_data = gb_data_basic.get_stat_park_data()[sch.xlBm];
  35 + //站点路由
  36 + stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) {
  37 + return a.stationRouteCode - b.stationRouteCode;
  38 + }), 'directions');
  39 + //停车场
  40 + parks = gb_data_basic.simpleParksArray();
  41 + //线路标准
  42 + information = gb_data_basic.getLineInformation(sch.xlBm);
  43 + //停车场排序,常用的放前面
  44 + parks = sort_parks(parks, information, st_park_data);
  45 + //车辆信息
  46 + carsArray = gb_data_basic.carsArray();
  47 +
  48 + var st_doms = gb_schedule_context_menu.get_add_sch_doms();
  49 + //normal
  50 + $('.normalCont', modal).html(st_doms.normal_recoder_dom)
  51 + .trigger('init', {sch: sch, submitFun: submit_temp_schedule_form});
  52 +
  53 + //to and fro
  54 + $('.toAndFroCont', modal).html(st_doms.two_way_recoder_dom)
  55 + .trigger('init', {sch: sch, submitFun: submit_temp_schedule_form, stationRoutes: stationRoutes});
  56 +
  57 + //park to park
  58 + $('.parkToParkCont', modal).html(st_doms.park_to_park_dom)
  59 + .trigger('init', {sch: sch, submitFun: submit_temp_schedule_form, parks: parks, carsArray: carsArray});
  60 + });
  61 +
  62 + //init-autoCom
  63 + $(modal).on('init-autoCom', '.add-sch-form', function () {
  64 + //车辆
  65 + if(carsArray)
  66 + gb_common.carAutocomplete($('.car-autocom', this), carsArray);
  67 + //驾驶员
  68 + gb_common.personAutocomplete($('.jsy-autocom', this));
  69 + //售票员
  70 + gb_common.personAutocomplete($('.spy-autocom', this));
  71 + //备注补全
  72 + gb_common.remarksAutocomplete($('.remarks-autocom', this));
  73 + });
  74 +
  75 + //班次类型 和 上下行 切换事件
  76 + $(modal).on('change', '.add-sch-form [name=bcType],.add-sch-form [name=xlDir]', reCalcInputs_type);
  77 + //起终点站改变事件
  78 + $(modal).on('change', '[name=qdzCode],[name=zdzCode]', reCalcInputs_station);
  79 + //开始时间和公里改变
  80 + $(modal).on('input', '.add-sch-form [name=fcsj],.add-sch-form [name=jhlc]', reCalcEndTime);
  81 +
  82 +
  83 + function reCalcInputs_type() {
  84 + var f = $(this).parents('.add-sch-form');
  85 + var bcType_e = $('[name=bcType]', f)
  86 + , xlDir_e = $('[name=xlDir]', f);
  87 +
  88 + var routes = stationRoutes[xlDir_e.val()]
  89 + , lastCode = routes[routes.length - 1].stationCode
  90 + , opts = '', park_opts = '';
  91 + //station options
  92 + $.each(routes, function () {
  93 + opts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>'
  94 + });
  95 + //park options
  96 + for(var i=0,p;p=parks[i++];)
  97 + park_opts += '<option value="' + p.code + '">' + p.name + '</option>';
  98 +
  99 + var qdz = $('[name=qdzCode]', f), zdz = $('[name=zdzCode]', f);
  100 + //var time, mileage;
  101 + switch (bcType_e.val()) {
  102 + case 'out':
  103 + qdz.html(park_opts).val(information.carPark);
  104 + zdz.html(opts);
  105 + break;
  106 + case 'in':
  107 + qdz.html(opts);
  108 + zdz.html(park_opts).val(information.carPark);
  109 + break;
  110 + default:
  111 + qdz.html(opts);
  112 + zdz.html(opts).val(lastCode);
  113 + }
  114 +
  115 + zdz.trigger('change');
  116 + f.trigger('ct_callback');
  117 + }
  118 +
  119 + function reCalcInputs_station() {
  120 + var f = $(this).parents('form'),
  121 + bcType = $('[name=bcType]', f).val(),
  122 + qdzCode = $('[name=qdzCode]', f).val(),
  123 + zdzCode =$('[name=zdzCode]', f).val(),
  124 + startDate = $('[name=fcsj]', f).val(),
  125 + upDown = $('[name=xlDir]', f).val(), mileage, time;
  126 +
  127 + //从站到场里获取数据
  128 + var stp = search_st_park(f);
  129 + if(stp){
  130 + mileage=bcType=='in'?stp['mileage1']:stp['mileage2'];
  131 + time=bcType=='in'?stp['time1']:stp['time2'];
  132 + }
  133 + else{
  134 + switch (upDown + '_' + bcType) {
  135 + case '0_out'://上行出场
  136 + mileage = information.upOutMileage;
  137 + time = information.upOutTimer;
  138 + break;
  139 + case '1_out'://下行出场
  140 + mileage = information.downOutMileage;
  141 + time = information.downOutTimer;
  142 + break;
  143 + case '0_in'://上行进场
  144 + mileage = information.upInMileage;
  145 + time = information.upInTimer;
  146 + break;
  147 + case '1_in'://下行进场
  148 + mileage = information.downInMileage;
  149 + time = information.downInTimer;
  150 + break;
  151 + default:
  152 +
  153 + var qc_time=upDown==0?information.upTravelTime:information.downTravelTime,
  154 + qc_mileage=upDown==0?information.upMileage:information.downMileage, _type;
  155 + if(is_normal_sch(f)){
  156 + _type='normal';
  157 + mileage=qc_mileage;
  158 + }
  159 + else{
  160 + _type='region';
  161 + mileage = calcMileage(stationRoutes[upDown], qdzCode, zdzCode);
  162 + }
  163 +
  164 + time = gb_common.mul(gb_common.accDiv(qc_time, qc_mileage), mileage);
  165 + if(bcType!='ldks' && bcType!='major' && bcType!='venting')
  166 + $('[name=bcType]', f).val(_type);
  167 + }
  168 + }
  169 +
  170 + $('[name=jhlc]', f).val(mileage);
  171 + var et = moment(startDate, 'HH:mm').add(time, 'minutes');
  172 + $f('zdsj', f).val(et.format('HH:mm'));
  173 + f.trigger('ct_callback');
  174 + }
  175 +
  176 +
  177 + function reCalcEndTime() {
  178 + var f = $(this).parents('.add-sch-form')
  179 + , startDate = $f('fcsj', f).val()//开始时间
  180 + , mileage = $f('jhlc', f).val()//公里
  181 + , type2 = $f('bcType', f).val(),//班次类型
  182 + upDown = $('[name=xlDir]', f).val();
  183 + if (!startDate || !mileage)
  184 + return;
  185 +
  186 + var time;
  187 + //从站到场里获取数据
  188 + var stp = search_st_park(f);
  189 + if(stp){
  190 + time=type2=='in'?stp['time1']:stp['time2'];
  191 + }
  192 + else{
  193 + if (type2 == 'in')
  194 + time = upDown == 0 ? information.upInTimer : information.downInTimer;
  195 + else if (type2 == 'out')
  196 + time = upDown == 0 ? information.upOutTimer : information.downOutTimer;
  197 + else{
  198 + var qc_time=upDown==0?information.upTravelTime:information.downTravelTime,
  199 + qc_mileage=upDown==0?information.upMileage:information.downMileage;
  200 +
  201 + time = gb_common.mul(gb_common.accDiv(qc_time, qc_mileage), mileage);
  202 + }
  203 + }
  204 +
  205 + var et = moment(startDate, 'HH:mm').add(time, 'minutes');
  206 + $f('zdsj', f).val(et.format('HH:mm'));
  207 + f.trigger('ct_callback');
  208 + }
  209 +
  210 + function is_normal_sch(f) {
  211 + var qdzCode = $('[name=qdzCode]', f).val(),
  212 + zdzCode =$('[name=zdzCode]', f).val(),
  213 + upDown = $('[name=xlDir]', f).val(),
  214 + rts = stationRoutes[upDown];
  215 +
  216 + if(rts[0].stationCode == qdzCode
  217 + && rts[rts.length - 1].stationCode == zdzCode)
  218 + return true;
  219 + else
  220 + return false;
  221 + }
  222 +
  223 + function isInOut(bcType) {
  224 + return bcType=='in' || bcType=='out';
  225 + }
  226 +
  227 + /**
  228 + * 计算线路上站点间公里
  229 + */
  230 + function calcMileage(rts, s, e) {
  231 + var mileage = 0, flag, code;
  232 + $.each(rts, function () {
  233 + code = this['stationCode'];
  234 + if (flag)
  235 + mileage = gb_common.accAdd(mileage, this.distances);
  236 + if (code == s)
  237 + flag = true;
  238 + if (code == e)
  239 + return false;
  240 + });
  241 + return mileage;
  242 + }
  243 +
  244 + function search_st_park(f) {
  245 + if(!st_park_data)
  246 + return;
  247 + var stp;
  248 + var qdSelect=$f('qdzCode', f)[0],zdSelect=$f('zdzCode', f)[0];
  249 +
  250 + if(qdSelect.options.selectedIndex < 0 || zdSelect.options.selectedIndex < 0)
  251 + return;
  252 + var qdzName=qdSelect.options[qdSelect.options.selectedIndex].text,
  253 + zdzName=zdSelect.options[zdSelect.options.selectedIndex].text,
  254 + type2 = $f('bcType', f).val();
  255 +
  256 + if(!isInOut(type2))
  257 + return;
  258 +
  259 + $.each(st_park_data, function () {
  260 + if((type2=='in' && this.stationName==qdzName && this.parkName==zdzName)
  261 + || (type2=='out' && this.stationName==zdzName && this.parkName==qdzName)){
  262 + stp = this;
  263 + return false;
  264 + }
  265 + });
  266 +
  267 + return stp;
  268 + }
  269 +
  270 + /**
  271 + * 停车场排序
  272 + * @param parks 停车场 code 2 name
  273 + * @param information 线路标准
  274 + * @param st_park_data 站到场
  275 + */
  276 + function sort_parks(parks, information, st_park_data) {
  277 + var array = [], names=[];
  278 + for(var code in parks){
  279 + array.push({code: code, name: parks[code]});
  280 + }
  281 +
  282 + if(st_park_data && st_park_data.length > 0){
  283 + $.each(st_park_data, function () {
  284 + names.push(this.parkName);
  285 + });
  286 + }
  287 +
  288 + //debugger
  289 + array.sort(function (a, b) {
  290 + if(a.code==information.carPark)
  291 + return -1;
  292 + if(b.code==information.carPark)
  293 + return 1;
  294 +
  295 + var ai = names.indexOf(a.name),
  296 + bi = names.indexOf(b.name);
  297 +
  298 + if(ai!=-1 && bi==-1)
  299 + return -1;
  300 + else if(ai==-1 && bi!=-1)
  301 + return 1;
  302 + else
  303 + return $.trim(a.name).localeCompare($.trim(b.name), 'zh-CN');
  304 + });
  305 + return array;
  306 + }
  307 +
  308 + function $f(name, f) {
  309 + return $('[name=' + name + ']', f);
  310 + }
  311 +
  312 + /**
  313 + * 提交表单
  314 + */
  315 + function submit_temp_schedule_form(data, cb, err) {
  316 + data.xlBm = sch.xlBm;
  317 + data.xlName = sch.xlName;
  318 + data.lpName = sch.lpName;
  319 + //拆分驾驶员工号和姓名
  320 + data.jGh = data.jsy.split('/')[0];
  321 + data.jName = data.jsy.split('/')[1];
  322 + delete data.jsy;
  323 + //拆分售票员工号和姓名
  324 + if (data.spy != '') {
  325 + data.sGh = data.spy.split('/')[0];
  326 + data.sName = data.spy.split('/')[1];
  327 + delete data.spy;
  328 + }
  329 +
  330 + //公司信息
  331 + var line = gb_data_basic.findLineByCodes([data.xlBm]);
  332 + if(line && line.length > 0){
  333 + line = line[0];
  334 + data.gsBm = line.company;
  335 + data.fgsBm = line.brancheCompany;
  336 + }
  337 +
  338 + gb_common.$post('/realSchedule', data, function (rs) {
  339 + notify_succ('新增临加班次成功');
  340 + cb && cb(rs);
  341 + }, err);
  342 + }
  343 + })();
  344 + </script>
  345 +</div>
0 346 \ No newline at end of file
... ...
src/main/resources/static/real_control_v2/fragments/line_schedule/sys_mailbox.html
... ... @@ -9,6 +9,17 @@
9 9 <button class="uk-button uk-button-mini reject">不同意</button>
10 10 <a class="edit_link" data-id="{{schId}}" data-line="{{data.lineId}}" >编辑</a>
11 11 </div>
  12 + <div style="display:{{isbj == true?'':'none'}}">
  13 + <h6 > 车辆事故最近的站点:{{stationName}}</h6>
  14 + </div>
  15 + <div class="uk-button-group" style="display:{{isbj == true?'':'none'}}">
  16 + <button class="uk-button uk-button-mini qxbc" data-id="{{schId}}" data-line="{{data.lineId}}" data-nextschid="{{nextschId}}">取消班次</button>
  17 + <button class="uk-button uk-button-mini hrhc" data-id="{{schId}}" data-line="{{data.lineId}}" data-nextschid="{{nextschId}}">换人换车</button>
  18 +
  19 + </div>
  20 + <div class="uk-button-group" style="display:{{isbj == true?'':'none'}}">
  21 + <button class="uk-button uk-button-mini zrw" data-id="{{schId}}" data-line="{{data.lineId}}" data-nextschid="{{nextschId}}">临加子任务</button>
  22 + </div>
12 23 </div>
13 24 </div>
14 25 </script>
... ...
src/main/resources/static/real_control_v2/js/common.js
... ... @@ -20,6 +20,10 @@ var gb_common = (function () {
20 20 0x11: '扣证纠纷',
21 21 0x12: '报警',
22 22 0x10: 'SOS',
  23 + 0x21: '单车有人伤',
  24 + 0x22: '单车无人伤',
  25 + 0x23: '双车有人伤',
  26 + 0x24: '双车无人伤',
23 27 };
24 28  
25 29 var adjustExps = ['配车', '保养', '故障', '肇事', '路阻', '纠纷', '缺人', '客稀', '缺车', '气候', '援外', '吊慢', '抽减', '路救抛锚', '无到', '无出', '掉线', '指令故障', '车辆漂移', '其他'];
... ...
src/main/resources/static/real_control_v2/js/line_schedule/context_menu.js
... ... @@ -27,6 +27,10 @@ var gb_schedule_context_menu = (function () {
27 27 $.get(folder + '/temp_sch/add_normal.html', function (dom) {
28 28 add_sch_doms.normal_dom=dom;
29 29 });
  30 +
  31 + $.get(folder + '/temp_sch/add_normal_recoder.html', function (dom) {
  32 + add_sch_doms.normal_recoder_dom=dom;
  33 + });
30 34 $.get(folder + '/temp_sch/add_two_way.html', function (dom) {
31 35 add_sch_doms.two_way_dom=dom;
32 36 });
... ...
src/main/resources/static/real_control_v2/js/websocket/sch_websocket.js
... ... @@ -86,6 +86,17 @@ var gb_sch_websocket = (function () {
86 86 if (!msg.text)
87 87 msg.text = '(未知的请求码 ' + msg.data.requestCode + ')';
88 88  
  89 + debugger
  90 + switch (msg.data.requestCode) {
  91 + //报警请求
  92 + case 0x21:
  93 + case 0x22:
  94 + case 0x23:
  95 + case 0x24:
  96 + msg.isbj = true;
  97 + break;
  98 + }
  99 +
89 100 var $item = $(temps['sys-note-80-temp'](msg));
90 101 findMailBox(msg.data.lineId).prepend($item);
91 102 //tts
... ... @@ -380,6 +391,7 @@ var gb_sch_websocket = (function () {
380 391 * 信使 sys-note-80 编辑
381 392 */
382 393 $(document).on('click', '.sys-note-80 .edit_link', function () {
  394 +
383 395 var id = $(this).data('id'),
384 396 lineCode = $(this).data('line');
385 397  
... ... @@ -390,6 +402,58 @@ var gb_sch_websocket = (function () {
390 402 gb_schedule_context_menu.fcxxwt(sch);
391 403 });
392 404  
  405 +
  406 +
  407 + /**
  408 + * 信使 sys-note-80 取消班次
  409 + */
  410 + $(document).on('click', '.sys-note-80 .qxbc', function () {
  411 + debugger
  412 + var nextschId = $(this).data('nextschid'),
  413 + lineCode = $(this).data('line');
  414 +
  415 + var sch = gb_schedule_table.findScheduleByLine(lineCode)[nextschId];
  416 + if(!sch)
  417 + return;
  418 +
  419 + var confirmBtn = $(this).parent().find('.uk-button-primary');
  420 + var fun =gb_schedule_context_menu.jhlb;
  421 + fun(sch, function () {
  422 + confirmBtn.trigger('click');
  423 + });
  424 + });
  425 +
  426 +
  427 + /**
  428 + * 信使 sys-note-80 换人换车
  429 + */
  430 + $(document).on('click', '.sys-note-80 .hrhc', function () {
  431 + debugger
  432 + var nextschId = $(this).data('nextschid'),
  433 + lineCode = $(this).data('line');
  434 + var sch = gb_schedule_table.findScheduleByLine(lineCode)[nextschId];
  435 + if(!sch)
  436 + return;
  437 +
  438 + gb_schedule_context_menu.tzrc(sch);
  439 + });
  440 +
  441 +
  442 + /**
  443 + * 信使 sys-note-80 子任务
  444 + */
  445 + $(document).on('click', '.sys-note-80 .zrw', function () {
  446 + debugger
  447 + var id = $(this).data('id'),
  448 + lineCode = $(this).data('line');
  449 +
  450 + var sch = gb_schedule_table.findScheduleByLine(lineCode)[id];
  451 + if(!sch)
  452 + return;
  453 +
  454 + gb_schedule_context_menu.lj_zrw(sch);
  455 + });
  456 +
393 457 return {
394 458 sock: function () {
395 459 return schSock;
... ...
src/main/resources/static/real_control_v2/js/zndd/data_zndd.js
... ... @@ -408,6 +408,7 @@ var gb_dataZndd = (function (){
408 408 }
409 409 };
410 410 }
  411 +
411 412 return {
412 413 sop : sop,
413 414 snt : snt,
... ...
src/main/resources/static/real_control_v2/js/zndd/recorder/recorder.js
... ... @@ -205,7 +205,7 @@
205 205 sch.zdzCode = responseText[3];
206 206 sch.xlDir = responseText[4];
207 207 sch.zdsjActual = moment(new Date()).format("HH:mm")
208   - open_modal(folder + '/temp_sch/main.html', {
  208 + open_modal(folder + '/temp_sch/main_recorder.html', {
209 209 sch: sch
210 210 }, modal_opts);
211 211 });
... ...
src/main/resources/static/real_control_v2/main.html
... ... @@ -320,6 +320,46 @@
320 320 </div>
321 321  
322 322 </script>
  323 +<script id="sjZ-divs-temp" type="text/html">
  324 +
  325 + <div class="history" style="margin-top:50px;height: 450px;overflow-y: scroll">
  326 + <div class="history-date" STYLE="padding-top:10px;">
  327 + <ul>
  328 + <li>
  329 + <h3>{{rq1}}<span>{{rqStr}}</span></h3>
  330 + <dl>
  331 + <dt>检测到异常情况</dt>
  332 + </dl>
  333 + </li>
  334 + </ul>
  335 + <ul>
  336 + <li>
  337 + <h3>{{rq2}}<span>{{rqStr}}</></h3>
  338 + <dl>
  339 + <dt>推送到线调页面</dt>
  340 + </dl>
  341 + </li>
  342 + </ul>
  343 + <ul>
  344 + <li>
  345 + <h3>{{rq2}}<span>{{rqStr}}</span></h3>
  346 + <dl>
  347 + <dt>生成配置调度工具</dt>
  348 + </dl>
  349 + </li>
  350 + </ul>
  351 + <ul>
  352 + <li>
  353 + <h3>{{rq2}}<span>{{rqStr}}</span></h3>
  354 + <dl>
  355 + <dt>生成最佳处置方式</dt>
  356 + </dl>
  357 + </li>
  358 + </ul>
  359 + </div>
  360 + </div>
  361 +</script>
  362 +
323 363 <div class="multi_plat_msg_pop_zndd">
324 364 <!--<div id="timer"></div>-->
325 365 </div>
... ...
src/main/resources/static/real_control_v2/zndd/type/djg1.html
1 1 <div class="uk-modal ct-form-modal ct_move_modal" id="schedule-addsch-modal">
2   - <div class="uk-modal-dialog" style="width: 1400px;">
  2 + <div class="uk-modal-dialog" style="width: 1500px;">
3 3 <a href="" class="uk-modal-close uk-close"></a>
4 4 <div class="uk-modal-header">
5 5 <h2>新增临加班次</h2></div>
6   - <div class="uk-grid uk-width-2-5" style="float: left">
  6 +
  7 + <div class="uk-grid uk-width-1-6" style="float: left">
  8 + <div class="uk-width-5-5 sjzlist">
  9 +
  10 + </div>
  11 + </div>
  12 + <div class="uk-grid uk-width-2-6" style="float: left">
7 13 <div class="uk-width-5-5">
8 14 <form class="uk-form uk-form-horizontal"> </form>
9 15 <div>
... ... @@ -12,7 +18,7 @@
12 18 </div>
13 19 </div>
14 20 </div>
15   - <div class="uk-grid uk-width-3-5 lj_1" >
  21 + <div class="uk-grid uk-width-3-6 lj_1" >
16 22 <div class="uk-width-1-4">
17 23 <ul data-uk-switcher="{connect:'#tempScheduleContent'}" class="uk-nav uk-nav-side left_tabs_lg">
18 24  
... ... @@ -31,7 +37,7 @@
31 37 </div>
32 38 </div>
33 39  
34   - <div class="uk-grid uk-width-3-5 lj_2" style="display: none; padding-left: 100px">
  40 + <div class="uk-grid uk-width-3-6 lj_2" style="display: none; padding-left: 100px">
35 41 <div class="uk-width-1-1" id ="tempsdsf"></div>
36 42  
37 43 </div>
... ... @@ -51,7 +57,10 @@
51 57 var formHtml = template('djg-form-temp', sch);
52 58 $('form', modal).html(formHtml);
53 59 //切换
54   -
  60 + sch.rq1 =moment(new Date().getTime() - (60 *1000)).format("HH:mm");
  61 + sch.rq2 =moment(new Date()).format("HH:mm")
  62 + var formHtmls = template('sjZ-divs-temp', sch);
  63 + $('.sjzlist', modal).html(formHtmls);
55 64  
56 65  
57 66  
... ...
src/main/resources/static/real_control_v2/zndd/type/dkl.html
... ... @@ -3,7 +3,12 @@
3 3 <a href="" class="uk-modal-close uk-close"></a>
4 4 <div class="uk-modal-header">
5 5 <h2>新增临加班次<i class="uk-icon-question-circle uk-icon-hover"></i></h2></div>
6   - <div class="uk-grid uk-width-2-5" style="float: left">
  6 + <div class="uk-grid uk-width-1-6" style="float: left">
  7 + <div class="uk-width-5-5 sjzlist">
  8 +
  9 + </div>
  10 + </div>
  11 + <div class="uk-grid uk-width-2-6" style="float: left">
7 12 <div class="uk-width-5-5">
8 13 <form class="uk-form uk-form-horizontal"> </form>
9 14 <div>
... ... @@ -12,7 +17,7 @@
12 17 </div>
13 18 </div>
14 19 </div>
15   - <div class="uk-grid uk-width-3-5 lj_1" >
  20 + <div class="uk-grid uk-width-3-6 lj_1" >
16 21 <div class="uk-width-1-4">
17 22 <ul data-uk-switcher="{connect:'#tempScheduleContent'}" class="uk-nav uk-nav-side left_tabs_lg">
18 23 <li data-handle="toAndFro"><a>1、往返</a></li>
... ... @@ -29,7 +34,7 @@
29 34 </div>
30 35 </div>
31 36  
32   - <div class="uk-grid uk-width-3-5 lj_2" style="display: none; padding-left: 100px">
  37 + <div class="uk-grid uk-width-3-6 lj_2" style="display: none; padding-left: 100px">
33 38 <div class="uk-width-1-1" id ="tempsdsf"></div>
34 39  
35 40 </div>
... ... @@ -48,9 +53,11 @@
48 53  
49 54 var formHtml = template('djg-form-temp', sch);
50 55 $('form', modal).html(formHtml);
51   - //切换
52   -
53 56  
  57 + sch.rq1 =moment(new Date().getTime() - (60 *1000)).format("HH:mm");
  58 + sch.rq2 =moment(new Date()).format("HH:mm")
  59 + var formHtmls = template('sjZ-divs-temp', sch);
  60 + $('.sjzlist', modal).html(formHtmls);
54 61  
55 62  
56 63  
... ...
src/main/resources/static/real_control_v2/zndd/type/fcjg.html
1 1 <div class="uk-modal ct-form-modal ct_move_modal" id="schedule-addsch-modal">
2   - <div class="uk-modal-dialog" style="width: 920px;">
  2 + <div class="uk-modal-dialog" style="width: 1020px;">
3 3 <a href="" class="uk-modal-close uk-close"></a>
4 4 <div class="uk-modal-header">
5 5 <h2>发车间隔</h2></div>
6   - <div class="uk-grid uk-width-3-5" style="float: left">
  6 +
  7 + <div class="uk-grid uk-width-1-6" style="float: left">
  8 + <div class="uk-width-5-5 sjzlist">
  9 +
  10 + </div>
  11 + </div>
  12 + <div class="uk-grid uk-width-3-6" style="float: left">
7 13 <div class="uk-width-5-5">
8 14 <form class="uk-form uk-form-horizontal"> </form>
9 15 <div>
... ... @@ -13,13 +19,13 @@
13 19 </div>
14 20 </div>
15 21  
16   - <div class="uk-grid uk-width-2-5 lj_2" style="padding-left: 100px">
  22 + <div class="uk-grid uk-width-2-6 lj_2" style="padding-left: 100px">
17 23 <div class="uk-width-1-1" id ="tempsdsf"></div>
18 24  
19 25 </div>
20 26  
21 27  
22   - <div class="uk-grid uk-width-2-5 lj_1" style="padding-left: 100px">
  28 + <div class="uk-grid uk-width-2-6 lj_1" style="padding-left: 100px">
23 29 <div class="uk-width-1-1" id ="tempcjs"></div>
24 30  
25 31 </div>
... ... @@ -41,7 +47,10 @@
41 47 var formHtml = template('djg-form-temp', sch);
42 48 $('form', modal).html(formHtml);
43 49 //切换
44   -
  50 + sch.rq1 =moment(new Date().getTime() - (60 *1000)).format("HH:mm");
  51 + sch.rq2 =moment(new Date()).format("HH:mm")
  52 + var formHtmls = template('sjZ-divs-temp', sch);
  53 + $('.sjzlist', modal).html(formHtmls);
45 54  
46 55  
47 56 $.get('/lineConfig/getByLineCode', {lineCode: sch.lineCode}, function (datan) {
... ...
src/main/resources/static/real_control_v2/zndd/type/mz.html
1 1 <div class="uk-modal ct-form-modal ct_move_modal" id="schedule-addsch-modal">
2   - <div class="uk-modal-dialog" style="width: 1400px;">
  2 + <div class="uk-modal-dialog" style="width: 1500px;">
3 3 <a href="" class="uk-modal-close uk-close"></a>
4 4 <div class="uk-modal-header">
5 5 <h2>满载</h2></div>
6   - <div class="uk-grid uk-width-2-5" style="float: left">
  6 +
  7 + <div class="uk-grid uk-width-1-6" style="float: left">
  8 + <div class="uk-width-5-5 sjzlist">
  9 +
  10 + </div>
  11 + </div>
  12 +
  13 + <div class="uk-grid uk-width-2-6" style="float: left">
7 14 <div class="uk-width-5-5">
8 15 <form class="uk-form uk-form-horizontal"> </form>
9 16 <div>
... ... @@ -12,7 +19,7 @@
12 19 </div>
13 20 </div>
14 21 </div>
15   - <div class="uk-grid uk-width-3-5 lj_1" >
  22 + <div class="uk-grid uk-width-3-6 lj_1" >
16 23 <div class="uk-width-1-4">
17 24 <ul data-uk-switcher="{connect:'#tempScheduleContent'}" class="uk-nav uk-nav-side left_tabs_lg">
18 25 <li data-handle="toAndFro"><a>1、往返</a></li>
... ... @@ -53,6 +60,12 @@
53 60 sch.stopStation = route[route.length - 1];
54 61 var formHtml = template('djg-form-temp', sch);
55 62 $('form', modal).html(formHtml);
  63 +
  64 + sch.rq1 =moment(new Date().getTime() - (60 *1000)).format("HH:mm");
  65 + sch.rq2 =moment(new Date()).format("HH:mm")
  66 + var formHtmls = template('sjZ-divs-temp', sch);
  67 + $('.sjzlist', modal).html(formHtmls);
  68 +
56 69 //切换
57 70 $("#destroySelect").on('change',function(){
58 71 let fn = $('#destroySelect').val();
... ... @@ -384,7 +397,6 @@
384 397 })();
385 398 </script>
386 399 </div>
387   -
388 400 <script id="djg-form-temp" type="text/html">
389 401 <input type="hidden" name="id" value=""/>
390 402  
... ...
src/main/resources/static/real_control_v2/zndd/type/sftz_1.html
... ... @@ -3,7 +3,19 @@
3 3 <a href="" class="uk-modal-close uk-close"></a>
4 4 <div class="uk-modal-header">
5 5 <h2>实发未发<i class="uk-icon-question-circle uk-icon-hover"></i></h2></div>
6   - <form class="uk-form uk-form-horizontal"> </form>
  6 + <div class="uk-grid uk-width-1-5" style="float: left">
  7 + <div class="uk-width-5-5 sjzlist">
  8 +
  9 + </div>
  10 + </div>
  11 +
  12 + <div class="uk-grid uk-width-4-5" >
  13 + <div class="uk-width-5-5">
  14 + <form class="uk-form uk-form-horizontal"> </form>
  15 + </div>
  16 +
  17 + </div>
  18 +
7 19 </div>
8 20  
9 21 <script>
... ... @@ -27,12 +39,13 @@
27 39 sch.stopStation = route[route.length - 1];
28 40 var formHtml = template('sftz-form-temp',{sch: sch, reportTypes:reportTypes});
29 41 $('form', modal).html(formHtml);
30   -
31   - //frequent_phrases.init(modal);
32   -
33   -
34   -
35   -
  42 +
  43 + sch.rq1 =moment(new Date().getTime() - (60 *1000)).format("HH:mm");
  44 + sch.rq2 =moment(new Date()).format("HH:mm")
  45 + var formHtmls = template('sjZ-divs-temp', sch);
  46 + $('.sjzlist', modal).html(formHtmls);
  47 +
  48 +
36 49 f.formValidation(gb_form_validation_opts);
37 50 f.on('success.form.fv', function(e) {
38 51 debugger
... ...
src/main/resources/static/real_control_v2/zndd/type/wd.html
1 1 <div class="uk-modal ct-form-modal ct_move_modal" id="wd-addsch-modal">
2   - <div class="uk-modal-dialog" style="width: 850px;">
  2 + <div class="uk-modal-dialog" style="width: 1050px;">
3 3 <a href="" class="uk-modal-close uk-close"></a>
4 4 <div class="uk-modal-header">
5 5 <h2>误点<i class="uk-icon-question-circle uk-icon-hover"></i></h2></div>
6 6  
7   - <div class="uk-grid uk-width-3-5 lj_1" style="float: left">
  7 +
  8 + <div class="uk-grid uk-width-1-6" style="float: left">
  9 + <div class="uk-width-5-5 sjzlist">
  10 +
  11 + </div>
  12 + </div>
  13 +
  14 + <div class="uk-grid uk-width-3-6 lj_1" style="float: left">
8 15 <form class="uk-form uk-form-horizontal"> </form>
9 16 </div>
10 17  
11 18  
12 19  
13   - <div class="uk-grid uk-width-2-5 lj_2" style="padding-left: 100px">
  20 + <div class="uk-grid uk-width-2-6 lj_2" style="padding-left: 100px">
14 21 <div class="uk-width-1-1" id ="tempsdsf"></div>
15 22  
16 23 </div>
... ... @@ -36,6 +43,10 @@
36 43 sch.stopStation = route[route.length - 1];
37 44 var formHtml = template('wd-form-temp', sch);
38 45 $('form', modal).html(formHtml);
  46 + sch.rq1 =moment(new Date().getTime() - (60 *1000)).format("HH:mm");
  47 + sch.rq2 =moment(new Date()).format("HH:mm")
  48 + var formHtmls = template('sjZ-divs-temp', sch);
  49 + $('.sjzlist', modal).html(formHtmls);
39 50 //车辆信息
40 51 carsArray = gb_data_basic.carsArray();
41 52 initAutoCom(f);
... ... @@ -60,7 +71,7 @@
60 71 e.preventDefault();
61 72 var data = $(this).serializeJSON();
62 73 let fn = $('#destroySelect').val();
63   - debugger
  74 +
64 75 if (fn == "1"){
65 76 //调整人员车辆
66 77 let datas = {
... ...
src/main/resources/static/real_control_v2/zndd/type/ycsf.html
1 1 <div class="uk-modal ct-form-modal ct_move_modal" id="ycsf-addsch-modal">
  2 +
2 3 <div class="uk-modal-dialog" style="width: 850px;">
3 4 <a href="" class="uk-modal-close uk-close"></a>
4 5 <div class="uk-modal-header">
5 6 <h2>异常实发<i class="uk-icon-question-circle uk-icon-hover"></i></h2></div>
6   - <form class="uk-form uk-form-horizontal"> </form>
  7 +
  8 + <div class="uk-grid uk-width-1-5" style="float: left">
  9 + <div class="uk-width-5-5 sjzlist">
  10 +
  11 + </div>
  12 + </div>
  13 + <div class="uk-grid uk-width-4-5" >
  14 +
  15 + <div class="uk-width-5-5">
  16 + <form class="uk-form uk-form-horizontal"> </form>
  17 + </div>
  18 +
  19 + </div>
  20 +
7 21 </div>
8 22  
9 23 <script>
... ... @@ -26,13 +40,18 @@
26 40 sch.stopStation = route[route.length - 1];
27 41 var formHtml = template('ycsf-form-temp', sch);
28 42 $('form', modal).html(formHtml);
  43 +
  44 +
  45 +
  46 + sch.rq1 =moment(new Date().getTime() - (60 *1000)).format("HH:mm");
  47 + sch.rq2 =moment(new Date()).format("HH:mm")
  48 + var formHtmls = template('sjZ-divs-temp', sch);
  49 + $('.sjzlist', modal).html(formHtmls);
29 50  
30 51 f.formValidation(gb_form_validation_opts);
31 52 f.on('success.form.fv', function(e) {
32   - debugger
33 53 e.preventDefault();
34 54 var data = $(this).serializeJSON();
35   - debugger
36 55  
37 56 gb_common.$post('/realSchedule/revokeRealOutgo_zndd', {
38 57 id: sch.sch.id,
... ...
src/main/resources/static/real_control_v2/zndd/yanshi/static/css/sjz.css
... ... @@ -50,7 +50,7 @@
50 50 .history-date ul li {
51 51 background:url(../image/yes.png) no-repeat 180px 0;
52 52 background-size: 15px 15px;
53   - padding-bottom:50px;
  53 + padding-bottom:10px;
54 54 zoom:1;
55 55 }
56 56 .history-date ul li.last {
... ... @@ -65,8 +65,8 @@
65 65 }
66 66 .history-date ul li h3 {
67 67 float:left;
68   - width:20%;
69   - text-align:right;
  68 + /*width:20%;
  69 + text-align:right;*/
70 70 padding-right:19px;
71 71 color:#c3c3c3;
72 72 font:normal 18px/16px Arial;
... ... @@ -77,14 +77,14 @@
77 77 font-size:12px;
78 78 }
79 79 .history-date ul li dl {
80   - width: 70%;
  80 + /*width: 70%;*/
81 81 float:left;
82   - padding-left:41px;
  82 +/* padding-left:41px;*/
83 83 margin-top:-5px;
84 84 font-family:微软雅黑;
85 85 }
86 86 .history-date ul li dl dt {
87   - font:20px/22px 微软雅黑;
  87 + /*font:20px/22px 微软雅黑;*/
88 88 color:#737373;
89 89 }
90 90 .history-date ul li dl dt span {
... ...