Commit 4ad64ba2cfcc0e1c234e84aed6807ab38e400069

Authored by 潘钊
2 parents b2a494ef adad8ec4

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
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&lt;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&lt;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&lt;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&lt;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&lt;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&lt;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&lt;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> &nbsp;保存</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> &nbsp;保存</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> &nbsp;保存</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> &nbsp;保存</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   - 合计&nbsp;&nbsp;
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 + 合计&nbsp;&nbsp;
  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>
... ...