Commit f2c1f512643c85f479abb2347b36906ef34d705b

Authored by 潘钊
1 parent 45b6d31f

调人调车

src/main/java/com/bsth/entity/realcontrol/ChildTaskPlan.java
1 1 package com.bsth.entity.realcontrol;
2 2  
3 3 import javax.persistence.Entity;
  4 +import javax.persistence.FetchType;
4 5 import javax.persistence.GeneratedValue;
5 6 import javax.persistence.Id;
6 7 import javax.persistence.ManyToOne;
  8 +import javax.persistence.NamedAttributeNode;
  9 +import javax.persistence.NamedEntityGraph;
  10 +import javax.persistence.NamedEntityGraphs;
7 11 import javax.persistence.Table;
8 12  
9 13 /**
... ... @@ -16,6 +20,11 @@ import javax.persistence.Table;
16 20 */
17 21 @Entity
18 22 @Table(name = "bsth_c_s_child_task")
  23 +@NamedEntityGraphs({
  24 + @NamedEntityGraph(name = "childTaskPlan_schedule", attributeNodes = {
  25 + @NamedAttributeNode("schedule")
  26 + })
  27 +})
19 28 public class ChildTaskPlan {
20 29  
21 30 @Id
... ... @@ -37,11 +46,21 @@ public class ChildTaskPlan {
37 46 * 起点
38 47 */
39 48 private String startStation;
40   -
  49 +
  50 + /**
  51 + * 起点站名称
  52 + */
  53 + private String startStationName;
  54 +
41 55 /**
42 56 * 终点
43 57 */
44 58 private String endStation;
  59 +
  60 + /**
  61 + * 终点站名称
  62 + */
  63 + private String endStationName;
45 64  
46 65 /**
47 66 * 里程类型
... ... @@ -76,7 +95,7 @@ public class ChildTaskPlan {
76 95 /**
77 96 * 主排班计划
78 97 */
79   - @ManyToOne
  98 + @ManyToOne(fetch = FetchType.LAZY)
80 99 private ScheduleRealInfo schedule;
81 100  
82 101 private String remarks;
... ... @@ -184,4 +203,21 @@ public class ChildTaskPlan {
184 203 public void setRemarks(String remarks) {
185 204 this.remarks = remarks;
186 205 }
  206 +
  207 + public String getStartStationName() {
  208 + return startStationName;
  209 + }
  210 +
  211 + public void setStartStationName(String startStationName) {
  212 + this.startStationName = startStationName;
  213 + }
  214 +
  215 + public String getEndStationName() {
  216 + return endStationName;
  217 + }
  218 +
  219 + public void setEndStationName(String endStationName) {
  220 + this.endStationName = endStationName;
  221 + }
  222 +
187 223 }
... ...
src/main/java/com/bsth/repository/realcontrol/ChildTaskPlanRepository.java
1 1 package com.bsth.repository.realcontrol;
2 2  
  3 +import java.util.List;
  4 +
  5 +import org.springframework.data.jpa.domain.Specification;
  6 +import org.springframework.data.jpa.repository.EntityGraph;
3 7 import org.springframework.stereotype.Repository;
4 8  
5 9 import com.bsth.entity.realcontrol.ChildTaskPlan;
... ... @@ -8,4 +12,7 @@ import com.bsth.repository.BaseRepository;
8 12 @Repository
9 13 public interface ChildTaskPlanRepository extends BaseRepository<ChildTaskPlan, Long>{
10 14  
  15 + @EntityGraph(value = "childTaskPlan_schedule", type = EntityGraph.EntityGraphType.FETCH)
  16 + @Override
  17 + List<ChildTaskPlan> findAll(Specification<ChildTaskPlan> spec);
11 18 }
... ...
src/main/java/com/bsth/repository/realcontrol/ScheduleRealInfoRepository.java
... ... @@ -2,6 +2,10 @@ package com.bsth.repository.realcontrol;
2 2  
3 3 import java.util.List;
4 4  
  5 +import org.springframework.data.domain.Page;
  6 +import org.springframework.data.domain.Pageable;
  7 +import org.springframework.data.jpa.domain.Specification;
  8 +import org.springframework.data.jpa.repository.EntityGraph;
5 9 import org.springframework.data.jpa.repository.Query;
6 10 import org.springframework.stereotype.Repository;
7 11  
... ... @@ -14,5 +18,7 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI
14 18 @Query("select s from ScheduleRealInfo s where s.xlBm in ?1")
15 19 List<ScheduleRealInfo> findByLines(List<String> lines);
16 20  
17   -
  21 + @EntityGraph(value = "scheduleRealInfo_childTasks", type = EntityGraph.EntityGraphType.FETCH)
  22 + @Override
  23 + Page<ScheduleRealInfo> findAll(Specification<ScheduleRealInfo> spec, Pageable pageable);
18 24 }
... ...
src/main/java/com/bsth/service/realcontrol/impl/ChildTaskPlanServiceImpl.java
1 1 package com.bsth.service.realcontrol.impl;
2 2  
  3 +import java.util.Map;
  4 +
3 5 import org.springframework.stereotype.Service;
4 6  
5 7 import com.bsth.entity.realcontrol.ChildTaskPlan;
6 8 import com.bsth.service.impl.BaseServiceImpl;
7 9 import com.bsth.service.realcontrol.ChildTaskPlanService;
  10 +import com.bsth.vehicle.common.CommonMapped;
8 11  
9 12 @Service
10 13 public class ChildTaskPlanServiceImpl extends BaseServiceImpl<ChildTaskPlan, Long> implements ChildTaskPlanService{
11 14  
  15 + @Override
  16 + public Map<String, Object> save(ChildTaskPlan t) {
  17 + //保存起终点名称
  18 + Map<String, String> map = CommonMapped.stationCodeMap;
  19 +
  20 + t.setStartStationName(map.get(t.getStartStation()));
  21 + t.setEndStationName(map.get(t.getEndStation()));
  22 + return super.save(t);
  23 + }
  24 +
12 25 }
... ...
src/main/java/com/bsth/vehicle/common/CommonMapped.java
... ... @@ -35,7 +35,7 @@ public class CommonMapped {
35 35 public static Map<String , String> vehicCompanyMap;
36 36  
37 37 /**
38   - * 站点和编码对照
  38 + * 站点编码和名称对照,包括停车场
39 39 *(K: 站点编码 ,V:站点名称)
40 40 */
41 41 public static Map<String, String> stationCodeMap;
... ...
src/main/java/com/bsth/vehicle/common/CommonRefreshThread.java
... ... @@ -9,8 +9,10 @@ import org.slf4j.LoggerFactory;
9 9 import org.springframework.beans.factory.annotation.Autowired;
10 10 import org.springframework.stereotype.Component;
11 11  
  12 +import com.bsth.entity.CarPark;
12 13 import com.bsth.entity.Cars;
13 14 import com.bsth.entity.Station;
  15 +import com.bsth.repository.CarParkRepository;
14 16 import com.bsth.repository.CarsRepository;
15 17 import com.bsth.repository.StationRepository;
16 18 import com.google.common.collect.BiMap;
... ... @@ -33,6 +35,9 @@ public class CommonRefreshThread extends Thread{
33 35 @Autowired
34 36 StationRepository stationRepository;
35 37  
  38 + @Autowired
  39 + CarParkRepository carParkRepository;
  40 +
36 41 Logger logger = LoggerFactory.getLogger(this.getClass());
37 42  
38 43 @Override
... ... @@ -74,12 +79,19 @@ public class CommonRefreshThread extends Thread{
74 79 public void initStationCodeMap(){
75 80 Map<String, String> newMap = new HashMap<>();
76 81 Iterator<Station> iterator = stationRepository.findAll().iterator();
77   -
  82 + //站点
78 83 Station station;
79 84 while(iterator.hasNext()){
80 85 station = iterator.next();
81 86 newMap.put(station.getStationCod(), station.getStationName());
82 87 }
  88 + //停车场
  89 + Iterator<CarPark> iterator2 = carParkRepository.findAll().iterator();
  90 + CarPark carPark;
  91 + while(iterator2.hasNext()){
  92 + carPark = iterator2.next();
  93 + newMap.put(carPark.getParkCode(), carPark.getParkName());
  94 + }
83 95  
84 96 CommonMapped.stationCodeMap = newMap;
85 97 }
... ...
src/main/resources/static/pages/control/line/child_pages/child_task.html
... ... @@ -77,78 +77,8 @@
77 77 </div>
78 78 </div>
79 79 <div class="custom-table-body" style="min-width: 800px;">
80   - <table class="table table-bordered table-advance" >
  80 + <table class="table table-bordered table-advance subTable table-striped" >
81 81 <tbody>
82   - <tr>
83   - <td width="6%">1</td>
84   - <td width="11%"></td>
85   - <td width="16%"></td>
86   - <td width="16%"></td>
87   - <td width="10%"></td>
88   - <td width="10%"></td>
89   - <td width="7%"></td>
90   - <td width="11%"></td>
91   - </tr>
92   - <tr>
93   - <td width="6%">2</td>
94   - <td width="11%"></td>
95   - <td width="16%"></td>
96   - <td width="16%"></td>
97   - <td width="10%"></td>
98   - <td width="10%"></td>
99   - <td width="7%"></td>
100   - <td width="11%"></td>
101   - </tr>
102   - <tr>
103   - <td width="6%">3</td>
104   - <td width="11%"></td>
105   - <td width="16%"></td>
106   - <td width="16%"></td>
107   - <td width="10%"></td>
108   - <td width="10%"></td>
109   - <td width="7%"></td>
110   - <td width="11%"></td>
111   - </tr>
112   - <tr>
113   - <td width="6%">4</td>
114   - <td width="11%"></td>
115   - <td width="16%"></td>
116   - <td width="16%"></td>
117   - <td width="10%"></td>
118   - <td width="10%"></td>
119   - <td width="7%"></td>
120   - <td width="11%"></td>
121   - </tr>
122   - <tr>
123   - <td width="6%">5</td>
124   - <td width="11%"></td>
125   - <td width="16%"></td>
126   - <td width="16%"></td>
127   - <td width="10%"></td>
128   - <td width="10%"></td>
129   - <td width="7%"></td>
130   - <td width="11%"></td>
131   - </tr>
132   - <tr>
133   - <td width="6%">6</td>
134   - <td width="11%"></td>
135   - <td width="16%"></td>
136   - <td width="16%"></td>
137   - <td width="10%"></td>
138   - <td width="10%"></td>
139   - <td width="7%"></td>
140   - <td width="11%"></td>
141   - </tr>
142   - <tr>
143   - <td width="6%">7</td>
144   - <td width="11%"></td>
145   - <td width="16%"></td>
146   - <td width="16%"></td>
147   - <td width="10%"></td>
148   - <td width="10%"></td>
149   - <td width="7%"></td>
150   - <td width="11%"></td>
151   - </tr>
152 82 </tbody>
153 83 </table>
154 84 </div>
... ... @@ -228,6 +158,10 @@ var parkSelect2Data = createParkSelect2Data(),
228 158 var stationRoute;
229 159 //标准信息
230 160 var lineInformation;
  161 +
  162 +var $mainTab = $('.custom-table-body table.mainTable');
  163 +
  164 +var $subTab = $('.custom-table-body table.subTable');
231 165 $(function(){
232 166 //var storage = window.localStorage;
233 167 var lineCodeMaps;
... ... @@ -249,11 +183,9 @@ $(function(){
249 183 $header.css('top', top);
250 184 });
251 185  
252   - var $table = $('.custom-table-body table');
253   -
254 186 //主任务点击事件
255 187 $('#childTaskDiv').on('click', '.mainTable tr', function(){
256   - $table.find('tr._active').removeClass('_active');
  188 + $mainTab.find('tr._active').removeClass('_active');
257 189 $(this).addClass('_active');
258 190  
259 191 //显示班次详细
... ... @@ -265,6 +197,8 @@ $(function(){
265 197  
266 198 var id = $(this).data('id');
267 199 childTaskBtn(scheduleIdMap[id].bcType);
  200 +
  201 + refreshChildTasks();
268 202 });
269 203  
270 204 //子任务按钮
... ... @@ -394,8 +328,21 @@ $(function(){
394 328  
395 329 var htmlStr = template('child_task_main_table_temp', {list: schArray});
396 330 $('#childTaskDiv .mainTable tbody').html(htmlStr);
  331 +
  332 + //清空子任务列表
  333 + resetSubTanle();
  334 + }
  335 +
  336 + function resetSubTanle(){
  337 + $subTab.find('tbody').html('<tr><td class="no_check_main_task" colspan=8></td></tr>');
397 338 }
398 339  
  340 + //删除子任务
  341 + $('#childTaskDiv').on('click','.child_task_delete', function(){
  342 + var id = $(this).data('id');
  343 + removeConfirm('确定删除子任务?', '/childTask/' + id, refreshChildTasks);
  344 + });
  345 +
399 346  
400 347 $('.childTaskBtns .custom-btn').on('click', function(){
401 348 var schedul = scheduleIdMap[$('.mainTable tr._active').data('id')];
... ... @@ -523,4 +470,18 @@ $(function(){
523 470 }
524 471 }
525 472 });
  473 +
  474 +//刷新子任务表格
  475 +function refreshChildTasks(){
  476 + //主任务id
  477 + var id = $mainTab.find('tr._active').data('id');
  478 +
  479 + $.get('/childTask/all', {'schedule.id_eq': id}, function(rs){
  480 + var htmlStr = template('child_task_sub_table_temp', {list: rs});
  481 +
  482 + dictionaryUtils.transformDom(
  483 + $subTab.find('tbody').html(htmlStr).find('.nt-dictionary')
  484 + );
  485 + });
  486 +}
526 487 </script>
... ...
src/main/resources/static/pages/control/line/child_pages/js/child_task.js
... ... @@ -184,6 +184,9 @@ var childTaskCase = {
184 184 }
185 185 //相关选项事件绑定
186 186 function bindEvent(taskItem){
  187 + //字典下拉框
  188 + dictionaryUtils.transformDom($('.nt-dictionary', taskItem));
  189 +
187 190 var $reason = taskItem.find('.destroy-reason-wrap');
188 191 //里程类型下拉框
189 192 var mileageTypeSel = $('select[name=mileageType]', taskItem);
... ... @@ -194,10 +197,10 @@ var childTaskCase = {
194 197 }).on('ifChanged', function(){
195 198 if(this.checked){
196 199 $reason.show();
197   - mileageTypeSel.val('营运').attr('readonly', 'readonly');
  200 + mileageTypeSel.val('service').attr('readonly', 'readonly');
198 201 //隐藏结束时间
199 202 hideInput($('input[name=endDate]', taskItem));
200   - changeBadge('烂班', taskItem);
  203 + changeBadge('destory', taskItem);
201 204 }
202 205 else{
203 206 mileageTypeSel.removeAttr('readonly').change();
... ... @@ -211,17 +214,16 @@ var childTaskCase = {
211 214 $reason.find('select').on('change', function(){
212 215 globalRem.val(globalRem.val() + $(this).val() + ',');
213 216 });
  217 +
214 218 //里程类型
215 219 mileageTypeSel.on('change', function(){
216 220 //如果已烂班
217 221 if($('.icheck', taskItem)[0].checked)
218 222 return;
  223 +
219 224 changeBadge($(this).val(), taskItem);
220 225 });
221 226  
222   - //任务类型字典下拉框
223   - dictionaryUtils.transformDom($('.nt-dictionary', taskItem));
224   -
225 227 $('select[name=type2]', taskItem).on('change', function(){
226 228 var t = $(this).val();
227 229  
... ... @@ -280,13 +282,18 @@ var childTaskCase = {
280 282 ,no = $('.no', badge)
281 283 ,remClaszz = 'yinyun kongshi destroy', clazz;
282 284  
283   - if(t == '营运')
  285 + if(t == 'service'){
  286 + t = '营运'
284 287 clazz = 'yinyun';
285   - else if(t == '空驶')
  288 + }
  289 + else if(t == 'empty'){
  290 + t = '空驶'
286 291 clazz = 'kongshi';
287   - else if(t == '烂班')
  292 + }
  293 + else if(t == 'destory'){
  294 + t = '烂班';
288 295 clazz = 'destroy';
289   -
  296 + }
290 297 $(badge).find('.text').remove();
291 298 if(!t){
292 299 clazz = 'yinyun';
... ... @@ -332,6 +339,8 @@ function childTaskSubmit(fs, layerIndex){
332 339 layer.msg('子任务添加成功');
333 340 setTimeout(function(){
334 341 layer.close(layerIndex);
  342 + //刷新子任务列表
  343 + refreshChildTasks();
335 344 }, 700);
336 345 });
337 346 }
... ...
src/main/resources/static/pages/control/line/child_pages/temporary_add.html deleted 100644 → 0
1   -<!-- 临加班次 -->
2   -<div id="temporaryAddDiv">
3   - <form action="#" class="form-horizontal form-custom">
4   - <div class="form-body">
5   - <div class="form-custom-row">
6   - <div class="item" style="margin-top: 0">
7   - <span class="item-label" style="width: 40px;">线路: </span>
8   - <select name="line" class="form-control lineSelect"></select>
9   - </div>
10   - &nbsp;&nbsp;
11   - <div class="item" style="margin-top: 0">
12   - <span class="item-label" style="width: 40px;">路牌: </span>
13   - <select name="foo" class="form-control LPSelect">
14   - </select>
15   - <i class="fa fa-plus add-icon" title="新增路牌"></i>
16   - </div>
17   - </div>
18   - </div>
19   - </form>
20   -
21   - <div class="row" style="margin: 0">
22   - <div class="col-md-12 ">
23   - <div class="custom-table-title">班次</div>
24   - <div class="custom-table-panel">
25   - <div style="height: 36px; position: relative;">
26   - <div class="custom-table-header">
27   - <table class="table table-bordered table-advance">
28   - <thead>
29   - <tr>
30   - <th width="7%">序号</th>
31   - <th width="9%">开始时间</th>
32   - <th width="9%">结束时间</th>
33   - <th width="13%">起点</th>
34   - <th width="13%">终点</th>
35   - <th width="7%">里程</th>
36   - <th width="10%">车辆</th>
37   - <th width="9%">驾驶员</th>
38   - <th width="9%">售票员</th>
39   - </tr>
40   - </thead>
41   - </table>
42   - </div>
43   - </div>
44   -
45   - <div class="custom-table-body">
46   - <table class="table table-bordered table-advance">
47   - <tbody>
48   - <tr>
49   - <td width="7%">1</td>
50   - <td width="9%">05:00</td>
51   - <td width="9%">05:00</td>
52   - <td width="13%">长岛路东陆路</td>
53   - <td width="13%">陆家嘴地铁站</td>
54   - <td width="7%">22</td>
55   - <td width="10%">W2B-091</td>
56   - <td width="9%">张全强</td>
57   - <td width="9%"></td>
58   - </tr>
59   - <tr>
60   - <td>2</td>
61   - <td>06:00</td>
62   - <td>07:00</td>
63   - <td>长岛路东陆路</td>
64   - <td>陆家嘴地铁站</td>
65   - <td>22</td>
66   - <td>W2B-091</td>
67   - <td>张全强</td>
68   - <td></td>
69   - </tr>
70   - <tr>
71   - <td>3</td>
72   - <td>05:00</td>
73   - <td>05:00</td>
74   - <td>长岛路东陆路</td>
75   - <td>陆家嘴地铁站</td>
76   - <td>22</td>
77   - <td>W2B-091</td>
78   - <td>张全强</td>
79   - <td></td>
80   - </tr>
81   - <tr>
82   - <td>4</td>
83   - <td>05:00</td>
84   - <td>05:00</td>
85   - <td>长岛路东陆路</td>
86   - <td>陆家嘴地铁站</td>
87   - <td>22</td>
88   - <td>W2B-091</td>
89   - <td>张全强</td>
90   - <td></td>
91   - </tr>
92   - <tr>
93   - <td>5</td>
94   - <td>05:00</td>
95   - <td>05:00</td>
96   - <td>长岛路东陆路</td>
97   - <td>陆家嘴地铁站</td>
98   - <td>22</td>
99   - <td>W2B-091</td>
100   - <td>张全强</td>
101   - <td></td>
102   - </tr>
103   - <tr>
104   - <td>6</td>
105   - <td>05:00</td>
106   - <td>05:00</td>
107   - <td>长岛路东陆路</td>
108   - <td>陆家嘴地铁站</td>
109   - <td>22</td>
110   - <td>W2B-091</td>
111   - <td>张全强</td>
112   - <td></td>
113   - </tr>
114   - <tr>
115   - <td>7</td>
116   - <td>05:00</td>
117   - <td>05:00</td>
118   - <td>长岛路东陆路</td>
119   - <td>陆家嘴地铁站</td>
120   - <td>22</td>
121   - <td>W2B-091</td>
122   - <td>张全强</td>
123   - <td></td>
124   - </tr>
125   - <tr>
126   - <td>8</td>
127   - <td>05:00</td>
128   - <td>05:00</td>
129   - <td>长岛路东陆路</td>
130   - <td>陆家嘴地铁站</td>
131   - <td>22</td>
132   - <td>W2B-091</td>
133   - <td>张全强</td>
134   - <td></td>
135   - </tr>
136   - <tr>
137   - <td>9</td>
138   - <td>05:00</td>
139   - <td>05:00</td>
140   - <td>长岛路东陆路</td>
141   - <td>陆家嘴地铁站</td>
142   - <td>22</td>
143   - <td>W2B-091</td>
144   - <td>张全强</td>
145   - <td></td>
146   - </tr>
147   - <tr>
148   - <td>10</td>
149   - <td>05:00</td>
150   - <td>05:00</td>
151   - <td>长岛路东陆路</td>
152   - <td>陆家嘴地铁站</td>
153   - <td>22</td>
154   - <td>W2B-091</td>
155   - <td>张全强</td>
156   - <td></td>
157   - </tr>
158   - <tr>
159   - <td>11</td>
160   - <td>05:00</td>
161   - <td>05:00</td>
162   - <td>长岛路东陆路</td>
163   - <td>陆家嘴地铁站</td>
164   - <td>22</td>
165   - <td>W2B-091</td>
166   - <td>张全强</td>
167   - <td></td>
168   - </tr>
169   - <tr>
170   - <td>12</td>
171   - <td>05:00</td>
172   - <td>05:00</td>
173   - <td>长岛路东陆路</td>
174   - <td>陆家嘴地铁站</td>
175   - <td>22</td>
176   - <td>W2B-091</td>
177   - <td>张全强</td>
178   - <td></td>
179   - </tr>
180   - <tr>
181   - <td>13</td>
182   - <td>05:00</td>
183   - <td>05:00</td>
184   - <td>长岛路东陆路</td>
185   - <td>陆家嘴地铁站</td>
186   - <td>22</td>
187   - <td>W2B-091</td>
188   - <td>张全强</td>
189   - <td></td>
190   - </tr>
191   - <tr>
192   - <td>14</td>
193   - <td>05:00</td>
194   - <td>05:00</td>
195   - <td>长岛路东陆路</td>
196   - <td>陆家嘴地铁站</td>
197   - <td>22</td>
198   - <td>W2B-091</td>
199   - <td>张全强</td>
200   - <td></td>
201   - </tr>
202   - <tr>
203   - <td>15</td>
204   - <td>05:00</td>
205   - <td>05:00</td>
206   - <td>长岛路东陆路</td>
207   - <td>陆家嘴地铁站</td>
208   - <td>22</td>
209   - <td>W2B-091</td>
210   - <td>张全强</td>
211   - <td></td>
212   - </tr>
213   - </tbody>
214   - </table>
215   - </div>
216   - </div>
217   - </div>
218   - </div>
219   -
220   -
221   - <div class="temporary-box">
222   - <hr>
223   - <div class="row">
224   - <div class="col-md-4">
225   - <span class="custom-label">班次类型: </span> <select
226   - class="form-control">
227   - <option class="正常">正常</option>
228   - <option class="进场">进场</option>
229   - <option class="出场">出场</option>
230   - </select>
231   - </div>
232   - <div class="col-md-4"></div>
233   - <div class="col-md-4">
234   - <span class="custom-label">上下行:</span> <select class="form-control">
235   - <option class="上行">上行</option>
236   - <option class="下行">下行</option>
237   - </select>
238   - </div>
239   - </div>
240   -
241   - <div class="row">
242   - <div class="col-md-4">
243   - <span class="custom-label">序号: </span> <input value="4"
244   - class="form-control">
245   - </div>
246   - <div class="col-md-4">
247   - <span class="custom-label">开始时间: </span> <input value="09:16"
248   - class="form-control">
249   - </div>
250   - <div class="col-md-4">
251   - <span class="custom-label">结束时间:</span> <input value="09:54"
252   - class="form-control">
253   - </div>
254   - </div>
255   -
256   - <div class="row">
257   - <div class="col-md-4">
258   - <span class="custom-label">起点: </span> <select class="form-control">
259   - <option class="陆家嘴地铁站">陆家嘴地铁站</option>
260   - </select>
261   - </div>
262   - <div class="col-md-4">
263   - <span class="custom-label">终点: </span> <select class="form-control">
264   - <option class="陆家嘴地铁站">陆家嘴地铁站</option>
265   - </select>
266   - </div>
267   - <div class="col-md-4">
268   - <span class="custom-label">里程:</span> <input value="13.66"
269   - class="form-control">
270   - </div>
271   - </div>
272   - <hr>
273   - <div class="row" style="margin-top: 0;">
274   - <div class="col-md-4">
275   - <span class="custom-label">车辆: </span> <input value="W2B-098"
276   - class="form-control">
277   - </div>
278   - <div class="col-md-4">
279   - <span class="custom-label">驾驶员: </span> <input value="015583/凌羽雄"
280   - class="form-control">
281   - </div>
282   - <div class="col-md-4">
283   - <span class="custom-label">售票员: </span> <input value=""
284   - class="form-control">
285   - </div>
286   - </div>
287   - </div>
288   -
289   -</div>
290   -
291   -<hr>
292   -<div class="form-custom-footer" style="margin-top: 15px;">
293   - <button type="button" class="btn blue-madison confirm">
294   - <i class="fa fa-check"></i> &nbsp;&nbsp;确&nbsp;&nbsp;定
295   - </button>
296   - <button type="button" class="btn layui-layer-close">取消</button>
297   -</div>
298   -
299   -<script>
300   -(function() {
301   - //停靠表头
302   - var width = $('.custom-table-body').width();
303   - $('.custom-table-header').css('position', 'fixed').css('width', width);
304   -
305   - var storage = window.localStorage;
306   - var lineItems = JSON.parse(storage.getItem('lineControlItems'));
307   -
308   - //线路下拉框
309   - var lineData = [];
310   - $.each(lineItems, function(){
311   - lineData.push({id: this.lineCode, text: this.name});
312   - });
313   -
314   - var lineSelect = $('#temporaryAddDiv .lineSelect');
315   - var lpSelect = $('#temporaryAddDiv .LPSelect');
316   - initPinYinSelect2(lineSelect, lineData);
317   -
318   - $('#temporaryAddDiv').on('init', function(e, ops){
319   - var data = ops.data
320   - , lineData = [], lineName;
321   -
322   - for(var lineCode in data ){
323   - lineName = lineMap[lineCode];
324   - lineData.push({id: lineCode, text: lineName});
325   - }
326   - });
327   -})();
328   -</script>
329 0 \ No newline at end of file
src/main/resources/static/pages/control/line/child_pages/vehicAndper_adjust.html
... ... @@ -4,10 +4,14 @@
4 4 <div class="form-body">
5 5 <div class="form-custom-row">
6 6 <div class="item full" >
7   - <span class="item-label" style="width: 80px;">执行路牌: </span>
8   - <select class="form-control" style="width: calc(100% - 90px);">
9   - <option value="青9">青9</option>
10   - </select>
  7 + <div style="display: inline-block;">
  8 + <span class="item-label" style="width: 80px;">线路: </span>
  9 + <select class="form-control lineSelect" style="width: 180px;"></select>
  10 + </div>
  11 + <div style="display: inline-block;margin-left: 15px;">
  12 + <span class="item-label" style="width: 80px;">执行路牌: </span>
  13 + <select class="form-control lpSelect" style="width: 140px;"></select>
  14 + </div>
11 15 </div>
12 16 </div>
13 17  
... ... @@ -31,89 +35,9 @@
31 35 </div>
32 36 </div>
33 37  
34   - <div class="custom-table-body">
35   - <table class="table table-bordered table-advance">
  38 + <div class="custom-table-body" >
  39 + <table class="table table-bordered table-advance" >
36 40 <tbody>
37   - <tr>
38   - <td width="20%">
39   - <input type="checkbox"> 15:54
40   - </td>
41   - <td width="20%">Q4A-006</td>
42   - <td width="30%">011434/周明</td>
43   - <td width="30%">903383/潘扣来</td>
44   - </tr>
45   - <tr>
46   - <td>
47   - <input type="checkbox"> 15:54
48   - </td>
49   - <td>Q4A-006</td>
50   - <td>011434/周明</td>
51   - <td>903383/潘扣来</td>
52   - </tr>
53   - <tr>
54   - <td>
55   - <input type="checkbox"> 15:54
56   - </td>
57   - <td>Q4A-006</td>
58   - <td>011434/周明</td>
59   - <td>903383/潘扣来</td>
60   - </tr>
61   - <tr>
62   - <td>
63   - <input type="checkbox"> 15:54
64   - </td>
65   - <td>Q4A-006</td>
66   - <td>011434/周明</td>
67   - <td>903383/潘扣来</td>
68   - </tr>
69   - <tr>
70   - <td>
71   - <input type="checkbox"> 15:54
72   - </td>
73   - <td>Q4A-006</td>
74   - <td>011434/周明</td>
75   - <td>903383/潘扣来</td>
76   - </tr>
77   - <tr>
78   - <td>
79   - <input type="checkbox"> 15:54
80   - </td>
81   - <td>Q4A-006</td>
82   - <td>011434/周明</td>
83   - <td>903383/潘扣来</td>
84   - </tr>
85   - <tr>
86   - <td>
87   - <input type="checkbox"> 15:54
88   - </td>
89   - <td>Q4A-006</td>
90   - <td>011434/周明</td>
91   - <td>903383/潘扣来</td>
92   - </tr>
93   - <tr>
94   - <td>
95   - <input type="checkbox"> 15:54
96   - </td>
97   - <td>Q4A-006</td>
98   - <td>011434/周明</td>
99   - <td>903383/潘扣来</td>
100   - </tr>
101   - <tr>
102   - <td>
103   - <input type="checkbox"> 15:54
104   - </td>
105   - <td>Q4A-006</td>
106   - <td>011434/周明</td>
107   - <td>903383/潘扣来</td>
108   - </tr>
109   - <tr>
110   - <td>
111   - <input type="checkbox"> 15:54
112   - </td>
113   - <td>Q4A-006</td>
114   - <td>011434/周明</td>
115   - <td>903383/潘扣来</td>
116   - </tr>
117 41 </tbody>
118 42 </table>
119 43 </div>
... ... @@ -170,11 +94,128 @@
170 94 </div>
171 95 </form>
172 96 </div>
  97 +<script id="pers_adjust_table_temp" type="text/html">
  98 +{{each list as item i}}
  99 +{{if item != null}}
  100 +<tr data-id={{item.id}}>
  101 + <td width="20%">
  102 + <input type="checkbox" class="icheck"> {{item.fcsj}}
  103 + </td>
  104 + <td width="20%">{{item.clZbh}}</td>
  105 + <td width="30%">{{item.jGh}}/{{item.jName}}</td>
  106 + <td width="30%">{{item.sGh}}/{{item.sName}}</td>
  107 +</tr>
  108 +{{/if}}
  109 +{{/each}}
  110 +</script>
173 111 <script>
174 112 (function() {
  113 + var _data, _alone, scheduleLineMap, scheduleIdMap;
  114 +
175 115 //停靠表头
176   - var width = $('.custom-table-body').width();
177   - $('.custom-table-header').css('position', 'fixed').css('width', width);
178   -
  116 + /* var width = $('.custom-table-body').width();
  117 + $('.custom-table-header').css('position', 'fixed').css('width', width); */
  118 + //滚动时固定表头
  119 + $('.custom-table-panel').on('scroll', function(){
  120 + var top = $(this).scrollTop()
  121 + ,$header = $(this).find('.custom-table-header');
  122 + $header.css('top', top);
  123 + });
  124 +
  125 + var wrap = '#vehicleAndPersionAdjustDiv';
  126 + var lineSelect = $('.lineSelect', wrap);
  127 + var lpSelect = $('.lpSelect', wrap);
  128 +
  129 + //班次选中事件
  130 + $(wrap).on('ifChanged', '.icheck', function(){
  131 + var $tr = $(this).parents('tr');
  132 + if(this.checked)
  133 + $tr.addClass('adjust_tr_active');
  134 + else
  135 + $tr.removeClass('adjust_tr_active');
  136 + });
  137 +
  138 + //初始化
  139 + $(wrap).on('init', function(e, ops ){
  140 + _data = ops._data;
  141 + _alone = ops._alone;
  142 + var schedul = ops.selected;
  143 + //线路 ——> 路牌 ——> 班次映射
  144 + scheduleLineMap = _data.getLineLpMap();
  145 + //线路下拉框数据
  146 + lineCodeMaps = _data.getLineIds();
  147 + var lineData = [], lineName;
  148 + for(var lineCode in scheduleLineMap){
  149 + lineName = lineCodeMaps[lineCode];
  150 + lineData.push({id: lineCode, text: lineName});
  151 + }
  152 +
  153 + initPinYinSelect2(lineSelect, lineData, function(){
  154 + //绑定change事件
  155 + lineSelect.on('change', changeLine);
  156 + //初始选中的线路
  157 + lineSelect.val(schedul.xlBm).trigger("change");
  158 +
  159 + setTimeout(function(){
  160 + //选中路牌
  161 + lpSelect.val(schedul.lpName).trigger("change");
  162 +
  163 + //选中班次
  164 + var $tr = $('table tr[data-id='+schedul.id+']', wrap);
  165 + $tr.find('input').iCheck('check');
  166 + //滚动条
  167 + var cont = $('.custom-table-panel');
  168 + cont.animate({
  169 + scrollTop: $tr.offset().top - cont.offset().top + $tr.scrollTop() - 36 * 4
  170 + }, 500);
  171 +
  172 + }, 100);
  173 + });
  174 +
  175 + lpSelect.on('change', refreshMainList);
  176 +
  177 + function changeLine(){
  178 + var lineCode = lineSelect.val();
  179 + //设置路牌数据
  180 + var data = [];
  181 + for(var lp in scheduleLineMap[lineCode]){
  182 + data.push({id: lp, text: lp});
  183 + }
  184 + if(data.length > 0){
  185 + initPinYinSelect2(lpSelect.html(''), data, function(){
  186 + refreshMainList();
  187 + });
  188 + }
  189 + //人员下拉框
  190 + //carAndPersInit(lineCode);
  191 + }
  192 +
  193 + /**
  194 + * 刷新主任务列表
  195 + */
  196 + function refreshMainList(){
  197 + var lineCode = lineSelect.val()
  198 + ,lp = lpSelect.val()
  199 + ,scheduls = scheduleLineMap[lineCode][lp];
  200 + //保留当前列表班次的映射
  201 + scheduleIdMap = {};
  202 + $.each(scheduls, function(){
  203 + scheduleIdMap[this.id] = this;
  204 + });
  205 +
  206 + var schArray = [];
  207 + $.each(scheduls, function(){
  208 + schArray[this.fcno - 1] = this;
  209 + });
  210 +
  211 + var htmlStr = template('pers_adjust_table_temp', {list: schArray});
  212 + $('table tbody', wrap).html(htmlStr);
  213 +
  214 + $('.icheck', wrap).iCheck({
  215 + checkboxClass: 'icheckbox_flat-blue',
  216 + increaseArea: '20%'
  217 + });
  218 + }
  219 + });
179 220 })();
180 221 </script>
... ...
src/main/resources/static/pages/control/line/css/lineControl.css
... ... @@ -1355,10 +1355,12 @@ height: 400px;
1355 1355 height: 36px;
1356 1356 width: 100%;
1357 1357 position: absolute;
  1358 + z-index: 99;
1358 1359 }
1359 1360  
1360 1361 .custom-table-panel table{
1361 1362 margin-bottom: 0 !important;
  1363 + table-layout: fixed;
1362 1364 }
1363 1365  
1364 1366 .custom-table-header table tr th,
... ... @@ -1747,4 +1749,99 @@ tr.empty._active {
1747 1749  
1748 1750 .custom-box-body .select2-container--bootstrap{
1749 1751 display: inline-block;
1750   -}
1751 1752 \ No newline at end of file
  1753 +}
  1754 +
  1755 +.child_task_badge:BEFORE{
  1756 + padding: 2px 5px;
  1757 + font-size: 12px;
  1758 + float: right;
  1759 +}
  1760 +
  1761 +.child_task_badge.service_0:BEFORE{
  1762 + content: '营';
  1763 + background: #4796cc;
  1764 + color: white;
  1765 +}
  1766 +
  1767 +.child_task_badge.empty_0:BEFORE{
  1768 + content: '空';
  1769 + background: #9f9f9f;
  1770 + color: white;
  1771 +}
  1772 +
  1773 +.child_task_badge.service_1:BEFORE,
  1774 +.child_task_badge.empty_1:BEFORE{
  1775 + content: '烂';
  1776 + background: red;
  1777 + color: white;
  1778 +}
  1779 +
  1780 +.no_check_main_task:BEFORE{
  1781 + content: '请先选择主任务...';
  1782 + font-size: 12px;
  1783 + margin-left: 200px;
  1784 +}
  1785 +
  1786 +td.empty_text{
  1787 + font-size: 12px;
  1788 + text-indent: 160px;
  1789 +}
  1790 +
  1791 +.popover{
  1792 + z-index: 99999999;
  1793 +}
  1794 +
  1795 +a.no_and_removeLink {
  1796 + color: #4a4aff;
  1797 + text-decoration: underline;
  1798 +}
  1799 +
  1800 +.subTable .dropdown{
  1801 + display: inline-block;
  1802 +}
  1803 +
  1804 +.subTable .dropdown-menu > li > a{
  1805 + padding: 6px 9px;
  1806 +}
  1807 +
  1808 +.subTable .dropdown-menu{
  1809 + left: -7px !important;
  1810 + width: 65px;
  1811 + box-shadow: 0 8px 17px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19);
  1812 + min-width: 65px;
  1813 + border: none;
  1814 +}
  1815 +
  1816 +.subTable .dropdown .dropdown-menu:before
  1817 +{
  1818 + border-bottom: 8px solid #ff8686;
  1819 + left: 4px;
  1820 +}
  1821 +
  1822 +.subTable .dropdown .dropdown-menu:after{
  1823 + border-bottom: 8px solid #ff8686;
  1824 + left: 5px;
  1825 +}
  1826 +
  1827 +.subTable .dropdown li.child_task_delete{
  1828 + background: #ff8686;
  1829 + font-size: 12px;
  1830 +}
  1831 +
  1832 +.subTable .dropdown-menu > li.child_task_delete > a,
  1833 +.subTable .dropdown-menu > li.child_task_delete > a > i{
  1834 + color: white;
  1835 +}
  1836 +
  1837 +.subTable .dropdown-menu > li.child_task_delete:hover > a{
  1838 + background: linear-gradient(to bottom, #ff8585 0%, #ee4646 100px);
  1839 + color: white;
  1840 +}
  1841 +
  1842 +#vehicleAndPersionAdjustDiv table tr td{
  1843 + transition: all .3s ease;
  1844 +}
  1845 +
  1846 +tr.adjust_tr_active td{
  1847 + border-bottom: 1px solid #3598dc !important;
  1848 +}
... ...
src/main/resources/static/pages/control/line/js/alone.js
... ... @@ -65,23 +65,21 @@ var _alone = (function(){
65 65 //添加一个班次到表格
66 66 addScheduleToTable: function(schedule){
67 67 var upDown = schedule.xlDir==0?'up':'down';
  68 + var tab = $('#tab_line_' + schedule.xlBm);
68 69 //重新渲染表格
69   - var table = $('#tab_line_' + schedule.xlBm).find('.pb-table[data-type='+upDown+']');
  70 + var table = tab.find('.pb-table[data-type='+upDown+']');
70 71 //获取班次信息
71 72 var schArray = _data.findSchByLine(schedule.xlBm, schedule.xlDir);
72 73 calculateLineNo(
73 74 table.find('tbody').html(template('alone_plan_table_temp', {list: schArray}))[0]
74 75 );
75 76  
76   - var currTr = table.find('tr[data-id='+schedule.id+']');
77   - console.log(currTr);
78   - //重新设置滚动条,
79   - table.find('._body').slimscroll({
80   - height: 'calc(100% - 80px)',
81   - alwaysVisible: true,
82   - start: currTr
83   - });
  77 + //定位到新添加的班次
  78 + var currTr = table.find('tr[data-id='+schedule.id+']')
  79 + ,top = parseInt(currTr.find('td[name=lineNo]').text()) * 37;
84 80  
  81 + currTr.addClass('animated flash');
  82 + currTr.parents('._body').slimScroll({ scrollTo: top + 'px' });
85 83 },
86 84 //重新计算行号
87 85 calculateLineNo: calculateLineNo
... ...
src/main/resources/static/pages/control/line/js/rightMenu.js
... ... @@ -48,7 +48,6 @@ var _menu = (function() {
48 48 type: 1,
49 49 area: ['630px', '545px'],
50 50 maxmin: true,
51   - skin:'layui-layer-molv',
52 51 content: template('outgo_adjust_body_temp', schedul),
53 52 shift: 5,
54 53 title: '待发调整',
... ... @@ -74,7 +73,6 @@ var _menu = (function() {
74 73 type: 1,
75 74 area: ['370px', '645px'],
76 75 maxmin: true,
77   - skin:'layui-layer-molv',
78 76 content: template('plan_destroy_body_temp', data),
79 77 shift: 5,
80 78 title: '计划烂班设置',
... ... @@ -154,7 +152,6 @@ var _menu = (function() {
154 152 type: 1,
155 153 area: ['350px', '455px'],
156 154 maxmin: true,
157   - skin:'layui-layer-molv',
158 155 content: template('real_outgo_adjust_body_temp', {}),
159 156 shift: 5,
160 157 title: '实发调整',
... ... @@ -185,35 +182,22 @@ var _menu = (function() {
185 182 });
186 183 });
187 184 },
188   - //临加班次
189   - temporaryAdd: function(schedul){
190   - $.get('/pages/control/line/child_pages/temporary_add.html', function(content){
191   - layer.open({
192   - type: 1,
193   - area: ['930px', '785px'],
194   - maxmin: true,
195   - skin:'layui-layer-molv',
196   - content: content,
197   - shift: 5,
198   - title: '临加/抽增',
199   - success: function(){
200   - $('#temporaryAddDiv').trigger('init', {data: _data.getLineLpMap(), selected: schedul});
201   - }
202   - });
203   - });
204   - },
205 185 //调整人车
206   - vehicAndPerAdjust: function(){
  186 + vehicAndPerAdjust: function(schedul){
207 187 $.get('/pages/control/line/child_pages/vehicAndper_adjust.html', function(content){
208 188 layer.open({
209 189 type: 1,
210 190 area: ['730px', '655px'],
211 191 maxmin: true,
212   - skin:'layui-layer-molv',
213 192 content: content,
214 193 shift: 5,
215   - title: '调整85路车辆/人员',
  194 + title: '调整车辆/人员',
216 195 success: function(){
  196 + $('#vehicleAndPersionAdjustDiv').trigger('init', {
  197 + selected: schedul,
  198 + _data: _data,
  199 + _alone: _alone
  200 + });
217 201 }
218 202 });
219 203 });
... ...
src/main/resources/static/pages/control/line/temps/child_task_case_tp.html
1 1 <!-- 子任务,临加班次模板文件 -->
  2 +<!-- 主任务表格模板 -->
2 3 <script id="child_task_main_table_temp" type="text/html">
3 4 {{each list as item i}}
4 5 {{if item == null}}
... ... @@ -29,6 +30,42 @@
29 30 {{/each}}
30 31 </script>
31 32  
  33 +<!-- 子任务表格模板 -->
  34 +<script id="child_task_sub_table_temp" type="text/html">
  35 +{{each list as item i}}
  36 +<tr>
  37 + <td width="6%">
  38 + <div class="dropdown">
  39 + <a class="no_and_removeLink" href="javascript:;" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  40 + {{i + 1}}
  41 + </a>
  42 + <ul class="dropdown-menu" aria-labelledby="dLabel">
  43 + <li class="child_task_delete" data-id="{{item.id}}">
  44 + <a href="javascript:;"><i class="fa fa-remove"></i> 删除</a>
  45 + </li>
  46 + </ul>
  47 + </div>
  48 + <span class="child_task_badge {{item.mileageType}}_{{item.destroy?1:0}}"></span>
  49 + </td>
  50 + <td width="11%"><span class="nt-dictionary" data-group="ChildTaskType">{{item.type2}}</span></td>
  51 + <td width="16%">{{item.startStationName}}</td>
  52 + <td width="16%">{{item.endStationName}}</td>
  53 + <td width="10%">{{item.startDate}}</td>
  54 + <td width="10%">{{item.endDate}}</td>
  55 + <td width="7%">{{item.mileage}}</td>
  56 + <td width="11%">
  57 + {{item.remarks}}
  58 + </td>
  59 +</tr>
  60 +{{/each}}
  61 +
  62 +{{if list.length == 0}}
  63 +<tr>
  64 + <td colspan=8 class="empty_text">该班次没有子任务信息...</td>
  65 +</tr>
  66 +{{/if}}
  67 +</script>
  68 +
32 69 <!-- 进场子任务 -->
33 70 <script id="child_task_inpark_process_temp" type="text/html">
34 71 <div class="custom-anim-modal wrap" id="inParkProcess">
... ... @@ -40,6 +77,7 @@
40 77 <form>
41 78 <input type="hidden" value="{{schedul.id}}" name="schedule.id">
42 79 <input type="hidden" value="正常" name="type1">
  80 + <input type="hidden" value="service" name="mileageType">
43 81 <a class="task-item-close"></a>
44 82 <div class="child-task-title">正常营运</div>
45 83 <div class="row">
... ... @@ -81,6 +119,7 @@
81 119 <form>
82 120 <input type="hidden" value="{{schedul.id}}" name="schedule.id">
83 121 <input type="hidden" value="正常" name="type1">
  122 + <input type="hidden" value="empty" name="mileageType">
84 123 <a class="task-item-close"></a>
85 124  
86 125 <div class="child-task-title">空驶进场</div>
... ... @@ -122,6 +161,7 @@
122 161 <input type="hidden" value="{{schedul.id}}" name="schedule.id">
123 162 <input type="hidden" value="正常" name="type1">
124 163 <input type="hidden" value="1" name="destroy">
  164 + <input type="hidden" value="service" name="mileageType">
125 165  
126 166 <a class="task-item-close"></a>
127 167 <div class="child-task-title">烂班公里</div>
... ... @@ -144,7 +184,7 @@
144 184 <div class="row">
145 185 <div class="col-md-4">
146 186 <span class="custom-label">烂班里程:</span>
147   - <input class="form-control" name="mileage" value="" type="number" disabled>
  187 + <input class="form-control" name="mileage" value="" type="number" readonly>
148 188 </div>
149 189 <div class="col-md-4">
150 190 <span class="custom-label">开始时间: </span>
... ... @@ -204,6 +244,7 @@
204 244 <form>
205 245 <input type="hidden" value="{{schedul.id}}" name="schedule.id">
206 246 <input type="hidden" value="正常" name="type1">
  247 + <input type="hidden" value="service" name="mileageType">
207 248  
208 249 <a class="task-item-close"></a>
209 250 <div class="child-task-title">正常营运</div>
... ... @@ -230,11 +271,11 @@
230 271 <div class="row">
231 272 <div class="col-md-4">
232 273 <span class="custom-label">营运里程:</span>
233   - <input class="form-control" name="mileage" value="{{schedul.jhlc}}" disabled>
  274 + <input class="form-control" name="mileage" value="{{schedul.jhlc}}" readonly>
234 275 </div>
235 276 <div class="col-md-4">
236 277 <span class="custom-label">开始时间: </span>
237   - <input class="form-control" value="{{schedul.fcsj}}" name="startDate" type="time" disabled>
  278 + <input class="form-control" value="{{schedul.fcsj}}" name="startDate" type="time" readonly>
238 279 </div>
239 280 <div class="col-md-4">
240 281 <span class="custom-label">结束时间: </span>
... ... @@ -248,6 +289,7 @@
248 289 <form>
249 290 <input type="hidden" value="{{schedul.id}}" name="schedule.id">
250 291 <input type="hidden" value="正常" name="type1">
  292 + <input type="hidden" value="empty" name="mileageType">
251 293  
252 294 <a class="task-item-close"></a>
253 295 <div class="child-task-title">空驶出场</div>
... ... @@ -359,11 +401,7 @@
359 401 <div class="row">
360 402 <div class="col-md-4">
361 403 <span class="custom-label">里程类型:</span>
362   - <select class="form-control" name="mileageType" required=1>
363   - <option value="">请选择...</option>
364   - <option value="营运">营运</option>
365   - <option value="空驶">空驶</option>
366   - </select>
  404 + <select class="form-control nt-dictionary" required=1 name="mileageType" data-group="MileageType" ></select>
367 405 </div>
368 406 <div class="col-md-4">
369 407 <span class="custom-label">里程:</span>
... ...