正在显示
3 个修改的文件
包含
2083 行增加
和
0 行删除
src/views/nav3/Dispatch.vue
0 → 100644
1 | +<template> | ||
2 | + <el-container> | ||
3 | + <el-main> | ||
4 | + <el-card style="background-color: #F5F7FA"> | ||
5 | + <!-- 搜素区域 --> | ||
6 | + <div> | ||
7 | + <el-form :model="queryInfo" :rules="queryFormRules" ref="queryFormRef" status-icon> | ||
8 | + <el-form-item> | ||
9 | + <el-col :span="4"> | ||
10 | + <el-form-item prop="gmtCreate"> | ||
11 | + <el-date-picker v-model="queryInfo.gmtCreate" type="date" value-format="yyyy-MM-dd" | ||
12 | + placeholder="选择创建调度时间" | ||
13 | + style="width: 200px"></el-date-picker> | ||
14 | + </el-form-item> | ||
15 | + </el-col> | ||
16 | + <el-col :span="4" style="margin-left: 50px"> | ||
17 | + <el-form-item prop="dispatchType"> | ||
18 | + <el-select v-model="queryInfo.dispatchType" placeholder="请选择业务类型" | ||
19 | + style="width: 200px" | ||
20 | + clearable> | ||
21 | + <el-option | ||
22 | + v-for="item in dispatchTypeList" | ||
23 | + :key="item.value" | ||
24 | + :label="item.label" | ||
25 | + :value="item.value"> | ||
26 | + </el-option> | ||
27 | + </el-select> | ||
28 | + </el-form-item> | ||
29 | + </el-col> | ||
30 | + <el-col :span="4" style="margin-left: 50px"> | ||
31 | + <el-form-item prop="status"> | ||
32 | + <el-select v-model="queryInfo.status" placeholder="记录状态" clearable | ||
33 | + style="width:200px;margin-left: 6px"> | ||
34 | + <el-option | ||
35 | + v-for="item in statusList" | ||
36 | + :key="item.value" | ||
37 | + :label="item.label" | ||
38 | + :value="item.value"> | ||
39 | + </el-option> | ||
40 | + </el-select> | ||
41 | + </el-form-item> | ||
42 | + </el-col> | ||
43 | + <el-button type="primary" style="margin-left: 60px" | ||
44 | + @click="getDispatchNodeList">查询调度记录 | ||
45 | + </el-button> | ||
46 | + <el-button type="success" style="margin-left: 15px" @click="dispatchFormVisible = true"> | ||
47 | + 我要调度车辆 | ||
48 | + </el-button> | ||
49 | + </el-form-item> | ||
50 | + </el-form> | ||
51 | + <el-row style="margin-top: 20px;"> | ||
52 | + </el-row> | ||
53 | + </div> | ||
54 | + <!--调度记录列表区域--> | ||
55 | + <div style="margin-top: 20px;"> | ||
56 | + <el-table :data="DispatchNoteList" border highlight-current-row v-loading="listLoading" | ||
57 | + :row-class-name="rowStatus" | ||
58 | + element-loading-text="拼命加载中"> | ||
59 | + <el-table-column type="index" align="center"></el-table-column> | ||
60 | + <el-table-column label="用户名称" prop="userName" align="center" width="100"></el-table-column> | ||
61 | + <el-table-column label="联系方式" prop="userMobile" align="center" width="120"></el-table-column> | ||
62 | + <el-table-column label="状态" prop="status" align="center" width="120"> | ||
63 | + <template slot-scope="scope"> | ||
64 | + <span v-if="scope.row.status ==='1'">完成状态</span> | ||
65 | + <span v-if="scope.row.status ==='2'">执行状态</span> | ||
66 | + <span v-if="scope.row.status ==='3'">取消状态</span> | ||
67 | + <span v-if="scope.row.status ==='4'">待执行状态</span> | ||
68 | + </template> | ||
69 | + </el-table-column> | ||
70 | + <el-table-column label="业务类型" prop="dispatchType" align="center" width="120"> | ||
71 | + <template slot-scope="scope"> | ||
72 | + <span v-if="scope.row.dispatchType ==='1'">进站送货</span> | ||
73 | + <span v-if="scope.row.dispatchType ==='2'">出站提货</span> | ||
74 | + <span v-if="scope.row.dispatchType ==='3'">货物调拨</span> | ||
75 | + <span v-if="scope.row.dispatchType ==='4'">货物流转</span> | ||
76 | + </template> | ||
77 | + </el-table-column> | ||
78 | + <el-table-column label="车牌号码" prop="licensePlateNumber" align="center" | ||
79 | + width="120"></el-table-column> | ||
80 | + <el-table-column label="车辆类型" prop="vehicleType" align="center" width="120"> | ||
81 | + <template slot-scope="scope"> | ||
82 | + <span v-if="scope.row.vehicleType ==='1'">重型货车</span> | ||
83 | + <span v-if="scope.row.vehicleType ==='2'">中型货车</span> | ||
84 | + <span v-if="scope.row.vehicleType ==='3'">轻型货车</span> | ||
85 | + <span v-if="scope.row.vehicleType ==='4'">微型货车</span> | ||
86 | + <span v-if="scope.row.vehicleType ==='5'">拖车</span> | ||
87 | + <span v-if="scope.row.vehicleType ==='6'">叉车</span> | ||
88 | + </template> | ||
89 | + </el-table-column> | ||
90 | + <el-table-column label="场站位置" prop="station" align="center" width="120"> | ||
91 | + <template slot-scope="scope"> | ||
92 | + <span v-if="scope.row.station ==='1'">西货站</span> | ||
93 | + <span v-if="scope.row.station ==='2'">综保区</span> | ||
94 | + <span v-if="scope.row.station ==='3'">军投</span> | ||
95 | + <span v-if="scope.row.station ==='4'">快邮</span> | ||
96 | + </template> | ||
97 | + </el-table-column> | ||
98 | + <el-table-column label="创建时间" prop="gmtCreate" align="center" width="160"></el-table-column> | ||
99 | + <el-table-column label="开始时间" prop="beginTime" align="center" width="160"></el-table-column> | ||
100 | + <el-table-column label="完成时间" prop="endTime" align="center" width="160"></el-table-column> | ||
101 | + <el-table-column label="操作" width="220px" fixed="right" align="center"> | ||
102 | + <template slot-scope="scope"> | ||
103 | + <!--查看按钮--> | ||
104 | + <el-tooltip effect="dark" content="查看" placement="top-start" :enterable="false"> | ||
105 | + <el-button type="primary" icon="el-icon-edit" size="mini" | ||
106 | + @click="showDialogVisible(scope.row)">查看 | ||
107 | + </el-button> | ||
108 | + </el-tooltip> | ||
109 | + <!--取消调度按钮--> | ||
110 | + <el-tooltip effect="dark" content="取消调度" placement="top-start" :enterable="false"> | ||
111 | + <el-button type="danger" icon="el-icon-delete" size="mini" | ||
112 | + :disabled="scope.row.endTime!==null && scope.row.endTime!==''" | ||
113 | + @click="cancelDispatch(scope.row)" :loading="cancelLoading">取消调度 | ||
114 | + </el-button> | ||
115 | + </el-tooltip> | ||
116 | + </template> | ||
117 | + </el-table-column> | ||
118 | + </el-table> | ||
119 | + <!--分页区域--> | ||
120 | + <div style="margin-top: 10px"> | ||
121 | + <el-pagination | ||
122 | + @size-change="handleSizeChange" | ||
123 | + @current-change="handleCurrentChange" | ||
124 | + :current-page="this.queryInfo.pageNum" | ||
125 | + :page-sizes="[10,20,30,50]" | ||
126 | + :page-size="this.queryInfo.pageSize" | ||
127 | + layout="total, sizes, prev, pager, next, jumper" | ||
128 | + :total="total"> | ||
129 | + </el-pagination> | ||
130 | + </div> | ||
131 | + </div> | ||
132 | + </el-card> | ||
133 | + <!-- 我要调度车辆,对话框 --> | ||
134 | + <div> | ||
135 | + <el-dialog | ||
136 | + title="我要调度车辆" | ||
137 | + :visible.sync="dispatchFormVisible" | ||
138 | + width="50%" @close="dispatchDialogClosed"> | ||
139 | + <!-- :rules="dispatchFormRules" ref="dispatchFormRef"--> | ||
140 | + <el-form :model="dispatchForm" label-width="100px" status-icon | ||
141 | + :rules="dispatchFormRules" ref="dispatchFormRef" | ||
142 | + style="margin-left:10%;margin-right:10%;background-color: #F5F7FA"> | ||
143 | + <br> | ||
144 | + <el-form-item label="车辆类型:" prop="vehicleType"> | ||
145 | + <el-select v-model="dispatchForm.vehicleType" style="width: 300px" clearable | ||
146 | + placeholder="请选择车辆类型"> | ||
147 | + <el-option | ||
148 | + v-for="item in vehicleTypeList" | ||
149 | + :key="item.value" | ||
150 | + :label="item.label" | ||
151 | + :value="item.value"> | ||
152 | + </el-option> | ||
153 | + </el-select> | ||
154 | + </el-form-item> | ||
155 | + <el-form-item label="车辆数量:" prop="vehicleNumber"> | ||
156 | + <el-input-number style="width: 200px" v-model="dispatchForm.vehicleNumber" | ||
157 | + :min="1" :max="100" controls-position="right"> | ||
158 | + </el-input-number> | ||
159 | + <span style="margin-left:5px;font-size: 18px">辆</span> | ||
160 | + </el-form-item> | ||
161 | + <el-form-item label="场站位置:" prop="station"> | ||
162 | + <el-select v-model="dispatchForm.station" style="width: 300px" clearable | ||
163 | + placeholder="请选择场站位置"> | ||
164 | + <el-option | ||
165 | + v-for="item in stationList" | ||
166 | + :key="item.value" | ||
167 | + :label="item.label" | ||
168 | + :value="item.value"> | ||
169 | + </el-option> | ||
170 | + </el-select> | ||
171 | + </el-form-item> | ||
172 | + <el-form-item label="业务类型:" prop="dispatchType"> | ||
173 | + <el-select v-model="dispatchForm.dispatchType" style="width: 300px;" clearable | ||
174 | + placeholder="请选择业务类型"> | ||
175 | + <el-option | ||
176 | + v-for="item in dispatchTypeList" | ||
177 | + :key="item.value" | ||
178 | + :label="item.label" | ||
179 | + :value="item.value"> | ||
180 | + </el-option> | ||
181 | + </el-select> | ||
182 | + </el-form-item> | ||
183 | + <br> | ||
184 | + </el-form> | ||
185 | + <!--底部按钮区域--> | ||
186 | + <span slot="footer" class="dialog-footer"> | ||
187 | + <el-button @click="dispatchFormVisible = false">取 消</el-button> | ||
188 | + <el-button type="primary" @click="dispatchVehicle" :loading="dispatchLoading">确定调度车辆</el-button> | ||
189 | + </span> | ||
190 | + </el-dialog> | ||
191 | + </div> | ||
192 | + <!-- 查看调度记录,对话框 --> | ||
193 | + <div> | ||
194 | + <el-dialog | ||
195 | + style="margin-top: -50px" | ||
196 | + title="查看调度记录明细" | ||
197 | + :visible.sync="viewDialogVisible" | ||
198 | + text-align="center" | ||
199 | + width="60%" @close="showDialogClosed"> | ||
200 | + <!-- 表单显示区域 :rules="dispatchFormRules" --> | ||
201 | + <el-form :model="showForm" ref="showFormRef" | ||
202 | + :inline="true" align="center" | ||
203 | + style="background-color: #F5F7FA;margin-left: 5%;margin-right: 5%"> | ||
204 | + <div style="margin-top: -15px"> | ||
205 | + <br> | ||
206 | + <el-form-item label="用户名称:" prop="userName"> | ||
207 | + <el-input v-model="showForm.userName" style="width: 200px;" size="small" | ||
208 | + readonly></el-input> | ||
209 | + </el-form-item> | ||
210 | + <el-form-item label="联系方式:" prop="userMobile"> | ||
211 | + <el-input v-model="showForm.userMobile" style="width: 200px;" size="small" | ||
212 | + readonly></el-input> | ||
213 | + </el-form-item> | ||
214 | + <el-form-item label="车辆类型:" prop="vehicleType"> | ||
215 | + <el-select v-model="showForm.vehicleType" style="width:200px" size="small" readonly | ||
216 | + placeholder="请选择车辆类型"> | ||
217 | + <el-option | ||
218 | + v-for="item in vehicleTypeList" | ||
219 | + :key="item.value" | ||
220 | + :label="item.label" | ||
221 | + :value="item.value"> | ||
222 | + </el-option> | ||
223 | + </el-select> | ||
224 | + </el-form-item> | ||
225 | + <el-form-item label="车牌号码:" prop="licensePlateNumber"> | ||
226 | + <el-input v-model="showForm.licensePlateNumber" style="width: 200px;" size="small" | ||
227 | + readonly></el-input> | ||
228 | + </el-form-item> | ||
229 | + <el-form-item label="场站位置:" prop="station"> | ||
230 | + <el-select v-model="showForm.station" style="width:200px" readonly size="small" | ||
231 | + placeholder="请选择场站位置"> | ||
232 | + <el-option | ||
233 | + v-for="item in stationList" | ||
234 | + :key="item.value" | ||
235 | + :label="item.label" | ||
236 | + :value="item.value"> | ||
237 | + </el-option> | ||
238 | + </el-select> | ||
239 | + </el-form-item> | ||
240 | + <el-form-item label="业务类型:" prop="dispatchType"> | ||
241 | + <el-select v-model="showForm.dispatchType" style="width:200px" readonly size="small" | ||
242 | + placeholder="请选择业务类型"> | ||
243 | + <el-option | ||
244 | + v-for="item in dispatchTypeList" | ||
245 | + :key="item.value" | ||
246 | + :label="item.label" | ||
247 | + :value="item.value"> | ||
248 | + </el-option> | ||
249 | + </el-select> | ||
250 | + </el-form-item> | ||
251 | + <el-form-item label="创建时间:" prop="gmtCreate"> | ||
252 | + <el-input v-model="showForm.gmtCreate" style="width: 200px;" size="small" | ||
253 | + readonly></el-input> | ||
254 | + </el-form-item> | ||
255 | + <el-form-item label="开始时间:" prop="beginTime"> | ||
256 | + <el-input v-model="showForm.beginTime" style="width: 200px;" size="small" | ||
257 | + readonly></el-input> | ||
258 | + </el-form-item> | ||
259 | + <el-form-item label="结束时间:" prop="endTime"> | ||
260 | + <el-input v-model="showForm.endTime" style="width: 200px;" size="small" | ||
261 | + readonly></el-input> | ||
262 | + </el-form-item> | ||
263 | + <el-form-item label="记录状态:" prop="status"> | ||
264 | + <el-select v-model="showForm.status" placeholder="记录状态" style="width:200px" size="small" | ||
265 | + readonly> | ||
266 | + <el-option | ||
267 | + v-for="item in statusList" | ||
268 | + :key="item.value" | ||
269 | + :label="item.label" | ||
270 | + :value="item.value"> | ||
271 | + </el-option> | ||
272 | + </el-select> | ||
273 | + </el-form-item> | ||
274 | + <br> | ||
275 | + </div> | ||
276 | + </el-form> | ||
277 | + <!--底部按钮区域--> | ||
278 | + <span slot="footer" class="dialog-footer"> | ||
279 | + <el-button type="primary" @click="viewDialogVisible = false">结束查看</el-button> | ||
280 | + </span> | ||
281 | + </el-dialog> | ||
282 | + </div> | ||
283 | + </el-main> | ||
284 | + </el-container> | ||
285 | +</template> | ||
286 | + | ||
287 | +<script> | ||
288 | + // import {selectDispatchNoteList, dispatch, cancel, getUser} from '../../api/dispatch_api' | ||
289 | + | ||
290 | + export default { | ||
291 | + name: 'dispatch_api', | ||
292 | + created() { | ||
293 | + | ||
294 | + }, | ||
295 | + data() { | ||
296 | + /** | ||
297 | + * 验证手机号的自定义规则 | ||
298 | + */ | ||
299 | + var userMobileValid = (rule, value, callback) => { | ||
300 | + //验证手机号的正则表达式 | ||
301 | + const regMobile = /^(0|86|17951)?(13[0-9]|15[0123456789]|17[678]|18[0-9]|14[57])[0-9]{8}$/; | ||
302 | + if (regMobile.test(value)) { | ||
303 | + //合法的手机号 | ||
304 | + return callback(); | ||
305 | + } | ||
306 | + callback(new Error('请输入合法的手机号')); | ||
307 | + }; | ||
308 | + return { | ||
309 | + /** | ||
310 | + * 查询列表 | ||
311 | + */ | ||
312 | + queryInfo: { | ||
313 | + //用户姓名 | ||
314 | + userName: '', | ||
315 | + //用户联系方式 | ||
316 | + userMobile: '', | ||
317 | + //记录状态 | ||
318 | + status: '', | ||
319 | + //调度时间 | ||
320 | + gmtCreate: new Date(), | ||
321 | + //业务类型 | ||
322 | + dispatchType: '', | ||
323 | + //当前的页数 | ||
324 | + pageNum: 1, | ||
325 | + //当前每页显示多少条数据 | ||
326 | + pageSize: 10 | ||
327 | + }, | ||
328 | + /** | ||
329 | + * 记录列表,总条数 | ||
330 | + */ | ||
331 | + total: 0, | ||
332 | + /** | ||
333 | + * 所有,调度记录列表 | ||
334 | + */ | ||
335 | + DispatchNoteList: [], | ||
336 | + /** | ||
337 | + * 我要调度车辆,表单 | ||
338 | + */ | ||
339 | + dispatchForm: { | ||
340 | + userName: '', | ||
341 | + userMobile: '', | ||
342 | + //车辆数量 | ||
343 | + vehicleNumber: 1, | ||
344 | + //车辆类型 | ||
345 | + vehicleType: '2', | ||
346 | + //场站位置 | ||
347 | + station: '1', | ||
348 | + //调度业务类型 | ||
349 | + dispatchType: '1' | ||
350 | + }, | ||
351 | + | ||
352 | + /** | ||
353 | + * 查看记录明细,表单 | ||
354 | + */ | ||
355 | + showForm: {}, | ||
356 | + /** | ||
357 | + * 控制添加用户对话框的显示与隐藏 | ||
358 | + */ | ||
359 | + dispatchFormVisible: false, | ||
360 | + /** | ||
361 | + * 控制查看调度记录明细,对话框的显示与隐藏 | ||
362 | + */ | ||
363 | + viewDialogVisible: false, | ||
364 | + /** | ||
365 | + * loading加载 | ||
366 | + */ | ||
367 | + /* 获取列表时的加载 */ | ||
368 | + listLoading: false, | ||
369 | + /* 调度车辆时的加载 */ | ||
370 | + dispatchLoading: false, | ||
371 | + /* 取消调度时的加载 */ | ||
372 | + cancelLoading: false, | ||
373 | + /** | ||
374 | + * 业务类型,选项列表 | ||
375 | + */ | ||
376 | + dispatchTypeList: [ | ||
377 | + { | ||
378 | + value: '1', | ||
379 | + label: '进站送货' | ||
380 | + }, | ||
381 | + { | ||
382 | + value: '2', | ||
383 | + label: '出站提货' | ||
384 | + }, | ||
385 | + { | ||
386 | + value: '3', | ||
387 | + label: '货物流转' | ||
388 | + }, | ||
389 | + { | ||
390 | + value: '4', | ||
391 | + label: '货物调拨' | ||
392 | + } | ||
393 | + ], | ||
394 | + /** | ||
395 | + * 车辆类型,选项列表 | ||
396 | + */ | ||
397 | + vehicleTypeList: [ | ||
398 | + { | ||
399 | + value: '1', | ||
400 | + label: '重型货车' | ||
401 | + }, | ||
402 | + { | ||
403 | + value: '2', | ||
404 | + label: '中型货车' | ||
405 | + }, | ||
406 | + { | ||
407 | + value: '3', | ||
408 | + label: '经济货车' | ||
409 | + }, | ||
410 | + { | ||
411 | + value: '4', | ||
412 | + label: '微型货车' | ||
413 | + }, | ||
414 | + { | ||
415 | + value: '5', | ||
416 | + label: '拖车' | ||
417 | + }, | ||
418 | + { | ||
419 | + value: '6', | ||
420 | + label: '叉车' | ||
421 | + } | ||
422 | + ], | ||
423 | + /** | ||
424 | + * 记录状态,列表 | ||
425 | + */ | ||
426 | + statusList: [ | ||
427 | + { | ||
428 | + value: '1', | ||
429 | + label: '完成状态' | ||
430 | + }, | ||
431 | + { | ||
432 | + value: '2', | ||
433 | + label: '执行状态' | ||
434 | + }, | ||
435 | + { | ||
436 | + value: '3', | ||
437 | + label: '取消状态' | ||
438 | + }, | ||
439 | + { | ||
440 | + value: '4', | ||
441 | + label: '待执行状态' | ||
442 | + } | ||
443 | + ], | ||
444 | + | ||
445 | + /** | ||
446 | + * 场站位置,选项列表 | ||
447 | + */ | ||
448 | + stationList: [ | ||
449 | + { | ||
450 | + value: '1', | ||
451 | + label: '西货站' | ||
452 | + }, | ||
453 | + { | ||
454 | + value: '2', | ||
455 | + label: '综保区' | ||
456 | + }, | ||
457 | + { | ||
458 | + value: '3', | ||
459 | + label: '军投' | ||
460 | + }, | ||
461 | + { | ||
462 | + value: '4', | ||
463 | + label: '快邮' | ||
464 | + } | ||
465 | + ], | ||
466 | + | ||
467 | + queryFormRules: { | ||
468 | + userName: [ | ||
469 | + {required: true, message: '请输入姓名', trigger: ['blur', 'change']}, | ||
470 | + ], | ||
471 | + userMobile: [ | ||
472 | + {required: true, message: '请输入联系方式', trigger: ['blur', 'change']}, | ||
473 | + {validator: userMobileValid, trigger: 'blur'} | ||
474 | + ], | ||
475 | + }, | ||
476 | + /** | ||
477 | + * 调度车辆表单的验证规则对象 | ||
478 | + */ | ||
479 | + dispatchFormRules: { | ||
480 | + status: [ | ||
481 | + {required: true, message: '请选择记录状态', trigger: ['blur', 'change']}, | ||
482 | + ], | ||
483 | + gmtCreate: [ | ||
484 | + {required: true, message: '请选择创建时间', trigger: ['blur', 'change']}, | ||
485 | + ], | ||
486 | + endTime: [ | ||
487 | + {required: true, message: '请选择结束时间', trigger: ['blur', 'change']}, | ||
488 | + ], | ||
489 | + licensePlateNumber: [ | ||
490 | + {required: true, message: '请输入车牌号', trigger: ['blur', 'change']}, | ||
491 | + ], | ||
492 | + userName: [ | ||
493 | + {required: true, message: '请输入姓名', trigger: ['blur', 'change']}, | ||
494 | + ], | ||
495 | + userMobile: [ | ||
496 | + {required: true, message: '请输入联系方式', trigger: ['blur', 'change']}, | ||
497 | + {validator: userMobileValid, trigger: 'blur'} | ||
498 | + ], | ||
499 | + vehicleType: [ | ||
500 | + {required: true, message: '请选择车辆类型', trigger: ['blur', 'change']}, | ||
501 | + | ||
502 | + ], | ||
503 | + vehicleNumber: [ | ||
504 | + {required: true, message: '请选择车辆数量', trigger: ['blur', 'change']}, | ||
505 | + ], | ||
506 | + station: [ | ||
507 | + {required: true, message: '请选择场站位置', trigger: ['blur', 'change']}, | ||
508 | + ], | ||
509 | + dispatchType: [ | ||
510 | + {required: true, message: '请选择调度业务类型', trigger: ['blur', 'change']}, | ||
511 | + ], | ||
512 | + }, | ||
513 | + } | ||
514 | + }, | ||
515 | + methods: { | ||
516 | + /** | ||
517 | + * 监听,调度车辆对话框的关闭事件 | ||
518 | + */ | ||
519 | + dispatchDialogClosed() { | ||
520 | + //重置对话框 | ||
521 | + this.$refs.dispatchFormRef.resetFields(); | ||
522 | + }, | ||
523 | + | ||
524 | + /** | ||
525 | + * 监听,查看调度记录对话框的关闭事件 | ||
526 | + */ | ||
527 | + showDialogClosed() { | ||
528 | + //重置对话框 | ||
529 | + this.$refs.showFormRef.resetFields(); | ||
530 | + }, | ||
531 | + | ||
532 | + /** | ||
533 | + * 监听pageSize改变的事件 | ||
534 | + */ | ||
535 | + handleSizeChange(newSize) { | ||
536 | + this.queryInfo.pageSize = newSize; | ||
537 | + //刷新调度记录列表 | ||
538 | + this.getDispatchNodeList(); | ||
539 | + }, | ||
540 | + /** | ||
541 | + * 监听当前页码值改变的事件 | ||
542 | + */ | ||
543 | + handleCurrentChange(newPage) { | ||
544 | + this.queryInfo.pageNum = newPage; | ||
545 | + //刷新调度记录列表 | ||
546 | + this.getDispatchNodeList(); | ||
547 | + }, | ||
548 | + /** | ||
549 | + * 打开,查看调度记录明细,对话框 | ||
550 | + * @param row | ||
551 | + */ | ||
552 | + showDialogVisible(row) { | ||
553 | + this.showForm = row; | ||
554 | + this.viewDialogVisible = true; | ||
555 | + }, | ||
556 | + /** | ||
557 | + * 用户端,获取车辆调度记录 | ||
558 | + */ | ||
559 | + getDispatchNodeList() { | ||
560 | + this.listLoading = true; | ||
561 | + selectDispatchNoteList(this.queryInfo).then((response) => { | ||
562 | + let res = response.data; | ||
563 | + if (res.code !== '200') { | ||
564 | + this.listLoading = false; | ||
565 | + return this.$message.error('获取车辆调度列表失败'); | ||
566 | + } | ||
567 | + // 获取车辆调度列表数据 | ||
568 | + this.DispatchNoteList = res.data.list; | ||
569 | + // 获取列表的总记录数 | ||
570 | + this.total = res.data.total; | ||
571 | + this.listLoading = false; | ||
572 | + this.$message.success('获取车辆调度列表,成功!'); | ||
573 | + }).catch(error => { | ||
574 | + this.listLoading = false; | ||
575 | + this.$message.error(error.toString()); | ||
576 | + }); | ||
577 | + }, | ||
578 | + /** | ||
579 | + * 用户端,我要调度车辆,方法 | ||
580 | + */ | ||
581 | + dispatchVehicle() { | ||
582 | + this.dispatchLoading = true; | ||
583 | + dispatch(this.dispatchForm).then((response) => { | ||
584 | + let res = response.data; | ||
585 | + if (res.code !== '200') { | ||
586 | + this.dispatchLoading = false; | ||
587 | + return this.$message.error('车辆繁忙,请稍后重试'); | ||
588 | + } | ||
589 | + //关闭加载 | ||
590 | + this.dispatchLoading = false; | ||
591 | + this.$message.success('调度车辆成功!'); | ||
592 | + //调度成功,隐藏对话框 | ||
593 | + this.dispatchFormVisible = false; | ||
594 | + /* 将调度车辆信息=>查询列表 */ | ||
595 | + // 用户名称 | ||
596 | + this.queryInfo.userName = this.dispatchForm.userName; | ||
597 | + // 联系方式 | ||
598 | + this.queryInfo.userMobile = this.dispatchForm.userMobile; | ||
599 | + // 调度业务类型 | ||
600 | + this.queryInfo.dispatchType = this.dispatchForm.dispatchType; | ||
601 | + // 创建时间为当前时间(需留意) | ||
602 | + this.queryInfo.gmtCreate = new Date(); | ||
603 | + //刷新车辆调度列表 | ||
604 | + this.getDispatchNodeList(); | ||
605 | + }).catch(error => { | ||
606 | + this.dispatchLoading = false; | ||
607 | + this.$message.error(error.toString()); | ||
608 | + }); | ||
609 | + }, | ||
610 | + /** | ||
611 | + * 用户端,取消调度车辆,方法 | ||
612 | + */ | ||
613 | + cancelDispatch(row) { | ||
614 | + //弹框询问是否取消车辆调度 | ||
615 | + this.$confirm('此操作将取消该车辆的调度, 是否继续?', '警告', { | ||
616 | + confirmButtonText: '确定取消调度', | ||
617 | + cancelButtonText: '取消', | ||
618 | + type: 'warning' | ||
619 | + } | ||
620 | + ).then(() => { | ||
621 | + //开启加载 | ||
622 | + this.cancelLoading = true; | ||
623 | + cancel(row).then((response) => { | ||
624 | + let res = response.data; | ||
625 | + if (res.code !== '200') { | ||
626 | + this.cancelLoading = false; | ||
627 | + return this.$message.error('取消车辆调度,失败!请人工介入'); | ||
628 | + } | ||
629 | + //关闭加载 | ||
630 | + this.cancelLoading = false; | ||
631 | + this.$message.success('取消调度车辆,成功!'); | ||
632 | + //刷新车辆调度列表 | ||
633 | + this.getDispatchNodeList(); | ||
634 | + }).catch(error => { | ||
635 | + //关闭加载 | ||
636 | + this.cancelLoading = false; | ||
637 | + this.$message.error(error.toString()); | ||
638 | + }); | ||
639 | + }).catch(() => { | ||
640 | + }); | ||
641 | + }, | ||
642 | + /** | ||
643 | + * 获取用户信息 | ||
644 | + */ | ||
645 | + getUserInfo(param) { | ||
646 | + getUser(param).then((response) => { | ||
647 | + let res = response.data; | ||
648 | + if (res.code !== '200') { | ||
649 | + return this.$message.error('网络异常,请刷新界面!'); | ||
650 | + } | ||
651 | + if (res.data.list.length === 0) { | ||
652 | + return this.$message.error('网络异常,请刷新界面!'); | ||
653 | + } | ||
654 | + if (res.data.list[0].mobilephone === null || res.data.list[0].mobilephone === '') { | ||
655 | + return this.$message.error('请填写您的手机号码'); | ||
656 | + } | ||
657 | + this.queryInfo.userMobile = res.data.list[0].mobilephone; | ||
658 | + this.dispatchForm.userMobile = res.data.list[0].mobilephone; | ||
659 | + this.$message.success('欢迎使用,车辆调度系统!'); | ||
660 | + }).catch((error) => { | ||
661 | + this.$message.error(error.toString()); | ||
662 | + }); | ||
663 | + }, | ||
664 | + /** | ||
665 | + * 根据状态的不同区分颜色 | ||
666 | + * | ||
667 | + * @param row | ||
668 | + * @param rowIndex | ||
669 | + */ | ||
670 | + rowStatus({row, rowIndex}) { | ||
671 | + if (row.status === '1') { | ||
672 | + return 'success-row'; | ||
673 | + } | ||
674 | + if (row.status === '2') { | ||
675 | + return 'run-row'; | ||
676 | + } | ||
677 | + if (row.status === '3') { | ||
678 | + return 'cancel-row'; | ||
679 | + } | ||
680 | + if (row.status === '4') { | ||
681 | + return 'await-row'; | ||
682 | + } | ||
683 | + } | ||
684 | + }, | ||
685 | + mounted() { | ||
686 | + var user = sessionStorage.getItem('user'); | ||
687 | + if (user) { | ||
688 | + user = JSON.parse(user); | ||
689 | + console.log(user); | ||
690 | + this.queryInfo.userName = user.username; | ||
691 | + this.dispatchForm.userName = user.username; | ||
692 | + let param = { | ||
693 | + userName: this.queryInfo.userName | ||
694 | + }; | ||
695 | + this.getUserInfo(param); | ||
696 | + } | ||
697 | + /** | ||
698 | + * 渲染完成之后,在获取调度记录列表 | ||
699 | + */ | ||
700 | + // this.getDispatchNodeList(); | ||
701 | + } | ||
702 | + } | ||
703 | +</script> | ||
704 | + | ||
705 | +<style> | ||
706 | + /* 完成状态 */ | ||
707 | + .el-table .success-row { | ||
708 | + background: rgba(64, 158, 255, 0.2); | ||
709 | + } | ||
710 | + | ||
711 | + /* 执行状态 */ | ||
712 | + .el-table .run-row { | ||
713 | + background: rgba(103, 194, 58, 0.2); | ||
714 | + } | ||
715 | + | ||
716 | + /* 取消状态 */ | ||
717 | + .el-table .cancel-row { | ||
718 | + background: rgba(144, 147, 153, 0.2); | ||
719 | + } | ||
720 | + | ||
721 | + /* 待执行状态 */ | ||
722 | + .el-table .await-row { | ||
723 | + background: rgba(230, 162, 60, 0.2); | ||
724 | + } | ||
725 | +</style> |
src/views/nav3/DriverInfo.vue
0 → 100644
1 | +<template> | ||
2 | + <el-container> | ||
3 | + <el-main> | ||
4 | + <!--面包屑导航区域--> | ||
5 | + <!-- <div>--> | ||
6 | + <!-- <el-breadcrumb separator-class="el-icon-arrow-right">--> | ||
7 | + <!-- <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>--> | ||
8 | + <!-- <el-breadcrumb-item>车辆调度</el-breadcrumb-item>--> | ||
9 | + <!-- <el-breadcrumb-item>驾驶员信息</el-breadcrumb-item>--> | ||
10 | + <!-- </el-breadcrumb>--> | ||
11 | + <!-- </div>--> | ||
12 | + <el-card style="background-color: #F5F7FA"> | ||
13 | + <!--搜索区域--> | ||
14 | + <div> | ||
15 | + <el-row :gutter="24"> | ||
16 | + <el-col :span="5"> | ||
17 | + <el-input v-model="queryInfo.driverName" prefix-icon="el-icon-search" clearable | ||
18 | + placeholder="请输入驾驶员姓名"></el-input> | ||
19 | + </el-col> | ||
20 | + <el-col :span="5"> | ||
21 | + <el-input v-model="queryInfo.driverMobile" prefix-icon="el-icon-search" clearable | ||
22 | + placeholder="请输入联系方式"></el-input> | ||
23 | + </el-col> | ||
24 | + <el-col :span="5"> | ||
25 | + <el-input v-model="queryInfo.driverCompany" prefix-icon="el-icon-search" clearable | ||
26 | + placeholder="请输入公司名称"></el-input> | ||
27 | + </el-col> | ||
28 | + <el-col :span="5"> | ||
29 | + <el-select v-model="queryInfo.driverStatus" clearable placeholder="请选择驾驶员状态"> | ||
30 | + <el-option | ||
31 | + v-for="item in driverStatusList" | ||
32 | + :key="item.value" | ||
33 | + :label="item.label" | ||
34 | + :value="item.value"> | ||
35 | + </el-option> | ||
36 | + </el-select> | ||
37 | + </el-col> | ||
38 | + </el-row> | ||
39 | + <el-row style="margin-top: 20px;"> | ||
40 | + <el-button type="primary" @click="getDriverInfoList">查询驾驶员信息</el-button> | ||
41 | + <el-button type="success" @click="addDriverInfoFormVisible = true">增加驾驶员信息</el-button> | ||
42 | + </el-row> | ||
43 | + </div> | ||
44 | + <!--驾驶员信息列表区域--> | ||
45 | + <div style="margin-top: 20px;"> | ||
46 | + <el-table :data="driverInfoList" border stripe highlight-current-row v-loading="listLoading" | ||
47 | + @selection-change="selsChange" | ||
48 | + element-loading-text="拼命加载中"> | ||
49 | + <el-table-column type="selection" width="55" :selectable="isSelectable" align="center"></el-table-column> | ||
50 | + <el-table-column type="index" align="center"></el-table-column> | ||
51 | + <el-table-column label="姓名" prop="driverName" align="center" width="100"></el-table-column> | ||
52 | + <el-table-column label="联系方式" prop="driverMobile" align="center" width="130"></el-table-column> | ||
53 | + <el-table-column label="职位" prop="driverPosition" align="center" width="100"> | ||
54 | + <template slot-scope="scope"> | ||
55 | + <span v-if="scope.row.driverPosition ==='1'">队长</span> | ||
56 | + <span v-if="scope.row.driverPosition ==='2'">班长</span> | ||
57 | + <span v-if="scope.row.driverPosition ==='3'">副班长</span> | ||
58 | + <span v-if="scope.row.driverPosition ==='4'">员工</span> | ||
59 | + </template> | ||
60 | + </el-table-column> | ||
61 | + <el-table-column label="状态" prop="driverStatus" align="center" width="120"> | ||
62 | + <template slot-scope="scope"> | ||
63 | + <span v-if="scope.row.driverStatus ==='1'">空闲状态</span> | ||
64 | + <span v-if="scope.row.driverStatus ==='2'">执行状态</span> | ||
65 | + <span v-if="scope.row.driverStatus ==='3'">轮休状态</span> | ||
66 | + <span v-if="scope.row.driverStatus ==='4'">请假状态</span> | ||
67 | + </template> | ||
68 | + </el-table-column> | ||
69 | + <el-table-column label="驾驶证" prop="driverLicenseNumber" align="center" | ||
70 | + width="200"></el-table-column> | ||
71 | + <el-table-column label="工号" prop="jobNumber" align="center" width="150"></el-table-column> | ||
72 | + <el-table-column label="公司" prop="driverCompany" align="center" width="160"></el-table-column> | ||
73 | + <el-table-column label="操作" width="220px" align="center" fixed="right"> | ||
74 | + <template slot-scope="scope"> | ||
75 | + <!--查看按钮--> | ||
76 | + <el-tooltip effect="dark" content="编辑" placement="top-start" :enterable="false"> | ||
77 | + <el-button type="primary" icon="el-icon-edit" size="mini" | ||
78 | + @click="showEditDialogVisible(scope.$index,scope.row)">编辑 | ||
79 | + </el-button> | ||
80 | + </el-tooltip> | ||
81 | + <!--取消调度按钮--> | ||
82 | + <el-tooltip effect="dark" content="删除" placement="top-start" :enterable="false"> | ||
83 | + <el-button type="danger" icon="el-icon-delete" size="mini" | ||
84 | + :loading="delLoading" | ||
85 | + :disabled="scope.row.driverStatus==='2'" | ||
86 | + @click="removeDriverInfo(scope.$index,scope.row)">删除 | ||
87 | + </el-button> | ||
88 | + </el-tooltip> | ||
89 | + </template> | ||
90 | + </el-table-column> | ||
91 | + </el-table> | ||
92 | + <!--分页区域--> | ||
93 | + <div style="margin-top: 10px"> | ||
94 | + <el-row :gutter="24"> | ||
95 | + <el-col :span="5"> | ||
96 | + <el-button type="danger" icon="el-icon-delete" @click="batchRemove" | ||
97 | + :disabled="this.sels.length===0">批量删除 | ||
98 | + </el-button> | ||
99 | + </el-col> | ||
100 | + <el-col :span="10" style="margin-top: 5px"> | ||
101 | + <el-pagination | ||
102 | + @size-change="handleSizeChange" | ||
103 | + @current-change="handleCurrentChange" | ||
104 | + :current-page="queryInfo.pageNum" | ||
105 | + :page-sizes="[10,20,30,50]" | ||
106 | + :page-size="queryInfo.pageSize" | ||
107 | + layout="total, sizes, prev, pager, next, jumper" | ||
108 | + :total="total"> | ||
109 | + </el-pagination> | ||
110 | + </el-col> | ||
111 | + </el-row> | ||
112 | + </div> | ||
113 | + </div> | ||
114 | + </el-card> | ||
115 | + <!-- 增加驾驶员信息对话框 --> | ||
116 | + <div> | ||
117 | + <el-dialog | ||
118 | + style="margin-top: -50px" | ||
119 | + title="增加驾驶员信息" | ||
120 | + text-align="center" | ||
121 | + :visible.sync="addDriverInfoFormVisible" | ||
122 | + width="50%" @close="addDriverInfoDialogClosed"> | ||
123 | + <el-form :model="addDriverInfoForm" label-width="100px" status-icon | ||
124 | + :rules="addDriverInfoFormRules" ref="addDriverInfoFormRef" | ||
125 | + size="medium" align="center" :inline="true" | ||
126 | + style="background-color: #F5F7FA"> | ||
127 | + <div style="margin-top: -15px"> | ||
128 | + <br> | ||
129 | + <el-form-item label="司机姓名:" prop="driverName"> | ||
130 | + <el-input v-model="addDriverInfoForm.driverName" style="width: 300px;" clearable | ||
131 | + placeholder="请输入驾驶员姓名"></el-input> | ||
132 | + </el-form-item> | ||
133 | + <el-form-item label="联系方式:" prop="driverMobile"> | ||
134 | + <el-input v-model="addDriverInfoForm.driverMobile" style="width: 300px;" clearable | ||
135 | + placeholder="请输入驾驶员联系方式"></el-input> | ||
136 | + </el-form-item> | ||
137 | + | ||
138 | + | ||
139 | + <el-form-item label="司机状态:" prop="driverStatus"> | ||
140 | + <el-select v-model="addDriverInfoForm.driverStatus" style="width: 300px" clearable | ||
141 | + placeholder="请选择驾驶员类型"> | ||
142 | + <el-option | ||
143 | + v-for="item in driverStatusList" | ||
144 | + :key="item.value" | ||
145 | + :label="item.label" | ||
146 | + :value="item.value"> | ||
147 | + </el-option> | ||
148 | + </el-select> | ||
149 | + </el-form-item> | ||
150 | + <el-form-item label="驾驶证号:" prop="driverLicenseNumber"> | ||
151 | + <el-input v-model="addDriverInfoForm.driverLicenseNumber" style="width: 300px;" | ||
152 | + clearable | ||
153 | + placeholder="请输入驾驶证号码"></el-input> | ||
154 | + </el-form-item> | ||
155 | + <el-form-item label="工作职位:" prop="driverPosition"> | ||
156 | + <el-select v-model="addDriverInfoForm.driverPosition" style="width: 300px" clearable | ||
157 | + placeholder="请选择驾驶员类型"> | ||
158 | + <el-option | ||
159 | + v-for="item in driverPositionList" | ||
160 | + :key="item.value" | ||
161 | + :label="item.label" | ||
162 | + :value="item.value"> | ||
163 | + </el-option> | ||
164 | + </el-select> | ||
165 | + </el-form-item> | ||
166 | + | ||
167 | + <el-form-item label="员工号码:" prop="jobNumber"> | ||
168 | + <el-input v-model="addDriverInfoForm.jobNumber" style="width: 300px;" clearable | ||
169 | + placeholder="请输入员工号码"></el-input> | ||
170 | + </el-form-item> | ||
171 | + <el-form-item label="司机公司:" prop="driverCompany"> | ||
172 | + <el-input v-model="addDriverInfoForm.driverCompany" style="width: 300px;" clearable | ||
173 | + placeholder="请输入驾驶员所属公司"></el-input> | ||
174 | + </el-form-item> | ||
175 | + <br> | ||
176 | + </div> | ||
177 | + </el-form> | ||
178 | + <!--底部按钮区域--> | ||
179 | + <span slot="footer" class="dialog-footer"> | ||
180 | + <el-button @click="addDriverInfoFormVisible = false">取 消</el-button> | ||
181 | + <el-button type="primary" :loading="addLoading" @click="addDriverInfo">增 加</el-button> | ||
182 | + </span> | ||
183 | + </el-dialog> | ||
184 | + </div> | ||
185 | + <!-- 编辑驾驶员信息,对话框 --> | ||
186 | + <div> | ||
187 | + <el-dialog | ||
188 | + style="margin-top: -70px" | ||
189 | + title="编辑驾驶员信息" | ||
190 | + :visible.sync="editDialogVisible" | ||
191 | + text-align="center" | ||
192 | + width="50%" @close="editDriverInfoDialogClosed"> | ||
193 | + <el-form :model="editDriverInfoForm" label-width="100px" status-icon | ||
194 | + :rules="editDriverInfoFormRules" ref="editDriverInfoFormRef" | ||
195 | + :inline="true" size="medium" align="center" | ||
196 | + style="background-color: #F5F7FA"> | ||
197 | + <div style="margin-top: -15px"> | ||
198 | + <br> | ||
199 | + <el-form-item label="司机姓名:" prop="driverName"> | ||
200 | + <el-input v-model="editDriverInfoForm.driverName" style="width: 300px;" clearable | ||
201 | + placeholder="请输入驾驶员姓名"></el-input> | ||
202 | + </el-form-item> | ||
203 | + <el-form-item label="联系方式:" prop="driverMobile"> | ||
204 | + <el-input v-model="editDriverInfoForm.driverMobile" style="width: 300px;" clearable | ||
205 | + placeholder="请输入驾驶员联系方式"></el-input> | ||
206 | + </el-form-item> | ||
207 | + | ||
208 | + | ||
209 | + <el-form-item label="司机状态:" prop="driverStatus"> | ||
210 | + <el-select v-model="editDriverInfoForm.driverStatus" style="width: 300px" clearable | ||
211 | + placeholder="请选择驾驶员类型"> | ||
212 | + <el-option | ||
213 | + v-for="item in driverStatusList" | ||
214 | + :key="item.value" | ||
215 | + :label="item.label" | ||
216 | + :value="item.value"> | ||
217 | + </el-option> | ||
218 | + </el-select> | ||
219 | + </el-form-item> | ||
220 | + <el-form-item label="驾驶证号:" prop="driverLicenseNumber"> | ||
221 | + <el-input v-model="editDriverInfoForm.driverLicenseNumber" style="width: 300px;" | ||
222 | + clearable | ||
223 | + placeholder="请输入驾驶证号码"></el-input> | ||
224 | + </el-form-item> | ||
225 | + <el-form-item label="工作职位:" prop="driverPosition"> | ||
226 | + <el-select v-model="editDriverInfoForm.driverPosition" style="width: 300px" clearable | ||
227 | + placeholder="请选择驾驶员类型"> | ||
228 | + <el-option | ||
229 | + v-for="item in driverPositionList" | ||
230 | + :key="item.value" | ||
231 | + :label="item.label" | ||
232 | + :value="item.value"> | ||
233 | + </el-option> | ||
234 | + </el-select> | ||
235 | + </el-form-item> | ||
236 | + | ||
237 | + <el-form-item label="员工号码:" prop="jobNumber"> | ||
238 | + <el-input v-model="editDriverInfoForm.jobNumber" style="width: 300px;" clearable | ||
239 | + placeholder="请输入员工号码"></el-input> | ||
240 | + </el-form-item> | ||
241 | + <el-form-item label="司机公司:" prop="driverCompany"> | ||
242 | + <el-input v-model="editDriverInfoForm.driverCompany" style="width: 300px;" clearable | ||
243 | + placeholder="请输入驾驶员所属公司"></el-input> | ||
244 | + </el-form-item> | ||
245 | + <br> | ||
246 | + </div> | ||
247 | + </el-form> | ||
248 | + <!--底部按钮区域--> | ||
249 | + <span slot="footer" class="dialog-footer"> | ||
250 | + <el-button @click="editDialogVisible = false">取 消</el-button> | ||
251 | + <el-button type="primary" :loading="editLoading" @click="editDriverInfo">编 辑</el-button> | ||
252 | + </span> | ||
253 | + </el-dialog> | ||
254 | + </div> | ||
255 | + </el-main> | ||
256 | + </el-container> | ||
257 | +</template> | ||
258 | + | ||
259 | +<script> | ||
260 | + // import { | ||
261 | + // selectDriverInfoList, | ||
262 | + // insertDriverInfo, | ||
263 | + // updateDriverInfo, | ||
264 | + // batchRemoveDriverInfo, | ||
265 | + // deleteDriverInfo, | ||
266 | + // } from "../../api/dispatch_api"; | ||
267 | + | ||
268 | + export default { | ||
269 | + name: "dispatch_api", | ||
270 | + created() { | ||
271 | + //刷新驾驶员信息列表 | ||
272 | + this.getDriverInfoList(); | ||
273 | + }, | ||
274 | + data() { | ||
275 | + //验证手机号的自定义规则 | ||
276 | + var driverMobileValid = (rule, value, callback) => { | ||
277 | + //验证手机号的正则表达式 | ||
278 | + const regMobile = /^(0|86|17951)?(13[0-9]|15[0123456789]|17[678]|18[0-9]|14[57])[0-9]{8}$/; | ||
279 | + if (regMobile.test(value)) { | ||
280 | + //合法的手机号 | ||
281 | + return callback(); | ||
282 | + } | ||
283 | + callback(new Error('请输入合法的手机号')); | ||
284 | + }; | ||
285 | + return { | ||
286 | + /** | ||
287 | + * 查询信息列表 | ||
288 | + */ | ||
289 | + queryInfo: { | ||
290 | + //驾驶员姓名 | ||
291 | + driverName: '', | ||
292 | + //驾驶员联系方式 | ||
293 | + driverMobile: '', | ||
294 | + //驾驶员所属公司 | ||
295 | + driverCompany: '', | ||
296 | + //驾驶员状态 | ||
297 | + driverStatus: '', | ||
298 | + //当前的页数 | ||
299 | + pageNum: 1, | ||
300 | + //当前每页显示多少条数据 | ||
301 | + pageSize: 10 | ||
302 | + }, | ||
303 | + /** | ||
304 | + * 设置,总条数 | ||
305 | + */ | ||
306 | + total: 0, | ||
307 | + /** | ||
308 | + * 批量删除的选中列表 | ||
309 | + */ | ||
310 | + sels: [], | ||
311 | + /** | ||
312 | + * 驾驶员信息列表 | ||
313 | + */ | ||
314 | + driverInfoList: [], | ||
315 | + /** | ||
316 | + * 新增驾驶员信息表单 | ||
317 | + */ | ||
318 | + addDriverInfoForm: { | ||
319 | + driverName: '', | ||
320 | + driverLicenseNumber: '', | ||
321 | + driverMobile: '', | ||
322 | + jobNumber: '', | ||
323 | + driverPosition: '1', | ||
324 | + driverCompany: '', | ||
325 | + driverStatus: '1', | ||
326 | + }, | ||
327 | + /** | ||
328 | + * 编辑驾驶员信息表单 | ||
329 | + */ | ||
330 | + editDriverInfoForm: {}, | ||
331 | + /** | ||
332 | + * 控制,添加驾驶员信息对话框的显示与隐藏 | ||
333 | + */ | ||
334 | + addDriverInfoFormVisible: false, | ||
335 | + /** | ||
336 | + * 控制,编辑驾驶员信息对话框的显示与隐藏 | ||
337 | + */ | ||
338 | + editDialogVisible: false, | ||
339 | + /* 列表加载 */ | ||
340 | + listLoading: false, | ||
341 | + /* 添加加载 */ | ||
342 | + addLoading: false, | ||
343 | + /* 编辑加载 */ | ||
344 | + editLoading: false, | ||
345 | + /* 删除加载 */ | ||
346 | + delLoading: false, | ||
347 | + /** | ||
348 | + * 司机职位,列表 | ||
349 | + */ | ||
350 | + driverPositionList: [ | ||
351 | + { | ||
352 | + value: '1', | ||
353 | + label: '队长' | ||
354 | + }, | ||
355 | + { | ||
356 | + value: '2', | ||
357 | + label: '班长' | ||
358 | + }, | ||
359 | + { | ||
360 | + value: '3', | ||
361 | + label: '副班长' | ||
362 | + }, | ||
363 | + { | ||
364 | + value: '4', | ||
365 | + label: '员工' | ||
366 | + }, | ||
367 | + ], | ||
368 | + /** | ||
369 | + * 驾驶员状态,列表 | ||
370 | + */ | ||
371 | + driverStatusList: [ | ||
372 | + { | ||
373 | + value: '1', | ||
374 | + label: '空闲状态' | ||
375 | + }, | ||
376 | + { | ||
377 | + value: '2', | ||
378 | + label: '执行状态' | ||
379 | + }, | ||
380 | + { | ||
381 | + value: '3', | ||
382 | + label: '轮休状态' | ||
383 | + }, | ||
384 | + { | ||
385 | + value: '4', | ||
386 | + label: '请假状态' | ||
387 | + }, | ||
388 | + ], | ||
389 | + /** | ||
390 | + * 添加驾驶员信息,表单的验证规则对象 | ||
391 | + */ | ||
392 | + addDriverInfoFormRules: { | ||
393 | + driverName: [ | ||
394 | + {required: true, message: '请选择驾驶员姓名', trigger: ['blur', 'change']}, | ||
395 | + ], | ||
396 | + driverLicenseNumber: [ | ||
397 | + {required: true, message: '请输入驾驶证号码', trigger: ['blur', 'change']}, | ||
398 | + ], | ||
399 | + driverMobile: [ | ||
400 | + {required: true, message: '请输入联系方式', trigger: ['blur', 'change']}, | ||
401 | + {validator: driverMobileValid, trigger: 'blur'} | ||
402 | + ], | ||
403 | + jobNumber: [ | ||
404 | + {required: true, message: '请输入员工号码', trigger: ['blur', 'change']}, | ||
405 | + ], | ||
406 | + driverPosition: [ | ||
407 | + {required: true, message: '请选择工作职位', trigger: ['blur', 'change']}, | ||
408 | + ], | ||
409 | + driverCompany: [ | ||
410 | + {required: true, message: '请输入驾驶员所属公司', trigger: ['blur', 'change']}, | ||
411 | + ], | ||
412 | + driverStatus: [ | ||
413 | + {required: true, message: '请选择驾驶员状态', trigger: ['blur', 'change']}, | ||
414 | + ], | ||
415 | + }, | ||
416 | + /** | ||
417 | + * 编辑驾驶员信息,表单的验证规则对象 | ||
418 | + */ | ||
419 | + editDriverInfoFormRules: { | ||
420 | + driverName: [ | ||
421 | + {required: true, message: '请选择驾驶员姓名', trigger: ['blur', 'change']}, | ||
422 | + ], | ||
423 | + driverLicenseNumber: [ | ||
424 | + {required: true, message: '请输入驾驶证号码', trigger: ['blur', 'change']}, | ||
425 | + ], | ||
426 | + driverMobile: [ | ||
427 | + {required: true, message: '请输入联系方式', trigger: ['blur', 'change']}, | ||
428 | + {validator: driverMobileValid, trigger: 'blur'} | ||
429 | + ], | ||
430 | + jobNumber: [ | ||
431 | + {required: true, message: '请输入员工号码', trigger: ['blur', 'change']}, | ||
432 | + ], | ||
433 | + driverPosition: [ | ||
434 | + {required: true, message: '请选择工作职位', trigger: ['blur', 'change']}, | ||
435 | + ], | ||
436 | + driverCompany: [ | ||
437 | + {required: true, message: '请输入驾驶员所属公司', trigger: ['blur', 'change']}, | ||
438 | + ], | ||
439 | + driverStatus: [ | ||
440 | + {required: true, message: '请选择驾驶员状态', trigger: ['blur', 'change']}, | ||
441 | + ], | ||
442 | + } | ||
443 | + } | ||
444 | + }, | ||
445 | + methods: { | ||
446 | + /** | ||
447 | + * 获取驾驶员信息列表 | ||
448 | + */ | ||
449 | + getDriverInfoList() { | ||
450 | + //开启加载 | ||
451 | + this.listLoading = true; | ||
452 | + selectDriverInfoList(this.queryInfo).then((response) => { | ||
453 | + let res = response.data; | ||
454 | + if (res.code !== '200'){ | ||
455 | + //关闭加载 | ||
456 | + this.listLoading = false; | ||
457 | + return this.$message.error('获取驾驶员信息列表,失败'); | ||
458 | + } | ||
459 | + // 获取驾驶员信息列表数据 | ||
460 | + this.driverInfoList = res.data.list; | ||
461 | + // 获取列表的总记录数 | ||
462 | + this.total = res.data.total; | ||
463 | + //关闭加载 | ||
464 | + this.listLoading = false; | ||
465 | + this.$message.success('获取驾驶员信息列表,成功'); | ||
466 | + }).catch(error => { | ||
467 | + this.listLoading = false; | ||
468 | + this.$message.error(error.toString()); | ||
469 | + }); | ||
470 | + | ||
471 | + }, | ||
472 | + /** | ||
473 | + * 增加驾驶员信息 | ||
474 | + */ | ||
475 | + addDriverInfo() { | ||
476 | + /*进行表单的预验证*/ | ||
477 | + this.$refs.addDriverInfoFormRef.validate(valid => { | ||
478 | + // 未通过,表单预校验 | ||
479 | + if (!valid) return; | ||
480 | + // 通过,表单预检验,开启加载 | ||
481 | + this.addLoading = true; | ||
482 | + insertDriverInfo(this.addDriverInfoForm).then((response) => { | ||
483 | + let res = response.data; | ||
484 | + if (res.code !== '200'){ | ||
485 | + //关闭加载 | ||
486 | + this.addLoading = false; | ||
487 | + return this.$message.error('添加驾驶员信息,失败'); | ||
488 | + } | ||
489 | + //关闭加载 | ||
490 | + this.addLoading = false; | ||
491 | + this.$message.success('添加驾驶员信息,成功'); | ||
492 | + //关闭对话框 | ||
493 | + this.addDriverInfoFormVisible = false; | ||
494 | + //刷新驾驶员信息列表 | ||
495 | + this.getDriverInfoList(); | ||
496 | + }).catch(error => { | ||
497 | + this.addLoading = false; | ||
498 | + this.$message.error(error.toString()); | ||
499 | + }); | ||
500 | + }) | ||
501 | + }, | ||
502 | + /** | ||
503 | + * 删除驾驶员信息 | ||
504 | + */ | ||
505 | + removeDriverInfo(index, row) { | ||
506 | + //弹框询问是否删除驾驶员信息 | ||
507 | + this.$confirm('此操作永久删除该驾驶员信息, 是否继续?', '警告', { | ||
508 | + confirmButtonText: '确定删除', | ||
509 | + cancelButtonText: '取消', | ||
510 | + type: 'warning' | ||
511 | + } | ||
512 | + ).then(() => { | ||
513 | + //开启加载 | ||
514 | + this.delLoading = true; | ||
515 | + deleteDriverInfo(row).then((response) => { | ||
516 | + let res = response.data; | ||
517 | + if (res.code !== '200') { | ||
518 | + //关闭加载 | ||
519 | + this.delLoading = false; | ||
520 | + return this.$message.error('删除驾驶员信息,失败'); | ||
521 | + } | ||
522 | + //关闭加载 | ||
523 | + this.delLoading = false; | ||
524 | + this.$message.success('删除驾驶员信息,成功!'); | ||
525 | + //刷新驾驶员信息列表 | ||
526 | + this.getDriverInfoList(); | ||
527 | + }).catch(error => { | ||
528 | + this.delLoading = false; | ||
529 | + this.$message.error(error.toString()); | ||
530 | + }); | ||
531 | + }).catch(() => { | ||
532 | + }); | ||
533 | + }, | ||
534 | + /** | ||
535 | + * 批量删除,之前的选中 | ||
536 | + */ | ||
537 | + selsChange: function (sels) { | ||
538 | + this.sels = sels; | ||
539 | + }, | ||
540 | + /** | ||
541 | + * 驾驶员状态为执行状态的时候,无法被选中 | ||
542 | + */ | ||
543 | + isSelectable(row, index) { | ||
544 | + if (row.driverStatus === '2') { | ||
545 | + return false; | ||
546 | + } else { | ||
547 | + return true; | ||
548 | + } | ||
549 | + }, | ||
550 | + /** | ||
551 | + * 批量删除功能 | ||
552 | + */ | ||
553 | + batchRemove() { | ||
554 | + var ids = this.sels.map(item => item.id).toString(); | ||
555 | + console.log(ids); | ||
556 | + //弹框询问是否批量删除选中的车辆调度记录 | ||
557 | + this.$confirm('此操作将永久删除,选中的驾驶员信息, 是否继续?', '警告', { | ||
558 | + confirmButtonText: '确定删除', | ||
559 | + cancelButtonText: '取消', | ||
560 | + type: 'warning' | ||
561 | + } | ||
562 | + ).then(() => { | ||
563 | + //开启加载 | ||
564 | + this.listLoading = true; | ||
565 | + let params = {ids: ids}; | ||
566 | + batchRemoveDriverInfo(params).then(response => { | ||
567 | + let res = response.data; | ||
568 | + if (res.code !== '200') { | ||
569 | + this.listLoading = false; | ||
570 | + return this.$message.error('批量删除驾驶员信息,失败'); | ||
571 | + } | ||
572 | + this.$message.success('批量删除驶员信息,成功!'); | ||
573 | + this.listLoading = false; | ||
574 | + //刷新驾驶员信息列表 | ||
575 | + this.getDriverInfoList(); | ||
576 | + }).catch(error => { | ||
577 | + this.delLoading = false; | ||
578 | + this.$message.error(error.toString()); | ||
579 | + }); | ||
580 | + }).catch(() => { | ||
581 | + }); | ||
582 | + }, | ||
583 | + /** | ||
584 | + * 编辑驾驶员信息 | ||
585 | + */ | ||
586 | + editDriverInfo() { | ||
587 | + /*进行表单的预验证*/ | ||
588 | + this.$refs.editDriverInfoFormRef.validate(valid => { | ||
589 | + // 未通过,表单预校验 | ||
590 | + if (!valid) return; | ||
591 | + // 通过,表单预检验,开启加载 | ||
592 | + this.editLoading = true; | ||
593 | + updateDriverInfo(this.editDriverInfoForm).then((response) => { | ||
594 | + let res = response.data; | ||
595 | + if (res.code !== '200') { | ||
596 | + //关闭加载 | ||
597 | + this.editLoading = false; | ||
598 | + return this.$message.error('修改驾驶员信息,失败'); | ||
599 | + } | ||
600 | + //关闭加载 | ||
601 | + this.editLoading = false; | ||
602 | + this.$message.success('修改驾驶员信息,成功!'); | ||
603 | + // 关闭,编辑驾驶员信息对话框 | ||
604 | + this.editDialogVisible = false; | ||
605 | + //刷新驾驶员信息列表 | ||
606 | + this.getDriverInfoList(); | ||
607 | + }).catch(error => { | ||
608 | + this.editLoading = false; | ||
609 | + this.$message.error(error.toString()); | ||
610 | + }); | ||
611 | + }) | ||
612 | + }, | ||
613 | + /** | ||
614 | + * 添加驾驶员信息对话框,关闭时,重置对话框 | ||
615 | + */ | ||
616 | + addDriverInfoDialogClosed() { | ||
617 | + this.$refs.addDriverInfoFormRef.resetFields(); | ||
618 | + }, | ||
619 | + /** | ||
620 | + * 编辑驾驶员信息对话框,关闭时,重置对话框 | ||
621 | + */ | ||
622 | + editDriverInfoDialogClosed() { | ||
623 | + this.$refs.editDriverInfoFormRef.resetFields(); | ||
624 | + }, | ||
625 | + /** | ||
626 | + * 打开编辑驾驶员信息对话框 | ||
627 | + */ | ||
628 | + showEditDialogVisible(index, row) { | ||
629 | + this.editDriverInfoForm = Object.assign({}, row); | ||
630 | + this.editDialogVisible = true; | ||
631 | + }, | ||
632 | + /** | ||
633 | + * 监听pageSize改变的事件 | ||
634 | + */ | ||
635 | + handleSizeChange(newSize) { | ||
636 | + this.queryInfo.pageSize = newSize; | ||
637 | + //刷新驾驶员信息列表 | ||
638 | + this.getDriverInfoList(); | ||
639 | + }, | ||
640 | + /** | ||
641 | + * 监听当前页码值改变的事件 | ||
642 | + */ | ||
643 | + handleCurrentChange(newPage) { | ||
644 | + this.queryInfo.pageNum = newPage; | ||
645 | + //刷新驾驶员信息列表 | ||
646 | + this.getDriverInfoList(); | ||
647 | + }, | ||
648 | + } | ||
649 | + } | ||
650 | +</script> | ||
651 | + | ||
652 | +<style scoped> | ||
653 | + | ||
654 | +</style> |
src/views/nav3/VehicleInfo.vue
0 → 100644
1 | +<template> | ||
2 | + <el-container> | ||
3 | + <el-main> | ||
4 | + <!--面包屑导航区域--> | ||
5 | + <!-- <div>--> | ||
6 | + <!-- <el-breadcrumb separator-class="el-icon-arrow-right">--> | ||
7 | + <!-- <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>--> | ||
8 | + <!-- <el-breadcrumb-item>车辆调度</el-breadcrumb-item>--> | ||
9 | + <!-- <el-breadcrumb-item>车辆信息</el-breadcrumb-item>--> | ||
10 | + <!-- </el-breadcrumb>--> | ||
11 | + <!-- </div>--> | ||
12 | + <el-card style="background-color: #F5F7FA"> | ||
13 | + <!--搜索区域--> | ||
14 | + <div> | ||
15 | + <el-row :gutter="24"> | ||
16 | + <el-col :span="5"> | ||
17 | + <el-input v-model="queryInfo.licensePlateNumber" clearable prefix-icon="el-icon-search" | ||
18 | + placeholder="请输入车牌号码"></el-input> | ||
19 | + </el-col> | ||
20 | + <el-col :span="5"> | ||
21 | + <el-input v-model="queryInfo.vehicleCompany" clearable prefix-icon="el-icon-search" | ||
22 | + placeholder="请输入车辆公司"></el-input> | ||
23 | + </el-col> | ||
24 | + <el-col :span="5"> | ||
25 | + <el-select v-model="queryInfo.vehicleStatus" clearable placeholder="请选择车辆状态"> | ||
26 | + <el-option | ||
27 | + v-for="item in vehicleStatusList" | ||
28 | + :key="item.value" | ||
29 | + :label="item.label" | ||
30 | + :value="item.value"> | ||
31 | + </el-option> | ||
32 | + </el-select> | ||
33 | + </el-col> | ||
34 | + <el-col :span="5"> | ||
35 | + <el-select v-model="queryInfo.vehicleType" clearable placeholder="请选择车辆类型"> | ||
36 | + <el-option | ||
37 | + v-for="item in vehicleTypeList" | ||
38 | + :key="item.value" | ||
39 | + :label="item.label" | ||
40 | + :value="item.value"> | ||
41 | + </el-option> | ||
42 | + </el-select> | ||
43 | + </el-col> | ||
44 | + </el-row> | ||
45 | + <el-row style="margin-top: 20px;"> | ||
46 | + <el-button type="primary" @click="getVehicleInfoList">查询车辆信息</el-button> | ||
47 | + <el-button type="success" @click="addVehicleInfoFormVisible = true">增加车辆信息</el-button> | ||
48 | + | ||
49 | + </el-row> | ||
50 | + </div> | ||
51 | + <!--车辆信息列表区域--> | ||
52 | + <div style="margin-top: 20px;"> | ||
53 | + <el-table :data="vehicleInfoList" border stripe highlight-current-row v-loading="listLoading" | ||
54 | + @selection-change="selsChange" | ||
55 | + element-loading-text="拼命加载中"> | ||
56 | + <el-table-column type="selection" width="55" :selectable="isSelectable" | ||
57 | + align="center"></el-table-column> | ||
58 | + <el-table-column type="index" align="center"></el-table-column> | ||
59 | + <el-table-column label="车辆类型" prop="vehicleType" align="center" width="120"> | ||
60 | + <template slot-scope="scope"> | ||
61 | + <span v-if="scope.row.vehicleType ==='1'">重型货车</span> | ||
62 | + <span v-if="scope.row.vehicleType ==='2'">中型货车</span> | ||
63 | + <span v-if="scope.row.vehicleType ==='3'">轻型货车</span> | ||
64 | + <span v-if="scope.row.vehicleType ==='4'">微型货车</span> | ||
65 | + <span v-if="scope.row.vehicleType ==='5'">拖车</span> | ||
66 | + <span v-if="scope.row.vehicleType ==='6'">叉车</span> | ||
67 | + </template> | ||
68 | + </el-table-column> | ||
69 | + <el-table-column label="车牌号码" prop="licensePlateNumber" align="center" | ||
70 | + width="130"></el-table-column> | ||
71 | + <el-table-column label="车辆状态" prop="vehicleStatus" align="center" width="100"> | ||
72 | + <template slot-scope="scope"> | ||
73 | + <span v-if="scope.row.vehicleStatus ==='1'">空闲状态</span> | ||
74 | + <span v-if="scope.row.vehicleStatus ==='2'">执行状态</span> | ||
75 | + <span v-if="scope.row.vehicleStatus ==='3'">在修状态</span> | ||
76 | + <span v-if="scope.row.vehicleStatus ==='4'">损坏未修</span> | ||
77 | + <span v-if="scope.row.vehicleStatus ==='5'">保养状态</span> | ||
78 | + </template> | ||
79 | + </el-table-column> | ||
80 | + <el-table-column label="车辆载重/Kg" prop="vehicleLoad" align="center" | ||
81 | + width="110"></el-table-column> | ||
82 | + <el-table-column label="挂车与否" prop="isTrailer" align="center" width="110"> | ||
83 | + <template slot-scope="scope"> | ||
84 | + <span v-if="scope.row.isTrailer ==='1'">有挂车</span> | ||
85 | + <span v-if="scope.row.isTrailer ==='2'">没有挂车</span> | ||
86 | + </template> | ||
87 | + </el-table-column> | ||
88 | + <el-table-column label="开始空闲时间" prop="freetime" align="center" width="160"></el-table-column> | ||
89 | + | ||
90 | + <el-table-column label="车辆公司" prop="vehicleCompany" align="center" | ||
91 | + width="200"></el-table-column> | ||
92 | + <el-table-column label="行驶证号" prop="drivingLicenseNumber" align="center" | ||
93 | + width="160"></el-table-column> | ||
94 | + <el-table-column label="操作" width="200px" align="center" fixed="right"> | ||
95 | + <template slot-scope="scope"> | ||
96 | + <!--查看按钮--> | ||
97 | + <el-tooltip effect="dark" content="编辑" placement="top-start" :enterable="false"> | ||
98 | + <el-button type="primary" icon="el-icon-edit" size="mini" | ||
99 | + @click="showEditDialogVisible(scope.$index,scope.row)">编辑 | ||
100 | + </el-button> | ||
101 | + </el-tooltip> | ||
102 | + <!--取消调度按钮--> | ||
103 | + <el-tooltip effect="dark" content="删除" placement="top-start" :enterable="false"> | ||
104 | + <el-button type="danger" icon="el-icon-delete" size="mini" | ||
105 | + :loading="delLoading" | ||
106 | + :disabled="scope.row.vehicleStatus==='2'" | ||
107 | + @click="removeVehicleInfo(scope.$index,scope.row)">删除 | ||
108 | + </el-button> | ||
109 | + </el-tooltip> | ||
110 | + </template> | ||
111 | + </el-table-column> | ||
112 | + </el-table> | ||
113 | + <!--分页区域--> | ||
114 | + <div style="margin-top: 10px"> | ||
115 | + <el-row :gutter="24"> | ||
116 | + <el-col :span="5"> | ||
117 | + <el-button type="danger" icon="el-icon-delete" @click="batchRemove" | ||
118 | + :disabled="this.sels.length===0">批量删除 | ||
119 | + </el-button> | ||
120 | + </el-col> | ||
121 | + <el-col :span="10" style="margin-top: 5px"> | ||
122 | + <el-pagination | ||
123 | + @size-change="handleSizeChange" | ||
124 | + @current-change="handleCurrentChange" | ||
125 | + :current-page="queryInfo.pageNum" | ||
126 | + :page-sizes="[10,20,30,50]" | ||
127 | + :page-size="queryInfo.pageSize" | ||
128 | + layout="total, sizes, prev, pager, next, jumper" | ||
129 | + :total="total"> | ||
130 | + </el-pagination> | ||
131 | + </el-col> | ||
132 | + </el-row> | ||
133 | + </div> | ||
134 | + </div> | ||
135 | + </el-card> | ||
136 | + <!-- 增加车辆信息对话框 --> | ||
137 | + <div> | ||
138 | + <el-dialog | ||
139 | + style="margin-top: -50px" | ||
140 | + title="增加车辆信息" | ||
141 | + :visible.sync="addVehicleInfoFormVisible" | ||
142 | + width="50%" @close="addVehicleInfoDialogClosed"> | ||
143 | + <el-form :model="addVehicleInfoForm" label-width="100px" status-icon | ||
144 | + :rules="addVehicleInfoFormRules" ref="addVehicleInfoFormRef" | ||
145 | + style="margin-left:10%;margin-right:10%;background-color: #F5F7FA"> | ||
146 | + <div style="margin-left: 30px"> | ||
147 | + <br> | ||
148 | + <el-form-item label="车牌号码:" prop="licensePlateNumber"> | ||
149 | + <el-input v-model="addVehicleInfoForm.licensePlateNumber" clearable | ||
150 | + style="width: 300px;" | ||
151 | + placeholder="请输入车牌号码"></el-input> | ||
152 | + </el-form-item> | ||
153 | + <el-form-item label="行驶证号:" prop="drivingLicenseNumber"> | ||
154 | + <el-input v-model="addVehicleInfoForm.drivingLicenseNumber" clearable | ||
155 | + style="width: 300px;" | ||
156 | + placeholder="请输入车辆行驶证号"></el-input> | ||
157 | + </el-form-item> | ||
158 | + <el-form-item label="车辆类型:" prop="vehicleType"> | ||
159 | + <el-select v-model="addVehicleInfoForm.vehicleType" style="width: 300px" clearable | ||
160 | + placeholder="请选择车辆类型"> | ||
161 | + <el-option | ||
162 | + v-for="item in vehicleTypeList" | ||
163 | + :key="item.value" | ||
164 | + :label="item.label" | ||
165 | + :value="item.value"> | ||
166 | + </el-option> | ||
167 | + </el-select> | ||
168 | + </el-form-item> | ||
169 | + <el-form-item label="车辆载重:" prop="vehicleLoad"> | ||
170 | + <el-input-number style="width: 200px" v-model="addVehicleInfoForm.vehicleLoad" | ||
171 | + :min="10" :max="10000" controls-position="right"> | ||
172 | + </el-input-number> | ||
173 | + <span style="margin-left:5px;font-size: 18px">Kg</span> | ||
174 | + </el-form-item> | ||
175 | + <el-form-item label="有无挂车:" prop="vehicleType"> | ||
176 | + <el-select v-model="addVehicleInfoForm.isTrailer" style="width: 300px" clearable | ||
177 | + placeholder="请选择有无挂车"> | ||
178 | + <el-option | ||
179 | + v-for="item in isTrailerList" | ||
180 | + :key="item.value" | ||
181 | + :label="item.label" | ||
182 | + :value="item.value"> | ||
183 | + </el-option> | ||
184 | + </el-select> | ||
185 | + </el-form-item> | ||
186 | + <el-form-item label="车辆公司:" prop="vehicleCompany"> | ||
187 | + <el-input v-model="addVehicleInfoForm.vehicleCompany" clearable style="width: 300px;" | ||
188 | + placeholder="请输入车辆公司"></el-input> | ||
189 | + </el-form-item> | ||
190 | + <br> | ||
191 | + </div> | ||
192 | + </el-form> | ||
193 | + <!--底部按钮区域--> | ||
194 | + <span slot="footer" class="dialog-footer"> | ||
195 | + <el-button @click="addVehicleInfoFormVisible = false">取 消</el-button> | ||
196 | + <el-button type="primary" :loading="addLoading" @click="addVehicleInfo">增 加</el-button> | ||
197 | + </span> | ||
198 | + </el-dialog> | ||
199 | + </div> | ||
200 | + <!-- 编辑车辆信息,对话框 --> | ||
201 | + <div> | ||
202 | + <el-dialog | ||
203 | + title="编辑车辆信息" | ||
204 | + text-align="center" | ||
205 | + :visible.sync="editDialogVisible" | ||
206 | + width="60%" @close="editVehicleInfoDialogClosed"> | ||
207 | + <el-form :model="editVehicleInfoForm" label-width="100px" status-icon | ||
208 | + :rules="editVehicleInfoFormRules" ref="editVehicleInfoFormRef" | ||
209 | + :inline="true" align="center" | ||
210 | + style="background-color: #F5F7FA"> | ||
211 | + <div> | ||
212 | + <br> | ||
213 | + <el-form-item label="车牌号码:" prop="licensePlateNumber"> | ||
214 | + <el-input v-model="editVehicleInfoForm.licensePlateNumber" clearable readonly | ||
215 | + style="width:250px" | ||
216 | + placeholder="请输入车牌号码"></el-input> | ||
217 | + </el-form-item> | ||
218 | + <el-form-item label="行驶证号:" prop="drivingLicenseNumber"> | ||
219 | + <el-input v-model="editVehicleInfoForm.drivingLicenseNumber" clearable | ||
220 | + style="width:250px" | ||
221 | + placeholder="请输入车辆行驶证号"></el-input> | ||
222 | + </el-form-item> | ||
223 | + <el-form-item label="车辆类型:" prop="vehicleType"> | ||
224 | + <el-select v-model="editVehicleInfoForm.vehicleType" clearable | ||
225 | + style="width:250px" | ||
226 | + placeholder="请选择车辆类型"> | ||
227 | + <el-option | ||
228 | + v-for="item in vehicleTypeList" | ||
229 | + :key="item.value" | ||
230 | + :label="item.label" | ||
231 | + :value="item.value"> | ||
232 | + </el-option> | ||
233 | + </el-select> | ||
234 | + </el-form-item> | ||
235 | + <el-form-item label="车辆载重:" prop="vehicleLoad"> | ||
236 | + <el-input-number v-model="editVehicleInfoForm.vehicleLoad" | ||
237 | + clearable style="width:220px" | ||
238 | + :min="10" :max="10000" controls-position="right"> | ||
239 | + </el-input-number> | ||
240 | + <span style="margin-left:5px;font-size: 18px">Kg</span> | ||
241 | + </el-form-item> | ||
242 | + <el-form-item label="车辆状态:" prop="vehicleStatus"> | ||
243 | + <el-select v-model="editVehicleInfoForm.vehicleStatus" clearable | ||
244 | + style="width:250px" | ||
245 | + clearable placeholder="请选择车辆状态"> | ||
246 | + <el-option | ||
247 | + v-for="item in vehicleStatusList" | ||
248 | + :key="item.value" | ||
249 | + :label="item.label" | ||
250 | + :value="item.value"> | ||
251 | + </el-option> | ||
252 | + </el-select> | ||
253 | + </el-form-item> | ||
254 | + <el-form-item label="有无挂车:" prop="vehicleType"> | ||
255 | + <el-select v-model="editVehicleInfoForm.isTrailer" clearable | ||
256 | + style="width:250px" clearable | ||
257 | + placeholder="请选择有无挂车"> | ||
258 | + <el-option | ||
259 | + v-for="item in isTrailerList" | ||
260 | + :key="item.value" | ||
261 | + :label="item.label" | ||
262 | + :value="item.value"> | ||
263 | + </el-option> | ||
264 | + </el-select> | ||
265 | + </el-form-item> | ||
266 | + <el-form-item label="车辆公司:" prop="vehicleCompany"> | ||
267 | + <el-input v-model="editVehicleInfoForm.vehicleCompany" clearable | ||
268 | + style="width:250px" | ||
269 | + placeholder="请输入车辆公司"></el-input> | ||
270 | + </el-form-item> | ||
271 | + <el-form-item label="空闲时间:" prop="freetime"> | ||
272 | + <el-date-picker v-model="editVehicleInfoForm.freetime" type="datetime" | ||
273 | + style="width:250px" | ||
274 | + placeholder="选择调度时间"></el-date-picker> | ||
275 | + </el-form-item> | ||
276 | + <br> | ||
277 | + </div> | ||
278 | + </el-form> | ||
279 | + <!--底部按钮区域--> | ||
280 | + <span slot="footer" class="dialog-footer"> | ||
281 | + <el-button @click="editDialogVisible = false">取 消</el-button> | ||
282 | + <el-button type="primary" :loading="editLoading" @click="editVehicleInfo">编 辑</el-button> | ||
283 | + </span> | ||
284 | + </el-dialog> | ||
285 | + </div> | ||
286 | + </el-main> | ||
287 | + </el-container> | ||
288 | +</template> | ||
289 | + | ||
290 | +<script> | ||
291 | + // import { | ||
292 | + // selectVehicleInfoList, | ||
293 | + // insertVehicleInfo, | ||
294 | + // updateVehicleInfo, | ||
295 | + // batchRemoveVehicleInfo, | ||
296 | + // deleteVehicleInfo, deleteDispatchNote | ||
297 | + // } from "../../api/dispatch_api"; | ||
298 | + | ||
299 | + export default { | ||
300 | + name: "dispatch_api", | ||
301 | + created() { | ||
302 | + //获取车辆信息列表 | ||
303 | + this.getVehicleInfoList(); | ||
304 | + }, | ||
305 | + data() { | ||
306 | + return { | ||
307 | + /** | ||
308 | + * 查询信息列表 | ||
309 | + */ | ||
310 | + queryInfo: { | ||
311 | + //车牌号 | ||
312 | + licensePlateNumber: '', | ||
313 | + //车辆所属公司 | ||
314 | + vehicleCompany: '', | ||
315 | + //车辆状态 | ||
316 | + vehicleStatus: '', | ||
317 | + //车辆类型 | ||
318 | + vehicleType: '', | ||
319 | + //当前的页数 | ||
320 | + pageNum: 1, | ||
321 | + //当前每页显示多少条数据 | ||
322 | + pageSize: 10 | ||
323 | + }, | ||
324 | + /** | ||
325 | + * 设置,总条数 | ||
326 | + */ | ||
327 | + total: 0, | ||
328 | + /** | ||
329 | + * 批量删除,选中列表 | ||
330 | + */ | ||
331 | + sels: [], | ||
332 | + /** | ||
333 | + * 车辆信息列表 | ||
334 | + */ | ||
335 | + vehicleInfoList: [], | ||
336 | + /** | ||
337 | + * 新增车辆信息表单 | ||
338 | + */ | ||
339 | + addVehicleInfoForm: { | ||
340 | + vehicleType: '2', | ||
341 | + licensePlateNumber: '', | ||
342 | + vehicleLoad: '', | ||
343 | + isTrailer: '2', | ||
344 | + vehicleCompany: '', | ||
345 | + drivingLicenseNumber: '', | ||
346 | + }, | ||
347 | + /** | ||
348 | + * 编辑车辆信息表单 | ||
349 | + */ | ||
350 | + editVehicleInfoForm: {}, | ||
351 | + /** | ||
352 | + * 控制,添加车辆信息对话框的显示与隐藏 | ||
353 | + */ | ||
354 | + addVehicleInfoFormVisible: false, | ||
355 | + /** | ||
356 | + * 控制,编辑车辆信息对话框的显示与隐藏 | ||
357 | + */ | ||
358 | + editDialogVisible: false, | ||
359 | + /* 列表加载 */ | ||
360 | + listLoading: false, | ||
361 | + /* 添加加载 */ | ||
362 | + addLoading: false, | ||
363 | + /* 编辑加载 */ | ||
364 | + editLoading: false, | ||
365 | + /* 删除加载 */ | ||
366 | + delLoading: false, | ||
367 | + /** | ||
368 | + * 车辆类型,选项列表 | ||
369 | + */ | ||
370 | + vehicleTypeList: [ | ||
371 | + { | ||
372 | + value: '1', | ||
373 | + label: '重型货车' | ||
374 | + }, | ||
375 | + { | ||
376 | + value: '2', | ||
377 | + label: '中型货车' | ||
378 | + }, | ||
379 | + { | ||
380 | + value: '3', | ||
381 | + label: '经济货车' | ||
382 | + }, | ||
383 | + { | ||
384 | + value: '4', | ||
385 | + label: '微型货车' | ||
386 | + }, | ||
387 | + { | ||
388 | + value: '5', | ||
389 | + label: '拖车' | ||
390 | + }, | ||
391 | + { | ||
392 | + value: '6', | ||
393 | + label: '叉车' | ||
394 | + } | ||
395 | + ], | ||
396 | + /** | ||
397 | + * 挂车与否,列表 | ||
398 | + */ | ||
399 | + isTrailerList: [ | ||
400 | + { | ||
401 | + value: '1', | ||
402 | + label: '有挂车' | ||
403 | + }, | ||
404 | + { | ||
405 | + value: '2', | ||
406 | + label: '没有挂车' | ||
407 | + }, | ||
408 | + ], | ||
409 | + /** | ||
410 | + * 车辆状态列表 | ||
411 | + */ | ||
412 | + vehicleStatusList: [ | ||
413 | + { | ||
414 | + value: '1', | ||
415 | + label: '空闲状态' | ||
416 | + }, | ||
417 | + { | ||
418 | + value: '2', | ||
419 | + label: '执行状态' | ||
420 | + }, | ||
421 | + { | ||
422 | + value: '3', | ||
423 | + label: '在修状态' | ||
424 | + }, | ||
425 | + { | ||
426 | + value: '4', | ||
427 | + label: '损坏未修状态' | ||
428 | + }, | ||
429 | + { | ||
430 | + value: '5', | ||
431 | + label: '保养状态' | ||
432 | + }, | ||
433 | + ], | ||
434 | + /** | ||
435 | + * 添加车辆信息表单的验证规则对象 | ||
436 | + */ | ||
437 | + addVehicleInfoFormRules: { | ||
438 | + vehicleType: [ | ||
439 | + {required: true, message: '请选择车辆类型', trigger: ['blur', 'change']}, | ||
440 | + ], | ||
441 | + licensePlateNumber: [ | ||
442 | + {required: true, message: '请输入车牌号', trigger: ['blur', 'change']}, | ||
443 | + ], | ||
444 | + vehicleLoad: [ | ||
445 | + {required: true, message: '请输入车辆载重', trigger: ['blur', 'change']}, | ||
446 | + ], | ||
447 | + isTrailer: [ | ||
448 | + {required: true, message: '请选择有无挂车', trigger: ['blur', 'change']}, | ||
449 | + ], | ||
450 | + vehicleCompany: [ | ||
451 | + {required: true, message: '请输入车辆公司名称', trigger: ['blur', 'change']}, | ||
452 | + ], | ||
453 | + drivingLicenseNumber: [ | ||
454 | + {required: true, message: '请输入车辆行驶证号', trigger: ['blur', 'change']}, | ||
455 | + ], | ||
456 | + }, | ||
457 | + /** | ||
458 | + * 编辑车辆信息表单的验证规则对象 | ||
459 | + */ | ||
460 | + editVehicleInfoFormRules: { | ||
461 | + vehicleStatus: [ | ||
462 | + {required: true, message: '请选择车辆状态', trigger: ['blur', 'change']}, | ||
463 | + ], | ||
464 | + freetime: [ | ||
465 | + {required: true, message: '请选择开始空闲时间', trigger: ['blur', 'change']}, | ||
466 | + ], | ||
467 | + vehicleType: [ | ||
468 | + {required: true, message: '请选择车辆类型', trigger: ['blur', 'change']}, | ||
469 | + ], | ||
470 | + licensePlateNumber: [ | ||
471 | + {required: true, message: '请输入车牌号', trigger: ['blur', 'change']}, | ||
472 | + ], | ||
473 | + vehicleLoad: [ | ||
474 | + {required: true, message: '请输入车辆载重', trigger: ['blur', 'change']}, | ||
475 | + ], | ||
476 | + isTrailer: [ | ||
477 | + {required: true, message: '请选择有无挂车', trigger: ['blur', 'change']}, | ||
478 | + ], | ||
479 | + vehicleCompany: [ | ||
480 | + {required: true, message: '请输入车辆公司名称', trigger: ['blur', 'change']}, | ||
481 | + ], | ||
482 | + drivingLicenseNumber: [ | ||
483 | + {required: true, message: '请输入车辆行驶证号', trigger: ['blur', 'change']}, | ||
484 | + ], | ||
485 | + } | ||
486 | + } | ||
487 | + }, | ||
488 | + methods: { | ||
489 | + /** | ||
490 | + * 管理员端,获取车辆信息列表 | ||
491 | + */ | ||
492 | + getVehicleInfoList() { | ||
493 | + //开启加载 | ||
494 | + this.listLoading = true; | ||
495 | + selectVehicleInfoList(this.queryInfo).then((response) => { | ||
496 | + let res = response.data; | ||
497 | + if (res.code !== '200') { | ||
498 | + //关闭加载 | ||
499 | + this.listLoading = false; | ||
500 | + return this.$message.error('获取车辆信息列表失败'); | ||
501 | + } | ||
502 | + // 获取车辆信息列表数据 | ||
503 | + this.vehicleInfoList = res.data.list; | ||
504 | + // 获取列表的总记录数 | ||
505 | + this.total = res.data.total; | ||
506 | + //关闭加载 | ||
507 | + this.listLoading = false; | ||
508 | + this.$message.success('获取车辆信息列表,成功'); | ||
509 | + }).catch(error => { | ||
510 | + this.listLoading = false; | ||
511 | + this.$message.error(error.toString()); | ||
512 | + }); | ||
513 | + }, | ||
514 | + /** | ||
515 | + * 管理员端,增加车辆信息 | ||
516 | + */ | ||
517 | + addVehicleInfo() { | ||
518 | + /*进行表单的预验证*/ | ||
519 | + this.$refs.addVehicleInfoFormRef.validate(valid => { | ||
520 | + // 未通过,表单预校验 | ||
521 | + if (!valid) return; | ||
522 | + // 通过,表单预检验,发起添加车辆信息的网络请求,开启加载 | ||
523 | + this.addLoading = true; | ||
524 | + insertVehicleInfo(this.addVehicleInfoForm).then((response) => { | ||
525 | + let res = response.data; | ||
526 | + //添加调度记录信息,失败 | ||
527 | + if (res.code !== '200') { | ||
528 | + //关闭加载 | ||
529 | + this.addLoading = false; | ||
530 | + if(res.code === '406'){ | ||
531 | + return this.$message.error('该车牌号已存在,请重新填写'); | ||
532 | + } | ||
533 | + return this.$message.error('添加车辆信息,失败'); | ||
534 | + } | ||
535 | + //关闭加载 | ||
536 | + this.addLoading = false; | ||
537 | + this.$message.success('添加调度记录信息,成功'); | ||
538 | + //隐藏对话框 | ||
539 | + this.addVehicleInfoFormVisible = false; | ||
540 | + //刷新车辆信息列表 | ||
541 | + this.getVehicleInfoList(); | ||
542 | + }).catch(error => { | ||
543 | + this.addLoading = false; | ||
544 | + this.$message.error(error.toString()); | ||
545 | + }); | ||
546 | + | ||
547 | + }) | ||
548 | + }, | ||
549 | + /** | ||
550 | + * 管理员端,删除车辆信息 | ||
551 | + */ | ||
552 | + removeVehicleInfo(index, row) { | ||
553 | + //弹框询问是否删除车辆信息 | ||
554 | + this.$confirm('此操作永久删除该车辆信息, 是否继续?', '警告', { | ||
555 | + confirmButtonText: '确定删除', | ||
556 | + cancelButtonText: '取消', | ||
557 | + type: 'warning' | ||
558 | + } | ||
559 | + ).then(() => { | ||
560 | + //开启加载 | ||
561 | + this.delLoading = true; | ||
562 | + deleteVehicleInfo(row).then((response) => { | ||
563 | + let res = response.data; | ||
564 | + if (res.code !== '200') { | ||
565 | + //关闭加载 | ||
566 | + this.delLoading = false; | ||
567 | + return this.$message.error('删除车辆信息,失败'); | ||
568 | + } | ||
569 | + //关闭加载 | ||
570 | + this.delLoading = false; | ||
571 | + this.$message.success('删除车辆信息,成功!'); | ||
572 | + //刷新车辆信息列表 | ||
573 | + this.getVehicleInfoList(); | ||
574 | + }).catch(error => { | ||
575 | + this.delLoading = false; | ||
576 | + this.$message.error(error.toString()); | ||
577 | + }); | ||
578 | + }).catch(() => { | ||
579 | + }); | ||
580 | + }, | ||
581 | + | ||
582 | + /** | ||
583 | + * 批量删除,之前的选中 | ||
584 | + */ | ||
585 | + selsChange: function (sels) { | ||
586 | + this.sels = sels; | ||
587 | + }, | ||
588 | + /** | ||
589 | + * 车辆状态为执行状态的时候,无法被选中 | ||
590 | + */ | ||
591 | + isSelectable(row, index) { | ||
592 | + if (row.vehicleStatus === '2') { | ||
593 | + return false; | ||
594 | + } else { | ||
595 | + return true; | ||
596 | + } | ||
597 | + }, | ||
598 | + /** | ||
599 | + * 批量删除功能 | ||
600 | + */ | ||
601 | + batchRemove() { | ||
602 | + var ids = this.sels.map(item => item.id).toString(); | ||
603 | + console.log(ids); | ||
604 | + //弹框询问是否批量删除选中的车辆调度记录 | ||
605 | + this.$confirm('此操作永久删除选中的车辆信息, 是否继续?', '警告', { | ||
606 | + confirmButtonText: '确定删除', | ||
607 | + cancelButtonText: '取消', | ||
608 | + type: 'warning' | ||
609 | + } | ||
610 | + ).then(() => { | ||
611 | + //开启加载 | ||
612 | + this.listLoading = true; | ||
613 | + let params = {ids: ids}; | ||
614 | + batchRemoveVehicleInfo(params).then(response => { | ||
615 | + let res = response.data; | ||
616 | + if (res.code !== '200') { | ||
617 | + this.listLoading = false; | ||
618 | + return this.$message.error('批量删除车辆信息,失败'); | ||
619 | + } | ||
620 | + this.$message.success('批量删除车辆信息,成功!'); | ||
621 | + this.listLoading = false; | ||
622 | + //刷新车辆信息列表 | ||
623 | + this.getVehicleInfoList(); | ||
624 | + }).catch(error => { | ||
625 | + this.delLoading = false; | ||
626 | + this.$message.error(error.toString()); | ||
627 | + }); | ||
628 | + }).catch(() => { | ||
629 | + }); | ||
630 | + }, | ||
631 | + /** | ||
632 | + * 管理员端,编辑车辆信息 | ||
633 | + */ | ||
634 | + editVehicleInfo() { | ||
635 | + /*进行表单的预验证*/ | ||
636 | + this.$refs.editVehicleInfoFormRef.validate(valid => { | ||
637 | + // 未通过,表单预校验 | ||
638 | + if (!valid) return; | ||
639 | + // 通过,表单预校验,开启加载 | ||
640 | + this.editLoading = true; | ||
641 | + updateVehicleInfo(this.editVehicleInfoForm).then((response) => { | ||
642 | + let res = response.data; | ||
643 | + if (res.code !== '200') { | ||
644 | + //关闭加载 | ||
645 | + this.editLoading = false; | ||
646 | + return this.$message.error('修改车辆信息,失败'); | ||
647 | + } | ||
648 | + //关闭加载 | ||
649 | + this.editLoading = false; | ||
650 | + this.$message.success('修改车辆信息,成功!'); | ||
651 | + //关闭编辑车辆信息对话框 | ||
652 | + this.editDialogVisible = false; | ||
653 | + //刷新车辆信息列表 | ||
654 | + this.getVehicleInfoList(); | ||
655 | + }).catch(error => { | ||
656 | + this.editLoading = false; | ||
657 | + this.$message.error(error.toString()); | ||
658 | + }); | ||
659 | + }) | ||
660 | + }, | ||
661 | + | ||
662 | + /** | ||
663 | + * 添加车辆信息对话框,关闭时,重置对话框 | ||
664 | + */ | ||
665 | + addVehicleInfoDialogClosed() { | ||
666 | + this.$refs.addVehicleInfoFormRef.resetFields(); | ||
667 | + }, | ||
668 | + /** | ||
669 | + * 编辑车辆信息对话框,关闭时,重置对话框 | ||
670 | + */ | ||
671 | + editVehicleInfoDialogClosed() { | ||
672 | + this.$refs.editVehicleInfoFormRef.resetFields(); | ||
673 | + }, | ||
674 | + /** | ||
675 | + * 打开编辑车辆信息对话框 | ||
676 | + */ | ||
677 | + showEditDialogVisible(index, row) { | ||
678 | + this.editVehicleInfoForm = Object.assign({}, row); | ||
679 | + this.editDialogVisible = true; | ||
680 | + }, | ||
681 | + /** | ||
682 | + * 监听pageSize改变的事件 | ||
683 | + */ | ||
684 | + handleSizeChange(newSize) { | ||
685 | + this.queryInfo.pageSize = newSize; | ||
686 | + //刷新车辆信息列表 | ||
687 | + this.getVehicleInfoList(); | ||
688 | + | ||
689 | + }, | ||
690 | + /** | ||
691 | + * 监听当前页码值改变的事件 | ||
692 | + */ | ||
693 | + handleCurrentChange(newPage) { | ||
694 | + this.queryInfo.pageNum = newPage; | ||
695 | + //刷新车辆信息列表 | ||
696 | + this.getVehicleInfoList(); | ||
697 | + }, | ||
698 | + } | ||
699 | + } | ||
700 | +</script> | ||
701 | + | ||
702 | +<style scoped> | ||
703 | + | ||
704 | +</style> |
-
请 注册 或 登录 后发表评论