Commit 4ad64ba2cfcc0e1c234e84aed6807ab38e400069
Merge branch 'minhang' of http://222.66.0.204:8090/panzhaov5/bsth_control into minhang
# Conflicts: # src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task_v2/add_in_out.html
Showing
12 changed files
with
1632 additions
and
1609 deletions
src/main/java/com/bsth/data/Station2ParkBuffer.java
| 1 | -package com.bsth.data; | |
| 2 | - | |
| 3 | -import com.bsth.common.ResponseCode; | |
| 4 | -import com.bsth.entity.realcontrol.ChildTaskPlan; | |
| 5 | -import com.bsth.entity.realcontrol.StationToPark; | |
| 6 | -import com.bsth.repository.realcontrol.StationToParkRepository; | |
| 7 | -import com.bsth.util.Arith; | |
| 8 | -import com.google.common.collect.ArrayListMultimap; | |
| 9 | -import org.joda.time.format.DateTimeFormat; | |
| 10 | -import org.joda.time.format.DateTimeFormatter; | |
| 11 | -import org.slf4j.Logger; | |
| 12 | -import org.slf4j.LoggerFactory; | |
| 13 | -import org.springframework.beans.factory.annotation.Autowired; | |
| 14 | -import org.springframework.boot.CommandLineRunner; | |
| 15 | -import org.springframework.stereotype.Component; | |
| 16 | - | |
| 17 | -import java.util.*; | |
| 18 | - | |
| 19 | -/** | |
| 20 | - * 站到场 历时、公里 数据缓存 | |
| 21 | - * Created by panzhao on 2017/7/10. | |
| 22 | - */ | |
| 23 | -@Component | |
| 24 | -public class Station2ParkBuffer implements CommandLineRunner { | |
| 25 | - | |
| 26 | - @Autowired | |
| 27 | - StationToParkRepository stationToParkRepository; | |
| 28 | - | |
| 29 | - private static ArrayListMultimap listMultimap; | |
| 30 | - | |
| 31 | - private static Set<StationToPark> pstBuff; | |
| 32 | - | |
| 33 | - static Logger log = LoggerFactory.getLogger(Station2ParkBuffer.class); | |
| 34 | - | |
| 35 | - @Override | |
| 36 | - public void run(String... strings) throws Exception { | |
| 37 | - listMultimap = ArrayListMultimap.create(); | |
| 38 | - pstBuff = new HashSet<>(); | |
| 39 | - Iterator<StationToPark> iterator = stationToParkRepository.findAll().iterator(); | |
| 40 | - StationToPark stp; | |
| 41 | - while (iterator.hasNext()) { | |
| 42 | - stp = iterator.next(); | |
| 43 | - listMultimap.put(stp.getLineCode(), stp); | |
| 44 | - } | |
| 45 | - } | |
| 46 | - | |
| 47 | - public static List<StationToPark> get(String lineCode) { | |
| 48 | - return listMultimap.get(lineCode); | |
| 49 | - } | |
| 50 | - | |
| 51 | - public static StationToPark get(String lineCode, String sName, String eName) { | |
| 52 | - List<StationToPark> list = get(lineCode); | |
| 53 | - StationToPark stp = null; | |
| 54 | - for (StationToPark s : list) { | |
| 55 | - if (s.getStationName().equals(sName) && s.getParkName().equals(eName)) { | |
| 56 | - stp = s; | |
| 57 | - break; | |
| 58 | - } | |
| 59 | - } | |
| 60 | - return stp; | |
| 61 | - } | |
| 62 | - | |
| 63 | - private static DateTimeFormatter fmtHHmm = DateTimeFormat.forPattern("HH:mm"); | |
| 64 | - | |
| 65 | - public static void put(ChildTaskPlan ctask) { | |
| 66 | - try{ | |
| 67 | - String type2 = ctask.getType2(); | |
| 68 | - String lineCode = ctask.getSchedule().getXlBm(), sName, eName; | |
| 69 | - | |
| 70 | - if (type2.equals("2")) { | |
| 71 | - sName = ctask.getStartStationName(); | |
| 72 | - eName = ctask.getEndStationName(); | |
| 73 | - } else if (type2.equals("3")) { | |
| 74 | - eName = ctask.getStartStationName(); | |
| 75 | - sName = ctask.getEndStationName(); | |
| 76 | - } else | |
| 77 | - return; | |
| 78 | - | |
| 79 | - Float time = calcMinute(ctask); | |
| 80 | - Float mileage = ctask.getMileage(); | |
| 81 | - | |
| 82 | - StationToPark stp = get(lineCode, sName, eName); | |
| 83 | - if (stp == null) { | |
| 84 | - stp = new StationToPark(); | |
| 85 | - stp.setLineCode(lineCode); | |
| 86 | - stp.setStationName(sName); | |
| 87 | - stp.setParkName(eName); | |
| 88 | - listMultimap.put(lineCode, stp); | |
| 89 | - } | |
| 90 | - | |
| 91 | - if (type2.equals("2")) { | |
| 92 | - stp.setTime1(time); | |
| 93 | - stp.setMileage1(mileage); | |
| 94 | - } else { | |
| 95 | - stp.setTime2(time); | |
| 96 | - stp.setMileage2(mileage); | |
| 97 | - } | |
| 98 | - | |
| 99 | - pstBuff.add(stp); | |
| 100 | - }catch (Exception e){ | |
| 101 | - log.error("", e); | |
| 102 | - } | |
| 103 | - } | |
| 104 | - | |
| 105 | - public static Float calcMinute(ChildTaskPlan ctask) { | |
| 106 | - long t = 0; | |
| 107 | - | |
| 108 | - try { | |
| 109 | - long st = fmtHHmm.parseMillis(ctask.getStartDate()); | |
| 110 | - long et = fmtHHmm.parseMillis(ctask.getEndDate()); | |
| 111 | - | |
| 112 | - t = et - st; | |
| 113 | - } catch (Exception e) { | |
| 114 | - e.printStackTrace(); | |
| 115 | - } | |
| 116 | - return Float.parseFloat(String.valueOf(Arith.div(Arith.div(t, 1000), 60))); | |
| 117 | - } | |
| 118 | - | |
| 119 | - public void saveAll(){ | |
| 120 | - if(pstBuff.size()==0) | |
| 121 | - return; | |
| 122 | - Set<StationToPark> pstBuffCopy = pstBuff; | |
| 123 | - pstBuff = new HashSet<>(); | |
| 124 | - //持久化到数据库 | |
| 125 | - stationToParkRepository.save(pstBuffCopy); | |
| 126 | - } | |
| 127 | - | |
| 128 | - public Map<String, Object> delete(String lineCode, Integer id) { | |
| 129 | - Map<String, Object> rs = new HashMap<>(); | |
| 130 | - try { | |
| 131 | - List<StationToPark> list = listMultimap.get(lineCode); | |
| 132 | - | |
| 133 | - StationToPark stp = null; | |
| 134 | - for(StationToPark temp : list){ | |
| 135 | - if(temp.getId().equals(id)){ | |
| 136 | - stp=temp; | |
| 137 | - break; | |
| 138 | - } | |
| 139 | - } | |
| 140 | - | |
| 141 | - if(stp != null){ | |
| 142 | - listMultimap.remove(lineCode, stp); | |
| 143 | - stationToParkRepository.delete(id); | |
| 144 | - rs.put("status", ResponseCode.SUCCESS); | |
| 145 | - } | |
| 146 | - else{ | |
| 147 | - rs.put("status", ResponseCode.SUCCESS); | |
| 148 | - rs.put("msg", "操作失败,可能数据已经被删除!"); | |
| 149 | - } | |
| 150 | - | |
| 151 | - }catch (Exception e){ | |
| 152 | - rs.put("status", ResponseCode.ERROR); | |
| 153 | - rs.put("msg", e.getMessage()); | |
| 154 | - log.error("", e); | |
| 155 | - } | |
| 156 | - return rs; | |
| 157 | - } | |
| 158 | -} | |
| 1 | +package com.bsth.data; | |
| 2 | + | |
| 3 | +import com.bsth.common.ResponseCode; | |
| 4 | +import com.bsth.entity.realcontrol.ChildTaskPlan; | |
| 5 | +import com.bsth.entity.realcontrol.StationToPark; | |
| 6 | +import com.bsth.repository.realcontrol.StationToParkRepository; | |
| 7 | +import com.bsth.util.Arith; | |
| 8 | +import com.google.common.collect.ArrayListMultimap; | |
| 9 | +import org.joda.time.format.DateTimeFormat; | |
| 10 | +import org.joda.time.format.DateTimeFormatter; | |
| 11 | +import org.slf4j.Logger; | |
| 12 | +import org.slf4j.LoggerFactory; | |
| 13 | +import org.springframework.beans.factory.annotation.Autowired; | |
| 14 | +import org.springframework.boot.CommandLineRunner; | |
| 15 | +import org.springframework.stereotype.Component; | |
| 16 | + | |
| 17 | +import java.util.*; | |
| 18 | + | |
| 19 | +/** | |
| 20 | + * 站到场 历时、公里 数据缓存 | |
| 21 | + * Created by panzhao on 2017/7/10. | |
| 22 | + */ | |
| 23 | +@Component | |
| 24 | +public class Station2ParkBuffer implements CommandLineRunner { | |
| 25 | + | |
| 26 | + @Autowired | |
| 27 | + StationToParkRepository stationToParkRepository; | |
| 28 | + | |
| 29 | + private static ArrayListMultimap listMultimap; | |
| 30 | + | |
| 31 | + private static Set<StationToPark> pstBuff; | |
| 32 | + | |
| 33 | + static Logger log = LoggerFactory.getLogger(Station2ParkBuffer.class); | |
| 34 | + | |
| 35 | + @Override | |
| 36 | + public void run(String... strings) throws Exception { | |
| 37 | + listMultimap = ArrayListMultimap.create(); | |
| 38 | + pstBuff = new HashSet<>(); | |
| 39 | + Iterator<StationToPark> iterator = stationToParkRepository.findAll().iterator(); | |
| 40 | + StationToPark stp; | |
| 41 | + while (iterator.hasNext()) { | |
| 42 | + stp = iterator.next(); | |
| 43 | + listMultimap.put(stp.getLineCode(), stp); | |
| 44 | + } | |
| 45 | + } | |
| 46 | + | |
| 47 | + public static List<StationToPark> get(String lineCode) { | |
| 48 | + return listMultimap.get(lineCode); | |
| 49 | + } | |
| 50 | + | |
| 51 | + public static StationToPark get(String lineCode, String sName, String eName) { | |
| 52 | + List<StationToPark> list = get(lineCode); | |
| 53 | + StationToPark stp = null; | |
| 54 | + for (StationToPark s : list) { | |
| 55 | + if (s.getStationName().equals(sName) && s.getParkName().equals(eName)) { | |
| 56 | + stp = s; | |
| 57 | + break; | |
| 58 | + } | |
| 59 | + } | |
| 60 | + return stp; | |
| 61 | + } | |
| 62 | + | |
| 63 | + private static DateTimeFormatter fmtHHmm = DateTimeFormat.forPattern("HH:mm"); | |
| 64 | + | |
| 65 | + public static void put(ChildTaskPlan ctask) { | |
| 66 | + try{ | |
| 67 | + String type2 = ctask.getType2(); | |
| 68 | + String lineCode = ctask.getSchedule().getXlBm(), sName, eName; | |
| 69 | + | |
| 70 | + if (type2.equals("2")) { | |
| 71 | + sName = ctask.getStartStationName(); | |
| 72 | + eName = ctask.getEndStationName(); | |
| 73 | + } else if (type2.equals("3")) { | |
| 74 | + eName = ctask.getStartStationName(); | |
| 75 | + sName = ctask.getEndStationName(); | |
| 76 | + } else | |
| 77 | + return; | |
| 78 | + | |
| 79 | + Float time = calcMinute(ctask); | |
| 80 | + Float mileage = ctask.getMileage(); | |
| 81 | + | |
| 82 | + StationToPark stp = get(lineCode, sName, eName); | |
| 83 | + if (stp == null) { | |
| 84 | + stp = new StationToPark(); | |
| 85 | + stp.setLineCode(lineCode); | |
| 86 | + stp.setStationName(sName); | |
| 87 | + stp.setParkName(eName); | |
| 88 | + listMultimap.put(lineCode, stp); | |
| 89 | + } | |
| 90 | + | |
| 91 | + if (type2.equals("2")) { | |
| 92 | + stp.setTime1(time); | |
| 93 | + stp.setMileage1(mileage); | |
| 94 | + } else { | |
| 95 | + stp.setTime2(time); | |
| 96 | + stp.setMileage2(mileage); | |
| 97 | + } | |
| 98 | + | |
| 99 | + pstBuff.add(stp); | |
| 100 | + }catch (Exception e){ | |
| 101 | + log.error("", e); | |
| 102 | + } | |
| 103 | + } | |
| 104 | + | |
| 105 | + public static Float calcMinute(ChildTaskPlan ctask) { | |
| 106 | + long t = 0; | |
| 107 | + | |
| 108 | + try { | |
| 109 | + long st = fmtHHmm.parseMillis(ctask.getStartDate()); | |
| 110 | + long et = fmtHHmm.parseMillis(ctask.getEndDate()); | |
| 111 | + | |
| 112 | + t = et - st; | |
| 113 | + } catch (Exception e) { | |
| 114 | + e.printStackTrace(); | |
| 115 | + } | |
| 116 | + return Float.parseFloat(String.valueOf(Arith.div(Arith.div(t, 1000), 60))); | |
| 117 | + } | |
| 118 | + | |
| 119 | + public void saveAll(){ | |
| 120 | + if(pstBuff.size()==0) | |
| 121 | + return; | |
| 122 | + Set<StationToPark> pstBuffCopy = pstBuff; | |
| 123 | + pstBuff = new HashSet<>(); | |
| 124 | + //持久化到数据库 | |
| 125 | + stationToParkRepository.save(pstBuffCopy); | |
| 126 | + } | |
| 127 | + | |
| 128 | + public Map<String, Object> delete(String lineCode, Integer id) { | |
| 129 | + Map<String, Object> rs = new HashMap<>(); | |
| 130 | + try { | |
| 131 | + List<StationToPark> list = listMultimap.get(lineCode); | |
| 132 | + | |
| 133 | + StationToPark stp = null; | |
| 134 | + for(StationToPark temp : list){ | |
| 135 | + if(temp.getId().equals(id)){ | |
| 136 | + stp=temp; | |
| 137 | + break; | |
| 138 | + } | |
| 139 | + } | |
| 140 | + | |
| 141 | + if(stp != null){ | |
| 142 | + listMultimap.remove(lineCode, stp); | |
| 143 | + stationToParkRepository.delete(id); | |
| 144 | + rs.put("status", ResponseCode.SUCCESS); | |
| 145 | + } | |
| 146 | + else{ | |
| 147 | + rs.put("status", ResponseCode.SUCCESS); | |
| 148 | + rs.put("msg", "操作失败,可能数据已经被删除!"); | |
| 149 | + } | |
| 150 | + | |
| 151 | + }catch (Exception e){ | |
| 152 | + rs.put("status", ResponseCode.ERROR); | |
| 153 | + rs.put("msg", e.getMessage()); | |
| 154 | + log.error("", e); | |
| 155 | + } | |
| 156 | + return rs; | |
| 157 | + } | |
| 158 | +} | ... | ... |
src/main/java/com/bsth/data/schedule/edit_logs/loggers/AfterwardsLogger.java
| 1 | -package com.bsth.data.schedule.edit_logs.loggers; | |
| 2 | - | |
| 3 | -import com.alibaba.fastjson.JSONArray; | |
| 4 | -import com.alibaba.fastjson.JSONObject; | |
| 5 | -import com.bsth.data.schedule.edit_logs.ScheduleModifyLogger; | |
| 6 | -import com.bsth.entity.realcontrol.ScheduleRealInfo; | |
| 7 | -import org.slf4j.Logger; | |
| 8 | -import org.slf4j.LoggerFactory; | |
| 9 | - | |
| 10 | -/** | |
| 11 | - * 事后历史班次编辑 | |
| 12 | - * Created by panzhao on 2017/5/19. | |
| 13 | - */ | |
| 14 | -public class AfterwardsLogger { | |
| 15 | - | |
| 16 | - static Logger log = LoggerFactory.getLogger(AfterwardsLogger.class); | |
| 17 | - | |
| 18 | - private JSONArray jsonArray = new JSONArray(); | |
| 19 | - private String remarks; | |
| 20 | - private ScheduleRealInfo sch; | |
| 21 | - | |
| 22 | - public void log(String title, Object old, Object now){ | |
| 23 | - try { | |
| 24 | - | |
| 25 | - JSONObject jsonObject = new JSONObject(); | |
| 26 | - jsonObject.put("title", title); | |
| 27 | - jsonObject.put("old", old); | |
| 28 | - jsonObject.put("now", now); | |
| 29 | - | |
| 30 | - jsonArray.add(jsonObject); | |
| 31 | - }catch (Exception e){ | |
| 32 | - log.error("", e); | |
| 33 | - } | |
| 34 | - } | |
| 35 | - | |
| 36 | - public void log(String text){ | |
| 37 | - try { | |
| 38 | - JSONObject jsonObject = new JSONObject(); | |
| 39 | - jsonObject.put("title", text); | |
| 40 | - | |
| 41 | - jsonArray.add(jsonObject); | |
| 42 | - }catch (Exception e){ | |
| 43 | - log.error("", e); | |
| 44 | - } | |
| 45 | - } | |
| 46 | - | |
| 47 | - public static AfterwardsLogger start(ScheduleRealInfo sch, String remarks){ | |
| 48 | - AfterwardsLogger fLog = new AfterwardsLogger(); | |
| 49 | - fLog.setSch(sch); | |
| 50 | - fLog.setRemarks(remarks); | |
| 51 | - return fLog; | |
| 52 | - } | |
| 53 | - | |
| 54 | - public void end(){ | |
| 55 | - ScheduleModifyLogger.afterEdit(sch, this.remarks, jsonArray); | |
| 56 | - } | |
| 57 | - | |
| 58 | - public String getRemarks() { | |
| 59 | - return remarks; | |
| 60 | - } | |
| 61 | - | |
| 62 | - public void setRemarks(String remarks) { | |
| 63 | - this.remarks = remarks; | |
| 64 | - } | |
| 65 | - | |
| 66 | - public ScheduleRealInfo getSch() { | |
| 67 | - return sch; | |
| 68 | - } | |
| 69 | - | |
| 70 | - public void setSch(ScheduleRealInfo sch) { | |
| 71 | - this.sch = sch; | |
| 72 | - } | |
| 73 | -} | |
| 1 | +package com.bsth.data.schedule.edit_logs.loggers; | |
| 2 | + | |
| 3 | +import com.alibaba.fastjson.JSONArray; | |
| 4 | +import com.alibaba.fastjson.JSONObject; | |
| 5 | +import com.bsth.data.schedule.edit_logs.ScheduleModifyLogger; | |
| 6 | +import com.bsth.entity.realcontrol.ScheduleRealInfo; | |
| 7 | +import org.slf4j.Logger; | |
| 8 | +import org.slf4j.LoggerFactory; | |
| 9 | + | |
| 10 | +/** | |
| 11 | + * 事后历史班次编辑 | |
| 12 | + * Created by panzhao on 2017/5/19. | |
| 13 | + */ | |
| 14 | +public class AfterwardsLogger { | |
| 15 | + | |
| 16 | + static Logger log = LoggerFactory.getLogger(AfterwardsLogger.class); | |
| 17 | + | |
| 18 | + private JSONArray jsonArray = new JSONArray(); | |
| 19 | + private String remarks; | |
| 20 | + private ScheduleRealInfo sch; | |
| 21 | + | |
| 22 | + public void log(String title, Object old, Object now){ | |
| 23 | + try { | |
| 24 | + | |
| 25 | + JSONObject jsonObject = new JSONObject(); | |
| 26 | + jsonObject.put("title", title); | |
| 27 | + jsonObject.put("old", old); | |
| 28 | + jsonObject.put("now", now); | |
| 29 | + | |
| 30 | + jsonArray.add(jsonObject); | |
| 31 | + }catch (Exception e){ | |
| 32 | + log.error("", e); | |
| 33 | + } | |
| 34 | + } | |
| 35 | + | |
| 36 | + public void log(String text){ | |
| 37 | + try { | |
| 38 | + JSONObject jsonObject = new JSONObject(); | |
| 39 | + jsonObject.put("title", text); | |
| 40 | + | |
| 41 | + jsonArray.add(jsonObject); | |
| 42 | + }catch (Exception e){ | |
| 43 | + log.error("", e); | |
| 44 | + } | |
| 45 | + } | |
| 46 | + | |
| 47 | + public static AfterwardsLogger start(ScheduleRealInfo sch, String remarks){ | |
| 48 | + AfterwardsLogger fLog = new AfterwardsLogger(); | |
| 49 | + fLog.setSch(sch); | |
| 50 | + fLog.setRemarks(remarks); | |
| 51 | + return fLog; | |
| 52 | + } | |
| 53 | + | |
| 54 | + public void end(){ | |
| 55 | + ScheduleModifyLogger.afterEdit(sch, this.remarks, jsonArray); | |
| 56 | + } | |
| 57 | + | |
| 58 | + public String getRemarks() { | |
| 59 | + return remarks; | |
| 60 | + } | |
| 61 | + | |
| 62 | + public void setRemarks(String remarks) { | |
| 63 | + this.remarks = remarks; | |
| 64 | + } | |
| 65 | + | |
| 66 | + public ScheduleRealInfo getSch() { | |
| 67 | + return sch; | |
| 68 | + } | |
| 69 | + | |
| 70 | + public void setSch(ScheduleRealInfo sch) { | |
| 71 | + this.sch = sch; | |
| 72 | + } | |
| 73 | +} | ... | ... |
src/main/java/com/bsth/data/utils/CustomStringUtils.java
| 1 | -package com.bsth.data.utils; | |
| 2 | - | |
| 3 | -import org.apache.commons.lang3.StringUtils; | |
| 4 | - | |
| 5 | -/** | |
| 6 | - * Created by panzhao on 2017/7/10. | |
| 7 | - */ | |
| 8 | -public class CustomStringUtils { | |
| 9 | - | |
| 10 | - public static boolean equals(String s1, String s2){ | |
| 11 | - if(s1 == null){ | |
| 12 | - if(StringUtils.isNotEmpty(s2)) | |
| 13 | - return false; | |
| 14 | - else | |
| 15 | - return true; | |
| 16 | - } | |
| 17 | - return s1.equals(s2); | |
| 18 | - } | |
| 19 | -} | |
| 1 | +package com.bsth.data.utils; | |
| 2 | + | |
| 3 | +import org.apache.commons.lang3.StringUtils; | |
| 4 | + | |
| 5 | +/** | |
| 6 | + * Created by panzhao on 2017/7/10. | |
| 7 | + */ | |
| 8 | +public class CustomStringUtils { | |
| 9 | + | |
| 10 | + public static boolean equals(String s1, String s2){ | |
| 11 | + if(s1 == null){ | |
| 12 | + if(StringUtils.isNotEmpty(s2)) | |
| 13 | + return false; | |
| 14 | + else | |
| 15 | + return true; | |
| 16 | + } | |
| 17 | + return s1.equals(s2); | |
| 18 | + } | |
| 19 | +} | ... | ... |
src/main/java/com/bsth/entity/realcontrol/StationToPark.java
| 1 | -package com.bsth.entity.realcontrol; | |
| 2 | - | |
| 3 | -import javax.persistence.Entity; | |
| 4 | -import javax.persistence.GeneratedValue; | |
| 5 | -import javax.persistence.Id; | |
| 6 | -import javax.persistence.Table; | |
| 7 | - | |
| 8 | -/** | |
| 9 | - * 站 到 场 | |
| 10 | - * Created by panzhao on 2017/7/10. | |
| 11 | - */ | |
| 12 | -@Entity | |
| 13 | -@Table(name = "bsth_c_station_to_park") | |
| 14 | -public class StationToPark { | |
| 15 | - | |
| 16 | - @Id | |
| 17 | - @GeneratedValue | |
| 18 | - private Integer id; | |
| 19 | - | |
| 20 | - /** 线路编码 */ | |
| 21 | - private String lineCode; | |
| 22 | - | |
| 23 | - /** 站点名称 */ | |
| 24 | - private String stationName; | |
| 25 | - | |
| 26 | - /** 停车场编码 */ | |
| 27 | - private String parkName; | |
| 28 | - | |
| 29 | - /** 站到场时间(分钟) */ | |
| 30 | - private Float time1; | |
| 31 | - | |
| 32 | - /** 站到场公里 */ | |
| 33 | - private Float mileage1; | |
| 34 | - | |
| 35 | - /** 场到站时间(分钟) */ | |
| 36 | - private Float time2; | |
| 37 | - | |
| 38 | - /** 场到站公里 */ | |
| 39 | - private Float mileage2; | |
| 40 | - | |
| 41 | - /** 排序字段 */ | |
| 42 | - private int orderNo; | |
| 43 | - | |
| 44 | - public String getLineCode() { | |
| 45 | - return lineCode; | |
| 46 | - } | |
| 47 | - | |
| 48 | - public void setLineCode(String lineCode) { | |
| 49 | - this.lineCode = lineCode; | |
| 50 | - } | |
| 51 | - | |
| 52 | - public String getStationName() { | |
| 53 | - return stationName; | |
| 54 | - } | |
| 55 | - | |
| 56 | - public void setStationName(String stationName) { | |
| 57 | - this.stationName = stationName; | |
| 58 | - } | |
| 59 | - | |
| 60 | - | |
| 61 | - public Float getTime1() { | |
| 62 | - return time1; | |
| 63 | - } | |
| 64 | - | |
| 65 | - public void setTime1(Float time1) { | |
| 66 | - this.time1 = time1; | |
| 67 | - } | |
| 68 | - | |
| 69 | - public Float getMileage1() { | |
| 70 | - return mileage1; | |
| 71 | - } | |
| 72 | - | |
| 73 | - public void setMileage1(Float mileage1) { | |
| 74 | - this.mileage1 = mileage1; | |
| 75 | - } | |
| 76 | - | |
| 77 | - public Float getTime2() { | |
| 78 | - return time2; | |
| 79 | - } | |
| 80 | - | |
| 81 | - public void setTime2(Float time2) { | |
| 82 | - this.time2 = time2; | |
| 83 | - } | |
| 84 | - | |
| 85 | - public Float getMileage2() { | |
| 86 | - return mileage2; | |
| 87 | - } | |
| 88 | - | |
| 89 | - public void setMileage2(Float mileage2) { | |
| 90 | - this.mileage2 = mileage2; | |
| 91 | - } | |
| 92 | - | |
| 93 | - public Integer getId() { | |
| 94 | - return id; | |
| 95 | - } | |
| 96 | - | |
| 97 | - public void setId(Integer id) { | |
| 98 | - this.id = id; | |
| 99 | - } | |
| 100 | - | |
| 101 | - public int getOrderNo() { | |
| 102 | - return orderNo; | |
| 103 | - } | |
| 104 | - | |
| 105 | - public void setOrderNo(int orderNo) { | |
| 106 | - this.orderNo = orderNo; | |
| 107 | - } | |
| 108 | - | |
| 109 | - public String getParkName() { | |
| 110 | - return parkName; | |
| 111 | - } | |
| 112 | - | |
| 113 | - public void setParkName(String parkName) { | |
| 114 | - this.parkName = parkName; | |
| 115 | - } | |
| 116 | - | |
| 117 | - @Override | |
| 118 | - public int hashCode() { | |
| 119 | - return ("stp_" + this.toString()).hashCode(); | |
| 120 | - } | |
| 121 | - | |
| 122 | - @Override | |
| 123 | - public boolean equals(Object obj) { | |
| 124 | - return this.toString().equals(((StationToPark)obj).toString()); | |
| 125 | - } | |
| 126 | - | |
| 127 | - @Override | |
| 128 | - public String toString() { | |
| 129 | - return this.lineCode + "_" + this.getStationName() + "_" + this.getParkName(); | |
| 130 | - } | |
| 131 | -} | |
| 1 | +package com.bsth.entity.realcontrol; | |
| 2 | + | |
| 3 | +import javax.persistence.Entity; | |
| 4 | +import javax.persistence.GeneratedValue; | |
| 5 | +import javax.persistence.Id; | |
| 6 | +import javax.persistence.Table; | |
| 7 | + | |
| 8 | +/** | |
| 9 | + * 站 到 场 | |
| 10 | + * Created by panzhao on 2017/7/10. | |
| 11 | + */ | |
| 12 | +@Entity | |
| 13 | +@Table(name = "bsth_c_station_to_park") | |
| 14 | +public class StationToPark { | |
| 15 | + | |
| 16 | + @Id | |
| 17 | + @GeneratedValue | |
| 18 | + private Integer id; | |
| 19 | + | |
| 20 | + /** 线路编码 */ | |
| 21 | + private String lineCode; | |
| 22 | + | |
| 23 | + /** 站点名称 */ | |
| 24 | + private String stationName; | |
| 25 | + | |
| 26 | + /** 停车场编码 */ | |
| 27 | + private String parkName; | |
| 28 | + | |
| 29 | + /** 站到场时间(分钟) */ | |
| 30 | + private Float time1; | |
| 31 | + | |
| 32 | + /** 站到场公里 */ | |
| 33 | + private Float mileage1; | |
| 34 | + | |
| 35 | + /** 场到站时间(分钟) */ | |
| 36 | + private Float time2; | |
| 37 | + | |
| 38 | + /** 场到站公里 */ | |
| 39 | + private Float mileage2; | |
| 40 | + | |
| 41 | + /** 排序字段 */ | |
| 42 | + private int orderNo; | |
| 43 | + | |
| 44 | + public String getLineCode() { | |
| 45 | + return lineCode; | |
| 46 | + } | |
| 47 | + | |
| 48 | + public void setLineCode(String lineCode) { | |
| 49 | + this.lineCode = lineCode; | |
| 50 | + } | |
| 51 | + | |
| 52 | + public String getStationName() { | |
| 53 | + return stationName; | |
| 54 | + } | |
| 55 | + | |
| 56 | + public void setStationName(String stationName) { | |
| 57 | + this.stationName = stationName; | |
| 58 | + } | |
| 59 | + | |
| 60 | + | |
| 61 | + public Float getTime1() { | |
| 62 | + return time1; | |
| 63 | + } | |
| 64 | + | |
| 65 | + public void setTime1(Float time1) { | |
| 66 | + this.time1 = time1; | |
| 67 | + } | |
| 68 | + | |
| 69 | + public Float getMileage1() { | |
| 70 | + return mileage1; | |
| 71 | + } | |
| 72 | + | |
| 73 | + public void setMileage1(Float mileage1) { | |
| 74 | + this.mileage1 = mileage1; | |
| 75 | + } | |
| 76 | + | |
| 77 | + public Float getTime2() { | |
| 78 | + return time2; | |
| 79 | + } | |
| 80 | + | |
| 81 | + public void setTime2(Float time2) { | |
| 82 | + this.time2 = time2; | |
| 83 | + } | |
| 84 | + | |
| 85 | + public Float getMileage2() { | |
| 86 | + return mileage2; | |
| 87 | + } | |
| 88 | + | |
| 89 | + public void setMileage2(Float mileage2) { | |
| 90 | + this.mileage2 = mileage2; | |
| 91 | + } | |
| 92 | + | |
| 93 | + public Integer getId() { | |
| 94 | + return id; | |
| 95 | + } | |
| 96 | + | |
| 97 | + public void setId(Integer id) { | |
| 98 | + this.id = id; | |
| 99 | + } | |
| 100 | + | |
| 101 | + public int getOrderNo() { | |
| 102 | + return orderNo; | |
| 103 | + } | |
| 104 | + | |
| 105 | + public void setOrderNo(int orderNo) { | |
| 106 | + this.orderNo = orderNo; | |
| 107 | + } | |
| 108 | + | |
| 109 | + public String getParkName() { | |
| 110 | + return parkName; | |
| 111 | + } | |
| 112 | + | |
| 113 | + public void setParkName(String parkName) { | |
| 114 | + this.parkName = parkName; | |
| 115 | + } | |
| 116 | + | |
| 117 | + @Override | |
| 118 | + public int hashCode() { | |
| 119 | + return ("stp_" + this.toString()).hashCode(); | |
| 120 | + } | |
| 121 | + | |
| 122 | + @Override | |
| 123 | + public boolean equals(Object obj) { | |
| 124 | + return this.toString().equals(((StationToPark)obj).toString()); | |
| 125 | + } | |
| 126 | + | |
| 127 | + @Override | |
| 128 | + public String toString() { | |
| 129 | + return this.lineCode + "_" + this.getStationName() + "_" + this.getParkName(); | |
| 130 | + } | |
| 131 | +} | ... | ... |
src/main/java/com/bsth/repository/realcontrol/StationToParkRepository.java
| 1 | -package com.bsth.repository.realcontrol; | |
| 2 | - | |
| 3 | -import com.bsth.entity.realcontrol.StationToPark; | |
| 4 | -import com.bsth.repository.BaseRepository; | |
| 5 | -import org.springframework.stereotype.Repository; | |
| 6 | - | |
| 7 | -/** | |
| 8 | - * Created by panzhao on 2017/7/10. | |
| 9 | - */ | |
| 10 | -@Repository | |
| 11 | -public interface StationToParkRepository extends BaseRepository<StationToPark, Integer>{ | |
| 12 | -} | |
| 1 | +package com.bsth.repository.realcontrol; | |
| 2 | + | |
| 3 | +import com.bsth.entity.realcontrol.StationToPark; | |
| 4 | +import com.bsth.repository.BaseRepository; | |
| 5 | +import org.springframework.stereotype.Repository; | |
| 6 | + | |
| 7 | +/** | |
| 8 | + * Created by panzhao on 2017/7/10. | |
| 9 | + */ | |
| 10 | +@Repository | |
| 11 | +public interface StationToParkRepository extends BaseRepository<StationToPark, Integer>{ | |
| 12 | +} | ... | ... |
src/main/java/com/bsth/service/impl/StationRouteServiceImpl.java
| ... | ... | @@ -668,25 +668,23 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 668 | 668 | * @return String |
| 669 | 669 | */ |
| 670 | 670 | public String newTextFileToFTP(List<Object[]> objects,Integer lineId) { |
| 671 | - | |
| 672 | 671 | // 返回值String |
| 673 | 672 | String stationRStr = ""; |
| 674 | - | |
| 675 | 673 | // windows下的文本文件换行符 |
| 676 | 674 | //String enterStr = "\r\n"; |
| 677 | - | |
| 678 | 675 | // linux/unix下的文本文件换行符 |
| 679 | 676 | String enterStr = "\r"; |
| 680 | - | |
| 677 | + int defaultZdxh = 0; | |
| 681 | 678 | if(objects.size()>0) { |
| 682 | - | |
| 683 | 679 | for(int i = 0; i<objects.size();i++) { |
| 684 | - | |
| 680 | + defaultZdxh ++ ; | |
| 685 | 681 | // 经度 |
| 686 | - String lng = objects.get(i)[0].equals("") ? "" : objects.get(i)[0].toString(); | |
| 682 | + String lng = objects.get(i)[0].equals("") ? "0" : objects.get(i)[0].toString(); | |
| 687 | 683 | |
| 688 | 684 | // 纬度 |
| 689 | - String lat = objects.get(i)[1].equals("") ? "" : objects.get(i)[1].toString(); | |
| 685 | + String lat = objects.get(i)[1].equals("") ? "0" : objects.get(i)[1].toString(); | |
| 686 | + | |
| 687 | + Point point = new Point(Double.valueOf(lng), Double.valueOf(lat)); | |
| 690 | 688 | |
| 691 | 689 | lat = "\t" + lat; |
| 692 | 690 | |
| ... | ... | @@ -696,23 +694,32 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 696 | 694 | String stationMake = ""; |
| 697 | 695 | |
| 698 | 696 | if(stationMakeStr.equals("E")) { |
| 699 | - | |
| 700 | 697 | stationMake = "\t2"; |
| 701 | - | |
| 702 | 698 | }else { |
| 703 | - | |
| 704 | 699 | stationMake ="\t1"; |
| 705 | - | |
| 706 | 700 | } |
| 707 | 701 | |
| 708 | 702 | // 站点序号 |
| 709 | - String stationNo = objects.get(i)[4].equals("") ? "" : objects.get(i)[4].toString(); | |
| 703 | + // String stationNo = objects.get(i)[4].equals("") ? "" : objects.get(i)[4].toString(); | |
| 704 | + String stationNo = String.valueOf(defaultZdxh); | |
| 710 | 705 | |
| 711 | 706 | stationNo = "\t" + stationNo; |
| 712 | 707 | |
| 713 | 708 | // 站点编码 |
| 714 | 709 | String stationCode = objects.get(i)[5].equals("") ? "" : objects.get(i)[5].toString(); |
| 715 | 710 | |
| 711 | + int len = stationCode.length(); | |
| 712 | + if(len<8) { | |
| 713 | + int dx = 8 - len; | |
| 714 | + String addStr = ""; | |
| 715 | + for(int p =0;p<dx;p++) { | |
| 716 | + addStr = addStr + "0"; | |
| 717 | + } | |
| 718 | + stationCode = addStr + stationCode; | |
| 719 | + }else if(len>8){ | |
| 720 | + stationCode = stationCode.substring(8); | |
| 721 | + } | |
| 722 | + | |
| 716 | 723 | stationCode = "\t" +stationCode; |
| 717 | 724 | |
| 718 | 725 | double dis = objects.get(i)[6]==null ? 0.0 : Double.parseDouble(objects.get(i)[6].toString())*1000; |
| ... | ... | @@ -732,41 +739,33 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 732 | 739 | |
| 733 | 740 | // 限速 |
| 734 | 741 | String sleepStr = ""; |
| 735 | - | |
| 736 | 742 | // 方向 |
| 737 | 743 | int directions = objects.get(i)[8]==null ? null : Integer.valueOf(objects.get(i)[8].toString()); |
| 738 | - | |
| 739 | 744 | /** 获取路段路由信息 @pararm:<lineId:线路ID;directions:方向> */ |
| 740 | 745 | List<Object[]> sobje = routeRepository.sectionRouteVector(lineId,directions); |
| 741 | - | |
| 742 | 746 | if(sobje.size()==1) { |
| 743 | - | |
| 744 | - double dsleepStr = sobje.get(0)[2] == null ? 60d : Double.valueOf(sobje.get(0)[2].toString()); | |
| 745 | - | |
| 746 | - sleepStr = "\t" + new DecimalFormat("0").format(dsleepStr); | |
| 747 | - | |
| 747 | + int dsleepStr = sobje.get(0)[2] == null || sobje.get(0)[2].equals("") ? 60 : Integer.valueOf(sobje.get(0)[2].toString()); | |
| 748 | + sleepStr = "\t" + String.valueOf(dsleepStr); | |
| 748 | 749 | }else if(sobje.size()>1){ |
| 749 | - | |
| 750 | - /** 这里暂时只根据站点名称去匹配所在路段的限速值 ,如果路段名称"至"之前的地名与站点名称等同,就认为站点在路段上。 */ | |
| 751 | 750 | for(int j =0;j<sobje.size();j++) { |
| 752 | - | |
| 753 | - String sectionName = sobje.get(j)[3].toString(); | |
| 754 | - | |
| 755 | - String sectionNameA[] = sectionName.split("至"); | |
| 756 | - | |
| 757 | - if(stationName.equals(sectionNameA[0])){ | |
| 758 | - | |
| 759 | - /*sleepStr = sobje.get(j)[2].toString();*/ | |
| 760 | - | |
| 761 | - double dsleepStrt = sobje.get(0)[2] == null ? 60d : Double.valueOf(sobje.get(j)[2].toString()); | |
| 762 | - | |
| 763 | - sleepStr = "\t" + new DecimalFormat("0").format(dsleepStrt); | |
| 764 | - | |
| 751 | + double dsleepStrt = sobje.get(j)[2] == null || sobje.get(j)[2].equals("") ? 60d : Double.valueOf(sobje.get(j)[2].toString()); | |
| 752 | + String pointsStr = sobje.get(j)[1]==null || sobje.get(j)[1].equals("") ? null : sobje.get(j)[1].toString(); | |
| 753 | + pointsStr = pointsStr.substring(11, pointsStr.length()-1); | |
| 754 | + List<Point> ps = new ArrayList<>(); | |
| 755 | + String[] pArray = pointsStr.split(","); | |
| 756 | + for(int a = 0; a <pArray.length; a++) { | |
| 757 | + String[] tmepA = pArray[a].split(" "); | |
| 758 | + Point temp = new Point(Double.valueOf(tmepA[0]), Double.valueOf(tmepA[1])); | |
| 759 | + ps.add(temp); | |
| 760 | + } | |
| 761 | + if(GeoUtils.isInSection(ps, point)) { | |
| 762 | + sleepStr = "\t" + String.valueOf((int)dsleepStrt); | |
| 763 | + break; | |
| 765 | 764 | } |
| 766 | - | |
| 767 | 765 | } |
| 768 | 766 | } |
| 769 | - | |
| 767 | + if(sleepStr.equals("")) | |
| 768 | + sleepStr = "\t" + "60"; | |
| 770 | 769 | stationRStr = stationRStr + lng + lat + stationMake + stationNo + stationCode + staitondistance + sleepStr + stationName + enterStr; |
| 771 | 770 | } |
| 772 | 771 | |
| ... | ... | @@ -785,9 +784,12 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 785 | 784 | for(int i = 0; i<objects.size();i++) { |
| 786 | 785 | if(Integer.valueOf(objects.get(i)[8].toString())==0) { |
| 787 | 786 | // 经度 |
| 788 | - String lng = objects.get(i)[0].equals("") ? "" : objects.get(i)[0].toString(); | |
| 787 | + String lng = objects.get(i)[0].equals("") ? "0" : objects.get(i)[0].toString(); | |
| 788 | + | |
| 789 | 789 | // 纬度 |
| 790 | - String lat = objects.get(i)[1].equals("") ? "" : objects.get(i)[1].toString(); | |
| 790 | + String lat = objects.get(i)[1].equals("") ? "0" : objects.get(i)[1].toString(); | |
| 791 | + | |
| 792 | + Point point = new Point(Double.valueOf(lng), Double.valueOf(lat)); | |
| 791 | 793 | lat = "\t" + lat; |
| 792 | 794 | // 站点类型 |
| 793 | 795 | String stationMakeStr = objects.get(i)[3].equals("") ? "" : objects.get(i)[3].toString(); |
| ... | ... | @@ -802,6 +804,17 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 802 | 804 | String stationNo = "\t" + xh; |
| 803 | 805 | // 站点编码 |
| 804 | 806 | String stationCode = objects.get(i)[5].equals("") ? "" : objects.get(i)[5].toString(); |
| 807 | + int len = stationCode.length(); | |
| 808 | + if(len<8) { | |
| 809 | + int dx = 8 - len; | |
| 810 | + String addStr = ""; | |
| 811 | + for(int p =0;p<dx;p++) { | |
| 812 | + addStr = addStr + "0"; | |
| 813 | + } | |
| 814 | + stationCode = addStr + stationCode; | |
| 815 | + }else if(len>8){ | |
| 816 | + stationCode = stationCode.substring(8); | |
| 817 | + } | |
| 805 | 818 | stationCode = "\t" +stationCode; |
| 806 | 819 | double dis = objects.get(i)[6]==null ? 0.0 : Double.parseDouble(objects.get(i)[6].toString())*1000; |
| 807 | 820 | String tempDistc = String.valueOf((int) dis); |
| ... | ... | @@ -817,20 +830,28 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 817 | 830 | /** 获取路段路由信息 @pararm:<lineId:线路ID;directions:方向> */ |
| 818 | 831 | List<Object[]> sobje = routeRepository.sectionRouteVector(lineId,directions); |
| 819 | 832 | if(sobje.size()==1) { |
| 820 | - double dsleepStr = sobje.get(0)[2] == null ? 60d : Double.valueOf(sobje.get(0)[2].toString()); | |
| 821 | - sleepStr = "\t" + new DecimalFormat("0").format(dsleepStr); | |
| 833 | + int dsleepStr = sobje.get(0)[2] == null || sobje.get(0)[2].equals("") ? 60 : Integer.valueOf(sobje.get(0)[2].toString()); | |
| 834 | + sleepStr = "\t" + String.valueOf(dsleepStr); | |
| 822 | 835 | }else if(sobje.size()>1){ |
| 823 | - /** 这里暂时只根据站点名称去匹配所在路段的限速值 ,如果路段名称"至"之前的地名与站点名称等同,就认为站点在路段上。 */ | |
| 824 | 836 | for(int j =0;j<sobje.size();j++) { |
| 825 | - String sectionName = sobje.get(j)[3].toString(); | |
| 826 | - String sectionNameA[] = sectionName.split("至"); | |
| 827 | - if(stationName.equals(sectionNameA[0])){ | |
| 828 | - /*sleepStr = sobje.get(j)[2].toString();*/ | |
| 829 | - double dsleepStrt = sobje.get(0)[2] == null ? 60d : Double.valueOf(sobje.get(j)[2].toString()); | |
| 830 | - sleepStr = "\t" + new DecimalFormat("0").format(dsleepStrt); | |
| 837 | + double dsleepStrt = sobje.get(j)[2] == null || sobje.get(j)[2].equals("") ? 60d : Double.valueOf(sobje.get(j)[2].toString()); | |
| 838 | + String pointsStr = sobje.get(j)[1]==null || sobje.get(j)[1].equals("") ? null : sobje.get(j)[1].toString(); | |
| 839 | + pointsStr = pointsStr.substring(11, pointsStr.length()-1); | |
| 840 | + List<Point> ps = new ArrayList<>(); | |
| 841 | + String[] pArray = pointsStr.split(","); | |
| 842 | + for(int a = 0; a <pArray.length; a++) { | |
| 843 | + String[] tmepA = pArray[a].split(" "); | |
| 844 | + Point temp = new Point(Double.valueOf(tmepA[0]), Double.valueOf(tmepA[1])); | |
| 845 | + ps.add(temp); | |
| 846 | + } | |
| 847 | + if(GeoUtils.isInSection(ps, point)) { | |
| 848 | + sleepStr = "\t" + String.valueOf((int)dsleepStrt); | |
| 849 | + break; | |
| 831 | 850 | } |
| 832 | 851 | } |
| 833 | 852 | } |
| 853 | + if(sleepStr.equals("")) | |
| 854 | + sleepStr = "\t" + "60"; | |
| 834 | 855 | xh++; |
| 835 | 856 | restStr = restStr + lng + lat + stationMake + stationNo + stationCode + staitondistance + sleepStr + stationName + enterStr; |
| 836 | 857 | } | ... | ... |
src/main/java/com/bsth/service/impl/TrafficManageServiceImpl.java
| ... | ... | @@ -24,6 +24,7 @@ import com.bsth.webService.trafficManage.geotool.services.Internal; |
| 24 | 24 | import com.bsth.webService.trafficManage.org.tempuri.Results; |
| 25 | 25 | import com.bsth.webService.trafficManage.org.tempuri.WebServiceLocator; |
| 26 | 26 | import com.bsth.webService.trafficManage.org.tempuri.WebServiceSoap; |
| 27 | +import org.apache.commons.lang.StringUtils; | |
| 27 | 28 | import org.apache.commons.lang.time.DateUtils; |
| 28 | 29 | import org.slf4j.Logger; |
| 29 | 30 | import org.slf4j.LoggerFactory; |
| ... | ... | @@ -1125,11 +1126,14 @@ public class TrafficManageServiceImpl implements TrafficManageService{ |
| 1125 | 1126 | }else{ |
| 1126 | 1127 | flag = 0; |
| 1127 | 1128 | } |
| 1128 | - result += flag; | |
| 1129 | - if(i !=ruleDayArray.length -1){ | |
| 1130 | - result +=","; | |
| 1129 | + if(flag > 0){ | |
| 1130 | + result += flag + ","; | |
| 1131 | 1131 | } |
| 1132 | 1132 | } |
| 1133 | + // 去掉最后一个字符 | |
| 1134 | + if(StringUtils.endsWith(result,",")){ | |
| 1135 | + result = StringUtils.removeEnd(result,","); | |
| 1136 | + } | |
| 1133 | 1137 | return result; |
| 1134 | 1138 | } |
| 1135 | 1139 | /** | ... | ... |
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
| ... | ... | @@ -2577,11 +2577,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 2577 | 2577 | if (a == 2) { |
| 2578 | 2578 | x = b + 1; |
| 2579 | 2579 | y = x * 2; |
| 2580 | - ; | |
| 2581 | 2580 | } else if (b == 1) { |
| 2582 | 2581 | x = b + 1; |
| 2583 | 2582 | y = x * 2 - 1; |
| 2584 | - ; | |
| 2585 | 2583 | } else { |
| 2586 | 2584 | x = b; |
| 2587 | 2585 | y = 2 * x; | ... | ... |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task_v2/add_custom.html
| 1 | -<div class="add_custom_wrap"> | |
| 2 | - <div class="forms"></div> | |
| 3 | - <span class="plus_icon_span"> | |
| 4 | - <i class="uk-icon-plus"></i> | |
| 5 | - </span> | |
| 6 | - <form class="uk-form remarks_form"> | |
| 7 | - <div class="uk-grid"> | |
| 8 | - <div class="uk-width-1-1"> | |
| 9 | - <div class="uk-form-row ct-stacked"> | |
| 10 | - <div class="uk-form-controls" style="margin-top: 5px;"> | |
| 11 | - <textarea id="form-s-t" rows="4" name="remarks" data-fv-stringlength="true" style="width: 100%;" | |
| 12 | - data-fv-stringlength-max="50" placeholder="备注,不超过50个字符"></textarea> | |
| 13 | - </div> | |
| 14 | - </div> | |
| 15 | - </div> | |
| 16 | - </div> | |
| 17 | - </form> | |
| 18 | - <div class="uk-modal-footer uk-text-right" style="margin-top: 5px;"> | |
| 19 | - <button type="button" class="uk-button uk-modal-close">取消</button> | |
| 20 | - <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> 保存</button> | |
| 21 | - </div> | |
| 22 | - | |
| 23 | - <script> | |
| 24 | - (function () { | |
| 25 | - var wrap = '#add-sub-task-main-modal .add_custom_wrap', | |
| 26 | - sch, fs=[]; | |
| 27 | - | |
| 28 | - $(wrap).on('init', function (e, data) { | |
| 29 | - e.stopPropagation(); | |
| 30 | - sch = data.sch; | |
| 31 | - $('.plus_icon_span', wrap).trigger('click'); | |
| 32 | - }); | |
| 33 | - | |
| 34 | - //plsu icon | |
| 35 | - $('.plus_icon_span', wrap).on('click', addTaskForm); | |
| 36 | - | |
| 37 | - var bcTypeMap = {'in': 2, 'out': 3, 'normal': 1}; | |
| 38 | - function addTaskForm() { | |
| 39 | - var htmlStr = template('sub-task-v2-form-temp', {sch: sch}) | |
| 40 | - var f = $(htmlStr); | |
| 41 | - $('.forms', wrap).append(f); | |
| 42 | - //字典转换 | |
| 43 | - dictionaryUtils.transformDom($('.nt-dictionary', f)); | |
| 44 | - | |
| 45 | - //班次类型切换 | |
| 46 | - if(bcTypeMap[sch.bcType]) | |
| 47 | - $('[name=type2]', f).val(bcTypeMap[sch.bcType]) | |
| 48 | - $('[name=type2]', f).trigger('change'); | |
| 49 | - | |
| 50 | - //滚动条到底 | |
| 51 | - $('.forms', wrap).scrollTop($('.forms', wrap)[0].scrollHeight); | |
| 52 | - | |
| 53 | - //起点站trigger change | |
| 54 | - $('[name=startStation]',f).trigger('change'); | |
| 55 | - | |
| 56 | - f.prev('.sub_task_form_v2').find('[name=endDate]').trigger('input'); | |
| 57 | - | |
| 58 | - f.formValidation({ | |
| 59 | - framework: 'uikit', | |
| 60 | - locale: 'zh_CN' | |
| 61 | - }).on('add_reason_field', function () { | |
| 62 | - $(this).formValidation('addField', 'reason'); | |
| 63 | - }); | |
| 64 | - } | |
| 65 | - | |
| 66 | - //提交 | |
| 67 | - $('button[type=submit]', wrap).on('click', function () { | |
| 68 | - $(this).addClass('disabled').attr('disabled','disabled'); | |
| 69 | - dataArray = []; | |
| 70 | - $('form.sub_task_form_v2', wrap).data('valid', false) | |
| 71 | - .formValidation('validate'); | |
| 72 | - }); | |
| 73 | - | |
| 74 | - var dataArray = []; | |
| 75 | - $(wrap).on('success.form.fv', 'form.sub_task_form_v2', function (e) { | |
| 76 | - e.preventDefault(); | |
| 77 | - | |
| 78 | - dataArray.push($.extend($(this).serializeJSON(), gb_common.getDisabledVal(this) | |
| 79 | - , {remarks: $('#form-s-t',wrap).val(), 'schedule.id': sch.id})); | |
| 80 | - $(this).data('valid', true); | |
| 81 | - | |
| 82 | - if(allValidSuccess()){ | |
| 83 | - var i = 0, rst; | |
| 84 | - (function () { | |
| 85 | - var f = arguments.callee; | |
| 86 | - if(i >= dataArray.length){ | |
| 87 | - //完成后更新前端数据 | |
| 88 | - gb_schedule_table.updateSchedule(rst); | |
| 89 | - UIkit.modal('#add-sub-task-main-modal').hide(); | |
| 90 | - $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch}); | |
| 91 | - gb_data_basic.reload_stat_park_data(); | |
| 92 | - return; | |
| 93 | - } | |
| 94 | - var data = dataArray[i]; | |
| 95 | - //里程为0的不保存 | |
| 96 | - if(data.mileage==0){ | |
| 97 | - i++; | |
| 98 | - f(); | |
| 99 | - } | |
| 100 | - else{ | |
| 101 | - //营运子任务不写备注 | |
| 102 | - if(data.mileageType == 'service' && !data.destroy) | |
| 103 | - data.remarks = ''; | |
| 104 | - gb_common.$post('/childTask', data, function (rs) { | |
| 105 | - notify_succ('子任务添加成功'); | |
| 106 | - rst = rs.t; | |
| 107 | - i++; | |
| 108 | - f(); | |
| 109 | - }); | |
| 110 | - } | |
| 111 | - })(); | |
| 112 | - } | |
| 113 | - }); | |
| 114 | - //校验不过 | |
| 115 | - $(wrap).on('err.field.fv','form.sub_task_form_v2', function () { | |
| 116 | - $('button[type=submit]', wrap).removeClass('disabled').removeAttr('disabled'); | |
| 117 | - }); | |
| 118 | - | |
| 119 | - function allValidSuccess() { | |
| 120 | - var flag = true; | |
| 121 | - $('form.sub_task_form_v2', wrap).each(function (i, f) { | |
| 122 | - if(!$(f).data('valid')){ | |
| 123 | - flag = false; | |
| 124 | - return false; | |
| 125 | - } | |
| 126 | - }); | |
| 127 | - return flag; | |
| 128 | - } | |
| 129 | - | |
| 130 | - function $f(name, f) { | |
| 131 | - return $('[name=' + name + ']', f); | |
| 132 | - } | |
| 133 | - })(); | |
| 134 | - </script> | |
| 1 | +<div class="add_custom_wrap"> | |
| 2 | + <div class="forms"></div> | |
| 3 | + <span class="plus_icon_span"> | |
| 4 | + <i class="uk-icon-plus"></i> | |
| 5 | + </span> | |
| 6 | + <form class="uk-form remarks_form"> | |
| 7 | + <div class="uk-grid"> | |
| 8 | + <div class="uk-width-1-1"> | |
| 9 | + <div class="uk-form-row ct-stacked"> | |
| 10 | + <div class="uk-form-controls" style="margin-top: 5px;"> | |
| 11 | + <textarea id="form-s-t" rows="4" name="remarks" data-fv-stringlength="true" style="width: 100%;" | |
| 12 | + data-fv-stringlength-max="50" placeholder="备注,不超过50个字符"></textarea> | |
| 13 | + </div> | |
| 14 | + </div> | |
| 15 | + </div> | |
| 16 | + </div> | |
| 17 | + </form> | |
| 18 | + <div class="uk-modal-footer uk-text-right" style="margin-top: 5px;"> | |
| 19 | + <button type="button" class="uk-button uk-modal-close">取消</button> | |
| 20 | + <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> 保存</button> | |
| 21 | + </div> | |
| 22 | + | |
| 23 | + <script> | |
| 24 | + (function () { | |
| 25 | + var wrap = '#add-sub-task-main-modal .add_custom_wrap', | |
| 26 | + sch, fs=[]; | |
| 27 | + | |
| 28 | + $(wrap).on('init', function (e, data) { | |
| 29 | + e.stopPropagation(); | |
| 30 | + sch = data.sch; | |
| 31 | + $('.plus_icon_span', wrap).trigger('click'); | |
| 32 | + }); | |
| 33 | + | |
| 34 | + //plsu icon | |
| 35 | + $('.plus_icon_span', wrap).on('click', addTaskForm); | |
| 36 | + | |
| 37 | + var bcTypeMap = {'in': 2, 'out': 3, 'normal': 1}; | |
| 38 | + function addTaskForm() { | |
| 39 | + var htmlStr = template('sub-task-v2-form-temp', {sch: sch}) | |
| 40 | + var f = $(htmlStr); | |
| 41 | + $('.forms', wrap).append(f); | |
| 42 | + //字典转换 | |
| 43 | + dictionaryUtils.transformDom($('.nt-dictionary', f)); | |
| 44 | + | |
| 45 | + //班次类型切换 | |
| 46 | + if(bcTypeMap[sch.bcType]) | |
| 47 | + $('[name=type2]', f).val(bcTypeMap[sch.bcType]) | |
| 48 | + $('[name=type2]', f).trigger('change'); | |
| 49 | + | |
| 50 | + //滚动条到底 | |
| 51 | + $('.forms', wrap).scrollTop($('.forms', wrap)[0].scrollHeight); | |
| 52 | + | |
| 53 | + //起点站trigger change | |
| 54 | + $('[name=startStation]',f).trigger('change'); | |
| 55 | + | |
| 56 | + f.prev('.sub_task_form_v2').find('[name=endDate]').trigger('input'); | |
| 57 | + | |
| 58 | + f.formValidation({ | |
| 59 | + framework: 'uikit', | |
| 60 | + locale: 'zh_CN' | |
| 61 | + }).on('add_reason_field', function () { | |
| 62 | + $(this).formValidation('addField', 'reason'); | |
| 63 | + }); | |
| 64 | + } | |
| 65 | + | |
| 66 | + //提交 | |
| 67 | + $('button[type=submit]', wrap).on('click', function () { | |
| 68 | + $(this).addClass('disabled').attr('disabled','disabled'); | |
| 69 | + dataArray = []; | |
| 70 | + $('form.sub_task_form_v2', wrap).data('valid', false) | |
| 71 | + .formValidation('validate'); | |
| 72 | + }); | |
| 73 | + | |
| 74 | + var dataArray = []; | |
| 75 | + $(wrap).on('success.form.fv', 'form.sub_task_form_v2', function (e) { | |
| 76 | + e.preventDefault(); | |
| 77 | + | |
| 78 | + dataArray.push($.extend($(this).serializeJSON(), gb_common.getDisabledVal(this) | |
| 79 | + , {remarks: $('#form-s-t',wrap).val(), 'schedule.id': sch.id})); | |
| 80 | + $(this).data('valid', true); | |
| 81 | + | |
| 82 | + if(allValidSuccess()){ | |
| 83 | + var i = 0, rst; | |
| 84 | + (function () { | |
| 85 | + var f = arguments.callee; | |
| 86 | + if(i >= dataArray.length){ | |
| 87 | + //完成后更新前端数据 | |
| 88 | + gb_schedule_table.updateSchedule(rst); | |
| 89 | + UIkit.modal('#add-sub-task-main-modal').hide(); | |
| 90 | + $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch}); | |
| 91 | + gb_data_basic.reload_stat_park_data(); | |
| 92 | + return; | |
| 93 | + } | |
| 94 | + var data = dataArray[i]; | |
| 95 | + //里程为0的不保存 | |
| 96 | + if(data.mileage==0){ | |
| 97 | + i++; | |
| 98 | + f(); | |
| 99 | + } | |
| 100 | + else{ | |
| 101 | + //营运子任务不写备注 | |
| 102 | + if(data.mileageType == 'service' && !data.destroy) | |
| 103 | + data.remarks = ''; | |
| 104 | + gb_common.$post('/childTask', data, function (rs) { | |
| 105 | + notify_succ('子任务添加成功'); | |
| 106 | + rst = rs.t; | |
| 107 | + i++; | |
| 108 | + f(); | |
| 109 | + }); | |
| 110 | + } | |
| 111 | + })(); | |
| 112 | + } | |
| 113 | + }); | |
| 114 | + //校验不过 | |
| 115 | + $(wrap).on('err.field.fv','form.sub_task_form_v2', function () { | |
| 116 | + $('button[type=submit]', wrap).removeClass('disabled').removeAttr('disabled'); | |
| 117 | + }); | |
| 118 | + | |
| 119 | + function allValidSuccess() { | |
| 120 | + var flag = true; | |
| 121 | + $('form.sub_task_form_v2', wrap).each(function (i, f) { | |
| 122 | + if(!$(f).data('valid')){ | |
| 123 | + flag = false; | |
| 124 | + return false; | |
| 125 | + } | |
| 126 | + }); | |
| 127 | + return flag; | |
| 128 | + } | |
| 129 | + | |
| 130 | + function $f(name, f) { | |
| 131 | + return $('[name=' + name + ']', f); | |
| 132 | + } | |
| 133 | + })(); | |
| 134 | + </script> | |
| 135 | 135 | </div> |
| 136 | 136 | \ No newline at end of file | ... | ... |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task_v2/add_range_turn.html
| 1 | -<div class="add_range_wrap"> | |
| 2 | - <div> | |
| 3 | - <form class="uk-form uk-form-horizontal st_range_top_form"> | |
| 4 | - <div class="uk-grid"> | |
| 5 | - <div class="uk-width-1-3"> | |
| 6 | - <div class="uk-form-row" style="padding-left: 10px;"> | |
| 7 | - <label class="uk-form-label">调头站点</label> | |
| 8 | - <div class="uk-form-controls"> | |
| 9 | - <select id="turnStationSelect"> | |
| 10 | - <option value="">请选择...</option> | |
| 11 | - </select> | |
| 12 | - </div> | |
| 13 | - </div> | |
| 14 | - </div> | |
| 15 | - <div class="uk-width-1-3"> | |
| 16 | - <div class="uk-form-row"> | |
| 17 | - <label class="uk-form-label">调头原因</label> | |
| 18 | - <div class="uk-form-controls"> | |
| 19 | - <select id="turnReason" style="width: calc(100% - 13px);"> | |
| 20 | - <option value="">请选择...</option> | |
| 21 | - </select> | |
| 22 | - </div> | |
| 23 | - </div> | |
| 24 | - </div> | |
| 25 | - <div class="uk-width-1-3" style="padding: 28px 0 0 28px;"> | |
| 26 | - <label id="emptyTurnCbox"></label> | |
| 27 | - </div> | |
| 28 | - </div> | |
| 29 | - </form> | |
| 30 | - </div> | |
| 31 | - | |
| 32 | - <div class="forms"></div> | |
| 33 | - <form class="uk-form remarks_form"> | |
| 34 | - <div class="uk-grid"> | |
| 35 | - <div class="uk-width-1-1"> | |
| 36 | - <div class="uk-form-row ct-stacked"> | |
| 37 | - <div class="uk-form-controls" style="margin-top: 5px;"> | |
| 38 | - <textarea id="form-s-t" rows="4" name="remarks" data-fv-stringlength="true" style="width: 100%;" | |
| 39 | - data-fv-stringlength-max="50" placeholder="备注,不超过50个字符"></textarea> | |
| 40 | - </div> | |
| 41 | - </div> | |
| 42 | - </div> | |
| 43 | - </div> | |
| 44 | - </form> | |
| 45 | - <div class="uk-modal-footer uk-text-right" style="margin-top: 5px;"> | |
| 46 | - <button type="button" class="uk-button uk-modal-close">取消</button> | |
| 47 | - <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> 保存</button> | |
| 48 | - </div> | |
| 49 | - | |
| 50 | - <script> | |
| 51 | - (function () { | |
| 52 | - var wrap = '#add-sub-task-main-modal .add_range_wrap', | |
| 53 | - sch, nextSch, stationRoutes, f1, f2, df1, df2, topf = $('.st_range_top_form', wrap); | |
| 54 | - | |
| 55 | - $(wrap).on('init', function (e, data) { | |
| 56 | - e.stopPropagation(); | |
| 57 | - sch = data.sch; | |
| 58 | - nextSch = gb_schedule_table.getNextNormalSch(sch); | |
| 59 | - if(!nextSch || nextSch.bcType!='normal'){ | |
| 60 | - $(wrap).html('<div class="err_panel">无法做区间调头,原因是没有找到返程班次!</div>'); | |
| 61 | - return; | |
| 62 | - } | |
| 63 | - | |
| 64 | - //站点路由 | |
| 65 | - stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) { | |
| 66 | - return a.stationRouteCode - b.stationRouteCode; | |
| 67 | - }), 'directions'); | |
| 68 | - //第一段营运 | |
| 69 | - f1 = addTaskForm(); | |
| 70 | - $f('startStation', f1).trigger('change'); | |
| 71 | - | |
| 72 | - disabled_form(f1); | |
| 73 | - $('.domains', f1).empty(); | |
| 74 | - //top form 站点select | |
| 75 | - $('#turnStationSelect', topf).append($f('startStation', f1).html()).on('change', changeTurnStation); | |
| 76 | - //top form 原因select | |
| 77 | - var opts = ''; | |
| 78 | - $.each(gb_common.adjustExps, function () { | |
| 79 | - opts += '<option value="' + this + '">' + this + '</option>'; | |
| 80 | - }); | |
| 81 | - $('#turnReason', topf).append(opts).on('change', changeTurnReason); | |
| 82 | - //调头空驶 | |
| 83 | - $('#emptyTurnCbox',topf).html('<input type="checkbox"> 调头空驶回 ' + sch.qdzName); | |
| 84 | - $('#emptyTurnCbox input',topf).on('click', emptyTurn); | |
| 85 | - }); | |
| 86 | - | |
| 87 | - | |
| 88 | - function addTaskForm() { | |
| 89 | - var htmlStr = template('sub-task-v2-form-temp', {sch: sch}); | |
| 90 | - var f = $(htmlStr); | |
| 91 | - $('.forms', wrap).append(f); | |
| 92 | - //字典转换 | |
| 93 | - dictionaryUtils.transformDom($('.nt-dictionary', f)); | |
| 94 | - | |
| 95 | - //班次类型切换 | |
| 96 | - $('select[name=type2]', f).trigger('change'); | |
| 97 | - | |
| 98 | - //滚动条到底 | |
| 99 | - //$('.forms', wrap).scrollTop($('.forms', wrap)[0].scrollHeight); | |
| 100 | - | |
| 101 | - f.formValidation({ | |
| 102 | - framework: 'uikit', | |
| 103 | - locale: 'zh_CN' | |
| 104 | - }).on('add_reason_field', function () { | |
| 105 | - $(this).formValidation('addField', 'reason'); | |
| 106 | - }); | |
| 107 | - return f; | |
| 108 | - } | |
| 109 | - | |
| 110 | - function disabled_form(f) { | |
| 111 | - //$('input,select',f).attr('disabled', 'disabled'); | |
| 112 | - $f('type2', f).attr('disabled', 'disabled'); | |
| 113 | - $f('startStation', f).attr('disabled', 'disabled'); | |
| 114 | - $f('endStation', f).attr('disabled', 'disabled'); | |
| 115 | - $f('mileageType', f).attr('disabled', 'disabled'); | |
| 116 | - $f('destroy', f).attr('disabled', 'disabled'); | |
| 117 | - return f; | |
| 118 | - } | |
| 119 | - | |
| 120 | - function $f(name, f) { | |
| 121 | - return $('[name=' + name + ']', f); | |
| 122 | - } | |
| 123 | - | |
| 124 | - | |
| 125 | - /** | |
| 126 | - * 切换调头站点 | |
| 127 | - */ | |
| 128 | - function changeTurnStation() { | |
| 129 | - f1.nextAll('.sub_task_form_v2').remove(); | |
| 130 | - //掉头站点编码 | |
| 131 | - var eCode = $('#turnStationSelect', topf).val(); | |
| 132 | - if(!eCode){ | |
| 133 | - //$('.footer_mileage_count', '#add-sub-task-main-modal').trigger('refresh'); | |
| 134 | - $f('endStation', f1).val(sch.zdzCode).trigger('change'); | |
| 135 | - $('#emptyTurnCbox input')[0].checked=false; | |
| 136 | - return; | |
| 137 | - } | |
| 138 | - | |
| 139 | - //烂班1 | |
| 140 | - df1 = destroyForm(disabled_form(addTaskForm())); | |
| 141 | - //烂班2 | |
| 142 | - df2 = destroyForm(disabled_form(addTaskForm())); | |
| 143 | - //营运2 | |
| 144 | - f2 = disabled_form(addTaskForm()); | |
| 145 | - $('.domains', f2).empty(); | |
| 146 | - | |
| 147 | - | |
| 148 | - //营运1终点 | |
| 149 | - $f('endStation', f1).val(eCode).trigger('change'); | |
| 150 | - //烂班1起点 | |
| 151 | - $f('startStation', df1).val(eCode).trigger('change'); | |
| 152 | - //烂班2 | |
| 153 | - $f('startStation', df2).val(sch.zdzCode); | |
| 154 | - $f('endStation', df2).val(eCode); | |
| 155 | - $f('mileage', df2).val($f('mileage', df1).val()).trigger('input'); | |
| 156 | - $('[sch_id_inp]', df2).val(nextSch.id); | |
| 157 | - //营运2 | |
| 158 | - $f('startStation', f2).val(eCode); | |
| 159 | - $f('endStation', f2).val(sch.qdzCode); | |
| 160 | - $f('startDate',f2).val($f('endDate',f1).val()); | |
| 161 | - $f('mileage', f2).val($f('mileage', f1).val()).trigger('input'); | |
| 162 | - $('[sch_id_inp]', f2).val(nextSch.id); | |
| 163 | - | |
| 164 | - //set css | |
| 165 | - //setCss(); | |
| 166 | - //reason | |
| 167 | - changeTurnReason(); | |
| 168 | - } | |
| 169 | - | |
| 170 | - /** | |
| 171 | - * 切换调头原因 | |
| 172 | - */ | |
| 173 | - function changeTurnReason() { | |
| 174 | - var reason = $('#turnReason',topf).val(); | |
| 175 | - if(reason){ | |
| 176 | - $('.sub_task_form_v2 [name=reason]', wrap).val(reason).trigger('change'); | |
| 177 | - //var reInput=$('.remarks_form [name=remarks]', wrap); | |
| 178 | - //reInput.val(reInput.val() + reason + ','); | |
| 179 | - } | |
| 180 | - } | |
| 181 | - | |
| 182 | - function destroyForm(f) { | |
| 183 | - $f('destroy', f)[0].checked = true; | |
| 184 | - $('.destroy_reason_wrap', f).show(); | |
| 185 | - f.addClass('destroy_form'); | |
| 186 | - f.attr('destroy', true); | |
| 187 | - return f; | |
| 188 | - } | |
| 189 | - | |
| 190 | - /*function setCss() { | |
| 191 | - $('.sub_task_form_v2', wrap).each(function () { | |
| 192 | - if($(this).hasClass('destroy_form')) | |
| 193 | - return true; | |
| 194 | - | |
| 195 | - if($f('mileageType', this).val()=='service') | |
| 196 | - $(this).addClass('service_st_form'); | |
| 197 | - else | |
| 198 | - $(this).removeClass('service_st_form'); | |
| 199 | - }); | |
| 200 | - }*/ | |
| 201 | - | |
| 202 | - /** | |
| 203 | - * 空驶调头 | |
| 204 | - */ | |
| 205 | - function emptyTurn() { | |
| 206 | - if($('#turnStationSelect', topf).val()==''){ | |
| 207 | - notify_err('你必须先选择调头站点!'); | |
| 208 | - this.checked=false; | |
| 209 | - return; | |
| 210 | - } | |
| 211 | - if(this.checked){ | |
| 212 | - //烂班2 烂全程 | |
| 213 | - $f('startStation', df2).val(sch.zdzCode); | |
| 214 | - $f('endStation', df2).val(sch.qdzCode); | |
| 215 | - $f('mileage', df2).val(nextSch.jhlcOrig); | |
| 216 | - $f('startDate', df2).val(nextSch.dfsj); | |
| 217 | - $f('endDate', df2).val(nextSch.zdsj); | |
| 218 | - //营运2 变空驶 | |
| 219 | - //f2.removeClass('service_st_form'); | |
| 220 | - $f('mileageType',f2).val('empty').trigger('change'); | |
| 221 | - } | |
| 222 | - else{ | |
| 223 | - changeTurnStation(); | |
| 224 | - } | |
| 225 | - | |
| 226 | - //$f('mileage', df2).trigger('input'); | |
| 227 | - } | |
| 228 | - | |
| 229 | - //提交 | |
| 230 | - $('button[type=submit]', wrap).on('click', function () { | |
| 231 | - $(this).addClass('disabled').attr('disabled','disabled'); | |
| 232 | - dataArray = []; | |
| 233 | - $('form.sub_task_form_v2', wrap).data('valid', false) | |
| 234 | - .formValidation('validate'); | |
| 235 | - }); | |
| 236 | - | |
| 237 | - var dataArray = []; | |
| 238 | - $(wrap).on('success.form.fv', 'form.sub_task_form_v2', function (e) { | |
| 239 | - e.preventDefault(); | |
| 240 | - | |
| 241 | - dataArray.push($.extend($(this).serializeJSON(), gb_common.getDisabledVal(this) | |
| 242 | - , {remarks: $('#form-s-t',wrap).val()})); | |
| 243 | - $(this).data('valid', true); | |
| 244 | - | |
| 245 | - if (allValidSuccess()) { | |
| 246 | - var i = 0; | |
| 247 | - (function () { | |
| 248 | - var f = arguments.callee; | |
| 249 | - if (i >= dataArray.length) { | |
| 250 | - /** | |
| 251 | - * 为班次添加备注 | |
| 252 | - */ | |
| 253 | - //var remarks = '调头' + $('[name=endDate]', csf).val() + ' 因 ' + $.trim($('#turnReason', modal).val()) + '在' + $('[name=endStation] option:selected', csf).text() + '调头'; | |
| 254 | - //gb_schedule_table.addRemarks([sch, nextSch], gb_common.trim(remarks, 'g')); | |
| 255 | - UIkit.modal('#add-sub-task-main-modal').hide(); | |
| 256 | - $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch}); | |
| 257 | - gb_data_basic.reload_stat_park_data(); | |
| 258 | - return; | |
| 259 | - } | |
| 260 | - var data = dataArray[i]; | |
| 261 | - //营运子任务不写备注 | |
| 262 | - if(data.mileageType == 'service' && !data.destroy) | |
| 263 | - data.remarks = ''; | |
| 264 | - gb_common.$post('/childTask', data, function (rs) { | |
| 265 | - notify_succ('子任务添加成功'); | |
| 266 | - gb_schedule_table.updateSchedule(rs.t); | |
| 267 | - i++; | |
| 268 | - f(); | |
| 269 | - }); | |
| 270 | - })(); | |
| 271 | - } | |
| 272 | - }); | |
| 273 | - //校验不过 | |
| 274 | - $(wrap).on('err.field.fv','form.sub_task_form_v2', function () { | |
| 275 | - $('button[type=submit]', wrap).removeClass('disabled').removeAttr('disabled'); | |
| 276 | - }); | |
| 277 | - | |
| 278 | - function allValidSuccess() { | |
| 279 | - var flag = true; | |
| 280 | - $('form.sub_task_form_v2', wrap).each(function (i, f) { | |
| 281 | - if(!$(f).data('valid')){ | |
| 282 | - flag = false; | |
| 283 | - return false; | |
| 284 | - } | |
| 285 | - }); | |
| 286 | - return flag; | |
| 287 | - } | |
| 288 | - })(); | |
| 289 | - </script> | |
| 1 | +<div class="add_range_wrap"> | |
| 2 | + <div> | |
| 3 | + <form class="uk-form uk-form-horizontal st_range_top_form"> | |
| 4 | + <div class="uk-grid"> | |
| 5 | + <div class="uk-width-1-3"> | |
| 6 | + <div class="uk-form-row" style="padding-left: 10px;"> | |
| 7 | + <label class="uk-form-label">调头站点</label> | |
| 8 | + <div class="uk-form-controls"> | |
| 9 | + <select id="turnStationSelect"> | |
| 10 | + <option value="">请选择...</option> | |
| 11 | + </select> | |
| 12 | + </div> | |
| 13 | + </div> | |
| 14 | + </div> | |
| 15 | + <div class="uk-width-1-3"> | |
| 16 | + <div class="uk-form-row"> | |
| 17 | + <label class="uk-form-label">调头原因</label> | |
| 18 | + <div class="uk-form-controls"> | |
| 19 | + <select id="turnReason" style="width: calc(100% - 13px);"> | |
| 20 | + <option value="">请选择...</option> | |
| 21 | + </select> | |
| 22 | + </div> | |
| 23 | + </div> | |
| 24 | + </div> | |
| 25 | + <div class="uk-width-1-3" style="padding: 28px 0 0 28px;"> | |
| 26 | + <label id="emptyTurnCbox"></label> | |
| 27 | + </div> | |
| 28 | + </div> | |
| 29 | + </form> | |
| 30 | + </div> | |
| 31 | + | |
| 32 | + <div class="forms"></div> | |
| 33 | + <form class="uk-form remarks_form"> | |
| 34 | + <div class="uk-grid"> | |
| 35 | + <div class="uk-width-1-1"> | |
| 36 | + <div class="uk-form-row ct-stacked"> | |
| 37 | + <div class="uk-form-controls" style="margin-top: 5px;"> | |
| 38 | + <textarea id="form-s-t" rows="4" name="remarks" data-fv-stringlength="true" style="width: 100%;" | |
| 39 | + data-fv-stringlength-max="50" placeholder="备注,不超过50个字符"></textarea> | |
| 40 | + </div> | |
| 41 | + </div> | |
| 42 | + </div> | |
| 43 | + </div> | |
| 44 | + </form> | |
| 45 | + <div class="uk-modal-footer uk-text-right" style="margin-top: 5px;"> | |
| 46 | + <button type="button" class="uk-button uk-modal-close">取消</button> | |
| 47 | + <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> 保存</button> | |
| 48 | + </div> | |
| 49 | + | |
| 50 | + <script> | |
| 51 | + (function () { | |
| 52 | + var wrap = '#add-sub-task-main-modal .add_range_wrap', | |
| 53 | + sch, nextSch, stationRoutes, f1, f2, df1, df2, topf = $('.st_range_top_form', wrap); | |
| 54 | + | |
| 55 | + $(wrap).on('init', function (e, data) { | |
| 56 | + e.stopPropagation(); | |
| 57 | + sch = data.sch; | |
| 58 | + nextSch = gb_schedule_table.getNextNormalSch(sch); | |
| 59 | + if(!nextSch || nextSch.bcType!='normal'){ | |
| 60 | + $(wrap).html('<div class="err_panel">无法做区间调头,原因是没有找到返程班次!</div>'); | |
| 61 | + return; | |
| 62 | + } | |
| 63 | + | |
| 64 | + //站点路由 | |
| 65 | + stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) { | |
| 66 | + return a.stationRouteCode - b.stationRouteCode; | |
| 67 | + }), 'directions'); | |
| 68 | + //第一段营运 | |
| 69 | + f1 = addTaskForm(); | |
| 70 | + $f('startStation', f1).trigger('change'); | |
| 71 | + | |
| 72 | + disabled_form(f1); | |
| 73 | + $('.domains', f1).empty(); | |
| 74 | + //top form 站点select | |
| 75 | + $('#turnStationSelect', topf).append($f('startStation', f1).html()).on('change', changeTurnStation); | |
| 76 | + //top form 原因select | |
| 77 | + var opts = ''; | |
| 78 | + $.each(gb_common.adjustExps, function () { | |
| 79 | + opts += '<option value="' + this + '">' + this + '</option>'; | |
| 80 | + }); | |
| 81 | + $('#turnReason', topf).append(opts).on('change', changeTurnReason); | |
| 82 | + //调头空驶 | |
| 83 | + $('#emptyTurnCbox',topf).html('<input type="checkbox"> 调头空驶回 ' + sch.qdzName); | |
| 84 | + $('#emptyTurnCbox input',topf).on('click', emptyTurn); | |
| 85 | + }); | |
| 86 | + | |
| 87 | + | |
| 88 | + function addTaskForm() { | |
| 89 | + var htmlStr = template('sub-task-v2-form-temp', {sch: sch}); | |
| 90 | + var f = $(htmlStr); | |
| 91 | + $('.forms', wrap).append(f); | |
| 92 | + //字典转换 | |
| 93 | + dictionaryUtils.transformDom($('.nt-dictionary', f)); | |
| 94 | + | |
| 95 | + //班次类型切换 | |
| 96 | + $('select[name=type2]', f).trigger('change'); | |
| 97 | + | |
| 98 | + //滚动条到底 | |
| 99 | + //$('.forms', wrap).scrollTop($('.forms', wrap)[0].scrollHeight); | |
| 100 | + | |
| 101 | + f.formValidation({ | |
| 102 | + framework: 'uikit', | |
| 103 | + locale: 'zh_CN' | |
| 104 | + }).on('add_reason_field', function () { | |
| 105 | + $(this).formValidation('addField', 'reason'); | |
| 106 | + }); | |
| 107 | + return f; | |
| 108 | + } | |
| 109 | + | |
| 110 | + function disabled_form(f) { | |
| 111 | + //$('input,select',f).attr('disabled', 'disabled'); | |
| 112 | + $f('type2', f).attr('disabled', 'disabled'); | |
| 113 | + $f('startStation', f).attr('disabled', 'disabled'); | |
| 114 | + $f('endStation', f).attr('disabled', 'disabled'); | |
| 115 | + $f('mileageType', f).attr('disabled', 'disabled'); | |
| 116 | + $f('destroy', f).attr('disabled', 'disabled'); | |
| 117 | + return f; | |
| 118 | + } | |
| 119 | + | |
| 120 | + function $f(name, f) { | |
| 121 | + return $('[name=' + name + ']', f); | |
| 122 | + } | |
| 123 | + | |
| 124 | + | |
| 125 | + /** | |
| 126 | + * 切换调头站点 | |
| 127 | + */ | |
| 128 | + function changeTurnStation() { | |
| 129 | + f1.nextAll('.sub_task_form_v2').remove(); | |
| 130 | + //掉头站点编码 | |
| 131 | + var eCode = $('#turnStationSelect', topf).val(); | |
| 132 | + if(!eCode){ | |
| 133 | + //$('.footer_mileage_count', '#add-sub-task-main-modal').trigger('refresh'); | |
| 134 | + $f('endStation', f1).val(sch.zdzCode).trigger('change'); | |
| 135 | + $('#emptyTurnCbox input')[0].checked=false; | |
| 136 | + return; | |
| 137 | + } | |
| 138 | + | |
| 139 | + //烂班1 | |
| 140 | + df1 = destroyForm(disabled_form(addTaskForm())); | |
| 141 | + //烂班2 | |
| 142 | + df2 = destroyForm(disabled_form(addTaskForm())); | |
| 143 | + //营运2 | |
| 144 | + f2 = disabled_form(addTaskForm()); | |
| 145 | + $('.domains', f2).empty(); | |
| 146 | + | |
| 147 | + | |
| 148 | + //营运1终点 | |
| 149 | + $f('endStation', f1).val(eCode).trigger('change'); | |
| 150 | + //烂班1起点 | |
| 151 | + $f('startStation', df1).val(eCode).trigger('change'); | |
| 152 | + //烂班2 | |
| 153 | + $f('startStation', df2).val(sch.zdzCode); | |
| 154 | + $f('endStation', df2).val(eCode); | |
| 155 | + $f('mileage', df2).val($f('mileage', df1).val()).trigger('input'); | |
| 156 | + $('[sch_id_inp]', df2).val(nextSch.id); | |
| 157 | + //营运2 | |
| 158 | + $f('startStation', f2).val(eCode); | |
| 159 | + $f('endStation', f2).val(sch.qdzCode); | |
| 160 | + $f('startDate',f2).val($f('endDate',f1).val()); | |
| 161 | + $f('mileage', f2).val($f('mileage', f1).val()).trigger('input'); | |
| 162 | + $('[sch_id_inp]', f2).val(nextSch.id); | |
| 163 | + | |
| 164 | + //set css | |
| 165 | + //setCss(); | |
| 166 | + //reason | |
| 167 | + changeTurnReason(); | |
| 168 | + } | |
| 169 | + | |
| 170 | + /** | |
| 171 | + * 切换调头原因 | |
| 172 | + */ | |
| 173 | + function changeTurnReason() { | |
| 174 | + var reason = $('#turnReason',topf).val(); | |
| 175 | + if(reason){ | |
| 176 | + $('.sub_task_form_v2 [name=reason]', wrap).val(reason).trigger('change'); | |
| 177 | + //var reInput=$('.remarks_form [name=remarks]', wrap); | |
| 178 | + //reInput.val(reInput.val() + reason + ','); | |
| 179 | + } | |
| 180 | + } | |
| 181 | + | |
| 182 | + function destroyForm(f) { | |
| 183 | + $f('destroy', f)[0].checked = true; | |
| 184 | + $('.destroy_reason_wrap', f).show(); | |
| 185 | + f.addClass('destroy_form'); | |
| 186 | + f.attr('destroy', true); | |
| 187 | + return f; | |
| 188 | + } | |
| 189 | + | |
| 190 | + /*function setCss() { | |
| 191 | + $('.sub_task_form_v2', wrap).each(function () { | |
| 192 | + if($(this).hasClass('destroy_form')) | |
| 193 | + return true; | |
| 194 | + | |
| 195 | + if($f('mileageType', this).val()=='service') | |
| 196 | + $(this).addClass('service_st_form'); | |
| 197 | + else | |
| 198 | + $(this).removeClass('service_st_form'); | |
| 199 | + }); | |
| 200 | + }*/ | |
| 201 | + | |
| 202 | + /** | |
| 203 | + * 空驶调头 | |
| 204 | + */ | |
| 205 | + function emptyTurn() { | |
| 206 | + if($('#turnStationSelect', topf).val()==''){ | |
| 207 | + notify_err('你必须先选择调头站点!'); | |
| 208 | + this.checked=false; | |
| 209 | + return; | |
| 210 | + } | |
| 211 | + if(this.checked){ | |
| 212 | + //烂班2 烂全程 | |
| 213 | + $f('startStation', df2).val(sch.zdzCode); | |
| 214 | + $f('endStation', df2).val(sch.qdzCode); | |
| 215 | + $f('mileage', df2).val(nextSch.jhlcOrig); | |
| 216 | + $f('startDate', df2).val(nextSch.dfsj); | |
| 217 | + $f('endDate', df2).val(nextSch.zdsj); | |
| 218 | + //营运2 变空驶 | |
| 219 | + //f2.removeClass('service_st_form'); | |
| 220 | + $f('mileageType',f2).val('empty').trigger('change'); | |
| 221 | + } | |
| 222 | + else{ | |
| 223 | + changeTurnStation(); | |
| 224 | + } | |
| 225 | + | |
| 226 | + //$f('mileage', df2).trigger('input'); | |
| 227 | + } | |
| 228 | + | |
| 229 | + //提交 | |
| 230 | + $('button[type=submit]', wrap).on('click', function () { | |
| 231 | + $(this).addClass('disabled').attr('disabled','disabled'); | |
| 232 | + dataArray = []; | |
| 233 | + $('form.sub_task_form_v2', wrap).data('valid', false) | |
| 234 | + .formValidation('validate'); | |
| 235 | + }); | |
| 236 | + | |
| 237 | + var dataArray = []; | |
| 238 | + $(wrap).on('success.form.fv', 'form.sub_task_form_v2', function (e) { | |
| 239 | + e.preventDefault(); | |
| 240 | + | |
| 241 | + dataArray.push($.extend($(this).serializeJSON(), gb_common.getDisabledVal(this) | |
| 242 | + , {remarks: $('#form-s-t',wrap).val()})); | |
| 243 | + $(this).data('valid', true); | |
| 244 | + | |
| 245 | + if (allValidSuccess()) { | |
| 246 | + var i = 0; | |
| 247 | + (function () { | |
| 248 | + var f = arguments.callee; | |
| 249 | + if (i >= dataArray.length) { | |
| 250 | + /** | |
| 251 | + * 为班次添加备注 | |
| 252 | + */ | |
| 253 | + //var remarks = '调头' + $('[name=endDate]', csf).val() + ' 因 ' + $.trim($('#turnReason', modal).val()) + '在' + $('[name=endStation] option:selected', csf).text() + '调头'; | |
| 254 | + //gb_schedule_table.addRemarks([sch, nextSch], gb_common.trim(remarks, 'g')); | |
| 255 | + UIkit.modal('#add-sub-task-main-modal').hide(); | |
| 256 | + $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch}); | |
| 257 | + gb_data_basic.reload_stat_park_data(); | |
| 258 | + return; | |
| 259 | + } | |
| 260 | + var data = dataArray[i]; | |
| 261 | + //营运子任务不写备注 | |
| 262 | + if(data.mileageType == 'service' && !data.destroy) | |
| 263 | + data.remarks = ''; | |
| 264 | + gb_common.$post('/childTask', data, function (rs) { | |
| 265 | + notify_succ('子任务添加成功'); | |
| 266 | + gb_schedule_table.updateSchedule(rs.t); | |
| 267 | + i++; | |
| 268 | + f(); | |
| 269 | + }); | |
| 270 | + })(); | |
| 271 | + } | |
| 272 | + }); | |
| 273 | + //校验不过 | |
| 274 | + $(wrap).on('err.field.fv','form.sub_task_form_v2', function () { | |
| 275 | + $('button[type=submit]', wrap).removeClass('disabled').removeAttr('disabled'); | |
| 276 | + }); | |
| 277 | + | |
| 278 | + function allValidSuccess() { | |
| 279 | + var flag = true; | |
| 280 | + $('form.sub_task_form_v2', wrap).each(function (i, f) { | |
| 281 | + if(!$(f).data('valid')){ | |
| 282 | + flag = false; | |
| 283 | + return false; | |
| 284 | + } | |
| 285 | + }); | |
| 286 | + return flag; | |
| 287 | + } | |
| 288 | + })(); | |
| 289 | + </script> | |
| 290 | 290 | </div> |
| 291 | 291 | \ No newline at end of file | ... | ... |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task_v2/main.html
| 1 | -<div class="uk-modal ct_move_modal" id="add-sub-task-main-modal"> | |
| 2 | - <div class="uk-modal-dialog" style="width: 1100px;"> | |
| 3 | - <a href="" class="uk-modal-close uk-close"></a> | |
| 4 | - <div class="uk-modal-header"> | |
| 5 | - <h2>添加子任务</h2></div> | |
| 6 | - | |
| 7 | - <div class="uk-grid uk-grid-small"> | |
| 8 | - <div class="uk-width-2-10"> | |
| 9 | - <ul data-uk-switcher="{connect:'#tempScheduleContent',swiping:false}" class="uk-nav uk-nav-side left_tabs_lg"> | |
| 10 | - <li name="normal"><a>1、子任务</a></li> | |
| 11 | - <li name="in_out"><a>2、进出场</a></li> | |
| 12 | - <li name="range_turn"><a>3、区间调头</a></li> | |
| 13 | - </ul> | |
| 14 | - </div> | |
| 15 | - <div class="uk-width-8-10"> | |
| 16 | - <ul id="tempScheduleContent" class="uk-switcher"> | |
| 17 | - <li class="tab_cont normalCont"></li> | |
| 18 | - <li class="tab_cont inOutCont"></li> | |
| 19 | - <li class="tab_cont rangeTurnCont"></li> | |
| 20 | - </ul> | |
| 21 | - </div> | |
| 22 | - </div> | |
| 23 | - | |
| 24 | - <div class="footer_tools"> | |
| 25 | - <!-- 底部公里统计栏 --> | |
| 26 | - <div class="footer_mileage_count"> | |
| 27 | - 合计 | |
| 28 | - <span class="service_sum"></span> | |
| 29 | - <span class="destroy_sum"></span> | |
| 30 | - <span class="empty_sum"></span> | |
| 31 | - </div> | |
| 32 | - <!-- 站到场 链接 --> | |
| 33 | - <div class="station_to_park_link"> | |
| 34 | - <a>站 <i class="uk-icon-exchange"></i> 场</a> | |
| 35 | - </div> | |
| 36 | - </div> | |
| 37 | - </div> | |
| 38 | - | |
| 39 | - <script id="sub-task-v2-form-temp" type="text/html"> | |
| 40 | - <form class="uk-form uk-form-horizontal uk-animation-fade sub_task_form_v2"> | |
| 41 | - <span class="task_form_close_icon"> | |
| 42 | - <i class="uk-icon-times"></i> | |
| 43 | - </span> | |
| 44 | - <input type="hidden" value="{{sch.id}}" name="schedule.id" sch_id_inp> | |
| 45 | - <input type="hidden" value="正常" name="type1"> | |
| 46 | - <div class="uk-grid"> | |
| 47 | - <div class="uk-width-1-3"> | |
| 48 | - <div class="uk-form-row"> | |
| 49 | - <label class="uk-form-label">班次类型</label> | |
| 50 | - <div class="uk-form-controls"> | |
| 51 | - <select class="form-control nt-dictionary" data-code="-100" name="type2" | |
| 52 | - data-group=ChildTaskType></select> | |
| 53 | - </div> | |
| 54 | - </div> | |
| 55 | - </div> | |
| 56 | - <div class="uk-width-1-3"> | |
| 57 | - <div class="uk-form-row"> | |
| 58 | - <label class="uk-form-label">起点 </label> | |
| 59 | - <div class="uk-form-controls"> | |
| 60 | - <select name="startStation" required></select> | |
| 61 | - </div> | |
| 62 | - </div> | |
| 63 | - </div> | |
| 64 | - <div class="uk-width-1-3"> | |
| 65 | - <div class="uk-form-row"> | |
| 66 | - <label class="uk-form-label">终点</label> | |
| 67 | - <div class="uk-form-controls"> | |
| 68 | - <select name="endStation" required></select> | |
| 69 | - </div> | |
| 70 | - </div> | |
| 71 | - </div> | |
| 72 | - </div> | |
| 73 | - | |
| 74 | - <div class="uk-grid"> | |
| 75 | - <div class="uk-width-1-3"> | |
| 76 | - <div class="uk-form-row"> | |
| 77 | - <label class="uk-form-label">开始时间</label> | |
| 78 | - <div class="uk-form-controls"> | |
| 79 | - <input name="startDate" value="{{sch.fcsjActual==null?sch.dfsj:sch.fcsjActual}}" type="time" | |
| 80 | - required> | |
| 81 | - </div> | |
| 82 | - </div> | |
| 83 | - </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 | - <input name="endDate" type="time" required> | |
| 89 | - </div> | |
| 90 | - </div> | |
| 91 | - </div> | |
| 92 | - <div class="uk-width-1-3"> | |
| 93 | - <div class="uk-form-row"> | |
| 94 | - <label class="uk-form-label">公里数</label> | |
| 95 | - <div class="uk-form-controls"> | |
| 96 | - <input class="form-control" name="mileage" max=222 data-fv-lessthan-inclusive="false" | |
| 97 | - required> | |
| 98 | - </div> | |
| 99 | - </div> | |
| 100 | - </div> | |
| 101 | - </div> | |
| 102 | - | |
| 103 | - <div class="uk-grid"> | |
| 104 | - <div class="uk-width-2-3 domains"></div> | |
| 105 | - <div class="uk-width-1-3"> | |
| 106 | - <div class="uk-form-row"> | |
| 107 | - <label class="uk-form-label">里程类型</label> | |
| 108 | - <div class="uk-form-controls"> | |
| 109 | - <select class="form-control nt-dictionary" required name="mileageType" | |
| 110 | - data-group="MileageType"></select> | |
| 111 | - </div> | |
| 112 | - </div> | |
| 113 | - </div> | |
| 114 | - </div> | |
| 115 | - </form> | |
| 116 | - </script> | |
| 117 | - | |
| 118 | - <script id="st-v2-domains-changecar-form-temp" type="text/html"> | |
| 119 | - <div class="uk-grid"> | |
| 120 | - <div class="uk-width-1-2"> | |
| 121 | - <div class="uk-form-row"> | |
| 122 | - <label class="uk-form-label">车辆编码</label> | |
| 123 | - <div class="uk-form-controls"> | |
| 124 | - <div class="uk-autocomplete autocomplete-cars"> | |
| 125 | - <input type="text" name="nbbm" placeholder="车辆自编号" required> | |
| 126 | - </div> | |
| 127 | - </div> | |
| 128 | - </div> | |
| 129 | - </div> | |
| 130 | - <div class="uk-width-1-2 destroy_reason_wrap"> | |
| 131 | - <div class="uk-form-row"> | |
| 132 | - <label class="uk-form-label">换车原因</label> | |
| 133 | - <div class="uk-form-controls"> | |
| 134 | - <select class="form-control" name="reason" required> | |
| 135 | - <option value="">请选择...</option> | |
| 136 | - {{each inOutExps as exp i}} | |
| 137 | - <option value="{{exp}}">{{exp}}</option> | |
| 138 | - {{/each}} | |
| 139 | - </select> | |
| 140 | - </div> | |
| 141 | - </div> | |
| 142 | - </div> | |
| 143 | - </div> | |
| 144 | - </script> | |
| 145 | - | |
| 146 | - <script id="st-v2-domains-inout-form-temp" type="text/html"> | |
| 147 | - <div class="uk-grid"> | |
| 148 | - <div class="uk-width-1-2"> | |
| 149 | - <div class="uk-form-row" style="padding-top: 5px;"> | |
| 150 | - <label class="uk-form-label"></label> | |
| 151 | - <div class="uk-form-controls"> | |
| 152 | - <label data-uk-tooltip title="如是无人售票线路,忽略这个选项"> | |
| 153 | - <input type="checkbox" value=1 name="noClerk" class="i-cbox"> 无售票员 | |
| 154 | - </label> | |
| 155 | - </div> | |
| 156 | - </div> | |
| 157 | - </div> | |
| 158 | - <div class="uk-width-1-2 destroy_reason_wrap"> | |
| 159 | - <div class="uk-form-row"> | |
| 160 | - <label class="uk-form-label">进出场原因</label> | |
| 161 | - <div class="uk-form-controls"> | |
| 162 | - <select class="form-control" name="reason" required> | |
| 163 | - <option value="">请选择...</option> | |
| 164 | - {{each inOutExps as exp i}} | |
| 165 | - <option value="{{exp}}">{{exp}}</option> | |
| 166 | - {{/each}} | |
| 167 | - </select> | |
| 168 | - </div> | |
| 169 | - </div> | |
| 170 | - </div> | |
| 171 | - </div> | |
| 172 | - </script> | |
| 173 | - | |
| 174 | - <script id="st-v2-domains-service-form-temp" type="text/html"> | |
| 175 | - <div class="uk-grid"> | |
| 176 | - <div class="uk-width-1-2"> | |
| 177 | - <div class="uk-form-row" style="padding-top: 5px;"> | |
| 178 | - <label class="uk-form-label"></label> | |
| 179 | - <div class="uk-form-controls"> | |
| 180 | - <label> | |
| 181 | - <input type="checkbox" value=1 name="destroy" class="i-cbox"> 是否烂班 | |
| 182 | - </label> | |
| 183 | - </div> | |
| 184 | - </div> | |
| 185 | - </div> | |
| 186 | - <div class="uk-width-1-2 destroy_reason_wrap" style="display: none;"> | |
| 187 | - <div class="uk-form-row"> | |
| 188 | - <label class="uk-form-label">烂班原因</label> | |
| 189 | - <div class="uk-form-controls"> | |
| 190 | - <select class="form-control" name="reason" required> | |
| 191 | - <option value="">请选择...</option> | |
| 192 | - {{each adjustExps as exp i}} | |
| 193 | - <option value="{{exp}}">{{exp}}</option> | |
| 194 | - {{/each}} | |
| 195 | - </select> | |
| 196 | - </div> | |
| 197 | - </div> | |
| 198 | - </div> | |
| 199 | - </div> | |
| 200 | - </script> | |
| 201 | - <script> | |
| 202 | - (function () { | |
| 203 | - var modal = '#add-sub-task-main-modal', sch, | |
| 204 | - stationRoutes, | |
| 205 | - parks, | |
| 206 | - information, | |
| 207 | - st_park_data; | |
| 208 | - | |
| 209 | - $(modal).on('init', function (e, data) { | |
| 210 | - e.stopPropagation(); | |
| 211 | - sch = data.sch; | |
| 212 | - | |
| 213 | - //站到场数据 | |
| 214 | - st_park_data = gb_data_basic.get_stat_park_data()[sch.xlBm]; | |
| 215 | - //站点路由 | |
| 216 | - stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) { | |
| 217 | - return a.stationRouteCode - b.stationRouteCode; | |
| 218 | - }), 'directions'); | |
| 219 | - //停车场 | |
| 220 | - parks = gb_data_basic.simpleParksArray(); | |
| 221 | - //线路标准 | |
| 222 | - information = gb_data_basic.getLineInformation(sch.xlBm); | |
| 223 | - | |
| 224 | - var st_doms = gb_schedule_context_menu.get_st_doms(); | |
| 225 | - //普通 | |
| 226 | - $('.normalCont', modal).html(st_doms.custom_dom); | |
| 227 | - $('.add_custom_wrap', modal).trigger('init', data); | |
| 228 | - | |
| 229 | - //进出场班次 | |
| 230 | - if(sch.bcType=='in'||sch.bcType=='out'){ | |
| 231 | - $('.left_tabs_lg li[name=in_out]').remove(); | |
| 232 | - $('.left_tabs_lg li[name=range_turn]').remove(); | |
| 233 | - } | |
| 234 | - else{ | |
| 235 | - //进出场 | |
| 236 | - $('.inOutCont', modal).html(st_doms.inout_dom); | |
| 237 | - $('.add_inOut_wrap', modal).trigger('init', data); | |
| 238 | - //区间调头 | |
| 239 | - $('.rangeTurnCont', modal).html(st_doms.range_dom); | |
| 240 | - $('.add_range_wrap', modal).trigger('init', data); | |
| 241 | - } | |
| 242 | - }); | |
| 243 | - | |
| 244 | - //班次类型切换事件 | |
| 245 | - $(modal).on('change', 'select[name=type2]', reCalcInputs_type); | |
| 246 | - //烂班选项点击事件 | |
| 247 | - $(modal).on('change', 'input[name=destroy]', destroyClick); | |
| 248 | - //起终点站切换事件 | |
| 249 | - $(modal).on('change', 'select[name=startStation],select[name=endStation]', reCalcInputs_station); | |
| 250 | - //开始时间改变 | |
| 251 | - $(modal).on('input', 'input[name=startDate]', reCalcEndTime); | |
| 252 | - //公里数改变 | |
| 253 | - $(modal).on('input', 'input[name=mileage]', reCalcMileageCount); | |
| 254 | - //终点时间改变 | |
| 255 | - $(modal).on('input', 'input[name=endDate]', reCalcNext_s_time); | |
| 256 | - //进出场原因切换 | |
| 257 | - $(modal).on('change', 'select[name=reason]', reSynchroReason); | |
| 258 | - //里程类型改变 | |
| 259 | - $(modal).on('change', 'select[name=mileageType]', changeMileageType); | |
| 260 | - //关闭 | |
| 261 | - $(modal).on('click', '.task_form_close_icon', closeTaskForm); | |
| 262 | - | |
| 263 | - //公里合计footer | |
| 264 | - var re_count; | |
| 265 | - $('.footer_mileage_count', modal).on('refresh', function () { | |
| 266 | - if(re_count) | |
| 267 | - return; | |
| 268 | - re_count = true; | |
| 269 | - var that=this; | |
| 270 | - setTimeout(function () { | |
| 271 | - var fs = $('#tempScheduleContent li.uk-active form.sub_task_form_v2', modal); | |
| 272 | - var s=0,e=0,d=0,mileage; | |
| 273 | - $.each(fs, function () { | |
| 274 | - mileage = parseFloat($f('mileage',this).val()); | |
| 275 | - if($(this).hasClass('destroy_form')) | |
| 276 | - d = gb_common.accAdd(d, mileage); | |
| 277 | - else if($(this).hasClass('service_form')) | |
| 278 | - s = gb_common.accAdd(s, mileage); | |
| 279 | - else if($(this).hasClass('empty_form')) | |
| 280 | - e = gb_common.accAdd(e, mileage); | |
| 281 | - }); | |
| 282 | - | |
| 283 | - $('span',that).hide(); | |
| 284 | - if(s>0) | |
| 285 | - $('span.service_sum',that).html('营运: ' + s).show(); | |
| 286 | - if(e>0) | |
| 287 | - $('span.empty_sum',that).html('空驶: ' + e).show(); | |
| 288 | - if(d>0) | |
| 289 | - $('span.destroy_sum',that).html('烂班: ' + d).show(); | |
| 290 | - re_count=false; | |
| 291 | - }, 200); | |
| 292 | - }); | |
| 293 | - | |
| 294 | - /** | |
| 295 | - * 根据班次类型切换起终点下拉框 | |
| 296 | - */ | |
| 297 | - function reCalcInputs_type() { | |
| 298 | - var f = $(this).parents('.sub_task_form_v2'); | |
| 299 | - | |
| 300 | - var routes = stationRoutes[sch.xlDir] | |
| 301 | - , lastCode = routes[routes.length - 1].stationCode | |
| 302 | - , opts = '', park_opts = ''; | |
| 303 | - //station options | |
| 304 | - $.each(routes, function () { | |
| 305 | - opts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>' | |
| 306 | - }); | |
| 307 | - //park options | |
| 308 | - for (var code in parks) | |
| 309 | - park_opts += '<option value="' + code + '">' + parks[code] + '</option>'; | |
| 310 | - | |
| 311 | - var qdz = $f('startStation', f), zdz = $f('endStation', f), mType = $f('mileageType', f); | |
| 312 | - var domainsTemp; | |
| 313 | - switch ($(this).val()) { | |
| 314 | - case '3'://出场 | |
| 315 | - qdz.html(park_opts).val(information.carPark); | |
| 316 | - zdz.html(opts).trigger('change'); | |
| 317 | - mType.val('empty').attr('disabled', 'disabled').trigger('change'); | |
| 318 | - domainsTemp = 'st-v2-domains-inout-form-temp'; | |
| 319 | - /*//如果上一个form是进场 | |
| 320 | - try { | |
| 321 | - var prev_f = f.prev('.sub_task_form_v2'); | |
| 322 | - if ($f('type2', prev_f).val() == 2) | |
| 323 | - zdz.val($f('startStation', prev_f).val()); | |
| 324 | - } catch (e) { | |
| 325 | - console.log(e); | |
| 326 | - }*/ | |
| 327 | - break; | |
| 328 | - case '2'://进场 | |
| 329 | - qdz.html(opts) | |
| 330 | - zdz.html(park_opts).val(information.carPark).trigger('change'); | |
| 331 | - mType.val('empty').attr('disabled', 'disabled').trigger('change'); | |
| 332 | - domainsTemp = 'st-v2-domains-inout-form-temp'; | |
| 333 | - break; | |
| 334 | - default: | |
| 335 | - qdz.html(opts); | |
| 336 | - zdz.html(opts).val(lastCode).trigger('change'); | |
| 337 | - mType.val('service').removeAttr('disabled').trigger('change'); | |
| 338 | - domainsTemp = 'st-v2-domains-service-form-temp'; | |
| 339 | - } | |
| 340 | - | |
| 341 | - //可变选项区域 | |
| 342 | - $('.domains', f).html(template(domainsTemp, { | |
| 343 | - adjustExps: gb_common.adjustExps, | |
| 344 | - inOutExps: gb_common.inOutExps | |
| 345 | - })); | |
| 346 | - | |
| 347 | - //校验reason | |
| 348 | - f.trigger('add_reason_field'); | |
| 349 | - //qdz.trigger('change'); | |
| 350 | - //zdz.trigger('change'); | |
| 351 | - } | |
| 352 | - | |
| 353 | - /** | |
| 354 | - * 根据站位站距计算公里和时间 | |
| 355 | - */ | |
| 356 | - function reCalcInputs_station() { | |
| 357 | - var f = $(this).parents('.sub_task_form_v2') | |
| 358 | - , type2 = $f('type2', f).val()//班次类型 | |
| 359 | - , qdzCode = $f('startStation', f).val()//起点站 | |
| 360 | - , zdzCode = $f('endStation', f).val()//终点站 | |
| 361 | - , startDate = $f('startDate', f).val();//开始时间 | |
| 362 | - var mileage, time, upDown; | |
| 363 | - switch (type2) { | |
| 364 | - case '2': | |
| 365 | - upDown = inout_updown(qdzCode, sch); | |
| 366 | - break; | |
| 367 | - case '3': | |
| 368 | - upDown = inout_updown(zdzCode, sch); | |
| 369 | - break; | |
| 370 | - default: | |
| 371 | - upDown = sch.xlDir | |
| 372 | - } | |
| 373 | - | |
| 374 | - //从站到场里获取数据 | |
| 375 | - var stp = search_st_park(f); | |
| 376 | - if(stp){ | |
| 377 | - mileage=type2==2?stp['mileage1']:stp['mileage2']; | |
| 378 | - time=type2==2?stp['time1']:stp['time2']; | |
| 379 | - } | |
| 380 | - else{ | |
| 381 | - if(upDown==-1) | |
| 382 | - return; | |
| 383 | - switch (upDown + '_' + type2) { | |
| 384 | - case '0_3'://上行出场 | |
| 385 | - mileage = information.upOutMileage; | |
| 386 | - time = information.upOutTimer; | |
| 387 | - break; | |
| 388 | - case '1_3'://下行出场 | |
| 389 | - mileage = information.downOutMileage; | |
| 390 | - time = information.downOutTimer; | |
| 391 | - break; | |
| 392 | - case '0_2'://上行进场 | |
| 393 | - mileage = information.upInMileage; | |
| 394 | - time = information.upInTimer; | |
| 395 | - break; | |
| 396 | - case '1_2'://下行进场 | |
| 397 | - mileage = information.downInMileage; | |
| 398 | - time = information.downInTimer; | |
| 399 | - break; | |
| 400 | - default: | |
| 401 | - //线路上站点间 | |
| 402 | - mileage = calcMileageByRoutes(stationRoutes[upDown], qdzCode, zdzCode); | |
| 403 | - time = gb_common.mul(gb_common.accDiv(sch.bcsj, sch.jhlcOrig), mileage); | |
| 404 | - } | |
| 405 | - } | |
| 406 | - | |
| 407 | - $f('mileage', f).val(mileage); | |
| 408 | - var et = moment(startDate, 'HH:mm').add(time, 'minutes'); | |
| 409 | - $f('endDate', f).val(et.format('HH:mm')); | |
| 410 | - | |
| 411 | - if (type2 != 1) { | |
| 412 | - reCalcEndTime.call(this); | |
| 413 | - } | |
| 414 | - reCalcMileageCount(); | |
| 415 | - } | |
| 416 | - | |
| 417 | - /** | |
| 418 | - * 计算结束时间 | |
| 419 | - */ | |
| 420 | - function reCalcEndTime() { | |
| 421 | - var f = $(this).parents('.sub_task_form_v2') | |
| 422 | - , startDate = $f('startDate', f).val()//开始时间 | |
| 423 | - , mileage = $f('mileage', f).val()//公里 | |
| 424 | - , type2 = $f('type2', f).val();//班次类型 | |
| 425 | - if (!startDate || !mileage) | |
| 426 | - return; | |
| 427 | - | |
| 428 | - var time; | |
| 429 | - //从站到场里获取数据 | |
| 430 | - var stp = search_st_park(f); | |
| 431 | - if(stp){ | |
| 432 | - mileage=type2==2?stp['mileage1']:stp['mileage2']; | |
| 433 | - time=type2==2?stp['time1']:stp['time2']; | |
| 434 | - } | |
| 435 | - else{ | |
| 436 | - if (type2 == 1) { | |
| 437 | - time = gb_common.mul(gb_common.accDiv(sch.bcsj, sch.jhlcOrig), mileage); | |
| 438 | - } | |
| 439 | - else if (type2 == 2) { | |
| 440 | - //进场 | |
| 441 | - var qdzCode = $f('startStation', f).val(), | |
| 442 | - updown = inout_updown(qdzCode, sch); | |
| 443 | - | |
| 444 | - if (updown == -1) | |
| 445 | - return; | |
| 446 | - time = updown == 0 ? information.upInTimer : information.downInTimer; | |
| 447 | - } | |
| 448 | - else if (type2 == 3) { | |
| 449 | - //出场 | |
| 450 | - var zdzCode = $f('endStation', f).val(), | |
| 451 | - updown = inout_updown(zdzCode, sch); | |
| 452 | - | |
| 453 | - if (updown == -1) | |
| 454 | - return; | |
| 455 | - time = updown == 0 ? information.upOutTimer : information.downOutTimer; | |
| 456 | - } | |
| 457 | - } | |
| 458 | - | |
| 459 | - var et = moment(startDate, 'HH:mm').add(time, 'minutes'); | |
| 460 | - $f('endDate', f).val(et.format('HH:mm')).trigger('input'); | |
| 461 | - } | |
| 462 | - | |
| 463 | - /** | |
| 464 | - * 将结束时间写入下一个表单的开始时间 | |
| 465 | - */ | |
| 466 | - function reCalcNext_s_time() { | |
| 467 | - var f = $(this).parents('.sub_task_form_v2'), | |
| 468 | - et = $f('endDate', f).val(); | |
| 469 | - | |
| 470 | - var nf = gb_common.next_elem('sub_task_form_v2', f); | |
| 471 | - | |
| 472 | - if (f.attr('destroy')) | |
| 473 | - et = $f('startDate', f).val(); | |
| 474 | - | |
| 475 | - if (nf.length > 0) { | |
| 476 | - $f('startDate', nf).val(et).trigger('input'); | |
| 477 | - } | |
| 478 | - } | |
| 479 | - | |
| 480 | - /** | |
| 481 | - * 切换原因 | |
| 482 | - */ | |
| 483 | - function reSynchroReason() { | |
| 484 | - var f = $(this).parents('.sub_task_form_v2'), | |
| 485 | - reason = $(this).val(); | |
| 486 | - | |
| 487 | - var nf = gb_common.next_elem('sub_task_form_v2', f), | |
| 488 | - nInput = $f('reason', nf); | |
| 489 | - | |
| 490 | - if (nf.length > 0 && nInput.length > 0) { | |
| 491 | - nInput.val(reason).trigger('change'); | |
| 492 | - } | |
| 493 | - else { | |
| 494 | - var cont = f.parents('li.tab_cont'), | |
| 495 | - remInput = $('.remarks_form [name=remarks]', cont); | |
| 496 | - | |
| 497 | - if(remInput.val()==reason + ',') | |
| 498 | - return; | |
| 499 | - remInput.val(remInput.val() + reason + ','); | |
| 500 | - } | |
| 501 | - } | |
| 502 | - | |
| 503 | - function calcMileageByRoutes(routes, s, e) { | |
| 504 | - var code, flag, mileage = 0; | |
| 505 | - $.each(routes, function () { | |
| 506 | - code = this['stationCode']; | |
| 507 | - if (flag) { | |
| 508 | - if (!this.distances) | |
| 509 | - this.distances = 0; | |
| 510 | - mileage = gb_common.accAdd(mileage, this.distances); | |
| 511 | - } | |
| 512 | - if (code == s) | |
| 513 | - flag = true; | |
| 514 | - if (code == e) | |
| 515 | - return false; | |
| 516 | - }); | |
| 517 | - return mileage; | |
| 518 | - } | |
| 519 | - | |
| 520 | - function destroyClick() { | |
| 521 | - var f = $(this).parents('.sub_task_form_v2'); | |
| 522 | - if (this.checked) { | |
| 523 | - $('.destroy_reason_wrap', f).show(); | |
| 524 | - f.attr('destroy', true).addClass('destroy_form'); | |
| 525 | - } | |
| 526 | - else { | |
| 527 | - $('.destroy_reason_wrap', f).hide(); | |
| 528 | - f.removeAttr('destroy').removeClass('destroy_form'); | |
| 529 | - } | |
| 530 | - reCalcMileageCount(); | |
| 531 | - } | |
| 532 | - | |
| 533 | - function changeMileageType() { | |
| 534 | - var f = $(this).parents('.sub_task_form_v2'), | |
| 535 | - mileageType = $(this).val(); | |
| 536 | - if (mileageType) { | |
| 537 | - f.removeClass('service_form empty_form').addClass(mileageType + '_form'); | |
| 538 | - reCalcMileageCount(); | |
| 539 | - } | |
| 540 | - } | |
| 541 | - | |
| 542 | - function $f(name, f) { | |
| 543 | - return $('[name=' + name + ']', f); | |
| 544 | - } | |
| 545 | - | |
| 546 | - function closeTaskForm() { | |
| 547 | - $(this).parents('.sub_task_form_v2').remove(); | |
| 548 | - reCalcMileageCount(); | |
| 549 | - } | |
| 550 | - | |
| 551 | - /** | |
| 552 | - * 进出场上下行 | |
| 553 | - * @param qdzCode | |
| 554 | - * @param sch | |
| 555 | - */ | |
| 556 | - function inout_updown(station, sch) { | |
| 557 | - if (station == sch.qdzCode) | |
| 558 | - return sch.xlDir; | |
| 559 | - else if (station == sch.zdzCode) | |
| 560 | - return sch.xlDir == 0 ? 1 : 0; | |
| 561 | - else | |
| 562 | - return -1; | |
| 563 | - } | |
| 564 | - | |
| 565 | - function search_st_park(f) { | |
| 566 | - if(!st_park_data) | |
| 567 | - return; | |
| 568 | - var stp; | |
| 569 | - var qdSelect=$f('startStation', f)[0],zdSelect=$f('endStation', f)[0]; | |
| 570 | - | |
| 571 | - var qdzName=qdSelect.options[qdSelect.options.selectedIndex].text, | |
| 572 | - zdzName=zdSelect.options[zdSelect.options.selectedIndex].text, | |
| 573 | - type2 = $f('type2', f).val(); | |
| 574 | - | |
| 575 | - if(type2!=2 && type2!=3) | |
| 576 | - return; | |
| 577 | - | |
| 578 | - $.each(st_park_data, function () { | |
| 579 | - if((type2==2 && this.stationName==qdzName && this.parkName==zdzName) | |
| 580 | - || (type2==3 && this.stationName==zdzName && this.parkName==qdzName)){ | |
| 581 | - stp = this; | |
| 582 | - return false; | |
| 583 | - } | |
| 584 | - }); | |
| 585 | - | |
| 586 | - return stp; | |
| 587 | - } | |
| 588 | - | |
| 589 | - $('.left_tabs_lg', modal).on('show.uk.switcher', reCalcMileageCount); | |
| 590 | - | |
| 591 | - function reCalcMileageCount() { | |
| 592 | - $('.footer_mileage_count', modal).trigger('refresh'); | |
| 593 | - var f = $(this).parents('.sub_task_form_v2'); | |
| 594 | - if($f('type2',f).val()==1) | |
| 595 | - reCalcEndTime.call(this); | |
| 596 | - } | |
| 597 | - | |
| 598 | - | |
| 599 | - var folder = '/real_control_v2/fragments/line_schedule/context_menu'; | |
| 600 | - /** | |
| 601 | - * 弹出站 到 场对照表 | |
| 602 | - */ | |
| 603 | - $('.station_to_park_link', modal).on('click', function () { | |
| 604 | - open_modal(folder + '/utils/station_to_park.html', { | |
| 605 | - sch: sch | |
| 606 | - }, {center: false, bgclose: false, modal: false}); | |
| 607 | - }); | |
| 608 | - })(); | |
| 609 | - </script> | |
| 1 | +<div class="uk-modal ct_move_modal" id="add-sub-task-main-modal"> | |
| 2 | + <div class="uk-modal-dialog" style="width: 1100px;"> | |
| 3 | + <a href="" class="uk-modal-close uk-close"></a> | |
| 4 | + <div class="uk-modal-header"> | |
| 5 | + <h2>添加子任务</h2></div> | |
| 6 | + | |
| 7 | + <div class="uk-grid uk-grid-small"> | |
| 8 | + <div class="uk-width-2-10"> | |
| 9 | + <ul data-uk-switcher="{connect:'#tempScheduleContent',swiping:false}" class="uk-nav uk-nav-side left_tabs_lg"> | |
| 10 | + <li name="normal"><a>1、子任务</a></li> | |
| 11 | + <li name="in_out"><a>2、进出场</a></li> | |
| 12 | + <li name="range_turn"><a>3、区间调头</a></li> | |
| 13 | + </ul> | |
| 14 | + </div> | |
| 15 | + <div class="uk-width-8-10"> | |
| 16 | + <ul id="tempScheduleContent" class="uk-switcher"> | |
| 17 | + <li class="tab_cont normalCont"></li> | |
| 18 | + <li class="tab_cont inOutCont"></li> | |
| 19 | + <li class="tab_cont rangeTurnCont"></li> | |
| 20 | + </ul> | |
| 21 | + </div> | |
| 22 | + </div> | |
| 23 | + | |
| 24 | + <div class="footer_tools"> | |
| 25 | + <!-- 底部公里统计栏 --> | |
| 26 | + <div class="footer_mileage_count"> | |
| 27 | + 合计 | |
| 28 | + <span class="service_sum"></span> | |
| 29 | + <span class="destroy_sum"></span> | |
| 30 | + <span class="empty_sum"></span> | |
| 31 | + </div> | |
| 32 | + <!-- 站到场 链接 --> | |
| 33 | + <div class="station_to_park_link"> | |
| 34 | + <a>站 <i class="uk-icon-exchange"></i> 场</a> | |
| 35 | + </div> | |
| 36 | + </div> | |
| 37 | + </div> | |
| 38 | + | |
| 39 | + <script id="sub-task-v2-form-temp" type="text/html"> | |
| 40 | + <form class="uk-form uk-form-horizontal uk-animation-fade sub_task_form_v2"> | |
| 41 | + <span class="task_form_close_icon"> | |
| 42 | + <i class="uk-icon-times"></i> | |
| 43 | + </span> | |
| 44 | + <input type="hidden" value="{{sch.id}}" name="schedule.id" sch_id_inp> | |
| 45 | + <input type="hidden" value="正常" name="type1"> | |
| 46 | + <div class="uk-grid"> | |
| 47 | + <div class="uk-width-1-3"> | |
| 48 | + <div class="uk-form-row"> | |
| 49 | + <label class="uk-form-label">班次类型</label> | |
| 50 | + <div class="uk-form-controls"> | |
| 51 | + <select class="form-control nt-dictionary" data-code="-100" name="type2" | |
| 52 | + data-group=ChildTaskType></select> | |
| 53 | + </div> | |
| 54 | + </div> | |
| 55 | + </div> | |
| 56 | + <div class="uk-width-1-3"> | |
| 57 | + <div class="uk-form-row"> | |
| 58 | + <label class="uk-form-label">起点 </label> | |
| 59 | + <div class="uk-form-controls"> | |
| 60 | + <select name="startStation" required></select> | |
| 61 | + </div> | |
| 62 | + </div> | |
| 63 | + </div> | |
| 64 | + <div class="uk-width-1-3"> | |
| 65 | + <div class="uk-form-row"> | |
| 66 | + <label class="uk-form-label">终点</label> | |
| 67 | + <div class="uk-form-controls"> | |
| 68 | + <select name="endStation" required></select> | |
| 69 | + </div> | |
| 70 | + </div> | |
| 71 | + </div> | |
| 72 | + </div> | |
| 73 | + | |
| 74 | + <div class="uk-grid"> | |
| 75 | + <div class="uk-width-1-3"> | |
| 76 | + <div class="uk-form-row"> | |
| 77 | + <label class="uk-form-label">开始时间</label> | |
| 78 | + <div class="uk-form-controls"> | |
| 79 | + <input name="startDate" value="{{sch.fcsjActual==null?sch.dfsj:sch.fcsjActual}}" type="time" | |
| 80 | + required> | |
| 81 | + </div> | |
| 82 | + </div> | |
| 83 | + </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 | + <input name="endDate" type="time" required> | |
| 89 | + </div> | |
| 90 | + </div> | |
| 91 | + </div> | |
| 92 | + <div class="uk-width-1-3"> | |
| 93 | + <div class="uk-form-row"> | |
| 94 | + <label class="uk-form-label">公里数</label> | |
| 95 | + <div class="uk-form-controls"> | |
| 96 | + <input class="form-control" name="mileage" max=222 data-fv-lessthan-inclusive="false" | |
| 97 | + required> | |
| 98 | + </div> | |
| 99 | + </div> | |
| 100 | + </div> | |
| 101 | + </div> | |
| 102 | + | |
| 103 | + <div class="uk-grid"> | |
| 104 | + <div class="uk-width-2-3 domains"></div> | |
| 105 | + <div class="uk-width-1-3"> | |
| 106 | + <div class="uk-form-row"> | |
| 107 | + <label class="uk-form-label">里程类型</label> | |
| 108 | + <div class="uk-form-controls"> | |
| 109 | + <select class="form-control nt-dictionary" required name="mileageType" | |
| 110 | + data-group="MileageType"></select> | |
| 111 | + </div> | |
| 112 | + </div> | |
| 113 | + </div> | |
| 114 | + </div> | |
| 115 | + </form> | |
| 116 | + </script> | |
| 117 | + | |
| 118 | + <script id="st-v2-domains-changecar-form-temp" type="text/html"> | |
| 119 | + <div class="uk-grid"> | |
| 120 | + <div class="uk-width-1-2"> | |
| 121 | + <div class="uk-form-row"> | |
| 122 | + <label class="uk-form-label">车辆编码</label> | |
| 123 | + <div class="uk-form-controls"> | |
| 124 | + <div class="uk-autocomplete autocomplete-cars"> | |
| 125 | + <input type="text" name="nbbm" placeholder="车辆自编号" required> | |
| 126 | + </div> | |
| 127 | + </div> | |
| 128 | + </div> | |
| 129 | + </div> | |
| 130 | + <div class="uk-width-1-2 destroy_reason_wrap"> | |
| 131 | + <div class="uk-form-row"> | |
| 132 | + <label class="uk-form-label">换车原因</label> | |
| 133 | + <div class="uk-form-controls"> | |
| 134 | + <select class="form-control" name="reason" required> | |
| 135 | + <option value="">请选择...</option> | |
| 136 | + {{each inOutExps as exp i}} | |
| 137 | + <option value="{{exp}}">{{exp}}</option> | |
| 138 | + {{/each}} | |
| 139 | + </select> | |
| 140 | + </div> | |
| 141 | + </div> | |
| 142 | + </div> | |
| 143 | + </div> | |
| 144 | + </script> | |
| 145 | + | |
| 146 | + <script id="st-v2-domains-inout-form-temp" type="text/html"> | |
| 147 | + <div class="uk-grid"> | |
| 148 | + <div class="uk-width-1-2"> | |
| 149 | + <div class="uk-form-row" style="padding-top: 5px;"> | |
| 150 | + <label class="uk-form-label"></label> | |
| 151 | + <div class="uk-form-controls"> | |
| 152 | + <label data-uk-tooltip title="如是无人售票线路,忽略这个选项"> | |
| 153 | + <input type="checkbox" value=1 name="noClerk" class="i-cbox"> 无售票员 | |
| 154 | + </label> | |
| 155 | + </div> | |
| 156 | + </div> | |
| 157 | + </div> | |
| 158 | + <div class="uk-width-1-2 destroy_reason_wrap"> | |
| 159 | + <div class="uk-form-row"> | |
| 160 | + <label class="uk-form-label">进出场原因</label> | |
| 161 | + <div class="uk-form-controls"> | |
| 162 | + <select class="form-control" name="reason" required> | |
| 163 | + <option value="">请选择...</option> | |
| 164 | + {{each inOutExps as exp i}} | |
| 165 | + <option value="{{exp}}">{{exp}}</option> | |
| 166 | + {{/each}} | |
| 167 | + </select> | |
| 168 | + </div> | |
| 169 | + </div> | |
| 170 | + </div> | |
| 171 | + </div> | |
| 172 | + </script> | |
| 173 | + | |
| 174 | + <script id="st-v2-domains-service-form-temp" type="text/html"> | |
| 175 | + <div class="uk-grid"> | |
| 176 | + <div class="uk-width-1-2"> | |
| 177 | + <div class="uk-form-row" style="padding-top: 5px;"> | |
| 178 | + <label class="uk-form-label"></label> | |
| 179 | + <div class="uk-form-controls"> | |
| 180 | + <label> | |
| 181 | + <input type="checkbox" value=1 name="destroy" class="i-cbox"> 是否烂班 | |
| 182 | + </label> | |
| 183 | + </div> | |
| 184 | + </div> | |
| 185 | + </div> | |
| 186 | + <div class="uk-width-1-2 destroy_reason_wrap" style="display: none;"> | |
| 187 | + <div class="uk-form-row"> | |
| 188 | + <label class="uk-form-label">烂班原因</label> | |
| 189 | + <div class="uk-form-controls"> | |
| 190 | + <select class="form-control" name="reason" required> | |
| 191 | + <option value="">请选择...</option> | |
| 192 | + {{each adjustExps as exp i}} | |
| 193 | + <option value="{{exp}}">{{exp}}</option> | |
| 194 | + {{/each}} | |
| 195 | + </select> | |
| 196 | + </div> | |
| 197 | + </div> | |
| 198 | + </div> | |
| 199 | + </div> | |
| 200 | + </script> | |
| 201 | + <script> | |
| 202 | + (function () { | |
| 203 | + var modal = '#add-sub-task-main-modal', sch, | |
| 204 | + stationRoutes, | |
| 205 | + parks, | |
| 206 | + information, | |
| 207 | + st_park_data; | |
| 208 | + | |
| 209 | + $(modal).on('init', function (e, data) { | |
| 210 | + e.stopPropagation(); | |
| 211 | + sch = data.sch; | |
| 212 | + | |
| 213 | + //站到场数据 | |
| 214 | + st_park_data = gb_data_basic.get_stat_park_data()[sch.xlBm]; | |
| 215 | + //站点路由 | |
| 216 | + stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) { | |
| 217 | + return a.stationRouteCode - b.stationRouteCode; | |
| 218 | + }), 'directions'); | |
| 219 | + //停车场 | |
| 220 | + parks = gb_data_basic.simpleParksArray(); | |
| 221 | + //线路标准 | |
| 222 | + information = gb_data_basic.getLineInformation(sch.xlBm); | |
| 223 | + | |
| 224 | + var st_doms = gb_schedule_context_menu.get_st_doms(); | |
| 225 | + //普通 | |
| 226 | + $('.normalCont', modal).html(st_doms.custom_dom); | |
| 227 | + $('.add_custom_wrap', modal).trigger('init', data); | |
| 228 | + | |
| 229 | + //进出场班次 | |
| 230 | + if(sch.bcType=='in'||sch.bcType=='out'){ | |
| 231 | + $('.left_tabs_lg li[name=in_out]').remove(); | |
| 232 | + $('.left_tabs_lg li[name=range_turn]').remove(); | |
| 233 | + } | |
| 234 | + else{ | |
| 235 | + //进出场 | |
| 236 | + $('.inOutCont', modal).html(st_doms.inout_dom); | |
| 237 | + $('.add_inOut_wrap', modal).trigger('init', data); | |
| 238 | + //区间调头 | |
| 239 | + $('.rangeTurnCont', modal).html(st_doms.range_dom); | |
| 240 | + $('.add_range_wrap', modal).trigger('init', data); | |
| 241 | + } | |
| 242 | + }); | |
| 243 | + | |
| 244 | + //班次类型切换事件 | |
| 245 | + $(modal).on('change', 'select[name=type2]', reCalcInputs_type); | |
| 246 | + //烂班选项点击事件 | |
| 247 | + $(modal).on('change', 'input[name=destroy]', destroyClick); | |
| 248 | + //起终点站切换事件 | |
| 249 | + $(modal).on('change', 'select[name=startStation],select[name=endStation]', reCalcInputs_station); | |
| 250 | + //开始时间改变 | |
| 251 | + $(modal).on('input', 'input[name=startDate]', reCalcEndTime); | |
| 252 | + //公里数改变 | |
| 253 | + $(modal).on('input', 'input[name=mileage]', reCalcMileageCount); | |
| 254 | + //终点时间改变 | |
| 255 | + $(modal).on('input', 'input[name=endDate]', reCalcNext_s_time); | |
| 256 | + //进出场原因切换 | |
| 257 | + $(modal).on('change', 'select[name=reason]', reSynchroReason); | |
| 258 | + //里程类型改变 | |
| 259 | + $(modal).on('change', 'select[name=mileageType]', changeMileageType); | |
| 260 | + //关闭 | |
| 261 | + $(modal).on('click', '.task_form_close_icon', closeTaskForm); | |
| 262 | + | |
| 263 | + //公里合计footer | |
| 264 | + var re_count; | |
| 265 | + $('.footer_mileage_count', modal).on('refresh', function () { | |
| 266 | + if(re_count) | |
| 267 | + return; | |
| 268 | + re_count = true; | |
| 269 | + var that=this; | |
| 270 | + setTimeout(function () { | |
| 271 | + var fs = $('#tempScheduleContent li.uk-active form.sub_task_form_v2', modal); | |
| 272 | + var s=0,e=0,d=0,mileage; | |
| 273 | + $.each(fs, function () { | |
| 274 | + mileage = parseFloat($f('mileage',this).val()); | |
| 275 | + if($(this).hasClass('destroy_form')) | |
| 276 | + d = gb_common.accAdd(d, mileage); | |
| 277 | + else if($(this).hasClass('service_form')) | |
| 278 | + s = gb_common.accAdd(s, mileage); | |
| 279 | + else if($(this).hasClass('empty_form')) | |
| 280 | + e = gb_common.accAdd(e, mileage); | |
| 281 | + }); | |
| 282 | + | |
| 283 | + $('span',that).hide(); | |
| 284 | + if(s>0) | |
| 285 | + $('span.service_sum',that).html('营运: ' + s).show(); | |
| 286 | + if(e>0) | |
| 287 | + $('span.empty_sum',that).html('空驶: ' + e).show(); | |
| 288 | + if(d>0) | |
| 289 | + $('span.destroy_sum',that).html('烂班: ' + d).show(); | |
| 290 | + re_count=false; | |
| 291 | + }, 200); | |
| 292 | + }); | |
| 293 | + | |
| 294 | + /** | |
| 295 | + * 根据班次类型切换起终点下拉框 | |
| 296 | + */ | |
| 297 | + function reCalcInputs_type() { | |
| 298 | + var f = $(this).parents('.sub_task_form_v2'); | |
| 299 | + | |
| 300 | + var routes = stationRoutes[sch.xlDir] | |
| 301 | + , lastCode = routes[routes.length - 1].stationCode | |
| 302 | + , opts = '', park_opts = ''; | |
| 303 | + //station options | |
| 304 | + $.each(routes, function () { | |
| 305 | + opts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>' | |
| 306 | + }); | |
| 307 | + //park options | |
| 308 | + for (var code in parks) | |
| 309 | + park_opts += '<option value="' + code + '">' + parks[code] + '</option>'; | |
| 310 | + | |
| 311 | + var qdz = $f('startStation', f), zdz = $f('endStation', f), mType = $f('mileageType', f); | |
| 312 | + var domainsTemp; | |
| 313 | + switch ($(this).val()) { | |
| 314 | + case '3'://出场 | |
| 315 | + qdz.html(park_opts).val(information.carPark); | |
| 316 | + zdz.html(opts).trigger('change'); | |
| 317 | + mType.val('empty').attr('disabled', 'disabled').trigger('change'); | |
| 318 | + domainsTemp = 'st-v2-domains-inout-form-temp'; | |
| 319 | + /*//如果上一个form是进场 | |
| 320 | + try { | |
| 321 | + var prev_f = f.prev('.sub_task_form_v2'); | |
| 322 | + if ($f('type2', prev_f).val() == 2) | |
| 323 | + zdz.val($f('startStation', prev_f).val()); | |
| 324 | + } catch (e) { | |
| 325 | + console.log(e); | |
| 326 | + }*/ | |
| 327 | + break; | |
| 328 | + case '2'://进场 | |
| 329 | + qdz.html(opts) | |
| 330 | + zdz.html(park_opts).val(information.carPark).trigger('change'); | |
| 331 | + mType.val('empty').attr('disabled', 'disabled').trigger('change'); | |
| 332 | + domainsTemp = 'st-v2-domains-inout-form-temp'; | |
| 333 | + break; | |
| 334 | + default: | |
| 335 | + qdz.html(opts); | |
| 336 | + zdz.html(opts).val(lastCode).trigger('change'); | |
| 337 | + mType.val('service').removeAttr('disabled').trigger('change'); | |
| 338 | + domainsTemp = 'st-v2-domains-service-form-temp'; | |
| 339 | + } | |
| 340 | + | |
| 341 | + //可变选项区域 | |
| 342 | + $('.domains', f).html(template(domainsTemp, { | |
| 343 | + adjustExps: gb_common.adjustExps, | |
| 344 | + inOutExps: gb_common.inOutExps | |
| 345 | + })); | |
| 346 | + | |
| 347 | + //校验reason | |
| 348 | + f.trigger('add_reason_field'); | |
| 349 | + //qdz.trigger('change'); | |
| 350 | + //zdz.trigger('change'); | |
| 351 | + } | |
| 352 | + | |
| 353 | + /** | |
| 354 | + * 根据站位站距计算公里和时间 | |
| 355 | + */ | |
| 356 | + function reCalcInputs_station() { | |
| 357 | + var f = $(this).parents('.sub_task_form_v2') | |
| 358 | + , type2 = $f('type2', f).val()//班次类型 | |
| 359 | + , qdzCode = $f('startStation', f).val()//起点站 | |
| 360 | + , zdzCode = $f('endStation', f).val()//终点站 | |
| 361 | + , startDate = $f('startDate', f).val();//开始时间 | |
| 362 | + var mileage, time, upDown; | |
| 363 | + switch (type2) { | |
| 364 | + case '2': | |
| 365 | + upDown = inout_updown(qdzCode, sch); | |
| 366 | + break; | |
| 367 | + case '3': | |
| 368 | + upDown = inout_updown(zdzCode, sch); | |
| 369 | + break; | |
| 370 | + default: | |
| 371 | + upDown = sch.xlDir | |
| 372 | + } | |
| 373 | + | |
| 374 | + //从站到场里获取数据 | |
| 375 | + var stp = search_st_park(f); | |
| 376 | + if(stp){ | |
| 377 | + mileage=type2==2?stp['mileage1']:stp['mileage2']; | |
| 378 | + time=type2==2?stp['time1']:stp['time2']; | |
| 379 | + } | |
| 380 | + else{ | |
| 381 | + if(upDown==-1) | |
| 382 | + return; | |
| 383 | + switch (upDown + '_' + type2) { | |
| 384 | + case '0_3'://上行出场 | |
| 385 | + mileage = information.upOutMileage; | |
| 386 | + time = information.upOutTimer; | |
| 387 | + break; | |
| 388 | + case '1_3'://下行出场 | |
| 389 | + mileage = information.downOutMileage; | |
| 390 | + time = information.downOutTimer; | |
| 391 | + break; | |
| 392 | + case '0_2'://上行进场 | |
| 393 | + mileage = information.upInMileage; | |
| 394 | + time = information.upInTimer; | |
| 395 | + break; | |
| 396 | + case '1_2'://下行进场 | |
| 397 | + mileage = information.downInMileage; | |
| 398 | + time = information.downInTimer; | |
| 399 | + break; | |
| 400 | + default: | |
| 401 | + //线路上站点间 | |
| 402 | + mileage = calcMileageByRoutes(stationRoutes[upDown], qdzCode, zdzCode); | |
| 403 | + time = gb_common.mul(gb_common.accDiv(sch.bcsj, sch.jhlcOrig), mileage); | |
| 404 | + } | |
| 405 | + } | |
| 406 | + | |
| 407 | + $f('mileage', f).val(mileage); | |
| 408 | + var et = moment(startDate, 'HH:mm').add(time, 'minutes'); | |
| 409 | + $f('endDate', f).val(et.format('HH:mm')); | |
| 410 | + | |
| 411 | + if (type2 != 1) { | |
| 412 | + reCalcEndTime.call(this); | |
| 413 | + } | |
| 414 | + reCalcMileageCount(); | |
| 415 | + } | |
| 416 | + | |
| 417 | + /** | |
| 418 | + * 计算结束时间 | |
| 419 | + */ | |
| 420 | + function reCalcEndTime() { | |
| 421 | + var f = $(this).parents('.sub_task_form_v2') | |
| 422 | + , startDate = $f('startDate', f).val()//开始时间 | |
| 423 | + , mileage = $f('mileage', f).val()//公里 | |
| 424 | + , type2 = $f('type2', f).val();//班次类型 | |
| 425 | + if (!startDate || !mileage) | |
| 426 | + return; | |
| 427 | + | |
| 428 | + var time; | |
| 429 | + //从站到场里获取数据 | |
| 430 | + var stp = search_st_park(f); | |
| 431 | + if(stp){ | |
| 432 | + mileage=type2==2?stp['mileage1']:stp['mileage2']; | |
| 433 | + time=type2==2?stp['time1']:stp['time2']; | |
| 434 | + } | |
| 435 | + else{ | |
| 436 | + if (type2 == 1) { | |
| 437 | + time = gb_common.mul(gb_common.accDiv(sch.bcsj, sch.jhlcOrig), mileage); | |
| 438 | + } | |
| 439 | + else if (type2 == 2) { | |
| 440 | + //进场 | |
| 441 | + var qdzCode = $f('startStation', f).val(), | |
| 442 | + updown = inout_updown(qdzCode, sch); | |
| 443 | + | |
| 444 | + if (updown == -1) | |
| 445 | + return; | |
| 446 | + time = updown == 0 ? information.upInTimer : information.downInTimer; | |
| 447 | + } | |
| 448 | + else if (type2 == 3) { | |
| 449 | + //出场 | |
| 450 | + var zdzCode = $f('endStation', f).val(), | |
| 451 | + updown = inout_updown(zdzCode, sch); | |
| 452 | + | |
| 453 | + if (updown == -1) | |
| 454 | + return; | |
| 455 | + time = updown == 0 ? information.upOutTimer : information.downOutTimer; | |
| 456 | + } | |
| 457 | + } | |
| 458 | + | |
| 459 | + var et = moment(startDate, 'HH:mm').add(time, 'minutes'); | |
| 460 | + $f('endDate', f).val(et.format('HH:mm')).trigger('input'); | |
| 461 | + } | |
| 462 | + | |
| 463 | + /** | |
| 464 | + * 将结束时间写入下一个表单的开始时间 | |
| 465 | + */ | |
| 466 | + function reCalcNext_s_time() { | |
| 467 | + var f = $(this).parents('.sub_task_form_v2'), | |
| 468 | + et = $f('endDate', f).val(); | |
| 469 | + | |
| 470 | + var nf = gb_common.next_elem('sub_task_form_v2', f); | |
| 471 | + | |
| 472 | + if (f.attr('destroy')) | |
| 473 | + et = $f('startDate', f).val(); | |
| 474 | + | |
| 475 | + if (nf.length > 0) { | |
| 476 | + $f('startDate', nf).val(et).trigger('input'); | |
| 477 | + } | |
| 478 | + } | |
| 479 | + | |
| 480 | + /** | |
| 481 | + * 切换原因 | |
| 482 | + */ | |
| 483 | + function reSynchroReason() { | |
| 484 | + var f = $(this).parents('.sub_task_form_v2'), | |
| 485 | + reason = $(this).val(); | |
| 486 | + | |
| 487 | + var nf = gb_common.next_elem('sub_task_form_v2', f), | |
| 488 | + nInput = $f('reason', nf); | |
| 489 | + | |
| 490 | + if (nf.length > 0 && nInput.length > 0) { | |
| 491 | + nInput.val(reason).trigger('change'); | |
| 492 | + } | |
| 493 | + else { | |
| 494 | + var cont = f.parents('li.tab_cont'), | |
| 495 | + remInput = $('.remarks_form [name=remarks]', cont); | |
| 496 | + | |
| 497 | + if(remInput.val()==reason + ',') | |
| 498 | + return; | |
| 499 | + remInput.val(remInput.val() + reason + ','); | |
| 500 | + } | |
| 501 | + } | |
| 502 | + | |
| 503 | + function calcMileageByRoutes(routes, s, e) { | |
| 504 | + var code, flag, mileage = 0; | |
| 505 | + $.each(routes, function () { | |
| 506 | + code = this['stationCode']; | |
| 507 | + if (flag) { | |
| 508 | + if (!this.distances) | |
| 509 | + this.distances = 0; | |
| 510 | + mileage = gb_common.accAdd(mileage, this.distances); | |
| 511 | + } | |
| 512 | + if (code == s) | |
| 513 | + flag = true; | |
| 514 | + if (code == e) | |
| 515 | + return false; | |
| 516 | + }); | |
| 517 | + return mileage; | |
| 518 | + } | |
| 519 | + | |
| 520 | + function destroyClick() { | |
| 521 | + var f = $(this).parents('.sub_task_form_v2'); | |
| 522 | + if (this.checked) { | |
| 523 | + $('.destroy_reason_wrap', f).show(); | |
| 524 | + f.attr('destroy', true).addClass('destroy_form'); | |
| 525 | + } | |
| 526 | + else { | |
| 527 | + $('.destroy_reason_wrap', f).hide(); | |
| 528 | + f.removeAttr('destroy').removeClass('destroy_form'); | |
| 529 | + } | |
| 530 | + reCalcMileageCount(); | |
| 531 | + } | |
| 532 | + | |
| 533 | + function changeMileageType() { | |
| 534 | + var f = $(this).parents('.sub_task_form_v2'), | |
| 535 | + mileageType = $(this).val(); | |
| 536 | + if (mileageType) { | |
| 537 | + f.removeClass('service_form empty_form').addClass(mileageType + '_form'); | |
| 538 | + reCalcMileageCount(); | |
| 539 | + } | |
| 540 | + } | |
| 541 | + | |
| 542 | + function $f(name, f) { | |
| 543 | + return $('[name=' + name + ']', f); | |
| 544 | + } | |
| 545 | + | |
| 546 | + function closeTaskForm() { | |
| 547 | + $(this).parents('.sub_task_form_v2').remove(); | |
| 548 | + reCalcMileageCount(); | |
| 549 | + } | |
| 550 | + | |
| 551 | + /** | |
| 552 | + * 进出场上下行 | |
| 553 | + * @param qdzCode | |
| 554 | + * @param sch | |
| 555 | + */ | |
| 556 | + function inout_updown(station, sch) { | |
| 557 | + if (station == sch.qdzCode) | |
| 558 | + return sch.xlDir; | |
| 559 | + else if (station == sch.zdzCode) | |
| 560 | + return sch.xlDir == 0 ? 1 : 0; | |
| 561 | + else | |
| 562 | + return -1; | |
| 563 | + } | |
| 564 | + | |
| 565 | + function search_st_park(f) { | |
| 566 | + if(!st_park_data) | |
| 567 | + return; | |
| 568 | + var stp; | |
| 569 | + var qdSelect=$f('startStation', f)[0],zdSelect=$f('endStation', f)[0]; | |
| 570 | + | |
| 571 | + var qdzName=qdSelect.options[qdSelect.options.selectedIndex].text, | |
| 572 | + zdzName=zdSelect.options[zdSelect.options.selectedIndex].text, | |
| 573 | + type2 = $f('type2', f).val(); | |
| 574 | + | |
| 575 | + if(type2!=2 && type2!=3) | |
| 576 | + return; | |
| 577 | + | |
| 578 | + $.each(st_park_data, function () { | |
| 579 | + if((type2==2 && this.stationName==qdzName && this.parkName==zdzName) | |
| 580 | + || (type2==3 && this.stationName==zdzName && this.parkName==qdzName)){ | |
| 581 | + stp = this; | |
| 582 | + return false; | |
| 583 | + } | |
| 584 | + }); | |
| 585 | + | |
| 586 | + return stp; | |
| 587 | + } | |
| 588 | + | |
| 589 | + $('.left_tabs_lg', modal).on('show.uk.switcher', reCalcMileageCount); | |
| 590 | + | |
| 591 | + function reCalcMileageCount() { | |
| 592 | + $('.footer_mileage_count', modal).trigger('refresh'); | |
| 593 | + var f = $(this).parents('.sub_task_form_v2'); | |
| 594 | + if($f('type2',f).val()==1) | |
| 595 | + reCalcEndTime.call(this); | |
| 596 | + } | |
| 597 | + | |
| 598 | + | |
| 599 | + var folder = '/real_control_v2/fragments/line_schedule/context_menu'; | |
| 600 | + /** | |
| 601 | + * 弹出站 到 场对照表 | |
| 602 | + */ | |
| 603 | + $('.station_to_park_link', modal).on('click', function () { | |
| 604 | + open_modal(folder + '/utils/station_to_park.html', { | |
| 605 | + sch: sch | |
| 606 | + }, {center: false, bgclose: false, modal: false}); | |
| 607 | + }); | |
| 608 | + })(); | |
| 609 | + </script> | |
| 610 | 610 | </div> |
| 611 | 611 | \ No newline at end of file | ... | ... |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/utils/station_to_park.html
| 1 | -<div class="uk-modal ct-form-modal" id="station_to_park-modal"> | |
| 2 | - <div class="uk-modal-dialog" style="width: 780px;"> | |
| 3 | - <a href="" class="uk-modal-close uk-close"></a> | |
| 4 | - <div class="uk-modal-header"> | |
| 5 | - <h2>站到场历时、公里对照表</h2></div> | |
| 6 | - | |
| 7 | - <div class="ct_lists"> | |
| 8 | - </div> | |
| 9 | - | |
| 10 | - <div class="ct_describe" >从历史的子任务、临加里采集进出场历时和公里</div> | |
| 11 | - </div> | |
| 12 | - | |
| 13 | - <script id="station_park_list-temp" type="text/html"> | |
| 14 | - {{each list as obj i}} | |
| 15 | - {{if obj.mileage1 != obj.mileage2}} | |
| 16 | - <div class="s_2_park_form_wrap" data-id="{{obj.id}}"> | |
| 17 | - <span class="ct_close"><i class="uk-icon-times"></i></span> | |
| 18 | - <form class="uk-form"> | |
| 19 | - {{if obj.time1!=null && obj.mileage1!=null}} | |
| 20 | - <div class="uk-grid"> | |
| 21 | - <div class="uk-width-1-4"> | |
| 22 | - <label class="">起点:</label> | |
| 23 | - <input type="text" value="{{obj.stationName}}" class="uk-width-1-1" readonly> | |
| 24 | - </div> | |
| 25 | - <div class="uk-width-1-4"> | |
| 26 | - <label>终点:</label> | |
| 27 | - <input type="text" value="{{obj.parkName}}" class="uk-width-1-1" readonly> | |
| 28 | - </div> | |
| 29 | - <div class="uk-width-2-4 uk-grid"> | |
| 30 | - <div class="uk-width-1-3"> | |
| 31 | - <label>历时:</label> | |
| 32 | - <input type="text" value="{{obj.time1}}" class="uk-width-1-1" readonly> | |
| 33 | - </div> | |
| 34 | - <div class="uk-width-1-3"> | |
| 35 | - <label>公里:</label> | |
| 36 | - <input type="text" value="{{obj.mileage1}}" class="uk-width-1-1" readonly> | |
| 37 | - </div> | |
| 38 | - <div class="uk-width-1-3"> | |
| 39 | - <label class="bottom_label">进场</label> | |
| 40 | - </div> | |
| 41 | - </div> | |
| 42 | - </div> | |
| 43 | - {{/if}} | |
| 44 | - {{if obj.time2!=null && obj.mileage2!=null}} | |
| 45 | - <div class="uk-grid"> | |
| 46 | - <div class="uk-width-1-4"> | |
| 47 | - <input type="text" value="{{obj.parkName}}" class="uk-width-1-1" readonly> | |
| 48 | - </div> | |
| 49 | - <div class="uk-width-1-4"> | |
| 50 | - <input type="text" value="{{obj.stationName}}" class="uk-width-1-1" readonly> | |
| 51 | - </div> | |
| 52 | - <div class="uk-width-2-4 uk-grid"> | |
| 53 | - <div class="uk-width-1-3"> | |
| 54 | - <input type="text" value="{{obj.time2}}" class="uk-width-1-1" readonly> | |
| 55 | - </div> | |
| 56 | - <div class="uk-width-1-3"> | |
| 57 | - <input type="text" value="{{obj.mileage2}}" class="uk-width-1-1" readonly> | |
| 58 | - </div> | |
| 59 | - <div class="uk-width-1-3"> | |
| 60 | - <label class="bottom_label_2">出场</label> | |
| 61 | - </div> | |
| 62 | - </div> | |
| 63 | - </div> | |
| 64 | - {{/if}} | |
| 65 | - </form> | |
| 66 | - </div> | |
| 67 | - {{else}} | |
| 68 | - <div class="s_2_park_form_wrap" data-id="{{obj.id}}"> | |
| 69 | - <span class="ct_close"><i class="uk-icon-times"></i></span> | |
| 70 | - <form class="uk-form"> | |
| 71 | - <div class="uk-grid"> | |
| 72 | - <div class="uk-width-1-4"> | |
| 73 | - <label class="">起点:</label> | |
| 74 | - <input type="text" value="{{obj.stationName}}" class="uk-width-1-1" readonly> | |
| 75 | - </div> | |
| 76 | - <div class="uk-width-1-4"> | |
| 77 | - <label>终点:</label> | |
| 78 | - <input type="text" value="{{obj.parkName}}" class="uk-width-1-1" readonly> | |
| 79 | - </div> | |
| 80 | - <div class="uk-width-2-4 uk-grid"> | |
| 81 | - <div class="uk-width-1-3"> | |
| 82 | - <label>历时:</label> | |
| 83 | - <input type="text" value="{{obj.time1}}" class="uk-width-1-1" readonly> | |
| 84 | - </div> | |
| 85 | - <div class="uk-width-1-3"> | |
| 86 | - <label>公里:</label> | |
| 87 | - <input type="text" value="{{obj.mileage1}}" class="uk-width-1-1" readonly> | |
| 88 | - </div> | |
| 89 | - <div class="uk-width-1-3"> | |
| 90 | - <label class="bottom_label"><input type="checkbox" disabled checked> 进=出 </label> | |
| 91 | - </div> | |
| 92 | - </div> | |
| 93 | - </div> | |
| 94 | - </form> | |
| 95 | - </div> | |
| 96 | - {{/if}} | |
| 97 | - {{/each}} | |
| 98 | - </script> | |
| 99 | - | |
| 100 | - <script> | |
| 101 | - (function () { | |
| 102 | - var modal = '#station_to_park-modal', sch; | |
| 103 | - | |
| 104 | - $(modal).on('init', function (e, data) { | |
| 105 | - e.stopPropagation(); | |
| 106 | - sch = data.sch; | |
| 107 | - | |
| 108 | - var list = gb_data_basic.get_stat_park_data()[sch.xlBm]; | |
| 109 | - if(!list) | |
| 110 | - return; | |
| 111 | - list.sort(function (a, b) { | |
| 112 | - return a.stationName.localeCompare(b.stationName); | |
| 113 | - }); | |
| 114 | - | |
| 115 | - var htmlStr = template('station_park_list-temp', {list: list}); | |
| 116 | - $('.ct_lists', modal).html(htmlStr); | |
| 117 | - }); | |
| 118 | - | |
| 119 | - $(modal).on('click', '.s_2_park_form_wrap>.ct_close', function () { | |
| 120 | - var wrap=$(this).parent(), | |
| 121 | - id=wrap.data('id'); | |
| 122 | - | |
| 123 | - gb_common.$post('/basic/deleteStation2Park', {lineCode: sch.xlBm, id: id}, function () { | |
| 124 | - gb_data_basic.reload_stat_park_data(); | |
| 125 | - wrap.remove(); | |
| 126 | - }); | |
| 127 | - }); | |
| 128 | - })(); | |
| 129 | - </script> | |
| 130 | -</div> | |
| 1 | +<div class="uk-modal ct-form-modal" id="station_to_park-modal"> | |
| 2 | + <div class="uk-modal-dialog" style="width: 780px;"> | |
| 3 | + <a href="" class="uk-modal-close uk-close"></a> | |
| 4 | + <div class="uk-modal-header"> | |
| 5 | + <h2>站到场历时、公里对照表</h2></div> | |
| 6 | + | |
| 7 | + <div class="ct_lists"> | |
| 8 | + </div> | |
| 9 | + | |
| 10 | + <div class="ct_describe" >从历史的子任务、临加里采集进出场历时和公里</div> | |
| 11 | + </div> | |
| 12 | + | |
| 13 | + <script id="station_park_list-temp" type="text/html"> | |
| 14 | + {{each list as obj i}} | |
| 15 | + {{if obj.mileage1 != obj.mileage2}} | |
| 16 | + <div class="s_2_park_form_wrap" data-id="{{obj.id}}"> | |
| 17 | + <span class="ct_close"><i class="uk-icon-times"></i></span> | |
| 18 | + <form class="uk-form"> | |
| 19 | + {{if obj.time1!=null && obj.mileage1!=null}} | |
| 20 | + <div class="uk-grid"> | |
| 21 | + <div class="uk-width-1-4"> | |
| 22 | + <label class="">起点:</label> | |
| 23 | + <input type="text" value="{{obj.stationName}}" class="uk-width-1-1" readonly> | |
| 24 | + </div> | |
| 25 | + <div class="uk-width-1-4"> | |
| 26 | + <label>终点:</label> | |
| 27 | + <input type="text" value="{{obj.parkName}}" class="uk-width-1-1" readonly> | |
| 28 | + </div> | |
| 29 | + <div class="uk-width-2-4 uk-grid"> | |
| 30 | + <div class="uk-width-1-3"> | |
| 31 | + <label>历时:</label> | |
| 32 | + <input type="text" value="{{obj.time1}}" class="uk-width-1-1" readonly> | |
| 33 | + </div> | |
| 34 | + <div class="uk-width-1-3"> | |
| 35 | + <label>公里:</label> | |
| 36 | + <input type="text" value="{{obj.mileage1}}" class="uk-width-1-1" readonly> | |
| 37 | + </div> | |
| 38 | + <div class="uk-width-1-3"> | |
| 39 | + <label class="bottom_label">进场</label> | |
| 40 | + </div> | |
| 41 | + </div> | |
| 42 | + </div> | |
| 43 | + {{/if}} | |
| 44 | + {{if obj.time2!=null && obj.mileage2!=null}} | |
| 45 | + <div class="uk-grid"> | |
| 46 | + <div class="uk-width-1-4"> | |
| 47 | + <input type="text" value="{{obj.parkName}}" class="uk-width-1-1" readonly> | |
| 48 | + </div> | |
| 49 | + <div class="uk-width-1-4"> | |
| 50 | + <input type="text" value="{{obj.stationName}}" class="uk-width-1-1" readonly> | |
| 51 | + </div> | |
| 52 | + <div class="uk-width-2-4 uk-grid"> | |
| 53 | + <div class="uk-width-1-3"> | |
| 54 | + <input type="text" value="{{obj.time2}}" class="uk-width-1-1" readonly> | |
| 55 | + </div> | |
| 56 | + <div class="uk-width-1-3"> | |
| 57 | + <input type="text" value="{{obj.mileage2}}" class="uk-width-1-1" readonly> | |
| 58 | + </div> | |
| 59 | + <div class="uk-width-1-3"> | |
| 60 | + <label class="bottom_label_2">出场</label> | |
| 61 | + </div> | |
| 62 | + </div> | |
| 63 | + </div> | |
| 64 | + {{/if}} | |
| 65 | + </form> | |
| 66 | + </div> | |
| 67 | + {{else}} | |
| 68 | + <div class="s_2_park_form_wrap" data-id="{{obj.id}}"> | |
| 69 | + <span class="ct_close"><i class="uk-icon-times"></i></span> | |
| 70 | + <form class="uk-form"> | |
| 71 | + <div class="uk-grid"> | |
| 72 | + <div class="uk-width-1-4"> | |
| 73 | + <label class="">起点:</label> | |
| 74 | + <input type="text" value="{{obj.stationName}}" class="uk-width-1-1" readonly> | |
| 75 | + </div> | |
| 76 | + <div class="uk-width-1-4"> | |
| 77 | + <label>终点:</label> | |
| 78 | + <input type="text" value="{{obj.parkName}}" class="uk-width-1-1" readonly> | |
| 79 | + </div> | |
| 80 | + <div class="uk-width-2-4 uk-grid"> | |
| 81 | + <div class="uk-width-1-3"> | |
| 82 | + <label>历时:</label> | |
| 83 | + <input type="text" value="{{obj.time1}}" class="uk-width-1-1" readonly> | |
| 84 | + </div> | |
| 85 | + <div class="uk-width-1-3"> | |
| 86 | + <label>公里:</label> | |
| 87 | + <input type="text" value="{{obj.mileage1}}" class="uk-width-1-1" readonly> | |
| 88 | + </div> | |
| 89 | + <div class="uk-width-1-3"> | |
| 90 | + <label class="bottom_label"><input type="checkbox" disabled checked> 进=出 </label> | |
| 91 | + </div> | |
| 92 | + </div> | |
| 93 | + </div> | |
| 94 | + </form> | |
| 95 | + </div> | |
| 96 | + {{/if}} | |
| 97 | + {{/each}} | |
| 98 | + </script> | |
| 99 | + | |
| 100 | + <script> | |
| 101 | + (function () { | |
| 102 | + var modal = '#station_to_park-modal', sch; | |
| 103 | + | |
| 104 | + $(modal).on('init', function (e, data) { | |
| 105 | + e.stopPropagation(); | |
| 106 | + sch = data.sch; | |
| 107 | + | |
| 108 | + var list = gb_data_basic.get_stat_park_data()[sch.xlBm]; | |
| 109 | + if(!list) | |
| 110 | + return; | |
| 111 | + list.sort(function (a, b) { | |
| 112 | + return a.stationName.localeCompare(b.stationName); | |
| 113 | + }); | |
| 114 | + | |
| 115 | + var htmlStr = template('station_park_list-temp', {list: list}); | |
| 116 | + $('.ct_lists', modal).html(htmlStr); | |
| 117 | + }); | |
| 118 | + | |
| 119 | + $(modal).on('click', '.s_2_park_form_wrap>.ct_close', function () { | |
| 120 | + var wrap=$(this).parent(), | |
| 121 | + id=wrap.data('id'); | |
| 122 | + | |
| 123 | + gb_common.$post('/basic/deleteStation2Park', {lineCode: sch.xlBm, id: id}, function () { | |
| 124 | + gb_data_basic.reload_stat_park_data(); | |
| 125 | + wrap.remove(); | |
| 126 | + }); | |
| 127 | + }); | |
| 128 | + })(); | |
| 129 | + </script> | |
| 130 | +</div> | ... | ... |