Commit 78a2f1cee535a06ad580904db807945e86b4cbd0

Authored by 潘钊
1 parent 3385ffa4

update...

src/main/java/com/bsth/controller/gps/GpsController.java
... ... @@ -212,5 +212,15 @@ public class GpsController {
212 212 map.put("pageData","10");
213 213 return gpsService.Pagequery(map);
214 214 }
  215 +
  216 + /**
  217 + * 获取线路下所有车辆,包括实时设备 和 计划排班
  218 + * @param lineCode
  219 + * @return
  220 + */
  221 + @RequestMapping(value = "/allCarsByLine",method = RequestMethod.GET)
  222 + public Map<String, Object> allCarsByLine(String lineCode){
  223 + return gpsService.allCarsByLine(lineCode);
  224 + }
215 225  
216 226 }
... ...
src/main/java/com/bsth/data/gpsdata_v2/GpsRealData.java
... ... @@ -135,14 +135,28 @@ public class GpsRealData {
135 135 continue;
136 136  
137 137 sch = dayOfSchedule.execPlanMap().get(gps.getNbbm());
138   - if (null != sch)
  138 + if (null != sch){
139 139 gps.setSchId(sch.getId());
  140 + if(!sch.getXlBm().equals(lineCode)){
  141 + //车辆在其他线路营运
  142 + gps.setRemark("执行 " + sch.getXlName() + " " + sch.getDfsj() + " 班次");
  143 + gps.setPlanCode(sch.getXlBm());
  144 + }
  145 + else
  146 + gps.setRemark(null);
  147 + }else
  148 + gps.setRemark(null);
  149 +
140 150 rs.add(gps);
141 151 }
142 152  
143 153 return rs;
144 154 }
145 155  
  156 + public static Set<String> findDevices(String lineCode){
  157 + return lineCode2Devices.get(lineCode);
  158 + }
  159 +
146 160 public List<GpsEntity> get(List<String> pArray) {
147 161 List<GpsEntity> list = new ArrayList<>();
148 162  
... ...
src/main/java/com/bsth/data/gpsdata_v2/entity/GpsEntity.java
... ... @@ -100,6 +100,9 @@ public class GpsEntity implements Cloneable{
100 100 */
101 101 private int source = -1;
102 102  
  103 + private String remark;
  104 + private String planCode;
  105 +
103 106 public Object clone() {
104 107 try {
105 108 return super.clone();
... ... @@ -360,4 +363,20 @@ public class GpsEntity implements Cloneable{
360 363 public void setPremiseCode(String premiseCode) {
361 364 this.premiseCode = premiseCode;
362 365 }
  366 +
  367 + public String getRemark() {
  368 + return remark;
  369 + }
  370 +
  371 + public void setRemark(String remark) {
  372 + this.remark = remark;
  373 + }
  374 +
  375 + public String getPlanCode() {
  376 + return planCode;
  377 + }
  378 +
  379 + public void setPlanCode(String planCode) {
  380 + this.planCode = planCode;
  381 + }
363 382 }
... ...
src/main/java/com/bsth/data/pilot80/PilotReport.java
... ... @@ -20,9 +20,7 @@ import org.slf4j.LoggerFactory;
20 20 import org.springframework.beans.factory.annotation.Autowired;
21 21 import org.springframework.stereotype.Component;
22 22  
23   -import java.util.ArrayList;
24   -import java.util.Collection;
25   -import java.util.List;
  23 +import java.util.*;
26 24 import java.util.concurrent.ConcurrentHashMap;
27 25  
28 26 /**
... ... @@ -55,10 +53,16 @@ public class PilotReport {
55 53  
56 54 private static ConcurrentHashMap<Integer, D80> d80Maps;
57 55  
  56 + /**
  57 + * 设备 ——> 最后一条请求出场记录
  58 + */
  59 + public static ConcurrentHashMap<String, D80> qqccMap;
  60 +
58 61 Logger logger = LoggerFactory.getLogger(PilotReport.class);
59 62  
60 63 static {
61 64 d80Maps = new ConcurrentHashMap<>();
  65 + qqccMap = new ConcurrentHashMap<>();
62 66 }
63 67  
64 68 public void report(D80 d80) {
... ... @@ -81,6 +85,7 @@ public class PilotReport {
81 85 switch (d80.getData().getRequestCode()) {
82 86 //出场请求
83 87 case 0xA3:
  88 + qqccMap.put(d80.getDeviceId(), d80);
84 89 ScheduleRealInfo outSch = dayOfSchedule.searchNearByBcType(nbbm, "out");
85 90 //如果有对应出场班次
86 91 if (outSch != null && StringUtils.isEmpty(outSch.getFcsjActual())) {
... ... @@ -241,6 +246,7 @@ public class PilotReport {
241 246 List<D80> rems = findByLine(lineCode);
242 247 for (D80 d80 : rems) {
243 248 d80Maps.remove(d80.getId());
  249 + qqccMap.remove(d80.getDeviceId());
244 250 }
245 251  
246 252 rems.clear();
... ...
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
... ... @@ -970,7 +970,6 @@ public class DayOfSchedule {
970 970  
971 971 //删除班次数据
972 972 removeRealSch(lineCode, rq);
973   - //删除相关班次修正记录
974 973  
975 974 }
976 975 rs.put("status", ResponseCode.SUCCESS);
... ...
src/main/java/com/bsth/service/gps/GpsService.java
... ... @@ -45,4 +45,6 @@ public interface GpsService {
45 45 String enddate) throws ParseException;
46 46  
47 47 Map<String, Object> Pagequery(Map<String, Object> map);
  48 +
  49 + Map<String,Object> allCarsByLine(String lineCode);
48 50 }
... ...
src/main/java/com/bsth/service/gps/GpsServiceImpl.java
... ... @@ -7,9 +7,11 @@ import com.bsth.data.gpsdata_v2.GpsRealData;
7 7 import com.bsth.data.gpsdata_v2.cache.GeoCacheData;
8 8 import com.bsth.data.gpsdata_v2.entity.GpsEntity;
9 9 import com.bsth.data.gpsdata_v2.utils.GeoUtils;
  10 +import com.bsth.data.pilot80.PilotReport;
10 11 import com.bsth.data.safe_driv.SafeDriv;
11 12 import com.bsth.data.safe_driv.SafeDrivCenter;
12 13 import com.bsth.data.schedule.DayOfSchedule;
  14 +import com.bsth.entity.directive.D80;
13 15 import com.bsth.entity.realcontrol.ScheduleRealInfo;
14 16 import com.bsth.repository.CarParkRepository;
15 17 import com.bsth.repository.StationRepository;
... ... @@ -1174,6 +1176,89 @@ public class GpsServiceImpl implements GpsService {
1174 1176 return paramMap;
1175 1177 }
1176 1178  
  1179 + @Override
  1180 + public Map<String, Object> allCarsByLine(String lineCode) {
  1181 + Map<String, Object> map = new HashMap();
  1182 + try{
  1183 + List<Map<String, Object>> list = new ArrayList<>();
  1184 + Map<String, Object> item;
  1185 + GpsEntity gps;
  1186 + //当天线路下营运的车辆
  1187 + Set<String> cars = dayOfSchedule.findCarByLineCode(lineCode);
  1188 + ScheduleRealInfo sch;
  1189 + String device;
  1190 +
  1191 + Map<String, Integer> allDevices = new HashMap<>();
  1192 + String execStr = "";
  1193 + D80 d80;
  1194 + for(String nbbm : cars){
  1195 + item = new HashMap<>();
  1196 + device = BasicData.deviceId2NbbmMap.inverse().get(nbbm);
  1197 + allDevices.put(device, 1);
  1198 + item.put("nbbm", nbbm);
  1199 + item.put("device", device);
  1200 +
  1201 + sch = dayOfSchedule.executeCurr(nbbm);
  1202 + if(null != sch){
  1203 + execStr = (sch.getXlDir().equals("0")?"上行":"下行") + "("+sch.getDfsj()+")";
  1204 + if(!sch.getXlBm().equals(lineCode))
  1205 + execStr = sch.getXlName()+execStr;
  1206 + else
  1207 + item.put("schId", sch.getId());
  1208 + item.put("exec", execStr);
  1209 + }
  1210 +
  1211 + gps = gpsRealData.get(device);
  1212 + if(null != gps){
  1213 + item.put("loc", gps.getStationName());
  1214 + item.put("lineCodeReal", gps.getLineId());
  1215 + item.put("status", gps.isOffline()?"离线":"在线");
  1216 + item.put("gpsTs", gps.getTimestamp());
  1217 + }
  1218 + //请求出场时间
  1219 + d80 = PilotReport.qqccMap.get(device);
  1220 + if(null != d80)
  1221 + item.put("qqcc", d80.getTimestamp());
  1222 +
  1223 + list.add(item);
  1224 + }
  1225 +
  1226 + //车载编码落在该线路的设备
  1227 + Set<String> devices = gpsRealData.findDevices(lineCode);
  1228 + for(String d : devices){
  1229 + if(allDevices.containsKey(d))
  1230 + continue;
  1231 +
  1232 + gps = gpsRealData.get(d);
  1233 + if(null == gps)
  1234 + continue;
  1235 +
  1236 + item = new HashMap<>();
  1237 + item.put("nbbm", gps.getNbbm());
  1238 + item.put("device", d);
  1239 + item.put("loc", gps.getStationName());
  1240 + item.put("lineCodeReal", gps.getLineId());
  1241 + item.put("status", gps.isOffline()?"离线":"在线");
  1242 + item.put("gpsTs", gps.getTimestamp());
  1243 +
  1244 + //请求出场时间
  1245 + d80 = PilotReport.qqccMap.get(d);
  1246 + if(null != d80)
  1247 + item.put("qqcc", d80.getTimestamp());
  1248 +
  1249 + list.add(item);
  1250 + }
  1251 +
  1252 + map.put("list", list);
  1253 + map.put("status", ResponseCode.SUCCESS);
  1254 + }catch (Exception e){
  1255 + logger.error("", e);
  1256 + map.put("status", ResponseCode.ERROR);
  1257 + map.put("msg", e.getMessage());
  1258 + }
  1259 + return map;
  1260 + }
  1261 +
1177 1262 static List<GpsSpeed> findAll(Map<String, Object> map) {
1178 1263 Connection conn = null;
1179 1264 PreparedStatement ps = null;
... ...
src/main/resources/static/real_control_v2/css/handicapped_style.css
... ... @@ -22,6 +22,6 @@
22 22 background: rgb(15, 220, 220) !important;
23 23 }
24 24  
25   -.ct_table>.ct_table_body{
  25 +.schedule-body .ct_table>.ct_table_body{
26 26 border-bottom: 1px solid #000000 !important;
27 27 }
... ...
src/main/resources/static/real_control_v2/css/line_schedule.css
... ... @@ -98,6 +98,14 @@
98 98  
99 99 .line-schedule-table dl dt:nth-of-type(3), .line-schedule-table dl dd:nth-of-type(3) {
100 100 width: calc(2% + 66px);
  101 + position: relative;
  102 +}
  103 +.line-schedule-table dl dd:nth-of-type(3)>i{
  104 + position: absolute;
  105 + color: #313030;
  106 + top: 1px;
  107 + right: 3px;
  108 + text-shadow: 0 -1px 0 rgba(0,0,0,.2);
101 109 }
102 110  
103 111 .line-schedule-table dl dt:nth-of-type(4), .line-schedule-table dl dd:nth-of-type(4) {
... ...
src/main/resources/static/real_control_v2/css/main.css
1 1 input::-webkit-outer-spin-button,
2   -input::-webkit-inner-spin-button{
  2 +input::-webkit-inner-spin-button {
3 3 display: none;
4 4 }
5 5  
... ... @@ -7,9 +7,11 @@ input::-webkit-calendar-picker-indicator {
7 7 display: none;
8 8 }
9 9  
10   -input::-webkit-datetime-edit { padding: 1px; }
  10 +input::-webkit-datetime-edit {
  11 + padding: 1px;
  12 +}
11 13  
12   -.ps-container > .ps-scrollbar-y-rail{
  14 +.ps-container > .ps-scrollbar-y-rail {
13 15 z-index: 1 !important;
14 16 }
15 17  
... ... @@ -18,6 +20,7 @@ input::-webkit-datetime-edit { padding: 1px; }
18 20 opacity: 0.6 !important;
19 21 padding: 0 !important;
20 22 }
  23 +
21 24 /* ^_^ baidu map hide logo */
22 25 .anchorBL, .anchorBL, .amap-logo, .amap-copyright {
23 26 display: none;
... ... @@ -298,7 +301,7 @@ svg.line-chart g.merge-item text {
298 301 .tooltip.multi-tooltip {
299 302 width: 160px;
300 303 display: inline-block;
301   - padding: 10px 0 10px 15px;
  304 + padding: 10px 0 10px 12px;
302 305 border-right: 1px solid #eeeeee;
303 306 border-bottom: 1px solid #eeeeee;
304 307 }
... ... @@ -749,8 +752,8 @@ li.map-panel {
749 752 }
750 753  
751 754 #schedule-lp_change-modal .sch-list dl dt:nth-of-type(4), #schedule-lp_change-modal .sch-list dl dd:nth-of-type(4) {
752   - width: 10%;
753   - }
  755 + width: 10%;
  756 +}
754 757  
755 758 #schedule-lp_change-modal .sch-list dl dt:nth-of-type(5), #schedule-lp_change-modal .sch-list dl dd:nth-of-type(5) {
756 759 width: 21%;
... ... @@ -764,9 +767,6 @@ li.map-panel {
764 767 width: 14%;
765 768 }
766 769  
767   -
768   -
769   -
770 770 #schedule-lp_change-modal .sch-list.reverse dl dt:nth-of-type(1), #schedule-lp_change-modal .sch-list.reverse dl dd:nth-of-type(1) {
771 771 width: 5%;
772 772 border-left: 1px solid #dedede;
... ... @@ -816,59 +816,57 @@ li.map-panel {
816 816 border-top: 1px solid #ffe2b9;
817 817 }
818 818  
819   -#cache_data_manage-modal .uk-table td{
  819 +#cache_data_manage-modal .uk-table td {
820 820 vertical-align: bottom;
821 821 }
822 822  
823 823 #cache_data_manage-modal .uk-table td,
824   -#cache_data_manage-modal .uk-table th{
  824 +#cache_data_manage-modal .uk-table th {
825 825 padding: 8px 8px 6px;
826 826 }
827 827  
828   -
829   -.ps-help-panel{
  828 +.ps-help-panel {
830 829 color: grey;
831 830 padding: 5px 2px;
832 831 }
833 832  
834   -.ps-help-panel small{
  833 +.ps-help-panel small {
835 834 display: block;
836 835 }
837 836  
838   -
839   -svg text.offline{
  837 +svg text.offline {
840 838 fill: #6f6a6a !important;
841 839 }
842 840  
843   -svg rect.offline{
  841 +svg rect.offline {
844 842 stroke: #dbdada !important;
845 843 fill: #dbdada !important;
846 844 }
847 845  
848   -.tooltip .tooltip-container .title a>.abnormal-text{
  846 +.tooltip .tooltip-container .title a > .abnormal-text {
849 847 font-size: 14px;
850 848 color: #ff5e5e;
851 849 font-weight: 600;
852 850 }
853 851  
854   -#addChildTaskBtn{
  852 +#addChildTaskBtn {
855 853 margin-left: 5px;
856 854 color: #36729b;
857 855 padding: 1px 5px 1px 6px;
858 856 }
859 857  
860   -#addChildTaskBtn:hover{
  858 +#addChildTaskBtn:hover {
861 859 box-shadow: 2px 1px 3px 0 rgba(0, 0, 0, 0.2), 0px 3px 8px 0 rgba(0, 0, 0, 0.19);
862 860 }
863 861  
864   -.edit-icon{
  862 +.edit-icon {
865 863 color: #aba9a9;
866 864 font-size: 12px;
867 865 margin-left: 5px;
868 866 display: none;
869 867 }
870 868  
871   -.operation-real-text{
  869 +.operation-real-text {
872 870 position: absolute;
873 871 top: 9px;
874 872 width: 100%;
... ... @@ -877,7 +875,7 @@ svg rect.offline{
877 875 pointer-events: none;
878 876 }
879 877  
880   -.operation-real-text span{
  878 +.operation-real-text span {
881 879 padding: 15px;
882 880 background: #ff4f4f;
883 881 color: white;
... ... @@ -885,75 +883,76 @@ svg rect.offline{
885 883 border-radius: 1px 1px 4px 4px;
886 884 }
887 885  
888   -#oil_station-modal.ct-form-modal form.uk-form-horizontal .uk-form-label{
  886 +#oil_station-modal.ct-form-modal form.uk-form-horizontal .uk-form-label {
889 887 width: 120px;
890 888 }
891 889  
892   -#oil_station-modal.ct-form-modal form.uk-form-horizontal .uk-form-controls{
  890 +#oil_station-modal.ct-form-modal form.uk-form-horizontal .uk-form-controls {
893 891 margin-left: 125px;
894 892 }
895 893  
896   -#oil_station-modal .uk-form-icon>[class*=uk-icon-]{
  894 +#oil_station-modal .uk-form-icon > [class*=uk-icon-] {
897 895 right: 23px;
898 896 }
899 897  
900   -#oil_station-modal .uk-form-icon:not(.uk-form-icon-flip)>input{
  898 +#oil_station-modal .uk-form-icon:not(.uk-form-icon-flip) > input {
901 899 padding-left: 10px !important;
902 900 }
903 901  
904   -#oil_station-modal .uk-form-icon{
  902 +#oil_station-modal .uk-form-icon {
905 903 width: calc(100% - 145px);
906 904 }
907 905  
908   -#oil_station-modal .uk-icon-mile:before{
  906 +#oil_station-modal .uk-icon-mile:before {
909 907 content: '公里';
910 908 }
911 909  
912   -#oil_station-modal .uk-icon-minute:before{
  910 +#oil_station-modal .uk-icon-minute:before {
913 911 content: '分钟';
914 912 }
915 913  
916   -option.oil_station_opt{
  914 +option.oil_station_opt {
917 915 color: red;
918 916 }
919 917  
920   -#oil_station-modal .uk-modal .uk-form.fv-form{
  918 +#oil_station-modal .uk-modal .uk-form.fv-form {
921 919 margin-bottom: 0 !important;
922 920 }
923 921  
924   -#gb_wait_modal .uk-modal-spinner{
  922 +#gb_wait_modal .uk-modal-spinner {
925 923 top: 25px;
926   - -webkit-transform: translate(-50%,0);
927   - transform: translate(-50%,0);
  924 + -webkit-transform: translate(-50%, 0);
  925 + transform: translate(-50%, 0);
928 926 }
929 927  
930   -#gb_wait_modal .wait-modal-text{
  928 +#gb_wait_modal .wait-modal-text {
931 929 text-align: center;
932 930 margin-top: 35px;
933 931 font-size: 15px;
934 932 color: #635e5e;
935 933 }
936 934  
937   -.park-and-station-wrap{
  935 +.park-and-station-wrap {
938 936 margin-top: 9px;
939 937 border: 1px solid #3dce69;
940 938 width: 580px;
941 939 padding: 12px;
942 940 border-radius: 5px;
943 941 }
944   -.park-and-station-wrap select{
  942 +
  943 +.park-and-station-wrap select {
945 944 width: auto !important;
946 945 }
947 946  
948 947 /** 安全驾驶相关css */
949   -.safe_driv_pop_wrap{
  948 +.safe_driv_pop_wrap {
950 949 position: absolute;
951 950 right: 12px;
952 951 bottom: 12px;
953 952 z-index: 99;
954 953 }
955 954  
956   -.safe_driv_pop{
  955 +.safe_driv_pop {
957 956 background: #d44b4b;
958 957 font-size: 15px;
959 958 padding: 9px 10px 0;
... ... @@ -965,14 +964,14 @@ option.oil_station_opt{
965 964 color: #f2f2f2;
966 965 }
967 966  
968   -.safe_driv_pop:hover{
  967 +.safe_driv_pop:hover {
969 968 background: #bc2a2a;
970 969 }
971 970  
972   -.safe_driv_pop .title{
  971 +.safe_driv_pop .title {
973 972 }
974 973  
975   -.safe_driv_pop .desc{
  974 +.safe_driv_pop .desc {
976 975 display: block;
977 976 font-size: 12px;
978 977 color: #ff9d9d;
... ... @@ -985,24 +984,26 @@ option.oil_station_opt{
985 984 width: 10px;
986 985 background-color: #F5F5F5;
987 986 }
  987 +
988 988 #formFragmentModal::-webkit-scrollbar-thumb {
989 989 background-color: #000000;
990 990 }
  991 +
991 992 #formFragmentModal::-webkit-scrollbar-track {
992 993 border: 0;
993 994 background-color: #F5F5F5;
994 995 border-radius: 0;
995 996 }
996 997  
997   -#formFragmentModal::-webkit-scrollbar-thumb{
  998 +#formFragmentModal::-webkit-scrollbar-thumb {
998 999 border: 5px solid rgb(226, 122, 122);
999 1000 }
1000 1001  
1001   -#schedule-addsch_oil-modal select{
  1002 +#schedule-addsch_oil-modal select {
1002 1003 height: 30px !important;
1003 1004 }
1004 1005  
1005   -#oil_station-modal .input_clear_icon{
  1006 +#oil_station-modal .input_clear_icon {
1006 1007 position: absolute;
1007 1008 top: 6px;
1008 1009 right: 108px;
... ... @@ -1015,26 +1016,25 @@ option.oil_station_opt{
1015 1016 cursor: pointer;
1016 1017 }
1017 1018  
1018   -#oil_station-modal .input_clear_icon:hover{
  1019 +#oil_station-modal .input_clear_icon:hover {
1019 1020 color: #de2020;
1020 1021 }
1021 1022  
1022   -#oil_station-modal .input_clear_icon:before{
  1023 +#oil_station-modal .input_clear_icon:before {
1023 1024 display: block;
1024 1025 font-family: FontAwesome;
1025 1026 content: "\f057";
1026 1027 }
1027 1028  
1028   -#oil_station-modal input.readonly{
  1029 +#oil_station-modal input.readonly {
1029 1030 background: #dddddd;
1030 1031 }
1031 1032  
1032   -
1033   -.ct_tags{
  1033 +.ct_tags {
1034 1034 margin-bottom: 12px;
1035 1035 }
1036 1036  
1037   -.ct_tags>span{
  1037 +.ct_tags > span {
1038 1038 padding: 3px 7px;
1039 1039 background: #e8e8e8;
1040 1040 color: #3a3939;
... ... @@ -1042,21 +1042,21 @@ option.oil_station_opt{
1042 1042 margin-right: 5px;
1043 1043 }
1044 1044  
1045   -.ct_tags>span.active{
  1045 +.ct_tags > span.active {
1046 1046 background: #62a9e1;
1047 1047 color: white;
1048 1048 box-shadow: 0 0 4px rgba(0, 0, 0, 0.35);
1049 1049 }
1050 1050  
1051   -.ct_tags>span.active:before{
  1051 +.ct_tags > span.active:before {
1052 1052 content: "\f00c";
1053 1053 font-family: FontAwesome;
1054 1054 margin-right: 2px;
1055 1055 font-size: 13px;
1056 1056 }
1057 1057  
1058   -.ct_tags>span:hover{
1059   - box-shadow: 0 0 4px rgba(0,0,0,.3);
  1058 +.ct_tags > span:hover {
  1059 + box-shadow: 0 0 4px rgba(0, 0, 0, .3);
1060 1060 }
1061 1061  
1062 1062 span.late-badge {
... ... @@ -1067,31 +1067,31 @@ span.late-badge {
1067 1067 margin-left: 2px;
1068 1068 }
1069 1069  
1070   -dl.intimity span.late-badge{
  1070 +dl.intimity span.late-badge {
1071 1071 color: #fbfbfb;
1072 1072 }
1073 1073  
1074 1074 /** badge tooltip */
1075 1075 .uk-badge.c_task:hover,
1076   -.uk-badge.sch_region:hover{
  1076 +.uk-badge.sch_region:hover {
1077 1077 background-image: none;
1078 1078 background: #38b3e1;
1079 1079 border: 1px solid #7ebad1;
1080 1080 }
1081 1081  
1082   -.uk-badge.out:hover{
  1082 +.uk-badge.out:hover {
1083 1083 background-image: none;
1084 1084 background: #8fc650;
1085 1085 border: 1px solid #949f86;
1086 1086 }
1087 1087  
1088   -.uk-badge.in:hover{
  1088 +.uk-badge.in:hover {
1089 1089 background-image: none;
1090 1090 background: #fabc64;
1091 1091 border: 1px solid #a68c67;
1092 1092 }
1093 1093  
1094   -.qtip.sch-badge-tip{
  1094 +.qtip.sch-badge-tip {
1095 1095 max-width: 700px;
1096 1096 }
1097 1097  
... ... @@ -1099,16 +1099,19 @@ dl.intimity span.late-badge{
1099 1099 width: 530px;
1100 1100 margin-bottom: -10px;
1101 1101 }
1102   -.tip_task_list dl{
  1102 +
  1103 +.tip_task_list dl {
1103 1104 font-size: 0;
1104 1105 border-bottom: 1px solid #e6e6e6;
1105 1106 margin: 0;
1106 1107 }
1107   -.tip_task_list dl:last-child{
  1108 +
  1109 +.tip_task_list dl:last-child {
1108 1110 border-bottom: none;
1109 1111 }
  1112 +
1110 1113 .tip_task_list dl dt,
1111   -.tip_task_list dl dd{
  1114 +.tip_task_list dl dd {
1112 1115 display: inline-block;
1113 1116 font-size: 13px;
1114 1117 white-space: nowrap;
... ... @@ -1118,66 +1121,72 @@ dl.intimity span.late-badge{
1118 1121 line-height: 24px;
1119 1122 }
1120 1123  
1121   -.tip_task_list dl dt:nth-of-type(1), .tip_task_list dl dd:nth-of-type(1){
  1124 +.tip_task_list dl dt:nth-of-type(1), .tip_task_list dl dd:nth-of-type(1) {
1122 1125 width: 38px;
1123 1126 border-right: 1px solid #c8c8c8;
1124 1127 }
1125   -.tip_task_list dl dt:nth-of-type(2), .tip_task_list dl dd:nth-of-type(2){
  1128 +
  1129 +.tip_task_list dl dt:nth-of-type(2), .tip_task_list dl dd:nth-of-type(2) {
1126 1130 width: 18%;
1127 1131 text-indent: 5px;
1128 1132 }
1129   -.tip_task_list dl dt:nth-of-type(3), .tip_task_list dl dd:nth-of-type(3){
  1133 +
  1134 +.tip_task_list dl dt:nth-of-type(3), .tip_task_list dl dd:nth-of-type(3) {
1130 1135 width: 11%;
1131 1136 }
1132   -.tip_task_list dl dt:nth-of-type(4), .tip_task_list dl dd:nth-of-type(4){
  1137 +
  1138 +.tip_task_list dl dt:nth-of-type(4), .tip_task_list dl dd:nth-of-type(4) {
1133 1139 width: 25%;
1134 1140 }
1135   -.tip_task_list dl dt:nth-of-type(5), .tip_task_list dl dd:nth-of-type(5){
  1141 +
  1142 +.tip_task_list dl dt:nth-of-type(5), .tip_task_list dl dd:nth-of-type(5) {
1136 1143 width: 25%;
1137 1144 }
1138   -.tip_task_list dl dt:nth-of-type(6), .tip_task_list dl dd:nth-of-type(6){
  1145 +
  1146 +.tip_task_list dl dt:nth-of-type(6), .tip_task_list dl dd:nth-of-type(6) {
1139 1147  
1140 1148 }
1141 1149  
1142   -.tip_task_list dl dd:nth-of-type(1) a{
  1150 +.tip_task_list dl dd:nth-of-type(1) a {
1143 1151 color: #3c3c3c;
1144 1152 text-decoration: underline;
1145 1153 font-size: 12px;
1146 1154 }
1147 1155  
1148   -.tip_task_list dl.service{
  1156 +.tip_task_list dl.service {
1149 1157 color: blue;
1150 1158 }
1151   -.tip_task_list dl.service.destroy{
  1159 +
  1160 +.tip_task_list dl.service.destroy {
1152 1161 color: red;
1153 1162 }
1154 1163  
1155   -.tip_task_list dl.service.temp_add{
  1164 +.tip_task_list dl.service.temp_add {
1156 1165 color: #9C27B0;
1157 1166 }
1158 1167  
1159   -.tip_task_list dl span{
  1168 +.tip_task_list dl span {
1160 1169 margin: 0;
1161 1170 width: auto;
1162 1171 }
1163 1172  
1164   -ul.left_tabs_lg{
  1173 +ul.left_tabs_lg {
1165 1174 border: 1px solid #efeded;
1166 1175 height: 100%;
1167 1176 background: #fafafa;
1168 1177 }
1169 1178  
1170   -ul.left_tabs_lg li{
  1179 +ul.left_tabs_lg li {
1171 1180 line-height: 40px;
1172 1181 font-size: 15px;
1173 1182 }
1174 1183  
1175   -#schedule-addsch-modal .uk-modal-footer{
  1184 +#schedule-addsch-modal .uk-modal-footer {
1176 1185 border-top: none;
1177 1186 background: none;
1178 1187 }
1179 1188  
1180   -.ct_line_lp_badge{
  1189 +.ct_line_lp_badge {
1181 1190 float: left;
1182 1191 margin-top: 6px;
1183 1192 background: #e0e0e0;
... ... @@ -1185,94 +1194,111 @@ ul.left_tabs_lg li{
1185 1194 border-radius: 3px;
1186 1195 }
1187 1196  
1188   -.uk-badge.sch_ldks{
  1197 +.uk-badge.sch_ldks {
1189 1198 background: #8c8c8c;
1190   - background-image: linear-gradient(to bottom,#a7a7a7,#8c8c8c);
  1199 + background-image: linear-gradient(to bottom, #a7a7a7, #8c8c8c);
1191 1200 }
1192 1201  
1193   -.ct_layer_modal{
  1202 +.ct_layer_modal {
1194 1203 background: #e5e5e5;
1195 1204 height: 100%;
1196 1205 width: 100%;
1197 1206 overflow: auto;
1198 1207 }
1199 1208  
1200   -.layui-layer-setwin{
  1209 +.layui-layer-setwin {
1201 1210  
1202 1211 }
1203 1212  
1204   -.device_config_table dl dt:nth-of-type(1), .device_config_table dl dd:nth-of-type(1){
  1213 +.device_config_table dl dt:nth-of-type(1), .device_config_table dl dd:nth-of-type(1) {
1205 1214 width: 7%;
1206 1215 text-indent: 10px;
1207 1216 }
1208   -.device_config_table dl dt:nth-of-type(2), .device_config_table dl dd:nth-of-type(2){
  1217 +
  1218 +.device_config_table dl dt:nth-of-type(2), .device_config_table dl dd:nth-of-type(2) {
1209 1219 width: 7%;
1210 1220 }
1211   -.device_config_table dl dt:nth-of-type(3), .device_config_table dl dd:nth-of-type(3){
  1221 +
  1222 +.device_config_table dl dt:nth-of-type(3), .device_config_table dl dd:nth-of-type(3) {
1212 1223 width: 8%;
1213 1224 }
1214   -.device_config_table dl dt:nth-of-type(4), .device_config_table dl dd:nth-of-type(4){
  1225 +
  1226 +.device_config_table dl dt:nth-of-type(4), .device_config_table dl dd:nth-of-type(4) {
1215 1227 width: 5%;
1216 1228 }
1217   -.device_config_table dl dt:nth-of-type(5), .device_config_table dl dd:nth-of-type(5){
  1229 +
  1230 +.device_config_table dl dt:nth-of-type(5), .device_config_table dl dd:nth-of-type(5) {
1218 1231 width: 4%;
1219 1232 }
1220   -.device_config_table dl dt:nth-of-type(6), .device_config_table dl dd:nth-of-type(6){
  1233 +
  1234 +.device_config_table dl dt:nth-of-type(6), .device_config_table dl dd:nth-of-type(6) {
1221 1235 width: 4%;
1222 1236 }
1223   -.device_config_table dl dt:nth-of-type(7), .device_config_table dl dd:nth-of-type(7){
  1237 +
  1238 +.device_config_table dl dt:nth-of-type(7), .device_config_table dl dd:nth-of-type(7) {
1224 1239 width: 4%;
1225 1240 }
1226   -.device_config_table dl dt:nth-of-type(8), .device_config_table dl dd:nth-of-type(8){
  1241 +
  1242 +.device_config_table dl dt:nth-of-type(8), .device_config_table dl dd:nth-of-type(8) {
1227 1243 width: 5%;
1228 1244 }
1229   -.device_config_table dl dt:nth-of-type(9), .device_config_table dl dd:nth-of-type(9){
  1245 +
  1246 +.device_config_table dl dt:nth-of-type(9), .device_config_table dl dd:nth-of-type(9) {
1230 1247 width: 5%;
1231 1248 }
1232   -.device_config_table dl dt:nth-of-type(10), .device_config_table dl dd:nth-of-type(10){
  1249 +
  1250 +.device_config_table dl dt:nth-of-type(10), .device_config_table dl dd:nth-of-type(10) {
1233 1251 width: 8%;
1234 1252 }
1235   -.device_config_table dl dt:nth-of-type(11), .device_config_table dl dd:nth-of-type(11){
  1253 +
  1254 +.device_config_table dl dt:nth-of-type(11), .device_config_table dl dd:nth-of-type(11) {
1236 1255 width: 5%;
1237 1256 }
1238   -.device_config_table dl dt:nth-of-type(12), .device_config_table dl dd:nth-of-type(12){
  1257 +
  1258 +.device_config_table dl dt:nth-of-type(12), .device_config_table dl dd:nth-of-type(12) {
1239 1259 width: 5%;
1240 1260 }
1241   -.device_config_table dl dt:nth-of-type(13), .device_config_table dl dd:nth-of-type(13){
  1261 +
  1262 +.device_config_table dl dt:nth-of-type(13), .device_config_table dl dd:nth-of-type(13) {
1242 1263 width: 4%;
1243 1264 }
1244   -.device_config_table dl dt:nth-of-type(14), .device_config_table dl dd:nth-of-type(14){
  1265 +
  1266 +.device_config_table dl dt:nth-of-type(14), .device_config_table dl dd:nth-of-type(14) {
1245 1267 width: 4%;
1246 1268 }
1247   -.device_config_table dl dt:nth-of-type(15), .device_config_table dl dd:nth-of-type(15){
  1269 +
  1270 +.device_config_table dl dt:nth-of-type(15), .device_config_table dl dd:nth-of-type(15) {
1248 1271 width: 4%;
1249 1272 }
1250   -.device_config_table dl dt:nth-of-type(16), .device_config_table dl dd:nth-of-type(16){
  1273 +
  1274 +.device_config_table dl dt:nth-of-type(16), .device_config_table dl dd:nth-of-type(16) {
1251 1275 width: 3%;
1252 1276 }
1253   -.device_config_table dl dt:nth-of-type(17), .device_config_table dl dd:nth-of-type(17){
  1277 +
  1278 +.device_config_table dl dt:nth-of-type(17), .device_config_table dl dd:nth-of-type(17) {
1254 1279 width: 4%;
1255 1280 }
1256   -.device_config_table dl dt:nth-of-type(18), .device_config_table dl dd:nth-of-type(18){
  1281 +
  1282 +.device_config_table dl dt:nth-of-type(18), .device_config_table dl dd:nth-of-type(18) {
1257 1283 width: 13%;
1258 1284 }
1259 1285  
1260   -.uk-tooltip{
  1286 +.uk-tooltip {
1261 1287 z-index: 29999999 !important;
1262 1288 }
1263 1289  
1264 1290 .device_config_table.ct_table dl dd,
1265   -.device_config_table.ct_table dl dt{
  1291 +.device_config_table.ct_table dl dt {
1266 1292 border-right: 1px solid #dedede !important;
1267 1293 }
1268 1294  
1269   -.device_configs_manager .search_form{
  1295 +.device_configs_manager .search_form {
1270 1296 text-indent: 12px;
1271 1297 margin-bottom: 0;
1272 1298 padding: 18px 5px;
1273 1299 }
1274 1300  
1275   -.sub_task_form_v2{
  1301 +.sub_task_form_v2 {
1276 1302 background: #f9f9f9;
1277 1303 padding: 12px 15px;
1278 1304 border-radius: 5px 0 5px 5px;
... ... @@ -1281,7 +1307,7 @@ ul.left_tabs_lg li{
1281 1307 margin-bottom: 20px;
1282 1308 }
1283 1309  
1284   -.task_form_close_icon{
  1310 +.task_form_close_icon {
1285 1311 background: #f9f9f9;
1286 1312 padding: 0px 4px;
1287 1313 position: absolute;
... ... @@ -1296,41 +1322,41 @@ ul.left_tabs_lg li{
1296 1322 transition: all .03s;
1297 1323 }
1298 1324  
1299   -.task_form_close_icon:hover{
  1325 +.task_form_close_icon:hover {
1300 1326 border: 1px solid #ff1515;
1301 1327 border-left: none;
1302 1328 border-bottom: none;
1303 1329 color: #e03e3e;
1304 1330 }
1305 1331  
1306   -.sub_task_form_v2:hover::after{
  1332 +.sub_task_form_v2:hover::after {
1307 1333 color: #5f5b5b;
1308 1334 }
1309 1335  
1310   -.sub_task_form_v2.uk-form-horizontal .uk-form-label{
  1336 +.sub_task_form_v2.uk-form-horizontal .uk-form-label {
1311 1337 width: 80px;
1312 1338 }
1313 1339  
1314   -.sub_task_form_v2.uk-form-horizontal .uk-form-controls{
  1340 +.sub_task_form_v2.uk-form-horizontal .uk-form-controls {
1315 1341 margin-left: 85px;
1316 1342 }
1317 1343  
1318 1344 .sub_task_form_v2.uk-form-horizontal .uk-form-controls input[type=text],
1319 1345 .sub_task_form_v2.uk-form-horizontal .uk-form-controls input[type=time],
1320   -.sub_task_form_v2.uk-form-horizontal .uk-form-controls select{
  1346 +.sub_task_form_v2.uk-form-horizontal .uk-form-controls select {
1321 1347 width: 100%;
1322 1348 }
1323 1349  
1324   -#add-sub-task-main-modal .uk-modal-footer{
  1350 +#add-sub-task-main-modal .uk-modal-footer {
1325 1351 background: none;
1326 1352 border-top: none;
1327 1353 }
1328 1354  
1329   -#add-sub-task-main-modal .uk-grid+.uk-grid{
  1355 +#add-sub-task-main-modal .uk-grid + .uk-grid {
1330 1356 margin-top: 12px;
1331 1357 }
1332 1358  
1333   -#add-sub-task-main-modal .plus_icon_span{
  1359 +#add-sub-task-main-modal .plus_icon_span {
1334 1360 font-size: 26px;
1335 1361 color: #b2b2b2;
1336 1362 padding: 10px 64px;
... ... @@ -1341,26 +1367,26 @@ ul.left_tabs_lg li{
1341 1367 cursor: pointer;
1342 1368 }
1343 1369  
1344   -#add-sub-task-main-modal .uk-animation-fade{
  1370 +#add-sub-task-main-modal .uk-animation-fade {
1345 1371 animation-duration: .3s;
1346 1372 }
1347 1373  
1348   -#add-sub-task-main-modal .forms{
  1374 +#add-sub-task-main-modal .forms {
1349 1375 max-height: 642px;
1350 1376 overflow-y: auto;
1351 1377 overflow-x: hidden;
1352 1378 padding: 8px 8px 0 0;
1353 1379 }
1354 1380  
1355   -.add_custom_wrap .forms .sub_task_form_v2:last-child{
  1381 +.add_custom_wrap .forms .sub_task_form_v2:last-child {
1356 1382 margin-bottom: 0;
1357 1383 }
1358 1384  
1359   -.sub_task_form_v2.destroy_form{
  1385 +.sub_task_form_v2.destroy_form {
1360 1386 background-color: #fff5f4 !important;
1361 1387 }
1362 1388  
1363   -.uk-form>.half_change_car_box{
  1389 +.uk-form > .half_change_car_box {
1364 1390 margin: -10px 0 15px;
1365 1391 padding: 3px 5px;
1366 1392 display: inline-block;
... ... @@ -1368,29 +1394,29 @@ ul.left_tabs_lg li{
1368 1394 color: #918f8f;
1369 1395 }
1370 1396  
1371   -.half_change_car_box input[type=checkbox]{
  1397 +.half_change_car_box input[type=checkbox] {
1372 1398 vertical-align: top;
1373 1399 }
1374 1400  
1375   -.uk-form>.half_change_car_box.active{
  1401 +.uk-form > .half_change_car_box.active {
1376 1402 background: #4CAF50;
1377 1403 color: #fff;
1378 1404 }
1379 1405  
1380   -.uk-form>.half_change_car_box.active input[type=checkbox]{
  1406 +.uk-form > .half_change_car_box.active input[type=checkbox] {
1381 1407 background: #4caf50;
1382 1408 border-color: #4caf50;
1383 1409 }
1384 1410  
1385   -.uk-form>.half_change_car_box.active input[type=checkbox]:before{
  1411 +.uk-form > .half_change_car_box.active input[type=checkbox]:before {
1386 1412 color: #ffffff;
1387 1413 }
1388 1414  
1389   -.sub_task_form_v2.change_car{
  1415 +.sub_task_form_v2.change_car {
1390 1416 z-index: 99;
1391 1417 }
1392 1418  
1393   -.st_range_top_form{
  1419 +.st_range_top_form {
1394 1420 padding: 0 0 15px 5px;
1395 1421 border: 1px solid #c4bb76;
1396 1422 background: #e5e1c1;
... ... @@ -1398,46 +1424,46 @@ ul.left_tabs_lg li{
1398 1424 box-shadow: 0px 4px 3px 0 rgba(142, 138, 138, 0.2), 0px 4px 5px 0 rgba(157, 156, 156, 0.19);
1399 1425 }
1400 1426  
1401   -.st_range_top_form .uk-form-row{
  1427 +.st_range_top_form .uk-form-row {
1402 1428 margin-top: 20px;
1403 1429 }
1404 1430  
1405   -.uk-form-horizontal.st_range_top_form .uk-form-label{
  1431 +.uk-form-horizontal.st_range_top_form .uk-form-label {
1406 1432 width: 80px;
1407 1433 }
1408 1434  
1409   -.uk-form-horizontal.st_range_top_form .uk-form-controls{
  1435 +.uk-form-horizontal.st_range_top_form .uk-form-controls {
1410 1436 margin-left: 84px;
1411 1437 }
1412 1438  
1413   -.uk-form-horizontal.st_range_top_form .uk-form-controls select{
  1439 +.uk-form-horizontal.st_range_top_form .uk-form-controls select {
1414 1440 width: calc(100% - 2px);
1415 1441 }
1416 1442  
1417   -.sub_task_form_v2.service_st_form{
  1443 +.sub_task_form_v2.service_st_form {
1418 1444 background: #f4faff;
1419 1445 }
1420 1446  
1421   -.uk-modal .uk-form.fv-form.sub_task_form_v2{
  1447 +.uk-modal .uk-form.fv-form.sub_task_form_v2 {
1422 1448 margin-bottom: 20px !important;
1423 1449 }
1424 1450  
1425   -.sub_task_table_wrap .ct_table>.ct_table_body{
  1451 +.sub_task_table_wrap .ct_table > .ct_table_body {
1426 1452 border-bottom: none;
1427 1453 }
1428 1454  
1429   -.err_panel{
  1455 +.err_panel {
1430 1456 font-size: 12px;
1431 1457 color: #7e7d7d;
1432 1458 font-family: 微软雅黑;
1433 1459 margin-top: 5px;
1434 1460 }
1435 1461  
1436   -#schedule-lp_change-modal .ct_table dl{
  1462 +#schedule-lp_change-modal .ct_table dl {
1437 1463 height: 35px;
1438 1464 }
1439 1465  
1440   -#schedule-lp_change-modal .ct_table dl dd, #schedule-lp_change-modal .ct_table dl dt{
  1466 +#schedule-lp_change-modal .ct_table dl dd, #schedule-lp_change-modal .ct_table dl dt {
1441 1467 line-height: 35px;
1442 1468 }
1443 1469  
... ... @@ -1453,7 +1479,7 @@ ul.left_tabs_lg li{
1453 1479 font-weight: 600;
1454 1480 }*/
1455 1481  
1456   -.sub_task_form_v2:before{
  1482 +.sub_task_form_v2:before {
1457 1483 position: absolute;
1458 1484 top: -7px;
1459 1485 font-size: 12px;
... ... @@ -1462,19 +1488,19 @@ ul.left_tabs_lg li{
1462 1488 line-height: 14px;
1463 1489 }
1464 1490  
1465   -.sub_task_form_v2.destroy_form:before{
  1491 +.sub_task_form_v2.destroy_form:before {
1466 1492 content: '烂班' !important;
1467 1493 color: #f14235 !important;
1468 1494 background: #ffffff !important;
1469 1495 }
1470 1496  
1471   -.sub_task_form_v2.service_form:before{
  1497 +.sub_task_form_v2.service_form:before {
1472 1498 content: '营运';
1473 1499 color: #2196F3;
1474 1500 background: #ffffff;
1475 1501 }
1476 1502  
1477   -.sub_task_form_v2.service_form.temp_service:before{
  1503 +.sub_task_form_v2.service_form.temp_service:before {
1478 1504 content: '营运 (临加)';
1479 1505 color: #9C27B0;
1480 1506 background: #ffffff;
... ... @@ -1484,13 +1510,13 @@ ul.left_tabs_lg li{
1484 1510 background: #faf0fd;
1485 1511 }
1486 1512  
1487   -.sub_task_form_v2.empty_form:before{
  1513 +.sub_task_form_v2.empty_form:before {
1488 1514 content: '空驶';
1489 1515 color: #928f92;
1490 1516 background: #ffffff;
1491 1517 }
1492 1518  
1493   -.sub_task_form_v2.service_form{
  1519 +.sub_task_form_v2.service_form {
1494 1520 background: #f4faff;
1495 1521 }
1496 1522  
... ... @@ -1501,52 +1527,52 @@ ul.left_tabs_lg li{
1501 1527 .sub_task_form_v2.repeat_main{
1502 1528 background: #f4faff;
1503 1529 }*/
1504   -.footer_tools{
  1530 +.footer_tools {
1505 1531 position: absolute;
1506 1532 left: 235px;
1507 1533 bottom: 19px;
1508 1534 }
1509 1535  
1510   -.footer_mileage_count{
  1536 +.footer_mileage_count {
1511 1537 border: 1px solid #f2f2f2;
1512 1538 padding: 5px;
1513 1539 box-shadow: 0px 2px 5px 0 rgba(0, 0, 0, 0.2), 0px 2px 7px 0 rgba(0, 0, 0, 0.19);
1514 1540 display: inline-block;
1515 1541 }
1516 1542  
1517   -.footer_mileage_count>span{
  1543 +.footer_mileage_count > span {
1518 1544 padding: 2px 5px;
1519 1545 }
1520 1546  
1521   -.footer_mileage_count>span.service_sum{
  1547 +.footer_mileage_count > span.service_sum {
1522 1548 color: #2196F3;
1523 1549 }
1524 1550  
1525   -.footer_mileage_count>span.empty_sum{
  1551 +.footer_mileage_count > span.empty_sum {
1526 1552 color: #636363;
1527 1553 }
1528 1554  
1529   -.footer_mileage_count>span.destroy_sum{
  1555 +.footer_mileage_count > span.destroy_sum {
1530 1556 color: #f5574b;
1531 1557 }
1532 1558  
1533   -.station_to_park_link{
  1559 +.station_to_park_link {
1534 1560 display: inline-block;
1535 1561 margin-left: 15px;
1536 1562 vertical-align: bottom;
1537 1563 font-size: 12px;
1538 1564 }
1539 1565  
1540   -.station_to_park_link>a{
  1566 +.station_to_park_link > a {
1541 1567 color: #607D8B;
1542 1568 }
1543 1569  
1544 1570 #station_to_park-modal.ct-form-modal form input[type=text],
1545   -#station_to_park-modal.ct-form-modal form select{
  1571 +#station_to_park-modal.ct-form-modal form select {
1546 1572 width: auto;
1547 1573 }
1548 1574  
1549   -.s_2_park_form_wrap{
  1575 +.s_2_park_form_wrap {
1550 1576 background: #fafafa;
1551 1577 border: 1px solid #e5e5e5;
1552 1578 padding: 7px 16px;
... ... @@ -1554,7 +1580,7 @@ ul.left_tabs_lg li{
1554 1580 position: relative;
1555 1581 }
1556 1582  
1557   -.s_2_park_form_wrap .ct_close{
  1583 +.s_2_park_form_wrap .ct_close {
1558 1584 position: absolute;
1559 1585 top: -12px;
1560 1586 padding: 0 4px;
... ... @@ -1565,42 +1591,42 @@ ul.left_tabs_lg li{
1565 1591 cursor: pointer;
1566 1592 }
1567 1593  
1568   -.s_2_park_form_wrap .ct_close:hover{
  1594 +.s_2_park_form_wrap .ct_close:hover {
1569 1595 background: #e5e5e5;
1570 1596 color: #fd6e6e;
1571 1597 }
1572 1598  
1573   -.s_2_park_form_wrap label{
  1599 +.s_2_park_form_wrap label {
1574 1600 color: #666;
1575 1601 font-size: 13px;
1576 1602 }
1577 1603  
1578   -#station_to_park-modal.ct-form-modal form input[readonly]{
  1604 +#station_to_park-modal.ct-form-modal form input[readonly] {
1579 1605 background: #fafafa;
1580 1606 }
1581 1607  
1582   -.s_2_park_form_wrap .bottom_label{
  1608 +.s_2_park_form_wrap .bottom_label {
1583 1609 margin-top: 25px;
1584 1610 display: block;
1585 1611 }
1586 1612  
1587   -.s_2_park_form_wrap .bottom_label_2{
  1613 +.s_2_park_form_wrap .bottom_label_2 {
1588 1614 margin-top: 4px;
1589 1615 display: block;
1590 1616 }
1591 1617  
1592   -.ct_describe{
  1618 +.ct_describe {
1593 1619 font-size: 12px;
1594 1620 color: #909090;
1595 1621 font-family: FontAwesome;
1596 1622 }
1597 1623  
1598   -.ct_describe:before{
  1624 +.ct_describe:before {
1599 1625 content: "\f059";
1600 1626 margin-right: 3px;
1601 1627 }
1602 1628  
1603   -#add-sub-task-main-modal abbr{
  1629 +#add-sub-task-main-modal abbr {
1604 1630 display: inline-block;
1605 1631 font-size: 12px;
1606 1632 margin-left: 25px;
... ... @@ -1608,15 +1634,17 @@ ul.left_tabs_lg li{
1608 1634 color: #929292;
1609 1635 }
1610 1636  
1611   -#all-devices-modal .search-form input[type=text]{
  1637 +#all-devices-modal .search-form input[type=text] {
1612 1638 width: 100px;
1613 1639 }
1614 1640  
1615   -#all-devices-modal .auto-refresh{
1616   - vertical-align: middle;margin-left: 5px;color: grey;
  1641 +#all-devices-modal .auto-refresh {
  1642 + vertical-align: middle;
  1643 + margin-left: 5px;
  1644 + color: grey;
1617 1645 }
1618 1646  
1619   -#all-devices-modal .auto-refresh.active{
  1647 +#all-devices-modal .auto-refresh.active {
1620 1648 color: #405dff;
1621 1649 }
1622 1650  
... ... @@ -1624,7 +1652,7 @@ ul.left_tabs_lg li{
1624 1652 margin-top: 0 !important;
1625 1653 }
1626 1654  
1627   -#history-sch-maintain-modal .add_lp_link{
  1655 +#history-sch-maintain-modal .add_lp_link {
1628 1656 display: inline-block;
1629 1657 vertical-align: bottom;
1630 1658 margin-left: 15px;
... ... @@ -1632,107 +1660,107 @@ ul.left_tabs_lg li{
1632 1660 font-size: 13px;
1633 1661 }
1634 1662  
1635   -#schedule-tzrc-modal input[type=checkbox]{
  1663 +#schedule-tzrc-modal input[type=checkbox] {
1636 1664 margin-right: 9px;
1637 1665 }
1638 1666  
1639   -#schedule-tzrc-modal span.ct_zt_yzx{
  1667 +#schedule-tzrc-modal span.ct_zt_yzx {
1640 1668 color: #2196F3;
1641 1669 font-size: 12px;
1642 1670 }
1643 1671  
1644   -#schedule-tzrc-modal span.ct_zt_lb{
  1672 +#schedule-tzrc-modal span.ct_zt_lb {
1645 1673 color: red;
1646 1674 font-size: 12px;
1647 1675 }
1648 1676  
1649   -#schedule-tzrc-modal span.ct_zt_zzzx{
  1677 +#schedule-tzrc-modal span.ct_zt_zzzx {
1650 1678 font-size: 12px;
1651 1679 color: #38ad3c;
1652 1680 }
1653 1681  
1654   -#schedule-tzrc-modal .tzrc_form{
  1682 +#schedule-tzrc-modal .tzrc_form {
1655 1683 padding: 20px;
1656 1684 border: 1px solid #f0eded;
1657   - box-shadow: 0px -3px 15px rgba(0,0,0,0.08);
  1685 + box-shadow: 0px -3px 15px rgba(0, 0, 0, 0.08);
1658 1686 background: #f9f9f9;
1659 1687 }
1660 1688  
1661   -.uk-panel.ct_search_panel{
  1689 +.uk-panel.ct_search_panel {
1662 1690 padding: 15px;
1663 1691 border: 1px solid #f0eded;
1664   - box-shadow: 0px 3px 15px rgba(0,0,0,0.08);
  1692 + box-shadow: 0px 3px 15px rgba(0, 0, 0, 0.08);
1665 1693 background: #f9f9f9;
1666 1694 }
1667 1695  
1668 1696 .sch-tzrc-table.ct_table dl.active,
1669   -.sch-tzrc-table.ct_table>.ct_table_body dl.active:hover{
  1697 +.sch-tzrc-table.ct_table > .ct_table_body dl.active:hover {
1670 1698 background: #5bd460;
1671 1699 color: white;
1672 1700 }
1673 1701  
1674   -#schedule-tzrc-modal dl.active span.ct_zt_yzx{
  1702 +#schedule-tzrc-modal dl.active span.ct_zt_yzx {
1675 1703 color: #545252;
1676 1704 }
1677 1705  
1678   -#schedule-tzrc-modal dl.active span.ct_zt_lb{
  1706 +#schedule-tzrc-modal dl.active span.ct_zt_lb {
1679 1707 color: #d64949;
1680 1708 }
1681 1709  
1682   -#schedule-tzrc-modal dl.active span.ct_zt_zzzx{
  1710 +#schedule-tzrc-modal dl.active span.ct_zt_zzzx {
1683 1711 color: white;
1684 1712 }
1685 1713  
1686   -#schedule-tzrc-modal dl.active input[type=checkbox]{
  1714 +#schedule-tzrc-modal dl.active input[type=checkbox] {
1687 1715 border: 0;
1688 1716 }
1689 1717  
1690   -#schedule-tzrc-modal dl.active input[type=checkbox]:before{
  1718 +#schedule-tzrc-modal dl.active input[type=checkbox]:before {
1691 1719 color: #ffffff;
1692 1720 }
1693 1721  
1694   -.sch-search-autocom input{
  1722 +.sch-search-autocom input {
1695 1723 padding: 0 !important;
1696 1724 height: 100% !important;
1697 1725 }
1698 1726  
1699   -label.blue_checkbox{
  1727 +label.blue_checkbox {
1700 1728 margin-left: 12px;
1701 1729 }
1702 1730  
1703   -label.blue_checkbox>input{
  1731 +label.blue_checkbox > input {
1704 1732 width: 17px !important;
1705 1733 height: 17px !important;
1706 1734 }
1707 1735  
1708   -label.blue_checkbox>input:checked:before,
1709   -label.blue_checkbox>input:indeterminate:before{
  1736 +label.blue_checkbox > input:checked:before,
  1737 +label.blue_checkbox > input:indeterminate:before {
1710 1738 line-height: 15px !important;
1711 1739 }
1712 1740  
1713   -dd.disabled{
  1741 +dd.disabled {
1714 1742 color: #b5b3b3;
1715 1743 }
1716 1744  
1717   -dl.active>dd.disabled{
  1745 +dl.active > dd.disabled {
1718 1746 color: #ececec;
1719 1747 }
1720 1748  
1721   -#change_user_options-modal .user_info{
  1749 +#change_user_options-modal .user_info {
1722 1750 width: 360px;
1723 1751 margin: auto;
1724 1752 }
1725 1753  
1726   -.display_hide{
  1754 +.display_hide {
1727 1755 display: none;
1728 1756 }
1729 1757  
1730   -.ct_eye_icon{
  1758 +.ct_eye_icon {
1731 1759 font-size: 16px;
1732 1760 cursor: pointer;
1733 1761 }
1734 1762  
1735   -.ct_eye_icon.active{
  1763 +.ct_eye_icon.active {
1736 1764 color: #444;
1737 1765 }
1738 1766  
... ... @@ -1741,7 +1769,7 @@ dl.active&gt;dd.disabled{
1741 1769 height: 16px;
1742 1770 }
1743 1771  
1744   -.range_2_normal_tt{
  1772 +.range_2_normal_tt {
1745 1773 margin-bottom: 15px;
1746 1774 border-top: 1px dashed #c7c7c7;
1747 1775 color: #a6a6a6;
... ... @@ -1749,7 +1777,7 @@ dl.active&gt;dd.disabled{
1749 1777 padding-bottom: 5px;
1750 1778 }
1751 1779  
1752   -.cancel_link{
  1780 +.cancel_link {
1753 1781 font-size: 12px;
1754 1782 margin-left: 15px;
1755 1783 vertical-align: bottom;
... ... @@ -1759,7 +1787,7 @@ dl.active&gt;dd.disabled{
1759 1787 right: 0;
1760 1788 }
1761 1789  
1762   -.edit_link{
  1790 +.edit_link {
1763 1791 font-size: 12px;
1764 1792 margin-left: 15px;
1765 1793 vertical-align: bottom;
... ... @@ -1780,7 +1808,7 @@ dl.active&gt;dd.disabled{
1780 1808 min-height: 40px;
1781 1809 }
1782 1810  
1783   -.c_b_abnorm_notice:before{
  1811 +.c_b_abnorm_notice:before {
1784 1812 content: "-超速报警-";
1785 1813 color: #000000;
1786 1814 font-size: 12px;
... ... @@ -1801,19 +1829,19 @@ dl.active&gt;dd.disabled{
1801 1829 cursor: pointer;
1802 1830 }
1803 1831  
1804   -.c_b_abnorm_notice>.c_b_item:first-child{
  1832 +.c_b_abnorm_notice > .c_b_item:first-child {
1805 1833 margin-top: 20px;
1806 1834 }
1807 1835  
1808   -.c_b_item.over{
  1836 +.c_b_item.over {
1809 1837 color: grey;
1810 1838 }
1811 1839  
1812   -.c_b_item>span.c_b_over{
  1840 +.c_b_item > span.c_b_over {
1813 1841 float: right;
1814 1842 }
1815 1843  
1816   -.mileage_elec_panel{
  1844 +.mileage_elec_panel {
1817 1845 position: absolute;
1818 1846 width: 100%;
1819 1847 /*height: 90px;*/
... ... @@ -1828,33 +1856,33 @@ dl.active&gt;dd.disabled{
1828 1856 display: none;
1829 1857 }
1830 1858  
1831   -.mileage_elec_panel ._title{
  1859 +.mileage_elec_panel ._title {
1832 1860 margin: 5px 3px;
1833 1861 font-size: 15px;
1834 1862 }
1835 1863  
1836   -.mileage_elec_panel .LD_item{
  1864 +.mileage_elec_panel .LD_item {
1837 1865 margin: 5px 0;
1838 1866 font-family: 微软雅黑;
1839 1867 }
1840 1868  
1841   -.mileage_elec_panel .LD_item>span{
  1869 +.mileage_elec_panel .LD_item > span {
1842 1870 padding: 3px;
1843 1871 display: inline-block;
1844 1872 width: 85px;
1845 1873 }
1846 1874  
1847   -.mileage_elec_panel .lp_name{
  1875 +.mileage_elec_panel .lp_name {
1848 1876 padding: 0 5px;
1849 1877 background: #f2f2f2;
1850 1878 border-radius: 15px
1851 1879 }
1852 1880  
1853   -.mileage_elec_panel .LD_item>span>a{
  1881 +.mileage_elec_panel .LD_item > span > a {
1854 1882 color: #000;
1855 1883 }
1856 1884  
1857   -.mileage_elec_panel .LD_item>span:nth-of-type(1)>a{
  1885 +.mileage_elec_panel .LD_item > span:nth-of-type(1) > a {
1858 1886 color: blue;
1859 1887 }
1860 1888  
... ... @@ -1866,8 +1894,10 @@ dl.active&gt;dd.disabled{
1866 1894 color: #515151;
1867 1895 }*/
1868 1896  
1869   -.mileage_elec_panel hr{
1870   - height:1px;border:none;border-top:1px dashed #b5b5b5;
  1897 +.mileage_elec_panel hr {
  1898 + height: 1px;
  1899 + border: none;
  1900 + border-top: 1px dashed #b5b5b5;
1871 1901 }
1872 1902  
1873 1903 #edit-sub-task-main-modal .sub_task_form_v2.uk-form-horizontal .uk-form-label {
... ... @@ -1878,33 +1908,52 @@ dl.active&gt;dd.disabled{
1878 1908 margin-left: 75px;
1879 1909 }
1880 1910  
1881   -#edit-sub-task-main-modal .sub_task_form_v2 .uk-grid+.uk-grid,
  1911 +#edit-sub-task-main-modal .sub_task_form_v2 .uk-grid + .uk-grid,
1882 1912 #edit-sub-task-main-modal .sub_task_form_v2 .uk-grid-margin,
1883   -#edit-sub-task-main-modal .sub_task_form_v2 .uk-grid>*>.uk-panel+.uk-panel{
  1913 +#edit-sub-task-main-modal .sub_task_form_v2 .uk-grid > * > .uk-panel + .uk-panel {
1884 1914 margin-top: 22px;
1885 1915 }
1886 1916  
1887 1917 .c_task_mileage_abnormal,
1888   -.c_task_mileage_abnormal .ct_table>.ct_table_head dl,
1889   -.c_task_mileage_abnormal .ct_table dl{
  1918 +.c_task_mileage_abnormal .ct_table > .ct_table_head dl,
  1919 +.c_task_mileage_abnormal .ct_table dl {
1890 1920 background: #ffe7e7 !important;
1891 1921 }
1892 1922  
1893   -.tip_task_count_dl{
  1923 +.tip_task_count_dl {
1894 1924 width: calc(100% + 22px) !important;
1895 1925 margin-left: -11px !important;
1896 1926 border-top: 1px solid #e6e6e6 !important;
1897 1927 }
1898 1928  
1899   -.tip_task_count_dl>dd{
1900   - width: 100% !important;
  1929 +.tip_task_count_dl > dd:last-child {
  1930 + width: calc(100% - 50px) !important;
1901 1931 border-right: 0 !important;
1902 1932 height: 35px !important;
1903 1933 background: #f3f3f3;
1904 1934 margin-bottom: -3px;
1905 1935 }
1906 1936  
1907   -.tip_task_count_dl>dd>span{
  1937 +.tip_task_count_dl > dd:nth-of-type(1) {
  1938 + text-align: center;
  1939 + border-right: 0 !important;
  1940 + width: 48px !important;
  1941 +}
  1942 +
  1943 +.tip_task_count_dl > dd:nth-of-type(1) > i {
  1944 + padding: 6px;
  1945 + cursor: pointer;
  1946 +}
  1947 +
  1948 +.tip_task_count_dl > dd:nth-of-type(1) > i:hover {
  1949 + background: #ebebeb;
  1950 +}
  1951 +
  1952 +.tip_task_count_dl.c_task_error > dd:last-child {
  1953 + background: #ff8a81;
  1954 +}
  1955 +
  1956 +.tip_task_count_dl > dd > span {
1908 1957 font-size: 13px;
1909 1958 color: #000;
1910 1959 height: 55px;
... ... @@ -1914,6 +1963,67 @@ dl.active&gt;dd.disabled{
1914 1963 text-indent: 12px;
1915 1964 }
1916 1965  
1917   -.tip_task_list>dl:nth-last-child(2){
  1966 +.tip_task_list > dl:nth-last-child(2) {
1918 1967 border-bottom: 0 !important;
  1968 +}
  1969 +
  1970 +.c_task_mileage_error {
  1971 + border: 1px solid rgba(218, 13, 13, 0.2);
  1972 + border-bottom-color: rgba(213, 37, 37, 0.3);
  1973 + background-image: -webkit-linear-gradient(top, #ff6155, #F44336);
  1974 +}
  1975 +
  1976 +.uk-badge.c_task.c_task_mileage_error:hover:hover {
  1977 + background-image: none;
  1978 + background: #ff6155;
  1979 + border: 1px solid rgba(213, 37, 37, 0.3);
  1980 +}
  1981 +
  1982 +.grey_link {
  1983 + color: #adabab;
  1984 +}
  1985 +
  1986 +#sch_car_info_all-modal tr.ct_active {
  1987 + -moz-animation: twinkle_bg .9s ease-in-out;
  1988 + -webkit-animation: twinkle_bg .9s ease-in-out;
  1989 +}
  1990 +
  1991 +#sch_car_info_all-modal .uk-table-hover tr:hover{
  1992 + background: #dddddd;
  1993 +}
  1994 +
  1995 +@-moz-keyframes twinkle_bg {
  1996 + 0% {
  1997 + background: rgba(254, 235, 69, 0.38);
  1998 + }
  1999 + 25% {
  2000 + background: rgba(254, 235, 69, 0.7);
  2001 + }
  2002 + 50% {
  2003 + background: rgba(254, 235, 69, 0.3);
  2004 + }
  2005 + 75% {
  2006 + background: rgba(254, 235, 69, 0.7);
  2007 + }
  2008 + 100% {
  2009 + background: rgba(254, 235, 69, 0.38);
  2010 + }
  2011 +}
  2012 +
  2013 +@-webkit-keyframes twinkle_bg {
  2014 + 0% {
  2015 + background: rgba(254, 235, 69, 0.38);
  2016 + }
  2017 + 25% {
  2018 + background: rgba(254, 235, 69, 0.7);
  2019 + }
  2020 + 50% {
  2021 + background: rgba(254, 235, 69, 0.3);
  2022 + }
  2023 + 75% {
  2024 + background: rgba(254, 235, 69, 0.7);
  2025 + }
  2026 + 100% {
  2027 + background: rgba(254, 235, 69, 0.38);
  2028 + }
1919 2029 }
1920 2030 \ No newline at end of file
... ...
src/main/resources/static/real_control_v2/fragments/line_schedule/badge_tooltip.html
... ... @@ -12,7 +12,7 @@
12 12 </dl>
13 13 {{each tasks as t i}}
14 14 <dl class="{{t.mileageType}} {{if t.destroy}}destroy{{/if}} {{if t.type1=='临加'}}temp_add{{/if}}">
15   - <dd><a data-line="{{lineCode}}" data-id="{{t.id}}" data-schid="{{sch_id}}" class="tip_task_edit_link">编辑</a></dd>
  15 + <dd><a data-line="{{sch.xlBm}}" data-id="{{t.id}}" data-schid="{{sch.id}}" class="tip_task_edit_link">编辑</a></dd>
16 16 <dd>
17 17 {{if t.mileageType=="service"}}
18 18 营运
... ... @@ -37,9 +37,10 @@
37 37 <dd title="{{t.remarks}}">{{t.remarks}}</dd>
38 38 </dl>
39 39 {{/each}}
40   - <dl class="tip_task_count_dl" >
  40 + <dl class="tip_task_count_dl {{if sch.c_t_mileage_status==-1}}c_task_error{{/if}}" >
  41 + <dd><i class="uk-icon-plus badge_tip_add_icon" data-line="{{sch.xlBm}}" data-schid="{{sch.id}}"></i></dd>
41 42 <dd>
42   - <span>计划:{{jhlc}}</span>
  43 + <span>计划:{{sch.jhlcOrig}}</span>
43 44 <span>营运+烂班:{{serviceCount}}</span>
44 45 <span>空驶:{{emptyCount}}</span>
45 46 </dd>
... ...
src/main/resources/static/real_control_v2/fragments/line_schedule/car_info_all.html 0 → 100644
  1 +<div class="uk-modal ct_move_modal" id="sch_car_info_all-modal">
  2 + <div class="uk-modal-dialog" style="width: 1080px;">
  3 + <a href="" class="uk-modal-close uk-close"></a>
  4 +
  5 + <div class="uk-modal-header">
  6 + <h2>1006路 -全部车辆</h2></div>
  7 +
  8 + <table class="uk-table uk-table-hover" style="table-layout: fixed;">
  9 + <thead>
  10 + <tr>
  11 + <th style="width: 10%;">车辆</th>
  12 + <th style="width: 10%;">设备号</th>
  13 + <th style="width: 16%;">位置</th>
  14 + <th style="width: 14%;">车载线路编码</th>
  15 + <th style="width: 13%;">当前执行任务</th>
  16 + <th style="width: 7%;">状态</th>
  17 + <th style="width: 19%">最后gps时间</th>
  18 + <th>请求出场</th>
  19 + </tr>
  20 + </thead>
  21 + <tbody>
  22 + </tbody>
  23 + </table>
  24 + </div>
  25 +
  26 + <script id="sch_car_info_all-temp" type="text/html">
  27 + {{each list as obj i}}
  28 + <tr data-nbbm="{{obj.nbbm}}">
  29 + <td>{{obj.nbbm}}</td>
  30 + <td>{{obj.device}}</td>
  31 + <td>{{obj.loc}}</td>
  32 + <td>{{obj.lineCodeRealStr}}</td>
  33 + <td><a class="exec_sch_link" data-id="{{obj.schId}}">{{obj.exec}}</a></td>
  34 + <td><a class="{{if obj.status!='在线'}}grey_link{{/if}}">{{obj.status}}</a></td>
  35 + <td class="{{if obj.status!='在线'}}grey_link{{/if}}">
  36 + {{obj.timeStr}}
  37 +
  38 + {{if obj.formNow!=null}}
  39 + <small>({{obj.formNow}})</small>
  40 + {{/if}}
  41 + </td>
  42 + <td>{{obj.qqccTimeStr}}</td>
  43 + </tr>
  44 + {{/each}}
  45 + </script>
  46 + <script>
  47 + (function () {
  48 + var modal = '#sch_car_info_all-modal', lineCode, nbbm;
  49 +
  50 + $(modal).on('init', function(e, data) {
  51 + e.stopPropagation();
  52 + lineCode = data.lineCode;
  53 + nbbm = data.nbbm;
  54 +
  55 + jsDoQuery(function () {
  56 + var $cell = $('tr[data-nbbm='+nbbm+']', modal);
  57 + //定位到行
  58 + $(modal).animate({
  59 + scrollTop: $cell.offset().top - $(modal).offset().top + $(modal).scrollTop()
  60 + }, 500, function () {
  61 + $cell.addClass('ct_active');
  62 + });
  63 + timer = setTimeout(fixedRefreshData, t + 500);
  64 + });
  65 + });
  66 +
  67 + var timer, t = 12*1000;
  68 + var fixedRefreshData = function () {
  69 + (function () {
  70 + var f = arguments.callee;
  71 + jsDoQuery(function () {
  72 + timer = setTimeout(f, t);
  73 + });
  74 + })();
  75 + };
  76 +
  77 + $(modal).on('hide.uk.modal', function () {
  78 + clearTimeout(timer);
  79 + timer = null;
  80 + });
  81 +
  82 + var jsDoQuery = function (cb) {
  83 + gb_common.$get('/gps/allCarsByLine', {lineCode: lineCode}, function (rs) {
  84 + $.each(rs.list, function () {
  85 + if(this['lineCodeReal'])
  86 + this['lineCodeRealStr'] = this['lineCodeReal'] + '/' + gb_data_basic.lineCode2NameAll()[this['lineCodeReal']];
  87 + else
  88 + this['lineCodeRealStr'] = '';
  89 + if(this['gpsTs']){
  90 + this['timeStr'] = moment(this['gpsTs']).format('MM/DD HH:mm:ss');
  91 + this['formNow'] = moment(this['gpsTs']).fromNow();
  92 + }
  93 + if(this['qqcc'])
  94 + this['qqccTimeStr'] = moment(this['qqcc']).format('HH:mm');
  95 + });
  96 +
  97 + rs.list.sort(function (a, b) {
  98 + if(!a.nbbm)
  99 + return -1;
  100 + if(!b.nbbm)
  101 + return 1;
  102 + return a.nbbm.localeCompare(b.nbbm);
  103 + });
  104 + var htmlStr = template('sch_car_info_all-temp', {list: rs.list});
  105 +
  106 + $('table>tbody', modal).html(htmlStr);
  107 +
  108 + cb && cb();
  109 + });
  110 + };
  111 +
  112 + $(modal).on('click', 'a.exec_sch_link', function () {
  113 + var id = $(this).data('id');
  114 + if(!id)
  115 + return;
  116 + gb_schedule_table.scroToDl({id: id, xlBm:lineCode});
  117 + });
  118 + })();
  119 + </script>
  120 +</div>
0 121 \ No newline at end of file
... ...
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/lj_zrw.html
... ... @@ -110,7 +110,7 @@
110 110 {{/if}}
111 111  
112 112 {{if sch.cTasks.length > 0}}
113   - <span class="uk-badge uk-badge-notification">{{sch.cTasks.length}}</span>
  113 + <span class="uk-badge uk-badge-notification {{if sch.c_t_mileage_status==-1}}c_task_mileage_error{{/if}}">{{sch.cTasks.length}}</span>
114 114 {{/if}}
115 115 </dd>
116 116 <dd>{{sch.zdsj}}</dd>
... ... @@ -274,7 +274,7 @@
274 274  
275 275 //检查子任务营运里程
276 276 $('#childTaskTitle .child-task-status', modal).remove();
277   - var i = 0;
  277 + //var i = 0;
278 278 if (sch.cTasks.length == 0)
279 279 return;
280 280 var sum = 0, calcs = ' ';
... ... @@ -282,7 +282,7 @@
282 282 if (this.mileageType == 'service') {
283 283 sum = gb_common.accAdd(sum, this.mileage);
284 284 calcs += (' + ' + this.mileage);
285   - i++;
  285 + //i++;
286 286 }
287 287 });
288 288 //公里与主任务不符合
... ...
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task_v2/edit.html
... ... @@ -9,6 +9,7 @@
9 9 </div>
10 10  
11 11 <div class="uk-modal-footer uk-text-right" style="margin-top: 5px;">
  12 + <a class="delete_link" style="vertical-align: bottom;display: inline-block;color: red;font-size: 13px;margin-right: 10px;">删除子任务</a>
12 13 <button type="button" class="uk-button uk-modal-close">取消</button>
13 14 <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存</button>
14 15 </div>
... ... @@ -352,6 +353,28 @@
352 353 return;
353 354 remInput.val(remInput.val() + reason + ',');
354 355 }
  356 +
  357 +
  358 + $('.delete_link', modal).on('click', function () {
  359 + var id = cTask.id;
  360 + if(!id){
  361 + notify_err('无法获取标识键!');
  362 + return;
  363 + }
  364 +
  365 + var str = '<h3>确定要删除这条子任务?</h3>';
  366 + alt_confirm(str, function () {
  367 + gb_common.$del('/childTask/' + id, function (rs) {
  368 + gb_schedule_table.updateSchedule(rs.t);
  369 +
  370 + UIkit.modal(modal).hide();
  371 + $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch});
  372 +
  373 + //更新路牌公里统计面板
  374 + gb_schedule_table.showLpMileageTipBySch(rs.t);
  375 + });
  376 + }, '确定删除');
  377 + });
355 378 })();
356 379 </script>
357 380 </div>
358 381 \ No newline at end of file
... ...
src/main/resources/static/real_control_v2/fragments/line_schedule/sch_table.html
... ... @@ -82,7 +82,7 @@
82 82 <span class="uk-badge uk-badge-danger">临加</span>
83 83 {{/if}}
84 84 {{if sch.cTasks.length > 0}}
85   - <span class="uk-badge uk-badge-notification c_task">{{sch.cTasks.length}}</span>
  85 + <span class="uk-badge uk-badge-notification c_task {{if sch.c_t_mileage_status==-1}}c_task_mileage_error{{/if}}">{{sch.cTasks.length}}</span>
86 86 {{/if}}
87 87 </dd>
88 88 <dd data-sort-val={{sch.dfsjT}} dbclick dbclick-type="dfsj" dbclick-val="{{sch.dfsj}}">
... ... @@ -136,7 +136,7 @@
136 136 <span class="uk-badge uk-badge-danger">临加</span>
137 137 {{/if}}
138 138 {{if cTasks.length > 0}}
139   - <span class="uk-badge uk-badge-notification c_task">{{cTasks.length}}</span>
  139 + <span class="uk-badge uk-badge-notification c_task {{if c_t_mileage_status==-1}}c_task_mileage_error{{/if}}">{{cTasks.length}}</span>
140 140 {{/if}}
141 141 </dd>
142 142 </script>
... ...
src/main/resources/static/real_control_v2/js/data/data_gps.js
... ... @@ -14,9 +14,6 @@ var gb_data_gps = (function () {
14 14 refreshEventCallbacks.push(cb);
15 15 };
16 16  
17   - //超速数据回调
18   - //var overspeedEventCallbacks = [];
19   -
20 17 var refresh = function (cb) {
21 18 $.ajax({
22 19 url: '/gps/real/line',
... ... @@ -25,8 +22,6 @@ var gb_data_gps = (function () {
25 22 success: function (rs) {
26 23 //用定时的gps来检测session断开
27 24 if(rs.status && rs.status==407){
28   - //解除退出页面的提示框
29   - window.removeEventListener("beforeunload", gb_beforeunload_fun);
30 25 location.href = '/login.html';
31 26 return;
32 27 }
... ...
src/main/resources/static/real_control_v2/js/line_schedule/badge_tooltip.js
... ... @@ -18,7 +18,6 @@ var gb_schedule_badge_tootip = (function () {
18 18 },
19 19 events: {
20 20 hidden: function(event, api) {
21   - //destroy dom
22 21 $(this).qtip('destroy', true);
23 22 }
24 23 }
... ... @@ -69,8 +68,7 @@ var gb_schedule_badge_tootip = (function () {
69 68 return a.order_no - b.order_no;
70 69 });
71 70 return temps['sch-table-task-tootip-temp'](
72   - {tasks: array, sch_id: sch.id, lineCode: sch.xlBm, jhlc: sch.jhlc,
73   - serviceCount: serviceCount, emptyCount: emptyCount});
  71 + {tasks: array, sch: sch, serviceCount: serviceCount, emptyCount: emptyCount});
74 72 }
75 73 },
76 74 position: _opts.position,
... ... @@ -100,11 +98,25 @@ var gb_schedule_badge_tootip = (function () {
100 98 }
101 99 }
102 100  
  101 + $('#edit-sub-task-main-modal').remove();
103 102 //打开子任务修改modal
104 103 open_modal('/real_control_v2/fragments/line_schedule/context_menu/sub_task_v2/edit.html', {
105 104 sch: sch,
106 105 cTask: cTask
107   - }, {center: false, bgclose: false, modal: false});
  106 + }, {center: false, bgclose: false});
  107 + });
  108 +
  109 + /**
  110 + * 新增子任务
  111 + */
  112 + $(document).on('click', 'i.badge_tip_add_icon', function () {
  113 + var schId = $(this).data('schid'),
  114 + lineCode = $(this).data('line');
  115 +
  116 + var sch = gb_schedule_table.findScheduleByLine(lineCode)[schId];
  117 + open_modal('/real_control_v2/fragments/line_schedule/context_menu/sub_task_v2/main.html', {
  118 + sch: sch
  119 + }, {center: false, bgclose: false});
108 120 });
109 121  
110 122 //区间 tootip
... ...
src/main/resources/static/real_control_v2/js/line_schedule/dbclick.js
... ... @@ -93,8 +93,18 @@ var gb_schedule_table_dbclick = (function() {
93 93 });
94 94 };
95 95  
  96 + var carCellClick = function (elem) {
  97 + elem.dblclick(function () {
  98 + var nbbm = $(this).data('nbbm');
  99 + var lineCode = $('.north-tabs>ul>li.tab-line.uk-active').data('code');
  100 +
  101 + open_modal('/real_control_v2/fragments/line_schedule/car_info_all.html', {nbbm:nbbm,lineCode:lineCode});
  102 + });
  103 + };
  104 +
96 105 return {
97 106 init: init,
98   - sfsjCellClick:sfsjCellClick
  107 + sfsjCellClick:sfsjCellClick,
  108 + carCellClick: carCellClick
99 109 };
100 110 })();
... ...
src/main/resources/static/real_control_v2/js/line_schedule/sch_table.js
... ... @@ -25,33 +25,6 @@ var gb_schedule_table = (function () {
25 25 return diff!=0?diff:typeOrder(s1['bcType'])-typeOrder(s2['bcType']);
26 26 };
27 27  
28   -
29   -
30   - /**
31   - * 检查是否存在重复班次
32   - * @param list
33   - */
34   - var isRepeatData = function (list) {
35   - try {
36   - var map = {}, reps = [];
37   - for(var i = 0,sch;sch=list[i++];){
38   - if(map[sch.id]){
39   - reps.push(sch.clZbh);
40   - }
41   - map[sch.id] = sch;
42   - }
43   -
44   - //通知服务端数据有异常
45   - $.each(reps, function () {
46   - $.post('/anomalyCheck/schRepeat', {nbbm: this});
47   - });
48   - }catch (e){
49   - return list;
50   - }
51   -
52   - return gb_common.get_vals(map);
53   - };
54   -
55 28 var show = function (cb) {
56 29 //从服务器获取班次数据
57 30 $.get('/realSchedule/lines', {
... ... @@ -59,8 +32,6 @@ var gb_schedule_table = (function () {
59 32 }, function (rs) {
60 33 for (var lineCode in rs) {
61 34 line2Schedule[lineCode] = {};
62   - //------是否有重复班次 #临时代码,为服务端提供诊断信息已解决这个问题
63   - rs[lineCode] = isRepeatData(rs[lineCode]);
64 35  
65 36 //排序
66 37 rs[lineCode].sort(schedule_sort);
... ... @@ -68,6 +39,8 @@ var gb_schedule_table = (function () {
68 39 $.each(rs[lineCode], function () {
69 40 calc_sch_real_shift(this);
70 41 line2Schedule[lineCode][this.id] = this;
  42 + //子任务公里是否与计划平
  43 + this.c_t_mileage_status = calcCTaskMileageStatus(this);
71 44 });
72 45 //计算应发未发
73 46 calc_yfwf_num(lineCode);
... ... @@ -82,7 +55,6 @@ var gb_schedule_table = (function () {
82 55 }));
83 56 });
84 57  
85   -
86 58 var ep = EventProxy.create("data", "temp", function (data, temp) {
87 59 temps = temp;
88 60 var lineCode, dirData, htmlStr;
... ... @@ -120,11 +92,63 @@ var gb_schedule_table = (function () {
120 92 gb_schedule_table_dbclick.init();
121 93 //双击实发
122 94 gb_schedule_table_dbclick.sfsjCellClick($('dd.fcsjActualCell'));
  95 + //双击车辆
  96 + gb_schedule_table_dbclick.carCellClick($('.ct_table_body dd[data-nbbm]'));
123 97 //搜索框初始化
124 98 gb_sch_search.init();
  99 +
  100 + //监听gps车辆信息
  101 + gb_data_gps.registerCallback(renderCarRemark);
125 102 cb && cb();
126 103 });
127 104 };
  105 +
  106 + var renderCarRemark = function () {
  107 + try{
  108 + var $activeTab = $('.north-tabs>ul>li.tab-line.uk-active');//.data('code');
  109 + if($activeTab.length==0)
  110 + return;
  111 + var lineCode = $activeTab.data('code');
  112 + var array = gb_common.get_vals(line2Schedule[lineCode]);
  113 + var nbbms = {};
  114 + for(var i=0,sch;sch=array[i++];){
  115 + nbbms[sch.clZbh]=1;
  116 + }
  117 +
  118 + var $activeWrap = $('#main-tab-content .line_schedule.uk-active .schedule-wrap .schedule-body');
  119 + var gps, e;
  120 + for(var nbbm in nbbms){
  121 + gps = gb_data_gps.findGpsByNbbm(nbbm);
  122 + e = $('.ct_table_body dl>dd[data-nbbm='+nbbm+']', $activeWrap);
  123 + $('i', e).remove();
  124 +
  125 + if(gps && gps['planCode']!=lineCode && gps.remark)
  126 + $(e).append('<i class="uk-icon-exclamation-circle" data-uk-tooltip title="'+gps.remark+'"></i>');
  127 + }
  128 + }catch (e){
  129 + console.log(e);
  130 + }
  131 + };
  132 +
  133 + /**
  134 + * 计算子任务公里是否和计划平
  135 + * @param sch
  136 + */
  137 + var calcCTaskMileageStatus = function (sch) {
  138 + if(!sch.cTasks || sch.cTasks.length==0)
  139 + return 0;
  140 + var sum = 0;
  141 + $.each(sch.cTasks, function () {
  142 + if (this.mileageType == 'service') {
  143 + sum = gb_common.accAdd(sum, this.mileage);
  144 + }
  145 + });
  146 +
  147 + if (sum != sch.jhlcOrig) {
  148 + return -1;
  149 + }
  150 + return 0;
  151 + };
128 152  
129 153  
130 154 //重置序号
... ... @@ -138,7 +162,7 @@ var gb_schedule_table = (function () {
138 162 var calc_sch_real_shift = function (sch) {
139 163 if (sch['fcsjActualTime']){
140 164 var diff = sch['fcsjActualTime'] - sch['dfsjT'], fcsj_diff;
141   - fcsj_diff = parseInt(diff / 60000);
  165 + fcsj_diff = parseInt(diff / 60000, 10);
142 166 if(diff % 60000 != 0){
143 167 /*if(fcsj_diff > 0)
144 168 fcsj_diff ++;
... ... @@ -284,10 +308,10 @@ var gb_schedule_table = (function () {
284 308 //var tMaps = {};
285 309 $.each(schArr, function () {
286 310 try {
  311 + //子任务公里是否与计划平
  312 + this.c_t_mileage_status = calcCTaskMileageStatus(this);
287 313 line2Schedule[this.xlBm][this.id] = this;
288 314 updateDom(this);
289   - //线路_车辆 过滤重复数据
290   - //tMaps[this.xlBm + '_' + this.clZbh] = 1;
291 315 }catch(e){}
292 316 });
293 317  
... ... @@ -321,6 +345,8 @@ var gb_schedule_table = (function () {
321 345  
322 346 //车辆自编号
323 347 $(dds[2]).replaceWith(temps['line-schedule-nbbm-temp'](sch));
  348 + //车辆双击
  349 + gb_schedule_table_dbclick.carCellClick($(dds[2]));
324 350 $(dds[3]).text(sch.qdzArrDatejh ? sch.qdzArrDatejh : '');
325 351 $(dds[4]).text(sch.qdzArrDatesj ? sch.qdzArrDatesj : '');
326 352  
... ... @@ -346,6 +372,8 @@ var gb_schedule_table = (function () {
346 372 //班次是车辆的最后一班
347 373 if (dl.hasClass('dl-last-sch'))
348 374 markerLastSch([sch]);
  375 +
  376 + renderCarRemark();
349 377 };
350 378  
351 379 //单击实发单元格显示详细信息
... ... @@ -785,6 +813,7 @@ var gb_schedule_table = (function () {
785 813 refreshAll: refreshAll,
786 814 getNextNormalSch: getNextNormalSch,
787 815 findNbbmByLineCode:findNbbmByLineCode,
788   - showLpMileageTipBySch: showLpMileageTipBySch
  816 + showLpMileageTipBySch: showLpMileageTipBySch,
  817 + renderCarRemark: renderCarRemark
789 818 };
790 819 })();
... ...
src/main/resources/static/real_control_v2/js/north/tabs.js
... ... @@ -61,6 +61,7 @@ var gb_tabs = (function() {
61 61 }
62 62 else{
63 63 gb_svg_chart.refreshByVisible();//刷新模拟图
  64 + gb_schedule_table.renderCarRemark();
64 65 }
65 66 });
66 67  
... ...
src/main/resources/static/real_control_v2/js/websocket/sch_websocket.js
... ... @@ -260,7 +260,7 @@ var gb_sch_websocket = (function () {
260 260 });
261 261  
262 262 //80不同意
263   - $(document).on('click', '.sys-mailbox .sys-note-80 .uk-button.reject', function () {
  263 + $(document).on('click', '.sys-mailbox .sys-note-80 .uk-button.reject', function (e) {
264 264 e.stopPropagation();
265 265 $(this).attr('disabled', 'disabled');
266 266 var panel = $(this).parents('.sys-note-80')
... ...