Commit 8f6ab784953b618c569f799ff4c04c7f100f3163
Merge branch 'pudong' of http://222.66.0.204:8090/panzhaov5/bsth_control
into pudong
Showing
73 changed files
with
2564 additions
and
546 deletions
Too many changes to show.
To preserve performance only 73 of 80 files are displayed.
src/main/java/com/bsth/common/Constants.java
| @@ -38,6 +38,7 @@ public class Constants { | @@ -38,6 +38,7 @@ public class Constants { | ||
| 38 | 38 | ||
| 39 | public static final String SESSION_USERNAME = "sessionUserName"; | 39 | public static final String SESSION_USERNAME = "sessionUserName"; |
| 40 | public static final String COMPANY_AUTHORITYS = "cmyAuths"; | 40 | public static final String COMPANY_AUTHORITYS = "cmyAuths"; |
| 41 | + public static final String STATION_AND_SECTION_COUNT = "/station/updateStationAndSectionCode"; | ||
| 41 | 42 | ||
| 42 | /** | 43 | /** |
| 43 | * 解除调度指令和班次的外键约束 | 44 | * 解除调度指令和班次的外键约束 |
src/main/java/com/bsth/controller/gps/GpsController.java
| @@ -212,5 +212,15 @@ public class GpsController { | @@ -212,5 +212,15 @@ public class GpsController { | ||
| 212 | map.put("pageData","10"); | 212 | map.put("pageData","10"); |
| 213 | return gpsService.Pagequery(map); | 213 | return gpsService.Pagequery(map); |
| 214 | } | 214 | } |
| 215 | + | ||
| 216 | + /** | ||
| 217 | + * 获取线路下所有车辆,包括实时设备 和 计划排班 | ||
| 218 | + * @param lineCode | ||
| 219 | + * @return | ||
| 220 | + */ | ||
| 221 | + @RequestMapping(value = "/allCarsByLine",method = RequestMethod.GET) | ||
| 222 | + public Map<String, Object> allCarsByLine(String lineCode){ | ||
| 223 | + return gpsService.allCarsByLine(lineCode); | ||
| 224 | + } | ||
| 215 | 225 | ||
| 216 | } | 226 | } |
src/main/java/com/bsth/controller/realcontrol/ChildTaskPlanController.java
| @@ -27,4 +27,9 @@ public class ChildTaskPlanController extends BaseController<ChildTaskPlan, Long> | @@ -27,4 +27,9 @@ public class ChildTaskPlanController extends BaseController<ChildTaskPlan, Long> | ||
| 27 | public Map<String, Object> delHistory(@PathVariable("id") Long id){ | 27 | public Map<String, Object> delHistory(@PathVariable("id") Long id){ |
| 28 | return childTaskPlanService.delHistory(id); | 28 | return childTaskPlanService.delHistory(id); |
| 29 | } | 29 | } |
| 30 | + | ||
| 31 | + @RequestMapping(value = "update", method = RequestMethod.POST) | ||
| 32 | + public Map<String, Object> update(ChildTaskPlan childTask){ | ||
| 33 | + return childTaskPlanService.update(childTask); | ||
| 34 | + } | ||
| 30 | } | 35 | } |
src/main/java/com/bsth/controller/realcontrol/ServiceDataInterface.java
| @@ -63,7 +63,9 @@ public class ServiceDataInterface { | @@ -63,7 +63,9 @@ public class ServiceDataInterface { | ||
| 63 | map = new HashMap<>(); | 63 | map = new HashMap<>(); |
| 64 | map.put("clZbh", sch.getClZbh()); | 64 | map.put("clZbh", sch.getClZbh()); |
| 65 | map.put("jGh", sch.getjGh()); | 65 | map.put("jGh", sch.getjGh()); |
| 66 | + map.put("jName", sch.getjGh()); | ||
| 66 | map.put("sGh", sch.getsGh()); | 67 | map.put("sGh", sch.getsGh()); |
| 68 | + map.put("sName", sch.getsGh()); | ||
| 67 | map.put("lpName", sch.getLpName()); | 69 | map.put("lpName", sch.getLpName()); |
| 68 | map.put("xlBm", sch.getXlBm()); | 70 | map.put("xlBm", sch.getXlBm()); |
| 69 | map.put("xlName", sch.getXlName()); | 71 | map.put("xlName", sch.getXlName()); |
src/main/java/com/bsth/controller/realcontrol/summary/TempSchSituationController.java
0 → 100644
| 1 | +package com.bsth.controller.realcontrol.summary; | ||
| 2 | + | ||
| 3 | +import com.bsth.controller.BaseController; | ||
| 4 | +import com.bsth.data.summary.entity.TempSchSituation; | ||
| 5 | +import com.bsth.data.summary.service.TempSchSituationService; | ||
| 6 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 7 | +import org.springframework.web.bind.annotation.RequestMapping; | ||
| 8 | +import org.springframework.web.bind.annotation.RequestParam; | ||
| 9 | +import org.springframework.web.bind.annotation.RestController; | ||
| 10 | + | ||
| 11 | +import javax.servlet.http.HttpServletRequest; | ||
| 12 | +import javax.servlet.http.HttpServletResponse; | ||
| 13 | +import java.util.Map; | ||
| 14 | + | ||
| 15 | +/** | ||
| 16 | + * Created by panzhao on 2017/11/1. | ||
| 17 | + */ | ||
| 18 | +@RestController | ||
| 19 | +@RequestMapping("/summary/temp_sch") | ||
| 20 | +public class TempSchSituationController extends BaseController<TempSchSituation, Long> { | ||
| 21 | + | ||
| 22 | + @Autowired | ||
| 23 | + TempSchSituationService tempSchSituationService; | ||
| 24 | + | ||
| 25 | + @RequestMapping("excel") | ||
| 26 | + public void excel(@RequestParam Map<String, Object> map, HttpServletRequest request, HttpServletResponse response) { | ||
| 27 | + tempSchSituationService.excel(map, request, response); | ||
| 28 | + } | ||
| 29 | +} |
src/main/java/com/bsth/data/gpsdata_v2/GpsRealData.java
| @@ -123,7 +123,13 @@ public class GpsRealData { | @@ -123,7 +123,13 @@ public class GpsRealData { | ||
| 123 | * @Title: get @Description: TODO(线路编码获取GPS集合) @throws | 123 | * @Title: get @Description: TODO(线路编码获取GPS集合) @throws |
| 124 | */ | 124 | */ |
| 125 | public List<GpsEntity> getByLine(String lineCode) { | 125 | public List<GpsEntity> getByLine(String lineCode) { |
| 126 | - NavigableSet<String> set = lineCode2Devices.get(lineCode); | 126 | + NavigableSet<String> set = lineCode2Devices.get(lineCode);//实际车载 |
| 127 | + Set<String> nbbmSet = dayOfSchedule.findCarByLineCode(lineCode);//计划用车 | ||
| 128 | + | ||
| 129 | + Map<String, String> nbbm2deviceMap = BasicData.deviceId2NbbmMap.inverse(); | ||
| 130 | + for(String nbbm : nbbmSet){ | ||
| 131 | + set.add(nbbm2deviceMap.get(nbbm)); | ||
| 132 | + } | ||
| 127 | 133 | ||
| 128 | List<GpsEntity> rs = new ArrayList<>(); | 134 | List<GpsEntity> rs = new ArrayList<>(); |
| 129 | GpsEntity gps; | 135 | GpsEntity gps; |
| @@ -135,14 +141,28 @@ public class GpsRealData { | @@ -135,14 +141,28 @@ public class GpsRealData { | ||
| 135 | continue; | 141 | continue; |
| 136 | 142 | ||
| 137 | sch = dayOfSchedule.execPlanMap().get(gps.getNbbm()); | 143 | sch = dayOfSchedule.execPlanMap().get(gps.getNbbm()); |
| 138 | - if (null != sch) | 144 | + if (null != sch){ |
| 139 | gps.setSchId(sch.getId()); | 145 | gps.setSchId(sch.getId()); |
| 146 | + if(!sch.getXlBm().equals(lineCode)){ | ||
| 147 | + //车辆在其他线路营运 | ||
| 148 | + gps.setRemark("执行 " + sch.getXlName() + " " + sch.getDfsj() + " 班次"); | ||
| 149 | + gps.setPlanCode(sch.getXlBm()); | ||
| 150 | + } | ||
| 151 | + else | ||
| 152 | + gps.setRemark(null); | ||
| 153 | + }else | ||
| 154 | + gps.setRemark(null); | ||
| 155 | + | ||
| 140 | rs.add(gps); | 156 | rs.add(gps); |
| 141 | } | 157 | } |
| 142 | 158 | ||
| 143 | return rs; | 159 | return rs; |
| 144 | } | 160 | } |
| 145 | 161 | ||
| 162 | + public static Set<String> findDevices(String lineCode){ | ||
| 163 | + return lineCode2Devices.get(lineCode); | ||
| 164 | + } | ||
| 165 | + | ||
| 146 | public List<GpsEntity> get(List<String> pArray) { | 166 | public List<GpsEntity> get(List<String> pArray) { |
| 147 | List<GpsEntity> list = new ArrayList<>(); | 167 | List<GpsEntity> list = new ArrayList<>(); |
| 148 | 168 |
src/main/java/com/bsth/data/gpsdata_v2/cache/GeoCacheData.java
| @@ -139,7 +139,7 @@ public class GeoCacheData { | @@ -139,7 +139,7 @@ public class GeoCacheData { | ||
| 139 | 139 | ||
| 140 | private void loadTccMapData(){ | 140 | private void loadTccMapData(){ |
| 141 | //加载停车场数据 | 141 | //加载停车场数据 |
| 142 | - String sql = "select PARK_CODE, ST_AsText(G_PARK_POINT) as G_PARK_POINT from bsth_c_car_park where park_code is not null and b_park_point is not null"; | 142 | + String sql = "select PARK_CODE, ST_AsText(G_PARK_POINT) as G_PARK_POINT from bsth_c_car_park where park_code is not null and b_park_point is not null and destroy=0"; |
| 143 | List<Map<String, Object>> tccList = jdbcTemplate.queryForList(sql); | 143 | List<Map<String, Object>> tccList = jdbcTemplate.queryForList(sql); |
| 144 | Map<String, Polygon> tccTempMap = new HashMap<>(); | 144 | Map<String, Polygon> tccTempMap = new HashMap<>(); |
| 145 | 145 |
src/main/java/com/bsth/data/gpsdata_v2/entity/GpsEntity.java
| @@ -100,6 +100,9 @@ public class GpsEntity implements Cloneable{ | @@ -100,6 +100,9 @@ public class GpsEntity implements Cloneable{ | ||
| 100 | */ | 100 | */ |
| 101 | private int source = -1; | 101 | private int source = -1; |
| 102 | 102 | ||
| 103 | + private String remark; | ||
| 104 | + private String planCode; | ||
| 105 | + | ||
| 103 | public Object clone() { | 106 | public Object clone() { |
| 104 | try { | 107 | try { |
| 105 | return super.clone(); | 108 | return super.clone(); |
| @@ -360,4 +363,20 @@ public class GpsEntity implements Cloneable{ | @@ -360,4 +363,20 @@ public class GpsEntity implements Cloneable{ | ||
| 360 | public void setPremiseCode(String premiseCode) { | 363 | public void setPremiseCode(String premiseCode) { |
| 361 | this.premiseCode = premiseCode; | 364 | this.premiseCode = premiseCode; |
| 362 | } | 365 | } |
| 366 | + | ||
| 367 | + public String getRemark() { | ||
| 368 | + return remark; | ||
| 369 | + } | ||
| 370 | + | ||
| 371 | + public void setRemark(String remark) { | ||
| 372 | + this.remark = remark; | ||
| 373 | + } | ||
| 374 | + | ||
| 375 | + public String getPlanCode() { | ||
| 376 | + return planCode; | ||
| 377 | + } | ||
| 378 | + | ||
| 379 | + public void setPlanCode(String planCode) { | ||
| 380 | + this.planCode = planCode; | ||
| 381 | + } | ||
| 363 | } | 382 | } |
src/main/java/com/bsth/data/gpsdata_v2/handlers/InStationProcess.java
| @@ -159,7 +159,7 @@ public class InStationProcess { | @@ -159,7 +159,7 @@ public class InStationProcess { | ||
| 159 | logger.info("车辆:" + nbbm + " 班次:" + sch.getDfsj() + "到终点, 时间:" + sch.getZdsjActual()); | 159 | logger.info("车辆:" + nbbm + " 班次:" + sch.getDfsj() + "到终点, 时间:" + sch.getZdsjActual()); |
| 160 | 160 | ||
| 161 | //清除车辆误点调整监听 | 161 | //清除车辆误点调整监听 |
| 162 | - LateAdjustHandle.remove(nbbm); | 162 | + LateAdjustHandle.remove(sch); |
| 163 | 163 | ||
| 164 | //将gps转换成下一个班次走向的站内信号(应对只有一个站内信号 即 发出时) | 164 | //将gps转换成下一个班次走向的站内信号(应对只有一个站内信号 即 发出时) |
| 165 | transformUpDown(gps, next); | 165 | transformUpDown(gps, next); |
src/main/java/com/bsth/data/gpsdata_v2/handlers/OutStationProcess.java
| @@ -113,7 +113,7 @@ public class OutStationProcess { | @@ -113,7 +113,7 @@ public class OutStationProcess { | ||
| 113 | dayOfSchedule.save(sch); | 113 | dayOfSchedule.save(sch); |
| 114 | 114 | ||
| 115 | //清理应发未发标记 | 115 | //清理应发未发标记 |
| 116 | - LateAdjustHandle.remove(sch.getClZbh()); | 116 | + LateAdjustHandle.remove(sch); |
| 117 | 117 | ||
| 118 | //发车的时候,同步一下状态 | 118 | //发车的时候,同步一下状态 |
| 119 | if (!gps.isService() && !dayOfSchedule.emptyService(sch)) | 119 | if (!gps.isService() && !dayOfSchedule.emptyService(sch)) |
src/main/java/com/bsth/data/line_version/EnableRouteVersionHandler.java
| @@ -59,6 +59,25 @@ public class EnableRouteVersionHandler { | @@ -59,6 +59,25 @@ public class EnableRouteVersionHandler { | ||
| 59 | } | 59 | } |
| 60 | } | 60 | } |
| 61 | 61 | ||
| 62 | + public void sync(String lineCode, int version){ | ||
| 63 | + //编程式事务 | ||
| 64 | + DataSourceTransactionManager tran = new DataSourceTransactionManager(jdbcTemplate.getDataSource()); | ||
| 65 | + DefaultTransactionDefinition def = new DefaultTransactionDefinition(); | ||
| 66 | + def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); | ||
| 67 | + TransactionStatus status = tran.getTransaction(def); | ||
| 68 | + | ||
| 69 | + | ||
| 70 | + try{ | ||
| 71 | + enableStation(lineCode, version); | ||
| 72 | + enableRoad(lineCode, version); | ||
| 73 | + | ||
| 74 | + tran.commit(status); | ||
| 75 | + }catch (Exception e){ | ||
| 76 | + tran.rollback(status); | ||
| 77 | + logger.error("", e); | ||
| 78 | + } | ||
| 79 | + } | ||
| 80 | + | ||
| 62 | /** | 81 | /** |
| 63 | * 启用新版本站点 | 82 | * 启用新版本站点 |
| 64 | * @param lineCode | 83 | * @param lineCode |
src/main/java/com/bsth/data/line_version/thread/FixedEnableVerionsThread.java
| @@ -14,7 +14,7 @@ import java.util.Map; | @@ -14,7 +14,7 @@ import java.util.Map; | ||
| 14 | * Created by panzhao on 2017/12/28. | 14 | * Created by panzhao on 2017/12/28. |
| 15 | */ | 15 | */ |
| 16 | @Component | 16 | @Component |
| 17 | -public class FixedEnableVerionsThread extends Thread{ | 17 | +public class FixedEnableVerionsThread extends Thread { |
| 18 | 18 | ||
| 19 | @Autowired | 19 | @Autowired |
| 20 | JdbcTemplate jdbcTemplate; | 20 | JdbcTemplate jdbcTemplate; |
| @@ -26,24 +26,39 @@ public class FixedEnableVerionsThread extends Thread{ | @@ -26,24 +26,39 @@ public class FixedEnableVerionsThread extends Thread{ | ||
| 26 | 26 | ||
| 27 | @Override | 27 | @Override |
| 28 | public void run() { | 28 | public void run() { |
| 29 | - try{ | 29 | + try { |
| 30 | 30 | ||
| 31 | String sql = "select * from bsth_c_line_versions where status=2 and start_date<=SYSDATE()"; | 31 | String sql = "select * from bsth_c_line_versions where status=2 and start_date<=SYSDATE()"; |
| 32 | 32 | ||
| 33 | List<Map<String, Object>> list = jdbcTemplate.queryForList(sql); | 33 | List<Map<String, Object>> list = jdbcTemplate.queryForList(sql); |
| 34 | - if(list.size() == 0) | ||
| 35 | - return; | 34 | + if (list.size() > 0) { |
| 35 | + String lineCode; | ||
| 36 | + int version; | ||
| 36 | 37 | ||
| 37 | - String lineCode; | ||
| 38 | - int version; | 38 | + for (Map<String, Object> map : list) { |
| 39 | + lineCode = map.get("line_code").toString(); | ||
| 40 | + version = Integer.parseInt(map.get("versions").toString()); | ||
| 39 | 41 | ||
| 40 | - for(Map<String, Object> map : list){ | ||
| 41 | - lineCode = map.get("line_code").toString(); | ||
| 42 | - version = Integer.parseInt(map.get("versions").toString()); | 42 | + enableRouteVersionHandler.enable(lineCode, version); |
| 43 | + } | ||
| 44 | + } | ||
| 45 | + | ||
| 46 | + | ||
| 47 | + //自动同步当前启用版本 | ||
| 48 | + long t = System.currentTimeMillis(); | ||
| 49 | + List<String> syncs = jdbcTemplate.queryForList("SELECT CONCAT(line_code,'_',versions) FROM bsth_c_line_versions WHERE STATUS = 1 AND CONCAT(line_code, '_', versions) IN (SELECT CONCAT(line_code, '_', version) FROM logger_route_synchro where t < " + t + ")", String.class); | ||
| 43 | 50 | ||
| 44 | - enableRouteVersionHandler.enable(lineCode, version); | 51 | + String[] ks; |
| 52 | + for (String keys : syncs) { | ||
| 53 | + ks = keys.split("_"); | ||
| 54 | + | ||
| 55 | + enableRouteVersionHandler.sync(ks[0], Integer.parseInt(ks[1])); | ||
| 56 | + | ||
| 57 | + logger.info("同步线路 " + ks[0] + " 版本:" + ks[1]); | ||
| 45 | } | 58 | } |
| 46 | - }catch (Exception e){ | 59 | + |
| 60 | + jdbcTemplate.update("delete from logger_route_synchro where t < " + t); | ||
| 61 | + } catch (Exception e) { | ||
| 47 | logger.error("", e); | 62 | logger.error("", e); |
| 48 | } | 63 | } |
| 49 | } | 64 | } |
src/main/java/com/bsth/data/pilot80/PilotReport.java
| @@ -20,9 +20,7 @@ import org.slf4j.LoggerFactory; | @@ -20,9 +20,7 @@ import org.slf4j.LoggerFactory; | ||
| 20 | import org.springframework.beans.factory.annotation.Autowired; | 20 | import org.springframework.beans.factory.annotation.Autowired; |
| 21 | import org.springframework.stereotype.Component; | 21 | import org.springframework.stereotype.Component; |
| 22 | 22 | ||
| 23 | -import java.util.ArrayList; | ||
| 24 | -import java.util.Collection; | ||
| 25 | -import java.util.List; | 23 | +import java.util.*; |
| 26 | import java.util.concurrent.ConcurrentHashMap; | 24 | import java.util.concurrent.ConcurrentHashMap; |
| 27 | 25 | ||
| 28 | /** | 26 | /** |
| @@ -55,10 +53,16 @@ public class PilotReport { | @@ -55,10 +53,16 @@ public class PilotReport { | ||
| 55 | 53 | ||
| 56 | private static ConcurrentHashMap<Integer, D80> d80Maps; | 54 | private static ConcurrentHashMap<Integer, D80> d80Maps; |
| 57 | 55 | ||
| 56 | + /** | ||
| 57 | + * 设备 ——> 最后一条请求出场记录 | ||
| 58 | + */ | ||
| 59 | + public static ConcurrentHashMap<String, D80> qqccMap; | ||
| 60 | + | ||
| 58 | Logger logger = LoggerFactory.getLogger(PilotReport.class); | 61 | Logger logger = LoggerFactory.getLogger(PilotReport.class); |
| 59 | 62 | ||
| 60 | static { | 63 | static { |
| 61 | d80Maps = new ConcurrentHashMap<>(); | 64 | d80Maps = new ConcurrentHashMap<>(); |
| 65 | + qqccMap = new ConcurrentHashMap<>(); | ||
| 62 | } | 66 | } |
| 63 | 67 | ||
| 64 | public void report(D80 d80) { | 68 | public void report(D80 d80) { |
| @@ -81,6 +85,7 @@ public class PilotReport { | @@ -81,6 +85,7 @@ public class PilotReport { | ||
| 81 | switch (d80.getData().getRequestCode()) { | 85 | switch (d80.getData().getRequestCode()) { |
| 82 | //出场请求 | 86 | //出场请求 |
| 83 | case 0xA3: | 87 | case 0xA3: |
| 88 | + qqccMap.put(d80.getDeviceId(), d80); | ||
| 84 | ScheduleRealInfo outSch = dayOfSchedule.searchNearByBcType(nbbm, "out"); | 89 | ScheduleRealInfo outSch = dayOfSchedule.searchNearByBcType(nbbm, "out"); |
| 85 | //如果有对应出场班次 | 90 | //如果有对应出场班次 |
| 86 | if (outSch != null && StringUtils.isEmpty(outSch.getFcsjActual())) { | 91 | if (outSch != null && StringUtils.isEmpty(outSch.getFcsjActual())) { |
| @@ -241,6 +246,7 @@ public class PilotReport { | @@ -241,6 +246,7 @@ public class PilotReport { | ||
| 241 | List<D80> rems = findByLine(lineCode); | 246 | List<D80> rems = findByLine(lineCode); |
| 242 | for (D80 d80 : rems) { | 247 | for (D80 d80 : rems) { |
| 243 | d80Maps.remove(d80.getId()); | 248 | d80Maps.remove(d80.getId()); |
| 249 | + qqccMap.remove(d80.getDeviceId()); | ||
| 244 | } | 250 | } |
| 245 | 251 | ||
| 246 | rems.clear(); | 252 | rems.clear(); |
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
| @@ -15,6 +15,7 @@ import com.bsth.repository.realcontrol.ScheduleRealInfoRepository; | @@ -15,6 +15,7 @@ import com.bsth.repository.realcontrol.ScheduleRealInfoRepository; | ||
| 15 | import com.bsth.service.schedule.SchedulePlanInfoService; | 15 | import com.bsth.service.schedule.SchedulePlanInfoService; |
| 16 | import com.bsth.websocket.handler.SendUtils; | 16 | import com.bsth.websocket.handler.SendUtils; |
| 17 | import com.google.common.collect.ArrayListMultimap; | 17 | import com.google.common.collect.ArrayListMultimap; |
| 18 | +import com.google.common.collect.HashMultimap; | ||
| 18 | import org.apache.commons.lang3.StringUtils; | 19 | import org.apache.commons.lang3.StringUtils; |
| 19 | import org.joda.time.format.DateTimeFormat; | 20 | import org.joda.time.format.DateTimeFormat; |
| 20 | import org.joda.time.format.DateTimeFormatter; | 21 | import org.joda.time.format.DateTimeFormatter; |
| @@ -55,6 +56,9 @@ public class DayOfSchedule { | @@ -55,6 +56,9 @@ public class DayOfSchedule { | ||
| 55 | // 按车辆分组的班次数据 | 56 | // 按车辆分组的班次数据 |
| 56 | private static ArrayListMultimap<String, ScheduleRealInfo> nbbmScheduleMap; | 57 | private static ArrayListMultimap<String, ScheduleRealInfo> nbbmScheduleMap; |
| 57 | 58 | ||
| 59 | + //按线路分组计划用车 | ||
| 60 | + private static HashMultimap<String, String> lineNbbmsMap; | ||
| 61 | + | ||
| 58 | //按路牌分组的班次数据 线路编码_路牌名称 ——> 班次list | 62 | //按路牌分组的班次数据 线路编码_路牌名称 ——> 班次list |
| 59 | private static ArrayListMultimap<String, ScheduleRealInfo> lpScheduleMap; | 63 | private static ArrayListMultimap<String, ScheduleRealInfo> lpScheduleMap; |
| 60 | 64 | ||
| @@ -199,6 +203,8 @@ public class DayOfSchedule { | @@ -199,6 +203,8 @@ public class DayOfSchedule { | ||
| 199 | reCalcExecPlan(nbbm); | 203 | reCalcExecPlan(nbbm); |
| 200 | } | 204 | } |
| 201 | 205 | ||
| 206 | + //分组计划用车 | ||
| 207 | + reCalcLineNbbms(); | ||
| 202 | // 页面 翻班通知 | 208 | // 页面 翻班通知 |
| 203 | //sendUtils.shiftSchedule(lineCode); | 209 | //sendUtils.shiftSchedule(lineCode); |
| 204 | } catch (Exception e) { | 210 | } catch (Exception e) { |
| @@ -543,15 +549,15 @@ public class DayOfSchedule { | @@ -543,15 +549,15 @@ public class DayOfSchedule { | ||
| 543 | * @Description: TODO(线路下运营的车辆) | 549 | * @Description: TODO(线路下运营的车辆) |
| 544 | */ | 550 | */ |
| 545 | public Set<String> findCarByLineCode(String lineCode) { | 551 | public Set<String> findCarByLineCode(String lineCode) { |
| 546 | - Set<String> rs = new HashSet<>(); | 552 | + /*Set<String> rs = new HashSet<>(); |
| 547 | 553 | ||
| 548 | Collection<ScheduleRealInfo> schs = nbbmScheduleMap.values(); | 554 | Collection<ScheduleRealInfo> schs = nbbmScheduleMap.values(); |
| 549 | for (ScheduleRealInfo sch : schs) { | 555 | for (ScheduleRealInfo sch : schs) { |
| 550 | if (sch.getXlBm().equals(lineCode)) | 556 | if (sch.getXlBm().equals(lineCode)) |
| 551 | rs.add(sch.getClZbh()); | 557 | rs.add(sch.getClZbh()); |
| 552 | } | 558 | } |
| 553 | - | ||
| 554 | - return rs; | 559 | +*/ |
| 560 | + return lineNbbmsMap.get(lineCode); | ||
| 555 | } | 561 | } |
| 556 | 562 | ||
| 557 | public List<ScheduleRealInfo> findByNbbm(String nbbm) { | 563 | public List<ScheduleRealInfo> findByNbbm(String nbbm) { |
| @@ -908,6 +914,8 @@ public class DayOfSchedule { | @@ -908,6 +914,8 @@ public class DayOfSchedule { | ||
| 908 | //重新计算车辆当前执行班次 | 914 | //重新计算车辆当前执行班次 |
| 909 | reCalcExecPlan(newClZbh); | 915 | reCalcExecPlan(newClZbh); |
| 910 | reCalcExecPlan(sch.getClZbh()); | 916 | reCalcExecPlan(sch.getClZbh()); |
| 917 | + //重新分组计划用车 | ||
| 918 | + reCalcLineNbbms(); | ||
| 911 | return ups; | 919 | return ups; |
| 912 | } | 920 | } |
| 913 | 921 | ||
| @@ -970,7 +978,6 @@ public class DayOfSchedule { | @@ -970,7 +978,6 @@ public class DayOfSchedule { | ||
| 970 | 978 | ||
| 971 | //删除班次数据 | 979 | //删除班次数据 |
| 972 | removeRealSch(lineCode, rq); | 980 | removeRealSch(lineCode, rq); |
| 973 | - //删除相关班次修正记录 | ||
| 974 | 981 | ||
| 975 | } | 982 | } |
| 976 | rs.put("status", ResponseCode.SUCCESS); | 983 | rs.put("status", ResponseCode.SUCCESS); |
| @@ -1083,6 +1090,20 @@ public class DayOfSchedule { | @@ -1083,6 +1090,20 @@ public class DayOfSchedule { | ||
| 1083 | return id2SchedulMap.size(); | 1090 | return id2SchedulMap.size(); |
| 1084 | } | 1091 | } |
| 1085 | 1092 | ||
| 1093 | + /** | ||
| 1094 | + * 重新计算线路计划用车 | ||
| 1095 | + */ | ||
| 1096 | + public void reCalcLineNbbms(){ | ||
| 1097 | + HashMultimap<String, String> multimap = HashMultimap.create(); | ||
| 1098 | + | ||
| 1099 | + Collection<ScheduleRealInfo> schs = nbbmScheduleMap.values(); | ||
| 1100 | + for (ScheduleRealInfo sch : schs) { | ||
| 1101 | + multimap.put(sch.getXlBm(), sch.getClZbh()); | ||
| 1102 | + } | ||
| 1103 | + | ||
| 1104 | + lineNbbmsMap = multimap; | ||
| 1105 | + } | ||
| 1106 | + | ||
| 1086 | public String sizeString(){ | 1107 | public String sizeString(){ |
| 1087 | return id2SchedulMap.size() + "/" + nbbmScheduleMap.size(); | 1108 | return id2SchedulMap.size() + "/" + nbbmScheduleMap.size(); |
| 1088 | } | 1109 | } |
src/main/java/com/bsth/data/schedule/late_adjust/LateAdjustHandle.java
| @@ -117,7 +117,7 @@ public class LateAdjustHandle implements ApplicationContextAware{ | @@ -117,7 +117,7 @@ public class LateAdjustHandle implements ApplicationContextAware{ | ||
| 117 | } | 117 | } |
| 118 | } | 118 | } |
| 119 | 119 | ||
| 120 | - public static void remove(String nbbm){ | 120 | +/* public static void remove(String nbbm){ |
| 121 | if(lateSchMap.containsKey(nbbm)){ | 121 | if(lateSchMap.containsKey(nbbm)){ |
| 122 | ScheduleRealInfo sch = lateSchMap.get(nbbm); | 122 | ScheduleRealInfo sch = lateSchMap.get(nbbm); |
| 123 | sch.setLate2(false); | 123 | sch.setLate2(false); |
| @@ -127,7 +127,7 @@ public class LateAdjustHandle implements ApplicationContextAware{ | @@ -127,7 +127,7 @@ public class LateAdjustHandle implements ApplicationContextAware{ | ||
| 127 | lateSchMap.remove(nbbm); | 127 | lateSchMap.remove(nbbm); |
| 128 | logger.info("移除误点调整 nbbm -" + nbbm); | 128 | logger.info("移除误点调整 nbbm -" + nbbm); |
| 129 | } | 129 | } |
| 130 | - } | 130 | + }*/ |
| 131 | 131 | ||
| 132 | /** | 132 | /** |
| 133 | * 车辆到站 | 133 | * 车辆到站 |
src/main/java/com/bsth/data/schedule/thread/ScheduleRefreshThread.java
| @@ -74,14 +74,6 @@ public class ScheduleRefreshThread extends Thread{ | @@ -74,14 +74,6 @@ public class ScheduleRefreshThread extends Thread{ | ||
| 74 | //重载排班数据 | 74 | //重载排班数据 |
| 75 | dayOfSchedule.reloadSch(lineCode, currSchDate, false); | 75 | dayOfSchedule.reloadSch(lineCode, currSchDate, false); |
| 76 | logger.info(lineCode + "翻班完成, " + currSchDate + " -班次数量:" + dayOfSchedule.findByLineCode(lineCode).size()); | 76 | logger.info(lineCode + "翻班完成, " + currSchDate + " -班次数量:" + dayOfSchedule.findByLineCode(lineCode).size()); |
| 77 | - | ||
| 78 | - | ||
| 79 | - //校验一下数据库和缓存的数据 | ||
| 80 | - /*int dbCount = dayOfSchedule.dbCount(lineCode, currSchDate); | ||
| 81 | - logger.info(lineCode + " 数据库数量:" + dbCount); | ||
| 82 | - if(dbCount != dayOfSchedule.findByLineCode(lineCode).size()){ | ||
| 83 | - logger.error("异常异常异常,,数据库和缓存数量不一致," + lineCode); | ||
| 84 | - }*/ | ||
| 85 | } | 77 | } |
| 86 | }catch (Exception e){ | 78 | }catch (Exception e){ |
| 87 | logger.error("班次更新失败!! -" + lineCode, e); | 79 | logger.error("班次更新失败!! -" + lineCode, e); |
src/main/java/com/bsth/data/summary/entity/TempSchSituation.java
0 → 100644
| 1 | +package com.bsth.data.summary.entity; | ||
| 2 | + | ||
| 3 | +import javax.persistence.Entity; | ||
| 4 | +import javax.persistence.Id; | ||
| 5 | +import javax.persistence.Table; | ||
| 6 | + | ||
| 7 | +/** | ||
| 8 | + * 临加情况 | ||
| 9 | + * Created by panzhao on 2017/10/31. | ||
| 10 | + */ | ||
| 11 | +@Entity | ||
| 12 | +@Table(name = "z_calc_temp_detail") | ||
| 13 | +public class TempSchSituation { | ||
| 14 | + | ||
| 15 | + @Id | ||
| 16 | + private Long id; | ||
| 17 | + | ||
| 18 | + private String rq; | ||
| 19 | + | ||
| 20 | + private String gsBm; | ||
| 21 | + | ||
| 22 | + private String fgsBm; | ||
| 23 | + | ||
| 24 | + private String lineCode; | ||
| 25 | + | ||
| 26 | + private String lineName; | ||
| 27 | + | ||
| 28 | + private String nbbm; | ||
| 29 | + | ||
| 30 | + private String jGh; | ||
| 31 | + | ||
| 32 | + private String sGh; | ||
| 33 | + | ||
| 34 | + private String reason; | ||
| 35 | + | ||
| 36 | + private int size; | ||
| 37 | + | ||
| 38 | + private Double mileage; | ||
| 39 | + | ||
| 40 | + private Long t; | ||
| 41 | + | ||
| 42 | + private String remark; | ||
| 43 | + | ||
| 44 | + private String idsStr; | ||
| 45 | + | ||
| 46 | + public Long getId() { | ||
| 47 | + return id; | ||
| 48 | + } | ||
| 49 | + | ||
| 50 | + public void setId(Long id) { | ||
| 51 | + this.id = id; | ||
| 52 | + } | ||
| 53 | + | ||
| 54 | + public String getRq() { | ||
| 55 | + return rq; | ||
| 56 | + } | ||
| 57 | + | ||
| 58 | + public void setRq(String rq) { | ||
| 59 | + this.rq = rq; | ||
| 60 | + } | ||
| 61 | + | ||
| 62 | + public String getLineCode() { | ||
| 63 | + return lineCode; | ||
| 64 | + } | ||
| 65 | + | ||
| 66 | + public void setLineCode(String lineCode) { | ||
| 67 | + this.lineCode = lineCode; | ||
| 68 | + } | ||
| 69 | + | ||
| 70 | + public String getLineName() { | ||
| 71 | + return lineName; | ||
| 72 | + } | ||
| 73 | + | ||
| 74 | + public void setLineName(String lineName) { | ||
| 75 | + this.lineName = lineName; | ||
| 76 | + } | ||
| 77 | + | ||
| 78 | + public String getNbbm() { | ||
| 79 | + return nbbm; | ||
| 80 | + } | ||
| 81 | + | ||
| 82 | + public void setNbbm(String nbbm) { | ||
| 83 | + this.nbbm = nbbm; | ||
| 84 | + } | ||
| 85 | + | ||
| 86 | + public String getjGh() { | ||
| 87 | + return jGh; | ||
| 88 | + } | ||
| 89 | + | ||
| 90 | + public void setjGh(String jGh) { | ||
| 91 | + this.jGh = jGh; | ||
| 92 | + } | ||
| 93 | + | ||
| 94 | + public String getsGh() { | ||
| 95 | + return sGh; | ||
| 96 | + } | ||
| 97 | + | ||
| 98 | + public void setsGh(String sGh) { | ||
| 99 | + this.sGh = sGh; | ||
| 100 | + } | ||
| 101 | + | ||
| 102 | + public String getReason() { | ||
| 103 | + return reason; | ||
| 104 | + } | ||
| 105 | + | ||
| 106 | + public void setReason(String reason) { | ||
| 107 | + this.reason = reason; | ||
| 108 | + } | ||
| 109 | + | ||
| 110 | + public int getSize() { | ||
| 111 | + return size; | ||
| 112 | + } | ||
| 113 | + | ||
| 114 | + public void setSize(int size) { | ||
| 115 | + this.size = size; | ||
| 116 | + } | ||
| 117 | + | ||
| 118 | + public Double getMileage() { | ||
| 119 | + return mileage; | ||
| 120 | + } | ||
| 121 | + | ||
| 122 | + public void setMileage(Double mileage) { | ||
| 123 | + this.mileage = mileage; | ||
| 124 | + } | ||
| 125 | + | ||
| 126 | + public Long getT() { | ||
| 127 | + return t; | ||
| 128 | + } | ||
| 129 | + | ||
| 130 | + public void setT(Long t) { | ||
| 131 | + this.t = t; | ||
| 132 | + } | ||
| 133 | + | ||
| 134 | + public String getRemark() { | ||
| 135 | + return remark; | ||
| 136 | + } | ||
| 137 | + | ||
| 138 | + public void setRemark(String remark) { | ||
| 139 | + this.remark = remark; | ||
| 140 | + } | ||
| 141 | + | ||
| 142 | + public String getIdsStr() { | ||
| 143 | + return idsStr; | ||
| 144 | + } | ||
| 145 | + | ||
| 146 | + public void setIdsStr(String idsStr) { | ||
| 147 | + this.idsStr = idsStr; | ||
| 148 | + } | ||
| 149 | + | ||
| 150 | + public String getGsBm() { | ||
| 151 | + return gsBm; | ||
| 152 | + } | ||
| 153 | + | ||
| 154 | + public void setGsBm(String gsBm) { | ||
| 155 | + this.gsBm = gsBm; | ||
| 156 | + } | ||
| 157 | + | ||
| 158 | + public String getFgsBm() { | ||
| 159 | + return fgsBm; | ||
| 160 | + } | ||
| 161 | + | ||
| 162 | + public void setFgsBm(String fgsBm) { | ||
| 163 | + this.fgsBm = fgsBm; | ||
| 164 | + } | ||
| 165 | +} |
src/main/java/com/bsth/data/summary/repository/TempSchSituationRepository.java
0 → 100644
| 1 | +package com.bsth.data.summary.repository; | ||
| 2 | + | ||
| 3 | +import com.bsth.data.summary.entity.TempSchSituation; | ||
| 4 | +import com.bsth.repository.BaseRepository; | ||
| 5 | +import org.springframework.stereotype.Repository; | ||
| 6 | + | ||
| 7 | +/** | ||
| 8 | + * Created by panzhao on 2017/11/1. | ||
| 9 | + */ | ||
| 10 | +@Repository | ||
| 11 | +public interface TempSchSituationRepository extends BaseRepository<TempSchSituation, Long> { | ||
| 12 | +} |
src/main/java/com/bsth/data/summary/service/TempSchSituationService.java
0 → 100644
| 1 | +package com.bsth.data.summary.service; | ||
| 2 | + | ||
| 3 | +import com.bsth.data.summary.entity.TempSchSituation; | ||
| 4 | +import com.bsth.service.BaseService; | ||
| 5 | + | ||
| 6 | +import javax.servlet.http.HttpServletRequest; | ||
| 7 | +import javax.servlet.http.HttpServletResponse; | ||
| 8 | +import java.util.Map; | ||
| 9 | + | ||
| 10 | +/** | ||
| 11 | + * Created by panzhao on 2017/11/1. | ||
| 12 | + */ | ||
| 13 | +public interface TempSchSituationService extends BaseService<TempSchSituation, Long> { | ||
| 14 | + void excel(Map<String, Object> map, HttpServletRequest request, HttpServletResponse response); | ||
| 15 | +} | ||
| 0 | \ No newline at end of file | 16 | \ No newline at end of file |
src/main/java/com/bsth/data/summary/service/impl/DestroySituationServiceImpl.java
| @@ -118,7 +118,7 @@ public class DestroySituationServiceImpl extends BaseServiceImpl<DestroySituatio | @@ -118,7 +118,7 @@ public class DestroySituationServiceImpl extends BaseServiceImpl<DestroySituatio | ||
| 118 | row.createCell(9).setCellValue(dys.getRemark()); | 118 | row.createCell(9).setCellValue(dys.getRemark()); |
| 119 | } | 119 | } |
| 120 | 120 | ||
| 121 | - String name = list.get(0).getLineName(); | 121 | + String name = "";//list.get(0).getLineName(); |
| 122 | wb.setSheetName(0, name + "烂班明细"); | 122 | wb.setSheetName(0, name + "烂班明细"); |
| 123 | //response 输出 | 123 | //response 输出 |
| 124 | String filename = name + map.get("rq_ge") + "至" + map.get("rq_le") + "烂班明细情况.xls"; | 124 | String filename = name + map.get("rq_ge") + "至" + map.get("rq_le") + "烂班明细情况.xls"; |
src/main/java/com/bsth/data/summary/service/impl/TempSchSituationServiceImpl.java
0 → 100644
| 1 | +package com.bsth.data.summary.service.impl; | ||
| 2 | + | ||
| 3 | +import com.bsth.data.summary.entity.TempSchSituation; | ||
| 4 | +import com.bsth.data.summary.service.TempSchSituationService; | ||
| 5 | +import com.bsth.data.utils.CustomStringUtils; | ||
| 6 | +import com.bsth.service.impl.BaseServiceImpl; | ||
| 7 | +import org.apache.poi.hssf.usermodel.HSSFWorkbook; | ||
| 8 | +import org.apache.poi.poifs.filesystem.POIFSFileSystem; | ||
| 9 | +import org.apache.poi.ss.usermodel.Row; | ||
| 10 | +import org.apache.poi.ss.usermodel.Sheet; | ||
| 11 | +import org.slf4j.Logger; | ||
| 12 | +import org.slf4j.LoggerFactory; | ||
| 13 | +import org.springframework.stereotype.Service; | ||
| 14 | + | ||
| 15 | +import javax.servlet.http.HttpServletRequest; | ||
| 16 | +import javax.servlet.http.HttpServletResponse; | ||
| 17 | +import java.io.FileInputStream; | ||
| 18 | +import java.io.OutputStream; | ||
| 19 | +import java.net.URLEncoder; | ||
| 20 | +import java.text.SimpleDateFormat; | ||
| 21 | +import java.util.*; | ||
| 22 | + | ||
| 23 | +/** | ||
| 24 | + * Created by panzhao on 2017/11/1. | ||
| 25 | + */ | ||
| 26 | +@Service | ||
| 27 | +public class TempSchSituationServiceImpl extends BaseServiceImpl<TempSchSituation, Long> implements TempSchSituationService { | ||
| 28 | + | ||
| 29 | + Logger logger = LoggerFactory.getLogger(this.getClass()); | ||
| 30 | + | ||
| 31 | + @Override | ||
| 32 | + public Iterable<TempSchSituation> list(Map<String, Object> map) { | ||
| 33 | + List<TempSchSituation> list = (List<TempSchSituation>) super.list(map); | ||
| 34 | + | ||
| 35 | + //排序 | ||
| 36 | + Collections.sort(list, new Comparator<TempSchSituation>() { | ||
| 37 | + @Override | ||
| 38 | + public int compare(TempSchSituation o1, TempSchSituation o2) { | ||
| 39 | + int i = o1.getRq().compareTo(o2.getRq()); | ||
| 40 | + if(i != 0) | ||
| 41 | + return i; | ||
| 42 | + | ||
| 43 | + i = o1.getLineName().compareTo(o2.getLineName()); | ||
| 44 | + if(i != 0) | ||
| 45 | + return i; | ||
| 46 | + | ||
| 47 | + i = (int) (o1.getT() - o2.getT()); | ||
| 48 | + if(i != 0) | ||
| 49 | + return i; | ||
| 50 | + | ||
| 51 | + i = o1.getReason().compareTo(o2.getReason()); | ||
| 52 | + | ||
| 53 | + return i; | ||
| 54 | + } | ||
| 55 | + }); | ||
| 56 | + return list; | ||
| 57 | + } | ||
| 58 | + | ||
| 59 | + @Override | ||
| 60 | + public void excel(Map<String, Object> map, HttpServletRequest request, HttpServletResponse response) { | ||
| 61 | + try { | ||
| 62 | + map.put("rq_le", CustomStringUtils.maxEndTime(map.get("rq_ge").toString() | ||
| 63 | + , map.get("rq_le").toString(), 62)); | ||
| 64 | + | ||
| 65 | + List<TempSchSituation> list = (List<TempSchSituation>) super.list(map); | ||
| 66 | + | ||
| 67 | + if(list.size() == 0){ | ||
| 68 | + response.setHeader("Content-type", "text/html;charset=UTF-8"); | ||
| 69 | + response.getWriter().print("<span style='color:red;font-size:24px;'>根据查询条件没有搜索到数据,别导了!</span>"); | ||
| 70 | + return ; | ||
| 71 | + } | ||
| 72 | + | ||
| 73 | + //排序 | ||
| 74 | + Collections.sort(list, new Comparator<TempSchSituation>() { | ||
| 75 | + @Override | ||
| 76 | + public int compare(TempSchSituation o1, TempSchSituation o2) { | ||
| 77 | + int i = o1.getRq().compareTo(o2.getRq()); | ||
| 78 | + if(i != 0) | ||
| 79 | + return i; | ||
| 80 | + | ||
| 81 | + i = o1.getLineName().compareTo(o2.getLineName()); | ||
| 82 | + if(i != 0) | ||
| 83 | + return i; | ||
| 84 | + | ||
| 85 | + i = (int) (o1.getT() - o2.getT()); | ||
| 86 | + if(i != 0) | ||
| 87 | + return i; | ||
| 88 | + | ||
| 89 | + i = o1.getReason().compareTo(o2.getReason()); | ||
| 90 | + | ||
| 91 | + return i; | ||
| 92 | + } | ||
| 93 | + }); | ||
| 94 | + | ||
| 95 | + //输出excel | ||
| 96 | + String basePath = Thread.currentThread().getContextClassLoader().getResource("").getPath(); | ||
| 97 | + String filePath = basePath + "/static/pages/summary/excel/临加明细情况.xls"; | ||
| 98 | + POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(filePath)); | ||
| 99 | + HSSFWorkbook wb = new HSSFWorkbook(fs); | ||
| 100 | + | ||
| 101 | + //写入数据 | ||
| 102 | + Sheet sheet = wb.getSheetAt(0); | ||
| 103 | + Row row; | ||
| 104 | + TempSchSituation tss; | ||
| 105 | + SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); | ||
| 106 | + for(int i = 0; i < list.size(); i++){ | ||
| 107 | + tss = list.get(i); | ||
| 108 | + row = sheet.createRow(i + 1); | ||
| 109 | + row.createCell(0).setCellValue(tss.getRq()); | ||
| 110 | + row.createCell(1).setCellValue(tss.getLineName()); | ||
| 111 | + row.createCell(2).setCellValue(tss.getNbbm()); | ||
| 112 | + row.createCell(3).setCellValue(tss.getjGh()); | ||
| 113 | + row.createCell(4).setCellValue(tss.getsGh()); | ||
| 114 | + row.createCell(5).setCellValue(tss.getSize()); | ||
| 115 | + row.createCell(6).setCellValue(tss.getMileage()); | ||
| 116 | + row.createCell(7).setCellValue(sdf.format(new Date(tss.getT()))); | ||
| 117 | + row.createCell(8).setCellValue(tss.getRemark()); | ||
| 118 | + } | ||
| 119 | + | ||
| 120 | + String name = "";//list.get(0).getLineName(); | ||
| 121 | + wb.setSheetName(0, name + "临加明细"); | ||
| 122 | + //response 输出 | ||
| 123 | + String filename = name + map.get("rq_ge") + "至" + map.get("rq_le") + "临加明细情况.xls"; | ||
| 124 | + response.setContentType("application/x-msdownload"); | ||
| 125 | + response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8")); | ||
| 126 | + | ||
| 127 | + OutputStream os = response.getOutputStream(); | ||
| 128 | + wb.write(os); | ||
| 129 | + os.flush(); | ||
| 130 | + os.close(); | ||
| 131 | + } catch (Exception e) { | ||
| 132 | + logger.error("", e); | ||
| 133 | + } | ||
| 134 | + } | ||
| 135 | + | ||
| 136 | +} | ||
| 0 | \ No newline at end of file | 137 | \ No newline at end of file |
src/main/java/com/bsth/filter/BaseFilter.java
| @@ -17,7 +17,7 @@ public abstract class BaseFilter implements Filter { | @@ -17,7 +17,7 @@ public abstract class BaseFilter implements Filter { | ||
| 17 | * 白名单 | 17 | * 白名单 |
| 18 | */ | 18 | */ |
| 19 | private String[] whiteListURLs = { Constants.LOGIN_PAGE,Constants.CAPTCHA, Constants.SERVICE_INTERFACE, | 19 | private String[] whiteListURLs = { Constants.LOGIN_PAGE,Constants.CAPTCHA, Constants.SERVICE_INTERFACE, |
| 20 | - Constants.ASSETS_URL, Constants.FAVICON_URL, Constants.METRONIC_URL, Constants.LOGIN, Constants.LOGIN_FAILURE, Constants.UPSTREAM_URL, Constants.XD_CHILD_PAGES, Constants.XD_REAL_GPS, Constants.UP_RFID_URL }; | 20 | + Constants.ASSETS_URL, Constants.FAVICON_URL, Constants.METRONIC_URL, Constants.LOGIN, Constants.LOGIN_FAILURE, Constants.UPSTREAM_URL, Constants.XD_CHILD_PAGES, Constants.XD_REAL_GPS, Constants.UP_RFID_URL, Constants.STATION_AND_SECTION_COUNT }; |
| 21 | 21 | ||
| 22 | @Override | 22 | @Override |
| 23 | public void destroy() { | 23 | public void destroy() { |
src/main/java/com/bsth/security/WebSecurityConfig.java
| @@ -36,7 +36,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { | @@ -36,7 +36,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { | ||
| 36 | public void configure(WebSecurity web) throws Exception { | 36 | public void configure(WebSecurity web) throws Exception { |
| 37 | // 白名单 | 37 | // 白名单 |
| 38 | web.ignoring().antMatchers(Constants.LOGIN_PAGE, Constants.LOGIN, Constants.ASSETS_URL, Constants.FAVICON_URL, Constants.CAPTCHA, | 38 | web.ignoring().antMatchers(Constants.LOGIN_PAGE, Constants.LOGIN, Constants.ASSETS_URL, Constants.FAVICON_URL, Constants.CAPTCHA, |
| 39 | - Constants.SERVICE_INTERFACE, Constants.METRONIC_URL, Constants.LOGIN_FAILURE, Constants.UPSTREAM_URL, Constants.XD_CHILD_PAGES, Constants.UP_RFID_URL); | 39 | + Constants.SERVICE_INTERFACE, Constants.METRONIC_URL, Constants.LOGIN_FAILURE, Constants.UPSTREAM_URL, Constants.XD_CHILD_PAGES, Constants.UP_RFID_URL,Constants.STATION_AND_SECTION_COUNT); |
| 40 | } | 40 | } |
| 41 | 41 | ||
| 42 | @Override | 42 | @Override |
src/main/java/com/bsth/security/filter/LoginInterceptor.java
| @@ -33,7 +33,7 @@ public class LoginInterceptor implements Filter { | @@ -33,7 +33,7 @@ public class LoginInterceptor implements Filter { | ||
| 33 | * 相比于 BaseFilter,此处对线调GPS请求进行了拦截验证 | 33 | * 相比于 BaseFilter,此处对线调GPS请求进行了拦截验证 |
| 34 | */ | 34 | */ |
| 35 | private String[] whiteListURLs = { Constants.LOGIN_PAGE,Constants.CAPTCHA, Constants.SERVICE_INTERFACE, | 35 | private String[] whiteListURLs = { Constants.LOGIN_PAGE,Constants.CAPTCHA, Constants.SERVICE_INTERFACE, |
| 36 | - Constants.ASSETS_URL, Constants.FAVICON_URL, Constants.METRONIC_URL, Constants.LOGIN, Constants.LOGIN_FAILURE, Constants.UPSTREAM_URL, Constants.XD_CHILD_PAGES, Constants.UP_RFID_URL }; | 36 | + Constants.ASSETS_URL, Constants.FAVICON_URL, Constants.METRONIC_URL, Constants.LOGIN, Constants.LOGIN_FAILURE, Constants.UPSTREAM_URL, Constants.XD_CHILD_PAGES, Constants.UP_RFID_URL,Constants.STATION_AND_SECTION_COUNT }; |
| 37 | 37 | ||
| 38 | 38 | ||
| 39 | @Override | 39 | @Override |
src/main/java/com/bsth/service/geo_data/impl/GeoDataServiceImpl.java
| @@ -174,14 +174,17 @@ public class GeoDataServiceImpl implements GeoDataService { | @@ -174,14 +174,17 @@ public class GeoDataServiceImpl implements GeoDataService { | ||
| 174 | int id = Integer.parseInt(map.get("id").toString()); | 174 | int id = Integer.parseInt(map.get("id").toString()); |
| 175 | String name = map.get("stationName").toString(); | 175 | String name = map.get("stationName").toString(); |
| 176 | String code = map.get("stationCode").toString(); | 176 | String code = map.get("stationCode").toString(); |
| 177 | - //String lineCode = map.get("lineCode").toString(); | ||
| 178 | - //String stationMark = map.get("stationMark").toString(); | 177 | + String lineCode = map.get("lineCode").toString(); |
| 178 | + String versions = map.get("versions").toString(); | ||
| 179 | 179 | ||
| 180 | //更新历史站点路由 | 180 | //更新历史站点路由 |
| 181 | jdbcTemplate.update("update bsth_c_ls_stationroute set station_name=? where id=?", name, id); | 181 | jdbcTemplate.update("update bsth_c_ls_stationroute set station_name=? where id=?", name, id); |
| 182 | //更新站点 | 182 | //更新站点 |
| 183 | jdbcTemplate.update("update bsth_c_station set station_name=? where station_cod=?", name, code); | 183 | jdbcTemplate.update("update bsth_c_station set station_name=? where station_cod=?", name, code); |
| 184 | 184 | ||
| 185 | + //写一条走向变更记录 | ||
| 186 | + jdbcTemplate.update("insert into logger_route_synchro(t, line_code, version) values(?, ?, ?)", System.currentTimeMillis(), lineCode, versions); | ||
| 187 | + | ||
| 185 | tran.commit(status); | 188 | tran.commit(status); |
| 186 | 189 | ||
| 187 | rs.put("station", findOne(id)); | 190 | rs.put("station", findOne(id)); |
| @@ -279,6 +282,10 @@ public class GeoDataServiceImpl implements GeoDataService { | @@ -279,6 +282,10 @@ public class GeoDataServiceImpl implements GeoDataService { | ||
| 279 | } | 282 | } |
| 280 | }); | 283 | }); |
| 281 | 284 | ||
| 285 | + | ||
| 286 | + //写一条走向变更记录 | ||
| 287 | + jdbcTemplate.update("insert into logger_route_synchro(t, line_code, version) values(?, ?, ?)", System.currentTimeMillis(), lineCode, versions); | ||
| 288 | + | ||
| 282 | tran.commit(status); | 289 | tran.commit(status); |
| 283 | 290 | ||
| 284 | //返回更新之后的数据 | 291 | //返回更新之后的数据 |
| @@ -765,6 +772,9 @@ public class GeoDataServiceImpl implements GeoDataService { | @@ -765,6 +772,9 @@ public class GeoDataServiceImpl implements GeoDataService { | ||
| 765 | } | 772 | } |
| 766 | }); | 773 | }); |
| 767 | 774 | ||
| 775 | + //写一条走向变更记录 | ||
| 776 | + jdbcTemplate.update("insert into logger_route_synchro(t, line_code, version) values(?, ?, ?)", System.currentTimeMillis(), lineCode, versions); | ||
| 777 | + | ||
| 768 | tran.commit(status); | 778 | tran.commit(status); |
| 769 | 779 | ||
| 770 | //返回更新之后的数据 | 780 | //返回更新之后的数据 |
| @@ -874,6 +884,9 @@ public class GeoDataServiceImpl implements GeoDataService { | @@ -874,6 +884,9 @@ public class GeoDataServiceImpl implements GeoDataService { | ||
| 874 | } | 884 | } |
| 875 | }); | 885 | }); |
| 876 | 886 | ||
| 887 | + //写一条走向变更记录 | ||
| 888 | + jdbcTemplate.update("insert into logger_route_synchro(t, line_code, version) values(?, ?, ?)", System.currentTimeMillis(), station.getLineCode(), station.getVersions()); | ||
| 889 | + | ||
| 877 | tran.commit(status); | 890 | tran.commit(status); |
| 878 | 891 | ||
| 879 | //返回更新之后的数据 | 892 | //返回更新之后的数据 |
| @@ -897,6 +910,9 @@ public class GeoDataServiceImpl implements GeoDataService { | @@ -897,6 +910,9 @@ public class GeoDataServiceImpl implements GeoDataService { | ||
| 897 | String sql = "update bsth_c_ls_sectionroute set destroy=1 where id=?"; | 910 | String sql = "update bsth_c_ls_sectionroute set destroy=1 where id=?"; |
| 898 | jdbcTemplate.update(sql, road.getId()); | 911 | jdbcTemplate.update(sql, road.getId()); |
| 899 | 912 | ||
| 913 | + //写一条走向变更记录 | ||
| 914 | + jdbcTemplate.update("insert into logger_route_synchro(t, line_code, version) values(?, ?, ?)", System.currentTimeMillis(), road.getLineCode(), road.getVersions()); | ||
| 915 | + | ||
| 900 | //返回更新之后的数据 | 916 | //返回更新之后的数据 |
| 901 | List<GeoRoad> list = findRoadByUpdown(road.getLineCode(), road.getDirections(), road.getVersions()); | 917 | List<GeoRoad> list = findRoadByUpdown(road.getLineCode(), road.getDirections(), road.getVersions()); |
| 902 | rs.put("list", list); | 918 | rs.put("list", list); |
src/main/java/com/bsth/service/gps/GpsService.java
| @@ -45,4 +45,6 @@ public interface GpsService { | @@ -45,4 +45,6 @@ public interface GpsService { | ||
| 45 | String enddate) throws ParseException; | 45 | String enddate) throws ParseException; |
| 46 | 46 | ||
| 47 | Map<String, Object> Pagequery(Map<String, Object> map); | 47 | Map<String, Object> Pagequery(Map<String, Object> map); |
| 48 | + | ||
| 49 | + Map<String,Object> allCarsByLine(String lineCode); | ||
| 48 | } | 50 | } |
src/main/java/com/bsth/service/gps/GpsServiceImpl.java
| @@ -7,15 +7,16 @@ import com.bsth.data.gpsdata_v2.GpsRealData; | @@ -7,15 +7,16 @@ import com.bsth.data.gpsdata_v2.GpsRealData; | ||
| 7 | import com.bsth.data.gpsdata_v2.cache.GeoCacheData; | 7 | import com.bsth.data.gpsdata_v2.cache.GeoCacheData; |
| 8 | import com.bsth.data.gpsdata_v2.entity.GpsEntity; | 8 | import com.bsth.data.gpsdata_v2.entity.GpsEntity; |
| 9 | import com.bsth.data.gpsdata_v2.utils.GeoUtils; | 9 | import com.bsth.data.gpsdata_v2.utils.GeoUtils; |
| 10 | +import com.bsth.data.pilot80.PilotReport; | ||
| 10 | import com.bsth.data.safe_driv.SafeDriv; | 11 | import com.bsth.data.safe_driv.SafeDriv; |
| 11 | import com.bsth.data.safe_driv.SafeDrivCenter; | 12 | import com.bsth.data.safe_driv.SafeDrivCenter; |
| 12 | import com.bsth.data.schedule.DayOfSchedule; | 13 | import com.bsth.data.schedule.DayOfSchedule; |
| 14 | +import com.bsth.entity.directive.D80; | ||
| 13 | import com.bsth.entity.realcontrol.ScheduleRealInfo; | 15 | import com.bsth.entity.realcontrol.ScheduleRealInfo; |
| 14 | import com.bsth.repository.CarParkRepository; | 16 | import com.bsth.repository.CarParkRepository; |
| 15 | import com.bsth.repository.StationRepository; | 17 | import com.bsth.repository.StationRepository; |
| 16 | import com.bsth.repository.realcontrol.ScheduleRealInfoRepository; | 18 | import com.bsth.repository.realcontrol.ScheduleRealInfoRepository; |
| 17 | import com.bsth.service.gps.entity.*; | 19 | import com.bsth.service.gps.entity.*; |
| 18 | -import com.bsth.util.DateUtils; | ||
| 19 | import com.bsth.util.TransGPS; | 20 | import com.bsth.util.TransGPS; |
| 20 | import com.bsth.util.TransGPS.Location; | 21 | import com.bsth.util.TransGPS.Location; |
| 21 | import com.bsth.util.db.DBUtils_MS; | 22 | import com.bsth.util.db.DBUtils_MS; |
| @@ -32,6 +33,7 @@ import org.slf4j.Logger; | @@ -32,6 +33,7 @@ import org.slf4j.Logger; | ||
| 32 | import org.slf4j.LoggerFactory; | 33 | import org.slf4j.LoggerFactory; |
| 33 | import org.springframework.beans.factory.annotation.Autowired; | 34 | import org.springframework.beans.factory.annotation.Autowired; |
| 34 | import org.springframework.dao.DataAccessException; | 35 | import org.springframework.dao.DataAccessException; |
| 36 | +import org.springframework.jdbc.core.BeanPropertyRowMapper; | ||
| 35 | import org.springframework.jdbc.core.JdbcTemplate; | 37 | import org.springframework.jdbc.core.JdbcTemplate; |
| 36 | import org.springframework.stereotype.Service; | 38 | import org.springframework.stereotype.Service; |
| 37 | 39 | ||
| @@ -164,56 +166,134 @@ public class GpsServiceImpl implements GpsService { | @@ -164,56 +166,134 @@ public class GpsServiceImpl implements GpsService { | ||
| 164 | return (byte) (((serviceState & 0x02000000) == 0x02000000) ? 1 : 0); | 166 | return (byte) (((serviceState & 0x02000000) == 0x02000000) ? 1 : 0); |
| 165 | } | 167 | } |
| 166 | 168 | ||
| 169 | + private static DateTimeFormatter fmtyyyy = DateTimeFormat.forPattern("yyyy"); | ||
| 167 | @Override | 170 | @Override |
| 168 | public List<Map<String, Object>> history(String[] nbbmArray, Long st, Long et) { | 171 | public List<Map<String, Object>> history(String[] nbbmArray, Long st, Long et) { |
| 169 | List<Map<String, Object>> list = new ArrayList<>(); | 172 | List<Map<String, Object>> list = new ArrayList<>(); |
| 170 | - // 超过最大查询范围,直接忽略 | ||
| 171 | if (et - st > GPS_RANGE) | 173 | if (et - st > GPS_RANGE) |
| 172 | return list; | 174 | return list; |
| 173 | 175 | ||
| 174 | - // 车辆编码转换成设备号 | ||
| 175 | - String[] devices = new String[nbbmArray.length]; | ||
| 176 | - for (int i = 0; i < nbbmArray.length; i++) { | ||
| 177 | - devices[i] = BasicData.deviceId2NbbmMap.inverse().get(nbbmArray[i]); | ||
| 178 | - } | ||
| 179 | - // day_of_year | 176 | + st = st * 1000; |
| 177 | + et = et * 1000; | ||
| 178 | + // day_of_year 分区字段 | ||
| 180 | Calendar sCal = Calendar.getInstance(); | 179 | Calendar sCal = Calendar.getInstance(); |
| 181 | - sCal.setTime(new Date(st * 1000)); | ||
| 182 | - int sDayOfYear = sCal.get(Calendar.DAY_OF_YEAR)/* 200 */; | ||
| 183 | - | 180 | + sCal.setTime(new Date(st)); |
| 181 | + int sDayOfYear = sCal.get(Calendar.DAY_OF_YEAR); | ||
| 184 | Calendar eCal = Calendar.getInstance(); | 182 | Calendar eCal = Calendar.getInstance(); |
| 185 | - eCal.setTime(new Date(et * 1000)); | ||
| 186 | - int eDayOfYear = eCal.get(Calendar.DAY_OF_YEAR)/* 200 */; | 183 | + eCal.setTime(new Date(et)); |
| 184 | + int eDayOfYear = eCal.get(Calendar.DAY_OF_YEAR); | ||
| 187 | 185 | ||
| 188 | - Calendar weekCal = Calendar.getInstance(); | 186 | + String nbbm = nbbmArray[0]; |
| 189 | 187 | ||
| 190 | - // 如果是同一天 | ||
| 191 | - if (sDayOfYear == eDayOfYear) { | ||
| 192 | - weekCal.setTimeInMillis(st * 1000); | ||
| 193 | - list = findByTs(weekCal.get(Calendar.WEEK_OF_YEAR), sDayOfYear, st, et, devices); | ||
| 194 | - } else { | ||
| 195 | - // 跨天 | ||
| 196 | - Long tempSt = 0L, tempEt = 0L; | ||
| 197 | - for (int i = sDayOfYear; i <= eDayOfYear; i++) { | ||
| 198 | - | ||
| 199 | - if (i == sDayOfYear) { | ||
| 200 | - tempSt = st; | ||
| 201 | - tempEt = DateUtils.getTimesnight(sCal); | ||
| 202 | - } else if (i == eDayOfYear) { | ||
| 203 | - tempSt = DateUtils.getTimesmorning(sCal); | ||
| 204 | - tempEt = et; | ||
| 205 | - } else { | ||
| 206 | - tempSt = DateUtils.getTimesmorning(sCal); | ||
| 207 | - tempEt = DateUtils.getTimesnight(sCal); | ||
| 208 | - } | 188 | + List<DeviceChange> dcs = findDeviceChangeLogs(nbbm, et, st); |
| 189 | + //没有设备变更记录,则参考车辆信息上的设备号 | ||
| 190 | + if(null == dcs || dcs.size() == 0){ | ||
| 191 | + DeviceChange dc = new DeviceChange(); | ||
| 192 | + dc.setNbbm(nbbm); | ||
| 193 | + dc.setDevice(BasicData.deviceId2NbbmMap.inverse().get(nbbm)); | ||
| 194 | + dc.setSt(st); | ||
| 195 | + dc.setEt(et); | ||
| 209 | 196 | ||
| 210 | - weekCal.setTimeInMillis(tempSt * 1000); | ||
| 211 | - list.addAll(findByTs(weekCal.get(Calendar.WEEK_OF_YEAR), i, tempSt, tempEt, devices)); | ||
| 212 | - // 加一天 | ||
| 213 | - sCal.add(Calendar.DATE, 1); | ||
| 214 | - } | 197 | + dcs.add(dc); |
| 215 | } | 198 | } |
| 216 | 199 | ||
| 200 | + //bsth_c_gps_info | ||
| 201 | + String tableName = "bsth_c_gps_info"; | ||
| 202 | + String sYear = fmtyyyy.print(st), | ||
| 203 | + currYear = fmtyyyy.print(System.currentTimeMillis()); | ||
| 204 | + | ||
| 205 | + if(!sYear.equals(currYear)) | ||
| 206 | + tableName += "_" + sYear; | ||
| 207 | + | ||
| 208 | + StringBuilder sql = new StringBuilder(""); | ||
| 209 | + long t1,t2; | ||
| 210 | + DeviceChange dc; | ||
| 211 | + for(int i = 0,len=dcs.size(); i < len; i++){ | ||
| 212 | + t1 = st; | ||
| 213 | + t2 = et; | ||
| 214 | + dc = dcs.get(i); | ||
| 215 | + if(dc.getSt() > st) | ||
| 216 | + t1 = dc.getSt(); | ||
| 217 | + if(dc.getEt() < et) | ||
| 218 | + t2 = dc.getEt(); | ||
| 219 | + | ||
| 220 | + sql.append("select DEVICE_ID,LON,LAT,TS,INOUT_STOP,SERVICE_STATE ,STOP_NO,DIRECTION,LINE_ID,SPEED_GPS,SECTION_CODE from "+tableName+" where days_year in ("+sDayOfYear+","+eDayOfYear+") " + | ||
| 221 | + " and device_id='"+dc.getDevice()+"' and ts > "+t1+" and ts < "+t2+" "); | ||
| 222 | + | ||
| 223 | + if(i == len - 1) | ||
| 224 | + sql.append(" ORDER BY device_id,ts,stop_no"); | ||
| 225 | + else | ||
| 226 | + sql.append(" UNION"); | ||
| 227 | + } | ||
| 228 | + | ||
| 229 | + logger.info("轨迹回放 nbbm: " + nbbm + " -st: " + st + " -et: " + et + " -sql: " + sql.toString()); | ||
| 230 | + | ||
| 231 | + // 查询到离站数据 | ||
| 232 | + Map<String, ArrivalEntity> arrivalMap = findArrivalByTs(st, et, dcs); | ||
| 233 | + | ||
| 234 | + //查询GPS数据 | ||
| 235 | + JdbcTemplate jdbcTemplate_ms = new JdbcTemplate(DBUtils_MS.getDataSource()); | ||
| 236 | + List<Map<String, Object>> dataList = jdbcTemplate_ms.queryForList(sql.toString()); | ||
| 237 | + | ||
| 238 | + Float lon, lat; | ||
| 239 | + Location bdLoc, gdLoc; | ||
| 240 | + int inOutStop; | ||
| 241 | + long serviceState; | ||
| 242 | + ArrivalEntity arrival; | ||
| 243 | + | ||
| 244 | + Map<String, Object> map = null; | ||
| 245 | + for(Map<String, Object> rs : dataList){ | ||
| 246 | + serviceState = map_get_long(rs, "SERVICE_STATE"); | ||
| 247 | + | ||
| 248 | + if(getGpsValid(serviceState) == 1) | ||
| 249 | + continue; | ||
| 250 | + | ||
| 251 | + map = new HashMap<>(); | ||
| 252 | + if(getGpsValid(serviceState) == 1) | ||
| 253 | + continue; | ||
| 254 | + | ||
| 255 | + map = new HashMap<>(); | ||
| 256 | + | ||
| 257 | + lon = map_get_float(rs, "LON"); | ||
| 258 | + lat = map_get_float(rs, "LAT"); | ||
| 259 | + // 高德坐标 | ||
| 260 | + gdLoc = TransGPS.transformFromWGSToGCJ(TransGPS.LocationMake(lon, lat)); | ||
| 261 | + map.put("gcj_lon", gdLoc.getLng()); | ||
| 262 | + map.put("gcj_lat", gdLoc.getLat()); | ||
| 263 | + // 百度坐标 | ||
| 264 | + bdLoc = TransGPS.bd_encrypt(gdLoc); | ||
| 265 | + map.put("bd_lon", bdLoc.getLng()); | ||
| 266 | + map.put("bd_lat", bdLoc.getLat()); | ||
| 267 | + //原始坐标 | ||
| 268 | + map.put("lon", lon); | ||
| 269 | + map.put("lat", lat); | ||
| 270 | + | ||
| 271 | + map.put("deviceId", map_get_str(rs, "DEVICE_ID")); | ||
| 272 | + map.put("ts", map_get_long(rs, "TS")); | ||
| 273 | + map.put("timestamp", map_get_long(rs, "TS")); | ||
| 274 | + map.put("stopNo", map_get_str(rs, "STOP_NO")); | ||
| 275 | + map.put("direction", map_get_float(rs,"DIRECTION")); | ||
| 276 | + | ||
| 277 | + map.put("lineId", map_get_str(rs, "LINE_ID")); | ||
| 278 | + map.put("speed", map_get_float(rs,"SPEED_GPS")); | ||
| 279 | + | ||
| 280 | + inOutStop = Integer.parseInt(rs.get("INOUT_STOP").toString()); | ||
| 281 | + map.put("inout_stop", inOutStop); | ||
| 282 | + | ||
| 283 | + arrival = arrivalMap.get(map_get_str(rs, "DEVICE_ID") + "_" + map_get_long(rs, "TS")); | ||
| 284 | + if (arrival != null) { | ||
| 285 | + map.put("inout_stop_info", arrival); | ||
| 286 | + map.put("inout_stop", arrival.getInOut()); | ||
| 287 | + } | ||
| 288 | + | ||
| 289 | + map.put("nbbm", BasicData.deviceId2NbbmMap.get(map_get_str(rs,"DEVICE_ID"))); | ||
| 290 | + map.put("state", getService(serviceState)); | ||
| 291 | + // 上下行 | ||
| 292 | + map.put("upDown", getUpOrDown(serviceState)); | ||
| 293 | + //路段编码 | ||
| 294 | + map.put("section_code", map_get_str(rs,"SECTION_CODE")); | ||
| 295 | + list.add(map); | ||
| 296 | + } | ||
| 217 | // 按时间排序 | 297 | // 按时间排序 |
| 218 | Collections.sort(list, new Comparator<Map<String, Object>>() { | 298 | Collections.sort(list, new Comparator<Map<String, Object>>() { |
| 219 | 299 | ||
| @@ -225,132 +305,97 @@ public class GpsServiceImpl implements GpsService { | @@ -225,132 +305,97 @@ public class GpsServiceImpl implements GpsService { | ||
| 225 | return list; | 305 | return list; |
| 226 | } | 306 | } |
| 227 | 307 | ||
| 228 | - public List<Map<String, Object>> findByTs(int weekOfYear, int dayOfYear, Long st, Long et, String[] devices) { | ||
| 229 | - List<Map<String, Object>> list = new ArrayList<>(); | ||
| 230 | - Map<String, Object> map = null; | ||
| 231 | - | ||
| 232 | - // 直接拼 in 语句 | ||
| 233 | - String inv = ""; | ||
| 234 | - for (String device : devices) | ||
| 235 | - inv += ("'" + device + "',"); | ||
| 236 | - inv = inv.substring(0, inv.length() - 1); | ||
| 237 | - | ||
| 238 | - // 查询到离站数据 | ||
| 239 | - Map<String, ArrivalEntity> arrivalMap = findArrivalByTs(weekOfYear, st, et, inv); | ||
| 240 | - | ||
| 241 | - String sql = "select DEVICE_ID,LON,LAT,TS,INOUT_STOP,SERVICE_STATE ,STOP_NO,DIRECTION,LINE_ID,SPEED_GPS,SECTION_CODE from bsth_c_gps_info where days_year=? and device_id in (" | ||
| 242 | - + inv + ") and ts > ? and ts < ? ORDER BY device_id,ts,stop_no"; | ||
| 243 | - try { | ||
| 244 | - conn = DBUtils_MS.getConnection(); | ||
| 245 | - ps = conn.prepareStatement(sql); | ||
| 246 | - ps.setInt(1, dayOfYear); | ||
| 247 | - /* ps.setArray(2, conn.createArrayOf("VARCHAR", devices)); */ | ||
| 248 | - ps.setLong(2, st * 1000); | ||
| 249 | - ps.setLong(3, et * 1000); | 308 | + private String map_get_str(Map<String, Object> map, String key){ |
| 309 | + return map.containsKey(key)?map.get(key).toString():""; | ||
| 310 | + } | ||
| 250 | 311 | ||
| 251 | - rs = ps.executeQuery(); | ||
| 252 | - Float lon, lat; | ||
| 253 | - Location bdLoc, gdLoc; | ||
| 254 | - int inOutStop; | ||
| 255 | - long serviceState; | ||
| 256 | - ArrivalEntity arrival; | ||
| 257 | - while (rs.next()) { | ||
| 258 | - serviceState = rs.getLong("SERVICE_STATE"); | ||
| 259 | - if(getGpsValid(serviceState) == 1) | ||
| 260 | - continue; | 312 | + private Long map_get_long(Map<String, Object> map, String key){ |
| 313 | + return map.containsKey(key)?Long.parseLong(map.get(key).toString()):-1; | ||
| 314 | + } | ||
| 261 | 315 | ||
| 262 | - map = new HashMap<>(); | 316 | + private Float map_get_float(Map<String, Object> map, String key){ |
| 317 | + return map.containsKey(key)?Float.parseFloat(map.get(key).toString()):-1; | ||
| 318 | + } | ||
| 263 | 319 | ||
| 264 | - lon = rs.getFloat("LON"); | ||
| 265 | - lat = rs.getFloat("LAT"); | ||
| 266 | - // 高德坐标 | ||
| 267 | - gdLoc = TransGPS.transformFromWGSToGCJ(TransGPS.LocationMake(lon, lat)); | ||
| 268 | - map.put("gcj_lon", gdLoc.getLng()); | ||
| 269 | - map.put("gcj_lat", gdLoc.getLat()); | ||
| 270 | - // 百度坐标 | ||
| 271 | - bdLoc = TransGPS.bd_encrypt(gdLoc); | ||
| 272 | - map.put("bd_lon", bdLoc.getLng()); | ||
| 273 | - map.put("bd_lat", bdLoc.getLat()); | ||
| 274 | - //原始坐标 | ||
| 275 | - map.put("lon", lon); | ||
| 276 | - map.put("lat", lat); | ||
| 277 | - | ||
| 278 | - map.put("deviceId", rs.getString("DEVICE_ID")); | ||
| 279 | - map.put("ts", rs.getLong("TS")); | ||
| 280 | - map.put("timestamp", rs.getLong("TS")); | ||
| 281 | - map.put("stopNo", rs.getString("STOP_NO")); | ||
| 282 | - map.put("direction", rs.getFloat("DIRECTION")); | 320 | + private List<DeviceChange> findDeviceChangeLogs(String nbbm, long t, long st){ |
| 321 | + List<DeviceChange> dcs = null; | ||
| 322 | + List<DeviceChange> rs = new ArrayList<>(); | ||
| 323 | + try{ | ||
| 283 | 324 | ||
| 284 | - map.put("lineId", rs.getString("LINE_ID")); | ||
| 285 | - map.put("speed", rs.getFloat("SPEED_GPS")); | 325 | + //JdbcTemplate jdbcTemplate_ms = new JdbcTemplate(DBUtils_MS.getDataSource()); |
| 326 | + dcs = jdbcTemplate.query("select cl_zbh as nbbm,new_device_no as device,UNIX_TIMESTAMP(qyrq) * 1000 as st from bsth_c_car_device where cl_zbh='"+nbbm+"' and UNIX_TIMESTAMP(qyrq)<" + (t / 1000) | ||
| 327 | + , BeanPropertyRowMapper.newInstance(DeviceChange.class)); | ||
| 286 | 328 | ||
| 287 | - inOutStop = rs.getInt("INOUT_STOP"); | ||
| 288 | - map.put("inout_stop", inOutStop); | ||
| 289 | 329 | ||
| 290 | - arrival = arrivalMap.get(rs.getString("DEVICE_ID") + "_" + rs.getLong("TS")); | ||
| 291 | - if (arrival != null) { | ||
| 292 | - map.put("inout_stop_info", arrival); | ||
| 293 | - map.put("inout_stop", arrival.getInOut()); | 330 | + Collections.sort(dcs, new Comparator<DeviceChange>() { |
| 331 | + @Override | ||
| 332 | + public int compare(DeviceChange d1, DeviceChange d2) { | ||
| 333 | + return (int) (d1.getSt() - d2.getSt()); | ||
| 294 | } | 334 | } |
| 335 | + }); | ||
| 295 | 336 | ||
| 296 | - map.put("nbbm", BasicData.deviceId2NbbmMap.get(rs.getString("DEVICE_ID"))); | ||
| 297 | - map.put("state", getService(serviceState)); | ||
| 298 | - // 上下行 | ||
| 299 | - map.put("upDown", getUpOrDown(serviceState)); | ||
| 300 | - //路段编码 | ||
| 301 | - map.put("section_code", rs.getString("SECTION_CODE")); | ||
| 302 | - list.add(map); | 337 | + for(int i = 0,len=dcs.size(); i < len - 1; i++){ |
| 338 | + dcs.get(i).setEt(dcs.get(i + 1).getSt()); | ||
| 303 | } | 339 | } |
| 304 | - } catch (Exception e) { | 340 | + |
| 341 | + for(DeviceChange dc : dcs){ | ||
| 342 | + if(dc.getEt() > st) | ||
| 343 | + rs.add(dc); | ||
| 344 | + } | ||
| 345 | + }catch (Exception e){ | ||
| 305 | logger.error("", e); | 346 | logger.error("", e); |
| 306 | - } finally { | ||
| 307 | - DBUtils_MS.close(rs, ps, conn); | ||
| 308 | } | 347 | } |
| 309 | - return list; | 348 | + return rs; |
| 310 | } | 349 | } |
| 311 | 350 | ||
| 312 | public static byte getGpsValid(long serviceState) { | 351 | public static byte getGpsValid(long serviceState) { |
| 313 | return (byte)(((serviceState & 0x80000000) == 0x80000000) ? 1 : 0); | 352 | return (byte)(((serviceState & 0x80000000) == 0x80000000) ? 1 : 0); |
| 314 | } | 353 | } |
| 315 | 354 | ||
| 316 | - public Map<String, ArrivalEntity> findArrivalByTs(int weekOfYear, Long st, Long et, String devicesInSql) { | 355 | + public Map<String, ArrivalEntity> findArrivalByTs(Long st, Long et, List<DeviceChange> dcs) { |
| 317 | Map<String, ArrivalEntity> map = new HashMap<>(); | 356 | Map<String, ArrivalEntity> map = new HashMap<>(); |
| 318 | 357 | ||
| 319 | - String sql = "SELECT DEVICE_ID,LINE_ID,STOP_NO,TS,UP_DOWN,IN_OUT,WEEKS_YEAR,CREATE_DATE FROM bsth_c_arrival_info where weeks_year=? and device_id in (" | ||
| 320 | - + devicesInSql + ") and ts > ? and ts < ?"; | ||
| 321 | - try { | ||
| 322 | - conn = DBUtils_MS.getConnection(); | ||
| 323 | - ps = conn.prepareStatement(sql); | ||
| 324 | - ps.setInt(1, weekOfYear); | ||
| 325 | - ps.setLong(2, st * 1000); | ||
| 326 | - ps.setLong(3, et * 1000); | 358 | + // weeks_year 分区字段 |
| 359 | + Calendar sCal = Calendar.getInstance(); | ||
| 360 | + sCal.setTime(new Date(st * 1000)); | ||
| 361 | + int sWeekOfYear = sCal.get(Calendar.WEEK_OF_YEAR); | ||
| 362 | + Calendar eCal = Calendar.getInstance(); | ||
| 363 | + eCal.setTime(new Date(et * 1000)); | ||
| 364 | + int eWeekOfYear = eCal.get(Calendar.DAY_OF_YEAR); | ||
| 365 | + | ||
| 366 | + StringBuilder sql = new StringBuilder(""); | ||
| 367 | + long t1,t2; | ||
| 368 | + DeviceChange dc; | ||
| 369 | + for(int i = 0,len=dcs.size(); i < len; i++){ | ||
| 370 | + t1 = st; | ||
| 371 | + t2 = et; | ||
| 372 | + dc = dcs.get(i); | ||
| 373 | + if(dc.getSt() > st) | ||
| 374 | + t1 = dc.getSt(); | ||
| 375 | + if(dc.getEt() < et) | ||
| 376 | + t2 = dc.getEt(); | ||
| 377 | + | ||
| 378 | + sql.append("SELECT DEVICE_ID,LINE_ID as LINE_CODE,STOP_NO,TS,UP_DOWN,IN_OUT,WEEKS_YEAR,CREATE_DATE FROM bsth_c_arrival_info " + | ||
| 379 | + " where weeks_year in ("+sWeekOfYear+", "+eWeekOfYear+") and device_id='"+dc.getDevice()+"' and ts > "+t1+" and ts < " + t2); | ||
| 380 | + | ||
| 381 | + if(i == len - 1) | ||
| 382 | + sql.append(" ORDER BY device_id,ts,stop_no"); | ||
| 383 | + else | ||
| 384 | + sql.append(" UNION"); | ||
| 385 | + } | ||
| 327 | 386 | ||
| 328 | - rs = ps.executeQuery(); | ||
| 329 | - ArrivalEntity arr; | ||
| 330 | - int inOut, updown; | ||
| 331 | - String prefix, stationName, lineId; | ||
| 332 | - while (rs.next()) { | ||
| 333 | - lineId = rs.getString("LINE_ID"); | ||
| 334 | - updown = rs.getInt("UP_DOWN"); | ||
| 335 | - prefix = lineId + "_" + updown + "_"; | ||
| 336 | - stationName = BasicData.getStationNameByCode(rs.getString("STOP_NO"), prefix); | 387 | + JdbcTemplate jdbcTemplate_ms = new JdbcTemplate(DBUtils_MS.getDataSource()); |
| 388 | + List<ArrivalEntity> list = jdbcTemplate_ms.query(sql.toString(), BeanPropertyRowMapper.newInstance(ArrivalEntity.class)); | ||
| 337 | 389 | ||
| 338 | - if (StringUtils.isEmpty(stationName)) | ||
| 339 | - continue; | 390 | + String stationName, prefix; |
| 391 | + for(ArrivalEntity arr : list){ | ||
| 392 | + prefix = arr.getLineCode() + "_" + arr.getUpDown() + "_"; | ||
| 393 | + stationName = BasicData.getStationNameByCode(arr.getStopNo(), prefix); | ||
| 340 | 394 | ||
| 341 | - arr = new ArrivalEntity(rs.getString("DEVICE_ID"), rs.getLong("TS"), lineId, | ||
| 342 | - updown, rs.getString("STOP_NO"), rs.getInt("IN_OUT"), rs.getLong("CREATE_DATE"), | ||
| 343 | - rs.getInt("WEEKS_YEAR"), stationName); | 395 | + arr.setStopName(stationName); |
| 344 | 396 | ||
| 345 | - // 设备号_时间戳_进出状态 为key | ||
| 346 | - // 反转进出状态 | ||
| 347 | - inOut = arr.getInOut() == 0 ? 1 : 0; | ||
| 348 | - map.put(arr.getDeviceId() + "_" + arr.getTs(), arr); | ||
| 349 | - } | ||
| 350 | - } catch (Exception e) { | ||
| 351 | - logger.error("", e); | ||
| 352 | - } finally { | ||
| 353 | - DBUtils_MS.close(rs, ps, conn); | 397 | + // 反转进出状态 |
| 398 | + map.put(arr.getDeviceId() + "_" + arr.getTs(), arr); | ||
| 354 | } | 399 | } |
| 355 | return map; | 400 | return map; |
| 356 | } | 401 | } |
| @@ -612,14 +657,6 @@ public class GpsServiceImpl implements GpsService { | @@ -612,14 +657,6 @@ public class GpsServiceImpl implements GpsService { | ||
| 612 | //获取历史gps 数据 | 657 | //获取历史gps 数据 |
| 613 | List<HistoryGps_DTOV3> list = HistoryGps_DTOV3.craete(history(new String[]{nbbm}, st, et)); | 658 | List<HistoryGps_DTOV3> list = HistoryGps_DTOV3.craete(history(new String[]{nbbm}, st, et)); |
| 614 | if (list != null && list.size() > 0) { | 659 | if (list != null && list.size() > 0) { |
| 615 | - //获取路段信息 | ||
| 616 | - /*String sql = "select ID, ST_AsText(GROAD_VECTOR) as GROAD_VECTOR,ROAD_CODE,ROAD_NAME,SPEED from bsth_c_road where road_code in(select section_code from bsth_c_sectionroute where line_code=? and destroy=0)"; | ||
| 617 | - List<Road_DTO> roads = Road_DTO.craete(jdbcTemplate.queryForList(sql, list.get(0).getLineId())); | ||
| 618 | - | ||
| 619 | - //为GPS数据关联路段信息 | ||
| 620 | - for (HistoryGps_DTOV3 gps : list) { | ||
| 621 | - matchRoadToGps(gps, roads); | ||
| 622 | - }*/ | ||
| 623 | //关联路段名称 | 660 | //关联路段名称 |
| 624 | Map<String, String> sectionCode2Name = GeoCacheData.sectionCode2NameMap(); | 661 | Map<String, String> sectionCode2Name = GeoCacheData.sectionCode2NameMap(); |
| 625 | for(HistoryGps_DTOV3 gps : list){ | 662 | for(HistoryGps_DTOV3 gps : list){ |
| @@ -1139,6 +1176,89 @@ public class GpsServiceImpl implements GpsService { | @@ -1139,6 +1176,89 @@ public class GpsServiceImpl implements GpsService { | ||
| 1139 | return paramMap; | 1176 | return paramMap; |
| 1140 | } | 1177 | } |
| 1141 | 1178 | ||
| 1179 | + @Override | ||
| 1180 | + public Map<String, Object> allCarsByLine(String lineCode) { | ||
| 1181 | + Map<String, Object> map = new HashMap(); | ||
| 1182 | + try{ | ||
| 1183 | + List<Map<String, Object>> list = new ArrayList<>(); | ||
| 1184 | + Map<String, Object> item; | ||
| 1185 | + GpsEntity gps; | ||
| 1186 | + //当天线路下营运的车辆 | ||
| 1187 | + Set<String> cars = dayOfSchedule.findCarByLineCode(lineCode); | ||
| 1188 | + ScheduleRealInfo sch; | ||
| 1189 | + String device; | ||
| 1190 | + | ||
| 1191 | + Map<String, Integer> allDevices = new HashMap<>(); | ||
| 1192 | + String execStr = ""; | ||
| 1193 | + D80 d80; | ||
| 1194 | + for(String nbbm : cars){ | ||
| 1195 | + item = new HashMap<>(); | ||
| 1196 | + device = BasicData.deviceId2NbbmMap.inverse().get(nbbm); | ||
| 1197 | + allDevices.put(device, 1); | ||
| 1198 | + item.put("nbbm", nbbm); | ||
| 1199 | + item.put("device", device); | ||
| 1200 | + | ||
| 1201 | + sch = dayOfSchedule.executeCurr(nbbm); | ||
| 1202 | + if(null != sch){ | ||
| 1203 | + execStr = (sch.getXlDir().equals("0")?"上行":"下行") + "("+sch.getDfsj()+")"; | ||
| 1204 | + if(!sch.getXlBm().equals(lineCode)) | ||
| 1205 | + execStr = sch.getXlName()+execStr; | ||
| 1206 | + else | ||
| 1207 | + item.put("schId", sch.getId()); | ||
| 1208 | + item.put("exec", execStr); | ||
| 1209 | + } | ||
| 1210 | + | ||
| 1211 | + gps = gpsRealData.get(device); | ||
| 1212 | + if(null != gps){ | ||
| 1213 | + item.put("loc", gps.getStationName()); | ||
| 1214 | + item.put("lineCodeReal", gps.getLineId()); | ||
| 1215 | + item.put("status", gps.isOffline()?"离线":"在线"); | ||
| 1216 | + item.put("gpsTs", gps.getTimestamp()); | ||
| 1217 | + } | ||
| 1218 | + //请求出场时间 | ||
| 1219 | + d80 = PilotReport.qqccMap.get(device); | ||
| 1220 | + if(null != d80) | ||
| 1221 | + item.put("qqcc", d80.getTimestamp()); | ||
| 1222 | + | ||
| 1223 | + list.add(item); | ||
| 1224 | + } | ||
| 1225 | + | ||
| 1226 | + //车载编码落在该线路的设备 | ||
| 1227 | + Set<String> devices = gpsRealData.findDevices(lineCode); | ||
| 1228 | + for(String d : devices){ | ||
| 1229 | + if(allDevices.containsKey(d)) | ||
| 1230 | + continue; | ||
| 1231 | + | ||
| 1232 | + gps = gpsRealData.get(d); | ||
| 1233 | + if(null == gps) | ||
| 1234 | + continue; | ||
| 1235 | + | ||
| 1236 | + item = new HashMap<>(); | ||
| 1237 | + item.put("nbbm", gps.getNbbm()); | ||
| 1238 | + item.put("device", d); | ||
| 1239 | + item.put("loc", gps.getStationName()); | ||
| 1240 | + item.put("lineCodeReal", gps.getLineId()); | ||
| 1241 | + item.put("status", gps.isOffline()?"离线":"在线"); | ||
| 1242 | + item.put("gpsTs", gps.getTimestamp()); | ||
| 1243 | + | ||
| 1244 | + //请求出场时间 | ||
| 1245 | + d80 = PilotReport.qqccMap.get(d); | ||
| 1246 | + if(null != d80) | ||
| 1247 | + item.put("qqcc", d80.getTimestamp()); | ||
| 1248 | + | ||
| 1249 | + list.add(item); | ||
| 1250 | + } | ||
| 1251 | + | ||
| 1252 | + map.put("list", list); | ||
| 1253 | + map.put("status", ResponseCode.SUCCESS); | ||
| 1254 | + }catch (Exception e){ | ||
| 1255 | + logger.error("", e); | ||
| 1256 | + map.put("status", ResponseCode.ERROR); | ||
| 1257 | + map.put("msg", e.getMessage()); | ||
| 1258 | + } | ||
| 1259 | + return map; | ||
| 1260 | + } | ||
| 1261 | + | ||
| 1142 | static List<GpsSpeed> findAll(Map<String, Object> map) { | 1262 | static List<GpsSpeed> findAll(Map<String, Object> map) { |
| 1143 | Connection conn = null; | 1263 | Connection conn = null; |
| 1144 | PreparedStatement ps = null; | 1264 | PreparedStatement ps = null; |
src/main/java/com/bsth/service/gps/entity/DeviceChange.java
0 → 100644
| 1 | +package com.bsth.service.gps.entity; | ||
| 2 | + | ||
| 3 | +/** | ||
| 4 | + * 车辆设备变更记录 | ||
| 5 | + * Created by panzhao on 2018/1/16. | ||
| 6 | + */ | ||
| 7 | +public class DeviceChange { | ||
| 8 | + | ||
| 9 | + private String nbbm; | ||
| 10 | + private String device; | ||
| 11 | + private long st; | ||
| 12 | + private long et; | ||
| 13 | + | ||
| 14 | + public String getNbbm() { | ||
| 15 | + return nbbm; | ||
| 16 | + } | ||
| 17 | + | ||
| 18 | + public void setNbbm(String nbbm) { | ||
| 19 | + this.nbbm = nbbm; | ||
| 20 | + } | ||
| 21 | + | ||
| 22 | + public String getDevice() { | ||
| 23 | + return device; | ||
| 24 | + } | ||
| 25 | + | ||
| 26 | + public void setDevice(String device) { | ||
| 27 | + this.device = device; | ||
| 28 | + } | ||
| 29 | + | ||
| 30 | + public long getSt() { | ||
| 31 | + return st; | ||
| 32 | + } | ||
| 33 | + | ||
| 34 | + public void setSt(long st) { | ||
| 35 | + this.st = st; | ||
| 36 | + } | ||
| 37 | + | ||
| 38 | + public long getEt() { | ||
| 39 | + return et; | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | + public void setEt(long et) { | ||
| 43 | + this.et = et; | ||
| 44 | + } | ||
| 45 | +} |
src/main/java/com/bsth/service/impl/BusIntervalServiceImpl.java
| @@ -1843,7 +1843,16 @@ public class BusIntervalServiceImpl implements BusIntervalService { | @@ -1843,7 +1843,16 @@ public class BusIntervalServiceImpl implements BusIntervalService { | ||
| 1843 | } | 1843 | } |
| 1844 | } | 1844 | } |
| 1845 | 1845 | ||
| 1846 | - sjlc = new BigDecimal(culateService.culateSjgl(keyMap.get(key)) + culateService.culateLjgl(keyMap.get(key))); | 1846 | + List<ScheduleRealInfo> tempList = new ArrayList<ScheduleRealInfo>(); |
| 1847 | + for(ScheduleRealInfo s : keyMap.get(key)){ | ||
| 1848 | + if(s.getcTasks() != null && s.getcTasks().size() > 0){ | ||
| 1849 | + tempList.add(s); | ||
| 1850 | + } else if(s.getZdsjActual() != null && s.getFcsjActual() != null){ | ||
| 1851 | + tempList.add(s); | ||
| 1852 | + } | ||
| 1853 | + } | ||
| 1854 | + | ||
| 1855 | + sjlc = new BigDecimal(culateService.culateSjgl(tempList) + culateService.culateLjgl(tempList)); | ||
| 1847 | lzlc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "路阻")); | 1856 | lzlc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "路阻")); |
| 1848 | dmlc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "吊慢")); | 1857 | dmlc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "吊慢")); |
| 1849 | gzlc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "故障")); | 1858 | gzlc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "故障")); |
| @@ -2421,13 +2430,13 @@ public class BusIntervalServiceImpl implements BusIntervalService { | @@ -2421,13 +2430,13 @@ public class BusIntervalServiceImpl implements BusIntervalService { | ||
| 2421 | } | 2430 | } |
| 2422 | 2431 | ||
| 2423 | for(Ylb ylb : queryYlbByRqXlbm){ | 2432 | for(Ylb ylb : queryYlbByRqXlbm){ |
| 2424 | - String key = sdfMonth.format(ylb.getRq()) + ylb.getXlbm(); | 2433 | + String key = ylb.getJsy() + ylb.getNbbm(); |
| 2425 | if(!ylbMap.containsKey(key)) | 2434 | if(!ylbMap.containsKey(key)) |
| 2426 | ylbMap.put(key, new ArrayList<Ylb>()); | 2435 | ylbMap.put(key, new ArrayList<Ylb>()); |
| 2427 | ylbMap.get(key).add(ylb); | 2436 | ylbMap.get(key).add(ylb); |
| 2428 | } | 2437 | } |
| 2429 | for(Dlb dlb : queryDlbByRqXlbm){ | 2438 | for(Dlb dlb : queryDlbByRqXlbm){ |
| 2430 | - String key = sdfMonth.format(dlb.getRq()) + dlb.getXlbm(); | 2439 | + String key = dlb.getJsy() + dlb.getNbbm(); |
| 2431 | if(!dlbMap.containsKey(key)) | 2440 | if(!dlbMap.containsKey(key)) |
| 2432 | dlbMap.put(key, new ArrayList<Dlb>()); | 2441 | dlbMap.put(key, new ArrayList<Dlb>()); |
| 2433 | dlbMap.get(key).add(dlb); | 2442 | dlbMap.get(key).add(dlb); |
| @@ -2480,8 +2489,9 @@ public class BusIntervalServiceImpl implements BusIntervalService { | @@ -2480,8 +2489,9 @@ public class BusIntervalServiceImpl implements BusIntervalService { | ||
| 2480 | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); | 2489 | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); |
| 2481 | // ScheduleRealInfo s = scheduleRealInfoRepository.scheduleById(scheduleRealInfos.get(0).getId()); | 2490 | // ScheduleRealInfo s = scheduleRealInfoRepository.scheduleById(scheduleRealInfos.get(0).getId()); |
| 2482 | ScheduleRealInfo s = scheduleRealInfos.get(0); | 2491 | ScheduleRealInfo s = scheduleRealInfos.get(0); |
| 2483 | - String xlbm = s.getXlBm(); | ||
| 2484 | String fcrq = s.getScheduleDateStr(); | 2492 | String fcrq = s.getScheduleDateStr(); |
| 2493 | + String jsy = s.getjGh(); | ||
| 2494 | + String nbbm = s.getClZbh(); | ||
| 2485 | 2495 | ||
| 2486 | int type = 0; | 2496 | int type = 0; |
| 2487 | Double ccyl = 0.0; | 2497 | Double ccyl = 0.0; |
| @@ -2491,8 +2501,8 @@ public class BusIntervalServiceImpl implements BusIntervalService { | @@ -2491,8 +2501,8 @@ public class BusIntervalServiceImpl implements BusIntervalService { | ||
| 2491 | Double zlc = 0.0; | 2501 | Double zlc = 0.0; |
| 2492 | // List<Ylb> listYlb = ylbRepository.queryListYlb(fcrq, s.getClZbh(), s.getjGh(),xlbm); | 2502 | // List<Ylb> listYlb = ylbRepository.queryListYlb(fcrq, s.getClZbh(), s.getjGh(),xlbm); |
| 2493 | // List<Dlb> listDlb = dlbRepository.queryListDlb(fcrq, s.getClZbh(), s.getjGh(),xlbm); | 2503 | // List<Dlb> listDlb = dlbRepository.queryListDlb(fcrq, s.getClZbh(), s.getjGh(),xlbm); |
| 2494 | - List<Ylb> listYlb = ylbMap.get(fcrq + xlbm); | ||
| 2495 | - List<Dlb> listDlb = dlbMap.get(fcrq + xlbm); | 2504 | + List<Ylb> listYlb = ylbMap.get(jsy + nbbm); |
| 2505 | + List<Dlb> listDlb = dlbMap.get(jsy + nbbm); | ||
| 2496 | 2506 | ||
| 2497 | // List<Cars> listCars = carsRepository.findCarsByCode(s.getClZbh()); | 2507 | // List<Cars> listCars = carsRepository.findCarsByCode(s.getClZbh()); |
| 2498 | List<Cars> listCars = carMap.get(s.getClZbh()); | 2508 | List<Cars> listCars = carMap.get(s.getClZbh()); |
src/main/java/com/bsth/service/realcontrol/ChildTaskPlanService.java
| @@ -10,4 +10,6 @@ public interface ChildTaskPlanService extends BaseService<ChildTaskPlan, Long>{ | @@ -10,4 +10,6 @@ public interface ChildTaskPlanService extends BaseService<ChildTaskPlan, Long>{ | ||
| 10 | Map<String,Object> saveHistory(ChildTaskPlan childTask); | 10 | Map<String,Object> saveHistory(ChildTaskPlan childTask); |
| 11 | 11 | ||
| 12 | Map<String,Object> delHistory(Long id); | 12 | Map<String,Object> delHistory(Long id); |
| 13 | + | ||
| 14 | +Map<String,Object> update(ChildTaskPlan childTask); | ||
| 13 | } | 15 | } |
src/main/java/com/bsth/service/realcontrol/impl/ChildTaskPlanServiceImpl.java
| @@ -21,6 +21,7 @@ import javax.transaction.Transactional; | @@ -21,6 +21,7 @@ import javax.transaction.Transactional; | ||
| 21 | import java.util.Date; | 21 | import java.util.Date; |
| 22 | import java.util.HashMap; | 22 | import java.util.HashMap; |
| 23 | import java.util.Map; | 23 | import java.util.Map; |
| 24 | +import java.util.Set; | ||
| 24 | 25 | ||
| 25 | @Service | 26 | @Service |
| 26 | public class ChildTaskPlanServiceImpl extends BaseServiceImpl<ChildTaskPlan, Long> implements ChildTaskPlanService { | 27 | public class ChildTaskPlanServiceImpl extends BaseServiceImpl<ChildTaskPlan, Long> implements ChildTaskPlanService { |
| @@ -131,6 +132,66 @@ public class ChildTaskPlanServiceImpl extends BaseServiceImpl<ChildTaskPlan, Lon | @@ -131,6 +132,66 @@ public class ChildTaskPlanServiceImpl extends BaseServiceImpl<ChildTaskPlan, Lon | ||
| 131 | return rs; | 132 | return rs; |
| 132 | } | 133 | } |
| 133 | 134 | ||
| 135 | + @Override | ||
| 136 | + public Map<String, Object> update(ChildTaskPlan t) { | ||
| 137 | + Map<String, Object> rs = new HashMap(); | ||
| 138 | + try { | ||
| 139 | + ScheduleRealInfo sch = dayOfSchedule.get(t.getSchedule().getId()); | ||
| 140 | + //保存起终点名称 | ||
| 141 | + if(StringUtils.isEmpty(t.getStartStationName())) | ||
| 142 | + t.setStartStationName(getStationName(sch.getXlBm(), t.getStartStation())); | ||
| 143 | + | ||
| 144 | + if(StringUtils.isEmpty(t.getEndStationName())) | ||
| 145 | + t.setEndStationName(getStationName(sch.getXlBm(), t.getEndStation())); | ||
| 146 | + if(t.getDestroyReason() == null) | ||
| 147 | + t.setDestroyReason(""); | ||
| 148 | + | ||
| 149 | + | ||
| 150 | + //根据id 获取原对象 | ||
| 151 | + ChildTaskPlan task = null; | ||
| 152 | + Set<ChildTaskPlan> set = sch.getcTasks(); | ||
| 153 | + for(ChildTaskPlan obj : set){ | ||
| 154 | + if(obj.getId() == t.getId()){ | ||
| 155 | + task = obj; | ||
| 156 | + break; | ||
| 157 | + } | ||
| 158 | + } | ||
| 159 | + | ||
| 160 | + if(null == task){ | ||
| 161 | + rs.put("status", ResponseCode.ERROR); | ||
| 162 | + rs.put("msg", "失败,服务端无法定位到数据!"); | ||
| 163 | + return rs; | ||
| 164 | + } | ||
| 165 | + //更新字段 | ||
| 166 | + task.setStartStation(t.getStartStation()); | ||
| 167 | + task.setStartStationName(t.getStartStationName()); | ||
| 168 | + task.setEndStation(t.getEndStation()); | ||
| 169 | + task.setEndStationName(t.getEndStationName()); | ||
| 170 | + task.setStartDate(t.getStartDate()); | ||
| 171 | + task.setEndDate(t.getEndDate()); | ||
| 172 | + task.setMileageType(t.getMileageType()); | ||
| 173 | + task.setMileage(t.getMileage()); | ||
| 174 | + task.setDestroy(t.isDestroy()); | ||
| 175 | + task.setDestroyReason(t.getReason()); | ||
| 176 | + task.setReason(t.getReason()); | ||
| 177 | + task.setType1(t.getType1()); | ||
| 178 | + task.setType2(t.getType2()); | ||
| 179 | + task.setNoClerk(t.isNoClerk()); | ||
| 180 | + task.setRemarks(t.getRemarks()); | ||
| 181 | + | ||
| 182 | + //更新数据库 | ||
| 183 | + super.save(task); | ||
| 184 | + | ||
| 185 | + rs.put("status", ResponseCode.SUCCESS); | ||
| 186 | + rs.put("t", sch); | ||
| 187 | + }catch (Exception e){ | ||
| 188 | + logger.error("", e); | ||
| 189 | + rs.put("status", ResponseCode.ERROR); | ||
| 190 | + rs.put("msg", e.getMessage()); | ||
| 191 | + } | ||
| 192 | + return rs; | ||
| 193 | + } | ||
| 194 | + | ||
| 134 | private String getStationName(String lineCode, String stationCode){ | 195 | private String getStationName(String lineCode, String stationCode){ |
| 135 | String name; | 196 | String name; |
| 136 | String prefix1 = lineCode + "_" + 0 + "_", | 197 | String prefix1 = lineCode + "_" + 0 + "_", |
src/main/resources/static/index.html
| @@ -61,9 +61,9 @@ | @@ -61,9 +61,9 @@ | ||
| 61 | href="/metronic_v4.5.4/plugins/bootstrap-datetimepicker-2/css/bootstrap-datetimepicker.min.css" | 61 | href="/metronic_v4.5.4/plugins/bootstrap-datetimepicker-2/css/bootstrap-datetimepicker.min.css" |
| 62 | rel="stylesheet" type="text/css" /> | 62 | rel="stylesheet" type="text/css" /> |
| 63 | <!-- table 表格控件 --> | 63 | <!-- table 表格控件 --> |
| 64 | - <link rel="stylesheet" | ||
| 65 | - href="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.css" | ||
| 66 | - type="text/css" /> | 64 | + <!--<link rel="stylesheet"--> |
| 65 | + <!--href="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.css"--> | ||
| 66 | + <!--type="text/css" />--> | ||
| 67 | <link href="/metronic_v4.5.4/plugins/bootstrap-tagsinput/bootstrap-tagsinput.css" rel="stylesheet" type="text/css"/> | 67 | <link href="/metronic_v4.5.4/plugins/bootstrap-tagsinput/bootstrap-tagsinput.css" rel="stylesheet" type="text/css"/> |
| 68 | <!-- handsontable样式 --> | 68 | <!-- handsontable样式 --> |
| 69 | <link rel="stylesheet" | 69 | <link rel="stylesheet" |
src/main/resources/static/pages/base/geo_data_edit/js/submit.js
| @@ -52,6 +52,8 @@ var gb_data_submit = function () { | @@ -52,6 +52,8 @@ var gb_data_submit = function () { | ||
| 52 | $(document).on('click', '.up_down_route_list .station_route .ul_li_input .save_icon_btn', function (e) { | 52 | $(document).on('click', '.up_down_route_list .station_route .ul_li_input .save_icon_btn', function (e) { |
| 53 | var f = $(this).parents('form'); | 53 | var f = $(this).parents('form'); |
| 54 | var data = f.serializeJSON(); | 54 | var data = f.serializeJSON(); |
| 55 | + data.lineCode = g_line_code; | ||
| 56 | + data.versions = g_version; | ||
| 55 | 57 | ||
| 56 | UIkit.modal.confirm('确定将站点名称修改为【'+data.stationName+'】?').then(function() { | 58 | UIkit.modal.confirm('确定将站点名称修改为【'+data.stationName+'】?').then(function() { |
| 57 | show_run_text('正在保存...'); | 59 | show_run_text('正在保存...'); |
src/main/resources/static/pages/base/geo_data_edit/js/version_manage.js
| @@ -152,6 +152,7 @@ var gb_version_manage = function () { | @@ -152,6 +152,7 @@ var gb_version_manage = function () { | ||
| 152 | var version = $(this).data('version'); | 152 | var version = $(this).data('version'); |
| 153 | 153 | ||
| 154 | storage.setItem("geo_data_edit_line_version" , version); | 154 | storage.setItem("geo_data_edit_line_version" , version); |
| 155 | + g_version = version; | ||
| 155 | $loadPanel.show(); | 156 | $loadPanel.show(); |
| 156 | clearAll(); | 157 | clearAll(); |
| 157 | startup(); | 158 | startup(); |
src/main/resources/static/pages/base/line/list.html
| @@ -350,7 +350,7 @@ | @@ -350,7 +350,7 @@ | ||
| 350 | </td> | 350 | </td> |
| 351 | <td> | 351 | <td> |
| 352 | <a href="/pages/base/stationroute/list.html?no={{obj.id}}" class="btn default blue-stripe btn-sm" data-pjax> 查看</a> | 352 | <a href="/pages/base/stationroute/list.html?no={{obj.id}}" class="btn default blue-stripe btn-sm" data-pjax> 查看</a> |
| 353 | - <a href="javascript:window.localStorage.setItem('geo_data_edit_line_code' , '{{obj.lineCode}}');window.localStorage.removeItem('geo_data_edit_line_version');window.location.href='/pages/base/geo_data_edit/uk3_wrap.html';" class="btn default blue-stripe btn-sm" data-pjax> 查看 </a> | 353 | + <!--<a href="javascript:window.localStorage.setItem('geo_data_edit_line_code' , '{{obj.lineCode}}');window.localStorage.removeItem('geo_data_edit_line_version');window.location.href='/pages/base/geo_data_edit/uk3_wrap.html';" class="btn default blue-stripe btn-sm" data-pjax> 查看 </a>--> |
| 354 | </td> | 354 | </td> |
| 355 | <td> | 355 | <td> |
| 356 | <a href="details.html?no={{obj.id}}" class="btn default blue-stripe btn-sm" data-pjax> 详细 </a> | 356 | <a href="details.html?no={{obj.id}}" class="btn default blue-stripe btn-sm" data-pjax> 详细 </a> |
src/main/resources/static/pages/base/stationroute/js/stationroute-list-map.js
| @@ -22,7 +22,7 @@ | @@ -22,7 +22,7 @@ | ||
| 22 | * - - - - - -》getSectionListPlonly:根据坐标点获取两点之间的折线路段(手动规划) | 22 | * - - - - - -》getSectionListPlonly:根据坐标点获取两点之间的折线路段(手动规划) |
| 23 | */ | 23 | */ |
| 24 | 24 | ||
| 25 | -var WorldsBMap = function () { | 25 | +window.WorldsBMap = function () { |
| 26 | 26 | ||
| 27 | /** WorldsBMap 全局变量定义 mapBValue:地图对象;polygon:多边形;polyUpline:走向折线;circle:圆 */ | 27 | /** WorldsBMap 全局变量定义 mapBValue:地图对象;polygon:多边形;polyUpline:走向折线;circle:圆 */ |
| 28 | var mapBValue = '';polygon='',polyUpline='',circle='',iseditStatus = false; | 28 | var mapBValue = '';polygon='',polyUpline='',circle='',iseditStatus = false; |
src/main/resources/static/pages/forms/mould/waybill_minhang.xls
No preview for this file type
src/main/resources/static/pages/forms/mould/waybill_minhang_dl.xls
No preview for this file type
src/main/resources/static/pages/scheduleApp/module/basicInfo/deviceInfoManage/detail.html
| @@ -98,7 +98,7 @@ | @@ -98,7 +98,7 @@ | ||
| 98 | <label class="col-md-2 control-label">启用日期*:</label> | 98 | <label class="col-md-2 control-label">启用日期*:</label> |
| 99 | <div class="col-md-3"> | 99 | <div class="col-md-3"> |
| 100 | <input type="text" class="form-control" | 100 | <input type="text" class="form-control" |
| 101 | - name="qyrq" uib-datepicker-popup="yyyy年MM月dd日" | 101 | + name="qyrq" uib-datepicker-popup="yyyy年MM月dd日 HH:mm" |
| 102 | ng-model="ctrl.deviceInfoForDetail.qyrq" readonly/> | 102 | ng-model="ctrl.deviceInfoForDetail.qyrq" readonly/> |
| 103 | </div> | 103 | </div> |
| 104 | </div> | 104 | </div> |
src/main/resources/static/pages/scheduleApp/module/basicInfo/deviceInfoManage/edit.html
| @@ -82,13 +82,8 @@ | @@ -82,13 +82,8 @@ | ||
| 82 | <div class="form-group has-success has-feedback"> | 82 | <div class="form-group has-success has-feedback"> |
| 83 | <label class="col-md-2 control-label">旧终端号*:</label> | 83 | <label class="col-md-2 control-label">旧终端号*:</label> |
| 84 | <div class="col-md-3"> | 84 | <div class="col-md-3"> |
| 85 | - <input type="text" class="form-control" | ||
| 86 | - name="oldDeviceNo" ng-model="ctrl.deviceInfoForSave.oldDeviceNo" | ||
| 87 | - required placeholder="请输入旧终端号"/> | ||
| 88 | - </div> | ||
| 89 | - <!-- 隐藏块,显示验证信息 --> | ||
| 90 | - <div class="alert alert-danger well-sm" ng-show="myForm.oldDeviceNo.$error.required"> | ||
| 91 | - 旧终端号必须填写 | 85 | + <input type="text" class="form-control" name="oldDeviceNo" |
| 86 | + ng-model="ctrl.deviceInfoForSave.oldDeviceNo" readonly/> | ||
| 92 | </div> | 87 | </div> |
| 93 | </div> | 88 | </div> |
| 94 | 89 | ||
| @@ -143,31 +138,40 @@ | @@ -143,31 +138,40 @@ | ||
| 143 | </div> | 138 | </div> |
| 144 | </div> | 139 | </div> |
| 145 | 140 | ||
| 141 | + <!--<div class="form-group has-success has-feedback">--> | ||
| 142 | + <!--<label class="col-md-2 control-label">启用日期*:</label>--> | ||
| 143 | + <!--<div class="col-md-3">--> | ||
| 144 | + <!--<div class="input-group">--> | ||
| 145 | + <!--<input type="text" class="form-control"--> | ||
| 146 | + <!--name="qyrq" placeholder="请选择启用日期..."--> | ||
| 147 | + <!--uib-datepicker-popup="yyyy年MM月dd日"--> | ||
| 148 | + <!--is-open="ctrl.qyrqOpen" required--> | ||
| 149 | + <!--ng-model="ctrl.deviceInfoForSave.qyrq" readonly--> | ||
| 150 | + <!--remote-Validation--> | ||
| 151 | + <!--remotevtype="cde1"--> | ||
| 152 | + <!--remotevparam="{{ {'id_eq': ctrl.deviceInfoForSave.id, 'qyrq_eq': ctrl.deviceInfoForSave.qyrq, 'xl_eq': ctrl.deviceInfoForSave.xl, 'cl_eq': ctrl.deviceInfoForSave.cl} | json}}"/>--> | ||
| 153 | + <!--<span class="input-group-btn">--> | ||
| 154 | + <!--<button type="button" class="btn btn-default" ng-click="ctrl.qyrq_open()">--> | ||
| 155 | + <!--<i class="glyphicon glyphicon-calendar"></i>--> | ||
| 156 | + <!--</button>--> | ||
| 157 | + <!--</span>--> | ||
| 158 | + <!--</div>--> | ||
| 159 | + <!--</div>--> | ||
| 160 | + <!--<!– 隐藏块,显示验证信息 –>--> | ||
| 161 | + <!--<div class="alert alert-danger well-sm" ng-show="myForm.qyrq.$error.required">--> | ||
| 162 | + <!--启用日期必须选择--> | ||
| 163 | + <!--</div>--> | ||
| 164 | + <!--<div class="alert alert-danger well-sm" ng-show="myForm.qyrq.$error.remote">--> | ||
| 165 | + <!--{{$remote_msg}}--> | ||
| 166 | + <!--</div>--> | ||
| 167 | + <!--</div>--> | ||
| 168 | + | ||
| 146 | <div class="form-group has-success has-feedback"> | 169 | <div class="form-group has-success has-feedback"> |
| 147 | <label class="col-md-2 control-label">启用日期*:</label> | 170 | <label class="col-md-2 control-label">启用日期*:</label> |
| 148 | <div class="col-md-3"> | 171 | <div class="col-md-3"> |
| 149 | - <div class="input-group"> | ||
| 150 | - <input type="text" class="form-control" | ||
| 151 | - name="qyrq" placeholder="请选择启用日期..." | ||
| 152 | - uib-datepicker-popup="yyyy年MM月dd日" | ||
| 153 | - is-open="ctrl.qyrqOpen" required | ||
| 154 | - ng-model="ctrl.deviceInfoForSave.qyrq" readonly | ||
| 155 | - remote-Validation | ||
| 156 | - remotevtype="cde1" | ||
| 157 | - remotevparam="{{ {'id_eq': ctrl.deviceInfoForSave.id, 'qyrq_eq': ctrl.deviceInfoForSave.qyrq, 'xl_eq': ctrl.deviceInfoForSave.xl, 'cl_eq': ctrl.deviceInfoForSave.cl} | json}}"/> | ||
| 158 | - <span class="input-group-btn"> | ||
| 159 | - <button type="button" class="btn btn-default" ng-click="ctrl.qyrq_open()"> | ||
| 160 | - <i class="glyphicon glyphicon-calendar"></i> | ||
| 161 | - </button> | ||
| 162 | - </span> | ||
| 163 | - </div> | ||
| 164 | - </div> | ||
| 165 | - <!-- 隐藏块,显示验证信息 --> | ||
| 166 | - <div class="alert alert-danger well-sm" ng-show="myForm.qyrq.$error.required"> | ||
| 167 | - 启用日期必须选择 | ||
| 168 | - </div> | ||
| 169 | - <div class="alert alert-danger well-sm" ng-show="myForm.qyrq.$error.remote"> | ||
| 170 | - {{$remote_msg}} | 172 | + <input type="text" class="form-control" |
| 173 | + name="qyrq" uib-datepicker-popup="yyyy年MM月dd日 HH:mm" | ||
| 174 | + ng-model="ctrl.deviceInfoForSave.qyrq" readonly/> | ||
| 171 | </div> | 175 | </div> |
| 172 | </div> | 176 | </div> |
| 173 | 177 |
src/main/resources/static/pages/scheduleApp/module/basicInfo/deviceInfoManage/form.html
| @@ -82,13 +82,8 @@ | @@ -82,13 +82,8 @@ | ||
| 82 | <div class="form-group has-success has-feedback"> | 82 | <div class="form-group has-success has-feedback"> |
| 83 | <label class="col-md-2 control-label">旧终端号*:</label> | 83 | <label class="col-md-2 control-label">旧终端号*:</label> |
| 84 | <div class="col-md-3"> | 84 | <div class="col-md-3"> |
| 85 | - <input type="text" class="form-control" | ||
| 86 | - name="oldDeviceNo" ng-model="ctrl.deviceInfoForSave.oldDeviceNo" | ||
| 87 | - required placeholder="请输入旧终端号"/> | ||
| 88 | - </div> | ||
| 89 | - <!-- 隐藏块,显示验证信息 --> | ||
| 90 | - <div class="alert alert-danger well-sm" ng-show="myForm.oldDeviceNo.$error.required"> | ||
| 91 | - 旧终端号必须填写 | 85 | + <input type="text" class="form-control" name="oldDeviceNo" |
| 86 | + ng-model="ctrl.deviceInfoForSave.oldDeviceNo" readonly/> | ||
| 92 | </div> | 87 | </div> |
| 93 | </div> | 88 | </div> |
| 94 | 89 | ||
| @@ -143,23 +138,44 @@ | @@ -143,23 +138,44 @@ | ||
| 143 | </div> | 138 | </div> |
| 144 | </div> | 139 | </div> |
| 145 | 140 | ||
| 141 | + <!--<div class="form-group has-success has-feedback">--> | ||
| 142 | + <!--<label class="col-md-2 control-label">启用日期*:</label>--> | ||
| 143 | + <!--<div class="col-md-3">--> | ||
| 144 | + <!--<div class="input-group">--> | ||
| 145 | + <!--<input type="text" class="form-control"--> | ||
| 146 | + <!--name="qyrq" placeholder="请选择启用日期..."--> | ||
| 147 | + <!--uib-datepicker-popup="yyyy年MM月dd日 hh:mm:ss"--> | ||
| 148 | + <!--is-open="ctrl.qyrqOpen" required--> | ||
| 149 | + <!--ng-model="ctrl.deviceInfoForSave.qyrq" readonly--> | ||
| 150 | + <!--remote-Validation--> | ||
| 151 | + <!--remotevtype="cde1"--> | ||
| 152 | + <!--remotevparam="{{ {'qyrq_eq': ctrl.deviceInfoForSave.qyrq, 'xl_eq': ctrl.deviceInfoForSave.xl, 'cl_eq': ctrl.deviceInfoForSave.cl} | json}}"/>--> | ||
| 153 | + <!--<span class="input-group-btn">--> | ||
| 154 | + <!--<button type="button" class="btn btn-default" ng-click="ctrl.qyrq_open()">--> | ||
| 155 | + <!--<i class="glyphicon glyphicon-calendar"></i>--> | ||
| 156 | + <!--</button>--> | ||
| 157 | + <!--</span>--> | ||
| 158 | + <!--</div>--> | ||
| 159 | + <!--</div>--> | ||
| 160 | + <!--<!– 隐藏块,显示验证信息 –>--> | ||
| 161 | + <!--<div class="alert alert-danger well-sm" ng-show="myForm.qyrq.$error.required">--> | ||
| 162 | + <!--启用日期必须选择--> | ||
| 163 | + <!--</div>--> | ||
| 164 | + <!--<div class="alert alert-danger well-sm" ng-show="myForm.qyrq.$error.remote">--> | ||
| 165 | + <!--{{$remote_msg}}--> | ||
| 166 | + <!--</div>--> | ||
| 167 | + <!--</div>--> | ||
| 168 | + | ||
| 146 | <div class="form-group has-success has-feedback"> | 169 | <div class="form-group has-success has-feedback"> |
| 147 | - <label class="col-md-2 control-label">启用日期*:</label> | 170 | + <label class="col-md-2 control-label">启用日期:</label> |
| 148 | <div class="col-md-3"> | 171 | <div class="col-md-3"> |
| 149 | <div class="input-group"> | 172 | <div class="input-group"> |
| 150 | - <input type="text" class="form-control" | ||
| 151 | - name="qyrq" placeholder="请选择启用日期..." | ||
| 152 | - uib-datepicker-popup="yyyy年MM月dd日" | ||
| 153 | - is-open="ctrl.qyrqOpen" required | ||
| 154 | - ng-model="ctrl.deviceInfoForSave.qyrq" readonly | 173 | + <input type="datetime-local" class="form-control" name="qyrq" |
| 174 | + ng-model="ctrl.deviceInfoForSave.qyrq" | ||
| 155 | remote-Validation | 175 | remote-Validation |
| 156 | remotevtype="cde1" | 176 | remotevtype="cde1" |
| 157 | - remotevparam="{{ {'qyrq_eq': ctrl.deviceInfoForSave.qyrq, 'xl_eq': ctrl.deviceInfoForSave.xl, 'cl_eq': ctrl.deviceInfoForSave.cl} | json}}"/> | ||
| 158 | - <span class="input-group-btn"> | ||
| 159 | - <button type="button" class="btn btn-default" ng-click="ctrl.qyrq_open()"> | ||
| 160 | - <i class="glyphicon glyphicon-calendar"></i> | ||
| 161 | - </button> | ||
| 162 | - </span> | 177 | + remotevparam="{{ {'qyrq_eq': ctrl.deviceInfoForSave.qyrq, 'xl_eq': ctrl.deviceInfoForSave.xl, 'cl_eq': ctrl.deviceInfoForSave.cl} | json}}" /> |
| 178 | + | ||
| 163 | </div> | 179 | </div> |
| 164 | </div> | 180 | </div> |
| 165 | <!-- 隐藏块,显示验证信息 --> | 181 | <!-- 隐藏块,显示验证信息 --> |
src/main/resources/static/pages/scheduleApp/module/basicInfo/deviceInfoManage/list.html
| @@ -7,7 +7,7 @@ | @@ -7,7 +7,7 @@ | ||
| 7 | <th style="width: 70px;">序号</th> | 7 | <th style="width: 70px;">序号</th> |
| 8 | <th style="width: 15%;">线路名称</th> | 8 | <th style="width: 15%;">线路名称</th> |
| 9 | <th style="width: 10%;">内部编号</th> | 9 | <th style="width: 10%;">内部编号</th> |
| 10 | - <th style="width: 100px;">启用日期</th> | 10 | + <th style="width: 160px;">启用日期</th> |
| 11 | <th>旧设备编号</th> | 11 | <th>旧设备编号</th> |
| 12 | <th>新设备编号</th> | 12 | <th>新设备编号</th> |
| 13 | <th style="width: 180px;">操作人/操作时间</th> | 13 | <th style="width: 180px;">操作人/操作时间</th> |
| @@ -71,7 +71,7 @@ | @@ -71,7 +71,7 @@ | ||
| 71 | <span ng-bind="info.clZbh"></span> | 71 | <span ng-bind="info.clZbh"></span> |
| 72 | </td> | 72 | </td> |
| 73 | <td> | 73 | <td> |
| 74 | - <span ng-bind="info.qyrq | date:'yyyy-MM-dd'"></span> | 74 | + <span ng-bind="info.qyrq | date:'yyyy-MM-dd HH:mm'"></span> |
| 75 | </td> | 75 | </td> |
| 76 | <td> | 76 | <td> |
| 77 | <span ng-bind="info.oldDeviceNo"></span> | 77 | <span ng-bind="info.oldDeviceNo"></span> |
src/main/resources/static/pages/scheduleApp/module/common/main.js
| @@ -283,7 +283,8 @@ ScheduleApp.factory( | @@ -283,7 +283,8 @@ ScheduleApp.factory( | ||
| 283 | alert("我擦,后台返回连个状态码都没返回,见鬼了,服务器可能重启了"); | 283 | alert("我擦,后台返回连个状态码都没返回,见鬼了,服务器可能重启了"); |
| 284 | } else if (rejection.status == -1) { | 284 | } else if (rejection.status == -1) { |
| 285 | // 服务器断开了 | 285 | // 服务器断开了 |
| 286 | - alert("貌似服务端连接不上"); | 286 | + // alert("貌似服务端连接不上"); |
| 287 | + console.log("貌似服务端连接不上"); | ||
| 287 | } else { | 288 | } else { |
| 288 | output.push("状态编码:" + rejection.status); | 289 | output.push("状态编码:" + rejection.status); |
| 289 | output.push("错误内容:" + angular.toJson(rejection.data)); | 290 | output.push("错误内容:" + angular.toJson(rejection.data)); |
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/list.html
| @@ -176,8 +176,8 @@ | @@ -176,8 +176,8 @@ | ||
| 176 | <!--class="btn btn-info btn-sm" ng-if="info.isCancel == '0'"> 编辑2 </a>--> | 176 | <!--class="btn btn-info btn-sm" ng-if="info.isCancel == '0'"> 编辑2 </a>--> |
| 177 | <a ui-sref="ttInfoDetailManage_edit3({xlid: info.xl.id, ttid : info.id, xlname: info.xl.name, ttname : info.name, rflag : true, lineversion : info.lineVersion})" | 177 | <a ui-sref="ttInfoDetailManage_edit3({xlid: info.xl.id, ttid : info.id, xlname: info.xl.name, ttname : info.name, rflag : true, lineversion : info.lineVersion})" |
| 178 | class="btn btn-info btn-sm" ng-if="info.isCancel == '0'"> 编辑 </a> | 178 | class="btn btn-info btn-sm" ng-if="info.isCancel == '0'"> 编辑 </a> |
| 179 | - <a ng-click="ctrl.toTtInfoDetailAuto(info.id)" | ||
| 180 | - class="btn btn-info btn-sm" ng-if="info.isCancel == '0'"> 生成 </a> | 179 | + <!--<a ng-click="ctrl.toTtInfoDetailAuto(info.id)"--> |
| 180 | + <!--class="btn btn-info btn-sm" ng-if="info.isCancel == '0'"> 生成 </a>--> | ||
| 181 | <a ui-sref="ttInfoDetailManage_form({xlid: info.xl.id, ttid : info.id, xlname: info.xl.name, ttname : info.name})" | 181 | <a ui-sref="ttInfoDetailManage_form({xlid: info.xl.id, ttid : info.id, xlname: info.xl.name, ttname : info.name})" |
| 182 | class="btn btn-info btn-sm" ng-if="info.isCancel == '0'"> 导入 </a> | 182 | class="btn btn-info btn-sm" ng-if="info.isCancel == '0'"> 导入 </a> |
| 183 | <a href="javascript:" class="btn btn-info btn-sm" ng-click="ctrl.exportData(info.id)"> 导出 </a> | 183 | <a href="javascript:" class="btn btn-info btn-sm" ng-click="ctrl.exportData(info.id)"> 导出 </a> |
src/main/resources/static/pages/summary/destory_sch_detail/list.html
| @@ -127,7 +127,7 @@ | @@ -127,7 +127,7 @@ | ||
| 127 | <div uk-spinner></div> | 127 | <div uk-spinner></div> |
| 128 | </div> | 128 | </div> |
| 129 | <div class="ct_page" style="display: none;"> | 129 | <div class="ct_page" style="display: none;"> |
| 130 | - <h3 class="uk-heading-line uk-heading-bullet"><span>烂班明细统计</span></h3> | 130 | + <h3 class="uk-heading-line uk-heading-bullet"><span style="color: #ff5353;">烂班明细统计</span></h3> |
| 131 | <div class="ct_cont" > | 131 | <div class="ct_cont" > |
| 132 | <div class="ct_search_form_wrap"> | 132 | <div class="ct_search_form_wrap"> |
| 133 | <form> | 133 | <form> |
| @@ -161,7 +161,7 @@ | @@ -161,7 +161,7 @@ | ||
| 161 | <button class="uk-button uk-button-text export_excel" style="padding: 0 5px;">导出数据</button> | 161 | <button class="uk-button uk-button-text export_excel" style="padding: 0 5px;">导出数据</button> |
| 162 | </div> | 162 | </div> |
| 163 | <div class="ct_field ct_field_bottom"> | 163 | <div class="ct_field ct_field_bottom"> |
| 164 | - <span uk-icon="icon: question" title="不统计进出场和子任务" uk-tooltip="pos: bottom"></span> | 164 | + <span uk-icon="icon: question" title="不统计进出场和2点间空驶" uk-tooltip="pos: bottom"></span> |
| 165 | </div> | 165 | </div> |
| 166 | </form> | 166 | </form> |
| 167 | </div> | 167 | </div> |
src/main/resources/static/pages/summary/excel/临加明细情况.xls
0 → 100644
No preview for this file type
src/main/resources/static/pages/summary/temp_sch_detail/d_s_d_wrap.html
0 → 100644
src/main/resources/static/pages/summary/temp_sch_detail/list.html
0 → 100644
| 1 | +<!DOCTYPE html> | ||
| 2 | +<html lang="zh-cn"> | ||
| 3 | + | ||
| 4 | +<head> | ||
| 5 | + <meta charset="UTF-8"> | ||
| 6 | + <link rel="stylesheet" href="/assets/plugins/uk3.0/uikit.min.css"/> | ||
| 7 | + <link rel="stylesheet" href="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.css" /> | ||
| 8 | + <!-- flatpickr --> | ||
| 9 | + <link rel="stylesheet" href="/real_control_v2/assets/plugins/flatpickr/flatpickr.min.css"> | ||
| 10 | + <style> | ||
| 11 | + html,body{ | ||
| 12 | + height: 100%; | ||
| 13 | + } | ||
| 14 | + .ct_page{ | ||
| 15 | + padding: 25px 15px; | ||
| 16 | + height: 100%; | ||
| 17 | + height: calc(100% - 50px); | ||
| 18 | + } | ||
| 19 | + | ||
| 20 | + .ct_cont{ | ||
| 21 | + height: calc(100% - 35px); | ||
| 22 | + } | ||
| 23 | + | ||
| 24 | + .ct_cont>div>div.uk-card{ | ||
| 25 | + height: 99%; | ||
| 26 | + } | ||
| 27 | + | ||
| 28 | + .loading{ | ||
| 29 | + height: 100%; | ||
| 30 | + text-align: center; | ||
| 31 | + } | ||
| 32 | + .loading .uk-spinner{ | ||
| 33 | + margin-top: 200px; | ||
| 34 | + } | ||
| 35 | + .loading circle{ | ||
| 36 | + stroke: red; | ||
| 37 | + } | ||
| 38 | + | ||
| 39 | + .ps-container > .ps-scrollbar-x-rail, .ps-container > .ps-scrollbar-y-rail{ | ||
| 40 | + opacity: 0.6 !important; | ||
| 41 | + padding: 0 !important; | ||
| 42 | + } | ||
| 43 | + | ||
| 44 | + .ct_destroy_sch_table_width th:nth-of-type(1),.ct_destroy_sch_table_width td:nth-of-type(1){ | ||
| 45 | + width: 9%; | ||
| 46 | + } | ||
| 47 | + .ct_destroy_sch_table_width th:nth-of-type(2),.ct_destroy_sch_table_width td:nth-of-type(2){ | ||
| 48 | + width: 10%; | ||
| 49 | + } | ||
| 50 | + .ct_destroy_sch_table_width th:nth-of-type(3),.ct_destroy_sch_table_width td:nth-of-type(3){ | ||
| 51 | + width: 9%; | ||
| 52 | + } | ||
| 53 | + .ct_destroy_sch_table_width th:nth-of-type(4),.ct_destroy_sch_table_width td:nth-of-type(4){ | ||
| 54 | + width: 9%; | ||
| 55 | + } | ||
| 56 | + .ct_destroy_sch_table_width th:nth-of-type(5),.ct_destroy_sch_table_width td:nth-of-type(5){ | ||
| 57 | + width: 9%; | ||
| 58 | + } | ||
| 59 | + .ct_destroy_sch_table_width th:nth-of-type(6),.ct_destroy_sch_table_width td:nth-of-type(6){ | ||
| 60 | + width: 8%; | ||
| 61 | + } | ||
| 62 | + .ct_destroy_sch_table_width th:nth-of-type(7),.ct_destroy_sch_table_width td:nth-of-type(7){ | ||
| 63 | + width: 8%; | ||
| 64 | + } | ||
| 65 | + .ct_destroy_sch_table_width th:nth-of-type(8),.ct_destroy_sch_table_width td:nth-of-type(8){ | ||
| 66 | + width: 8%; | ||
| 67 | + } | ||
| 68 | + .ct_destroy_sch_table_width th:nth-of-type(9),.ct_destroy_sch_table_width td:nth-of-type(9){ | ||
| 69 | + } | ||
| 70 | + | ||
| 71 | + .ct_search_form_wrap{ | ||
| 72 | + border-bottom: 1px solid #e5e5e5; | ||
| 73 | + padding: 10px 0 25px 10px; | ||
| 74 | + } | ||
| 75 | + .ct_search_form_wrap .ct_field{ | ||
| 76 | + display: inline-block; | ||
| 77 | + margin: 0 5px; | ||
| 78 | + } | ||
| 79 | + | ||
| 80 | + .ct_search_form_wrap .ct_field label{ | ||
| 81 | + font-size: 14px; | ||
| 82 | + } | ||
| 83 | + | ||
| 84 | + .ct_search_form_wrap .ct_field input{ | ||
| 85 | + width: 110px; | ||
| 86 | + } | ||
| 87 | + | ||
| 88 | + .ct_search_form_wrap .ct_field select{ | ||
| 89 | + width: auto; | ||
| 90 | + min-width: 100px; | ||
| 91 | + } | ||
| 92 | + | ||
| 93 | + .ct_search_form_wrap .uk-button{ | ||
| 94 | + padding: 0 14px; | ||
| 95 | + } | ||
| 96 | + | ||
| 97 | + .ct_search_form_wrap .uk-button i{ | ||
| 98 | + vertical-align: middle; | ||
| 99 | + margin-top: -2px; | ||
| 100 | + margin-right: 7px; | ||
| 101 | + } | ||
| 102 | + | ||
| 103 | + .ct_table_wrap{ | ||
| 104 | + font-size: 14px; | ||
| 105 | + height: calc(100% - 77px); | ||
| 106 | + } | ||
| 107 | + | ||
| 108 | + .t_body_wrap{ | ||
| 109 | + height: calc(100% - 41px); | ||
| 110 | + overflow: auto; | ||
| 111 | + position: relative; | ||
| 112 | + } | ||
| 113 | + | ||
| 114 | + .ct_field.ct_field_bottom{ | ||
| 115 | + vertical-align: bottom; | ||
| 116 | + font-size: 12px; | ||
| 117 | + margin-left: 0; | ||
| 118 | + } | ||
| 119 | + </style> | ||
| 120 | +</head> | ||
| 121 | + | ||
| 122 | +<body> | ||
| 123 | +<div class="loading"> | ||
| 124 | + <div uk-spinner></div> | ||
| 125 | +</div> | ||
| 126 | +<div class="ct_page" style="display: none;"> | ||
| 127 | + <h3 class="uk-heading-line uk-heading-bullet"><span>临加明细统计</span></h3> | ||
| 128 | + <div class="ct_cont" > | ||
| 129 | + <div class="ct_search_form_wrap"> | ||
| 130 | + <form> | ||
| 131 | + <div class="ct_field"> | ||
| 132 | + <label>公司: | ||
| 133 | + <select class="uk-select" name="gsBm_eq"> | ||
| 134 | + </select> | ||
| 135 | + </label> | ||
| 136 | + </div> | ||
| 137 | + <div class="ct_field"> | ||
| 138 | + <label>分公司: | ||
| 139 | + <select class="uk-select" name="fgsBm_eq"> | ||
| 140 | + </select> | ||
| 141 | + </label> | ||
| 142 | + </div> | ||
| 143 | + <div class="ct_field"> | ||
| 144 | + <label>线路: | ||
| 145 | + <select class="uk-select" name="lineCode_eq"> | ||
| 146 | + </select> | ||
| 147 | + </label> | ||
| 148 | + </div> | ||
| 149 | + <div class="ct_field"> | ||
| 150 | + <label>日期: | ||
| 151 | + <input class="uk-input" name="rq" style="width: 220px;"> | ||
| 152 | + </label> | ||
| 153 | + </div> | ||
| 154 | + <div class="ct_field"> | ||
| 155 | + <button class="uk-button uk-button-primary search"><i uk-icon="icon: search"></i>搜索</button> | ||
| 156 | + </div> | ||
| 157 | + <div class="ct_field ct_field_bottom"> | ||
| 158 | + <button class="uk-button uk-button-text export_excel" style="padding: 0 5px;">导出数据</button> | ||
| 159 | + </div> | ||
| 160 | + <div class="ct_field ct_field_bottom"> | ||
| 161 | + <span uk-icon="icon: question" title="不统计进出场和2点间空驶" uk-tooltip="pos: bottom"></span> | ||
| 162 | + </div> | ||
| 163 | + </form> | ||
| 164 | + </div> | ||
| 165 | + <div class="ct_table_wrap day"> | ||
| 166 | + <table class="uk-table uk-table-small ct_destroy_sch_table_width" style="margin-bottom: 0;"> | ||
| 167 | + <thead> | ||
| 168 | + <tr> | ||
| 169 | + <th>日期</th> | ||
| 170 | + <th>线路</th> | ||
| 171 | + <th>车号</th> | ||
| 172 | + <th>司机</th> | ||
| 173 | + <th>售票员</th> | ||
| 174 | + <th>班次</th> | ||
| 175 | + <th>烂班公里</th> | ||
| 176 | + <th>烂班时间</th> | ||
| 177 | + <th>备注</th> | ||
| 178 | + </tr> | ||
| 179 | + </thead> | ||
| 180 | + </table> | ||
| 181 | + <div class="t_body_wrap"> | ||
| 182 | + <table class="uk-table uk-table-divider uk-table-hover uk-table-small ct_destroy_sch_table ct_destroy_sch_table_width"> | ||
| 183 | + <tbody> | ||
| 184 | + </tbody> | ||
| 185 | + </table> | ||
| 186 | + </div> | ||
| 187 | + </div> | ||
| 188 | + </div> | ||
| 189 | +</div> | ||
| 190 | + | ||
| 191 | +<script id="destroy_sch_list_temp" type="text/html"> | ||
| 192 | + {{each list as obj i}} | ||
| 193 | + <tr> | ||
| 194 | + <td>{{obj.rq}}</td> | ||
| 195 | + <td>{{obj.lineName}}</td> | ||
| 196 | + <td>{{obj.nbbm}}</td> | ||
| 197 | + <td>{{obj.jGh}}</td> | ||
| 198 | + <td>{{obj.sGh}}</td> | ||
| 199 | + <td><a style="text-decoration: underline;">{{obj.size}}</a></td> | ||
| 200 | + <td>{{obj.mileage}}</td> | ||
| 201 | + <td>{{obj.timeStr}}</td> | ||
| 202 | + <td>{{obj.remark}}</td> | ||
| 203 | + </tr> | ||
| 204 | + {{/each}} | ||
| 205 | +</script> | ||
| 206 | + | ||
| 207 | +<script src="/metronic_v4.5.4/plugins/jquery.min.js"></script> | ||
| 208 | +<script src="/assets/plugins/uk3.0/uikit.min.js"></script> | ||
| 209 | +<script src="/assets/plugins/uk3.0/uikit-icons.min.js"></script> | ||
| 210 | +<script src="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.jquery.js" ></script> | ||
| 211 | +<!-- EventProxy --> | ||
| 212 | +<script src="/assets/js/eventproxy.js"></script> | ||
| 213 | +<!-- art-template 模版引擎 --> | ||
| 214 | +<script src="/assets/plugins/template.js"></script> | ||
| 215 | +<script src="/real_control_v2/assets/plugins/moment/moment.min.js"></script> | ||
| 216 | +<!-- jquery.serializejson JSON序列化插件 --> | ||
| 217 | +<script src="/assets/plugins/jquery.serializejson.js" merge="plugins"></script> | ||
| 218 | +<!-- flatpickr --> | ||
| 219 | +<script src="/real_control_v2/assets/plugins/flatpickr/flatpickr.min.js" ></script> | ||
| 220 | +<script src="/real_control_v2/assets/plugins/flatpickr/l10n/zh.js" ></script> | ||
| 221 | +<script> | ||
| 222 | + | ||
| 223 | + var f = $('form', ''); | ||
| 224 | + //var page=0, pageSize=120; | ||
| 225 | + | ||
| 226 | + var ep = EventProxy.create('query_comps', 'query_lines', function () { | ||
| 227 | + $('[name=gsBm_eq]', f).trigger('change');//公司change | ||
| 228 | + query(); | ||
| 229 | + | ||
| 230 | + $('.loading').remove(); | ||
| 231 | + $('.ct_page').show(); | ||
| 232 | + }); | ||
| 233 | + | ||
| 234 | + //点击搜索 | ||
| 235 | + $('button.search', f).on('click', query); | ||
| 236 | + | ||
| 237 | + function query() { | ||
| 238 | + $('button.search', f).attr('disabled', 'disabled'); | ||
| 239 | + var data = f.serializeJSON(); | ||
| 240 | + $('.ct_destroy_sch_table tbody').html(''); | ||
| 241 | + //开始结束时间 | ||
| 242 | + data.rq_ge = data.rq.substr(0, 10); | ||
| 243 | + data.rq_le = data.rq.substr(13); | ||
| 244 | + //data.order='t'; | ||
| 245 | + delete data.rq; | ||
| 246 | + | ||
| 247 | + $.get('/summary/temp_sch/all', data, function (rs) { | ||
| 248 | + $('button.search', f).removeAttr('disabled'); | ||
| 249 | + if(!rs || rs.length==0) | ||
| 250 | + return UIkit.notification('没有搜索到相关数据!!', 'danger'); | ||
| 251 | + $.each(rs, function () { | ||
| 252 | + this.timeStr=moment(this.t).format('HH:mm') | ||
| 253 | + }); | ||
| 254 | + | ||
| 255 | + var htmlStr = template('destroy_sch_list_temp', {list: rs}); | ||
| 256 | + $('.ct_destroy_sch_table tbody').html(htmlStr); | ||
| 257 | + $('.t_body_wrap').perfectScrollbar('update'); | ||
| 258 | + }); | ||
| 259 | + } | ||
| 260 | + | ||
| 261 | + | ||
| 262 | + //日期选择框 | ||
| 263 | + var fs='YYYY-MM-DD' | ||
| 264 | + , ets=moment().subtract(1, 'days').format(fs) | ||
| 265 | + , sts=moment().subtract(3, 'days').format(fs); | ||
| 266 | + flatpickr('.ct_search_form_wrap [name=rq]', { | ||
| 267 | + mode: "range", dateFormat: "Y-m-d","locale": "zh", defaultDate: [sts, ets] | ||
| 268 | + }); | ||
| 269 | + var comps; | ||
| 270 | + //构建公司级联下拉框 | ||
| 271 | + $.get('/user/companyData', function (rs) { | ||
| 272 | + comps = rs; | ||
| 273 | + var opts = ''; | ||
| 274 | + for(var i=0,obj;obj=comps[i++];){ | ||
| 275 | + opts += '<option value="'+obj.companyCode+'">'+obj.companyName+'</option>'; | ||
| 276 | + } | ||
| 277 | + $('[name=gsBm_eq]', f).html(opts); | ||
| 278 | + ep.emit('query_comps'); | ||
| 279 | + }); | ||
| 280 | + | ||
| 281 | + var lineMapps; | ||
| 282 | + //加载线路信息 | ||
| 283 | + $.get('/line/all', {'destroy_eq': 0}, function (rs) { | ||
| 284 | + rs.sort(function (a, b) { | ||
| 285 | + return a.name.localeCompare(b.name); | ||
| 286 | + }); | ||
| 287 | + lineMapps={}; | ||
| 288 | + var k; | ||
| 289 | + $.each(rs, function () { | ||
| 290 | + k = this.company+'_'+this.brancheCompany; | ||
| 291 | + if(!lineMapps[k]) | ||
| 292 | + lineMapps[k]=[]; | ||
| 293 | + lineMapps[k].push(this); | ||
| 294 | + }); | ||
| 295 | + | ||
| 296 | + ep.emit('query_lines'); | ||
| 297 | + }); | ||
| 298 | + | ||
| 299 | + $('[name=gsBm_eq]', f).on('change', function () { | ||
| 300 | + var code = $(this).val(), subs=[]; | ||
| 301 | + $.each(comps, function () { | ||
| 302 | + if(this.companyCode==code) | ||
| 303 | + subs=this.children; | ||
| 304 | + }); | ||
| 305 | + | ||
| 306 | + var opts=''; | ||
| 307 | + $.each(subs, function () { | ||
| 308 | + opts += '<option value="'+this.code+'">'+this.name+'</option>'; | ||
| 309 | + }); | ||
| 310 | + $('[name=fgsBm_eq]', f).html(opts).trigger('change'); | ||
| 311 | + }); | ||
| 312 | + | ||
| 313 | + $('[name=fgsBm_eq]', f).on('change', function () { | ||
| 314 | + var k = $('[name=gsBm_eq]', f).val() + '_' + $(this).val(); | ||
| 315 | + var array = lineMapps[k]; | ||
| 316 | + var opts = '<option value="">全部</option>'; | ||
| 317 | + if(array){ | ||
| 318 | + $.each(array, function () { | ||
| 319 | + opts += '<option value="'+this.lineCode+'">'+this.name+'</option>'; | ||
| 320 | + }); | ||
| 321 | + } | ||
| 322 | + $('[name=lineCode_eq]', f).html(opts); | ||
| 323 | + }); | ||
| 324 | + | ||
| 325 | + // | ||
| 326 | + //滚动条 | ||
| 327 | + $('.t_body_wrap').perfectScrollbar({suppressScrollX: true}); | ||
| 328 | + | ||
| 329 | + $(document).on('submit', 'form', function () { | ||
| 330 | + return false; | ||
| 331 | + }); | ||
| 332 | + | ||
| 333 | + /** | ||
| 334 | + * 导出 | ||
| 335 | + */ | ||
| 336 | + $('.export_excel').on('click', function () { | ||
| 337 | + var data = f.serializeJSON(); | ||
| 338 | + data.rq_ge = data.rq.substr(0, 10); | ||
| 339 | + data.rq_le = data.rq.substr(13); | ||
| 340 | + data.order='t'; | ||
| 341 | + delete data.rq; | ||
| 342 | + | ||
| 343 | + window.open('/summary/temp_sch/excel?' + $.param(data)); | ||
| 344 | + }); | ||
| 345 | + | ||
| 346 | +</script> | ||
| 347 | +</body> | ||
| 348 | +</html> | ||
| 0 | \ No newline at end of file | 349 | \ No newline at end of file |
src/main/resources/static/real_control_v2/css/handicapped_style.css
| @@ -22,6 +22,6 @@ | @@ -22,6 +22,6 @@ | ||
| 22 | background: rgb(15, 220, 220) !important; | 22 | background: rgb(15, 220, 220) !important; |
| 23 | } | 23 | } |
| 24 | 24 | ||
| 25 | -.ct_table>.ct_table_body{ | 25 | +.schedule-body .ct_table>.ct_table_body{ |
| 26 | border-bottom: 1px solid #000000 !important; | 26 | border-bottom: 1px solid #000000 !important; |
| 27 | } | 27 | } |
src/main/resources/static/real_control_v2/css/line_schedule.css
| @@ -98,6 +98,14 @@ | @@ -98,6 +98,14 @@ | ||
| 98 | 98 | ||
| 99 | .line-schedule-table dl dt:nth-of-type(3), .line-schedule-table dl dd:nth-of-type(3) { | 99 | .line-schedule-table dl dt:nth-of-type(3), .line-schedule-table dl dd:nth-of-type(3) { |
| 100 | width: calc(2% + 66px); | 100 | width: calc(2% + 66px); |
| 101 | + position: relative; | ||
| 102 | +} | ||
| 103 | +.line-schedule-table dl dd:nth-of-type(3)>i{ | ||
| 104 | + position: absolute; | ||
| 105 | + color: #313030; | ||
| 106 | + top: 1px; | ||
| 107 | + right: 3px; | ||
| 108 | + text-shadow: 0 -1px 0 rgba(0,0,0,.2); | ||
| 101 | } | 109 | } |
| 102 | 110 | ||
| 103 | .line-schedule-table dl dt:nth-of-type(4), .line-schedule-table dl dd:nth-of-type(4) { | 111 | .line-schedule-table dl dt:nth-of-type(4), .line-schedule-table dl dd:nth-of-type(4) { |
| @@ -545,7 +553,7 @@ dl.relevance-active.intimity dd:nth-child(n+2) { | @@ -545,7 +553,7 @@ dl.relevance-active.intimity dd:nth-child(n+2) { | ||
| 545 | dl.relevance-active.intimity dd:nth-child(n+2) a { | 553 | dl.relevance-active.intimity dd:nth-child(n+2) a { |
| 546 | color: white !important; | 554 | color: white !important; |
| 547 | } | 555 | } |
| 548 | - | 556 | +/* |
| 549 | dl.relevance-active dd.tl-qrlb, | 557 | dl.relevance-active dd.tl-qrlb, |
| 550 | dl.relevance-active.intimity dd.tl-qrlb{ | 558 | dl.relevance-active.intimity dd.tl-qrlb{ |
| 551 | background: linear-gradient(to right, #a9a911, #808000, #8baabf) !important; | 559 | background: linear-gradient(to right, #a9a911, #808000, #8baabf) !important; |
| @@ -587,7 +595,7 @@ dl.relevance-active.intimity dd.tl-xxrd { | @@ -587,7 +595,7 @@ dl.relevance-active.intimity dd.tl-xxrd { | ||
| 587 | dl.relevance-active dd.tl-xxfc, | 595 | dl.relevance-active dd.tl-xxfc, |
| 588 | dl.relevance-active.intimity dd.tl-xxfc { | 596 | dl.relevance-active.intimity dd.tl-xxfc { |
| 589 | background: linear-gradient(to right, #8baabf, rgb(43, 185, 185), rgb(0,255,255)) !important; | 597 | background: linear-gradient(to right, #8baabf, rgb(43, 185, 185), rgb(0,255,255)) !important; |
| 590 | -} | 598 | +}*/ |
| 591 | 599 | ||
| 592 | dl.relevance-active.intimity dd span.fcsj-diff { | 600 | dl.relevance-active.intimity dd span.fcsj-diff { |
| 593 | color: #616060; | 601 | color: #616060; |
src/main/resources/static/real_control_v2/css/main.css
| 1 | input::-webkit-outer-spin-button, | 1 | input::-webkit-outer-spin-button, |
| 2 | -input::-webkit-inner-spin-button{ | 2 | +input::-webkit-inner-spin-button { |
| 3 | display: none; | 3 | display: none; |
| 4 | } | 4 | } |
| 5 | 5 | ||
| @@ -7,9 +7,11 @@ input::-webkit-calendar-picker-indicator { | @@ -7,9 +7,11 @@ input::-webkit-calendar-picker-indicator { | ||
| 7 | display: none; | 7 | display: none; |
| 8 | } | 8 | } |
| 9 | 9 | ||
| 10 | -input::-webkit-datetime-edit { padding: 1px; } | 10 | +input::-webkit-datetime-edit { |
| 11 | + padding: 1px; | ||
| 12 | +} | ||
| 11 | 13 | ||
| 12 | -.ps-container > .ps-scrollbar-y-rail{ | 14 | +.ps-container > .ps-scrollbar-y-rail { |
| 13 | z-index: 1 !important; | 15 | z-index: 1 !important; |
| 14 | } | 16 | } |
| 15 | 17 | ||
| @@ -18,6 +20,7 @@ input::-webkit-datetime-edit { padding: 1px; } | @@ -18,6 +20,7 @@ input::-webkit-datetime-edit { padding: 1px; } | ||
| 18 | opacity: 0.6 !important; | 20 | opacity: 0.6 !important; |
| 19 | padding: 0 !important; | 21 | padding: 0 !important; |
| 20 | } | 22 | } |
| 23 | + | ||
| 21 | /* ^_^ baidu map hide logo */ | 24 | /* ^_^ baidu map hide logo */ |
| 22 | .anchorBL, .anchorBL, .amap-logo, .amap-copyright { | 25 | .anchorBL, .anchorBL, .amap-logo, .amap-copyright { |
| 23 | display: none; | 26 | display: none; |
| @@ -298,7 +301,7 @@ svg.line-chart g.merge-item text { | @@ -298,7 +301,7 @@ svg.line-chart g.merge-item text { | ||
| 298 | .tooltip.multi-tooltip { | 301 | .tooltip.multi-tooltip { |
| 299 | width: 160px; | 302 | width: 160px; |
| 300 | display: inline-block; | 303 | display: inline-block; |
| 301 | - padding: 10px 0 10px 15px; | 304 | + padding: 10px 0 10px 12px; |
| 302 | border-right: 1px solid #eeeeee; | 305 | border-right: 1px solid #eeeeee; |
| 303 | border-bottom: 1px solid #eeeeee; | 306 | border-bottom: 1px solid #eeeeee; |
| 304 | } | 307 | } |
| @@ -749,8 +752,8 @@ li.map-panel { | @@ -749,8 +752,8 @@ li.map-panel { | ||
| 749 | } | 752 | } |
| 750 | 753 | ||
| 751 | #schedule-lp_change-modal .sch-list dl dt:nth-of-type(4), #schedule-lp_change-modal .sch-list dl dd:nth-of-type(4) { | 754 | #schedule-lp_change-modal .sch-list dl dt:nth-of-type(4), #schedule-lp_change-modal .sch-list dl dd:nth-of-type(4) { |
| 752 | - width: 10%; | ||
| 753 | - } | 755 | + width: 10%; |
| 756 | +} | ||
| 754 | 757 | ||
| 755 | #schedule-lp_change-modal .sch-list dl dt:nth-of-type(5), #schedule-lp_change-modal .sch-list dl dd:nth-of-type(5) { | 758 | #schedule-lp_change-modal .sch-list dl dt:nth-of-type(5), #schedule-lp_change-modal .sch-list dl dd:nth-of-type(5) { |
| 756 | width: 21%; | 759 | width: 21%; |
| @@ -764,9 +767,6 @@ li.map-panel { | @@ -764,9 +767,6 @@ li.map-panel { | ||
| 764 | width: 14%; | 767 | width: 14%; |
| 765 | } | 768 | } |
| 766 | 769 | ||
| 767 | - | ||
| 768 | - | ||
| 769 | - | ||
| 770 | #schedule-lp_change-modal .sch-list.reverse dl dt:nth-of-type(1), #schedule-lp_change-modal .sch-list.reverse dl dd:nth-of-type(1) { | 770 | #schedule-lp_change-modal .sch-list.reverse dl dt:nth-of-type(1), #schedule-lp_change-modal .sch-list.reverse dl dd:nth-of-type(1) { |
| 771 | width: 5%; | 771 | width: 5%; |
| 772 | border-left: 1px solid #dedede; | 772 | border-left: 1px solid #dedede; |
| @@ -816,59 +816,57 @@ li.map-panel { | @@ -816,59 +816,57 @@ li.map-panel { | ||
| 816 | border-top: 1px solid #ffe2b9; | 816 | border-top: 1px solid #ffe2b9; |
| 817 | } | 817 | } |
| 818 | 818 | ||
| 819 | -#cache_data_manage-modal .uk-table td{ | 819 | +#cache_data_manage-modal .uk-table td { |
| 820 | vertical-align: bottom; | 820 | vertical-align: bottom; |
| 821 | } | 821 | } |
| 822 | 822 | ||
| 823 | #cache_data_manage-modal .uk-table td, | 823 | #cache_data_manage-modal .uk-table td, |
| 824 | -#cache_data_manage-modal .uk-table th{ | 824 | +#cache_data_manage-modal .uk-table th { |
| 825 | padding: 8px 8px 6px; | 825 | padding: 8px 8px 6px; |
| 826 | } | 826 | } |
| 827 | 827 | ||
| 828 | - | ||
| 829 | -.ps-help-panel{ | 828 | +.ps-help-panel { |
| 830 | color: grey; | 829 | color: grey; |
| 831 | padding: 5px 2px; | 830 | padding: 5px 2px; |
| 832 | } | 831 | } |
| 833 | 832 | ||
| 834 | -.ps-help-panel small{ | 833 | +.ps-help-panel small { |
| 835 | display: block; | 834 | display: block; |
| 836 | } | 835 | } |
| 837 | 836 | ||
| 838 | - | ||
| 839 | -svg text.offline{ | 837 | +svg text.offline { |
| 840 | fill: #6f6a6a !important; | 838 | fill: #6f6a6a !important; |
| 841 | } | 839 | } |
| 842 | 840 | ||
| 843 | -svg rect.offline{ | 841 | +svg rect.offline { |
| 844 | stroke: #dbdada !important; | 842 | stroke: #dbdada !important; |
| 845 | fill: #dbdada !important; | 843 | fill: #dbdada !important; |
| 846 | } | 844 | } |
| 847 | 845 | ||
| 848 | -.tooltip .tooltip-container .title a>.abnormal-text{ | 846 | +.tooltip .tooltip-container .title a > .abnormal-text { |
| 849 | font-size: 14px; | 847 | font-size: 14px; |
| 850 | color: #ff5e5e; | 848 | color: #ff5e5e; |
| 851 | font-weight: 600; | 849 | font-weight: 600; |
| 852 | } | 850 | } |
| 853 | 851 | ||
| 854 | -#addChildTaskBtn{ | 852 | +#addChildTaskBtn { |
| 855 | margin-left: 5px; | 853 | margin-left: 5px; |
| 856 | color: #36729b; | 854 | color: #36729b; |
| 857 | padding: 1px 5px 1px 6px; | 855 | padding: 1px 5px 1px 6px; |
| 858 | } | 856 | } |
| 859 | 857 | ||
| 860 | -#addChildTaskBtn:hover{ | 858 | +#addChildTaskBtn:hover { |
| 861 | box-shadow: 2px 1px 3px 0 rgba(0, 0, 0, 0.2), 0px 3px 8px 0 rgba(0, 0, 0, 0.19); | 859 | box-shadow: 2px 1px 3px 0 rgba(0, 0, 0, 0.2), 0px 3px 8px 0 rgba(0, 0, 0, 0.19); |
| 862 | } | 860 | } |
| 863 | 861 | ||
| 864 | -.edit-icon{ | 862 | +.edit-icon { |
| 865 | color: #aba9a9; | 863 | color: #aba9a9; |
| 866 | font-size: 12px; | 864 | font-size: 12px; |
| 867 | margin-left: 5px; | 865 | margin-left: 5px; |
| 868 | display: none; | 866 | display: none; |
| 869 | } | 867 | } |
| 870 | 868 | ||
| 871 | -.operation-real-text{ | 869 | +.operation-real-text { |
| 872 | position: absolute; | 870 | position: absolute; |
| 873 | top: 9px; | 871 | top: 9px; |
| 874 | width: 100%; | 872 | width: 100%; |
| @@ -877,7 +875,7 @@ svg rect.offline{ | @@ -877,7 +875,7 @@ svg rect.offline{ | ||
| 877 | pointer-events: none; | 875 | pointer-events: none; |
| 878 | } | 876 | } |
| 879 | 877 | ||
| 880 | -.operation-real-text span{ | 878 | +.operation-real-text span { |
| 881 | padding: 15px; | 879 | padding: 15px; |
| 882 | background: #ff4f4f; | 880 | background: #ff4f4f; |
| 883 | color: white; | 881 | color: white; |
| @@ -885,75 +883,76 @@ svg rect.offline{ | @@ -885,75 +883,76 @@ svg rect.offline{ | ||
| 885 | border-radius: 1px 1px 4px 4px; | 883 | border-radius: 1px 1px 4px 4px; |
| 886 | } | 884 | } |
| 887 | 885 | ||
| 888 | -#oil_station-modal.ct-form-modal form.uk-form-horizontal .uk-form-label{ | 886 | +#oil_station-modal.ct-form-modal form.uk-form-horizontal .uk-form-label { |
| 889 | width: 120px; | 887 | width: 120px; |
| 890 | } | 888 | } |
| 891 | 889 | ||
| 892 | -#oil_station-modal.ct-form-modal form.uk-form-horizontal .uk-form-controls{ | 890 | +#oil_station-modal.ct-form-modal form.uk-form-horizontal .uk-form-controls { |
| 893 | margin-left: 125px; | 891 | margin-left: 125px; |
| 894 | } | 892 | } |
| 895 | 893 | ||
| 896 | -#oil_station-modal .uk-form-icon>[class*=uk-icon-]{ | 894 | +#oil_station-modal .uk-form-icon > [class*=uk-icon-] { |
| 897 | right: 23px; | 895 | right: 23px; |
| 898 | } | 896 | } |
| 899 | 897 | ||
| 900 | -#oil_station-modal .uk-form-icon:not(.uk-form-icon-flip)>input{ | 898 | +#oil_station-modal .uk-form-icon:not(.uk-form-icon-flip) > input { |
| 901 | padding-left: 10px !important; | 899 | padding-left: 10px !important; |
| 902 | } | 900 | } |
| 903 | 901 | ||
| 904 | -#oil_station-modal .uk-form-icon{ | 902 | +#oil_station-modal .uk-form-icon { |
| 905 | width: calc(100% - 145px); | 903 | width: calc(100% - 145px); |
| 906 | } | 904 | } |
| 907 | 905 | ||
| 908 | -#oil_station-modal .uk-icon-mile:before{ | 906 | +#oil_station-modal .uk-icon-mile:before { |
| 909 | content: '公里'; | 907 | content: '公里'; |
| 910 | } | 908 | } |
| 911 | 909 | ||
| 912 | -#oil_station-modal .uk-icon-minute:before{ | 910 | +#oil_station-modal .uk-icon-minute:before { |
| 913 | content: '分钟'; | 911 | content: '分钟'; |
| 914 | } | 912 | } |
| 915 | 913 | ||
| 916 | -option.oil_station_opt{ | 914 | +option.oil_station_opt { |
| 917 | color: red; | 915 | color: red; |
| 918 | } | 916 | } |
| 919 | 917 | ||
| 920 | -#oil_station-modal .uk-modal .uk-form.fv-form{ | 918 | +#oil_station-modal .uk-modal .uk-form.fv-form { |
| 921 | margin-bottom: 0 !important; | 919 | margin-bottom: 0 !important; |
| 922 | } | 920 | } |
| 923 | 921 | ||
| 924 | -#gb_wait_modal .uk-modal-spinner{ | 922 | +#gb_wait_modal .uk-modal-spinner { |
| 925 | top: 25px; | 923 | top: 25px; |
| 926 | - -webkit-transform: translate(-50%,0); | ||
| 927 | - transform: translate(-50%,0); | 924 | + -webkit-transform: translate(-50%, 0); |
| 925 | + transform: translate(-50%, 0); | ||
| 928 | } | 926 | } |
| 929 | 927 | ||
| 930 | -#gb_wait_modal .wait-modal-text{ | 928 | +#gb_wait_modal .wait-modal-text { |
| 931 | text-align: center; | 929 | text-align: center; |
| 932 | margin-top: 35px; | 930 | margin-top: 35px; |
| 933 | font-size: 15px; | 931 | font-size: 15px; |
| 934 | color: #635e5e; | 932 | color: #635e5e; |
| 935 | } | 933 | } |
| 936 | 934 | ||
| 937 | -.park-and-station-wrap{ | 935 | +.park-and-station-wrap { |
| 938 | margin-top: 9px; | 936 | margin-top: 9px; |
| 939 | border: 1px solid #3dce69; | 937 | border: 1px solid #3dce69; |
| 940 | width: 580px; | 938 | width: 580px; |
| 941 | padding: 12px; | 939 | padding: 12px; |
| 942 | border-radius: 5px; | 940 | border-radius: 5px; |
| 943 | } | 941 | } |
| 944 | -.park-and-station-wrap select{ | 942 | + |
| 943 | +.park-and-station-wrap select { | ||
| 945 | width: auto !important; | 944 | width: auto !important; |
| 946 | } | 945 | } |
| 947 | 946 | ||
| 948 | /** 安全驾驶相关css */ | 947 | /** 安全驾驶相关css */ |
| 949 | -.safe_driv_pop_wrap{ | 948 | +.safe_driv_pop_wrap { |
| 950 | position: absolute; | 949 | position: absolute; |
| 951 | right: 12px; | 950 | right: 12px; |
| 952 | bottom: 12px; | 951 | bottom: 12px; |
| 953 | z-index: 99; | 952 | z-index: 99; |
| 954 | } | 953 | } |
| 955 | 954 | ||
| 956 | -.safe_driv_pop{ | 955 | +.safe_driv_pop { |
| 957 | background: #d44b4b; | 956 | background: #d44b4b; |
| 958 | font-size: 15px; | 957 | font-size: 15px; |
| 959 | padding: 9px 10px 0; | 958 | padding: 9px 10px 0; |
| @@ -965,14 +964,14 @@ option.oil_station_opt{ | @@ -965,14 +964,14 @@ option.oil_station_opt{ | ||
| 965 | color: #f2f2f2; | 964 | color: #f2f2f2; |
| 966 | } | 965 | } |
| 967 | 966 | ||
| 968 | -.safe_driv_pop:hover{ | 967 | +.safe_driv_pop:hover { |
| 969 | background: #bc2a2a; | 968 | background: #bc2a2a; |
| 970 | } | 969 | } |
| 971 | 970 | ||
| 972 | -.safe_driv_pop .title{ | 971 | +.safe_driv_pop .title { |
| 973 | } | 972 | } |
| 974 | 973 | ||
| 975 | -.safe_driv_pop .desc{ | 974 | +.safe_driv_pop .desc { |
| 976 | display: block; | 975 | display: block; |
| 977 | font-size: 12px; | 976 | font-size: 12px; |
| 978 | color: #ff9d9d; | 977 | color: #ff9d9d; |
| @@ -985,24 +984,26 @@ option.oil_station_opt{ | @@ -985,24 +984,26 @@ option.oil_station_opt{ | ||
| 985 | width: 10px; | 984 | width: 10px; |
| 986 | background-color: #F5F5F5; | 985 | background-color: #F5F5F5; |
| 987 | } | 986 | } |
| 987 | + | ||
| 988 | #formFragmentModal::-webkit-scrollbar-thumb { | 988 | #formFragmentModal::-webkit-scrollbar-thumb { |
| 989 | background-color: #000000; | 989 | background-color: #000000; |
| 990 | } | 990 | } |
| 991 | + | ||
| 991 | #formFragmentModal::-webkit-scrollbar-track { | 992 | #formFragmentModal::-webkit-scrollbar-track { |
| 992 | border: 0; | 993 | border: 0; |
| 993 | background-color: #F5F5F5; | 994 | background-color: #F5F5F5; |
| 994 | border-radius: 0; | 995 | border-radius: 0; |
| 995 | } | 996 | } |
| 996 | 997 | ||
| 997 | -#formFragmentModal::-webkit-scrollbar-thumb{ | 998 | +#formFragmentModal::-webkit-scrollbar-thumb { |
| 998 | border: 5px solid rgb(226, 122, 122); | 999 | border: 5px solid rgb(226, 122, 122); |
| 999 | } | 1000 | } |
| 1000 | 1001 | ||
| 1001 | -#schedule-addsch_oil-modal select{ | 1002 | +#schedule-addsch_oil-modal select { |
| 1002 | height: 30px !important; | 1003 | height: 30px !important; |
| 1003 | } | 1004 | } |
| 1004 | 1005 | ||
| 1005 | -#oil_station-modal .input_clear_icon{ | 1006 | +#oil_station-modal .input_clear_icon { |
| 1006 | position: absolute; | 1007 | position: absolute; |
| 1007 | top: 6px; | 1008 | top: 6px; |
| 1008 | right: 108px; | 1009 | right: 108px; |
| @@ -1015,26 +1016,25 @@ option.oil_station_opt{ | @@ -1015,26 +1016,25 @@ option.oil_station_opt{ | ||
| 1015 | cursor: pointer; | 1016 | cursor: pointer; |
| 1016 | } | 1017 | } |
| 1017 | 1018 | ||
| 1018 | -#oil_station-modal .input_clear_icon:hover{ | 1019 | +#oil_station-modal .input_clear_icon:hover { |
| 1019 | color: #de2020; | 1020 | color: #de2020; |
| 1020 | } | 1021 | } |
| 1021 | 1022 | ||
| 1022 | -#oil_station-modal .input_clear_icon:before{ | 1023 | +#oil_station-modal .input_clear_icon:before { |
| 1023 | display: block; | 1024 | display: block; |
| 1024 | font-family: FontAwesome; | 1025 | font-family: FontAwesome; |
| 1025 | content: "\f057"; | 1026 | content: "\f057"; |
| 1026 | } | 1027 | } |
| 1027 | 1028 | ||
| 1028 | -#oil_station-modal input.readonly{ | 1029 | +#oil_station-modal input.readonly { |
| 1029 | background: #dddddd; | 1030 | background: #dddddd; |
| 1030 | } | 1031 | } |
| 1031 | 1032 | ||
| 1032 | - | ||
| 1033 | -.ct_tags{ | 1033 | +.ct_tags { |
| 1034 | margin-bottom: 12px; | 1034 | margin-bottom: 12px; |
| 1035 | } | 1035 | } |
| 1036 | 1036 | ||
| 1037 | -.ct_tags>span{ | 1037 | +.ct_tags > span { |
| 1038 | padding: 3px 7px; | 1038 | padding: 3px 7px; |
| 1039 | background: #e8e8e8; | 1039 | background: #e8e8e8; |
| 1040 | color: #3a3939; | 1040 | color: #3a3939; |
| @@ -1042,21 +1042,21 @@ option.oil_station_opt{ | @@ -1042,21 +1042,21 @@ option.oil_station_opt{ | ||
| 1042 | margin-right: 5px; | 1042 | margin-right: 5px; |
| 1043 | } | 1043 | } |
| 1044 | 1044 | ||
| 1045 | -.ct_tags>span.active{ | 1045 | +.ct_tags > span.active { |
| 1046 | background: #62a9e1; | 1046 | background: #62a9e1; |
| 1047 | color: white; | 1047 | color: white; |
| 1048 | box-shadow: 0 0 4px rgba(0, 0, 0, 0.35); | 1048 | box-shadow: 0 0 4px rgba(0, 0, 0, 0.35); |
| 1049 | } | 1049 | } |
| 1050 | 1050 | ||
| 1051 | -.ct_tags>span.active:before{ | 1051 | +.ct_tags > span.active:before { |
| 1052 | content: "\f00c"; | 1052 | content: "\f00c"; |
| 1053 | font-family: FontAwesome; | 1053 | font-family: FontAwesome; |
| 1054 | margin-right: 2px; | 1054 | margin-right: 2px; |
| 1055 | font-size: 13px; | 1055 | font-size: 13px; |
| 1056 | } | 1056 | } |
| 1057 | 1057 | ||
| 1058 | -.ct_tags>span:hover{ | ||
| 1059 | - box-shadow: 0 0 4px rgba(0,0,0,.3); | 1058 | +.ct_tags > span:hover { |
| 1059 | + box-shadow: 0 0 4px rgba(0, 0, 0, .3); | ||
| 1060 | } | 1060 | } |
| 1061 | 1061 | ||
| 1062 | span.late-badge { | 1062 | span.late-badge { |
| @@ -1067,48 +1067,51 @@ span.late-badge { | @@ -1067,48 +1067,51 @@ span.late-badge { | ||
| 1067 | margin-left: 2px; | 1067 | margin-left: 2px; |
| 1068 | } | 1068 | } |
| 1069 | 1069 | ||
| 1070 | -dl.intimity span.late-badge{ | 1070 | +dl.intimity span.late-badge { |
| 1071 | color: #fbfbfb; | 1071 | color: #fbfbfb; |
| 1072 | } | 1072 | } |
| 1073 | 1073 | ||
| 1074 | /** badge tooltip */ | 1074 | /** badge tooltip */ |
| 1075 | .uk-badge.c_task:hover, | 1075 | .uk-badge.c_task:hover, |
| 1076 | -.uk-badge.sch_region:hover{ | 1076 | +.uk-badge.sch_region:hover { |
| 1077 | background-image: none; | 1077 | background-image: none; |
| 1078 | background: #38b3e1; | 1078 | background: #38b3e1; |
| 1079 | border: 1px solid #7ebad1; | 1079 | border: 1px solid #7ebad1; |
| 1080 | } | 1080 | } |
| 1081 | 1081 | ||
| 1082 | -.uk-badge.out:hover{ | 1082 | +.uk-badge.out:hover { |
| 1083 | background-image: none; | 1083 | background-image: none; |
| 1084 | background: #8fc650; | 1084 | background: #8fc650; |
| 1085 | border: 1px solid #949f86; | 1085 | border: 1px solid #949f86; |
| 1086 | } | 1086 | } |
| 1087 | 1087 | ||
| 1088 | -.uk-badge.in:hover{ | 1088 | +.uk-badge.in:hover { |
| 1089 | background-image: none; | 1089 | background-image: none; |
| 1090 | background: #fabc64; | 1090 | background: #fabc64; |
| 1091 | border: 1px solid #a68c67; | 1091 | border: 1px solid #a68c67; |
| 1092 | } | 1092 | } |
| 1093 | 1093 | ||
| 1094 | -.qtip.sch-badge-tip{ | ||
| 1095 | - max-width: 500px; | 1094 | +.qtip.sch-badge-tip { |
| 1095 | + max-width: 700px; | ||
| 1096 | } | 1096 | } |
| 1097 | 1097 | ||
| 1098 | .tip_task_list { | 1098 | .tip_task_list { |
| 1099 | - width: 460px; | 1099 | + width: 530px; |
| 1100 | margin-bottom: -10px; | 1100 | margin-bottom: -10px; |
| 1101 | } | 1101 | } |
| 1102 | -.tip_task_list dl{ | 1102 | + |
| 1103 | +.tip_task_list dl { | ||
| 1103 | font-size: 0; | 1104 | font-size: 0; |
| 1104 | border-bottom: 1px solid #e6e6e6; | 1105 | border-bottom: 1px solid #e6e6e6; |
| 1105 | margin: 0; | 1106 | margin: 0; |
| 1106 | } | 1107 | } |
| 1107 | -.tip_task_list dl:last-child{ | 1108 | + |
| 1109 | +.tip_task_list dl:last-child { | ||
| 1108 | border-bottom: none; | 1110 | border-bottom: none; |
| 1109 | } | 1111 | } |
| 1112 | + | ||
| 1110 | .tip_task_list dl dt, | 1113 | .tip_task_list dl dt, |
| 1111 | -.tip_task_list dl dd{ | 1114 | +.tip_task_list dl dd { |
| 1112 | display: inline-block; | 1115 | display: inline-block; |
| 1113 | font-size: 13px; | 1116 | font-size: 13px; |
| 1114 | white-space: nowrap; | 1117 | white-space: nowrap; |
| @@ -1118,55 +1121,72 @@ dl.intimity span.late-badge{ | @@ -1118,55 +1121,72 @@ dl.intimity span.late-badge{ | ||
| 1118 | line-height: 24px; | 1121 | line-height: 24px; |
| 1119 | } | 1122 | } |
| 1120 | 1123 | ||
| 1121 | -.tip_task_list dl dt:nth-of-type(1), .tip_task_list dl dd:nth-of-type(1){ | ||
| 1122 | - width: 19%; | 1124 | +.tip_task_list dl dt:nth-of-type(1), .tip_task_list dl dd:nth-of-type(1) { |
| 1125 | + width: 38px; | ||
| 1126 | + border-right: 1px solid #c8c8c8; | ||
| 1123 | } | 1127 | } |
| 1124 | -.tip_task_list dl dt:nth-of-type(2), .tip_task_list dl dd:nth-of-type(2){ | ||
| 1125 | - width: 12%; | 1128 | + |
| 1129 | +.tip_task_list dl dt:nth-of-type(2), .tip_task_list dl dd:nth-of-type(2) { | ||
| 1130 | + width: 18%; | ||
| 1131 | + text-indent: 5px; | ||
| 1126 | } | 1132 | } |
| 1127 | -.tip_task_list dl dt:nth-of-type(3), .tip_task_list dl dd:nth-of-type(3){ | ||
| 1128 | - width: 28%; | 1133 | + |
| 1134 | +.tip_task_list dl dt:nth-of-type(3), .tip_task_list dl dd:nth-of-type(3) { | ||
| 1135 | + width: 11%; | ||
| 1129 | } | 1136 | } |
| 1130 | -.tip_task_list dl dt:nth-of-type(4), .tip_task_list dl dd:nth-of-type(4){ | ||
| 1131 | - width: 28%; | 1137 | + |
| 1138 | +.tip_task_list dl dt:nth-of-type(4), .tip_task_list dl dd:nth-of-type(4) { | ||
| 1139 | + width: 25%; | ||
| 1132 | } | 1140 | } |
| 1133 | -.tip_task_list dl dt:nth-of-type(5), .tip_task_list dl dd:nth-of-type(5){ | ||
| 1134 | - width: 13%; | 1141 | + |
| 1142 | +.tip_task_list dl dt:nth-of-type(5), .tip_task_list dl dd:nth-of-type(5) { | ||
| 1143 | + width: 25%; | ||
| 1144 | +} | ||
| 1145 | + | ||
| 1146 | +.tip_task_list dl dt:nth-of-type(6), .tip_task_list dl dd:nth-of-type(6) { | ||
| 1147 | + | ||
| 1135 | } | 1148 | } |
| 1136 | 1149 | ||
| 1137 | -.tip_task_list dl.service{ | 1150 | +.tip_task_list dl dd:nth-of-type(1) a { |
| 1151 | + color: #3c3c3c; | ||
| 1152 | + text-decoration: underline; | ||
| 1153 | + font-size: 12px; | ||
| 1154 | +} | ||
| 1155 | + | ||
| 1156 | +.tip_task_list dl.service { | ||
| 1138 | color: blue; | 1157 | color: blue; |
| 1139 | } | 1158 | } |
| 1140 | -.tip_task_list dl.service.destroy{ | 1159 | + |
| 1160 | +.tip_task_list dl.service.destroy { | ||
| 1141 | color: red; | 1161 | color: red; |
| 1142 | } | 1162 | } |
| 1143 | 1163 | ||
| 1144 | -.tip_task_list dl.service.temp_add{ | 1164 | +.tip_task_list dl.service.temp_add { |
| 1145 | color: #9C27B0; | 1165 | color: #9C27B0; |
| 1146 | } | 1166 | } |
| 1147 | 1167 | ||
| 1148 | -.tip_task_list dl span{ | 1168 | +.tip_task_list dl span { |
| 1149 | margin: 0; | 1169 | margin: 0; |
| 1150 | width: auto; | 1170 | width: auto; |
| 1151 | } | 1171 | } |
| 1152 | 1172 | ||
| 1153 | -ul.left_tabs_lg{ | 1173 | +ul.left_tabs_lg { |
| 1154 | border: 1px solid #efeded; | 1174 | border: 1px solid #efeded; |
| 1155 | height: 100%; | 1175 | height: 100%; |
| 1156 | background: #fafafa; | 1176 | background: #fafafa; |
| 1157 | } | 1177 | } |
| 1158 | 1178 | ||
| 1159 | -ul.left_tabs_lg li{ | 1179 | +ul.left_tabs_lg li { |
| 1160 | line-height: 40px; | 1180 | line-height: 40px; |
| 1161 | font-size: 15px; | 1181 | font-size: 15px; |
| 1162 | } | 1182 | } |
| 1163 | 1183 | ||
| 1164 | -#schedule-addsch-modal .uk-modal-footer{ | 1184 | +#schedule-addsch-modal .uk-modal-footer { |
| 1165 | border-top: none; | 1185 | border-top: none; |
| 1166 | background: none; | 1186 | background: none; |
| 1167 | } | 1187 | } |
| 1168 | 1188 | ||
| 1169 | -.ct_line_lp_badge{ | 1189 | +.ct_line_lp_badge { |
| 1170 | float: left; | 1190 | float: left; |
| 1171 | margin-top: 6px; | 1191 | margin-top: 6px; |
| 1172 | background: #e0e0e0; | 1192 | background: #e0e0e0; |
| @@ -1174,94 +1194,111 @@ ul.left_tabs_lg li{ | @@ -1174,94 +1194,111 @@ ul.left_tabs_lg li{ | ||
| 1174 | border-radius: 3px; | 1194 | border-radius: 3px; |
| 1175 | } | 1195 | } |
| 1176 | 1196 | ||
| 1177 | -.uk-badge.sch_ldks{ | 1197 | +.uk-badge.sch_ldks { |
| 1178 | background: #8c8c8c; | 1198 | background: #8c8c8c; |
| 1179 | - background-image: linear-gradient(to bottom,#a7a7a7,#8c8c8c); | 1199 | + background-image: linear-gradient(to bottom, #a7a7a7, #8c8c8c); |
| 1180 | } | 1200 | } |
| 1181 | 1201 | ||
| 1182 | -.ct_layer_modal{ | 1202 | +.ct_layer_modal { |
| 1183 | background: #e5e5e5; | 1203 | background: #e5e5e5; |
| 1184 | height: 100%; | 1204 | height: 100%; |
| 1185 | width: 100%; | 1205 | width: 100%; |
| 1186 | overflow: auto; | 1206 | overflow: auto; |
| 1187 | } | 1207 | } |
| 1188 | 1208 | ||
| 1189 | -.layui-layer-setwin{ | 1209 | +.layui-layer-setwin { |
| 1190 | 1210 | ||
| 1191 | } | 1211 | } |
| 1192 | 1212 | ||
| 1193 | -.device_config_table dl dt:nth-of-type(1), .device_config_table dl dd:nth-of-type(1){ | 1213 | +.device_config_table dl dt:nth-of-type(1), .device_config_table dl dd:nth-of-type(1) { |
| 1194 | width: 7%; | 1214 | width: 7%; |
| 1195 | text-indent: 10px; | 1215 | text-indent: 10px; |
| 1196 | } | 1216 | } |
| 1197 | -.device_config_table dl dt:nth-of-type(2), .device_config_table dl dd:nth-of-type(2){ | 1217 | + |
| 1218 | +.device_config_table dl dt:nth-of-type(2), .device_config_table dl dd:nth-of-type(2) { | ||
| 1198 | width: 7%; | 1219 | width: 7%; |
| 1199 | } | 1220 | } |
| 1200 | -.device_config_table dl dt:nth-of-type(3), .device_config_table dl dd:nth-of-type(3){ | 1221 | + |
| 1222 | +.device_config_table dl dt:nth-of-type(3), .device_config_table dl dd:nth-of-type(3) { | ||
| 1201 | width: 8%; | 1223 | width: 8%; |
| 1202 | } | 1224 | } |
| 1203 | -.device_config_table dl dt:nth-of-type(4), .device_config_table dl dd:nth-of-type(4){ | 1225 | + |
| 1226 | +.device_config_table dl dt:nth-of-type(4), .device_config_table dl dd:nth-of-type(4) { | ||
| 1204 | width: 5%; | 1227 | width: 5%; |
| 1205 | } | 1228 | } |
| 1206 | -.device_config_table dl dt:nth-of-type(5), .device_config_table dl dd:nth-of-type(5){ | 1229 | + |
| 1230 | +.device_config_table dl dt:nth-of-type(5), .device_config_table dl dd:nth-of-type(5) { | ||
| 1207 | width: 4%; | 1231 | width: 4%; |
| 1208 | } | 1232 | } |
| 1209 | -.device_config_table dl dt:nth-of-type(6), .device_config_table dl dd:nth-of-type(6){ | 1233 | + |
| 1234 | +.device_config_table dl dt:nth-of-type(6), .device_config_table dl dd:nth-of-type(6) { | ||
| 1210 | width: 4%; | 1235 | width: 4%; |
| 1211 | } | 1236 | } |
| 1212 | -.device_config_table dl dt:nth-of-type(7), .device_config_table dl dd:nth-of-type(7){ | 1237 | + |
| 1238 | +.device_config_table dl dt:nth-of-type(7), .device_config_table dl dd:nth-of-type(7) { | ||
| 1213 | width: 4%; | 1239 | width: 4%; |
| 1214 | } | 1240 | } |
| 1215 | -.device_config_table dl dt:nth-of-type(8), .device_config_table dl dd:nth-of-type(8){ | 1241 | + |
| 1242 | +.device_config_table dl dt:nth-of-type(8), .device_config_table dl dd:nth-of-type(8) { | ||
| 1216 | width: 5%; | 1243 | width: 5%; |
| 1217 | } | 1244 | } |
| 1218 | -.device_config_table dl dt:nth-of-type(9), .device_config_table dl dd:nth-of-type(9){ | 1245 | + |
| 1246 | +.device_config_table dl dt:nth-of-type(9), .device_config_table dl dd:nth-of-type(9) { | ||
| 1219 | width: 5%; | 1247 | width: 5%; |
| 1220 | } | 1248 | } |
| 1221 | -.device_config_table dl dt:nth-of-type(10), .device_config_table dl dd:nth-of-type(10){ | 1249 | + |
| 1250 | +.device_config_table dl dt:nth-of-type(10), .device_config_table dl dd:nth-of-type(10) { | ||
| 1222 | width: 8%; | 1251 | width: 8%; |
| 1223 | } | 1252 | } |
| 1224 | -.device_config_table dl dt:nth-of-type(11), .device_config_table dl dd:nth-of-type(11){ | 1253 | + |
| 1254 | +.device_config_table dl dt:nth-of-type(11), .device_config_table dl dd:nth-of-type(11) { | ||
| 1225 | width: 5%; | 1255 | width: 5%; |
| 1226 | } | 1256 | } |
| 1227 | -.device_config_table dl dt:nth-of-type(12), .device_config_table dl dd:nth-of-type(12){ | 1257 | + |
| 1258 | +.device_config_table dl dt:nth-of-type(12), .device_config_table dl dd:nth-of-type(12) { | ||
| 1228 | width: 5%; | 1259 | width: 5%; |
| 1229 | } | 1260 | } |
| 1230 | -.device_config_table dl dt:nth-of-type(13), .device_config_table dl dd:nth-of-type(13){ | 1261 | + |
| 1262 | +.device_config_table dl dt:nth-of-type(13), .device_config_table dl dd:nth-of-type(13) { | ||
| 1231 | width: 4%; | 1263 | width: 4%; |
| 1232 | } | 1264 | } |
| 1233 | -.device_config_table dl dt:nth-of-type(14), .device_config_table dl dd:nth-of-type(14){ | 1265 | + |
| 1266 | +.device_config_table dl dt:nth-of-type(14), .device_config_table dl dd:nth-of-type(14) { | ||
| 1234 | width: 4%; | 1267 | width: 4%; |
| 1235 | } | 1268 | } |
| 1236 | -.device_config_table dl dt:nth-of-type(15), .device_config_table dl dd:nth-of-type(15){ | 1269 | + |
| 1270 | +.device_config_table dl dt:nth-of-type(15), .device_config_table dl dd:nth-of-type(15) { | ||
| 1237 | width: 4%; | 1271 | width: 4%; |
| 1238 | } | 1272 | } |
| 1239 | -.device_config_table dl dt:nth-of-type(16), .device_config_table dl dd:nth-of-type(16){ | 1273 | + |
| 1274 | +.device_config_table dl dt:nth-of-type(16), .device_config_table dl dd:nth-of-type(16) { | ||
| 1240 | width: 3%; | 1275 | width: 3%; |
| 1241 | } | 1276 | } |
| 1242 | -.device_config_table dl dt:nth-of-type(17), .device_config_table dl dd:nth-of-type(17){ | 1277 | + |
| 1278 | +.device_config_table dl dt:nth-of-type(17), .device_config_table dl dd:nth-of-type(17) { | ||
| 1243 | width: 4%; | 1279 | width: 4%; |
| 1244 | } | 1280 | } |
| 1245 | -.device_config_table dl dt:nth-of-type(18), .device_config_table dl dd:nth-of-type(18){ | 1281 | + |
| 1282 | +.device_config_table dl dt:nth-of-type(18), .device_config_table dl dd:nth-of-type(18) { | ||
| 1246 | width: 13%; | 1283 | width: 13%; |
| 1247 | } | 1284 | } |
| 1248 | 1285 | ||
| 1249 | -.uk-tooltip{ | 1286 | +.uk-tooltip { |
| 1250 | z-index: 29999999 !important; | 1287 | z-index: 29999999 !important; |
| 1251 | } | 1288 | } |
| 1252 | 1289 | ||
| 1253 | .device_config_table.ct_table dl dd, | 1290 | .device_config_table.ct_table dl dd, |
| 1254 | -.device_config_table.ct_table dl dt{ | 1291 | +.device_config_table.ct_table dl dt { |
| 1255 | border-right: 1px solid #dedede !important; | 1292 | border-right: 1px solid #dedede !important; |
| 1256 | } | 1293 | } |
| 1257 | 1294 | ||
| 1258 | -.device_configs_manager .search_form{ | 1295 | +.device_configs_manager .search_form { |
| 1259 | text-indent: 12px; | 1296 | text-indent: 12px; |
| 1260 | margin-bottom: 0; | 1297 | margin-bottom: 0; |
| 1261 | padding: 18px 5px; | 1298 | padding: 18px 5px; |
| 1262 | } | 1299 | } |
| 1263 | 1300 | ||
| 1264 | -.sub_task_form_v2{ | 1301 | +.sub_task_form_v2 { |
| 1265 | background: #f9f9f9; | 1302 | background: #f9f9f9; |
| 1266 | padding: 12px 15px; | 1303 | padding: 12px 15px; |
| 1267 | border-radius: 5px 0 5px 5px; | 1304 | border-radius: 5px 0 5px 5px; |
| @@ -1270,7 +1307,7 @@ ul.left_tabs_lg li{ | @@ -1270,7 +1307,7 @@ ul.left_tabs_lg li{ | ||
| 1270 | margin-bottom: 20px; | 1307 | margin-bottom: 20px; |
| 1271 | } | 1308 | } |
| 1272 | 1309 | ||
| 1273 | -.task_form_close_icon{ | 1310 | +.task_form_close_icon { |
| 1274 | background: #f9f9f9; | 1311 | background: #f9f9f9; |
| 1275 | padding: 0px 4px; | 1312 | padding: 0px 4px; |
| 1276 | position: absolute; | 1313 | position: absolute; |
| @@ -1285,41 +1322,41 @@ ul.left_tabs_lg li{ | @@ -1285,41 +1322,41 @@ ul.left_tabs_lg li{ | ||
| 1285 | transition: all .03s; | 1322 | transition: all .03s; |
| 1286 | } | 1323 | } |
| 1287 | 1324 | ||
| 1288 | -.task_form_close_icon:hover{ | 1325 | +.task_form_close_icon:hover { |
| 1289 | border: 1px solid #ff1515; | 1326 | border: 1px solid #ff1515; |
| 1290 | border-left: none; | 1327 | border-left: none; |
| 1291 | border-bottom: none; | 1328 | border-bottom: none; |
| 1292 | color: #e03e3e; | 1329 | color: #e03e3e; |
| 1293 | } | 1330 | } |
| 1294 | 1331 | ||
| 1295 | -.sub_task_form_v2:hover::after{ | 1332 | +.sub_task_form_v2:hover::after { |
| 1296 | color: #5f5b5b; | 1333 | color: #5f5b5b; |
| 1297 | } | 1334 | } |
| 1298 | 1335 | ||
| 1299 | -.sub_task_form_v2.uk-form-horizontal .uk-form-label{ | 1336 | +.sub_task_form_v2.uk-form-horizontal .uk-form-label { |
| 1300 | width: 80px; | 1337 | width: 80px; |
| 1301 | } | 1338 | } |
| 1302 | 1339 | ||
| 1303 | -.sub_task_form_v2.uk-form-horizontal .uk-form-controls{ | 1340 | +.sub_task_form_v2.uk-form-horizontal .uk-form-controls { |
| 1304 | margin-left: 85px; | 1341 | margin-left: 85px; |
| 1305 | } | 1342 | } |
| 1306 | 1343 | ||
| 1307 | .sub_task_form_v2.uk-form-horizontal .uk-form-controls input[type=text], | 1344 | .sub_task_form_v2.uk-form-horizontal .uk-form-controls input[type=text], |
| 1308 | .sub_task_form_v2.uk-form-horizontal .uk-form-controls input[type=time], | 1345 | .sub_task_form_v2.uk-form-horizontal .uk-form-controls input[type=time], |
| 1309 | -.sub_task_form_v2.uk-form-horizontal .uk-form-controls select{ | 1346 | +.sub_task_form_v2.uk-form-horizontal .uk-form-controls select { |
| 1310 | width: 100%; | 1347 | width: 100%; |
| 1311 | } | 1348 | } |
| 1312 | 1349 | ||
| 1313 | -#add-sub-task-main-modal .uk-modal-footer{ | 1350 | +#add-sub-task-main-modal .uk-modal-footer { |
| 1314 | background: none; | 1351 | background: none; |
| 1315 | border-top: none; | 1352 | border-top: none; |
| 1316 | } | 1353 | } |
| 1317 | 1354 | ||
| 1318 | -#add-sub-task-main-modal .uk-grid+.uk-grid{ | 1355 | +#add-sub-task-main-modal .uk-grid + .uk-grid { |
| 1319 | margin-top: 12px; | 1356 | margin-top: 12px; |
| 1320 | } | 1357 | } |
| 1321 | 1358 | ||
| 1322 | -#add-sub-task-main-modal .plus_icon_span{ | 1359 | +#add-sub-task-main-modal .plus_icon_span { |
| 1323 | font-size: 26px; | 1360 | font-size: 26px; |
| 1324 | color: #b2b2b2; | 1361 | color: #b2b2b2; |
| 1325 | padding: 10px 64px; | 1362 | padding: 10px 64px; |
| @@ -1330,26 +1367,26 @@ ul.left_tabs_lg li{ | @@ -1330,26 +1367,26 @@ ul.left_tabs_lg li{ | ||
| 1330 | cursor: pointer; | 1367 | cursor: pointer; |
| 1331 | } | 1368 | } |
| 1332 | 1369 | ||
| 1333 | -#add-sub-task-main-modal .uk-animation-fade{ | 1370 | +#add-sub-task-main-modal .uk-animation-fade { |
| 1334 | animation-duration: .3s; | 1371 | animation-duration: .3s; |
| 1335 | } | 1372 | } |
| 1336 | 1373 | ||
| 1337 | -#add-sub-task-main-modal .forms{ | ||
| 1338 | - max-height: 488px; | 1374 | +#add-sub-task-main-modal .forms { |
| 1375 | + max-height: 642px; | ||
| 1339 | overflow-y: auto; | 1376 | overflow-y: auto; |
| 1340 | overflow-x: hidden; | 1377 | overflow-x: hidden; |
| 1341 | padding: 8px 8px 0 0; | 1378 | padding: 8px 8px 0 0; |
| 1342 | } | 1379 | } |
| 1343 | 1380 | ||
| 1344 | -.add_custom_wrap .forms .sub_task_form_v2:last-child{ | 1381 | +.add_custom_wrap .forms .sub_task_form_v2:last-child { |
| 1345 | margin-bottom: 0; | 1382 | margin-bottom: 0; |
| 1346 | } | 1383 | } |
| 1347 | 1384 | ||
| 1348 | -.sub_task_form_v2.destroy_form{ | 1385 | +.sub_task_form_v2.destroy_form { |
| 1349 | background-color: #fff5f4 !important; | 1386 | background-color: #fff5f4 !important; |
| 1350 | } | 1387 | } |
| 1351 | 1388 | ||
| 1352 | -.uk-form>.half_change_car_box{ | 1389 | +.uk-form > .half_change_car_box { |
| 1353 | margin: -10px 0 15px; | 1390 | margin: -10px 0 15px; |
| 1354 | padding: 3px 5px; | 1391 | padding: 3px 5px; |
| 1355 | display: inline-block; | 1392 | display: inline-block; |
| @@ -1357,29 +1394,29 @@ ul.left_tabs_lg li{ | @@ -1357,29 +1394,29 @@ ul.left_tabs_lg li{ | ||
| 1357 | color: #918f8f; | 1394 | color: #918f8f; |
| 1358 | } | 1395 | } |
| 1359 | 1396 | ||
| 1360 | -.half_change_car_box input[type=checkbox]{ | 1397 | +.half_change_car_box input[type=checkbox] { |
| 1361 | vertical-align: top; | 1398 | vertical-align: top; |
| 1362 | } | 1399 | } |
| 1363 | 1400 | ||
| 1364 | -.uk-form>.half_change_car_box.active{ | 1401 | +.uk-form > .half_change_car_box.active { |
| 1365 | background: #4CAF50; | 1402 | background: #4CAF50; |
| 1366 | color: #fff; | 1403 | color: #fff; |
| 1367 | } | 1404 | } |
| 1368 | 1405 | ||
| 1369 | -.uk-form>.half_change_car_box.active input[type=checkbox]{ | 1406 | +.uk-form > .half_change_car_box.active input[type=checkbox] { |
| 1370 | background: #4caf50; | 1407 | background: #4caf50; |
| 1371 | border-color: #4caf50; | 1408 | border-color: #4caf50; |
| 1372 | } | 1409 | } |
| 1373 | 1410 | ||
| 1374 | -.uk-form>.half_change_car_box.active input[type=checkbox]:before{ | 1411 | +.uk-form > .half_change_car_box.active input[type=checkbox]:before { |
| 1375 | color: #ffffff; | 1412 | color: #ffffff; |
| 1376 | } | 1413 | } |
| 1377 | 1414 | ||
| 1378 | -.sub_task_form_v2.change_car{ | 1415 | +.sub_task_form_v2.change_car { |
| 1379 | z-index: 99; | 1416 | z-index: 99; |
| 1380 | } | 1417 | } |
| 1381 | 1418 | ||
| 1382 | -.st_range_top_form{ | 1419 | +.st_range_top_form { |
| 1383 | padding: 0 0 15px 5px; | 1420 | padding: 0 0 15px 5px; |
| 1384 | border: 1px solid #c4bb76; | 1421 | border: 1px solid #c4bb76; |
| 1385 | background: #e5e1c1; | 1422 | background: #e5e1c1; |
| @@ -1387,46 +1424,46 @@ ul.left_tabs_lg li{ | @@ -1387,46 +1424,46 @@ ul.left_tabs_lg li{ | ||
| 1387 | box-shadow: 0px 4px 3px 0 rgba(142, 138, 138, 0.2), 0px 4px 5px 0 rgba(157, 156, 156, 0.19); | 1424 | box-shadow: 0px 4px 3px 0 rgba(142, 138, 138, 0.2), 0px 4px 5px 0 rgba(157, 156, 156, 0.19); |
| 1388 | } | 1425 | } |
| 1389 | 1426 | ||
| 1390 | -.st_range_top_form .uk-form-row{ | 1427 | +.st_range_top_form .uk-form-row { |
| 1391 | margin-top: 20px; | 1428 | margin-top: 20px; |
| 1392 | } | 1429 | } |
| 1393 | 1430 | ||
| 1394 | -.uk-form-horizontal.st_range_top_form .uk-form-label{ | 1431 | +.uk-form-horizontal.st_range_top_form .uk-form-label { |
| 1395 | width: 80px; | 1432 | width: 80px; |
| 1396 | } | 1433 | } |
| 1397 | 1434 | ||
| 1398 | -.uk-form-horizontal.st_range_top_form .uk-form-controls{ | 1435 | +.uk-form-horizontal.st_range_top_form .uk-form-controls { |
| 1399 | margin-left: 84px; | 1436 | margin-left: 84px; |
| 1400 | } | 1437 | } |
| 1401 | 1438 | ||
| 1402 | -.uk-form-horizontal.st_range_top_form .uk-form-controls select{ | 1439 | +.uk-form-horizontal.st_range_top_form .uk-form-controls select { |
| 1403 | width: calc(100% - 2px); | 1440 | width: calc(100% - 2px); |
| 1404 | } | 1441 | } |
| 1405 | 1442 | ||
| 1406 | -.sub_task_form_v2.service_st_form{ | 1443 | +.sub_task_form_v2.service_st_form { |
| 1407 | background: #f4faff; | 1444 | background: #f4faff; |
| 1408 | } | 1445 | } |
| 1409 | 1446 | ||
| 1410 | -.uk-modal .uk-form.fv-form.sub_task_form_v2{ | 1447 | +.uk-modal .uk-form.fv-form.sub_task_form_v2 { |
| 1411 | margin-bottom: 20px !important; | 1448 | margin-bottom: 20px !important; |
| 1412 | } | 1449 | } |
| 1413 | 1450 | ||
| 1414 | -.sub_task_table_wrap .ct_table>.ct_table_body{ | 1451 | +.sub_task_table_wrap .ct_table > .ct_table_body { |
| 1415 | border-bottom: none; | 1452 | border-bottom: none; |
| 1416 | } | 1453 | } |
| 1417 | 1454 | ||
| 1418 | -.err_panel{ | 1455 | +.err_panel { |
| 1419 | font-size: 12px; | 1456 | font-size: 12px; |
| 1420 | color: #7e7d7d; | 1457 | color: #7e7d7d; |
| 1421 | font-family: 微软雅黑; | 1458 | font-family: 微软雅黑; |
| 1422 | margin-top: 5px; | 1459 | margin-top: 5px; |
| 1423 | } | 1460 | } |
| 1424 | 1461 | ||
| 1425 | -#schedule-lp_change-modal .ct_table dl{ | 1462 | +#schedule-lp_change-modal .ct_table dl { |
| 1426 | height: 35px; | 1463 | height: 35px; |
| 1427 | } | 1464 | } |
| 1428 | 1465 | ||
| 1429 | -#schedule-lp_change-modal .ct_table dl dd, #schedule-lp_change-modal .ct_table dl dt{ | 1466 | +#schedule-lp_change-modal .ct_table dl dd, #schedule-lp_change-modal .ct_table dl dt { |
| 1430 | line-height: 35px; | 1467 | line-height: 35px; |
| 1431 | } | 1468 | } |
| 1432 | 1469 | ||
| @@ -1442,7 +1479,7 @@ ul.left_tabs_lg li{ | @@ -1442,7 +1479,7 @@ ul.left_tabs_lg li{ | ||
| 1442 | font-weight: 600; | 1479 | font-weight: 600; |
| 1443 | }*/ | 1480 | }*/ |
| 1444 | 1481 | ||
| 1445 | -.sub_task_form_v2:before{ | 1482 | +.sub_task_form_v2:before { |
| 1446 | position: absolute; | 1483 | position: absolute; |
| 1447 | top: -7px; | 1484 | top: -7px; |
| 1448 | font-size: 12px; | 1485 | font-size: 12px; |
| @@ -1451,19 +1488,19 @@ ul.left_tabs_lg li{ | @@ -1451,19 +1488,19 @@ ul.left_tabs_lg li{ | ||
| 1451 | line-height: 14px; | 1488 | line-height: 14px; |
| 1452 | } | 1489 | } |
| 1453 | 1490 | ||
| 1454 | -.sub_task_form_v2.destroy_form:before{ | 1491 | +.sub_task_form_v2.destroy_form:before { |
| 1455 | content: '烂班' !important; | 1492 | content: '烂班' !important; |
| 1456 | color: #f14235 !important; | 1493 | color: #f14235 !important; |
| 1457 | background: #ffffff !important; | 1494 | background: #ffffff !important; |
| 1458 | } | 1495 | } |
| 1459 | 1496 | ||
| 1460 | -.sub_task_form_v2.service_form:before{ | 1497 | +.sub_task_form_v2.service_form:before { |
| 1461 | content: '营运'; | 1498 | content: '营运'; |
| 1462 | color: #2196F3; | 1499 | color: #2196F3; |
| 1463 | background: #ffffff; | 1500 | background: #ffffff; |
| 1464 | } | 1501 | } |
| 1465 | 1502 | ||
| 1466 | -.sub_task_form_v2.service_form.temp_service:before{ | 1503 | +.sub_task_form_v2.service_form.temp_service:before { |
| 1467 | content: '营运 (临加)'; | 1504 | content: '营运 (临加)'; |
| 1468 | color: #9C27B0; | 1505 | color: #9C27B0; |
| 1469 | background: #ffffff; | 1506 | background: #ffffff; |
| @@ -1473,13 +1510,13 @@ ul.left_tabs_lg li{ | @@ -1473,13 +1510,13 @@ ul.left_tabs_lg li{ | ||
| 1473 | background: #faf0fd; | 1510 | background: #faf0fd; |
| 1474 | } | 1511 | } |
| 1475 | 1512 | ||
| 1476 | -.sub_task_form_v2.empty_form:before{ | 1513 | +.sub_task_form_v2.empty_form:before { |
| 1477 | content: '空驶'; | 1514 | content: '空驶'; |
| 1478 | color: #928f92; | 1515 | color: #928f92; |
| 1479 | background: #ffffff; | 1516 | background: #ffffff; |
| 1480 | } | 1517 | } |
| 1481 | 1518 | ||
| 1482 | -.sub_task_form_v2.service_form{ | 1519 | +.sub_task_form_v2.service_form { |
| 1483 | background: #f4faff; | 1520 | background: #f4faff; |
| 1484 | } | 1521 | } |
| 1485 | 1522 | ||
| @@ -1490,52 +1527,52 @@ ul.left_tabs_lg li{ | @@ -1490,52 +1527,52 @@ ul.left_tabs_lg li{ | ||
| 1490 | .sub_task_form_v2.repeat_main{ | 1527 | .sub_task_form_v2.repeat_main{ |
| 1491 | background: #f4faff; | 1528 | background: #f4faff; |
| 1492 | }*/ | 1529 | }*/ |
| 1493 | -.footer_tools{ | 1530 | +.footer_tools { |
| 1494 | position: absolute; | 1531 | position: absolute; |
| 1495 | left: 235px; | 1532 | left: 235px; |
| 1496 | bottom: 19px; | 1533 | bottom: 19px; |
| 1497 | } | 1534 | } |
| 1498 | 1535 | ||
| 1499 | -.footer_mileage_count{ | 1536 | +.footer_mileage_count { |
| 1500 | border: 1px solid #f2f2f2; | 1537 | border: 1px solid #f2f2f2; |
| 1501 | padding: 5px; | 1538 | padding: 5px; |
| 1502 | box-shadow: 0px 2px 5px 0 rgba(0, 0, 0, 0.2), 0px 2px 7px 0 rgba(0, 0, 0, 0.19); | 1539 | box-shadow: 0px 2px 5px 0 rgba(0, 0, 0, 0.2), 0px 2px 7px 0 rgba(0, 0, 0, 0.19); |
| 1503 | display: inline-block; | 1540 | display: inline-block; |
| 1504 | } | 1541 | } |
| 1505 | 1542 | ||
| 1506 | -.footer_mileage_count>span{ | 1543 | +.footer_mileage_count > span { |
| 1507 | padding: 2px 5px; | 1544 | padding: 2px 5px; |
| 1508 | } | 1545 | } |
| 1509 | 1546 | ||
| 1510 | -.footer_mileage_count>span.service_sum{ | 1547 | +.footer_mileage_count > span.service_sum { |
| 1511 | color: #2196F3; | 1548 | color: #2196F3; |
| 1512 | } | 1549 | } |
| 1513 | 1550 | ||
| 1514 | -.footer_mileage_count>span.empty_sum{ | 1551 | +.footer_mileage_count > span.empty_sum { |
| 1515 | color: #636363; | 1552 | color: #636363; |
| 1516 | } | 1553 | } |
| 1517 | 1554 | ||
| 1518 | -.footer_mileage_count>span.destroy_sum{ | 1555 | +.footer_mileage_count > span.destroy_sum { |
| 1519 | color: #f5574b; | 1556 | color: #f5574b; |
| 1520 | } | 1557 | } |
| 1521 | 1558 | ||
| 1522 | -.station_to_park_link{ | 1559 | +.station_to_park_link { |
| 1523 | display: inline-block; | 1560 | display: inline-block; |
| 1524 | margin-left: 15px; | 1561 | margin-left: 15px; |
| 1525 | vertical-align: bottom; | 1562 | vertical-align: bottom; |
| 1526 | font-size: 12px; | 1563 | font-size: 12px; |
| 1527 | } | 1564 | } |
| 1528 | 1565 | ||
| 1529 | -.station_to_park_link>a{ | 1566 | +.station_to_park_link > a { |
| 1530 | color: #607D8B; | 1567 | color: #607D8B; |
| 1531 | } | 1568 | } |
| 1532 | 1569 | ||
| 1533 | #station_to_park-modal.ct-form-modal form input[type=text], | 1570 | #station_to_park-modal.ct-form-modal form input[type=text], |
| 1534 | -#station_to_park-modal.ct-form-modal form select{ | 1571 | +#station_to_park-modal.ct-form-modal form select { |
| 1535 | width: auto; | 1572 | width: auto; |
| 1536 | } | 1573 | } |
| 1537 | 1574 | ||
| 1538 | -.s_2_park_form_wrap{ | 1575 | +.s_2_park_form_wrap { |
| 1539 | background: #fafafa; | 1576 | background: #fafafa; |
| 1540 | border: 1px solid #e5e5e5; | 1577 | border: 1px solid #e5e5e5; |
| 1541 | padding: 7px 16px; | 1578 | padding: 7px 16px; |
| @@ -1543,7 +1580,7 @@ ul.left_tabs_lg li{ | @@ -1543,7 +1580,7 @@ ul.left_tabs_lg li{ | ||
| 1543 | position: relative; | 1580 | position: relative; |
| 1544 | } | 1581 | } |
| 1545 | 1582 | ||
| 1546 | -.s_2_park_form_wrap .ct_close{ | 1583 | +.s_2_park_form_wrap .ct_close { |
| 1547 | position: absolute; | 1584 | position: absolute; |
| 1548 | top: -12px; | 1585 | top: -12px; |
| 1549 | padding: 0 4px; | 1586 | padding: 0 4px; |
| @@ -1554,42 +1591,42 @@ ul.left_tabs_lg li{ | @@ -1554,42 +1591,42 @@ ul.left_tabs_lg li{ | ||
| 1554 | cursor: pointer; | 1591 | cursor: pointer; |
| 1555 | } | 1592 | } |
| 1556 | 1593 | ||
| 1557 | -.s_2_park_form_wrap .ct_close:hover{ | 1594 | +.s_2_park_form_wrap .ct_close:hover { |
| 1558 | background: #e5e5e5; | 1595 | background: #e5e5e5; |
| 1559 | color: #fd6e6e; | 1596 | color: #fd6e6e; |
| 1560 | } | 1597 | } |
| 1561 | 1598 | ||
| 1562 | -.s_2_park_form_wrap label{ | 1599 | +.s_2_park_form_wrap label { |
| 1563 | color: #666; | 1600 | color: #666; |
| 1564 | font-size: 13px; | 1601 | font-size: 13px; |
| 1565 | } | 1602 | } |
| 1566 | 1603 | ||
| 1567 | -#station_to_park-modal.ct-form-modal form input[readonly]{ | 1604 | +#station_to_park-modal.ct-form-modal form input[readonly] { |
| 1568 | background: #fafafa; | 1605 | background: #fafafa; |
| 1569 | } | 1606 | } |
| 1570 | 1607 | ||
| 1571 | -.s_2_park_form_wrap .bottom_label{ | 1608 | +.s_2_park_form_wrap .bottom_label { |
| 1572 | margin-top: 25px; | 1609 | margin-top: 25px; |
| 1573 | display: block; | 1610 | display: block; |
| 1574 | } | 1611 | } |
| 1575 | 1612 | ||
| 1576 | -.s_2_park_form_wrap .bottom_label_2{ | 1613 | +.s_2_park_form_wrap .bottom_label_2 { |
| 1577 | margin-top: 4px; | 1614 | margin-top: 4px; |
| 1578 | display: block; | 1615 | display: block; |
| 1579 | } | 1616 | } |
| 1580 | 1617 | ||
| 1581 | -.ct_describe{ | 1618 | +.ct_describe { |
| 1582 | font-size: 12px; | 1619 | font-size: 12px; |
| 1583 | color: #909090; | 1620 | color: #909090; |
| 1584 | font-family: FontAwesome; | 1621 | font-family: FontAwesome; |
| 1585 | } | 1622 | } |
| 1586 | 1623 | ||
| 1587 | -.ct_describe:before{ | 1624 | +.ct_describe:before { |
| 1588 | content: "\f059"; | 1625 | content: "\f059"; |
| 1589 | margin-right: 3px; | 1626 | margin-right: 3px; |
| 1590 | } | 1627 | } |
| 1591 | 1628 | ||
| 1592 | -#add-sub-task-main-modal abbr{ | 1629 | +#add-sub-task-main-modal abbr { |
| 1593 | display: inline-block; | 1630 | display: inline-block; |
| 1594 | font-size: 12px; | 1631 | font-size: 12px; |
| 1595 | margin-left: 25px; | 1632 | margin-left: 25px; |
| @@ -1597,15 +1634,17 @@ ul.left_tabs_lg li{ | @@ -1597,15 +1634,17 @@ ul.left_tabs_lg li{ | ||
| 1597 | color: #929292; | 1634 | color: #929292; |
| 1598 | } | 1635 | } |
| 1599 | 1636 | ||
| 1600 | -#all-devices-modal .search-form input[type=text]{ | 1637 | +#all-devices-modal .search-form input[type=text] { |
| 1601 | width: 100px; | 1638 | width: 100px; |
| 1602 | } | 1639 | } |
| 1603 | 1640 | ||
| 1604 | -#all-devices-modal .auto-refresh{ | ||
| 1605 | - vertical-align: middle;margin-left: 5px;color: grey; | 1641 | +#all-devices-modal .auto-refresh { |
| 1642 | + vertical-align: middle; | ||
| 1643 | + margin-left: 5px; | ||
| 1644 | + color: grey; | ||
| 1606 | } | 1645 | } |
| 1607 | 1646 | ||
| 1608 | -#all-devices-modal .auto-refresh.active{ | 1647 | +#all-devices-modal .auto-refresh.active { |
| 1609 | color: #405dff; | 1648 | color: #405dff; |
| 1610 | } | 1649 | } |
| 1611 | 1650 | ||
| @@ -1613,7 +1652,7 @@ ul.left_tabs_lg li{ | @@ -1613,7 +1652,7 @@ ul.left_tabs_lg li{ | ||
| 1613 | margin-top: 0 !important; | 1652 | margin-top: 0 !important; |
| 1614 | } | 1653 | } |
| 1615 | 1654 | ||
| 1616 | -#history-sch-maintain-modal .add_lp_link{ | 1655 | +#history-sch-maintain-modal .add_lp_link { |
| 1617 | display: inline-block; | 1656 | display: inline-block; |
| 1618 | vertical-align: bottom; | 1657 | vertical-align: bottom; |
| 1619 | margin-left: 15px; | 1658 | margin-left: 15px; |
| @@ -1621,107 +1660,107 @@ ul.left_tabs_lg li{ | @@ -1621,107 +1660,107 @@ ul.left_tabs_lg li{ | ||
| 1621 | font-size: 13px; | 1660 | font-size: 13px; |
| 1622 | } | 1661 | } |
| 1623 | 1662 | ||
| 1624 | -#schedule-tzrc-modal input[type=checkbox]{ | 1663 | +#schedule-tzrc-modal input[type=checkbox] { |
| 1625 | margin-right: 9px; | 1664 | margin-right: 9px; |
| 1626 | } | 1665 | } |
| 1627 | 1666 | ||
| 1628 | -#schedule-tzrc-modal span.ct_zt_yzx{ | 1667 | +#schedule-tzrc-modal span.ct_zt_yzx { |
| 1629 | color: #2196F3; | 1668 | color: #2196F3; |
| 1630 | font-size: 12px; | 1669 | font-size: 12px; |
| 1631 | } | 1670 | } |
| 1632 | 1671 | ||
| 1633 | -#schedule-tzrc-modal span.ct_zt_lb{ | 1672 | +#schedule-tzrc-modal span.ct_zt_lb { |
| 1634 | color: red; | 1673 | color: red; |
| 1635 | font-size: 12px; | 1674 | font-size: 12px; |
| 1636 | } | 1675 | } |
| 1637 | 1676 | ||
| 1638 | -#schedule-tzrc-modal span.ct_zt_zzzx{ | 1677 | +#schedule-tzrc-modal span.ct_zt_zzzx { |
| 1639 | font-size: 12px; | 1678 | font-size: 12px; |
| 1640 | color: #38ad3c; | 1679 | color: #38ad3c; |
| 1641 | } | 1680 | } |
| 1642 | 1681 | ||
| 1643 | -#schedule-tzrc-modal .tzrc_form{ | 1682 | +#schedule-tzrc-modal .tzrc_form { |
| 1644 | padding: 20px; | 1683 | padding: 20px; |
| 1645 | border: 1px solid #f0eded; | 1684 | border: 1px solid #f0eded; |
| 1646 | - box-shadow: 0px -3px 15px rgba(0,0,0,0.08); | 1685 | + box-shadow: 0px -3px 15px rgba(0, 0, 0, 0.08); |
| 1647 | background: #f9f9f9; | 1686 | background: #f9f9f9; |
| 1648 | } | 1687 | } |
| 1649 | 1688 | ||
| 1650 | -.uk-panel.ct_search_panel{ | 1689 | +.uk-panel.ct_search_panel { |
| 1651 | padding: 15px; | 1690 | padding: 15px; |
| 1652 | border: 1px solid #f0eded; | 1691 | border: 1px solid #f0eded; |
| 1653 | - box-shadow: 0px 3px 15px rgba(0,0,0,0.08); | 1692 | + box-shadow: 0px 3px 15px rgba(0, 0, 0, 0.08); |
| 1654 | background: #f9f9f9; | 1693 | background: #f9f9f9; |
| 1655 | } | 1694 | } |
| 1656 | 1695 | ||
| 1657 | .sch-tzrc-table.ct_table dl.active, | 1696 | .sch-tzrc-table.ct_table dl.active, |
| 1658 | -.sch-tzrc-table.ct_table>.ct_table_body dl.active:hover{ | 1697 | +.sch-tzrc-table.ct_table > .ct_table_body dl.active:hover { |
| 1659 | background: #5bd460; | 1698 | background: #5bd460; |
| 1660 | color: white; | 1699 | color: white; |
| 1661 | } | 1700 | } |
| 1662 | 1701 | ||
| 1663 | -#schedule-tzrc-modal dl.active span.ct_zt_yzx{ | 1702 | +#schedule-tzrc-modal dl.active span.ct_zt_yzx { |
| 1664 | color: #545252; | 1703 | color: #545252; |
| 1665 | } | 1704 | } |
| 1666 | 1705 | ||
| 1667 | -#schedule-tzrc-modal dl.active span.ct_zt_lb{ | 1706 | +#schedule-tzrc-modal dl.active span.ct_zt_lb { |
| 1668 | color: #d64949; | 1707 | color: #d64949; |
| 1669 | } | 1708 | } |
| 1670 | 1709 | ||
| 1671 | -#schedule-tzrc-modal dl.active span.ct_zt_zzzx{ | 1710 | +#schedule-tzrc-modal dl.active span.ct_zt_zzzx { |
| 1672 | color: white; | 1711 | color: white; |
| 1673 | } | 1712 | } |
| 1674 | 1713 | ||
| 1675 | -#schedule-tzrc-modal dl.active input[type=checkbox]{ | 1714 | +#schedule-tzrc-modal dl.active input[type=checkbox] { |
| 1676 | border: 0; | 1715 | border: 0; |
| 1677 | } | 1716 | } |
| 1678 | 1717 | ||
| 1679 | -#schedule-tzrc-modal dl.active input[type=checkbox]:before{ | 1718 | +#schedule-tzrc-modal dl.active input[type=checkbox]:before { |
| 1680 | color: #ffffff; | 1719 | color: #ffffff; |
| 1681 | } | 1720 | } |
| 1682 | 1721 | ||
| 1683 | -.sch-search-autocom input{ | 1722 | +.sch-search-autocom input { |
| 1684 | padding: 0 !important; | 1723 | padding: 0 !important; |
| 1685 | height: 100% !important; | 1724 | height: 100% !important; |
| 1686 | } | 1725 | } |
| 1687 | 1726 | ||
| 1688 | -label.blue_checkbox{ | 1727 | +label.blue_checkbox { |
| 1689 | margin-left: 12px; | 1728 | margin-left: 12px; |
| 1690 | } | 1729 | } |
| 1691 | 1730 | ||
| 1692 | -label.blue_checkbox>input{ | 1731 | +label.blue_checkbox > input { |
| 1693 | width: 17px !important; | 1732 | width: 17px !important; |
| 1694 | height: 17px !important; | 1733 | height: 17px !important; |
| 1695 | } | 1734 | } |
| 1696 | 1735 | ||
| 1697 | -label.blue_checkbox>input:checked:before, | ||
| 1698 | -label.blue_checkbox>input:indeterminate:before{ | 1736 | +label.blue_checkbox > input:checked:before, |
| 1737 | +label.blue_checkbox > input:indeterminate:before { | ||
| 1699 | line-height: 15px !important; | 1738 | line-height: 15px !important; |
| 1700 | } | 1739 | } |
| 1701 | 1740 | ||
| 1702 | -dd.disabled{ | 1741 | +dd.disabled { |
| 1703 | color: #b5b3b3; | 1742 | color: #b5b3b3; |
| 1704 | } | 1743 | } |
| 1705 | 1744 | ||
| 1706 | -dl.active>dd.disabled{ | 1745 | +dl.active > dd.disabled { |
| 1707 | color: #ececec; | 1746 | color: #ececec; |
| 1708 | } | 1747 | } |
| 1709 | 1748 | ||
| 1710 | -#change_user_options-modal .user_info{ | 1749 | +#change_user_options-modal .user_info { |
| 1711 | width: 360px; | 1750 | width: 360px; |
| 1712 | margin: auto; | 1751 | margin: auto; |
| 1713 | } | 1752 | } |
| 1714 | 1753 | ||
| 1715 | -.display_hide{ | 1754 | +.display_hide { |
| 1716 | display: none; | 1755 | display: none; |
| 1717 | } | 1756 | } |
| 1718 | 1757 | ||
| 1719 | -.ct_eye_icon{ | 1758 | +.ct_eye_icon { |
| 1720 | font-size: 16px; | 1759 | font-size: 16px; |
| 1721 | cursor: pointer; | 1760 | cursor: pointer; |
| 1722 | } | 1761 | } |
| 1723 | 1762 | ||
| 1724 | -.ct_eye_icon.active{ | 1763 | +.ct_eye_icon.active { |
| 1725 | color: #444; | 1764 | color: #444; |
| 1726 | } | 1765 | } |
| 1727 | 1766 | ||
| @@ -1730,7 +1769,7 @@ dl.active>dd.disabled{ | @@ -1730,7 +1769,7 @@ dl.active>dd.disabled{ | ||
| 1730 | height: 16px; | 1769 | height: 16px; |
| 1731 | } | 1770 | } |
| 1732 | 1771 | ||
| 1733 | -.range_2_normal_tt{ | 1772 | +.range_2_normal_tt { |
| 1734 | margin-bottom: 15px; | 1773 | margin-bottom: 15px; |
| 1735 | border-top: 1px dashed #c7c7c7; | 1774 | border-top: 1px dashed #c7c7c7; |
| 1736 | color: #a6a6a6; | 1775 | color: #a6a6a6; |
| @@ -1738,7 +1777,7 @@ dl.active>dd.disabled{ | @@ -1738,7 +1777,7 @@ dl.active>dd.disabled{ | ||
| 1738 | padding-bottom: 5px; | 1777 | padding-bottom: 5px; |
| 1739 | } | 1778 | } |
| 1740 | 1779 | ||
| 1741 | -.cancel_link{ | 1780 | +.cancel_link { |
| 1742 | font-size: 12px; | 1781 | font-size: 12px; |
| 1743 | margin-left: 15px; | 1782 | margin-left: 15px; |
| 1744 | vertical-align: bottom; | 1783 | vertical-align: bottom; |
| @@ -1748,7 +1787,7 @@ dl.active>dd.disabled{ | @@ -1748,7 +1787,7 @@ dl.active>dd.disabled{ | ||
| 1748 | right: 0; | 1787 | right: 0; |
| 1749 | } | 1788 | } |
| 1750 | 1789 | ||
| 1751 | -.edit_link{ | 1790 | +.edit_link { |
| 1752 | font-size: 12px; | 1791 | font-size: 12px; |
| 1753 | margin-left: 15px; | 1792 | margin-left: 15px; |
| 1754 | vertical-align: bottom; | 1793 | vertical-align: bottom; |
| @@ -1769,7 +1808,7 @@ dl.active>dd.disabled{ | @@ -1769,7 +1808,7 @@ dl.active>dd.disabled{ | ||
| 1769 | min-height: 40px; | 1808 | min-height: 40px; |
| 1770 | } | 1809 | } |
| 1771 | 1810 | ||
| 1772 | -.c_b_abnorm_notice:before{ | 1811 | +.c_b_abnorm_notice:before { |
| 1773 | content: "-超速报警-"; | 1812 | content: "-超速报警-"; |
| 1774 | color: #000000; | 1813 | color: #000000; |
| 1775 | font-size: 12px; | 1814 | font-size: 12px; |
| @@ -1790,14 +1829,201 @@ dl.active>dd.disabled{ | @@ -1790,14 +1829,201 @@ dl.active>dd.disabled{ | ||
| 1790 | cursor: pointer; | 1829 | cursor: pointer; |
| 1791 | } | 1830 | } |
| 1792 | 1831 | ||
| 1793 | -.c_b_abnorm_notice>.c_b_item:first-child{ | 1832 | +.c_b_abnorm_notice > .c_b_item:first-child { |
| 1794 | margin-top: 20px; | 1833 | margin-top: 20px; |
| 1795 | } | 1834 | } |
| 1796 | 1835 | ||
| 1797 | -.c_b_item.over{ | 1836 | +.c_b_item.over { |
| 1798 | color: grey; | 1837 | color: grey; |
| 1799 | } | 1838 | } |
| 1800 | 1839 | ||
| 1801 | -.c_b_item>span.c_b_over{ | 1840 | +.c_b_item > span.c_b_over { |
| 1802 | float: right; | 1841 | float: right; |
| 1842 | +} | ||
| 1843 | + | ||
| 1844 | +.mileage_elec_panel { | ||
| 1845 | + position: absolute; | ||
| 1846 | + width: 100%; | ||
| 1847 | + /*height: 90px;*/ | ||
| 1848 | + z-index: 1; | ||
| 1849 | + background: white; | ||
| 1850 | + bottom: 0px; | ||
| 1851 | + box-shadow: 1px 0px 15px rgba(90, 90, 90, 0.48); | ||
| 1852 | + padding: 9px 15px; | ||
| 1853 | + border-radius: 0 5px; | ||
| 1854 | + color: #000; | ||
| 1855 | + | ||
| 1856 | + display: none; | ||
| 1857 | +} | ||
| 1858 | + | ||
| 1859 | +.mileage_elec_panel ._title { | ||
| 1860 | + margin: 5px 3px; | ||
| 1861 | + font-size: 15px; | ||
| 1862 | +} | ||
| 1863 | + | ||
| 1864 | +.mileage_elec_panel .LD_item { | ||
| 1865 | + margin: 5px 0; | ||
| 1866 | + font-family: 微软雅黑; | ||
| 1867 | +} | ||
| 1868 | + | ||
| 1869 | +.mileage_elec_panel .LD_item > span { | ||
| 1870 | + padding: 3px; | ||
| 1871 | + display: inline-block; | ||
| 1872 | + width: 85px; | ||
| 1873 | +} | ||
| 1874 | + | ||
| 1875 | +.mileage_elec_panel .lp_name { | ||
| 1876 | + padding: 0 5px; | ||
| 1877 | + background: #f2f2f2; | ||
| 1878 | + border-radius: 15px | ||
| 1879 | +} | ||
| 1880 | + | ||
| 1881 | +.mileage_elec_panel .LD_item > span > a { | ||
| 1882 | + color: #000; | ||
| 1883 | +} | ||
| 1884 | + | ||
| 1885 | +.mileage_elec_panel .LD_item > span:nth-of-type(1) > a { | ||
| 1886 | + color: blue; | ||
| 1887 | +} | ||
| 1888 | + | ||
| 1889 | +/*.mileage_elec_panel .LD_item>span:nth-of-type(2)>a{ | ||
| 1890 | + color: #fa3a2c; | ||
| 1891 | +} | ||
| 1892 | + | ||
| 1893 | +.mileage_elec_panel .LD_item>span:nth-of-type(3)>a{ | ||
| 1894 | + color: #515151; | ||
| 1895 | +}*/ | ||
| 1896 | + | ||
| 1897 | +.mileage_elec_panel hr { | ||
| 1898 | + height: 1px; | ||
| 1899 | + border: none; | ||
| 1900 | + border-top: 1px dashed #b5b5b5; | ||
| 1901 | +} | ||
| 1902 | + | ||
| 1903 | +#edit-sub-task-main-modal .sub_task_form_v2.uk-form-horizontal .uk-form-label { | ||
| 1904 | + width: 70px; | ||
| 1905 | +} | ||
| 1906 | + | ||
| 1907 | +#edit-sub-task-main-modal .sub_task_form_v2.uk-form-horizontal .uk-form-controls { | ||
| 1908 | + margin-left: 75px; | ||
| 1909 | +} | ||
| 1910 | + | ||
| 1911 | +#edit-sub-task-main-modal .sub_task_form_v2 .uk-grid + .uk-grid, | ||
| 1912 | +#edit-sub-task-main-modal .sub_task_form_v2 .uk-grid-margin, | ||
| 1913 | +#edit-sub-task-main-modal .sub_task_form_v2 .uk-grid > * > .uk-panel + .uk-panel { | ||
| 1914 | + margin-top: 22px; | ||
| 1915 | +} | ||
| 1916 | + | ||
| 1917 | +.c_task_mileage_abnormal, | ||
| 1918 | +.c_task_mileage_abnormal .ct_table > .ct_table_head dl, | ||
| 1919 | +.c_task_mileage_abnormal .ct_table dl { | ||
| 1920 | + background: #ffe7e7 !important; | ||
| 1921 | +} | ||
| 1922 | + | ||
| 1923 | +.tip_task_count_dl { | ||
| 1924 | + width: calc(100% + 22px) !important; | ||
| 1925 | + margin-left: -11px !important; | ||
| 1926 | + border-top: 1px solid #e6e6e6 !important; | ||
| 1927 | +} | ||
| 1928 | + | ||
| 1929 | +.tip_task_count_dl > dd:last-child { | ||
| 1930 | + width: calc(100% - 50px) !important; | ||
| 1931 | + border-right: 0 !important; | ||
| 1932 | + height: 35px !important; | ||
| 1933 | + background: #f3f3f3; | ||
| 1934 | + margin-bottom: -3px; | ||
| 1935 | +} | ||
| 1936 | + | ||
| 1937 | +.tip_task_count_dl > dd:nth-of-type(1) { | ||
| 1938 | + text-align: center; | ||
| 1939 | + border-right: 0 !important; | ||
| 1940 | + width: 48px !important; | ||
| 1941 | +} | ||
| 1942 | + | ||
| 1943 | +.tip_task_count_dl > dd:nth-of-type(1) > i { | ||
| 1944 | + padding: 6px; | ||
| 1945 | + cursor: pointer; | ||
| 1946 | +} | ||
| 1947 | + | ||
| 1948 | +.tip_task_count_dl > dd:nth-of-type(1) > i:hover { | ||
| 1949 | + background: #ebebeb; | ||
| 1950 | +} | ||
| 1951 | + | ||
| 1952 | +.tip_task_count_dl.c_task_error > dd:last-child { | ||
| 1953 | + background: #ff8a81; | ||
| 1954 | +} | ||
| 1955 | + | ||
| 1956 | +.tip_task_count_dl > dd > span { | ||
| 1957 | + font-size: 13px; | ||
| 1958 | + color: #000; | ||
| 1959 | + height: 55px; | ||
| 1960 | + display: inline-block; | ||
| 1961 | + padding: 7px 0; | ||
| 1962 | + border-radius: 0; | ||
| 1963 | + text-indent: 12px; | ||
| 1964 | +} | ||
| 1965 | + | ||
| 1966 | +.tip_task_list > dl:nth-last-child(2) { | ||
| 1967 | + border-bottom: 0 !important; | ||
| 1968 | +} | ||
| 1969 | + | ||
| 1970 | +.c_task_mileage_error { | ||
| 1971 | + border: 1px solid rgba(218, 13, 13, 0.2); | ||
| 1972 | + border-bottom-color: rgba(213, 37, 37, 0.3); | ||
| 1973 | + background-image: -webkit-linear-gradient(top, #ff6155, #F44336); | ||
| 1974 | +} | ||
| 1975 | + | ||
| 1976 | +.uk-badge.c_task.c_task_mileage_error:hover:hover { | ||
| 1977 | + background-image: none; | ||
| 1978 | + background: #ff6155; | ||
| 1979 | + border: 1px solid rgba(213, 37, 37, 0.3); | ||
| 1980 | +} | ||
| 1981 | + | ||
| 1982 | +.grey_link { | ||
| 1983 | + color: #adabab; | ||
| 1984 | +} | ||
| 1985 | + | ||
| 1986 | +#sch_car_info_all-modal tr.ct_active { | ||
| 1987 | + -moz-animation: twinkle_bg .9s ease-in-out; | ||
| 1988 | + -webkit-animation: twinkle_bg .9s ease-in-out; | ||
| 1989 | +} | ||
| 1990 | + | ||
| 1991 | +#sch_car_info_all-modal .uk-table-hover tr:hover{ | ||
| 1992 | + background: #dddddd; | ||
| 1993 | +} | ||
| 1994 | + | ||
| 1995 | +@-moz-keyframes twinkle_bg { | ||
| 1996 | + 0% { | ||
| 1997 | + background: rgba(254, 235, 69, 0.38); | ||
| 1998 | + } | ||
| 1999 | + 25% { | ||
| 2000 | + background: rgba(254, 235, 69, 0.7); | ||
| 2001 | + } | ||
| 2002 | + 50% { | ||
| 2003 | + background: rgba(254, 235, 69, 0.3); | ||
| 2004 | + } | ||
| 2005 | + 75% { | ||
| 2006 | + background: rgba(254, 235, 69, 0.7); | ||
| 2007 | + } | ||
| 2008 | + 100% { | ||
| 2009 | + background: rgba(254, 235, 69, 0.38); | ||
| 2010 | + } | ||
| 2011 | +} | ||
| 2012 | + | ||
| 2013 | +@-webkit-keyframes twinkle_bg { | ||
| 2014 | + 0% { | ||
| 2015 | + background: rgba(254, 235, 69, 0.38); | ||
| 2016 | + } | ||
| 2017 | + 25% { | ||
| 2018 | + background: rgba(254, 235, 69, 0.7); | ||
| 2019 | + } | ||
| 2020 | + 50% { | ||
| 2021 | + background: rgba(254, 235, 69, 0.3); | ||
| 2022 | + } | ||
| 2023 | + 75% { | ||
| 2024 | + background: rgba(254, 235, 69, 0.7); | ||
| 2025 | + } | ||
| 2026 | + 100% { | ||
| 2027 | + background: rgba(254, 235, 69, 0.38); | ||
| 2028 | + } | ||
| 1803 | } | 2029 | } |
| 1804 | \ No newline at end of file | 2030 | \ No newline at end of file |
src/main/resources/static/real_control_v2/fragments/line_schedule/badge_tooltip.html
| @@ -3,6 +3,7 @@ | @@ -3,6 +3,7 @@ | ||
| 3 | <div class="tl-tip-panel"> | 3 | <div class="tl-tip-panel"> |
| 4 | <div class="tip_task_list"> | 4 | <div class="tip_task_list"> |
| 5 | <dl> | 5 | <dl> |
| 6 | + <dt>操作</dt> | ||
| 6 | <dt>类型</dt> | 7 | <dt>类型</dt> |
| 7 | <dt>里程</dt> | 8 | <dt>里程</dt> |
| 8 | <dt>起点</dt> | 9 | <dt>起点</dt> |
| @@ -11,6 +12,7 @@ | @@ -11,6 +12,7 @@ | ||
| 11 | </dl> | 12 | </dl> |
| 12 | {{each tasks as t i}} | 13 | {{each tasks as t i}} |
| 13 | <dl class="{{t.mileageType}} {{if t.destroy}}destroy{{/if}} {{if t.type1=='临加'}}temp_add{{/if}}"> | 14 | <dl class="{{t.mileageType}} {{if t.destroy}}destroy{{/if}} {{if t.type1=='临加'}}temp_add{{/if}}"> |
| 15 | + <dd><a data-line="{{sch.xlBm}}" data-id="{{t.id}}" data-schid="{{sch.id}}" class="tip_task_edit_link">编辑</a></dd> | ||
| 14 | <dd> | 16 | <dd> |
| 15 | {{if t.mileageType=="service"}} | 17 | {{if t.mileageType=="service"}} |
| 16 | 营运 | 18 | 营运 |
| @@ -35,6 +37,14 @@ | @@ -35,6 +37,14 @@ | ||
| 35 | <dd title="{{t.remarks}}">{{t.remarks}}</dd> | 37 | <dd title="{{t.remarks}}">{{t.remarks}}</dd> |
| 36 | </dl> | 38 | </dl> |
| 37 | {{/each}} | 39 | {{/each}} |
| 40 | + <dl class="tip_task_count_dl {{if sch.c_t_mileage_status==-1}}c_task_error{{/if}}" > | ||
| 41 | + <dd><i class="uk-icon-plus badge_tip_add_icon" data-line="{{sch.xlBm}}" data-schid="{{sch.id}}"></i></dd> | ||
| 42 | + <dd> | ||
| 43 | + <span>计划:{{sch.jhlcOrig}}</span> | ||
| 44 | + <span>营运+烂班:{{serviceCount}}</span> | ||
| 45 | + <span>空驶:{{emptyCount}}</span> | ||
| 46 | + </dd> | ||
| 47 | + </dl> | ||
| 38 | </div> | 48 | </div> |
| 39 | </div> | 49 | </div> |
| 40 | </script> | 50 | </script> |
src/main/resources/static/real_control_v2/fragments/line_schedule/car_info_all.html
0 → 100644
| 1 | +<div class="uk-modal ct_move_modal" id="sch_car_info_all-modal"> | ||
| 2 | + <div class="uk-modal-dialog" style="width: 1080px;"> | ||
| 3 | + <a href="" class="uk-modal-close uk-close"></a> | ||
| 4 | + | ||
| 5 | + <div class="uk-modal-header"> | ||
| 6 | + <h2>1006路 -全部车辆</h2></div> | ||
| 7 | + | ||
| 8 | + <table class="uk-table uk-table-hover" style="table-layout: fixed;"> | ||
| 9 | + <thead> | ||
| 10 | + <tr> | ||
| 11 | + <th style="width: 10%;">车辆</th> | ||
| 12 | + <th style="width: 10%;">设备号</th> | ||
| 13 | + <th style="width: 16%;">位置</th> | ||
| 14 | + <th style="width: 14%;">车载线路编码</th> | ||
| 15 | + <th style="width: 13%;">当前执行任务</th> | ||
| 16 | + <th style="width: 7%;">状态</th> | ||
| 17 | + <th style="width: 19%">最后gps时间</th> | ||
| 18 | + <th>请求出场</th> | ||
| 19 | + </tr> | ||
| 20 | + </thead> | ||
| 21 | + <tbody> | ||
| 22 | + </tbody> | ||
| 23 | + </table> | ||
| 24 | + </div> | ||
| 25 | + | ||
| 26 | + <script id="sch_car_info_all-temp" type="text/html"> | ||
| 27 | + {{each list as obj i}} | ||
| 28 | + <tr data-nbbm="{{obj.nbbm}}"> | ||
| 29 | + <td>{{obj.nbbm}}</td> | ||
| 30 | + <td>{{obj.device}}</td> | ||
| 31 | + <td>{{obj.loc}}</td> | ||
| 32 | + <td>{{obj.lineCodeRealStr}}</td> | ||
| 33 | + <td><a class="exec_sch_link" data-id="{{obj.schId}}">{{obj.exec}}</a></td> | ||
| 34 | + <td><a class="{{if obj.status!='在线'}}grey_link{{/if}}">{{obj.status}}</a></td> | ||
| 35 | + <td class="{{if obj.status!='在线'}}grey_link{{/if}}"> | ||
| 36 | + {{obj.timeStr}} | ||
| 37 | + | ||
| 38 | + {{if obj.formNow!=null}} | ||
| 39 | + <small>({{obj.formNow}})</small> | ||
| 40 | + {{/if}} | ||
| 41 | + </td> | ||
| 42 | + <td>{{obj.qqccTimeStr}}</td> | ||
| 43 | + </tr> | ||
| 44 | + {{/each}} | ||
| 45 | + </script> | ||
| 46 | + <script> | ||
| 47 | + (function () { | ||
| 48 | + var modal = '#sch_car_info_all-modal', lineCode, nbbm; | ||
| 49 | + | ||
| 50 | + $(modal).on('init', function(e, data) { | ||
| 51 | + e.stopPropagation(); | ||
| 52 | + lineCode = data.lineCode; | ||
| 53 | + nbbm = data.nbbm; | ||
| 54 | + | ||
| 55 | + jsDoQuery(function () { | ||
| 56 | + var $cell = $('tr[data-nbbm='+nbbm+']', modal); | ||
| 57 | + //定位到行 | ||
| 58 | + $(modal).animate({ | ||
| 59 | + scrollTop: $cell.offset().top - $(modal).offset().top + $(modal).scrollTop() | ||
| 60 | + }, 500, function () { | ||
| 61 | + $cell.addClass('ct_active'); | ||
| 62 | + }); | ||
| 63 | + timer = setTimeout(fixedRefreshData, t + 500); | ||
| 64 | + }); | ||
| 65 | + }); | ||
| 66 | + | ||
| 67 | + var timer, t = 12*1000; | ||
| 68 | + var fixedRefreshData = function () { | ||
| 69 | + (function () { | ||
| 70 | + var f = arguments.callee; | ||
| 71 | + jsDoQuery(function () { | ||
| 72 | + timer = setTimeout(f, t); | ||
| 73 | + }); | ||
| 74 | + })(); | ||
| 75 | + }; | ||
| 76 | + | ||
| 77 | + $(modal).on('hide.uk.modal', function () { | ||
| 78 | + clearTimeout(timer); | ||
| 79 | + timer = null; | ||
| 80 | + }); | ||
| 81 | + | ||
| 82 | + var jsDoQuery = function (cb) { | ||
| 83 | + gb_common.$get('/gps/allCarsByLine', {lineCode: lineCode}, function (rs) { | ||
| 84 | + $.each(rs.list, function () { | ||
| 85 | + if(this['lineCodeReal']) | ||
| 86 | + this['lineCodeRealStr'] = this['lineCodeReal'] + '/' + gb_data_basic.lineCode2NameAll()[this['lineCodeReal']]; | ||
| 87 | + else | ||
| 88 | + this['lineCodeRealStr'] = ''; | ||
| 89 | + if(this['gpsTs']){ | ||
| 90 | + this['timeStr'] = moment(this['gpsTs']).format('MM/DD HH:mm:ss'); | ||
| 91 | + this['formNow'] = moment(this['gpsTs']).fromNow(); | ||
| 92 | + } | ||
| 93 | + if(this['qqcc']) | ||
| 94 | + this['qqccTimeStr'] = moment(this['qqcc']).format('HH:mm'); | ||
| 95 | + }); | ||
| 96 | + | ||
| 97 | + rs.list.sort(function (a, b) { | ||
| 98 | + if(!a.nbbm) | ||
| 99 | + return -1; | ||
| 100 | + if(!b.nbbm) | ||
| 101 | + return 1; | ||
| 102 | + return a.nbbm.localeCompare(b.nbbm); | ||
| 103 | + }); | ||
| 104 | + var htmlStr = template('sch_car_info_all-temp', {list: rs.list}); | ||
| 105 | + | ||
| 106 | + $('table>tbody', modal).html(htmlStr); | ||
| 107 | + | ||
| 108 | + cb && cb(); | ||
| 109 | + }); | ||
| 110 | + }; | ||
| 111 | + | ||
| 112 | + $(modal).on('click', 'a.exec_sch_link', function () { | ||
| 113 | + var id = $(this).data('id'); | ||
| 114 | + if(!id) | ||
| 115 | + return; | ||
| 116 | + gb_schedule_table.scroToDl({id: id, xlBm:lineCode}); | ||
| 117 | + }); | ||
| 118 | + })(); | ||
| 119 | + </script> | ||
| 120 | +</div> | ||
| 0 | \ No newline at end of file | 121 | \ No newline at end of file |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/fcxxwt.html
| @@ -205,29 +205,6 @@ | @@ -205,29 +205,6 @@ | ||
| 205 | notify_err("当前操作需要选择调整原因!"); | 205 | notify_err("当前操作需要选择调整原因!"); |
| 206 | return; | 206 | return; |
| 207 | } | 207 | } |
| 208 | - | ||
| 209 | - //里程有修改 | ||
| 210 | - //if(data.jhlc != sch.jhlc && data.jhlc != 0){ | ||
| 211 | - | ||
| 212 | - /*var confHtml = '<h4 style="color: #c04c4c;margin-bottom: 9px;">确认要将班次里程由'+sch.jhlc+' 修改为'+data.jhlc+' </h4><small>备注:</small>'; | ||
| 213 | - UIkit.modal.prompt(confHtml, data.remarks, function(remarks){ | ||
| 214 | - if(remarks){ | ||
| 215 | - //在这里写操作日志 | ||
| 216 | - | ||
| 217 | - //提交 | ||
| 218 | - postData(data); | ||
| 219 | - } | ||
| 220 | - else{ | ||
| 221 | - notify_err('失败,你必须填写备注!'); | ||
| 222 | - } | ||
| 223 | - }, { | ||
| 224 | - labels: { | ||
| 225 | - Ok: '确定修改公里并保存', | ||
| 226 | - Cancel: '取消' | ||
| 227 | - } | ||
| 228 | - });*/ | ||
| 229 | - //} | ||
| 230 | - //else | ||
| 231 | postData(data); | 208 | postData(data); |
| 232 | }); | 209 | }); |
| 233 | 210 | ||
| @@ -238,6 +215,8 @@ | @@ -238,6 +215,8 @@ | ||
| 238 | notify_succ('操作成功!'); | 215 | notify_succ('操作成功!'); |
| 239 | //计算应发未发 | 216 | //计算应发未发 |
| 240 | gb_schedule_table.calc_yfwf_num(sch.xlBm); | 217 | gb_schedule_table.calc_yfwf_num(sch.xlBm); |
| 218 | + //更新路牌公里统计面板 | ||
| 219 | + gb_schedule_table.showLpMileageTipBySch(sch); | ||
| 241 | }); | 220 | }); |
| 242 | }; | 221 | }; |
| 243 | 222 |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/lj_zrw.html
| @@ -110,7 +110,7 @@ | @@ -110,7 +110,7 @@ | ||
| 110 | {{/if}} | 110 | {{/if}} |
| 111 | 111 | ||
| 112 | {{if sch.cTasks.length > 0}} | 112 | {{if sch.cTasks.length > 0}} |
| 113 | - <span class="uk-badge uk-badge-notification">{{sch.cTasks.length}}</span> | 113 | + <span class="uk-badge uk-badge-notification {{if sch.c_t_mileage_status==-1}}c_task_mileage_error{{/if}}">{{sch.cTasks.length}}</span> |
| 114 | {{/if}} | 114 | {{/if}} |
| 115 | </dd> | 115 | </dd> |
| 116 | <dd>{{sch.zdsj}}</dd> | 116 | <dd>{{sch.zdsj}}</dd> |
| @@ -153,13 +153,13 @@ | @@ -153,13 +153,13 @@ | ||
| 153 | </script> | 153 | </script> |
| 154 | 154 | ||
| 155 | <script id="sub_task-fail-status-temp" type="text/html"> | 155 | <script id="sub_task-fail-status-temp" type="text/html"> |
| 156 | - <div class="child-task-status fail"><i class="uk-icon-times-circle"></i> 营运里程 与主任务不符,请检查子任务 | 156 | + <div class="child-task-status fail"><i class="uk-icon-times-circle"></i> 子任务营运公里与计划不平 |
| 157 | <span class="calc-detail">{{calcs}}</span></div> | 157 | <span class="calc-detail">{{calcs}}</span></div> |
| 158 | </script> | 158 | </script> |
| 159 | 159 | ||
| 160 | <script> | 160 | <script> |
| 161 | (function () { | 161 | (function () { |
| 162 | - var modal_opts = {center: false, bgclose: false, modal: false} | 162 | + var modal_opts = {center: false, bgclose: false, modal: false}; |
| 163 | var modal = '#schedule-lj_zrw-modal', | 163 | var modal = '#schedule-lj_zrw-modal', |
| 164 | f, | 164 | f, |
| 165 | m_t_body = '.main-schedule-table .ct_table_body', | 165 | m_t_body = '.main-schedule-table .ct_table_body', |
| @@ -274,26 +274,29 @@ | @@ -274,26 +274,29 @@ | ||
| 274 | 274 | ||
| 275 | //检查子任务营运里程 | 275 | //检查子任务营运里程 |
| 276 | $('#childTaskTitle .child-task-status', modal).remove(); | 276 | $('#childTaskTitle .child-task-status', modal).remove(); |
| 277 | - var i = 0; | 277 | + //var i = 0; |
| 278 | if (sch.cTasks.length == 0) | 278 | if (sch.cTasks.length == 0) |
| 279 | return; | 279 | return; |
| 280 | - var sum = 0, calcs = ''; | 280 | + var sum = 0, calcs = ' '; |
| 281 | $.each(sch.cTasks, function () { | 281 | $.each(sch.cTasks, function () { |
| 282 | if (this.mileageType == 'service') { | 282 | if (this.mileageType == 'service') { |
| 283 | sum = gb_common.accAdd(sum, this.mileage); | 283 | sum = gb_common.accAdd(sum, this.mileage); |
| 284 | calcs += (' + ' + this.mileage); | 284 | calcs += (' + ' + this.mileage); |
| 285 | - i++; | 285 | + //i++; |
| 286 | } | 286 | } |
| 287 | }); | 287 | }); |
| 288 | //公里与主任务不符合 | 288 | //公里与主任务不符合 |
| 289 | if (sum != sch.jhlcOrig) { | 289 | if (sum != sch.jhlcOrig) { |
| 290 | - if (i > 1) | ||
| 291 | - calcs += ('=' + sum); | 290 | + $('.uk-panel-box-secondary', modal).addClass('c_task_mileage_abnormal'); |
| 291 | + /*if (i > 1) | ||
| 292 | + calcs += ('=' + sum);*/ | ||
| 292 | calcs += (' ≠ ' + sch.jhlcOrig); | 293 | calcs += (' ≠ ' + sch.jhlcOrig); |
| 293 | calcs = calcs.substr(3); | 294 | calcs = calcs.substr(3); |
| 294 | var htmlStr = template('sub_task-fail-status-temp', {calcs: calcs}); | 295 | var htmlStr = template('sub_task-fail-status-temp', {calcs: calcs}); |
| 295 | $('#childTaskTitle', modal).append(htmlStr); | 296 | $('#childTaskTitle', modal).append(htmlStr); |
| 296 | } | 297 | } |
| 298 | + else | ||
| 299 | + $('.uk-panel-box-secondary', modal).removeClass('c_task_mileage_abnormal'); | ||
| 297 | }; | 300 | }; |
| 298 | 301 | ||
| 299 | //新增临加 | 302 | //新增临加 |
| @@ -323,10 +326,12 @@ | @@ -323,10 +326,12 @@ | ||
| 323 | gb_schedule_table.updateSchedule(rs.ts); | 326 | gb_schedule_table.updateSchedule(rs.ts); |
| 324 | gb_schedule_table.deheteSchedule(rs.delete); | 327 | gb_schedule_table.deheteSchedule(rs.delete); |
| 325 | $('.main-schedule-table', modal).trigger('refresh'); | 328 | $('.main-schedule-table', modal).trigger('refresh'); |
| 329 | + //更新路牌公里统计面板 | ||
| 330 | + gb_schedule_table.showLpMileageTipBySch(sch); | ||
| 326 | }); | 331 | }); |
| 327 | }, '确定删除'); | 332 | }, '确定删除'); |
| 328 | }; | 333 | }; |
| 329 | - //添加自定义子任务 | 334 | + /* //添加自定义子任务 |
| 330 | var add_sub_task_other = function () { | 335 | var add_sub_task_other = function () { |
| 331 | var sch = getActiveSch(); | 336 | var sch = getActiveSch(); |
| 332 | if (!sch) | 337 | if (!sch) |
| @@ -376,8 +381,32 @@ | @@ -376,8 +381,32 @@ | ||
| 376 | open_modal(folder + '/sub_task/add_sub_task_range_turn.html', { | 381 | open_modal(folder + '/sub_task/add_sub_task_range_turn.html', { |
| 377 | sch: sch | 382 | sch: sch |
| 378 | }, modal_opts); | 383 | }, modal_opts); |
| 379 | - }; | 384 | + };*/ |
| 385 | + | ||
| 386 | + //修改子任务 | ||
| 387 | + var edit_sub_task = function () { | ||
| 388 | + var sch = getActiveSch(); | ||
| 389 | + if (!sch) | ||
| 390 | + return notify_err('无法获取到主任务信息!'); | ||
| 391 | + var activeDl = $(s_t_body, modal).find('dl.context-menu-active'); | ||
| 392 | + if (activeDl.length == 0) | ||
| 393 | + return; | ||
| 394 | + var id = activeDl.data('id'); | ||
| 380 | 395 | ||
| 396 | + var cTask; | ||
| 397 | + for(var i=0,obj;obj=sch.cTasks[i++];){ | ||
| 398 | + if(obj.id==id){ | ||
| 399 | + cTask = obj; | ||
| 400 | + break; | ||
| 401 | + } | ||
| 402 | + } | ||
| 403 | + //打开子任务修改modal | ||
| 404 | + open_modal(folder + '/sub_task_v2/edit.html', { | ||
| 405 | + sch: sch, | ||
| 406 | + cTask: cTask | ||
| 407 | + }, modal_opts); | ||
| 408 | + }; | ||
| 409 | + | ||
| 381 | //删除子任务 | 410 | //删除子任务 |
| 382 | var remove_sub_task = function () { | 411 | var remove_sub_task = function () { |
| 383 | var activeDl = $(s_t_body, modal).find('dl.context-menu-active'); | 412 | var activeDl = $(s_t_body, modal).find('dl.context-menu-active'); |
| @@ -396,10 +425,12 @@ | @@ -396,10 +425,12 @@ | ||
| 396 | //选中班次 | 425 | //选中班次 |
| 397 | selectedDl(rs.t); | 426 | selectedDl(rs.t); |
| 398 | }, 300); | 427 | }, 300); |
| 428 | + //更新路牌公里统计面板 | ||
| 429 | + gb_schedule_table.showLpMileageTipBySch(rs.t); | ||
| 399 | }); | 430 | }); |
| 400 | }, '确定删除'); | 431 | }, '确定删除'); |
| 401 | }; | 432 | }; |
| 402 | - //加油 | 433 | + /*//加油 |
| 403 | var add_oil = function () { | 434 | var add_oil = function () { |
| 404 | var sch = getActiveSch(); | 435 | var sch = getActiveSch(); |
| 405 | if (!sch) | 436 | if (!sch) |
| @@ -412,7 +443,7 @@ | @@ -412,7 +443,7 @@ | ||
| 412 | open_modal(folder + '/sub_task/add_sub_task_oil.html', { | 443 | open_modal(folder + '/sub_task/add_sub_task_oil.html', { |
| 413 | sch: sch | 444 | sch: sch |
| 414 | }, modal_opts); | 445 | }, modal_opts); |
| 415 | - }; | 446 | + };*/ |
| 416 | 447 | ||
| 417 | var add_sub_task = function () { | 448 | var add_sub_task = function () { |
| 418 | var sch = getActiveSch(); | 449 | var sch = getActiveSch(); |
| @@ -429,14 +460,15 @@ | @@ -429,14 +460,15 @@ | ||
| 429 | var callbackHandler = { | 460 | var callbackHandler = { |
| 430 | add_temp_sch: add_temp_sch, | 461 | add_temp_sch: add_temp_sch, |
| 431 | remove_sch: remove_sch, | 462 | remove_sch: remove_sch, |
| 432 | - add_sub_task_other: add_sub_task_other, | ||
| 433 | - add_sub_task_in: add_sub_task_in, | 463 | + //add_sub_task_other: add_sub_task_other, |
| 464 | + //add_sub_task_in: add_sub_task_in, | ||
| 434 | remove_sub_task: remove_sub_task, | 465 | remove_sub_task: remove_sub_task, |
| 435 | - add_sub_task_out: add_sub_task_out, | ||
| 436 | - add_sub_task_range_turn: add_sub_task_range_turn, | ||
| 437 | - add_oil: add_oil, | 466 | + //add_sub_task_out: add_sub_task_out, |
| 467 | + //add_sub_task_range_turn: add_sub_task_range_turn, | ||
| 468 | + //add_oil: add_oil, | ||
| 438 | 469 | ||
| 439 | - add_sub_task: add_sub_task | 470 | + add_sub_task: add_sub_task, |
| 471 | + edit_sub_task: edit_sub_task | ||
| 440 | }; | 472 | }; |
| 441 | 473 | ||
| 442 | //右键菜单 | 474 | //右键菜单 |
| @@ -451,24 +483,7 @@ | @@ -451,24 +483,7 @@ | ||
| 451 | name: "临加班次" | 483 | name: "临加班次" |
| 452 | }, | 484 | }, |
| 453 | "add_sub_task": { | 485 | "add_sub_task": { |
| 454 | - name: "添加子任务"/*, | ||
| 455 | - items: { | ||
| 456 | - 'add_oil':{ | ||
| 457 | - name: '空驶进出场' | ||
| 458 | - }, | ||
| 459 | - 'add_sub_task_in': { | ||
| 460 | - name: '进场' | ||
| 461 | - }, | ||
| 462 | - 'add_sub_task_out': { | ||
| 463 | - name: '出场' | ||
| 464 | - }, | ||
| 465 | - 'add_sub_task_range_turn': { | ||
| 466 | - name: '区间调头' | ||
| 467 | - }, | ||
| 468 | - 'add_sub_task_other': { | ||
| 469 | - name: '自定义' | ||
| 470 | - } | ||
| 471 | - }*/ | 486 | + name: "添加子任务" |
| 472 | }, | 487 | }, |
| 473 | 'remove_sch': { | 488 | 'remove_sch': { |
| 474 | name: '删除' | 489 | name: '删除' |
| @@ -484,6 +499,10 @@ | @@ -484,6 +499,10 @@ | ||
| 484 | callbackHandler[key] && callbackHandler[key](); | 499 | callbackHandler[key] && callbackHandler[key](); |
| 485 | }, | 500 | }, |
| 486 | items: { | 501 | items: { |
| 502 | + "edit_sub_task":{ | ||
| 503 | + name: '修改子任务', | ||
| 504 | + icon: 'edit' | ||
| 505 | + }, | ||
| 487 | "remove_sub_task": { | 506 | "remove_sub_task": { |
| 488 | name: "删除子任务" | 507 | name: "删除子任务" |
| 489 | , icon: "delete" | 508 | , icon: "delete" |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task_v2/add_custom.html
| @@ -44,7 +44,7 @@ | @@ -44,7 +44,7 @@ | ||
| 44 | 44 | ||
| 45 | //班次类型切换 | 45 | //班次类型切换 |
| 46 | if(bcTypeMap[sch.bcType]) | 46 | if(bcTypeMap[sch.bcType]) |
| 47 | - $('[name=type2]', f).val(bcTypeMap[sch.bcType]) | 47 | + $('[name=type2]', f).val(bcTypeMap[sch.bcType]); |
| 48 | $('[name=type2]', f).trigger('change'); | 48 | $('[name=type2]', f).trigger('change'); |
| 49 | 49 | ||
| 50 | //滚动条到底 | 50 | //滚动条到底 |
| @@ -89,6 +89,9 @@ | @@ -89,6 +89,9 @@ | ||
| 89 | UIkit.modal('#add-sub-task-main-modal').hide(); | 89 | UIkit.modal('#add-sub-task-main-modal').hide(); |
| 90 | $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch}); | 90 | $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch}); |
| 91 | gb_data_basic.reload_stat_park_data(); | 91 | gb_data_basic.reload_stat_park_data(); |
| 92 | + | ||
| 93 | + //更新路牌公里统计面板 | ||
| 94 | + gb_schedule_table.showLpMileageTipBySch(sch); | ||
| 92 | return; | 95 | return; |
| 93 | } | 96 | } |
| 94 | var data = dataArray[i]; | 97 | var data = dataArray[i]; |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task_v2/add_in_out.html
| @@ -289,6 +289,9 @@ | @@ -289,6 +289,9 @@ | ||
| 289 | UIkit.modal('#add-sub-task-main-modal').hide(); | 289 | UIkit.modal('#add-sub-task-main-modal').hide(); |
| 290 | $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch}); | 290 | $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch}); |
| 291 | gb_data_basic.reload_stat_park_data(); | 291 | gb_data_basic.reload_stat_park_data(); |
| 292 | + | ||
| 293 | + //更新路牌公里统计面板 | ||
| 294 | + gb_schedule_table.showLpMileageTipBySch(sch); | ||
| 292 | return; | 295 | return; |
| 293 | } | 296 | } |
| 294 | var data = dataArray[i]; | 297 | var data = dataArray[i]; |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task_v2/add_range_normal.html
| @@ -127,6 +127,9 @@ | @@ -127,6 +127,9 @@ | ||
| 127 | if (i >= dataArray.length) { | 127 | if (i >= dataArray.length) { |
| 128 | UIkit.modal('#add-sub-task-main-modal').hide(); | 128 | UIkit.modal('#add-sub-task-main-modal').hide(); |
| 129 | $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch}); | 129 | $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch}); |
| 130 | + | ||
| 131 | + //更新路牌公里统计面板 | ||
| 132 | + gb_schedule_table.showLpMileageTipBySch(sch); | ||
| 130 | return; | 133 | return; |
| 131 | } | 134 | } |
| 132 | var data = dataArray[i]; | 135 | var data = dataArray[i]; |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task_v2/add_range_turn.html
| @@ -263,6 +263,9 @@ | @@ -263,6 +263,9 @@ | ||
| 263 | UIkit.modal('#add-sub-task-main-modal').hide(); | 263 | UIkit.modal('#add-sub-task-main-modal').hide(); |
| 264 | $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch}); | 264 | $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch}); |
| 265 | gb_data_basic.reload_stat_park_data(); | 265 | gb_data_basic.reload_stat_park_data(); |
| 266 | + | ||
| 267 | + //更新路牌公里统计面板 | ||
| 268 | + gb_schedule_table.showLpMileageTipBySch(sch); | ||
| 266 | return; | 269 | return; |
| 267 | } | 270 | } |
| 268 | var data = dataArray[i]; | 271 | var data = dataArray[i]; |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task_v2/edit.html
0 → 100644
| 1 | +<div class="uk-modal ct_move_modal" id="edit-sub-task-main-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="forms"> | ||
| 8 | + | ||
| 9 | + </div> | ||
| 10 | + | ||
| 11 | + <div class="uk-modal-footer uk-text-right" style="margin-top: 5px;"> | ||
| 12 | + <a class="delete_link" style="vertical-align: bottom;display: inline-block;color: red;font-size: 13px;margin-right: 10px;">删除子任务</a> | ||
| 13 | + <button type="button" class="uk-button uk-modal-close">取消</button> | ||
| 14 | + <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> 保存</button> | ||
| 15 | + </div> | ||
| 16 | + </div> | ||
| 17 | + | ||
| 18 | + <script id="sub-task-v2-edit-form-temp" type="text/html"> | ||
| 19 | + <form class="uk-form uk-form-horizontal sub_task_form_v2" style="background:#fff;"> | ||
| 20 | + <input type="hidden" value="{{sch.id}}" name="schedule.id" sch_id_inp> | ||
| 21 | + <input type="hidden" value="正常" name="type1"> | ||
| 22 | + <input type="hidden" value="{{cTask.id}}" name="id"> | ||
| 23 | + <div class="uk-grid"> | ||
| 24 | + <div class="uk-width-1-3"> | ||
| 25 | + <div class="uk-form-row"> | ||
| 26 | + <label class="uk-form-label">班次类型</label> | ||
| 27 | + <div class="uk-form-controls"> | ||
| 28 | + <select class="form-control nt-dictionary" data-code="-100" name="type2" | ||
| 29 | + data-group=ChildTaskType></select> | ||
| 30 | + </div> | ||
| 31 | + </div> | ||
| 32 | + </div> | ||
| 33 | + <div class="uk-width-1-3"> | ||
| 34 | + <div class="uk-form-row"> | ||
| 35 | + <label class="uk-form-label">起点 </label> | ||
| 36 | + <div class="uk-form-controls"> | ||
| 37 | + <select name="startStation" required></select> | ||
| 38 | + </div> | ||
| 39 | + </div> | ||
| 40 | + </div> | ||
| 41 | + <div class="uk-width-1-3"> | ||
| 42 | + <div class="uk-form-row"> | ||
| 43 | + <label class="uk-form-label">终点</label> | ||
| 44 | + <div class="uk-form-controls"> | ||
| 45 | + <select name="endStation" required></select> | ||
| 46 | + </div> | ||
| 47 | + </div> | ||
| 48 | + </div> | ||
| 49 | + </div> | ||
| 50 | + | ||
| 51 | + <div class="uk-grid"> | ||
| 52 | + <div class="uk-width-1-3"> | ||
| 53 | + <div class="uk-form-row"> | ||
| 54 | + <label class="uk-form-label">开始时间</label> | ||
| 55 | + <div class="uk-form-controls"> | ||
| 56 | + <input name="startDate" value="{{cTask.startDate}}" type="time" | ||
| 57 | + required> | ||
| 58 | + </div> | ||
| 59 | + </div> | ||
| 60 | + </div> | ||
| 61 | + <div class="uk-width-1-3"> | ||
| 62 | + <div class="uk-form-row"> | ||
| 63 | + <label class="uk-form-label">结束时间</label> | ||
| 64 | + <div class="uk-form-controls"> | ||
| 65 | + <input name="endDate" value="{{cTask.endDate}}" type="time" required> | ||
| 66 | + </div> | ||
| 67 | + </div> | ||
| 68 | + </div> | ||
| 69 | + <div class="uk-width-1-3"> | ||
| 70 | + <div class="uk-form-row"> | ||
| 71 | + <label class="uk-form-label">公里</label> | ||
| 72 | + <div class="uk-form-controls"> | ||
| 73 | + <input class="form-control" name="mileage" max=222 data-fv-lessthan-inclusive="false" | ||
| 74 | + required style="width: 42%;" value="{{cTask.mileage}}"> | ||
| 75 | + <select class="form-control nt-dictionary" required name="mileageType" | ||
| 76 | + data-group="MileageType" style="width: 52%;"></select> | ||
| 77 | + </div> | ||
| 78 | + </div> | ||
| 79 | + </div> | ||
| 80 | + </div> | ||
| 81 | + | ||
| 82 | + <div class="uk-grid"> | ||
| 83 | + <div class="uk-width-2-3 domains"></div> | ||
| 84 | + <div class="uk-width-1-3"> | ||
| 85 | + <div class="uk-form-row"> | ||
| 86 | + <label class="uk-form-label">备注</label> | ||
| 87 | + <div class="uk-form-controls"> | ||
| 88 | + <!--<select class="form-control nt-dictionary" required name="remarks"></select>--> | ||
| 89 | + <input class="form-control" value="{{cTask.remarks}}" name="remarks" data-fv-stringlength-max="50" data-fv-stringlength="true"> | ||
| 90 | + </div> | ||
| 91 | + </div> | ||
| 92 | + </div> | ||
| 93 | + </div> | ||
| 94 | + </form> | ||
| 95 | + </script> | ||
| 96 | + | ||
| 97 | + <script id="st-edit-domains-inout-form-temp" type="text/html"> | ||
| 98 | + <div class="uk-grid"> | ||
| 99 | + <div class="uk-width-1-2"> | ||
| 100 | + <div class="uk-form-row" style="padding-top: 5px;"> | ||
| 101 | + <label class="uk-form-label"></label> | ||
| 102 | + <div class="uk-form-controls"> | ||
| 103 | + <label data-uk-tooltip title="无人售票线路,请忽略这个选项"> | ||
| 104 | + <input type="checkbox" value=1 name="noClerk" class="i-cbox"> 无售票员 | ||
| 105 | + </label> | ||
| 106 | + </div> | ||
| 107 | + </div> | ||
| 108 | + </div> | ||
| 109 | + <div class="uk-width-1-2 destroy_reason_wrap"> | ||
| 110 | + <div class="uk-form-row"> | ||
| 111 | + <label class="uk-form-label">进出场原因</label> | ||
| 112 | + <div class="uk-form-controls"> | ||
| 113 | + <select class="form-control" name="reason" required> | ||
| 114 | + <option value="">请选择...</option> | ||
| 115 | + {{each inOutExps as exp i}} | ||
| 116 | + <option value="{{exp}}">{{exp}}</option> | ||
| 117 | + {{/each}} | ||
| 118 | + </select> | ||
| 119 | + </div> | ||
| 120 | + </div> | ||
| 121 | + </div> | ||
| 122 | + </div> | ||
| 123 | + </script> | ||
| 124 | + | ||
| 125 | + <script id="st-edit-domains-service-form-temp" type="text/html"> | ||
| 126 | + <div class="uk-grid"> | ||
| 127 | + <div class="uk-width-1-2"> | ||
| 128 | + <div class="uk-form-row" style="padding-top: 5px;"> | ||
| 129 | + <label class="uk-form-label"></label> | ||
| 130 | + <div class="uk-form-controls"> | ||
| 131 | + <label> | ||
| 132 | + <input type="checkbox" value=1 name="destroy" class="i-cbox"> 是否烂班 | ||
| 133 | + </label> | ||
| 134 | + </div> | ||
| 135 | + </div> | ||
| 136 | + </div> | ||
| 137 | + <div class="uk-width-1-2 destroy_reason_wrap" style="display: none;"> | ||
| 138 | + <div class="uk-form-row"> | ||
| 139 | + <label class="uk-form-label">烂班原因</label> | ||
| 140 | + <div class="uk-form-controls"> | ||
| 141 | + <select class="form-control" name="reason" required> | ||
| 142 | + <option value="">请选择...</option> | ||
| 143 | + {{each adjustExps as exp i}} | ||
| 144 | + <option value="{{exp}}">{{exp}}</option> | ||
| 145 | + {{/each}} | ||
| 146 | + </select> | ||
| 147 | + </div> | ||
| 148 | + </div> | ||
| 149 | + </div> | ||
| 150 | + </div> | ||
| 151 | + </script> | ||
| 152 | + <script> | ||
| 153 | + (function () { | ||
| 154 | + var modal = '#edit-sub-task-main-modal', sch, cTask, | ||
| 155 | + stationRoutes, | ||
| 156 | + parks, | ||
| 157 | + information, | ||
| 158 | + st_park_data; | ||
| 159 | + | ||
| 160 | + $(modal).on('init', function (e, data) { | ||
| 161 | + e.stopPropagation(); | ||
| 162 | + sch = data.sch; | ||
| 163 | + cTask = data.cTask; | ||
| 164 | + | ||
| 165 | + //站到场数据 | ||
| 166 | + st_park_data = gb_data_basic.get_stat_park_data()[sch.xlBm]; | ||
| 167 | + //站点路由 | ||
| 168 | + stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) { | ||
| 169 | + return a.stationRouteCode - b.stationRouteCode; | ||
| 170 | + }), 'directions'); | ||
| 171 | + //停车场 | ||
| 172 | + parks = gb_data_basic.simpleParksArray(); | ||
| 173 | + //线路标准 | ||
| 174 | + information = gb_data_basic.getLineInformation(sch.xlBm); | ||
| 175 | + //停车场排序,常用的放前面 | ||
| 176 | + parks = sort_parks(parks, information, st_park_data); | ||
| 177 | + | ||
| 178 | + var htmlStr = template('sub-task-v2-edit-form-temp', {sch: sch, cTask: cTask}); | ||
| 179 | + var f = $(htmlStr); | ||
| 180 | + $('.forms', modal).append(f); | ||
| 181 | + //字典转换 | ||
| 182 | + dictionaryUtils.transformDom($('.nt-dictionary', f)); | ||
| 183 | + | ||
| 184 | + //设置下拉框默认值 | ||
| 185 | + $f('type2', f).val(cTask.type2).trigger('change');//班次类型 | ||
| 186 | + $f('startStation', f).val(cTask.startStation);//起点站 | ||
| 187 | + $f('endStation', f).val(cTask.endStation);//终点站 | ||
| 188 | + $f('mileageType', f).val(cTask.mileageType);//里程类型 | ||
| 189 | + if(cTask.destroy) | ||
| 190 | + $f('destroy', f).trigger('click');//烂班 | ||
| 191 | + if(cTask.reason) | ||
| 192 | + $f('reason', f).val(cTask.reason);//原因 | ||
| 193 | + if(cTask.noClerk) | ||
| 194 | + $f('noClerk', f).trigger('click');//无售票员 | ||
| 195 | + | ||
| 196 | + f.formValidation({ | ||
| 197 | + framework: 'uikit', | ||
| 198 | + locale: 'zh_CN' | ||
| 199 | + }); | ||
| 200 | + $('button[type=submit]', modal).on('click', function () { | ||
| 201 | + f.formValidation('validate'); | ||
| 202 | + }); | ||
| 203 | + | ||
| 204 | + //提交 | ||
| 205 | + f.on('success.form.fv', function (e) { | ||
| 206 | + e.preventDefault(); | ||
| 207 | + $('button[type=submit]', modal).attr('disabled', 'disabled'); | ||
| 208 | + | ||
| 209 | + var data=$.extend(f.serializeJSON(), gb_common.getDisabledVal(f)); | ||
| 210 | + | ||
| 211 | + gb_common.$post('/childTask/update', data, function (rs) { | ||
| 212 | + notify_succ('修改成功!'); | ||
| 213 | + gb_schedule_table.updateSchedule(rs.t); | ||
| 214 | + | ||
| 215 | + UIkit.modal(modal).hide(); | ||
| 216 | + $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch}); | ||
| 217 | + | ||
| 218 | + //更新路牌公里统计面板 | ||
| 219 | + gb_schedule_table.showLpMileageTipBySch(rs.t); | ||
| 220 | + }); | ||
| 221 | + }); | ||
| 222 | + | ||
| 223 | + f.on('err.field.fv', function () { | ||
| 224 | + $('button[type=submit]', modal).removeClass('disabled').removeAttr('disabled'); | ||
| 225 | + }); | ||
| 226 | + }); | ||
| 227 | + | ||
| 228 | + //班次类型切换事件 | ||
| 229 | + $(modal).on('change', 'select[name=type2]', reCalcInputs_type); | ||
| 230 | + //烂班选项点击事件 | ||
| 231 | + $(modal).on('change', 'input[name=destroy]', destroyClick); | ||
| 232 | + //进出场原因切换 | ||
| 233 | + $(modal).on('change', 'select[name=reason]', reSynchroReason); | ||
| 234 | + | ||
| 235 | + /** | ||
| 236 | + * 根据班次类型切换起终点下拉框 | ||
| 237 | + */ | ||
| 238 | + function reCalcInputs_type() { | ||
| 239 | + var f = $(this).parents('.sub_task_form_v2'); | ||
| 240 | + var upDown = sch.xlDir; | ||
| 241 | + if($('[name=upDown]', f).length>0) | ||
| 242 | + upDown = $('[name=upDown]', f).val(); | ||
| 243 | + var routes = stationRoutes[upDown] | ||
| 244 | + , lastCode = routes[routes.length - 1].stationCode | ||
| 245 | + , opts = '', park_opts = ''; | ||
| 246 | + //station options | ||
| 247 | + $.each(routes, function () { | ||
| 248 | + opts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>' | ||
| 249 | + }); | ||
| 250 | + //park options | ||
| 251 | + for(var i=0,p;p=parks[i++];) | ||
| 252 | + park_opts += '<option value="' + p.code + '">' + p.name + '</option>'; | ||
| 253 | + /*for (var code in parks) | ||
| 254 | + park_opts += '<option value="' + code + '">' + parks[code] + '</option>';*/ | ||
| 255 | + | ||
| 256 | + var qdz = $f('startStation', f), zdz = $f('endStation', f), mType = $f('mileageType', f); | ||
| 257 | + var domainsTemp; | ||
| 258 | + switch ($(this).val()) { | ||
| 259 | + case '3'://出场 | ||
| 260 | + qdz.html(park_opts).val(information.carPark); | ||
| 261 | + zdz.html(opts).trigger('change'); | ||
| 262 | + mType.val('empty').attr('disabled', 'disabled').trigger('change'); | ||
| 263 | + domainsTemp = 'st-edit-domains-inout-form-temp'; | ||
| 264 | + break; | ||
| 265 | + case '2'://进场 | ||
| 266 | + qdz.html(opts); | ||
| 267 | + zdz.html(park_opts).val(information.carPark).trigger('change'); | ||
| 268 | + mType.val('empty').attr('disabled', 'disabled').trigger('change'); | ||
| 269 | + domainsTemp = 'st-edit-domains-inout-form-temp'; | ||
| 270 | + break; | ||
| 271 | + default: | ||
| 272 | + qdz.html(opts); | ||
| 273 | + zdz.html(opts).val(lastCode).trigger('change'); | ||
| 274 | + mType.val('service').removeAttr('disabled').trigger('change'); | ||
| 275 | + domainsTemp = 'st-edit-domains-service-form-temp'; | ||
| 276 | + } | ||
| 277 | + | ||
| 278 | + //可变选项区域 | ||
| 279 | + $('.domains', f).html(template(domainsTemp, { | ||
| 280 | + adjustExps: gb_common.adjustExps, | ||
| 281 | + inOutExps: gb_common.inOutExps | ||
| 282 | + })); | ||
| 283 | + | ||
| 284 | + //校验reason | ||
| 285 | + f.trigger('add_reason_field'); | ||
| 286 | + } | ||
| 287 | + | ||
| 288 | + | ||
| 289 | + function $f(name, f) { | ||
| 290 | + return $('[name=' + name + ']', f); | ||
| 291 | + } | ||
| 292 | + | ||
| 293 | + /** | ||
| 294 | + * 停车场排序 | ||
| 295 | + * @param parks 停车场 code 2 name | ||
| 296 | + * @param information 线路标准 | ||
| 297 | + * @param st_park_data 站到场 | ||
| 298 | + */ | ||
| 299 | + function sort_parks(parks, information, st_park_data) { | ||
| 300 | + var array = [], names=[]; | ||
| 301 | + for(var code in parks){ | ||
| 302 | + array.push({code: code, name: parks[code]}); | ||
| 303 | + } | ||
| 304 | + | ||
| 305 | + if(st_park_data && st_park_data.length > 0){ | ||
| 306 | + $.each(st_park_data, function () { | ||
| 307 | + names.push(this.parkName); | ||
| 308 | + }); | ||
| 309 | + } | ||
| 310 | + | ||
| 311 | + //debugger | ||
| 312 | + array.sort(function (a, b) { | ||
| 313 | + if(a.code==information.carPark) | ||
| 314 | + return -1; | ||
| 315 | + if(b.code==information.carPark) | ||
| 316 | + return 1; | ||
| 317 | + | ||
| 318 | + var ai = names.indexOf(a.name), | ||
| 319 | + bi = names.indexOf(b.name); | ||
| 320 | + | ||
| 321 | + if(ai!=-1 && bi==-1) | ||
| 322 | + return -1; | ||
| 323 | + else if(ai==-1 && bi!=-1) | ||
| 324 | + return 1; | ||
| 325 | + else | ||
| 326 | + return a.name.localeCompare(b.name); | ||
| 327 | + }); | ||
| 328 | + return array; | ||
| 329 | + } | ||
| 330 | + | ||
| 331 | + function destroyClick() { | ||
| 332 | + var f = $(this).parents('.sub_task_form_v2'); | ||
| 333 | + if (this.checked) { | ||
| 334 | + $('.destroy_reason_wrap', f).show(); | ||
| 335 | + f.attr('destroy', true);//.addClass('destroy_form'); | ||
| 336 | + } | ||
| 337 | + else { | ||
| 338 | + $('.destroy_reason_wrap', f).hide(); | ||
| 339 | + f.removeAttr('destroy');//.removeClass('destroy_form'); | ||
| 340 | + } | ||
| 341 | + //reCalcMileageCount(); | ||
| 342 | + } | ||
| 343 | + | ||
| 344 | + /** | ||
| 345 | + * 切换原因 | ||
| 346 | + */ | ||
| 347 | + function reSynchroReason() { | ||
| 348 | + var f = $(this).parents('.sub_task_form_v2'), | ||
| 349 | + reason = $(this).val(), | ||
| 350 | + remInput = $('[name=remarks]', f); | ||
| 351 | + | ||
| 352 | + if(remInput.val()==reason + ',') | ||
| 353 | + return; | ||
| 354 | + remInput.val(remInput.val() + reason + ','); | ||
| 355 | + } | ||
| 356 | + | ||
| 357 | + | ||
| 358 | + $('.delete_link', modal).on('click', function () { | ||
| 359 | + var id = cTask.id; | ||
| 360 | + if(!id){ | ||
| 361 | + notify_err('无法获取标识键!'); | ||
| 362 | + return; | ||
| 363 | + } | ||
| 364 | + | ||
| 365 | + var str = '<h3>确定要删除这条子任务?</h3>'; | ||
| 366 | + alt_confirm(str, function () { | ||
| 367 | + gb_common.$del('/childTask/' + id, function (rs) { | ||
| 368 | + gb_schedule_table.updateSchedule(rs.t); | ||
| 369 | + | ||
| 370 | + UIkit.modal(modal).hide(); | ||
| 371 | + $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch}); | ||
| 372 | + | ||
| 373 | + //更新路牌公里统计面板 | ||
| 374 | + gb_schedule_table.showLpMileageTipBySch(rs.t); | ||
| 375 | + }); | ||
| 376 | + }, '确定删除'); | ||
| 377 | + }); | ||
| 378 | + })(); | ||
| 379 | + </script> | ||
| 380 | +</div> | ||
| 0 | \ No newline at end of file | 381 | \ No newline at end of file |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task_v2/main.html
| @@ -155,7 +155,7 @@ | @@ -155,7 +155,7 @@ | ||
| 155 | <div class="uk-form-row" style="padding-top: 5px;"> | 155 | <div class="uk-form-row" style="padding-top: 5px;"> |
| 156 | <label class="uk-form-label"></label> | 156 | <label class="uk-form-label"></label> |
| 157 | <div class="uk-form-controls"> | 157 | <div class="uk-form-controls"> |
| 158 | - <label data-uk-tooltip title="如是无人售票线路,忽略这个选项"> | 158 | + <label data-uk-tooltip title="无人售票线路,请忽略这个选项"> |
| 159 | <input type="checkbox" value=1 name="noClerk" class="i-cbox"> 无售票员 | 159 | <input type="checkbox" value=1 name="noClerk" class="i-cbox"> 无售票员 |
| 160 | </label> | 160 | </label> |
| 161 | </div> | 161 | </div> |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/temp_sch/add_normal.html
| @@ -150,6 +150,10 @@ | @@ -150,6 +150,10 @@ | ||
| 150 | }catch (e){ | 150 | }catch (e){ |
| 151 | console.log(e);} | 151 | console.log(e);} |
| 152 | UIkit.modal('#schedule-addsch-modal').hide(); | 152 | UIkit.modal('#schedule-addsch-modal').hide(); |
| 153 | + //更新路牌公里统计面板 | ||
| 154 | + gb_schedule_table.showLpMileageTipBySch(rs.t); | ||
| 155 | + }, function () { | ||
| 156 | + enable_submit_btn(nf); | ||
| 153 | }); | 157 | }); |
| 154 | }); | 158 | }); |
| 155 | $('.ct_line_lp_badge', nf).html(sch.xlName + ', '+sch.lpName); | 159 | $('.ct_line_lp_badge', nf).html(sch.xlName + ', '+sch.lpName); |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/temp_sch/add_park_to_park.html
| @@ -154,6 +154,10 @@ | @@ -154,6 +154,10 @@ | ||
| 154 | }catch (e){ | 154 | }catch (e){ |
| 155 | console.log(e);} | 155 | console.log(e);} |
| 156 | UIkit.modal('#schedule-addsch-modal').hide(); | 156 | UIkit.modal('#schedule-addsch-modal').hide(); |
| 157 | + //更新路牌公里统计面板 | ||
| 158 | + gb_schedule_table.showLpMileageTipBySch(rs.t); | ||
| 159 | + }, function () { | ||
| 160 | + enable_submit_btn(nf); | ||
| 157 | }); | 161 | }); |
| 158 | }); | 162 | }); |
| 159 | $('.ct_line_lp_badge', nf).html(sch.xlName + ', '+sch.lpName); | 163 | $('.ct_line_lp_badge', nf).html(sch.xlName + ', '+sch.lpName); |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/temp_sch/add_two_way.html
| @@ -315,6 +315,8 @@ | @@ -315,6 +315,8 @@ | ||
| 315 | }catch (e){ | 315 | }catch (e){ |
| 316 | console.log(e);} | 316 | console.log(e);} |
| 317 | UIkit.modal('#schedule-addsch-modal').hide(); | 317 | UIkit.modal('#schedule-addsch-modal').hide(); |
| 318 | + //更新路牌公里统计面板 | ||
| 319 | + gb_schedule_table.showLpMileageTipBySch(last); | ||
| 318 | return; | 320 | return; |
| 319 | } | 321 | } |
| 320 | submitFun(dataArray[i], function (rs) { | 322 | submitFun(dataArray[i], function (rs) { |
| @@ -323,6 +325,8 @@ | @@ -323,6 +325,8 @@ | ||
| 323 | upArr.push(rs.t); | 325 | upArr.push(rs.t); |
| 324 | i++; | 326 | i++; |
| 325 | f(); | 327 | f(); |
| 328 | + }, function () { | ||
| 329 | + $('[type=submit]', wrap).removeClass('disabled').removeAttr('disabled'); | ||
| 326 | }); | 330 | }); |
| 327 | })(); | 331 | })(); |
| 328 | } | 332 | } |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/temp_sch/main.html
| @@ -310,7 +310,7 @@ | @@ -310,7 +310,7 @@ | ||
| 310 | /** | 310 | /** |
| 311 | * 提交表单 | 311 | * 提交表单 |
| 312 | */ | 312 | */ |
| 313 | - function submit_temp_schedule_form(data, cb) { | 313 | + function submit_temp_schedule_form(data, cb, err) { |
| 314 | data.xlBm = sch.xlBm; | 314 | data.xlBm = sch.xlBm; |
| 315 | data.xlName = sch.xlName; | 315 | data.xlName = sch.xlName; |
| 316 | data.lpName = sch.lpName; | 316 | data.lpName = sch.lpName; |
| @@ -336,7 +336,7 @@ | @@ -336,7 +336,7 @@ | ||
| 336 | gb_common.$post('/realSchedule', data, function (rs) { | 336 | gb_common.$post('/realSchedule', data, function (rs) { |
| 337 | notify_succ('新增临加班次成功'); | 337 | notify_succ('新增临加班次成功'); |
| 338 | cb && cb(rs); | 338 | cb && cb(rs); |
| 339 | - }); | 339 | + }, err); |
| 340 | } | 340 | } |
| 341 | })(); | 341 | })(); |
| 342 | </script> | 342 | </script> |
src/main/resources/static/real_control_v2/fragments/line_schedule/layout.html
| @@ -11,9 +11,11 @@ | @@ -11,9 +11,11 @@ | ||
| 11 | <div class="card-panel"></div> | 11 | <div class="card-panel"></div> |
| 12 | </div> | 12 | </div> |
| 13 | </div> | 13 | </div> |
| 14 | - <div class="uk-width-1-6" style="height: calc(100% - 1px);"> | 14 | + <div class="uk-width-1-6" style="height: calc(100% - 1px);position: relative;"> |
| 15 | <div class="card-panel sys-mailbox" style="overflow: auto;"> | 15 | <div class="card-panel sys-mailbox" style="overflow: auto;"> |
| 16 | </div> | 16 | </div> |
| 17 | + <div class="mileage_elec_panel"> | ||
| 18 | + </div> | ||
| 17 | </div> | 19 | </div> |
| 18 | </div> | 20 | </div> |
| 19 | 21 |
src/main/resources/static/real_control_v2/fragments/line_schedule/sch_table.html
| @@ -82,7 +82,7 @@ | @@ -82,7 +82,7 @@ | ||
| 82 | <span class="uk-badge uk-badge-danger">临加</span> | 82 | <span class="uk-badge uk-badge-danger">临加</span> |
| 83 | {{/if}} | 83 | {{/if}} |
| 84 | {{if sch.cTasks.length > 0}} | 84 | {{if sch.cTasks.length > 0}} |
| 85 | - <span class="uk-badge uk-badge-notification c_task">{{sch.cTasks.length}}</span> | 85 | + <span class="uk-badge uk-badge-notification c_task {{if sch.c_t_mileage_status==-1}}c_task_mileage_error{{/if}}">{{sch.cTasks.length}}</span> |
| 86 | {{/if}} | 86 | {{/if}} |
| 87 | </dd> | 87 | </dd> |
| 88 | <dd data-sort-val={{sch.dfsjT}} dbclick dbclick-type="dfsj" dbclick-val="{{sch.dfsj}}"> | 88 | <dd data-sort-val={{sch.dfsjT}} dbclick dbclick-type="dfsj" dbclick-val="{{sch.dfsj}}"> |
| @@ -136,7 +136,7 @@ | @@ -136,7 +136,7 @@ | ||
| 136 | <span class="uk-badge uk-badge-danger">临加</span> | 136 | <span class="uk-badge uk-badge-danger">临加</span> |
| 137 | {{/if}} | 137 | {{/if}} |
| 138 | {{if cTasks.length > 0}} | 138 | {{if cTasks.length > 0}} |
| 139 | - <span class="uk-badge uk-badge-notification c_task">{{cTasks.length}}</span> | 139 | + <span class="uk-badge uk-badge-notification c_task {{if c_t_mileage_status==-1}}c_task_mileage_error{{/if}}">{{cTasks.length}}</span> |
| 140 | {{/if}} | 140 | {{/if}} |
| 141 | </dd> | 141 | </dd> |
| 142 | </script> | 142 | </script> |
| @@ -182,4 +182,17 @@ | @@ -182,4 +182,17 @@ | ||
| 182 | <span class="_badge">{{zdsj}}/{{zdsjActual}}</span> | 182 | <span class="_badge">{{zdsj}}/{{zdsjActual}}</span> |
| 183 | </div> | 183 | </div> |
| 184 | </script> | 184 | </script> |
| 185 | + | ||
| 186 | + <script id="sch-lp-mileage-tip-temp" type="text/html"> | ||
| 187 | + {{each data as obj i}} | ||
| 188 | + {{if i > 0}}<hr>{{/if}} | ||
| 189 | + | ||
| 190 | + <h5 class="_title"> <span class="lp_name">{{lpName}}</span> <a>{{obj.key}}</a></h5> | ||
| 191 | + <div class="LD_item"> | ||
| 192 | + <span>营运:<a>{{obj.serviceMileage}}</a></span> | ||
| 193 | + <span>烂班:<a>{{obj.destroyMileage}}</a></span> | ||
| 194 | + <span>空驶:<a>{{obj.emptyMileage}}</a></span> | ||
| 195 | + </div> | ||
| 196 | + {{/each}} | ||
| 197 | + </script> | ||
| 185 | </div> | 198 | </div> |
src/main/resources/static/real_control_v2/js/common.js
| @@ -95,13 +95,13 @@ var gb_common = (function () { | @@ -95,13 +95,13 @@ var gb_common = (function () { | ||
| 95 | }); | 95 | }); |
| 96 | }; | 96 | }; |
| 97 | 97 | ||
| 98 | - var $post = function (url, data, successFun) { | 98 | + var $post = function (url, data, successFun, errFun) { |
| 99 | $.ajax({ | 99 | $.ajax({ |
| 100 | url: url, | 100 | url: url, |
| 101 | method: 'POST', | 101 | method: 'POST', |
| 102 | data: data, | 102 | data: data, |
| 103 | complete: function (xhr, ts) { | 103 | complete: function (xhr, ts) { |
| 104 | - ajaxComplete(xhr, ts, successFun); | 104 | + ajaxComplete(xhr, ts, successFun, errFun); |
| 105 | } | 105 | } |
| 106 | }); | 106 | }); |
| 107 | }; | 107 | }; |
| @@ -126,7 +126,7 @@ var gb_common = (function () { | @@ -126,7 +126,7 @@ var gb_common = (function () { | ||
| 126 | 126 | ||
| 127 | var errorHead = '<span style="color:red;">异常:</span>'; | 127 | var errorHead = '<span style="color:red;">异常:</span>'; |
| 128 | 128 | ||
| 129 | - function successHandle(json, handle) { | 129 | + function successHandle(json, handle, err) { |
| 130 | var status = json.status; | 130 | var status = json.status; |
| 131 | if (status == 407) { | 131 | if (status == 407) { |
| 132 | location.href = '/login.html'; | 132 | location.href = '/login.html'; |
| @@ -142,18 +142,20 @@ var gb_common = (function () { | @@ -142,18 +142,20 @@ var gb_common = (function () { | ||
| 142 | UIkit.modal.alert(errorHead + (json.msg ? json.msg : '未知异常'), {labels: {Ok: '确定'}}); | 142 | UIkit.modal.alert(errorHead + (json.msg ? json.msg : '未知异常'), {labels: {Ok: '确定'}}); |
| 143 | //关闭wait窗口 | 143 | //关闭wait窗口 |
| 144 | hide_wait_modal(); | 144 | hide_wait_modal(); |
| 145 | + err && err(); | ||
| 145 | } | 146 | } |
| 146 | else | 147 | else |
| 147 | handle && handle(json); | 148 | handle && handle(json); |
| 148 | } | 149 | } |
| 149 | 150 | ||
| 150 | - function ajaxComplete(xhr, ts, succ) { | 151 | + function ajaxComplete(xhr, ts, succ, err) { |
| 151 | if (ts == 'success') { | 152 | if (ts == 'success') { |
| 152 | - successHandle(JSON.parse(xhr.responseText), succ); | 153 | + successHandle(JSON.parse(xhr.responseText), succ, err); |
| 153 | } else if (ts == 'error') { | 154 | } else if (ts == 'error') { |
| 154 | UIkit.modal.alert(errorHead + xhr.responseText, {labels: {Ok: '确定'}}); | 155 | UIkit.modal.alert(errorHead + xhr.responseText, {labels: {Ok: '确定'}}); |
| 155 | //关闭wait窗口 | 156 | //关闭wait窗口 |
| 156 | hide_wait_modal(); | 157 | hide_wait_modal(); |
| 158 | + err && err(); | ||
| 157 | } | 159 | } |
| 158 | } | 160 | } |
| 159 | 161 |
src/main/resources/static/real_control_v2/js/data/data_gps.js
| @@ -14,9 +14,6 @@ var gb_data_gps = (function () { | @@ -14,9 +14,6 @@ var gb_data_gps = (function () { | ||
| 14 | refreshEventCallbacks.push(cb); | 14 | refreshEventCallbacks.push(cb); |
| 15 | }; | 15 | }; |
| 16 | 16 | ||
| 17 | - //超速数据回调 | ||
| 18 | - //var overspeedEventCallbacks = []; | ||
| 19 | - | ||
| 20 | var refresh = function (cb) { | 17 | var refresh = function (cb) { |
| 21 | $.ajax({ | 18 | $.ajax({ |
| 22 | url: '/gps/real/line', | 19 | url: '/gps/real/line', |
| @@ -25,8 +22,6 @@ var gb_data_gps = (function () { | @@ -25,8 +22,6 @@ var gb_data_gps = (function () { | ||
| 25 | success: function (rs) { | 22 | success: function (rs) { |
| 26 | //用定时的gps来检测session断开 | 23 | //用定时的gps来检测session断开 |
| 27 | if(rs.status && rs.status==407){ | 24 | if(rs.status && rs.status==407){ |
| 28 | - //解除退出页面的提示框 | ||
| 29 | - window.removeEventListener("beforeunload", gb_beforeunload_fun); | ||
| 30 | location.href = '/login.html'; | 25 | location.href = '/login.html'; |
| 31 | return; | 26 | return; |
| 32 | } | 27 | } |
src/main/resources/static/real_control_v2/js/line_schedule/badge_tooltip.js
| @@ -18,7 +18,6 @@ var gb_schedule_badge_tootip = (function () { | @@ -18,7 +18,6 @@ var gb_schedule_badge_tootip = (function () { | ||
| 18 | }, | 18 | }, |
| 19 | events: { | 19 | events: { |
| 20 | hidden: function(event, api) { | 20 | hidden: function(event, api) { |
| 21 | - //destroy dom | ||
| 22 | $(this).qtip('destroy', true); | 21 | $(this).qtip('destroy', true); |
| 23 | } | 22 | } |
| 24 | } | 23 | } |
| @@ -44,25 +43,32 @@ var gb_schedule_badge_tootip = (function () { | @@ -44,25 +43,32 @@ var gb_schedule_badge_tootip = (function () { | ||
| 44 | show: _opts.show, | 43 | show: _opts.show, |
| 45 | content: { | 44 | content: { |
| 46 | text: function() { | 45 | text: function() { |
| 47 | - var sch = getSch(this); | 46 | + var sch = getSch(this), |
| 47 | + serviceCount=0, | ||
| 48 | + emptyCount=0; | ||
| 48 | //子任务排序 | 49 | //子任务排序 |
| 49 | $.each(sch.cTasks, function () { | 50 | $.each(sch.cTasks, function () { |
| 50 | if(this.mileageType=='service'){ | 51 | if(this.mileageType=='service'){ |
| 52 | + serviceCount = gb_common.accAdd(serviceCount, this.mileage); | ||
| 51 | if(this.type1=='正常') | 53 | if(this.type1=='正常') |
| 52 | this.order_no=0; | 54 | this.order_no=0; |
| 53 | else | 55 | else |
| 54 | this.order_no=1; | 56 | this.order_no=1; |
| 55 | 57 | ||
| 56 | - if(this.destroy) | 58 | + if(this.destroy){ |
| 57 | this.order_no=2; | 59 | this.order_no=2; |
| 60 | + } | ||
| 58 | } | 61 | } |
| 59 | - else | 62 | + else{ |
| 60 | this.order_no=this.type2 + 1; | 63 | this.order_no=this.type2 + 1; |
| 64 | + emptyCount = gb_common.accAdd(emptyCount, this.mileage); | ||
| 65 | + } | ||
| 61 | }); | 66 | }); |
| 62 | var array = sch.cTasks.sort(function (a, b) { | 67 | var array = sch.cTasks.sort(function (a, b) { |
| 63 | return a.order_no - b.order_no; | 68 | return a.order_no - b.order_no; |
| 64 | }); | 69 | }); |
| 65 | - return temps['sch-table-task-tootip-temp']({tasks: array}); | 70 | + return temps['sch-table-task-tootip-temp']( |
| 71 | + {tasks: array, sch: sch, serviceCount: serviceCount, emptyCount: emptyCount}); | ||
| 66 | } | 72 | } |
| 67 | }, | 73 | }, |
| 68 | position: _opts.position, | 74 | position: _opts.position, |
| @@ -74,6 +80,45 @@ var gb_schedule_badge_tootip = (function () { | @@ -74,6 +80,45 @@ var gb_schedule_badge_tootip = (function () { | ||
| 74 | }); | 80 | }); |
| 75 | }); | 81 | }); |
| 76 | 82 | ||
| 83 | + /** | ||
| 84 | + * 子任务编辑 | ||
| 85 | + */ | ||
| 86 | + $(document).on('click', 'a.tip_task_edit_link', function () { | ||
| 87 | + var schId = $(this).data('schid'), | ||
| 88 | + taskId = $(this).data('id'), | ||
| 89 | + lineCode = $(this).data('line'); | ||
| 90 | + | ||
| 91 | + var sch = gb_schedule_table.findScheduleByLine(lineCode)[schId]; | ||
| 92 | + | ||
| 93 | + var cTask; | ||
| 94 | + for(var i=0,obj;obj=sch.cTasks[i++];){ | ||
| 95 | + if(obj.id==taskId){ | ||
| 96 | + cTask = obj; | ||
| 97 | + break; | ||
| 98 | + } | ||
| 99 | + } | ||
| 100 | + | ||
| 101 | + $('#edit-sub-task-main-modal').remove(); | ||
| 102 | + //打开子任务修改modal | ||
| 103 | + open_modal('/real_control_v2/fragments/line_schedule/context_menu/sub_task_v2/edit.html', { | ||
| 104 | + sch: sch, | ||
| 105 | + cTask: cTask | ||
| 106 | + }, {center: false, bgclose: false}); | ||
| 107 | + }); | ||
| 108 | + | ||
| 109 | + /** | ||
| 110 | + * 新增子任务 | ||
| 111 | + */ | ||
| 112 | + $(document).on('click', 'i.badge_tip_add_icon', function () { | ||
| 113 | + var schId = $(this).data('schid'), | ||
| 114 | + lineCode = $(this).data('line'); | ||
| 115 | + | ||
| 116 | + var sch = gb_schedule_table.findScheduleByLine(lineCode)[schId]; | ||
| 117 | + open_modal('/real_control_v2/fragments/line_schedule/context_menu/sub_task_v2/main.html', { | ||
| 118 | + sch: sch | ||
| 119 | + }, {center: false, bgclose: false}); | ||
| 120 | + }); | ||
| 121 | + | ||
| 77 | //区间 tootip | 122 | //区间 tootip |
| 78 | $(document).on('mouseenter', _badge+'.sch_region', function() { | 123 | $(document).on('mouseenter', _badge+'.sch_region', function() { |
| 79 | $(this).qtip({ | 124 | $(this).qtip({ |
src/main/resources/static/real_control_v2/js/line_schedule/context_menu.js
| @@ -319,15 +319,15 @@ var gb_schedule_context_menu = (function () { | @@ -319,15 +319,15 @@ var gb_schedule_context_menu = (function () { | ||
| 319 | 'fcxxwt': { | 319 | 'fcxxwt': { |
| 320 | name: '发车信息微调' | 320 | name: '发车信息微调' |
| 321 | }, | 321 | }, |
| 322 | + 'sep3': '---------', | ||
| 322 | 'lj_zrw': { | 323 | 'lj_zrw': { |
| 323 | name: '临加/子任务' | 324 | name: '临加/子任务' |
| 324 | }, | 325 | }, |
| 325 | - 'sep3': '---------', | ||
| 326 | 'add_temp_sch': { | 326 | 'add_temp_sch': { |
| 327 | - name: '添加临加班次' | 327 | + name: '新增临加班次' |
| 328 | }, | 328 | }, |
| 329 | 'add_sub_task': { | 329 | 'add_sub_task': { |
| 330 | - name: '添加子任务' | 330 | + name: '新增子任务' |
| 331 | }, | 331 | }, |
| 332 | 'sep4': '---------', | 332 | 'sep4': '---------', |
| 333 | 'tzrc': { | 333 | 'tzrc': { |
src/main/resources/static/real_control_v2/js/line_schedule/dbclick.js
| @@ -93,8 +93,18 @@ var gb_schedule_table_dbclick = (function() { | @@ -93,8 +93,18 @@ var gb_schedule_table_dbclick = (function() { | ||
| 93 | }); | 93 | }); |
| 94 | }; | 94 | }; |
| 95 | 95 | ||
| 96 | + var carCellClick = function (elem) { | ||
| 97 | + elem.dblclick(function () { | ||
| 98 | + var nbbm = $(this).data('nbbm'); | ||
| 99 | + var lineCode = $('.north-tabs>ul>li.tab-line.uk-active').data('code'); | ||
| 100 | + | ||
| 101 | + open_modal('/real_control_v2/fragments/line_schedule/car_info_all.html', {nbbm:nbbm,lineCode:lineCode}); | ||
| 102 | + }); | ||
| 103 | + }; | ||
| 104 | + | ||
| 96 | return { | 105 | return { |
| 97 | init: init, | 106 | init: init, |
| 98 | - sfsjCellClick:sfsjCellClick | 107 | + sfsjCellClick:sfsjCellClick, |
| 108 | + carCellClick: carCellClick | ||
| 99 | }; | 109 | }; |
| 100 | })(); | 110 | })(); |
src/main/resources/static/real_control_v2/js/line_schedule/mileage_count.js
0 → 100644
| 1 | + | ||
| 2 | +/** | ||
| 3 | + * 统计班次公里 | ||
| 4 | + * @type {{}} | ||
| 5 | + */ | ||
| 6 | +var gb_sch_mileage_count = (function () { | ||
| 7 | + | ||
| 8 | + | ||
| 9 | + var isInOut = function (sch) { | ||
| 10 | + return sch.bcType=='out' || sch.bcType=='in'; | ||
| 11 | + }; | ||
| 12 | + | ||
| 13 | + return { | ||
| 14 | + serviceMileage: function (array) { | ||
| 15 | + var sum = 0; | ||
| 16 | + var cts; | ||
| 17 | + | ||
| 18 | + for(var i=0,sch;sch=array[i++];){ | ||
| 19 | + if (sch.status == -1) | ||
| 20 | + continue; | ||
| 21 | + | ||
| 22 | + if (isInOut(sch) || sch.bcType=='ldks') | ||
| 23 | + continue; | ||
| 24 | + | ||
| 25 | + cts = sch['cTasks']; | ||
| 26 | + | ||
| 27 | + //有子任务 | ||
| 28 | + if (cts && cts.length > 0) { | ||
| 29 | + for(var j=0,ct;ct=cts[j++];){ | ||
| 30 | + if (ct.mileageType=="service" && !ct.destroy) | ||
| 31 | + sum = gb_common.accAdd(sum, ct.mileage); | ||
| 32 | + } | ||
| 33 | + } | ||
| 34 | + else if(!sch.fcsjActual || !sch.zdsjActual) | ||
| 35 | + continue; | ||
| 36 | + else | ||
| 37 | + sum = gb_common.accAdd(sum, sch.jhlc); | ||
| 38 | + } | ||
| 39 | + | ||
| 40 | + return sum; | ||
| 41 | + }, | ||
| 42 | + destroyMileage: function (array) { | ||
| 43 | + var sum = 0; | ||
| 44 | + var cts; | ||
| 45 | + | ||
| 46 | + for(var i=0,sch;sch=array[i++];){ | ||
| 47 | + if (isInOut(sch) || sch.bcType=='ldks' || sch.sflj) | ||
| 48 | + continue; | ||
| 49 | + | ||
| 50 | + cts = sch['cTasks']; | ||
| 51 | + | ||
| 52 | + //有子任务 | ||
| 53 | + if (cts && cts.length > 0) { | ||
| 54 | + for(var j=0,ct;ct=cts[j++];){ | ||
| 55 | + if (ct.destroy && ct.mileageType=="service") | ||
| 56 | + sum = gb_common.accAdd(sum, ct.mileage); | ||
| 57 | + } | ||
| 58 | + }else if (sch.status == -1) | ||
| 59 | + sum = gb_common.accAdd(sum, sch.jhlcOrig); | ||
| 60 | + } | ||
| 61 | + | ||
| 62 | + return sum; | ||
| 63 | + }, | ||
| 64 | + emptyMileage: function (array) { | ||
| 65 | + var sum = 0; | ||
| 66 | + var cts; | ||
| 67 | + | ||
| 68 | + for(var i=0,sch;sch=array[i++];){ | ||
| 69 | + | ||
| 70 | + cts = sch['cTasks']; | ||
| 71 | + | ||
| 72 | + //有子任务 | ||
| 73 | + if (cts && cts.length > 0) { | ||
| 74 | + for(var j=0,ct;ct=cts[j++];){ | ||
| 75 | + if (!ct.destroy && ct.mileageType=="empty") | ||
| 76 | + sum = gb_common.accAdd(sum, ct.mileage); | ||
| 77 | + } | ||
| 78 | + } | ||
| 79 | + else if(!sch.fcsjActual || !sch.zdsjActual) | ||
| 80 | + continue; | ||
| 81 | + else if ((isInOut(sch) || sch.bcType=="ldks") && sch.status != -1) | ||
| 82 | + sum = gb_common.accAdd(sum, sch.jhlc); | ||
| 83 | + } | ||
| 84 | + | ||
| 85 | + return sum; | ||
| 86 | + } | ||
| 87 | + } | ||
| 88 | +})(); | ||
| 0 | \ No newline at end of file | 89 | \ No newline at end of file |