From cc2a265e44cabc6e3a9c5f96cde80a9e777f88b6 Mon Sep 17 00:00:00 2001 From: mrz <17966059@qq.com> Date: Tue, 22 Mar 2022 16:20:53 +0800 Subject: [PATCH] 用vuex接管用户信息的存取 --- src/api/base.js | 8 ++++---- src/api/dispatch_api.js | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ src/common/init/sys_init.js | 1 + src/components/ICON.vue | 394 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/NavMenu/index.vue | 2 +- src/routes.js | 22 +++++++++++++++++++--- src/views/HomeNew.vue | 44 ++++++++++++++++++++++++++++++++------------ src/views/Login.vue | 15 ++++++++++----- src/views/dispatch/Dispatch.vue | 725 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/dispatch/DispatchNode.vue | 936 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/dispatch/DriverInfo.vue | 654 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/dispatch/VehicleInfo.vue | 704 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/nav1/perm.vue | 36 ++++++++++++++++++++---------------- src/views/nav1/user.vue | 337 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------------------------------------------------------------------------------------------------------------- src/views/nav3/Dispatch.vue | 725 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- src/views/nav3/DriverInfo.vue | 654 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ src/views/nav3/VehicleInfo.vue | 704 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- src/views/transit/transit.vue | 41 +++++++++++++++++++++++++++++++++++++---- src/vuex/actions.js | 4 ++++ src/vuex/getters.js | 4 ++++ src/vuex/store.js | 22 +++++++++++++++++++--- 21 files changed, 3789 insertions(+), 2291 deletions(-) create mode 100644 src/api/dispatch_api.js create mode 100644 src/components/ICON.vue create mode 100644 src/views/dispatch/Dispatch.vue create mode 100644 src/views/dispatch/DispatchNode.vue create mode 100644 src/views/dispatch/DriverInfo.vue create mode 100644 src/views/dispatch/VehicleInfo.vue delete mode 100644 src/views/nav3/Dispatch.vue delete mode 100644 src/views/nav3/DriverInfo.vue delete mode 100644 src/views/nav3/VehicleInfo.vue diff --git a/src/api/base.js b/src/api/base.js index 1dcf325..120f35e 100644 --- a/src/api/base.js +++ b/src/api/base.js @@ -7,10 +7,10 @@ function getusername(){ let user = JSON.parse(sessionStorage.getItem('user')); return user; }else { - Message({ - message:"未查询到用户缓存名称", - type:"error", - }); + // Message({ + // message:"未查询到用户缓存名称", + // type:"error", + // }); return { username:"" }; diff --git a/src/api/dispatch_api.js b/src/api/dispatch_api.js new file mode 100644 index 0000000..9229c2f --- /dev/null +++ b/src/api/dispatch_api.js @@ -0,0 +1,48 @@ +import http from './http.js' + +let baseUrl = 'dispatch-system/dispatch' +// let baseUrl = 'http://127.0.0.1:9999/dispatch' +/*用户端,调度车辆*/ +export const dispatch = params =>{return http.post(`${baseUrl}/dispatch`, params);}; +/*用户端,取消车辆调度*/ +export const cancel = params =>{return http.put(`${baseUrl}/cancel`, params);}; +/*用户端,获取用户信息*/ +export const getUser = params =>{return http.get(`${baseUrl}/user/getUser`, params);}; + +/* 管理员端,调度记录,开始任务 */ +export const startTask = params =>{return http.put(`${baseUrl}/startTask`, params);}; +/* 管理员端,调度记录,结束任务 */ +export const completeTask = params =>{return http.put(`${baseUrl}/completeTask`, params);}; + +/*用户端,管理员端调度记录,查询车辆调度记录*/ +export const selectDispatchNoteList = params =>{return http.get(`${baseUrl}/dispatchNote/selectDispatchNoteList`, params);}; +/*管理员端,调度记录,增加车辆调度记录*/ +export const insertDispatchNote = params =>{return http.post(`${baseUrl}/dispatchNote/insertDispatchNote`, params);}; +/*管理员端,调度记录,编辑车辆调度记录*/ +export const updateDispatchNote = params =>{return http.put(`${baseUrl}/dispatchNote/updateDispatchNote`, params);}; +/*管理员端,调度记录,删除车辆调度记录*/ +export const deleteDispatchNote = params =>{return http.del(`${baseUrl}/dispatchNote/deleteDispatchNote`, params);}; +/*管理员端,调度记录,批量删除车辆调度记录*/ +export const batchRemoveDispatchNode = params =>{return http.get(`${baseUrl}/dispatchNote/batchRemove`, params);}; + +/*管理员端,车辆信息,查询车辆信息*/ +export const selectVehicleInfoList = params =>{return http.get(`${baseUrl}/vehicleInfo/selectVehicleInfoList`, params);}; +/*管理员端,车辆信息,新增车辆信息*/ +export const insertVehicleInfo = params =>{return http.post(`${baseUrl}/vehicleInfo/insertVehicleInfo`, params);}; +/*管理员端,车辆信息,修改车辆信息*/ +export const updateVehicleInfo = params =>{return http.put(`${baseUrl}/vehicleInfo/updateVehicleInfo`, params);}; +/*管理员端,车辆信息,删除车辆信息*/ +export const deleteVehicleInfo = params =>{return http.del(`${baseUrl}/vehicleInfo/deleteVehicleInfo`, params);}; +/*管理员端,车辆信息,批量删除车辆信息*/ +export const batchRemoveVehicleInfo= params =>{return http.get(`${baseUrl}/vehicleInfo/batchRemove`, params);}; + +/*管理员端,驾驶员信息,查询驾驶员信息*/ +export const selectDriverInfoList = params =>{return http.get(`${baseUrl}/driverInfo/selectDriverInfoList`, params);}; +/*管理员端,驾驶员信息,新增驾驶员信息*/ +export const insertDriverInfo = params =>{return http.post(`${baseUrl}/driverInfo/insertDriverInfo`, params);}; +/*管理员端,驾驶员信息,修改驾驶员信息*/ +export const updateDriverInfo = params =>{return http.put(`${baseUrl}/driverInfo/updateDriverInfo`, params);}; +/*管理员端,驾驶员信息,删除驾驶员信息*/ +export const deleteDriverInfo = params =>{return http.del(`${baseUrl}/driverInfo/deleteDriverInfo`, params);}; +/*管理员端,驾驶员信息,批量删除驾驶员信息*/ +export const batchRemoveDriverInfo= params =>{return http.get(`${baseUrl}/driverInfo/batchRemove`, params);}; diff --git a/src/common/init/sys_init.js b/src/common/init/sys_init.js index 55f4dc0..290f062 100644 --- a/src/common/init/sys_init.js +++ b/src/common/init/sys_init.js @@ -91,6 +91,7 @@ var axois_init = { sessionStorage.removeItem('user'); sessionStorage.removeItem('menu'); sessionStorage.removeItem('token'); + axios.defaults.headers.common['Authorization'] = undefined; next() }else{ let user = JSON.parse(sessionStorage.getItem('user')); diff --git a/src/components/ICON.vue b/src/components/ICON.vue new file mode 100644 index 0000000..e60bef4 --- /dev/null +++ b/src/components/ICON.vue @@ -0,0 +1,394 @@ +<template> + <div class="myicons"> + <ul class="icon-list"> + <li><span><i class="el-icon-platform-eleme"></i><span class="icon-name">el-icon-platform-eleme</span></span> + </li> + <li><span><i class="el-icon-eleme"></i><span class="icon-name">el-icon-eleme</span></span></li> + <li><span><i class="el-icon-delete-solid"></i><span class="icon-name">el-icon-delete-solid</span></span> + </li> + <li><span><i class="el-icon-delete"></i><span class="icon-name">el-icon-delete</span></span></li> + <li><span><i class="el-icon-s-tools"></i><span class="icon-name">el-icon-s-tools</span></span></li> + <li><span><i class="el-icon-setting"></i><span class="icon-name">el-icon-setting</span></span></li> + <li><span><i class="el-icon-user-solid"></i><span class="icon-name">el-icon-user-solid</span></span></li> + <li><span><i class="el-icon-user"></i><span class="icon-name">el-icon-user</span></span></li> + <li><span><i class="el-icon-phone"></i><span class="icon-name">el-icon-phone</span></span></li> + <li><span><i class="el-icon-phone-outline"></i><span class="icon-name">el-icon-phone-outline</span></span> + </li> + <li><span><i class="el-icon-more"></i><span class="icon-name">el-icon-more</span></span></li> + <li><span><i class="el-icon-more-outline"></i><span class="icon-name">el-icon-more-outline</span></span> + </li> + <li><span><i class="el-icon-star-on"></i><span class="icon-name">el-icon-star-on</span></span></li> + <li><span><i class="el-icon-star-off"></i><span class="icon-name">el-icon-star-off</span></span></li> + <li><span><i class="el-icon-s-goods"></i><span class="icon-name">el-icon-s-goods</span></span></li> + <li><span><i class="el-icon-goods"></i><span class="icon-name">el-icon-goods</span></span></li> + <li><span><i class="el-icon-warning"></i><span class="icon-name">el-icon-warning</span></span></li> + <li><span><i class="el-icon-warning-outline"></i><span + class="icon-name">el-icon-warning-outline</span></span></li> + <li><span><i class="el-icon-question"></i><span class="icon-name">el-icon-question</span></span></li> + <li><span><i class="el-icon-info"></i><span class="icon-name">el-icon-info</span></span></li> + <li><span><i class="el-icon-remove"></i><span class="icon-name">el-icon-remove</span></span></li> + <li><span><i class="el-icon-circle-plus"></i><span class="icon-name">el-icon-circle-plus</span></span></li> + <li><span><i class="el-icon-success"></i><span class="icon-name">el-icon-success</span></span></li> + <li><span><i class="el-icon-error"></i><span class="icon-name">el-icon-error</span></span></li> + <li><span><i class="el-icon-zoom-in"></i><span class="icon-name">el-icon-zoom-in</span></span></li> + <li><span><i class="el-icon-zoom-out"></i><span class="icon-name">el-icon-zoom-out</span></span></li> + <li><span><i class="el-icon-remove-outline"></i><span class="icon-name">el-icon-remove-outline</span></span> + </li> + <li><span><i class="el-icon-circle-plus-outline"></i><span + class="icon-name">el-icon-circle-plus-outline</span></span></li> + <li><span><i class="el-icon-circle-check"></i><span class="icon-name">el-icon-circle-check</span></span> + </li> + <li><span><i class="el-icon-circle-close"></i><span class="icon-name">el-icon-circle-close</span></span> + </li> + <li><span><i class="el-icon-s-help"></i><span class="icon-name">el-icon-s-help</span></span></li> + <li><span><i class="el-icon-help"></i><span class="icon-name">el-icon-help</span></span></li> + <li><span><i class="el-icon-minus"></i><span class="icon-name">el-icon-minus</span></span></li> + <li><span><i class="el-icon-plus"></i><span class="icon-name">el-icon-plus</span></span></li> + <li><span><i class="el-icon-check"></i><span class="icon-name">el-icon-check</span></span></li> + <li><span><i class="el-icon-close"></i><span class="icon-name">el-icon-close</span></span></li> + <li><span><i class="el-icon-picture"></i><span class="icon-name">el-icon-picture</span></span></li> + <li><span><i class="el-icon-picture-outline"></i><span + class="icon-name">el-icon-picture-outline</span></span></li> + <li><span><i class="el-icon-picture-outline-round"></i><span + class="icon-name">el-icon-picture-outline-round</span></span></li> + <li><span><i class="el-icon-upload"></i><span class="icon-name">el-icon-upload</span></span></li> + <li><span><i class="el-icon-upload2"></i><span class="icon-name">el-icon-upload2</span></span></li> + <li><span><i class="el-icon-download"></i><span class="icon-name">el-icon-download</span></span></li> + <li><span><i class="el-icon-camera-solid"></i><span class="icon-name">el-icon-camera-solid</span></span> + </li> + <li><span><i class="el-icon-camera"></i><span class="icon-name">el-icon-camera</span></span></li> + <li><span><i class="el-icon-video-camera-solid"></i><span + class="icon-name">el-icon-video-camera-solid</span></span></li> + <li><span><i class="el-icon-video-camera"></i><span class="icon-name">el-icon-video-camera</span></span> + </li> + <li><span><i class="el-icon-message-solid"></i><span class="icon-name">el-icon-message-solid</span></span> + </li> + <li><span><i class="el-icon-bell"></i><span class="icon-name">el-icon-bell</span></span></li> + <li><span><i class="el-icon-s-cooperation"></i><span class="icon-name">el-icon-s-cooperation</span></span> + </li> + <li><span><i class="el-icon-s-order"></i><span class="icon-name">el-icon-s-order</span></span></li> + <li><span><i class="el-icon-s-platform"></i><span class="icon-name">el-icon-s-platform</span></span></li> + <li><span><i class="el-icon-s-fold"></i><span class="icon-name">el-icon-s-fold</span></span></li> + <li><span><i class="el-icon-s-unfold"></i><span class="icon-name">el-icon-s-unfold</span></span></li> + <li><span><i class="el-icon-s-operation"></i><span class="icon-name">el-icon-s-operation</span></span></li> + <li><span><i class="el-icon-s-promotion"></i><span class="icon-name">el-icon-s-promotion</span></span></li> + <li><span><i class="el-icon-s-home"></i><span class="icon-name">el-icon-s-home</span></span></li> + <li><span><i class="el-icon-s-release"></i><span class="icon-name">el-icon-s-release</span></span></li> + <li><span><i class="el-icon-s-ticket"></i><span class="icon-name">el-icon-s-ticket</span></span></li> + <li><span><i class="el-icon-s-management"></i><span class="icon-name">el-icon-s-management</span></span> + </li> + <li><span><i class="el-icon-s-open"></i><span class="icon-name">el-icon-s-open</span></span></li> + <li><span><i class="el-icon-s-shop"></i><span class="icon-name">el-icon-s-shop</span></span></li> + <li><span><i class="el-icon-s-marketing"></i><span class="icon-name">el-icon-s-marketing</span></span></li> + <li><span><i class="el-icon-s-flag"></i><span class="icon-name">el-icon-s-flag</span></span></li> + <li><span><i class="el-icon-s-comment"></i><span class="icon-name">el-icon-s-comment</span></span></li> + <li><span><i class="el-icon-s-finance"></i><span class="icon-name">el-icon-s-finance</span></span></li> + <li><span><i class="el-icon-s-claim"></i><span class="icon-name">el-icon-s-claim</span></span></li> + <li><span><i class="el-icon-s-custom"></i><span class="icon-name">el-icon-s-custom</span></span></li> + <li><span><i class="el-icon-s-opportunity"></i><span class="icon-name">el-icon-s-opportunity</span></span> + </li> + <li><span><i class="el-icon-s-data"></i><span class="icon-name">el-icon-s-data</span></span></li> + <li><span><i class="el-icon-s-check"></i><span class="icon-name">el-icon-s-check</span></span></li> + <li><span><i class="el-icon-s-grid"></i><span class="icon-name">el-icon-s-grid</span></span></li> + <li><span><i class="el-icon-menu"></i><span class="icon-name">el-icon-menu</span></span></li> + <li><span><i class="el-icon-share"></i><span class="icon-name">el-icon-share</span></span></li> + <li><span><i class="el-icon-d-caret"></i><span class="icon-name">el-icon-d-caret</span></span></li> + <li><span><i class="el-icon-caret-left"></i><span class="icon-name">el-icon-caret-left</span></span></li> + <li><span><i class="el-icon-caret-right"></i><span class="icon-name">el-icon-caret-right</span></span></li> + <li><span><i class="el-icon-caret-bottom"></i><span class="icon-name">el-icon-caret-bottom</span></span> + </li> + <li><span><i class="el-icon-caret-top"></i><span class="icon-name">el-icon-caret-top</span></span></li> + <li><span><i class="el-icon-bottom-left"></i><span class="icon-name">el-icon-bottom-left</span></span></li> + <li><span><i class="el-icon-bottom-right"></i><span class="icon-name">el-icon-bottom-right</span></span> + </li> + <li><span><i class="el-icon-back"></i><span class="icon-name">el-icon-back</span></span></li> + <li><span><i class="el-icon-right"></i><span class="icon-name">el-icon-right</span></span></li> + <li><span><i class="el-icon-bottom"></i><span class="icon-name">el-icon-bottom</span></span></li> + <li><span><i class="el-icon-top"></i><span class="icon-name">el-icon-top</span></span></li> + <li><span><i class="el-icon-top-left"></i><span class="icon-name">el-icon-top-left</span></span></li> + <li><span><i class="el-icon-top-right"></i><span class="icon-name">el-icon-top-right</span></span></li> + <li><span><i class="el-icon-arrow-left"></i><span class="icon-name">el-icon-arrow-left</span></span></li> + <li><span><i class="el-icon-arrow-right"></i><span class="icon-name">el-icon-arrow-right</span></span></li> + <li><span><i class="el-icon-arrow-down"></i><span class="icon-name">el-icon-arrow-down</span></span></li> + <li><span><i class="el-icon-arrow-up"></i><span class="icon-name">el-icon-arrow-up</span></span></li> + <li><span><i class="el-icon-d-arrow-left"></i><span class="icon-name">el-icon-d-arrow-left</span></span> + </li> + <li><span><i class="el-icon-d-arrow-right"></i><span class="icon-name">el-icon-d-arrow-right</span></span> + </li> + <li><span><i class="el-icon-video-pause"></i><span class="icon-name">el-icon-video-pause</span></span></li> + <li><span><i class="el-icon-video-play"></i><span class="icon-name">el-icon-video-play</span></span></li> + <li><span><i class="el-icon-refresh"></i><span class="icon-name">el-icon-refresh</span></span></li> + <li><span><i class="el-icon-refresh-right"></i><span class="icon-name">el-icon-refresh-right</span></span> + </li> + <li><span><i class="el-icon-refresh-left"></i><span class="icon-name">el-icon-refresh-left</span></span> + </li> + <li><span><i class="el-icon-finished"></i><span class="icon-name">el-icon-finished</span></span></li> + <li><span><i class="el-icon-sort"></i><span class="icon-name">el-icon-sort</span></span></li> + <li><span><i class="el-icon-sort-up"></i><span class="icon-name">el-icon-sort-up</span></span></li> + <li><span><i class="el-icon-sort-down"></i><span class="icon-name">el-icon-sort-down</span></span></li> + <li><span><i class="el-icon-rank"></i><span class="icon-name">el-icon-rank</span></span></li> + <li><span><i class="el-icon-loading"></i><span class="icon-name">el-icon-loading</span></span></li> + <li><span><i class="el-icon-view"></i><span class="icon-name">el-icon-view</span></span></li> + <li><span><i class="el-icon-c-scale-to-original"></i><span + class="icon-name">el-icon-c-scale-to-original</span></span></li> + <li><span><i class="el-icon-date"></i><span class="icon-name">el-icon-date</span></span></li> + <li><span><i class="el-icon-edit"></i><span class="icon-name">el-icon-edit</span></span></li> + <li><span><i class="el-icon-edit-outline"></i><span class="icon-name">el-icon-edit-outline</span></span> + </li> + <li><span><i class="el-icon-folder"></i><span class="icon-name">el-icon-folder</span></span></li> + <li><span><i class="el-icon-folder-opened"></i><span class="icon-name">el-icon-folder-opened</span></span> + </li> + <li><span><i class="el-icon-folder-add"></i><span class="icon-name">el-icon-folder-add</span></span></li> + <li><span><i class="el-icon-folder-remove"></i><span class="icon-name">el-icon-folder-remove</span></span> + </li> + <li><span><i class="el-icon-folder-delete"></i><span class="icon-name">el-icon-folder-delete</span></span> + </li> + <li><span><i class="el-icon-folder-checked"></i><span class="icon-name">el-icon-folder-checked</span></span> + </li> + <li><span><i class="el-icon-tickets"></i><span class="icon-name">el-icon-tickets</span></span></li> + <li><span><i class="el-icon-document-remove"></i><span + class="icon-name">el-icon-document-remove</span></span></li> + <li><span><i class="el-icon-document-delete"></i><span + class="icon-name">el-icon-document-delete</span></span></li> + <li><span><i class="el-icon-document-copy"></i><span class="icon-name">el-icon-document-copy</span></span> + </li> + <li><span><i class="el-icon-document-checked"></i><span + class="icon-name">el-icon-document-checked</span></span></li> + <li><span><i class="el-icon-document"></i><span class="icon-name">el-icon-document</span></span></li> + <li><span><i class="el-icon-document-add"></i><span class="icon-name">el-icon-document-add</span></span> + </li> + <li><span><i class="el-icon-printer"></i><span class="icon-name">el-icon-printer</span></span></li> + <li><span><i class="el-icon-paperclip"></i><span class="icon-name">el-icon-paperclip</span></span></li> + <li><span><i class="el-icon-takeaway-box"></i><span class="icon-name">el-icon-takeaway-box</span></span> + </li> + <li><span><i class="el-icon-search"></i><span class="icon-name">el-icon-search</span></span></li> + <li><span><i class="el-icon-monitor"></i><span class="icon-name">el-icon-monitor</span></span></li> + <li><span><i class="el-icon-attract"></i><span class="icon-name">el-icon-attract</span></span></li> + <li><span><i class="el-icon-mobile"></i><span class="icon-name">el-icon-mobile</span></span></li> + <li><span><i class="el-icon-scissors"></i><span class="icon-name">el-icon-scissors</span></span></li> + <li><span><i class="el-icon-umbrella"></i><span class="icon-name">el-icon-umbrella</span></span></li> + <li><span><i class="el-icon-headset"></i><span class="icon-name">el-icon-headset</span></span></li> + <li><span><i class="el-icon-brush"></i><span class="icon-name">el-icon-brush</span></span></li> + <li><span><i class="el-icon-mouse"></i><span class="icon-name">el-icon-mouse</span></span></li> + <li><span><i class="el-icon-coordinate"></i><span class="icon-name">el-icon-coordinate</span></span></li> + <li><span><i class="el-icon-magic-stick"></i><span class="icon-name">el-icon-magic-stick</span></span></li> + <li><span><i class="el-icon-reading"></i><span class="icon-name">el-icon-reading</span></span></li> + <li><span><i class="el-icon-data-line"></i><span class="icon-name">el-icon-data-line</span></span></li> + <li><span><i class="el-icon-data-board"></i><span class="icon-name">el-icon-data-board</span></span></li> + <li><span><i class="el-icon-pie-chart"></i><span class="icon-name">el-icon-pie-chart</span></span></li> + <li><span><i class="el-icon-data-analysis"></i><span class="icon-name">el-icon-data-analysis</span></span> + </li> + <li><span><i class="el-icon-collection-tag"></i><span class="icon-name">el-icon-collection-tag</span></span> + </li> + <li><span><i class="el-icon-film"></i><span class="icon-name">el-icon-film</span></span></li> + <li><span><i class="el-icon-suitcase"></i><span class="icon-name">el-icon-suitcase</span></span></li> + <li><span><i class="el-icon-suitcase-1"></i><span class="icon-name">el-icon-suitcase-1</span></span></li> + <li><span><i class="el-icon-receiving"></i><span class="icon-name">el-icon-receiving</span></span></li> + <li><span><i class="el-icon-collection"></i><span class="icon-name">el-icon-collection</span></span></li> + <li><span><i class="el-icon-files"></i><span class="icon-name">el-icon-files</span></span></li> + <li><span><i class="el-icon-notebook-1"></i><span class="icon-name">el-icon-notebook-1</span></span></li> + <li><span><i class="el-icon-notebook-2"></i><span class="icon-name">el-icon-notebook-2</span></span></li> + <li><span><i class="el-icon-toilet-paper"></i><span class="icon-name">el-icon-toilet-paper</span></span> + </li> + <li><span><i class="el-icon-office-building"></i><span + class="icon-name">el-icon-office-building</span></span></li> + <li><span><i class="el-icon-school"></i><span class="icon-name">el-icon-school</span></span></li> + <li><span><i class="el-icon-table-lamp"></i><span class="icon-name">el-icon-table-lamp</span></span></li> + <li><span><i class="el-icon-house"></i><span class="icon-name">el-icon-house</span></span></li> + <li><span><i class="el-icon-no-smoking"></i><span class="icon-name">el-icon-no-smoking</span></span></li> + <li><span><i class="el-icon-smoking"></i><span class="icon-name">el-icon-smoking</span></span></li> + <li><span><i class="el-icon-shopping-cart-full"></i><span + class="icon-name">el-icon-shopping-cart-full</span></span></li> + <li><span><i class="el-icon-shopping-cart-1"></i><span + class="icon-name">el-icon-shopping-cart-1</span></span></li> + <li><span><i class="el-icon-shopping-cart-2"></i><span + class="icon-name">el-icon-shopping-cart-2</span></span></li> + <li><span><i class="el-icon-shopping-bag-1"></i><span class="icon-name">el-icon-shopping-bag-1</span></span> + </li> + <li><span><i class="el-icon-shopping-bag-2"></i><span class="icon-name">el-icon-shopping-bag-2</span></span> + </li> + <li><span><i class="el-icon-sold-out"></i><span class="icon-name">el-icon-sold-out</span></span></li> + <li><span><i class="el-icon-sell"></i><span class="icon-name">el-icon-sell</span></span></li> + <li><span><i class="el-icon-present"></i><span class="icon-name">el-icon-present</span></span></li> + <li><span><i class="el-icon-box"></i><span class="icon-name">el-icon-box</span></span></li> + <li><span><i class="el-icon-bank-card"></i><span class="icon-name">el-icon-bank-card</span></span></li> + <li><span><i class="el-icon-money"></i><span class="icon-name">el-icon-money</span></span></li> + <li><span><i class="el-icon-coin"></i><span class="icon-name">el-icon-coin</span></span></li> + <li><span><i class="el-icon-wallet"></i><span class="icon-name">el-icon-wallet</span></span></li> + <li><span><i class="el-icon-discount"></i><span class="icon-name">el-icon-discount</span></span></li> + <li><span><i class="el-icon-price-tag"></i><span class="icon-name">el-icon-price-tag</span></span></li> + <li><span><i class="el-icon-news"></i><span class="icon-name">el-icon-news</span></span></li> + <li><span><i class="el-icon-guide"></i><span class="icon-name">el-icon-guide</span></span></li> + <li><span><i class="el-icon-male"></i><span class="icon-name">el-icon-male</span></span></li> + <li><span><i class="el-icon-female"></i><span class="icon-name">el-icon-female</span></span></li> + <li><span><i class="el-icon-thumb"></i><span class="icon-name">el-icon-thumb</span></span></li> + <li><span><i class="el-icon-cpu"></i><span class="icon-name">el-icon-cpu</span></span></li> + <li><span><i class="el-icon-link"></i><span class="icon-name">el-icon-link</span></span></li> + <li><span><i class="el-icon-connection"></i><span class="icon-name">el-icon-connection</span></span></li> + <li><span><i class="el-icon-open"></i><span class="icon-name">el-icon-open</span></span></li> + <li><span><i class="el-icon-turn-off"></i><span class="icon-name">el-icon-turn-off</span></span></li> + <li><span><i class="el-icon-set-up"></i><span class="icon-name">el-icon-set-up</span></span></li> + <li><span><i class="el-icon-chat-round"></i><span class="icon-name">el-icon-chat-round</span></span></li> + <li><span><i class="el-icon-chat-line-round"></i><span + class="icon-name">el-icon-chat-line-round</span></span></li> + <li><span><i class="el-icon-chat-square"></i><span class="icon-name">el-icon-chat-square</span></span></li> + <li><span><i class="el-icon-chat-dot-round"></i><span class="icon-name">el-icon-chat-dot-round</span></span> + </li> + <li><span><i class="el-icon-chat-dot-square"></i><span + class="icon-name">el-icon-chat-dot-square</span></span></li> + <li><span><i class="el-icon-chat-line-square"></i><span + class="icon-name">el-icon-chat-line-square</span></span></li> + <li><span><i class="el-icon-message"></i><span class="icon-name">el-icon-message</span></span></li> + <li><span><i class="el-icon-postcard"></i><span class="icon-name">el-icon-postcard</span></span></li> + <li><span><i class="el-icon-position"></i><span class="icon-name">el-icon-position</span></span></li> + <li><span><i class="el-icon-turn-off-microphone"></i><span + class="icon-name">el-icon-turn-off-microphone</span></span></li> + <li><span><i class="el-icon-microphone"></i><span class="icon-name">el-icon-microphone</span></span></li> + <li><span><i class="el-icon-close-notification"></i><span + class="icon-name">el-icon-close-notification</span></span></li> + <li><span><i class="el-icon-bangzhu"></i><span class="icon-name">el-icon-bangzhu</span></span></li> + <li><span><i class="el-icon-time"></i><span class="icon-name">el-icon-time</span></span></li> + <li><span><i class="el-icon-odometer"></i><span class="icon-name">el-icon-odometer</span></span></li> + <li><span><i class="el-icon-crop"></i><span class="icon-name">el-icon-crop</span></span></li> + <li><span><i class="el-icon-aim"></i><span class="icon-name">el-icon-aim</span></span></li> + <li><span><i class="el-icon-switch-button"></i><span class="icon-name">el-icon-switch-button</span></span> + </li> + <li><span><i class="el-icon-full-screen"></i><span class="icon-name">el-icon-full-screen</span></span></li> + <li><span><i class="el-icon-copy-document"></i><span class="icon-name">el-icon-copy-document</span></span> + </li> + <li><span><i class="el-icon-mic"></i><span class="icon-name">el-icon-mic</span></span></li> + <li><span><i class="el-icon-stopwatch"></i><span class="icon-name">el-icon-stopwatch</span></span></li> + <li><span><i class="el-icon-medal-1"></i><span class="icon-name">el-icon-medal-1</span></span></li> + <li><span><i class="el-icon-medal"></i><span class="icon-name">el-icon-medal</span></span></li> + <li><span><i class="el-icon-trophy"></i><span class="icon-name">el-icon-trophy</span></span></li> + <li><span><i class="el-icon-trophy-1"></i><span class="icon-name">el-icon-trophy-1</span></span></li> + <li><span><i class="el-icon-first-aid-kit"></i><span class="icon-name">el-icon-first-aid-kit</span></span> + </li> + <li><span><i class="el-icon-discover"></i><span class="icon-name">el-icon-discover</span></span></li> + <li><span><i class="el-icon-place"></i><span class="icon-name">el-icon-place</span></span></li> + <li><span><i class="el-icon-location"></i><span class="icon-name">el-icon-location</span></span></li> + <li><span><i class="el-icon-location-outline"></i><span + class="icon-name">el-icon-location-outline</span></span></li> + <li><span><i class="el-icon-location-information"></i><span + class="icon-name">el-icon-location-information</span></span></li> + <li><span><i class="el-icon-add-location"></i><span class="icon-name">el-icon-add-location</span></span> + </li> + <li><span><i class="el-icon-delete-location"></i><span + class="icon-name">el-icon-delete-location</span></span></li> + <li><span><i class="el-icon-map-location"></i><span class="icon-name">el-icon-map-location</span></span> + </li> + <li><span><i class="el-icon-alarm-clock"></i><span class="icon-name">el-icon-alarm-clock</span></span></li> + <li><span><i class="el-icon-timer"></i><span class="icon-name">el-icon-timer</span></span></li> + <li><span><i class="el-icon-watch-1"></i><span class="icon-name">el-icon-watch-1</span></span></li> + <li><span><i class="el-icon-watch"></i><span class="icon-name">el-icon-watch</span></span></li> + <li><span><i class="el-icon-lock"></i><span class="icon-name">el-icon-lock</span></span></li> + <li><span><i class="el-icon-unlock"></i><span class="icon-name">el-icon-unlock</span></span></li> + <li><span><i class="el-icon-key"></i><span class="icon-name">el-icon-key</span></span></li> + <li><span><i class="el-icon-service"></i><span class="icon-name">el-icon-service</span></span></li> + <li><span><i class="el-icon-mobile-phone"></i><span class="icon-name">el-icon-mobile-phone</span></span> + </li> + <li><span><i class="el-icon-bicycle"></i><span class="icon-name">el-icon-bicycle</span></span></li> + <li><span><i class="el-icon-truck"></i><span class="icon-name">el-icon-truck</span></span></li> + <li><span><i class="el-icon-ship"></i><span class="icon-name">el-icon-ship</span></span></li> + <li><span><i class="el-icon-basketball"></i><span class="icon-name">el-icon-basketball</span></span></li> + <li><span><i class="el-icon-football"></i><span class="icon-name">el-icon-football</span></span></li> + <li><span><i class="el-icon-soccer"></i><span class="icon-name">el-icon-soccer</span></span></li> + <li><span><i class="el-icon-baseball"></i><span class="icon-name">el-icon-baseball</span></span></li> + <li><span><i class="el-icon-wind-power"></i><span class="icon-name">el-icon-wind-power</span></span></li> + <li><span><i class="el-icon-light-rain"></i><span class="icon-name">el-icon-light-rain</span></span></li> + <li><span><i class="el-icon-lightning"></i><span class="icon-name">el-icon-lightning</span></span></li> + <li><span><i class="el-icon-heavy-rain"></i><span class="icon-name">el-icon-heavy-rain</span></span></li> + <li><span><i class="el-icon-sunrise"></i><span class="icon-name">el-icon-sunrise</span></span></li> + <li><span><i class="el-icon-sunrise-1"></i><span class="icon-name">el-icon-sunrise-1</span></span></li> + <li><span><i class="el-icon-sunset"></i><span class="icon-name">el-icon-sunset</span></span></li> + <li><span><i class="el-icon-sunny"></i><span class="icon-name">el-icon-sunny</span></span></li> + <li><span><i class="el-icon-cloudy"></i><span class="icon-name">el-icon-cloudy</span></span></li> + <li><span><i class="el-icon-partly-cloudy"></i><span class="icon-name">el-icon-partly-cloudy</span></span> + </li> + <li><span><i class="el-icon-cloudy-and-sunny"></i><span + class="icon-name">el-icon-cloudy-and-sunny</span></span></li> + <li><span><i class="el-icon-moon"></i><span class="icon-name">el-icon-moon</span></span></li> + <li><span><i class="el-icon-moon-night"></i><span class="icon-name">el-icon-moon-night</span></span></li> + <li><span><i class="el-icon-dish"></i><span class="icon-name">el-icon-dish</span></span></li> + <li><span><i class="el-icon-dish-1"></i><span class="icon-name">el-icon-dish-1</span></span></li> + <li><span><i class="el-icon-food"></i><span class="icon-name">el-icon-food</span></span></li> + <li><span><i class="el-icon-chicken"></i><span class="icon-name">el-icon-chicken</span></span></li> + <li><span><i class="el-icon-fork-spoon"></i><span class="icon-name">el-icon-fork-spoon</span></span></li> + <li><span><i class="el-icon-knife-fork"></i><span class="icon-name">el-icon-knife-fork</span></span></li> + <li><span><i class="el-icon-burger"></i><span class="icon-name">el-icon-burger</span></span></li> + <li><span><i class="el-icon-tableware"></i><span class="icon-name">el-icon-tableware</span></span></li> + <li><span><i class="el-icon-sugar"></i><span class="icon-name">el-icon-sugar</span></span></li> + <li><span><i class="el-icon-dessert"></i><span class="icon-name">el-icon-dessert</span></span></li> + <li><span><i class="el-icon-ice-cream"></i><span class="icon-name">el-icon-ice-cream</span></span></li> + <li><span><i class="el-icon-hot-water"></i><span class="icon-name">el-icon-hot-water</span></span></li> + <li><span><i class="el-icon-water-cup"></i><span class="icon-name">el-icon-water-cup</span></span></li> + <li><span><i class="el-icon-coffee-cup"></i><span class="icon-name">el-icon-coffee-cup</span></span></li> + <li><span><i class="el-icon-cold-drink"></i><span class="icon-name">el-icon-cold-drink</span></span></li> + <li><span><i class="el-icon-goblet"></i><span class="icon-name">el-icon-goblet</span></span></li> + <li><span><i class="el-icon-goblet-full"></i><span class="icon-name">el-icon-goblet-full</span></span></li> + <li><span><i class="el-icon-goblet-square"></i><span class="icon-name">el-icon-goblet-square</span></span> + </li> + <li><span><i class="el-icon-goblet-square-full"></i><span + class="icon-name">el-icon-goblet-square-full</span></span></li> + <li><span><i class="el-icon-refrigerator"></i><span class="icon-name">el-icon-refrigerator</span></span> + </li> + <li><span><i class="el-icon-grape"></i><span class="icon-name">el-icon-grape</span></span></li> + <li><span><i class="el-icon-watermelon"></i><span class="icon-name">el-icon-watermelon</span></span></li> + <li><span><i class="el-icon-cherry"></i><span class="icon-name">el-icon-cherry</span></span></li> + <li><span><i class="el-icon-apple"></i><span class="icon-name">el-icon-apple</span></span></li> + <li><span><i class="el-icon-pear"></i><span class="icon-name">el-icon-pear</span></span></li> + <li><span><i class="el-icon-orange"></i><span class="icon-name">el-icon-orange</span></span></li> + <li><span><i class="el-icon-coffee"></i><span class="icon-name">el-icon-coffee</span></span></li> + <li><span><i class="el-icon-ice-tea"></i><span class="icon-name">el-icon-ice-tea</span></span></li> + <li><span><i class="el-icon-ice-drink"></i><span class="icon-name">el-icon-ice-drink</span></span></li> + <li><span><i class="el-icon-milk-tea"></i><span class="icon-name">el-icon-milk-tea</span></span></li> + <li><span><i class="el-icon-potato-strips"></i><span class="icon-name">el-icon-potato-strips</span></span> + </li> + <li><span><i class="el-icon-lollipop"></i><span class="icon-name">el-icon-lollipop</span></span></li> + <li><span><i class="el-icon-ice-cream-square"></i><span + class="icon-name">el-icon-ice-cream-square</span></span></li> + <li><span><i class="el-icon-ice-cream-round"></i><span + class="icon-name">el-icon-ice-cream-round</span></span></li> + </ul> + </div> +</template> + +<script> + export default { + name: "ICON" + } +</script> + +<style lang="scss"> + .myicons{ + ul:not(.timeline) { + margin: 10px 0; + padding: 0 0 0 20px; + font-size: 14px; + color: #5e6d82; + line-height: 2em; + } + + ul.icon-list { + overflow: hidden; + list-style: none; + padding: 0!important; + border: 1px solid #eaeefb; + border-radius: 4px; + + li { + float: left; + width: 16.66%; + text-align: center; + height: 120px; + line-height: 120px; + color: #666; + font-size: 13px; + border-right: 1px solid #eee; + border-bottom: 1px solid #eee; + margin-right: -1px; + margin-bottom: -1px; + } + } + } +</style> diff --git a/src/components/NavMenu/index.vue b/src/components/NavMenu/index.vue index 55da6de..ebb908a 100644 --- a/src/components/NavMenu/index.vue +++ b/src/components/NavMenu/index.vue @@ -4,7 +4,7 @@ background-color="#26384c" text-color="#fff" active-text-color="#ffd04b" - style="overflow-y:scroll" + style="overflow-y:scroll;border-right:none;" @open="handleopen" @close="handleclose" @select="handleselect" diff --git a/src/routes.js b/src/routes.js index 88a398e..92266d0 100755 --- a/src/routes.js +++ b/src/routes.js @@ -46,9 +46,6 @@ import airlift from './views/nav4/airlift.vue' import inquiry from './views/nav4/inquiry.vue' import Page6 from './views/nav3/Page6.vue' import Page7 from './views/nav3/Page7.vue' -import Dispatch from './views/nav3/Dispatch.vue' -import DriverInfo from './views/nav3/DriverInfo.vue' -import VehicleInfo from './views/nav3/VehicleInfo.vue' import importFFMMsg from './views/airRadioMsg/importFFMMsg.vue' import importFHLMsg from './views/airRadioMsg/importFHLMsg.vue' import importFWBMsg from './views/airRadioMsg/importFWBMsg.vue' @@ -120,6 +117,12 @@ import Webdialog from './views/bus/Webdialog.vue' //国际转运 import Transport from './views/nav4/Transport.vue' +/* 车辆调度系统 */ +import DriverInfo from "./views/dispatch/DriverInfo"; +import VehicleInfo from "./views/dispatch/VehicleInfo"; +import DispatchNode from "./views/dispatch/DispatchNode"; +import Dispatch from "./views/dispatch/Dispatch"; + let routes = [ @@ -480,6 +483,19 @@ let routes = [ {path: '/warehouse', component: Warehouse, name: '仓库管理'}, ] }, + { + path: '/', + component: Home, + name: '车辆调度管理', + iconCls: 'el-icon-truck', + children: [ + {path: '/dispatch', component: Dispatch, name: '车辆调度'}, + {path: '/dispatchNode', component: DispatchNode, name: '调度记录'}, + {path: '/vehicleInfo', component: VehicleInfo, name: '车辆信息'}, + {path: '/driverInfo', component: DriverInfo, name: '驾驶员信息'}, + // {path: '/companyInfo', component: CompanyInfo, name: '公司信息'}, + ] + }, { path: '/empt', diff --git a/src/views/HomeNew.vue b/src/views/HomeNew.vue index 6e101bd..9a16f56 100755 --- a/src/views/HomeNew.vue +++ b/src/views/HomeNew.vue @@ -1,6 +1,6 @@ <template> <el-container> - <el-aside style="width:250px;background-color: rgb(238, 241, 246)" id="l-menu"> + <el-aside style="width:250px;background-color: rgb(38, 56, 76);" id="l-menu"> <NavMenu :collapsed="collapsed"></NavMenu> </el-aside> @@ -39,6 +39,8 @@ import TabMenu from "@/components/TabMenu" import NavMenu from "@/components/NavMenu" import loginuserInfo from "@/api/base"; + import {mapActions, mapGetters} from 'vuex' + import jsutil from "@/common/js/util"; export default { @@ -74,6 +76,18 @@ } }, methods: { + ...mapActions( // 语法糖 + ['setUserInfoStore','setUserMenuStore'] // 相当于this.$store.dispatch('modifyName'),提交这个方法 + ), + initUserInfo:function() { + if (jsutil.checkNull(this.getUserInfoStore.username)){ + this.sysUserName = this.getUserInfoStore.username || ''; + this.sysUserId=this.getUserInfoStore.userId||''; + this.sysUserAvatar = this.getUserInfoStore.userface || '~img/faceDefault.jpg'; + }else { + this.setUserInfoStore(loginuserInfo); + } + }, reload() { this.$nextTick(function () { this.$router.push({ @@ -102,11 +116,21 @@ this.$confirm('确认退出吗?', '提示', { //type: 'warning' }).then(() => { + this.$axios.defaults.headers.common['Authorization'] = undefined; sessionStorage.removeItem('user'); sessionStorage.removeItem('menu'); + //清空菜单 + this.setUserMenuStore([]); + this.setUserInfoStore({ + userId: 0, + username: '', + companyId: 0, + companyName: '', + realname: '', + userface: '' + }); //退出后初始化原来的路由 let sysRoutes = JSON.parse(sessionStorage.getItem('sysMenu')); - console.log(sysRoutes); _this.$router.options.routes = sysRoutes; _this.$router.push('/login'); @@ -121,23 +145,19 @@ this.collapsed=!this.collapsed; } }, + computed: { + ...mapGetters(['getUserInfoStore','getUserMenuStore']) // 动态计算属性,相当于this.$store.getters.resturantName + }, mounted() { - var _this = this; - var user = loginuserInfo; - if (user) { - this.sysUserName = user.username || ''; - this.sysUserId=user.userId||''; - - this.sysUserAvatar = user.userface || '~img/faceDefault.jpg'; - } //操作路由,判断本地存储的用户栏目列表是否存在,如果存在则加载路由 var userRouters = sessionStorage.getItem('menu'); if (userRouters) { userRouters = JSON.parse(userRouters); _this.$router.options.routes = userRouters; - console.log("home:"); - console.log(_this.$router.options.routes); } + this.$nextTick(function(){ + this.initUserInfo(); + }) }, watch: { collapsed(value) { diff --git a/src/views/Login.vue b/src/views/Login.vue index d093aec..00b4032 100755 --- a/src/views/Login.vue +++ b/src/views/Login.vue @@ -6,7 +6,7 @@ <el-input type="text" v-model="ruleForm2.account" autofocus placeholder="账号"></el-input> </el-form-item> <el-form-item prop="checkPass"> - <el-input type="password" v-model="ruleForm2.checkPass" placeholder="密码" @keyup.enter.native="handleSubmit2"></el-input> + <el-input type="password" v-model="ruleForm2.checkPass" placeholder="密码" @keyup.enter.native="handleSubmit2" show-password></el-input> </el-form-item> <!-- <el-form-item prop="checkPass">--> <!-- <el-input type="password" v-model="ruleForm2.checkPass" placeholder="密码" @keyup.enter.native="handleSubmit2"></el-input>--> @@ -38,6 +38,7 @@ import axios from 'axios' import http from '../api/http'; import {getRandCode} from '../api/user'; + import {mapActions, mapGetters} from 'vuex' //import NProgress from 'nprogress' export default { data() { @@ -46,9 +47,9 @@ fixStyle: '', logining: false, ruleForm2: { - account: 'admin', + account: '', // checkPass: 'zzairport@kako2020' - checkPass: 'vmvnv1v2VV' + checkPass: '' }, rules2: { account: [ @@ -65,13 +66,16 @@ }; }, methods: { + ...mapActions( // 语法糖 + ['setUserInfoStore'] // 相当于this.$store.dispatch('modifyName'),提交这个方法 + ), canplay() { this.vedioCanPlay = true }, handleReset2() { this.$refs.ruleForm2.resetFields(); }, - handleMenuList : function (router,menu) { + handleMenuList : function (router,menu) { var _this = this; var routerName = ""; var routerTemp = router.concat(); @@ -132,6 +136,7 @@ } else if (token) { sessionStorage.setItem('user', JSON.stringify(authentication)); sessionStorage.setItem('token','Bearer '+ token); + this.setUserInfoStore(authentication); //设置token,设置axios 基本配置,但是刷新后 这个登录保存的就没了 axios.defaults.headers.common['Authorization'] = 'Bearer '+token; //处理用户menu @@ -152,7 +157,7 @@ } }).catch(error => { this.$message({ - message: error.toString(), + message: error.toString()+"-登录验证失败", type: "error" }); this.logining = false; diff --git a/src/views/dispatch/Dispatch.vue b/src/views/dispatch/Dispatch.vue new file mode 100644 index 0000000..5e7314d --- /dev/null +++ b/src/views/dispatch/Dispatch.vue @@ -0,0 +1,725 @@ +<template> + <el-container> + <el-main> + <el-card style="background-color: #F5F7FA"> + <!-- 搜素区域 --> + <div> + <el-form :model="queryInfo" :rules="queryFormRules" ref="queryFormRef" status-icon> + <el-form-item> + <el-col :span="4"> + <el-form-item prop="gmtCreate"> + <el-date-picker v-model="queryInfo.gmtCreate" type="date" value-format="yyyy-MM-dd" + placeholder="选择创建调度时间" + style="width: 200px"></el-date-picker> + </el-form-item> + </el-col> + <el-col :span="4" style="margin-left: 50px"> + <el-form-item prop="dispatchType"> + <el-select v-model="queryInfo.dispatchType" placeholder="请选择业务类型" + style="width: 200px" + clearable> + <el-option + v-for="item in dispatchTypeList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="4" style="margin-left: 50px"> + <el-form-item prop="status"> + <el-select v-model="queryInfo.status" placeholder="记录状态" clearable + style="width:200px;margin-left: 6px"> + <el-option + v-for="item in statusList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-button type="primary" style="margin-left: 60px" + @click="getDispatchNodeList">查询调度记录 + </el-button> + <el-button type="success" style="margin-left: 15px" @click="dispatchFormVisible = true"> + 我要调度车辆 + </el-button> + </el-form-item> + </el-form> + <el-row style="margin-top: 20px;"> + </el-row> + </div> + <!--调度记录列表区域--> + <div style="margin-top: 20px;"> + <el-table :data="DispatchNoteList" border highlight-current-row v-loading="listLoading" + :row-class-name="rowStatus" + element-loading-text="拼命加载中"> + <el-table-column type="index" align="center"></el-table-column> + <el-table-column label="用户名称" prop="userName" align="center" width="100"></el-table-column> + <el-table-column label="联系方式" prop="userMobile" align="center" width="120"></el-table-column> + <el-table-column label="状态" prop="status" align="center" width="120"> + <template slot-scope="scope"> + <span v-if="scope.row.status ==='1'">完成状态</span> + <span v-if="scope.row.status ==='2'">执行状态</span> + <span v-if="scope.row.status ==='3'">取消状态</span> + <span v-if="scope.row.status ==='4'">待执行状态</span> + </template> + </el-table-column> + <el-table-column label="业务类型" prop="dispatchType" align="center" width="120"> + <template slot-scope="scope"> + <span v-if="scope.row.dispatchType ==='1'">进站送货</span> + <span v-if="scope.row.dispatchType ==='2'">出站提货</span> + <span v-if="scope.row.dispatchType ==='3'">货物调拨</span> + <span v-if="scope.row.dispatchType ==='4'">货物流转</span> + </template> + </el-table-column> + <el-table-column label="车牌号码" prop="licensePlateNumber" align="center" + width="120"></el-table-column> + <el-table-column label="车辆类型" prop="vehicleType" align="center" width="120"> + <template slot-scope="scope"> + <span v-if="scope.row.vehicleType ==='1'">重型货车</span> + <span v-if="scope.row.vehicleType ==='2'">中型货车</span> + <span v-if="scope.row.vehicleType ==='3'">轻型货车</span> + <span v-if="scope.row.vehicleType ==='4'">微型货车</span> + <span v-if="scope.row.vehicleType ==='5'">拖车</span> + <span v-if="scope.row.vehicleType ==='6'">叉车</span> + </template> + </el-table-column> + <el-table-column label="场站位置" prop="station" align="center" width="120"> + <template slot-scope="scope"> + <span v-if="scope.row.station ==='1'">西货站</span> + <span v-if="scope.row.station ==='2'">综保区</span> + <span v-if="scope.row.station ==='3'">军投</span> + <span v-if="scope.row.station ==='4'">快邮</span> + </template> + </el-table-column> + <el-table-column label="创建时间" prop="gmtCreate" align="center" width="160"></el-table-column> + <el-table-column label="开始时间" prop="beginTime" align="center" width="160"></el-table-column> + <el-table-column label="完成时间" prop="endTime" align="center" width="160"></el-table-column> + <el-table-column label="操作" width="220px" fixed="right" align="center"> + <template slot-scope="scope"> + <!--查看按钮--> + <el-tooltip effect="dark" content="查看" placement="top-start" :enterable="false"> + <el-button type="primary" icon="el-icon-edit" size="mini" + @click="showDialogVisible(scope.row)">查看 + </el-button> + </el-tooltip> + <!--取消调度按钮--> + <el-tooltip effect="dark" content="取消调度" placement="top-start" :enterable="false"> + <el-button type="danger" icon="el-icon-delete" size="mini" + :disabled="scope.row.endTime!==null && scope.row.endTime!==''" + @click="cancelDispatch(scope.row)" :loading="cancelLoading">取消调度 + </el-button> + </el-tooltip> + </template> + </el-table-column> + </el-table> + <!--分页区域--> + <div style="margin-top: 10px"> + <el-pagination + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + :current-page="this.queryInfo.pageNum" + :page-sizes="[10,20,30,50]" + :page-size="this.queryInfo.pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="total"> + </el-pagination> + </div> + </div> + </el-card> + <!-- 我要调度车辆,对话框 --> + <div> + <el-dialog + title="我要调度车辆" + :visible.sync="dispatchFormVisible" + width="50%" @close="dispatchDialogClosed"> + <!-- :rules="dispatchFormRules" ref="dispatchFormRef"--> + <el-form :model="dispatchForm" label-width="100px" status-icon + :rules="dispatchFormRules" ref="dispatchFormRef" + style="margin-left:10%;margin-right:10%;background-color: #F5F7FA"> + <br> + <el-form-item label="车辆类型:" prop="vehicleType"> + <el-select v-model="dispatchForm.vehicleType" style="width: 300px" clearable + placeholder="请选择车辆类型"> + <el-option + v-for="item in vehicleTypeList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="车辆数量:" prop="vehicleNumber"> + <el-input-number style="width: 200px" v-model="dispatchForm.vehicleNumber" + :min="1" :max="100" controls-position="right"> + </el-input-number> + <span style="margin-left:5px;font-size: 18px">辆</span> + </el-form-item> + <el-form-item label="场站位置:" prop="station"> + <el-select v-model="dispatchForm.station" style="width: 300px" clearable + placeholder="请选择场站位置"> + <el-option + v-for="item in stationList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="业务类型:" prop="dispatchType"> + <el-select v-model="dispatchForm.dispatchType" style="width: 300px;" clearable + placeholder="请选择业务类型"> + <el-option + v-for="item in dispatchTypeList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <br> + </el-form> + <!--底部按钮区域--> + <span slot="footer" class="dialog-footer"> + <el-button @click="dispatchFormVisible = false">取 消</el-button> + <el-button type="primary" @click="dispatchVehicle" :loading="dispatchLoading">确定调度车辆</el-button> + </span> + </el-dialog> + </div> + <!-- 查看调度记录,对话框 --> + <div> + <el-dialog + style="margin-top: -50px" + title="查看调度记录明细" + :visible.sync="viewDialogVisible" + text-align="center" + width="60%" @close="showDialogClosed"> + <!-- 表单显示区域 :rules="dispatchFormRules" --> + <el-form :model="showForm" ref="showFormRef" + :inline="true" align="center" + style="background-color: #F5F7FA;margin-left: 5%;margin-right: 5%"> + <div style="margin-top: -15px"> + <br> + <el-form-item label="用户名称:" prop="userName"> + <el-input v-model="showForm.userName" style="width: 200px;" size="small" + readonly></el-input> + </el-form-item> + <el-form-item label="联系方式:" prop="userMobile"> + <el-input v-model="showForm.userMobile" style="width: 200px;" size="small" + readonly></el-input> + </el-form-item> + <el-form-item label="车辆类型:" prop="vehicleType"> + <el-select v-model="showForm.vehicleType" style="width:200px" size="small" readonly + placeholder="请选择车辆类型"> + <el-option + v-for="item in vehicleTypeList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="车牌号码:" prop="licensePlateNumber"> + <el-input v-model="showForm.licensePlateNumber" style="width: 200px;" size="small" + readonly></el-input> + </el-form-item> + <el-form-item label="场站位置:" prop="station"> + <el-select v-model="showForm.station" style="width:200px" readonly size="small" + placeholder="请选择场站位置"> + <el-option + v-for="item in stationList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="业务类型:" prop="dispatchType"> + <el-select v-model="showForm.dispatchType" style="width:200px" readonly size="small" + placeholder="请选择业务类型"> + <el-option + v-for="item in dispatchTypeList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="创建时间:" prop="gmtCreate"> + <el-input v-model="showForm.gmtCreate" style="width: 200px;" size="small" + readonly></el-input> + </el-form-item> + <el-form-item label="开始时间:" prop="beginTime"> + <el-input v-model="showForm.beginTime" style="width: 200px;" size="small" + readonly></el-input> + </el-form-item> + <el-form-item label="结束时间:" prop="endTime"> + <el-input v-model="showForm.endTime" style="width: 200px;" size="small" + readonly></el-input> + </el-form-item> + <el-form-item label="记录状态:" prop="status"> + <el-select v-model="showForm.status" placeholder="记录状态" style="width:200px" size="small" + readonly> + <el-option + v-for="item in statusList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <br> + </div> + </el-form> + <!--底部按钮区域--> + <span slot="footer" class="dialog-footer"> + <el-button type="primary" @click="viewDialogVisible = false">结束查看</el-button> + </span> + </el-dialog> + </div> + </el-main> + </el-container> +</template> + +<script> + import {selectDispatchNoteList, dispatch, cancel, getUser} from '../../api/dispatch_api' + + export default { + name: 'dispatch_api', + created() { + + }, + data() { + /** + * 验证手机号的自定义规则 + */ + var userMobileValid = (rule, value, callback) => { + //验证手机号的正则表达式 + const regMobile = /^(0|86|17951)?(13[0-9]|15[0123456789]|17[678]|18[0-9]|14[57])[0-9]{8}$/; + if (regMobile.test(value)) { + //合法的手机号 + return callback(); + } + callback(new Error('请输入合法的手机号')); + }; + return { + /** + * 查询列表 + */ + queryInfo: { + //用户姓名 + userName: '', + //用户联系方式 + userMobile: '', + //记录状态 + status: '', + //调度时间 + gmtCreate: new Date(), + //业务类型 + dispatchType: '', + //当前的页数 + pageNum: 1, + //当前每页显示多少条数据 + pageSize: 10 + }, + /** + * 记录列表,总条数 + */ + total: 0, + /** + * 所有,调度记录列表 + */ + DispatchNoteList: [], + /** + * 我要调度车辆,表单 + */ + dispatchForm: { + userName: '', + userMobile: '', + //车辆数量 + vehicleNumber: 1, + //车辆类型 + vehicleType: '2', + //场站位置 + station: '1', + //调度业务类型 + dispatchType: '1' + }, + + /** + * 查看记录明细,表单 + */ + showForm: {}, + /** + * 控制添加用户对话框的显示与隐藏 + */ + dispatchFormVisible: false, + /** + * 控制查看调度记录明细,对话框的显示与隐藏 + */ + viewDialogVisible: false, + /** + * loading加载 + */ + /* 获取列表时的加载 */ + listLoading: false, + /* 调度车辆时的加载 */ + dispatchLoading: false, + /* 取消调度时的加载 */ + cancelLoading: false, + /** + * 业务类型,选项列表 + */ + dispatchTypeList: [ + { + value: '1', + label: '进站送货' + }, + { + value: '2', + label: '出站提货' + }, + { + value: '3', + label: '货物流转' + }, + { + value: '4', + label: '货物调拨' + } + ], + /** + * 车辆类型,选项列表 + */ + vehicleTypeList: [ + { + value: '1', + label: '重型货车' + }, + { + value: '2', + label: '中型货车' + }, + { + value: '3', + label: '经济货车' + }, + { + value: '4', + label: '微型货车' + }, + { + value: '5', + label: '拖车' + }, + { + value: '6', + label: '叉车' + } + ], + /** + * 记录状态,列表 + */ + statusList: [ + { + value: '1', + label: '完成状态' + }, + { + value: '2', + label: '执行状态' + }, + { + value: '3', + label: '取消状态' + }, + { + value: '4', + label: '待执行状态' + } + ], + + /** + * 场站位置,选项列表 + */ + stationList: [ + { + value: '1', + label: '西货站' + }, + { + value: '2', + label: '综保区' + }, + { + value: '3', + label: '军投' + }, + { + value: '4', + label: '快邮' + } + ], + + queryFormRules: { + userName: [ + {required: true, message: '请输入姓名', trigger: ['blur', 'change']}, + ], + userMobile: [ + {required: true, message: '请输入联系方式', trigger: ['blur', 'change']}, + {validator: userMobileValid, trigger: 'blur'} + ], + }, + /** + * 调度车辆表单的验证规则对象 + */ + dispatchFormRules: { + status: [ + {required: true, message: '请选择记录状态', trigger: ['blur', 'change']}, + ], + gmtCreate: [ + {required: true, message: '请选择创建时间', trigger: ['blur', 'change']}, + ], + endTime: [ + {required: true, message: '请选择结束时间', trigger: ['blur', 'change']}, + ], + licensePlateNumber: [ + {required: true, message: '请输入车牌号', trigger: ['blur', 'change']}, + ], + userName: [ + {required: true, message: '请输入姓名', trigger: ['blur', 'change']}, + ], + userMobile: [ + {required: true, message: '请输入联系方式', trigger: ['blur', 'change']}, + {validator: userMobileValid, trigger: 'blur'} + ], + vehicleType: [ + {required: true, message: '请选择车辆类型', trigger: ['blur', 'change']}, + + ], + vehicleNumber: [ + {required: true, message: '请选择车辆数量', trigger: ['blur', 'change']}, + ], + station: [ + {required: true, message: '请选择场站位置', trigger: ['blur', 'change']}, + ], + dispatchType: [ + {required: true, message: '请选择调度业务类型', trigger: ['blur', 'change']}, + ], + }, + } + }, + methods: { + /** + * 监听,调度车辆对话框的关闭事件 + */ + dispatchDialogClosed() { + //重置对话框 + this.$refs.dispatchFormRef.resetFields(); + }, + + /** + * 监听,查看调度记录对话框的关闭事件 + */ + showDialogClosed() { + //重置对话框 + this.$refs.showFormRef.resetFields(); + }, + + /** + * 监听pageSize改变的事件 + */ + handleSizeChange(newSize) { + this.queryInfo.pageSize = newSize; + //刷新调度记录列表 + this.getDispatchNodeList(); + }, + /** + * 监听当前页码值改变的事件 + */ + handleCurrentChange(newPage) { + this.queryInfo.pageNum = newPage; + //刷新调度记录列表 + this.getDispatchNodeList(); + }, + /** + * 打开,查看调度记录明细,对话框 + * @param row + */ + showDialogVisible(row) { + this.showForm = row; + this.viewDialogVisible = true; + }, + /** + * 用户端,获取车辆调度记录 + */ + getDispatchNodeList() { + this.listLoading = true; + selectDispatchNoteList(this.queryInfo).then((response) => { + let res = response.data; + if (res.code !== '200') { + this.listLoading = false; + return this.$message.error('获取车辆调度列表失败'); + } + // 获取车辆调度列表数据 + this.DispatchNoteList = res.data.list; + // 获取列表的总记录数 + this.total = res.data.total; + this.listLoading = false; + this.$message.success('获取车辆调度列表,成功!'); + }).catch(error => { + this.listLoading = false; + this.$message.error(error.toString()); + }); + }, + /** + * 用户端,我要调度车辆,方法 + */ + dispatchVehicle() { + this.dispatchLoading = true; + dispatch(this.dispatchForm).then((response) => { + let res = response.data; + if (res.code !== '200') { + this.dispatchLoading = false; + return this.$message.error('车辆繁忙,请稍后重试'); + } + //关闭加载 + this.dispatchLoading = false; + this.$message.success('调度车辆成功!'); + //调度成功,隐藏对话框 + this.dispatchFormVisible = false; + /* 将调度车辆信息=>查询列表 */ + // 用户名称 + this.queryInfo.userName = this.dispatchForm.userName; + // 联系方式 + this.queryInfo.userMobile = this.dispatchForm.userMobile; + // 调度业务类型 + this.queryInfo.dispatchType = this.dispatchForm.dispatchType; + // 创建时间为当前时间(需留意) + this.queryInfo.gmtCreate = new Date(); + //刷新车辆调度列表 + this.getDispatchNodeList(); + }).catch(error => { + this.dispatchLoading = false; + this.$message.error(error.toString()); + }); + }, + /** + * 用户端,取消调度车辆,方法 + */ + cancelDispatch(row) { + //弹框询问是否取消车辆调度 + this.$confirm('此操作将取消该车辆的调度, 是否继续?', '警告', { + confirmButtonText: '确定取消调度', + cancelButtonText: '取消', + type: 'warning' + } + ).then(() => { + //开启加载 + this.cancelLoading = true; + cancel(row).then((response) => { + let res = response.data; + if (res.code !== '200') { + this.cancelLoading = false; + return this.$message.error('取消车辆调度,失败!请人工介入'); + } + //关闭加载 + this.cancelLoading = false; + this.$message.success('取消调度车辆,成功!'); + //刷新车辆调度列表 + this.getDispatchNodeList(); + }).catch(error => { + //关闭加载 + this.cancelLoading = false; + this.$message.error(error.toString()); + }); + }).catch(() => { + }); + }, + /** + * 获取用户信息 + */ + getUserInfo(param) { + getUser(param).then((response) => { + let res = response.data; + if (res.code !== '200') { + return this.$message.error('网络异常,请刷新界面!'); + } + if (res.data.list.length === 0) { + return this.$message.error('网络异常,请刷新界面!'); + } + if (res.data.list[0].mobilephone === null || res.data.list[0].mobilephone === '') { + return this.$message.error('请填写您的手机号码'); + } + this.queryInfo.userMobile = res.data.list[0].mobilephone; + this.dispatchForm.userMobile = res.data.list[0].mobilephone; + this.$message.success('欢迎使用,车辆调度系统!'); + }).catch((error) => { + this.$message.error(error.toString()); + }); + }, + /** + * 根据状态的不同区分颜色 + * + * @param row + * @param rowIndex + */ + rowStatus({row, rowIndex}) { + if (row.status === '1') { + return 'success-row'; + } + if (row.status === '2') { + return 'run-row'; + } + if (row.status === '3') { + return 'cancel-row'; + } + if (row.status === '4') { + return 'await-row'; + } + } + }, + mounted() { + var user = sessionStorage.getItem('user'); + if (user) { + user = JSON.parse(user); + console.log(user); + this.queryInfo.userName = user.username; + this.dispatchForm.userName = user.username; + let param = { + userName: this.queryInfo.userName + }; + this.getUserInfo(param); + } + /** + * 渲染完成之后,在获取调度记录列表 + */ + // this.getDispatchNodeList(); + } + } +</script> + +<style> + /* 完成状态 */ + .el-table .success-row { + background: rgba(64, 158, 255, 0.2); + } + + /* 执行状态 */ + .el-table .run-row { + background: rgba(103, 194, 58, 0.2); + } + + /* 取消状态 */ + .el-table .cancel-row { + background: rgba(144, 147, 153, 0.2); + } + + /* 待执行状态 */ + .el-table .await-row { + background: rgba(230, 162, 60, 0.2); + } +</style> diff --git a/src/views/dispatch/DispatchNode.vue b/src/views/dispatch/DispatchNode.vue new file mode 100644 index 0000000..7c938b0 --- /dev/null +++ b/src/views/dispatch/DispatchNode.vue @@ -0,0 +1,936 @@ +<template> + <el-container> + <el-main> + <!--面包屑导航区域--> + <!-- <el-breadcrumb separator-class="el-icon-arrow-right">--> + <!-- <el-breadcrumb-item :to="{ path: '/home' }">首页</el-breadcrumb-item>--> + <!-- <el-breadcrumb-item>车辆调度</el-breadcrumb-item>--> + <!-- <el-breadcrumb-item>调度记录</el-breadcrumb-item>--> + <!-- </el-breadcrumb>--> + + <el-card style="background-color: #F5F7FA"> + <!-- 搜素区域 --> + <div> + <el-row :gutter="24"> + <el-col :span="5"> + <el-input v-model="queryInfo.userName" prefix-icon="el-icon-search" + placeholder="请输入用户名称" clearable size="small" style="width:180px"></el-input> + </el-col> + <el-col :span="5"> + <el-input v-model="queryInfo.userMobile" prefix-icon="el-icon-search" + placeholder="请输入联系方式" clearable size="small" style="width:180px"></el-input> + </el-col> + <el-col :span="5"> + <el-date-picker v-model="queryInfo.gmtCreate" type="date" value-format="yyyy-MM-dd" + placeholder="调度创建时间" size="small" style="width:180px"></el-date-picker> + </el-col> + <el-col :span="5"> + <el-date-picker v-model="queryInfo.endTime" type="date" value-format="yyyy-MM-dd" + placeholder="调度完成时间" size="small" style="width:180px"></el-date-picker> + </el-col> + </el-row> + <el-row style="margin-top: 8px;"> + <el-col :span="5"> + <el-select v-model="queryInfo.dispatchType" placeholder="请选择业务类型" size="small" clearable + style="width:180px"> + <el-option + v-for="item in dispatchTypeList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-col> + <el-col :span="5"> + <el-select v-model="queryInfo.status" placeholder="记录状态" size="small" clearable + style="width:180px;margin-left: 6px"> + <el-option + v-for="item in statusList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-col> + <el-button type="primary" @click="getDispatchNodeList" size="small" style="margin-left:10px;"> + 查询调度记录 + </el-button> + <el-button type="success" @click="addDispatchNodeFormVisible = true" size="small">添加车辆调度记录 + </el-button> + </el-row> + </div> + <!--调度记录列表区域--> + <div style="margin-top: 20px;"> + <el-table :data="DispatchNoteList" border v-loading="listLoading" + :row-class-name="rowStatus" + @selection-change="selsChange" + element-loading-text="拼命加载中"> + <el-table-column type="selection" width="55" :selectable="isSelectable" align="center"></el-table-column> + <el-table-column type="index" align="center"></el-table-column> + <el-table-column label="用户名称" prop="userName" align="center" width="100"></el-table-column> + <el-table-column label="联系方式" prop="userMobile" align="center" width="120"></el-table-column> + <el-table-column label="状态" prop="status" align="center" width="120"> + <template slot-scope="scope"> + <span v-if="scope.row.status ==='1'">完成状态</span> + <span v-if="scope.row.status ==='2'">执行状态</span> + <span v-if="scope.row.status ==='3'">取消状态</span> + <span v-if="scope.row.status ==='4'">待执行状态</span> + </template> + </el-table-column> + <el-table-column label="业务类型" align="center" prop="dispatchType" width="120"> + <template slot-scope="scope"> + <span v-if="scope.row.dispatchType ==='1'">进站送货</span> + <span v-if="scope.row.dispatchType ==='2'">出站提货</span> + <span v-if="scope.row.dispatchType ==='3'">货物调拨</span> + <span v-if="scope.row.dispatchType ==='4'">货物流转</span> + </template> + </el-table-column> + <el-table-column label="场站位置" align="center" prop="station" width="120"> + <template slot-scope="scope"> + <span v-if="scope.row.station ==='1'">西货站</span> + <span v-if="scope.row.station ==='2'">综保区</span> + <span v-if="scope.row.station ==='3'">军投</span> + <span v-if="scope.row.station ==='4'">快邮</span> + </template> + </el-table-column> + <el-table-column label="车辆类型" align="center" prop="vehicleType" width="120"> + <template slot-scope="scope"> + <span v-if="scope.row.vehicleType ==='1'">重型货车</span> + <span v-if="scope.row.vehicleType ==='2'">中型货车</span> + <span v-if="scope.row.vehicleType ==='3'">轻型货车</span> + <span v-if="scope.row.vehicleType ==='4'">微型货车</span> + <span v-if="scope.row.vehicleType ==='5'">拖车</span> + <span v-if="scope.row.vehicleType ==='6'">叉车</span> + </template> + </el-table-column> + <el-table-column label="车牌号" prop="licensePlateNumber" align="center" + width="120"></el-table-column> + <el-table-column label="创建时间" prop="gmtCreate" align="center" width="160"></el-table-column> + <el-table-column label="开始时间" prop="beginTime" align="center" width="160"></el-table-column> + <el-table-column label="完成时间" prop="endTime" align="center" width="160"></el-table-column> + <el-table-column label="操作" width="230px" align="center" fixed="right"> + <template slot-scope="scope"> + <!--编辑按钮--> + <el-tooltip effect="dark" content="编辑" placement="top-start" :enterable="false" + style="margin-left: 1px;"> + <el-button type="success" icon="el-icon-check" size="mini" style="width:97px" + @click="showDialogVisible(scope.$index,scope.row)">编辑 + </el-button> + </el-tooltip> + <!--取消调度按钮--> + <el-tooltip effect="dark" content="删除" placement="top-start" :enterable="false" + style="margin-left: 1px;"> + <el-button type="danger" icon="el-icon-delete" size="mini" style="width:97px" + :loading="delLoading" + :disabled="scope.row.status==='2'" + @click.native.prevent="removeDispatchNode(scope.$index,scope.row)">删除 + </el-button> + </el-tooltip> + <!--开始任务--> + <el-tooltip effect="dark" content="开始任务" placement="top-start" :enterable="false" + style="margin-left: 1px;"> + <el-button type="warning" icon="el-icon-star-off" size="mini" + style="margin-top: 3px;" + :disabled="scope.row.status!=='4' || scope.row.beginTime !==null" + :loading="beginLoading" + @click="startDispatch(scope.$index,scope.row)">开始任务 + </el-button> + </el-tooltip> + <!-- 结束任务--> + <el-tooltip effect="dark" content="结束任务" placement="top-start" :enterable="false" + style="margin-left: 1px;"> + <el-button type="info" icon="el-icon-message" size="mini" + :disabled="scope.row.endTime !==null && scope.row.endTime !==''" + :loading="endLoading" + @click="completeDispatch(scope.$index,scope.row)">结束任务 + </el-button> + </el-tooltip> + + </template> + </el-table-column> + </el-table> + <!-- 分页区域 --> + <div style="margin-top: 10px"> + <el-row :gutter="24"> + <el-col :span="5"> + <el-button type="danger" icon="el-icon-delete" @click="batchRemove" + :disabled="this.sels.length===0">批量删除 + </el-button> + </el-col> + <el-col :span="10" style="margin-top: 5px"> + <el-pagination + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + :current-page="queryInfo.pageNum" + :page-sizes="[10,15,20,50]" + :page-size="queryInfo.pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="total"> + </el-pagination> + </el-col> + </el-row> + </div> + </div> + </el-card> + <!-- 添加车辆调度记录 --> + <div> + <el-dialog title="添加车辆调度记录" + :visible.sync="addDispatchNodeFormVisible" + style="margin-top: -50px" + width="60%" text-align="center" @close="dispatchDialogClosed"> + <el-form :inline="true" :model="addDispatchNodeForm" label-width="120px" status-icon + :rules="addDispatchNodeFormRules" ref="addDispatchNodeFormRef" + style="background-color: #F5F7FA" align="center"> + <br> + <el-form-item label="用户名称:" prop="userName"> + <el-input v-model="addDispatchNodeForm.userName" style="width:200px" size="small" clearable + placeholder="请输入您的用户名称"></el-input> + </el-form-item> + <el-form-item label="联系方式:" prop="userMobile"> + <el-input v-model="addDispatchNodeForm.userMobile" style="width:200px" clearable + size="small" + placeholder="请输入您的联系方式"></el-input> + </el-form-item> + <el-form-item label="车辆类型:" prop="vehicleType"> + <el-select v-model="addDispatchNodeForm.vehicleType" clearable style="width:200px" + size="small" + placeholder="请选择车辆类型"> + <el-option + v-for="item in vehicleTypeList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="车牌号码:" prop="licensePlateNumber"> + <el-input v-model="addDispatchNodeForm.licensePlateNumber" clearable + style="width:200px;margin-left:0px" + size="small" + placeholder="请输入车牌号"></el-input> + </el-form-item> + <el-form-item label="场站位置:" prop="station"> + <el-select v-model="addDispatchNodeForm.station" clearable style="width:200px" size="small" + placeholder=""> + <el-option + v-for="item in stationList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="业务类型:" prop="dispatchType"> + <el-select v-model="addDispatchNodeForm.dispatchType" clearable style="width:200px" + size="small" + placeholder=""> + <el-option + v-for="item in dispatchTypeList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="创建时间:" prop="gmtCreate"> + <el-date-picker v-model="addDispatchNodeForm.gmtCreate" clearable type="datetime" + value-format="yyyy-MM-dd HH:mm:ss" + placeholder="选择日期" size="small" style="width:200px"></el-date-picker> + </el-form-item> + <el-form-item label="开始时间:" prop="beginTime"> + <el-date-picker v-model="addDispatchNodeForm.beginTime" clearable type="datetime" + value-format="yyyy-MM-dd HH:mm:ss" + placeholder="选择日期" size="small" style="width:200px"></el-date-picker> + </el-form-item> + <el-form-item label="结束时间:" prop="endTime"> + <el-date-picker v-model="addDispatchNodeForm.endTime" type="datetime" + value-format="yyyy-MM-dd HH:mm:ss" + placeholder="选择日期" size="small" style="width:200px"></el-date-picker> + </el-form-item> + <el-form-item label="记录状态:" prop="status"> + <el-select v-model="addDispatchNodeForm.status" clearable placeholder="记录状态" + style="width:200px" + size="small"> + <el-option + v-for="item in statusList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="驾驶人姓名:" prop="driverName"> + <el-input v-model="addDispatchNodeForm.driverName" clearable style="width:200px" + size="small" + placeholder=""></el-input> + </el-form-item> + <el-form-item label="驾驶人电话:" prop="driverMobile"> + <el-input v-model="addDispatchNodeForm.driverMobile" clearable style="width:200px" + size="small" + placeholder=""></el-input> + </el-form-item> + </el-form> + <div slot="footer" class="dialog-footer" style="text-align: center"> + <el-button @click="addDispatchNodeFormVisible = false" size="medium" style="width: 100px">取消 + </el-button> + <el-button type="primary" @click="addDispatchNote" :loading="addLoading" size="medium" + style="width: 100px"> + 添加 + </el-button> + </div> + </el-dialog> + </div> + <!-- 编辑调度记录,对话框 --> + <div> + <el-dialog + style="margin-top: -50px" + title="编辑调度记录明细" + :visible.sync="viewDialogVisible" + text-align="center" + width="60%" + @close="editDialogClosed"> + + <el-form :model="editForm" label-width="120px" status-icon + :inline="true" + style="background-color: #F5F7FA;" + :rules="editFormRules" ref="editFormRef"> + <div style="margin-left: 40px"> + <br> + <el-form-item label="用户名称:" prop="userName"> + <el-input v-model="editForm.userName" style="width:200px" clearable size="small" + placeholder="请输入用户名称"></el-input> + </el-form-item> + <el-form-item label="联系方式:" prop="userMobile"> + <el-input v-model="editForm.userMobile" style="width:200px" clearable size="small" + placeholder="请输入您的联系方式"></el-input> + </el-form-item> + <el-form-item label="车辆类型:" prop="vehicleType"> + <el-select v-model="editForm.vehicleType" style="width:200px" clearable size="small" + placeholder="请选择车辆类型"> + <el-option + v-for="item in vehicleTypeList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="车牌号码:" prop="licensePlateNumber"> + <el-input v-model="editForm.licensePlateNumber" + style="width:200px;margin-left:0px" clearable + size="small" + placeholder="请输入车牌号"></el-input> + </el-form-item> + <el-form-item label="场站位置:" prop="station"> + <el-select v-model="editForm.station" clearable style="width:200px" size="small" + placeholder=""> + <el-option + v-for="item in stationList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="业务类型:" prop="dispatchType"> + <el-select v-model="editForm.dispatchType" clearable style="width:200px" size="small" + placeholder=""> + <el-option + v-for="item in dispatchTypeList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="创建时间:" prop="gmtCreate"> + <el-date-picker v-model="editForm.gmtCreate" type="datetime" + value-format="yyyy-MM-dd HH:mm:ss" + placeholder="选择日期" size="small" style="width:200px"></el-date-picker> + </el-form-item> + <el-form-item label="开始时间:" prop="beginTime"> + <el-date-picker v-model="editForm.beginTime" type="datetime" + value-format="yyyy-MM-dd HH:mm:ss" + placeholder="选择日期" size="small" style="width:200px"></el-date-picker> + </el-form-item> + <el-form-item label="结束时间:" prop="endTime"> + <el-date-picker v-model="editForm.endTime" type="datetime" + value-format="yyyy-MM-dd HH:mm:ss" + placeholder="选择日期" size="small" style="width:200px"></el-date-picker> + </el-form-item> + <el-form-item label="记录状态:" prop="status"> + <el-select v-model="editForm.status" placeholder="记录状态" clearable style="width:200px" + size="small"> + <el-option + v-for="item in statusList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="驾驶人姓名:" prop="driverName"> + <el-input v-model="editForm.driverName" style="width:200px" clearable size="small" + placeholder=""></el-input> + </el-form-item> + <el-form-item label="驾驶人电话:" prop="driverMobile"> + <el-input v-model="editForm.driverMobile" style="width:200px" clearable size="small" + placeholder=""></el-input> + </el-form-item> + <br> + </div> + </el-form> + <!--底部按钮区域--> + <span slot="footer" class="dialog-footer"> + <el-button style="width: 100px" @click="viewDialogVisible = false">取消</el-button> + <el-button type="primary" size="medium" style="width: 100px" + :loading="editLoading" + @click="editDispatchNote">编辑</el-button> + </span> + </el-dialog> + </div> + </el-main> + </el-container> +</template> + +<script> + import { + selectDispatchNoteList, + insertDispatchNote, + updateDispatchNote, + deleteDispatchNote, + batchRemoveDispatchNode, + startTask, + completeTask + } from "../../api/dispatch_api"; + + export default { + name: "dispatch_api", + created() { + this.getDispatchNodeList(); + }, + data() { + + //验证手机号的自定义规则 + var userMobileValid = (rule, value, callback) => { + //验证手机号的正则表达式 + const regMobile = /^(0|86|17951)?(13[0-9]|15[0123456789]|17[678]|18[0-9]|14[57])[0-9]{8}$/; + if (regMobile.test(value)) { + //合法的手机号 + return callback(); + } + callback(new Error('请输入合法的手机号')); + }; + return { + //搜索区域 + queryInfo: { + //用户姓名 + userName: '', + //用户联系方式 + userMobile: '', + //调度时间 + gmtCreate: undefined, + //完成时间 + endTime: undefined, + //业务类型 + dispatchType: '', + //状态 + status: '', + //当前的页数 + pageNum: 1, + //当前每页显示多少条数据 + pageSize: 10 + }, + //所有的调度记录列表 + DispatchNoteList: [], + //添加调度记录,表单 + addDispatchNodeForm: { + userName: '', + userMobile: '', + //车辆类型 + vehicleType: '2', + //车牌号 + licensePlateNumber: '', + //场站位置 + station: '1', + //调度业务类型 + dispatchType: '1', + //记录状态 + status: '2', + //驾驶人姓名 + driverName: '', + //驾驶人联系方式 + driverMobile: '', + //开始时间 + gmtCreate: '', + //结束时间 + endTime: '', + }, + //编辑记录的表单 + editForm: {}, + //添加调度记录,表单的验证规则对象 + addDispatchNodeFormRules: { + userName: [ + {required: true, message: '请输入姓名', trigger: ['blur', 'change']}, + ], + userMobile: [ + {required: true, message: '请输入联系方式', trigger: ['blur', 'change']}, + {validator: userMobileValid, trigger: 'blur'} + ], + vehicleType: [ + {required: true, message: '请选择车辆类型', trigger: ['blur', 'change']}, + ], + licensePlateNumber: [ + {required: true, message: '请输入车牌号', trigger: ['blur', 'change']}, + ], + vehicleNumber: [ + {required: true, message: '请输入车辆数量', trigger: ['blur', 'change']}, + ], + station: [ + {required: true, message: '请选择场站位置', trigger: ['blur', 'change']}, + ], + dispatchType: [ + {required: true, message: '请选择业务类型', trigger: ['blur', 'change']}, + ], + gmtCreate: [ + {required: true, message: '请选择开始时间', trigger: ['blur', 'change']}, + ], + // endTime: [ + // {required: true, message: '请选择结束时间', trigger: 'blur'}, + // ], + status: [ + {required: true, message: '请选择记录状态', trigger: ['blur', 'change']}, + ], + }, + //编辑调度记录,表单的验证规则对象 + editFormRules: { + userName: [ + {required: true, message: '请输入姓名', trigger: ['blur', 'change']}, + ], + userMobile: [ + {required: true, message: '请输入联系方式', trigger: ['blur', 'change']}, + {validator: userMobileValid, trigger: 'blur'} + ], + vehicleType: [ + {required: true, message: '请选择车辆类型', trigger: ['blur', 'change']}, + ], + licensePlateNumber: [ + {required: true, message: '请输入车牌号', trigger: ['blur', 'change']}, + ], + vehicleNumber: [ + {required: true, message: '请输入驾驶人电话', trigger: ['blur', 'change']}, + ], + station: [ + {required: true, message: '请选择场站位置', trigger: ['blur', 'change']}, + ], + dispatchType: [ + {required: true, message: '请选择业务类型', trigger: ['blur', 'change']}, + ], + // gmtCreate: [ + // {required: true, message: '请选择开始时间', trigger: ['blur', 'change']}, + // ], + // endTime: [ + // {required: true, message: '请选择结束时间', trigger: ['blur', 'change']}, + // ], + status: [ + {required: true, message: '请选择记录状态', trigger: ['blur', 'change']}, + ], + }, + //控制添加用户对话框的显示与隐藏 + addDispatchNodeFormVisible: false, + //控制编辑调度记录明细,对话框的显示与隐藏 + viewDialogVisible: false, + //记录的总条数 + total: 0, + /* 批量删除的选中列表 */ + sels: [], + /* 列表加载 */ + listLoading: false, + /* 添加加载 */ + addLoading: false, + /* 编辑加载 */ + editLoading: false, + /* 删除加载 */ + delLoading: false, + /* 开始调度加载 */ + beginLoading: false, + /* 结束调度加载 */ + endLoading: false, + //业务类型 选项列表 + dispatchTypeList: [ + { + value: '1', + label: '进站送货' + }, + { + value: '2', + label: '出站提货' + }, + { + value: '3', + label: '货物流转' + }, + { + value: '4', + label: '货物调拨' + } + ], + //车辆类型,选项列表 + vehicleTypeList: [ + { + value: '1', + label: '重型货车' + }, + { + value: '2', + label: '中型货车' + }, + { + value: '3', + label: '经济货车' + }, + { + value: '4', + label: '微型货车' + }, + { + value: '5', + label: '拖车' + }, + { + value: '6', + label: '叉车' + } + ], + /** + * 场站位置,选项列表 + */ + stationList: [ + { + value: '1', + label: '西货站' + }, + { + value: '2', + label: '综保区' + }, + { + value: '3', + label: '军投' + }, + { + value: '4', + label: '快邮' + } + ], + //记录状态 选项列表 + statusList: [ + { + value: '1', + label: '完成状态' + }, + { + value: '2', + label: '执行状态' + }, + { + value: '3', + label: '取消状态' + }, + { + value: '4', + label: "待执行状态" + } + ], + + } + }, + methods: { + /** + * 管理员端,获取车辆调度记录列表 + */ + getDispatchNodeList() { + //开启加载 + this.listLoading = true; + selectDispatchNoteList(this.queryInfo).then((response) => { + let res = response.data; + if (res.code !== '200') { + //关闭加载 + this.listLoading = false; + return this.$message.error('获取车辆调度列表失败'); + } + // 获取车辆调度列表数据 + this.DispatchNoteList = res.data.list; + // 获取列表的总记录数 + this.total = res.data.total; + //关闭加载 + this.listLoading = false; + this.$message.success('获取车辆调度列表,成功'); + }).catch(error => { + this.listLoading = false; + this.$message.error(error.toString()); + }); + }, + /** + * 管理员端,添加车辆调度记录 + */ + addDispatchNote() { + /*进行表单的预验证*/ + this.$refs.addDispatchNodeFormRef.validate(valid => { + // 未通过,表单预校验 + if (!valid) return; + // 通过,表单预检验,发起添加车辆调度记录的网络请求 + this.addLoading = true; + insertDispatchNote(this.addDispatchNodeForm).then((response) => { + let res = response.data; + //添加调度记录信息,失败 + if (res.code !== '200'){ + //关闭加载 + this.addLoading = false; + return this.$message.error('添加调度记录信息,失败'); + } + //添加调度记录信息,成功 + this.$message.success('添加调度记录信息,成功'); + //关闭加载 + this.addLoading = false; + //隐藏对话框 + this.addDispatchNodeFormVisible = false; + //刷新车辆调度记录列表 + this.getDispatchNodeList(); + }).catch(error => { + this.addLoading = false; + this.$message.error(error.toString()); + }); + }) + }, + /** + * 管理员端,删除车辆调度记录 + */ + removeDispatchNode(index, row) { + //弹框询问是否删除车辆调度记录 + this.$confirm('此操作永久删除该车辆调度记录, 是否继续?', '警告', { + confirmButtonText: '确定删除', + cancelButtonText: '取消', + type: 'warning' + } + ).then(() => { + //开启加载 + this.delLoading = true; + deleteDispatchNote(row).then((response) => { + let res = response.data; + if (res.code !== '200') { + this.delLoading = false; + return this.$message.error('删除车辆调度记录,失败'); + } + this.$message.success('删除车辆调度记录,成功!'); + this.delLoading = false; + //刷新车辆调度记录列表 + this.getDispatchNodeList(); + }).catch(error => { + this.delLoading = false; + this.$message.error(error.toString()); + }); + }).catch(() => { + }); + }, + /** + * 管理员端,编辑车辆调度记录 + */ + editDispatchNote() { + /*进行表单的预验证*/ + this.$refs.editFormRef.validate(valid => { + // 未通过,表单预校验 + if (!valid) return; + // 通过,表单预检验,开启加载 + this.editLoading = true; + updateDispatchNote(this.editForm).then((response) => { + let res = response.data; + if (res.code !== '200') { + //关闭加载 + this.editLoading = false; + return this.$message.error('修改车辆调度记录信息,失败'); + } + this.$message.success('修改车辆调度记录信息,成功!'); + //关闭加载 + this.editLoading = false; + //关闭编辑车辆调度记录对话框 + this.viewDialogVisible = false; + //刷新车辆调度列表 + this.getDispatchNodeList(); + }).catch(error => { + this.editLoading = false; + this.$message.error(error.toString()); + }); + }); + }, + /** + * 管理员端,手动,开始调度任务 + */ + startDispatch(index, row) { + //开启加载 + this.beginLoading = true; + startTask(row).then((response) => { + let res = response.data; + if (res.code !== '200') { + //关闭加载 + this.beginLoading = false; + return this.$message.error('手动开始调度任务,失败'); + } + //关闭加载 + this.beginLoading = false; + this.$message.success('手动开始调度任务,成功!'); + //刷新车辆调度列表 + this.getDispatchNodeList(); + }).catch(error => { + this.beginLoading = false; + this.$message.error(error.toString()); + }); + }, + /** + * 管理员端,手动,完成调度任务 + */ + completeDispatch(index, row) { + //开启加载 + this.endLoading = true; + completeTask(row).then((response) => { + let res = response.data; + if (res.code !== '200') { + //关闭加载 + this.endLoading = false; + return this.$message.error('手动完成调度任务,失败'); + } + //关闭加载 + this.endLoading = false; + this.$message.success('手动完成调度任务,成功!'); + //刷新车辆调度列表 + this.getDispatchNodeList(); + }).catch(error => { + this.endLoading = false; + this.$message.error(error.toString()); + }); + }, + /** + * 批量删除,之前的选中 + */ + selsChange: function (sels) { + this.sels = sels; + }, + /** + * 车辆状态为执行状态的时候,无法被选中 + */ + isSelectable(row, index) { + if (row.status === '2') { + return false; + } else { + return true; + } + }, + /** + * 批量删除功能 + */ + batchRemove() { + var ids = this.sels.map(item => item.id).toString(); + console.log(ids); + //弹框询问是否批量删除选中的车辆调度记录 + this.$confirm('此操作永久删除选中的车辆调度记录, 是否继续?', '警告', { + confirmButtonText: '确定删除', + cancelButtonText: '取消', + type: 'warning' + } + ).then(() => { + //开启加载 + this.listLoading = true; + let params = {ids: ids}; + batchRemoveDispatchNode(params).then(response => { + let res = response.data; + if (res.code !== '200') { + this.listLoading = false; + return this.$message.error('删除车辆调度记录,失败'); + } + this.$message.success('删除车辆调度记录,成功!'); + this.listLoading = false; + //刷新车辆调度记录列表 + this.getDispatchNodeList(); + }).catch(error => { + this.delLoading = false; + this.$message.error(error.toString()); + }); + }).catch(() => { + }); + }, + //监听,我要调度车辆,对话框的关闭事件 + dispatchDialogClosed() { + //重置对话框 + this.$refs.addDispatchNodeFormRef.resetFields(); + }, + //监听,编辑调度记录,对话框的关闭事件 + editDialogClosed() { + //重置对话框 + this.$refs.editFormRef.resetFields(); + }, + //监听pageSize改变的事件 + handleSizeChange(newSize) { + this.queryInfo.pageSize = newSize; + //刷新车辆调度记录列表 + this.getDispatchNodeList(); + }, + //监听当前页码值改变的事件 + handleCurrentChange(newPage) { + this.queryInfo.pageNum = newPage; + //刷新车辆调度记录列表 + this.getDispatchNodeList(); + }, + + /** + * 打开编辑调度记录,对话框 + * @param index + * @param row:该行的数据对象 + */ + showDialogVisible(index, row) { + this.editForm = Object.assign({}, row); + this.viewDialogVisible = true; + }, + /** + * 根据状态的不同区分颜色 + * + * @param row + * @param rowIndex + */ + rowStatus({row, rowIndex}) { + if (row.status === '1') { + return 'success-row'; + } + if (row.status === '2') { + return 'run-row'; + } + if (row.status === '3') { + return 'cancel-row'; + } + if (row.status === '4') { + return 'await-row'; + } + } + } + } +</script> +<style> + /* 完成状态 */ + .el-table .success-row { + background: rgba(64, 158, 255, 0.2); + } + + /* 执行状态 */ + .el-table .run-row { + background: rgba(103, 194, 58, 0.2); + } + + /* 取消状态 */ + .el-table .cancel-row { + background: rgba(144, 147, 153, 0.2); + } + + /* 待执行状态 */ + .el-table .await-row { + background: rgba(230, 162, 60, 0.2); + } +</style> diff --git a/src/views/dispatch/DriverInfo.vue b/src/views/dispatch/DriverInfo.vue new file mode 100644 index 0000000..7ddbb83 --- /dev/null +++ b/src/views/dispatch/DriverInfo.vue @@ -0,0 +1,654 @@ +<template> + <el-container> + <el-main> + <!--面包屑导航区域--> + <!-- <div>--> + <!-- <el-breadcrumb separator-class="el-icon-arrow-right">--> + <!-- <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>--> + <!-- <el-breadcrumb-item>车辆调度</el-breadcrumb-item>--> + <!-- <el-breadcrumb-item>驾驶员信息</el-breadcrumb-item>--> + <!-- </el-breadcrumb>--> + <!-- </div>--> + <el-card style="background-color: #F5F7FA"> + <!--搜索区域--> + <div> + <el-row :gutter="24"> + <el-col :span="5"> + <el-input v-model="queryInfo.driverName" prefix-icon="el-icon-search" clearable + placeholder="请输入驾驶员姓名"></el-input> + </el-col> + <el-col :span="5"> + <el-input v-model="queryInfo.driverMobile" prefix-icon="el-icon-search" clearable + placeholder="请输入联系方式"></el-input> + </el-col> + <el-col :span="5"> + <el-input v-model="queryInfo.driverCompany" prefix-icon="el-icon-search" clearable + placeholder="请输入公司名称"></el-input> + </el-col> + <el-col :span="5"> + <el-select v-model="queryInfo.driverStatus" clearable placeholder="请选择驾驶员状态"> + <el-option + v-for="item in driverStatusList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-col> + </el-row> + <el-row style="margin-top: 20px;"> + <el-button type="primary" @click="getDriverInfoList">查询驾驶员信息</el-button> + <el-button type="success" @click="addDriverInfoFormVisible = true">增加驾驶员信息</el-button> + </el-row> + </div> + <!--驾驶员信息列表区域--> + <div style="margin-top: 20px;"> + <el-table :data="driverInfoList" border stripe highlight-current-row v-loading="listLoading" + @selection-change="selsChange" + element-loading-text="拼命加载中"> + <el-table-column type="selection" width="55" :selectable="isSelectable" align="center"></el-table-column> + <el-table-column type="index" align="center"></el-table-column> + <el-table-column label="姓名" prop="driverName" align="center" width="100"></el-table-column> + <el-table-column label="联系方式" prop="driverMobile" align="center" width="130"></el-table-column> + <el-table-column label="职位" prop="driverPosition" align="center" width="100"> + <template slot-scope="scope"> + <span v-if="scope.row.driverPosition ==='1'">队长</span> + <span v-if="scope.row.driverPosition ==='2'">班长</span> + <span v-if="scope.row.driverPosition ==='3'">副班长</span> + <span v-if="scope.row.driverPosition ==='4'">员工</span> + </template> + </el-table-column> + <el-table-column label="状态" prop="driverStatus" align="center" width="120"> + <template slot-scope="scope"> + <span v-if="scope.row.driverStatus ==='1'">空闲状态</span> + <span v-if="scope.row.driverStatus ==='2'">执行状态</span> + <span v-if="scope.row.driverStatus ==='3'">轮休状态</span> + <span v-if="scope.row.driverStatus ==='4'">请假状态</span> + </template> + </el-table-column> + <el-table-column label="驾驶证" prop="driverLicenseNumber" align="center" + width="200"></el-table-column> + <el-table-column label="工号" prop="jobNumber" align="center" width="150"></el-table-column> + <el-table-column label="公司" prop="driverCompany" align="center" width="160"></el-table-column> + <el-table-column label="操作" width="220px" align="center" fixed="right"> + <template slot-scope="scope"> + <!--查看按钮--> + <el-tooltip effect="dark" content="编辑" placement="top-start" :enterable="false"> + <el-button type="primary" icon="el-icon-edit" size="mini" + @click="showEditDialogVisible(scope.$index,scope.row)">编辑 + </el-button> + </el-tooltip> + <!--取消调度按钮--> + <el-tooltip effect="dark" content="删除" placement="top-start" :enterable="false"> + <el-button type="danger" icon="el-icon-delete" size="mini" + :loading="delLoading" + :disabled="scope.row.driverStatus==='2'" + @click="removeDriverInfo(scope.$index,scope.row)">删除 + </el-button> + </el-tooltip> + </template> + </el-table-column> + </el-table> + <!--分页区域--> + <div style="margin-top: 10px"> + <el-row :gutter="24"> + <el-col :span="5"> + <el-button type="danger" icon="el-icon-delete" @click="batchRemove" + :disabled="this.sels.length===0">批量删除 + </el-button> + </el-col> + <el-col :span="10" style="margin-top: 5px"> + <el-pagination + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + :current-page="queryInfo.pageNum" + :page-sizes="[10,20,30,50]" + :page-size="queryInfo.pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="total"> + </el-pagination> + </el-col> + </el-row> + </div> + </div> + </el-card> + <!-- 增加驾驶员信息对话框 --> + <div> + <el-dialog + style="margin-top: -50px" + title="增加驾驶员信息" + text-align="center" + :visible.sync="addDriverInfoFormVisible" + width="50%" @close="addDriverInfoDialogClosed"> + <el-form :model="addDriverInfoForm" label-width="100px" status-icon + :rules="addDriverInfoFormRules" ref="addDriverInfoFormRef" + size="medium" align="center" :inline="true" + style="background-color: #F5F7FA"> + <div style="margin-top: -15px"> + <br> + <el-form-item label="司机姓名:" prop="driverName"> + <el-input v-model="addDriverInfoForm.driverName" style="width: 300px;" clearable + placeholder="请输入驾驶员姓名"></el-input> + </el-form-item> + <el-form-item label="联系方式:" prop="driverMobile"> + <el-input v-model="addDriverInfoForm.driverMobile" style="width: 300px;" clearable + placeholder="请输入驾驶员联系方式"></el-input> + </el-form-item> + + + <el-form-item label="司机状态:" prop="driverStatus"> + <el-select v-model="addDriverInfoForm.driverStatus" style="width: 300px" clearable + placeholder="请选择驾驶员类型"> + <el-option + v-for="item in driverStatusList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="驾驶证号:" prop="driverLicenseNumber"> + <el-input v-model="addDriverInfoForm.driverLicenseNumber" style="width: 300px;" + clearable + placeholder="请输入驾驶证号码"></el-input> + </el-form-item> + <el-form-item label="工作职位:" prop="driverPosition"> + <el-select v-model="addDriverInfoForm.driverPosition" style="width: 300px" clearable + placeholder="请选择驾驶员类型"> + <el-option + v-for="item in driverPositionList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + + <el-form-item label="员工号码:" prop="jobNumber"> + <el-input v-model="addDriverInfoForm.jobNumber" style="width: 300px;" clearable + placeholder="请输入员工号码"></el-input> + </el-form-item> + <el-form-item label="司机公司:" prop="driverCompany"> + <el-input v-model="addDriverInfoForm.driverCompany" style="width: 300px;" clearable + placeholder="请输入驾驶员所属公司"></el-input> + </el-form-item> + <br> + </div> + </el-form> + <!--底部按钮区域--> + <span slot="footer" class="dialog-footer"> + <el-button @click="addDriverInfoFormVisible = false">取 消</el-button> + <el-button type="primary" :loading="addLoading" @click="addDriverInfo">增 加</el-button> + </span> + </el-dialog> + </div> + <!-- 编辑驾驶员信息,对话框 --> + <div> + <el-dialog + style="margin-top: -70px" + title="编辑驾驶员信息" + :visible.sync="editDialogVisible" + text-align="center" + width="50%" @close="editDriverInfoDialogClosed"> + <el-form :model="editDriverInfoForm" label-width="100px" status-icon + :rules="editDriverInfoFormRules" ref="editDriverInfoFormRef" + :inline="true" size="medium" align="center" + style="background-color: #F5F7FA"> + <div style="margin-top: -15px"> + <br> + <el-form-item label="司机姓名:" prop="driverName"> + <el-input v-model="editDriverInfoForm.driverName" style="width: 300px;" clearable + placeholder="请输入驾驶员姓名"></el-input> + </el-form-item> + <el-form-item label="联系方式:" prop="driverMobile"> + <el-input v-model="editDriverInfoForm.driverMobile" style="width: 300px;" clearable + placeholder="请输入驾驶员联系方式"></el-input> + </el-form-item> + + + <el-form-item label="司机状态:" prop="driverStatus"> + <el-select v-model="editDriverInfoForm.driverStatus" style="width: 300px" clearable + placeholder="请选择驾驶员类型"> + <el-option + v-for="item in driverStatusList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="驾驶证号:" prop="driverLicenseNumber"> + <el-input v-model="editDriverInfoForm.driverLicenseNumber" style="width: 300px;" + clearable + placeholder="请输入驾驶证号码"></el-input> + </el-form-item> + <el-form-item label="工作职位:" prop="driverPosition"> + <el-select v-model="editDriverInfoForm.driverPosition" style="width: 300px" clearable + placeholder="请选择驾驶员类型"> + <el-option + v-for="item in driverPositionList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + + <el-form-item label="员工号码:" prop="jobNumber"> + <el-input v-model="editDriverInfoForm.jobNumber" style="width: 300px;" clearable + placeholder="请输入员工号码"></el-input> + </el-form-item> + <el-form-item label="司机公司:" prop="driverCompany"> + <el-input v-model="editDriverInfoForm.driverCompany" style="width: 300px;" clearable + placeholder="请输入驾驶员所属公司"></el-input> + </el-form-item> + <br> + </div> + </el-form> + <!--底部按钮区域--> + <span slot="footer" class="dialog-footer"> + <el-button @click="editDialogVisible = false">取 消</el-button> + <el-button type="primary" :loading="editLoading" @click="editDriverInfo">编 辑</el-button> + </span> + </el-dialog> + </div> + </el-main> + </el-container> +</template> + +<script> + import { + selectDriverInfoList, + insertDriverInfo, + updateDriverInfo, + batchRemoveDriverInfo, + deleteDriverInfo, + } from "../../api/dispatch_api"; + + export default { + name: "dispatch_api", + created() { + //刷新驾驶员信息列表 + this.getDriverInfoList(); + }, + data() { + //验证手机号的自定义规则 + var driverMobileValid = (rule, value, callback) => { + //验证手机号的正则表达式 + const regMobile = /^(0|86|17951)?(13[0-9]|15[0123456789]|17[678]|18[0-9]|14[57])[0-9]{8}$/; + if (regMobile.test(value)) { + //合法的手机号 + return callback(); + } + callback(new Error('请输入合法的手机号')); + }; + return { + /** + * 查询信息列表 + */ + queryInfo: { + //驾驶员姓名 + driverName: '', + //驾驶员联系方式 + driverMobile: '', + //驾驶员所属公司 + driverCompany: '', + //驾驶员状态 + driverStatus: '', + //当前的页数 + pageNum: 1, + //当前每页显示多少条数据 + pageSize: 10 + }, + /** + * 设置,总条数 + */ + total: 0, + /** + * 批量删除的选中列表 + */ + sels: [], + /** + * 驾驶员信息列表 + */ + driverInfoList: [], + /** + * 新增驾驶员信息表单 + */ + addDriverInfoForm: { + driverName: '', + driverLicenseNumber: '', + driverMobile: '', + jobNumber: '', + driverPosition: '1', + driverCompany: '', + driverStatus: '1', + }, + /** + * 编辑驾驶员信息表单 + */ + editDriverInfoForm: {}, + /** + * 控制,添加驾驶员信息对话框的显示与隐藏 + */ + addDriverInfoFormVisible: false, + /** + * 控制,编辑驾驶员信息对话框的显示与隐藏 + */ + editDialogVisible: false, + /* 列表加载 */ + listLoading: false, + /* 添加加载 */ + addLoading: false, + /* 编辑加载 */ + editLoading: false, + /* 删除加载 */ + delLoading: false, + /** + * 司机职位,列表 + */ + driverPositionList: [ + { + value: '1', + label: '队长' + }, + { + value: '2', + label: '班长' + }, + { + value: '3', + label: '副班长' + }, + { + value: '4', + label: '员工' + }, + ], + /** + * 驾驶员状态,列表 + */ + driverStatusList: [ + { + value: '1', + label: '空闲状态' + }, + { + value: '2', + label: '执行状态' + }, + { + value: '3', + label: '轮休状态' + }, + { + value: '4', + label: '请假状态' + }, + ], + /** + * 添加驾驶员信息,表单的验证规则对象 + */ + addDriverInfoFormRules: { + driverName: [ + {required: true, message: '请选择驾驶员姓名', trigger: ['blur', 'change']}, + ], + driverLicenseNumber: [ + {required: true, message: '请输入驾驶证号码', trigger: ['blur', 'change']}, + ], + driverMobile: [ + {required: true, message: '请输入联系方式', trigger: ['blur', 'change']}, + {validator: driverMobileValid, trigger: 'blur'} + ], + jobNumber: [ + {required: true, message: '请输入员工号码', trigger: ['blur', 'change']}, + ], + driverPosition: [ + {required: true, message: '请选择工作职位', trigger: ['blur', 'change']}, + ], + driverCompany: [ + {required: true, message: '请输入驾驶员所属公司', trigger: ['blur', 'change']}, + ], + driverStatus: [ + {required: true, message: '请选择驾驶员状态', trigger: ['blur', 'change']}, + ], + }, + /** + * 编辑驾驶员信息,表单的验证规则对象 + */ + editDriverInfoFormRules: { + driverName: [ + {required: true, message: '请选择驾驶员姓名', trigger: ['blur', 'change']}, + ], + driverLicenseNumber: [ + {required: true, message: '请输入驾驶证号码', trigger: ['blur', 'change']}, + ], + driverMobile: [ + {required: true, message: '请输入联系方式', trigger: ['blur', 'change']}, + {validator: driverMobileValid, trigger: 'blur'} + ], + jobNumber: [ + {required: true, message: '请输入员工号码', trigger: ['blur', 'change']}, + ], + driverPosition: [ + {required: true, message: '请选择工作职位', trigger: ['blur', 'change']}, + ], + driverCompany: [ + {required: true, message: '请输入驾驶员所属公司', trigger: ['blur', 'change']}, + ], + driverStatus: [ + {required: true, message: '请选择驾驶员状态', trigger: ['blur', 'change']}, + ], + } + } + }, + methods: { + /** + * 获取驾驶员信息列表 + */ + getDriverInfoList() { + //开启加载 + this.listLoading = true; + selectDriverInfoList(this.queryInfo).then((response) => { + let res = response.data; + if (res.code !== '200'){ + //关闭加载 + this.listLoading = false; + return this.$message.error('获取驾驶员信息列表,失败'); + } + // 获取驾驶员信息列表数据 + this.driverInfoList = res.data.list; + // 获取列表的总记录数 + this.total = res.data.total; + //关闭加载 + this.listLoading = false; + this.$message.success('获取驾驶员信息列表,成功'); + }).catch(error => { + this.listLoading = false; + this.$message.error(error.toString()); + }); + + }, + /** + * 增加驾驶员信息 + */ + addDriverInfo() { + /*进行表单的预验证*/ + this.$refs.addDriverInfoFormRef.validate(valid => { + // 未通过,表单预校验 + if (!valid) return; + // 通过,表单预检验,开启加载 + this.addLoading = true; + insertDriverInfo(this.addDriverInfoForm).then((response) => { + let res = response.data; + if (res.code !== '200'){ + //关闭加载 + this.addLoading = false; + return this.$message.error('添加驾驶员信息,失败'); + } + //关闭加载 + this.addLoading = false; + this.$message.success('添加驾驶员信息,成功'); + //关闭对话框 + this.addDriverInfoFormVisible = false; + //刷新驾驶员信息列表 + this.getDriverInfoList(); + }).catch(error => { + this.addLoading = false; + this.$message.error(error.toString()); + }); + }) + }, + /** + * 删除驾驶员信息 + */ + removeDriverInfo(index, row) { + //弹框询问是否删除驾驶员信息 + this.$confirm('此操作永久删除该驾驶员信息, 是否继续?', '警告', { + confirmButtonText: '确定删除', + cancelButtonText: '取消', + type: 'warning' + } + ).then(() => { + //开启加载 + this.delLoading = true; + deleteDriverInfo(row).then((response) => { + let res = response.data; + if (res.code !== '200') { + //关闭加载 + this.delLoading = false; + return this.$message.error('删除驾驶员信息,失败'); + } + //关闭加载 + this.delLoading = false; + this.$message.success('删除驾驶员信息,成功!'); + //刷新驾驶员信息列表 + this.getDriverInfoList(); + }).catch(error => { + this.delLoading = false; + this.$message.error(error.toString()); + }); + }).catch(() => { + }); + }, + /** + * 批量删除,之前的选中 + */ + selsChange: function (sels) { + this.sels = sels; + }, + /** + * 驾驶员状态为执行状态的时候,无法被选中 + */ + isSelectable(row, index) { + if (row.driverStatus === '2') { + return false; + } else { + return true; + } + }, + /** + * 批量删除功能 + */ + batchRemove() { + var ids = this.sels.map(item => item.id).toString(); + console.log(ids); + //弹框询问是否批量删除选中的车辆调度记录 + this.$confirm('此操作将永久删除,选中的驾驶员信息, 是否继续?', '警告', { + confirmButtonText: '确定删除', + cancelButtonText: '取消', + type: 'warning' + } + ).then(() => { + //开启加载 + this.listLoading = true; + let params = {ids: ids}; + batchRemoveDriverInfo(params).then(response => { + let res = response.data; + if (res.code !== '200') { + this.listLoading = false; + return this.$message.error('批量删除驾驶员信息,失败'); + } + this.$message.success('批量删除驶员信息,成功!'); + this.listLoading = false; + //刷新驾驶员信息列表 + this.getDriverInfoList(); + }).catch(error => { + this.delLoading = false; + this.$message.error(error.toString()); + }); + }).catch(() => { + }); + }, + /** + * 编辑驾驶员信息 + */ + editDriverInfo() { + /*进行表单的预验证*/ + this.$refs.editDriverInfoFormRef.validate(valid => { + // 未通过,表单预校验 + if (!valid) return; + // 通过,表单预检验,开启加载 + this.editLoading = true; + updateDriverInfo(this.editDriverInfoForm).then((response) => { + let res = response.data; + if (res.code !== '200') { + //关闭加载 + this.editLoading = false; + return this.$message.error('修改驾驶员信息,失败'); + } + //关闭加载 + this.editLoading = false; + this.$message.success('修改驾驶员信息,成功!'); + // 关闭,编辑驾驶员信息对话框 + this.editDialogVisible = false; + //刷新驾驶员信息列表 + this.getDriverInfoList(); + }).catch(error => { + this.editLoading = false; + this.$message.error(error.toString()); + }); + }) + }, + /** + * 添加驾驶员信息对话框,关闭时,重置对话框 + */ + addDriverInfoDialogClosed() { + this.$refs.addDriverInfoFormRef.resetFields(); + }, + /** + * 编辑驾驶员信息对话框,关闭时,重置对话框 + */ + editDriverInfoDialogClosed() { + this.$refs.editDriverInfoFormRef.resetFields(); + }, + /** + * 打开编辑驾驶员信息对话框 + */ + showEditDialogVisible(index, row) { + this.editDriverInfoForm = Object.assign({}, row); + this.editDialogVisible = true; + }, + /** + * 监听pageSize改变的事件 + */ + handleSizeChange(newSize) { + this.queryInfo.pageSize = newSize; + //刷新驾驶员信息列表 + this.getDriverInfoList(); + }, + /** + * 监听当前页码值改变的事件 + */ + handleCurrentChange(newPage) { + this.queryInfo.pageNum = newPage; + //刷新驾驶员信息列表 + this.getDriverInfoList(); + }, + } + } +</script> + +<style scoped> + +</style> diff --git a/src/views/dispatch/VehicleInfo.vue b/src/views/dispatch/VehicleInfo.vue new file mode 100644 index 0000000..7f2c05e --- /dev/null +++ b/src/views/dispatch/VehicleInfo.vue @@ -0,0 +1,704 @@ +<template> + <el-container> + <el-main> + <!--面包屑导航区域--> + <!-- <div>--> + <!-- <el-breadcrumb separator-class="el-icon-arrow-right">--> + <!-- <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>--> + <!-- <el-breadcrumb-item>车辆调度</el-breadcrumb-item>--> + <!-- <el-breadcrumb-item>车辆信息</el-breadcrumb-item>--> + <!-- </el-breadcrumb>--> + <!-- </div>--> + <el-card style="background-color: #F5F7FA"> + <!--搜索区域--> + <div> + <el-row :gutter="24"> + <el-col :span="5"> + <el-input v-model="queryInfo.licensePlateNumber" clearable prefix-icon="el-icon-search" + placeholder="请输入车牌号码"></el-input> + </el-col> + <el-col :span="5"> + <el-input v-model="queryInfo.vehicleCompany" clearable prefix-icon="el-icon-search" + placeholder="请输入车辆公司"></el-input> + </el-col> + <el-col :span="5"> + <el-select v-model="queryInfo.vehicleStatus" clearable placeholder="请选择车辆状态"> + <el-option + v-for="item in vehicleStatusList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-col> + <el-col :span="5"> + <el-select v-model="queryInfo.vehicleType" clearable placeholder="请选择车辆类型"> + <el-option + v-for="item in vehicleTypeList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-col> + </el-row> + <el-row style="margin-top: 20px;"> + <el-button type="primary" @click="getVehicleInfoList">查询车辆信息</el-button> + <el-button type="success" @click="addVehicleInfoFormVisible = true">增加车辆信息</el-button> + + </el-row> + </div> + <!--车辆信息列表区域--> + <div style="margin-top: 20px;"> + <el-table :data="vehicleInfoList" border stripe highlight-current-row v-loading="listLoading" + @selection-change="selsChange" + element-loading-text="拼命加载中"> + <el-table-column type="selection" width="55" :selectable="isSelectable" + align="center"></el-table-column> + <el-table-column type="index" align="center"></el-table-column> + <el-table-column label="车辆类型" prop="vehicleType" align="center" width="120"> + <template slot-scope="scope"> + <span v-if="scope.row.vehicleType ==='1'">重型货车</span> + <span v-if="scope.row.vehicleType ==='2'">中型货车</span> + <span v-if="scope.row.vehicleType ==='3'">轻型货车</span> + <span v-if="scope.row.vehicleType ==='4'">微型货车</span> + <span v-if="scope.row.vehicleType ==='5'">拖车</span> + <span v-if="scope.row.vehicleType ==='6'">叉车</span> + </template> + </el-table-column> + <el-table-column label="车牌号码" prop="licensePlateNumber" align="center" + width="130"></el-table-column> + <el-table-column label="车辆状态" prop="vehicleStatus" align="center" width="100"> + <template slot-scope="scope"> + <span v-if="scope.row.vehicleStatus ==='1'">空闲状态</span> + <span v-if="scope.row.vehicleStatus ==='2'">执行状态</span> + <span v-if="scope.row.vehicleStatus ==='3'">在修状态</span> + <span v-if="scope.row.vehicleStatus ==='4'">损坏未修</span> + <span v-if="scope.row.vehicleStatus ==='5'">保养状态</span> + </template> + </el-table-column> + <el-table-column label="车辆载重/Kg" prop="vehicleLoad" align="center" + width="110"></el-table-column> + <el-table-column label="挂车与否" prop="isTrailer" align="center" width="110"> + <template slot-scope="scope"> + <span v-if="scope.row.isTrailer ==='1'">有挂车</span> + <span v-if="scope.row.isTrailer ==='2'">没有挂车</span> + </template> + </el-table-column> + <el-table-column label="开始空闲时间" prop="freetime" align="center" width="160"></el-table-column> + + <el-table-column label="车辆公司" prop="vehicleCompany" align="center" + width="200"></el-table-column> + <el-table-column label="行驶证号" prop="drivingLicenseNumber" align="center" + width="160"></el-table-column> + <el-table-column label="操作" width="200px" align="center" fixed="right"> + <template slot-scope="scope"> + <!--查看按钮--> + <el-tooltip effect="dark" content="编辑" placement="top-start" :enterable="false"> + <el-button type="primary" icon="el-icon-edit" size="mini" + @click="showEditDialogVisible(scope.$index,scope.row)">编辑 + </el-button> + </el-tooltip> + <!--取消调度按钮--> + <el-tooltip effect="dark" content="删除" placement="top-start" :enterable="false"> + <el-button type="danger" icon="el-icon-delete" size="mini" + :loading="delLoading" + :disabled="scope.row.vehicleStatus==='2'" + @click="removeVehicleInfo(scope.$index,scope.row)">删除 + </el-button> + </el-tooltip> + </template> + </el-table-column> + </el-table> + <!--分页区域--> + <div style="margin-top: 10px"> + <el-row :gutter="24"> + <el-col :span="5"> + <el-button type="danger" icon="el-icon-delete" @click="batchRemove" + :disabled="this.sels.length===0">批量删除 + </el-button> + </el-col> + <el-col :span="10" style="margin-top: 5px"> + <el-pagination + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + :current-page="queryInfo.pageNum" + :page-sizes="[10,20,30,50]" + :page-size="queryInfo.pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="total"> + </el-pagination> + </el-col> + </el-row> + </div> + </div> + </el-card> + <!-- 增加车辆信息对话框 --> + <div> + <el-dialog + style="margin-top: -50px" + title="增加车辆信息" + :visible.sync="addVehicleInfoFormVisible" + width="50%" @close="addVehicleInfoDialogClosed"> + <el-form :model="addVehicleInfoForm" label-width="100px" status-icon + :rules="addVehicleInfoFormRules" ref="addVehicleInfoFormRef" + style="margin-left:10%;margin-right:10%;background-color: #F5F7FA"> + <div style="margin-left: 30px"> + <br> + <el-form-item label="车牌号码:" prop="licensePlateNumber"> + <el-input v-model="addVehicleInfoForm.licensePlateNumber" clearable + style="width: 300px;" + placeholder="请输入车牌号码"></el-input> + </el-form-item> + <el-form-item label="行驶证号:" prop="drivingLicenseNumber"> + <el-input v-model="addVehicleInfoForm.drivingLicenseNumber" clearable + style="width: 300px;" + placeholder="请输入车辆行驶证号"></el-input> + </el-form-item> + <el-form-item label="车辆类型:" prop="vehicleType"> + <el-select v-model="addVehicleInfoForm.vehicleType" style="width: 300px" clearable + placeholder="请选择车辆类型"> + <el-option + v-for="item in vehicleTypeList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="车辆载重:" prop="vehicleLoad"> + <el-input-number style="width: 200px" v-model="addVehicleInfoForm.vehicleLoad" + :min="10" :max="10000" controls-position="right"> + </el-input-number> + <span style="margin-left:5px;font-size: 18px">Kg</span> + </el-form-item> + <el-form-item label="有无挂车:" prop="vehicleType"> + <el-select v-model="addVehicleInfoForm.isTrailer" style="width: 300px" clearable + placeholder="请选择有无挂车"> + <el-option + v-for="item in isTrailerList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="车辆公司:" prop="vehicleCompany"> + <el-input v-model="addVehicleInfoForm.vehicleCompany" clearable style="width: 300px;" + placeholder="请输入车辆公司"></el-input> + </el-form-item> + <br> + </div> + </el-form> + <!--底部按钮区域--> + <span slot="footer" class="dialog-footer"> + <el-button @click="addVehicleInfoFormVisible = false">取 消</el-button> + <el-button type="primary" :loading="addLoading" @click="addVehicleInfo">增 加</el-button> + </span> + </el-dialog> + </div> + <!-- 编辑车辆信息,对话框 --> + <div> + <el-dialog + title="编辑车辆信息" + text-align="center" + :visible.sync="editDialogVisible" + width="60%" @close="editVehicleInfoDialogClosed"> + <el-form :model="editVehicleInfoForm" label-width="100px" status-icon + :rules="editVehicleInfoFormRules" ref="editVehicleInfoFormRef" + :inline="true" align="center" + style="background-color: #F5F7FA"> + <div> + <br> + <el-form-item label="车牌号码:" prop="licensePlateNumber"> + <el-input v-model="editVehicleInfoForm.licensePlateNumber" clearable readonly + style="width:250px" + placeholder="请输入车牌号码"></el-input> + </el-form-item> + <el-form-item label="行驶证号:" prop="drivingLicenseNumber"> + <el-input v-model="editVehicleInfoForm.drivingLicenseNumber" clearable + style="width:250px" + placeholder="请输入车辆行驶证号"></el-input> + </el-form-item> + <el-form-item label="车辆类型:" prop="vehicleType"> + <el-select v-model="editVehicleInfoForm.vehicleType" clearable + style="width:250px" + placeholder="请选择车辆类型"> + <el-option + v-for="item in vehicleTypeList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="车辆载重:" prop="vehicleLoad"> + <el-input-number v-model="editVehicleInfoForm.vehicleLoad" + clearable style="width:220px" + :min="10" :max="10000" controls-position="right"> + </el-input-number> + <span style="margin-left:5px;font-size: 18px">Kg</span> + </el-form-item> + <el-form-item label="车辆状态:" prop="vehicleStatus"> + <el-select v-model="editVehicleInfoForm.vehicleStatus" clearable + style="width:250px" + clearable placeholder="请选择车辆状态"> + <el-option + v-for="item in vehicleStatusList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="有无挂车:" prop="vehicleType"> + <el-select v-model="editVehicleInfoForm.isTrailer" clearable + style="width:250px" clearable + placeholder="请选择有无挂车"> + <el-option + v-for="item in isTrailerList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="车辆公司:" prop="vehicleCompany"> + <el-input v-model="editVehicleInfoForm.vehicleCompany" clearable + style="width:250px" + placeholder="请输入车辆公司"></el-input> + </el-form-item> + <el-form-item label="空闲时间:" prop="freetime"> + <el-date-picker v-model="editVehicleInfoForm.freetime" type="datetime" + style="width:250px" + placeholder="选择调度时间"></el-date-picker> + </el-form-item> + <br> + </div> + </el-form> + <!--底部按钮区域--> + <span slot="footer" class="dialog-footer"> + <el-button @click="editDialogVisible = false">取 消</el-button> + <el-button type="primary" :loading="editLoading" @click="editVehicleInfo">编 辑</el-button> + </span> + </el-dialog> + </div> + </el-main> + </el-container> +</template> + +<script> + import { + selectVehicleInfoList, + insertVehicleInfo, + updateVehicleInfo, + batchRemoveVehicleInfo, + deleteVehicleInfo, deleteDispatchNote + } from "../../api/dispatch_api"; + + export default { + name: "dispatch_api", + created() { + //获取车辆信息列表 + this.getVehicleInfoList(); + }, + data() { + return { + /** + * 查询信息列表 + */ + queryInfo: { + //车牌号 + licensePlateNumber: '', + //车辆所属公司 + vehicleCompany: '', + //车辆状态 + vehicleStatus: '', + //车辆类型 + vehicleType: '', + //当前的页数 + pageNum: 1, + //当前每页显示多少条数据 + pageSize: 10 + }, + /** + * 设置,总条数 + */ + total: 0, + /** + * 批量删除,选中列表 + */ + sels: [], + /** + * 车辆信息列表 + */ + vehicleInfoList: [], + /** + * 新增车辆信息表单 + */ + addVehicleInfoForm: { + vehicleType: '2', + licensePlateNumber: '', + vehicleLoad: '', + isTrailer: '2', + vehicleCompany: '', + drivingLicenseNumber: '', + }, + /** + * 编辑车辆信息表单 + */ + editVehicleInfoForm: {}, + /** + * 控制,添加车辆信息对话框的显示与隐藏 + */ + addVehicleInfoFormVisible: false, + /** + * 控制,编辑车辆信息对话框的显示与隐藏 + */ + editDialogVisible: false, + /* 列表加载 */ + listLoading: false, + /* 添加加载 */ + addLoading: false, + /* 编辑加载 */ + editLoading: false, + /* 删除加载 */ + delLoading: false, + /** + * 车辆类型,选项列表 + */ + vehicleTypeList: [ + { + value: '1', + label: '重型货车' + }, + { + value: '2', + label: '中型货车' + }, + { + value: '3', + label: '经济货车' + }, + { + value: '4', + label: '微型货车' + }, + { + value: '5', + label: '拖车' + }, + { + value: '6', + label: '叉车' + } + ], + /** + * 挂车与否,列表 + */ + isTrailerList: [ + { + value: '1', + label: '有挂车' + }, + { + value: '2', + label: '没有挂车' + }, + ], + /** + * 车辆状态列表 + */ + vehicleStatusList: [ + { + value: '1', + label: '空闲状态' + }, + { + value: '2', + label: '执行状态' + }, + { + value: '3', + label: '在修状态' + }, + { + value: '4', + label: '损坏未修状态' + }, + { + value: '5', + label: '保养状态' + }, + ], + /** + * 添加车辆信息表单的验证规则对象 + */ + addVehicleInfoFormRules: { + vehicleType: [ + {required: true, message: '请选择车辆类型', trigger: ['blur', 'change']}, + ], + licensePlateNumber: [ + {required: true, message: '请输入车牌号', trigger: ['blur', 'change']}, + ], + vehicleLoad: [ + {required: true, message: '请输入车辆载重', trigger: ['blur', 'change']}, + ], + isTrailer: [ + {required: true, message: '请选择有无挂车', trigger: ['blur', 'change']}, + ], + vehicleCompany: [ + {required: true, message: '请输入车辆公司名称', trigger: ['blur', 'change']}, + ], + drivingLicenseNumber: [ + {required: true, message: '请输入车辆行驶证号', trigger: ['blur', 'change']}, + ], + }, + /** + * 编辑车辆信息表单的验证规则对象 + */ + editVehicleInfoFormRules: { + vehicleStatus: [ + {required: true, message: '请选择车辆状态', trigger: ['blur', 'change']}, + ], + freetime: [ + {required: true, message: '请选择开始空闲时间', trigger: ['blur', 'change']}, + ], + vehicleType: [ + {required: true, message: '请选择车辆类型', trigger: ['blur', 'change']}, + ], + licensePlateNumber: [ + {required: true, message: '请输入车牌号', trigger: ['blur', 'change']}, + ], + vehicleLoad: [ + {required: true, message: '请输入车辆载重', trigger: ['blur', 'change']}, + ], + isTrailer: [ + {required: true, message: '请选择有无挂车', trigger: ['blur', 'change']}, + ], + vehicleCompany: [ + {required: true, message: '请输入车辆公司名称', trigger: ['blur', 'change']}, + ], + drivingLicenseNumber: [ + {required: true, message: '请输入车辆行驶证号', trigger: ['blur', 'change']}, + ], + } + } + }, + methods: { + /** + * 管理员端,获取车辆信息列表 + */ + getVehicleInfoList() { + //开启加载 + this.listLoading = true; + selectVehicleInfoList(this.queryInfo).then((response) => { + let res = response.data; + if (res.code !== '200') { + //关闭加载 + this.listLoading = false; + return this.$message.error('获取车辆信息列表失败'); + } + // 获取车辆信息列表数据 + this.vehicleInfoList = res.data.list; + // 获取列表的总记录数 + this.total = res.data.total; + //关闭加载 + this.listLoading = false; + this.$message.success('获取车辆信息列表,成功'); + }).catch(error => { + this.listLoading = false; + this.$message.error(error.toString()); + }); + }, + /** + * 管理员端,增加车辆信息 + */ + addVehicleInfo() { + /*进行表单的预验证*/ + this.$refs.addVehicleInfoFormRef.validate(valid => { + // 未通过,表单预校验 + if (!valid) return; + // 通过,表单预检验,发起添加车辆信息的网络请求,开启加载 + this.addLoading = true; + insertVehicleInfo(this.addVehicleInfoForm).then((response) => { + let res = response.data; + //添加调度记录信息,失败 + if (res.code !== '200') { + //关闭加载 + this.addLoading = false; + if(res.code === '406'){ + return this.$message.error('该车牌号已存在,请重新填写'); + } + return this.$message.error('添加车辆信息,失败'); + } + //关闭加载 + this.addLoading = false; + this.$message.success('添加调度记录信息,成功'); + //隐藏对话框 + this.addVehicleInfoFormVisible = false; + //刷新车辆信息列表 + this.getVehicleInfoList(); + }).catch(error => { + this.addLoading = false; + this.$message.error(error.toString()); + }); + + }) + }, + /** + * 管理员端,删除车辆信息 + */ + removeVehicleInfo(index, row) { + //弹框询问是否删除车辆信息 + this.$confirm('此操作永久删除该车辆信息, 是否继续?', '警告', { + confirmButtonText: '确定删除', + cancelButtonText: '取消', + type: 'warning' + } + ).then(() => { + //开启加载 + this.delLoading = true; + deleteVehicleInfo(row).then((response) => { + let res = response.data; + if (res.code !== '200') { + //关闭加载 + this.delLoading = false; + return this.$message.error('删除车辆信息,失败'); + } + //关闭加载 + this.delLoading = false; + this.$message.success('删除车辆信息,成功!'); + //刷新车辆信息列表 + this.getVehicleInfoList(); + }).catch(error => { + this.delLoading = false; + this.$message.error(error.toString()); + }); + }).catch(() => { + }); + }, + + /** + * 批量删除,之前的选中 + */ + selsChange: function (sels) { + this.sels = sels; + }, + /** + * 车辆状态为执行状态的时候,无法被选中 + */ + isSelectable(row, index) { + if (row.vehicleStatus === '2') { + return false; + } else { + return true; + } + }, + /** + * 批量删除功能 + */ + batchRemove() { + var ids = this.sels.map(item => item.id).toString(); + console.log(ids); + //弹框询问是否批量删除选中的车辆调度记录 + this.$confirm('此操作永久删除选中的车辆信息, 是否继续?', '警告', { + confirmButtonText: '确定删除', + cancelButtonText: '取消', + type: 'warning' + } + ).then(() => { + //开启加载 + this.listLoading = true; + let params = {ids: ids}; + batchRemoveVehicleInfo(params).then(response => { + let res = response.data; + if (res.code !== '200') { + this.listLoading = false; + return this.$message.error('批量删除车辆信息,失败'); + } + this.$message.success('批量删除车辆信息,成功!'); + this.listLoading = false; + //刷新车辆信息列表 + this.getVehicleInfoList(); + }).catch(error => { + this.delLoading = false; + this.$message.error(error.toString()); + }); + }).catch(() => { + }); + }, + /** + * 管理员端,编辑车辆信息 + */ + editVehicleInfo() { + /*进行表单的预验证*/ + this.$refs.editVehicleInfoFormRef.validate(valid => { + // 未通过,表单预校验 + if (!valid) return; + // 通过,表单预校验,开启加载 + this.editLoading = true; + updateVehicleInfo(this.editVehicleInfoForm).then((response) => { + let res = response.data; + if (res.code !== '200') { + //关闭加载 + this.editLoading = false; + return this.$message.error('修改车辆信息,失败'); + } + //关闭加载 + this.editLoading = false; + this.$message.success('修改车辆信息,成功!'); + //关闭编辑车辆信息对话框 + this.editDialogVisible = false; + //刷新车辆信息列表 + this.getVehicleInfoList(); + }).catch(error => { + this.editLoading = false; + this.$message.error(error.toString()); + }); + }) + }, + + /** + * 添加车辆信息对话框,关闭时,重置对话框 + */ + addVehicleInfoDialogClosed() { + this.$refs.addVehicleInfoFormRef.resetFields(); + }, + /** + * 编辑车辆信息对话框,关闭时,重置对话框 + */ + editVehicleInfoDialogClosed() { + this.$refs.editVehicleInfoFormRef.resetFields(); + }, + /** + * 打开编辑车辆信息对话框 + */ + showEditDialogVisible(index, row) { + this.editVehicleInfoForm = Object.assign({}, row); + this.editDialogVisible = true; + }, + /** + * 监听pageSize改变的事件 + */ + handleSizeChange(newSize) { + this.queryInfo.pageSize = newSize; + //刷新车辆信息列表 + this.getVehicleInfoList(); + + }, + /** + * 监听当前页码值改变的事件 + */ + handleCurrentChange(newPage) { + this.queryInfo.pageNum = newPage; + //刷新车辆信息列表 + this.getVehicleInfoList(); + }, + } + } +</script> + +<style scoped> + +</style> diff --git a/src/views/nav1/perm.vue b/src/views/nav1/perm.vue index 2cd908f..930b756 100755 --- a/src/views/nav1/perm.vue +++ b/src/views/nav1/perm.vue @@ -4,13 +4,16 @@ <el-col :span="24" class="toolbar" style="padding-bottom: 0px;"> <el-form :inline="true" :model="filters"> <el-form-item> - <el-input v-model="filters.name" placeholder="权限名称"></el-input> + <el-input v-model="filters.name" placeholder="权限名称"> + <template slot="prepend">权限名称</template> + </el-input> + </el-form-item> <el-form-item> - <el-button type="primary" v-on:click="getTableList()">查询</el-button> + <el-button type="primary" v-on:click="getTableList()" icon="el-icon-search">查  询</el-button> </el-form-item> <el-form-item> - <el-button type="primary" @click="handleAdd">新增</el-button> + <el-button type="success" @click="handleAdd" icon="el-icon-document">新  增</el-button> </el-form-item> </el-form> </el-col> @@ -34,18 +37,19 @@ </el-table-column> <el-table-column prop="name" label="权限名称" min-width="150" sortable> </el-table-column> - <el-table-column prop="description" label="描述" min-width="120" sortable> - </el-table-column> +<!-- <el-table-column prop="description" label="描述" min-width="120" sortable>--> +<!-- </el-table-column>--> <el-table-column prop="ismenu" label="是否目录" width="100" :formatter="formatState" sortable> </el-table-column> <el-table-column prop="path" label="访问路径" width="300" sortable> </el-table-column> <el-table-column prop="permissionOrder" label="排序" width="100" sortable> </el-table-column> - <el-table-column label="操作" min-width="100" fixed="right"> + <el-table-column label="操作" min-width="150" fixed="right"> <template slot-scope="scope"> - <el-button size="small" @click="handleEdit(scope.$index, scope.row)">编辑</el-button> - <el-button type="danger" size="small" @click="handleDel(scope.$index, scope.row)">删除</el-button> + <el-button size="mini" @click="handleEdit(scope.$index, scope.row)">编辑</el-button> + <el-button type="success" @click="handleEdit(scope.$index, scope.row)">白名单</el-button> + <el-button type="danger" @click="handleDel(scope.$index, scope.row)">删除</el-button> </template> </el-table-column> </el-table> @@ -84,17 +88,17 @@ </el-row> <el-row :gutter="20"> <el-col> - <el-form-item label="权限总路径" prop="path"> + <el-form-item label="菜单访问路径" prop="path"> <el-input v-model="addForm.path" auto-complete="off" placeholder="设置为前端router的path值"></el-input> - <el-cascader-panel - v-model="addForm.path" - :options="cascaderOptions" - :props="pannelProps" - ></el-cascader-panel> +<!-- <el-cascader-panel--> +<!-- v-model="addForm.path"--> +<!-- :options="cascaderOptions"--> +<!-- :props="pannelProps"--> +<!-- ></el-cascader-panel>--> </el-form-item> </el-col> </el-row> - <el-form-item label="具体访问路径" prop="url"> + <el-form-item label="接口访问路径" prop="url"> <el-input v-model="addForm.url" auto-complete="off" placeholder="设置为后端微服务路径:例如:/cloud-user-center/user/update"></el-input> <el-cascader-panel v-model="addForm.url" @@ -436,7 +440,7 @@ } }, tableRowClassName({row, rowIndex}) { - if (row.parentId == 0) { + if (row.parentId === 0 || row.ismenu) { return 'warning-row'; } else { return 'success-row'; diff --git a/src/views/nav1/user.vue b/src/views/nav1/user.vue index d601775..0033194 100755 --- a/src/views/nav1/user.vue +++ b/src/views/nav1/user.vue @@ -4,16 +4,20 @@ <el-col :span="24" class="toolbar" style="padding-bottom: 0px;"> <el-form :inline="true" :model="filters"> <el-form-item> - <el-input v-model="filters.realName" placeholder="姓名"></el-input> + <el-input v-model="filters.realName" placeholder="真实姓名"> + <template slot="prepend">姓名</template> + </el-input> </el-form-item> <el-form-item> - <el-input v-model="filters.userName" placeholder="账号"></el-input> + <el-input v-model="filters.userName" placeholder="登录账号"> + <template slot="prepend">账号</template> + </el-input> </el-form-item> <el-form-item> - <el-button type="primary" v-on:click="getUsers">查询</el-button> + <el-button type="primary" v-on:click="getUsers" icon="el-icon-search">查询</el-button> </el-form-item> <el-form-item> - <el-button type="primary" @click="handleAdd">新增</el-button> + <el-button type="success" @click="handleAdd" icon="el-icon-document">新增</el-button> </el-form-item> </el-form> </el-col> @@ -23,7 +27,7 @@ @selection-change="selsChange" tooltip-effect="dark" style="border-radius: 10px 10px 0px 0px;line-height: 25px;" - :header-cell-style="{background:'#6F8294',color:'#FFFFFF'}" size="small"> + :header-cell-style="{background:'#6F8294',color:'#FFFFFF'}" > <el-table-column type="selection" width="55"> </el-table-column> <!--<el-table-column type="index" width="60">--> @@ -42,17 +46,17 @@ </el-table-column> <el-table-column prop="updatetime" label="更新时间" width="170" sortable> </el-table-column> - <el-table-column prop="address" label="地址" min-width="180"> - </el-table-column> - <el-table-column prop="email" label="Email" min-width="180"> - </el-table-column> +<!-- <el-table-column prop="address" label="地址" min-width="180">--> +<!-- </el-table-column>--> +<!-- <el-table-column prop="email" label="Email" min-width="180">--> +<!-- </el-table-column>--> <el-table-column prop="state" label="启用" width="100" :formatter="formatState" sortable> </el-table-column> <el-table-column label="操作" width="250" fixed="right"> <template slot-scope="scope"> - <el-button size="small" @click="roleEdit(scope.$index, scope.row)">角色配置</el-button> - <el-button size="small" @click="handleEdit(scope.$index, scope.row)">编辑</el-button> - <el-button type="danger" size="small" @click="handleDel(scope.$index, scope.row)">删除</el-button> + <el-button @click="handleEdit(scope.$index, scope.row)">编辑</el-button> + <el-button type="info" @click="roleEdit(scope.$index, scope.row)">角色配置</el-button> + <el-button type="danger" @click="handleDel(scope.$index, scope.row)">删除</el-button> </template> </el-table-column> </el-table> @@ -64,124 +68,126 @@ </el-pagination> </el-col> - <!--编辑界面--> - <el-dialog title="编辑" :visible.sync="editFormVisible" :close-on-click-modal="false"> - <el-form :model="editForm" label-width="80px" :rules="editFormRules" ref="editForm"> - - <el-form-item label="所属公司" prop="companyId"> - <el-select v-model="editForm.companyId" filterable placeholder="请选择"> - <el-option - v-for="item in options" - :key="item.roleId" - :label="item.roleName" - :value="item.roleId"> - </el-option> - </el-select> - </el-form-item> + <!--新增界面--> + <el-dialog :title="dialogMap[dialogStatus]" :visible.sync="addFormVisible" :close-on-click-modal="false"> + <el-form :model="addForm" label-width="80px" ref="addForm" class="user-form"> +<!-- <el-form-item label="所属公司" prop="companyId">--> +<!-- <el-select v-model="addForm.companyId" filterable placeholder="请选择">--> +<!-- <el-option--> +<!-- v-for="item in options"--> +<!-- :key="item.roleId"--> +<!-- :label="item.roleName"--> +<!-- :value="item.roleId">--> +<!-- </el-option>--> +<!-- </el-select>--> +<!-- </el-form-item>--> <el-form-item label="ID"> - <span>{{editForm.userId}}</span> - </el-form-item> - <el-form-item label="账号"> - <span>{{editForm.username}}</span> - </el-form-item> - <el-form-item label="密码" prop="password"> - <el-input v-model="editForm.password" auto-complete="off" type="password" show-password></el-input> - </el-form-item> - <el-form-item label="姓名" prop="realname"> - <el-input v-model="editForm.realname" auto-complete="off"></el-input> - </el-form-item> - <el-form-item label="电话" prop="mobilephone"> - <el-input v-model="editForm.mobilephone" auto-complete="off"></el-input> - </el-form-item> - <el-form-item label="Email" prop="email"> - <el-input v-model="editForm.email" auto-complete="off"></el-input> - </el-form-item> - <el-form-item label="性别"> - <el-radio-group v-model="editForm.sex"> - <el-radio class="radio" label="1" >男</el-radio> - <el-radio class="radio" label="0" >女</el-radio> - </el-radio-group> - </el-form-item> - <el-form-item label="年龄"> - <el-input-number v-model="editForm.age" :min="0" :max="200"></el-input-number> - </el-form-item> - <!--<el-form-item label="创建日期">--> - <!--<el-date-picker type="date" placeholder="创建日期" v-model="editForm.creattime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd HH:mm:ss"></el-date-picker>--> - <!--</el-form-item>--> - <el-form-item label="地址"> - <el-input type="textarea" v-model="editForm.address"></el-input> + <span>{{addForm.userId}}</span> </el-form-item> - <el-form-item label="启用"> - <el-radio-group v-model="editForm.state"> - <el-radio class="radio" label="true" >是</el-radio> - <el-radio class="radio" label="false" >否</el-radio> - </el-radio-group> - </el-form-item> - <el-form-item lable="头像"> - <el-upload - class="avatar-uploader" - action="http://127.0.0.1:7003/upload" - :show-file-list="true" - accept="image/jpeg,image/jpg,image/png" - :on-success="handleAvatarSuccess" - :before-upload="beforeAvatarUpload" + <el-row> + <el-col :span="12"> + <el-form-item label=" " prop="username" :rules="addFormRules.username"> + <el-input v-model="addForm.username" aria-placeholder="用户名长度在5-11位,支持英文和数字"> + <template slot="prepend">账 号</template> + </el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label=" " prop="realname"> + <el-input v-model="addForm.realname"> + <template slot="prepend">姓 名</template> + </el-input> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="12"> + <el-form-item label=" " prop="password" :rules="dialogStatus==='update'?[{ required: false}]:addFormRules.password"> + <el-input v-model="addForm.password" type="password" show-password :disabled="dialogStatus==='update'"> + <template slot="prepend">密 码</template> + </el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label=" " prop="checkPass" :rules="dialogStatus==='update'?[{ required: false}]:addFormRules.checkPass"> + <el-input v-model="addForm.checkPass" type="password" show-password :disabled="dialogStatus==='update'"> + <template slot="prepend">确认密码</template> + </el-input> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="12"> + <el-form-item label=" " prop="email"> + <el-input v-model="addForm.email"> + <template slot="prepend">Email </template> + </el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label=" " prop="address"> + <el-input v-model="addForm.address"> + <template slot="prepend">地 址</template> + </el-input> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="12"> + <el-form-item label=" " prop="mobilephone"> + <el-input v-model="addForm.mobilephone"> + <template slot="prepend">电 话</template> + </el-input> + </el-form-item> + </el-col> + </el-row> + <el-divider></el-divider> + <el-row> + <el-col :span="12"> + <el-form-item label="性别" prop="sex"> + <el-radio-group v-model="addForm.sex"> + <el-radio class="radio" :label="1">男</el-radio> + <el-radio class="radio" :label="0">女</el-radio> + </el-radio-group> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="启用" prop="state"> + <el-radio-group v-model="addForm.state"> + <el-radio class="radio" :label="true" >是</el-radio> + <el-radio class="radio" :label="false" >否</el-radio> + </el-radio-group> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="24"> + <el-form-item label="年龄" prop="age"> + <el-input-number v-model="addForm.age" :min="0" :max="200"></el-input-number> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="24"> + <el-form-item lable="头像" prop="userface"> + <el-upload + class="avatar-uploader" + action="http://127.0.0.1:7003/upload" + :show-file-list="true" + accept="image/jpeg,image/jpg,image/png" + :on-success="handleAvatarSuccess" + :before-upload="beforeAvatarUpload" > - <img v-if="faceImageUrl" :src="faceImageUrl" class="avatar"> - <i v-else class="el-icon-plus avatar-uploader-icon"></i> - </el-upload> - </el-form-item> - </el-form> - <div slot="footer" class="dialog-footer"> - <el-button @click.native="editFormVisible = false">取消</el-button> - <el-button type="primary" @click.native="editSubmit" :loading="editLoading">提交</el-button> - </div> - </el-dialog> - - <!--新增界面--> - <el-dialog title="新增" :visible.sync="addFormVisible" :close-on-click-modal="false"> - <el-form :model="addForm" label-width="80px" :rules="addFormRules" ref="addForm"> - - <el-form-item label="所属公司" prop="companyId"> - <el-select v-model="addForm.companyId" filterable placeholder="请选择"> - <el-option - v-for="item in options" - :key="item.roleId" - :label="item.roleName" - :value="item.roleId"> - </el-option> - </el-select> - </el-form-item> - <el-form-item label="账号" prop="username"> - <el-input v-model="addForm.username" aria-placeholder="用户名长度在5-11位,支持英文和数字"></el-input> - </el-form-item> - <el-form-item label="密码" prop="password"> - <el-input v-model="addForm.password" type="password"></el-input> - </el-form-item> - <el-form-item label="姓名" prop="realname"> - <el-input v-model="addForm.realname"></el-input> - </el-form-item> - <el-form-item label="电话" prop="mobilephone"> - <el-input v-model="addForm.mobilephone"></el-input> - </el-form-item> - <el-form-item label="Email" prop="email"> - <el-input v-model="addForm.email"></el-input> - </el-form-item> - <el-form-item label="性别"> - <el-radio-group v-model="addForm.sex"> - <el-radio class="radio" label="1">男</el-radio> - <el-radio class="radio" label="0">女</el-radio> - </el-radio-group> - </el-form-item> - <el-form-item label="年龄" prop="age"> - <el-input-number v-model="addForm.age" :min="0" :max="200"></el-input-number> - </el-form-item> - <el-form-item label="地址"> - <el-input type="textarea" v-model="addForm.address"></el-input> - </el-form-item> + <img v-if="faceImageUrl" :src="faceImageUrl" class="avatar"> + <i v-else class="el-icon-plus avatar-uploader-icon"></i> + </el-upload> + </el-form-item> + </el-col> + </el-row> </el-form> <div slot="footer" class="dialog-footer"> <el-button @click.native="addFormVisible = false">取消</el-button> - <el-button type="primary" @click.native="addSubmit" :loading="addLoading">提交</el-button> + <el-button type="primary" @click.native="dialogStatus==='create'?addSubmit():editSubmit()" :loading="addLoading">提交</el-button> </div> </el-dialog> @@ -215,6 +221,16 @@ import moment from 'moment' export default { data() { + var validatePass = (rule, value, callback) => { + if (value === '') { + callback(new Error('请输入密码')); + } else { + if (this.checkPass !== '') { + this.$refs.addForm.validateField('checkPass'); + } + callback(); + } + }; return { filters: { userName: '', @@ -224,6 +240,11 @@ children: 'children', label: 'roleName', }, + dialogMap: { + update: '编辑', + create: '新增', + }, + dialogStatus: 'create', users: [], total: 0, pageNum: 1, @@ -232,28 +253,6 @@ listLoading: false, sels: [],//列表选中列 //编辑界面是否显示 - editFormVisible: false, - editLoading: false, - editFormRules: { - name: [ - { required: true, message: '请输入姓名', trigger: 'blur' } - ] - }, - //编辑界面数据 - editForm: { - userId: 1, - username: '', - password: '', - sex: 1, - creattime: '', - address: '', - realname: '', - email: '', - mobilephone: '', - state: 'true', - companyId:'' - }, - addFormVisible: false,//新增界面是否显示 addLoading: false, addFormRules: { @@ -263,14 +262,17 @@ password: [ { required: true, message: '请输入密码,用户名长度在6-18位,支持英文和数字和非空字符', trigger: 'blur'} ], - companyId: [ - { required: true, message: '请选择所属您的所属公司', trigger: 'blur' }, + checkPass: [ + { required: true, message: '请输入密码,用户名长度在6-18位,支持英文和数字和非空字符', trigger: 'blur'} ] }, //用户角色配置 roleFormVisible: false, //新增界面数据 + addForm: { + checkPass:'', + userId: 0, username: '', password: '', sex: 1, @@ -279,7 +281,7 @@ email: '', mobilephone: '', age: 1, - companyId:'' + state: true }, roleEditForm: { userId: 1, @@ -288,8 +290,7 @@ }, roles: [], roleIds: [], - options: [] - + options: [], } }, methods: { @@ -367,8 +368,9 @@ * @param row 为这行的数据对象 */ handleEdit: function (index, row) { - this.editFormVisible = true; - this.editForm = Object.assign({}, row); + this.addFormVisible = true; + this.dialogStatus= 'update', + this.addForm = Object.assign({}, row); }, roleEdit: function (index, row) { this.roleFormVisible = true; @@ -414,30 +416,33 @@ //显示新增界面,每次点开初始化数据 handleAdd: function () { this.addFormVisible = true; + this.dialogStatus= 'create', this.addForm = { username: '', password: '', + checkPass: '', sex: 1, address: '', realname: '', email: '', mobilephone: '', age: 1, - companyId:'' + state: true }; }, //编辑 editSubmit: function () { - this.$refs.editForm.validate((valid) => { + this.$refs.addForm.validate((valid) => { if (valid) { this.$confirm('确认提交吗?', '提示', {}).then(() => { this.editLoading = true; //NProgress.start(); - let para = Object.assign({}, this.editForm); + let para = Object.assign({}, this.addForm); //不需要提交的 去掉,后端不好接收 para.authorities = null; para.permissions = null; para.roles = null; + this.$delete(para,'checkPass') // para.birth = (!para.birth || para.birth == '') ? '' : util.formatDate.format(new Date(para.birth), 'yyyy-MM-dd'); /* 查询之后格式this.filters.column.create_start_date中日期发生变化; @@ -455,8 +460,8 @@ message: '提交成功', type: 'success' }); - this.$refs['editForm'].resetFields(); - this.editFormVisible = false; + this.$refs['addForm'].resetFields(); + this.addFormVisible = false; this.getUsers(); }).catch(error => alert(error)); }); @@ -470,6 +475,7 @@ this.$confirm('确认提交吗?', '提示', {}).then(() => { this.addLoading = true; let para = Object.assign({}, this.addForm); + this.$delete(para,'checkPass') // para.birth = (!para.birth || para.birth == '') ? '' : util.formatDate.format(new Date(para.birth), 'yyyy-MM-dd'); addUser(para).then((res) => { this.addLoading = false; @@ -557,7 +563,7 @@ }, mounted() { this.getUsers(); - this.getCompanyNmae(); + // this.getCompanyNmae(); }, computed: { hideShow() {//当图片多于一张的时候,就隐藏上传框 @@ -568,6 +574,17 @@ </script> -<style scoped> +<style lang="scss"> + .user-form{ + .el-form-item__label{ + font-size: 12px; + } + .el-form-item__content{ + width: 260px; + .el-textarea{ + width:100%; + } + } + } </style> diff --git a/src/views/nav3/Dispatch.vue b/src/views/nav3/Dispatch.vue deleted file mode 100644 index 09d9f45..0000000 --- a/src/views/nav3/Dispatch.vue +++ /dev/null @@ -1,725 +0,0 @@ -<template> - <el-container> - <el-main> - <el-card style="background-color: #F5F7FA"> - <!-- 搜素区域 --> - <div> - <el-form :model="queryInfo" :rules="queryFormRules" ref="queryFormRef" status-icon> - <el-form-item> - <el-col :span="4"> - <el-form-item prop="gmtCreate"> - <el-date-picker v-model="queryInfo.gmtCreate" type="date" value-format="yyyy-MM-dd" - placeholder="选择创建调度时间" - style="width: 200px"></el-date-picker> - </el-form-item> - </el-col> - <el-col :span="4" style="margin-left: 50px"> - <el-form-item prop="dispatchType"> - <el-select v-model="queryInfo.dispatchType" placeholder="请选择业务类型" - style="width: 200px" - clearable> - <el-option - v-for="item in dispatchTypeList" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="4" style="margin-left: 50px"> - <el-form-item prop="status"> - <el-select v-model="queryInfo.status" placeholder="记录状态" clearable - style="width:200px;margin-left: 6px"> - <el-option - v-for="item in statusList" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-form-item> - </el-col> - <el-button type="primary" style="margin-left: 60px" - @click="getDispatchNodeList">查询调度记录 - </el-button> - <el-button type="success" style="margin-left: 15px" @click="dispatchFormVisible = true"> - 我要调度车辆 - </el-button> - </el-form-item> - </el-form> - <el-row style="margin-top: 20px;"> - </el-row> - </div> - <!--调度记录列表区域--> - <div style="margin-top: 20px;"> - <el-table :data="DispatchNoteList" border highlight-current-row v-loading="listLoading" - :row-class-name="rowStatus" - element-loading-text="拼命加载中"> - <el-table-column type="index" align="center"></el-table-column> - <el-table-column label="用户名称" prop="userName" align="center" width="100"></el-table-column> - <el-table-column label="联系方式" prop="userMobile" align="center" width="120"></el-table-column> - <el-table-column label="状态" prop="status" align="center" width="120"> - <template slot-scope="scope"> - <span v-if="scope.row.status ==='1'">完成状态</span> - <span v-if="scope.row.status ==='2'">执行状态</span> - <span v-if="scope.row.status ==='3'">取消状态</span> - <span v-if="scope.row.status ==='4'">待执行状态</span> - </template> - </el-table-column> - <el-table-column label="业务类型" prop="dispatchType" align="center" width="120"> - <template slot-scope="scope"> - <span v-if="scope.row.dispatchType ==='1'">进站送货</span> - <span v-if="scope.row.dispatchType ==='2'">出站提货</span> - <span v-if="scope.row.dispatchType ==='3'">货物调拨</span> - <span v-if="scope.row.dispatchType ==='4'">货物流转</span> - </template> - </el-table-column> - <el-table-column label="车牌号码" prop="licensePlateNumber" align="center" - width="120"></el-table-column> - <el-table-column label="车辆类型" prop="vehicleType" align="center" width="120"> - <template slot-scope="scope"> - <span v-if="scope.row.vehicleType ==='1'">重型货车</span> - <span v-if="scope.row.vehicleType ==='2'">中型货车</span> - <span v-if="scope.row.vehicleType ==='3'">轻型货车</span> - <span v-if="scope.row.vehicleType ==='4'">微型货车</span> - <span v-if="scope.row.vehicleType ==='5'">拖车</span> - <span v-if="scope.row.vehicleType ==='6'">叉车</span> - </template> - </el-table-column> - <el-table-column label="场站位置" prop="station" align="center" width="120"> - <template slot-scope="scope"> - <span v-if="scope.row.station ==='1'">西货站</span> - <span v-if="scope.row.station ==='2'">综保区</span> - <span v-if="scope.row.station ==='3'">军投</span> - <span v-if="scope.row.station ==='4'">快邮</span> - </template> - </el-table-column> - <el-table-column label="创建时间" prop="gmtCreate" align="center" width="160"></el-table-column> - <el-table-column label="开始时间" prop="beginTime" align="center" width="160"></el-table-column> - <el-table-column label="完成时间" prop="endTime" align="center" width="160"></el-table-column> - <el-table-column label="操作" width="220px" fixed="right" align="center"> - <template slot-scope="scope"> - <!--查看按钮--> - <el-tooltip effect="dark" content="查看" placement="top-start" :enterable="false"> - <el-button type="primary" icon="el-icon-edit" size="mini" - @click="showDialogVisible(scope.row)">查看 - </el-button> - </el-tooltip> - <!--取消调度按钮--> - <el-tooltip effect="dark" content="取消调度" placement="top-start" :enterable="false"> - <el-button type="danger" icon="el-icon-delete" size="mini" - :disabled="scope.row.endTime!==null && scope.row.endTime!==''" - @click="cancelDispatch(scope.row)" :loading="cancelLoading">取消调度 - </el-button> - </el-tooltip> - </template> - </el-table-column> - </el-table> - <!--分页区域--> - <div style="margin-top: 10px"> - <el-pagination - @size-change="handleSizeChange" - @current-change="handleCurrentChange" - :current-page="this.queryInfo.pageNum" - :page-sizes="[10,20,30,50]" - :page-size="this.queryInfo.pageSize" - layout="total, sizes, prev, pager, next, jumper" - :total="total"> - </el-pagination> - </div> - </div> - </el-card> - <!-- 我要调度车辆,对话框 --> - <div> - <el-dialog - title="我要调度车辆" - :visible.sync="dispatchFormVisible" - width="50%" @close="dispatchDialogClosed"> - <!-- :rules="dispatchFormRules" ref="dispatchFormRef"--> - <el-form :model="dispatchForm" label-width="100px" status-icon - :rules="dispatchFormRules" ref="dispatchFormRef" - style="margin-left:10%;margin-right:10%;background-color: #F5F7FA"> - <br> - <el-form-item label="车辆类型:" prop="vehicleType"> - <el-select v-model="dispatchForm.vehicleType" style="width: 300px" clearable - placeholder="请选择车辆类型"> - <el-option - v-for="item in vehicleTypeList" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-form-item> - <el-form-item label="车辆数量:" prop="vehicleNumber"> - <el-input-number style="width: 200px" v-model="dispatchForm.vehicleNumber" - :min="1" :max="100" controls-position="right"> - </el-input-number> - <span style="margin-left:5px;font-size: 18px">辆</span> - </el-form-item> - <el-form-item label="场站位置:" prop="station"> - <el-select v-model="dispatchForm.station" style="width: 300px" clearable - placeholder="请选择场站位置"> - <el-option - v-for="item in stationList" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-form-item> - <el-form-item label="业务类型:" prop="dispatchType"> - <el-select v-model="dispatchForm.dispatchType" style="width: 300px;" clearable - placeholder="请选择业务类型"> - <el-option - v-for="item in dispatchTypeList" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-form-item> - <br> - </el-form> - <!--底部按钮区域--> - <span slot="footer" class="dialog-footer"> - <el-button @click="dispatchFormVisible = false">取 消</el-button> - <el-button type="primary" @click="dispatchVehicle" :loading="dispatchLoading">确定调度车辆</el-button> - </span> - </el-dialog> - </div> - <!-- 查看调度记录,对话框 --> - <div> - <el-dialog - style="margin-top: -50px" - title="查看调度记录明细" - :visible.sync="viewDialogVisible" - text-align="center" - width="60%" @close="showDialogClosed"> - <!-- 表单显示区域 :rules="dispatchFormRules" --> - <el-form :model="showForm" ref="showFormRef" - :inline="true" align="center" - style="background-color: #F5F7FA;margin-left: 5%;margin-right: 5%"> - <div style="margin-top: -15px"> - <br> - <el-form-item label="用户名称:" prop="userName"> - <el-input v-model="showForm.userName" style="width: 200px;" size="small" - readonly></el-input> - </el-form-item> - <el-form-item label="联系方式:" prop="userMobile"> - <el-input v-model="showForm.userMobile" style="width: 200px;" size="small" - readonly></el-input> - </el-form-item> - <el-form-item label="车辆类型:" prop="vehicleType"> - <el-select v-model="showForm.vehicleType" style="width:200px" size="small" readonly - placeholder="请选择车辆类型"> - <el-option - v-for="item in vehicleTypeList" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-form-item> - <el-form-item label="车牌号码:" prop="licensePlateNumber"> - <el-input v-model="showForm.licensePlateNumber" style="width: 200px;" size="small" - readonly></el-input> - </el-form-item> - <el-form-item label="场站位置:" prop="station"> - <el-select v-model="showForm.station" style="width:200px" readonly size="small" - placeholder="请选择场站位置"> - <el-option - v-for="item in stationList" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-form-item> - <el-form-item label="业务类型:" prop="dispatchType"> - <el-select v-model="showForm.dispatchType" style="width:200px" readonly size="small" - placeholder="请选择业务类型"> - <el-option - v-for="item in dispatchTypeList" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-form-item> - <el-form-item label="创建时间:" prop="gmtCreate"> - <el-input v-model="showForm.gmtCreate" style="width: 200px;" size="small" - readonly></el-input> - </el-form-item> - <el-form-item label="开始时间:" prop="beginTime"> - <el-input v-model="showForm.beginTime" style="width: 200px;" size="small" - readonly></el-input> - </el-form-item> - <el-form-item label="结束时间:" prop="endTime"> - <el-input v-model="showForm.endTime" style="width: 200px;" size="small" - readonly></el-input> - </el-form-item> - <el-form-item label="记录状态:" prop="status"> - <el-select v-model="showForm.status" placeholder="记录状态" style="width:200px" size="small" - readonly> - <el-option - v-for="item in statusList" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-form-item> - <br> - </div> - </el-form> - <!--底部按钮区域--> - <span slot="footer" class="dialog-footer"> - <el-button type="primary" @click="viewDialogVisible = false">结束查看</el-button> - </span> - </el-dialog> - </div> - </el-main> - </el-container> -</template> - -<script> - // import {selectDispatchNoteList, dispatch, cancel, getUser} from '../../api/dispatch_api' - - export default { - name: 'dispatch_api', - created() { - - }, - data() { - /** - * 验证手机号的自定义规则 - */ - var userMobileValid = (rule, value, callback) => { - //验证手机号的正则表达式 - const regMobile = /^(0|86|17951)?(13[0-9]|15[0123456789]|17[678]|18[0-9]|14[57])[0-9]{8}$/; - if (regMobile.test(value)) { - //合法的手机号 - return callback(); - } - callback(new Error('请输入合法的手机号')); - }; - return { - /** - * 查询列表 - */ - queryInfo: { - //用户姓名 - userName: '', - //用户联系方式 - userMobile: '', - //记录状态 - status: '', - //调度时间 - gmtCreate: new Date(), - //业务类型 - dispatchType: '', - //当前的页数 - pageNum: 1, - //当前每页显示多少条数据 - pageSize: 10 - }, - /** - * 记录列表,总条数 - */ - total: 0, - /** - * 所有,调度记录列表 - */ - DispatchNoteList: [], - /** - * 我要调度车辆,表单 - */ - dispatchForm: { - userName: '', - userMobile: '', - //车辆数量 - vehicleNumber: 1, - //车辆类型 - vehicleType: '2', - //场站位置 - station: '1', - //调度业务类型 - dispatchType: '1' - }, - - /** - * 查看记录明细,表单 - */ - showForm: {}, - /** - * 控制添加用户对话框的显示与隐藏 - */ - dispatchFormVisible: false, - /** - * 控制查看调度记录明细,对话框的显示与隐藏 - */ - viewDialogVisible: false, - /** - * loading加载 - */ - /* 获取列表时的加载 */ - listLoading: false, - /* 调度车辆时的加载 */ - dispatchLoading: false, - /* 取消调度时的加载 */ - cancelLoading: false, - /** - * 业务类型,选项列表 - */ - dispatchTypeList: [ - { - value: '1', - label: '进站送货' - }, - { - value: '2', - label: '出站提货' - }, - { - value: '3', - label: '货物流转' - }, - { - value: '4', - label: '货物调拨' - } - ], - /** - * 车辆类型,选项列表 - */ - vehicleTypeList: [ - { - value: '1', - label: '重型货车' - }, - { - value: '2', - label: '中型货车' - }, - { - value: '3', - label: '经济货车' - }, - { - value: '4', - label: '微型货车' - }, - { - value: '5', - label: '拖车' - }, - { - value: '6', - label: '叉车' - } - ], - /** - * 记录状态,列表 - */ - statusList: [ - { - value: '1', - label: '完成状态' - }, - { - value: '2', - label: '执行状态' - }, - { - value: '3', - label: '取消状态' - }, - { - value: '4', - label: '待执行状态' - } - ], - - /** - * 场站位置,选项列表 - */ - stationList: [ - { - value: '1', - label: '西货站' - }, - { - value: '2', - label: '综保区' - }, - { - value: '3', - label: '军投' - }, - { - value: '4', - label: '快邮' - } - ], - - queryFormRules: { - userName: [ - {required: true, message: '请输入姓名', trigger: ['blur', 'change']}, - ], - userMobile: [ - {required: true, message: '请输入联系方式', trigger: ['blur', 'change']}, - {validator: userMobileValid, trigger: 'blur'} - ], - }, - /** - * 调度车辆表单的验证规则对象 - */ - dispatchFormRules: { - status: [ - {required: true, message: '请选择记录状态', trigger: ['blur', 'change']}, - ], - gmtCreate: [ - {required: true, message: '请选择创建时间', trigger: ['blur', 'change']}, - ], - endTime: [ - {required: true, message: '请选择结束时间', trigger: ['blur', 'change']}, - ], - licensePlateNumber: [ - {required: true, message: '请输入车牌号', trigger: ['blur', 'change']}, - ], - userName: [ - {required: true, message: '请输入姓名', trigger: ['blur', 'change']}, - ], - userMobile: [ - {required: true, message: '请输入联系方式', trigger: ['blur', 'change']}, - {validator: userMobileValid, trigger: 'blur'} - ], - vehicleType: [ - {required: true, message: '请选择车辆类型', trigger: ['blur', 'change']}, - - ], - vehicleNumber: [ - {required: true, message: '请选择车辆数量', trigger: ['blur', 'change']}, - ], - station: [ - {required: true, message: '请选择场站位置', trigger: ['blur', 'change']}, - ], - dispatchType: [ - {required: true, message: '请选择调度业务类型', trigger: ['blur', 'change']}, - ], - }, - } - }, - methods: { - /** - * 监听,调度车辆对话框的关闭事件 - */ - dispatchDialogClosed() { - //重置对话框 - this.$refs.dispatchFormRef.resetFields(); - }, - - /** - * 监听,查看调度记录对话框的关闭事件 - */ - showDialogClosed() { - //重置对话框 - this.$refs.showFormRef.resetFields(); - }, - - /** - * 监听pageSize改变的事件 - */ - handleSizeChange(newSize) { - this.queryInfo.pageSize = newSize; - //刷新调度记录列表 - this.getDispatchNodeList(); - }, - /** - * 监听当前页码值改变的事件 - */ - handleCurrentChange(newPage) { - this.queryInfo.pageNum = newPage; - //刷新调度记录列表 - this.getDispatchNodeList(); - }, - /** - * 打开,查看调度记录明细,对话框 - * @param row - */ - showDialogVisible(row) { - this.showForm = row; - this.viewDialogVisible = true; - }, - /** - * 用户端,获取车辆调度记录 - */ - getDispatchNodeList() { - this.listLoading = true; - selectDispatchNoteList(this.queryInfo).then((response) => { - let res = response.data; - if (res.code !== '200') { - this.listLoading = false; - return this.$message.error('获取车辆调度列表失败'); - } - // 获取车辆调度列表数据 - this.DispatchNoteList = res.data.list; - // 获取列表的总记录数 - this.total = res.data.total; - this.listLoading = false; - this.$message.success('获取车辆调度列表,成功!'); - }).catch(error => { - this.listLoading = false; - this.$message.error(error.toString()); - }); - }, - /** - * 用户端,我要调度车辆,方法 - */ - dispatchVehicle() { - this.dispatchLoading = true; - dispatch(this.dispatchForm).then((response) => { - let res = response.data; - if (res.code !== '200') { - this.dispatchLoading = false; - return this.$message.error('车辆繁忙,请稍后重试'); - } - //关闭加载 - this.dispatchLoading = false; - this.$message.success('调度车辆成功!'); - //调度成功,隐藏对话框 - this.dispatchFormVisible = false; - /* 将调度车辆信息=>查询列表 */ - // 用户名称 - this.queryInfo.userName = this.dispatchForm.userName; - // 联系方式 - this.queryInfo.userMobile = this.dispatchForm.userMobile; - // 调度业务类型 - this.queryInfo.dispatchType = this.dispatchForm.dispatchType; - // 创建时间为当前时间(需留意) - this.queryInfo.gmtCreate = new Date(); - //刷新车辆调度列表 - this.getDispatchNodeList(); - }).catch(error => { - this.dispatchLoading = false; - this.$message.error(error.toString()); - }); - }, - /** - * 用户端,取消调度车辆,方法 - */ - cancelDispatch(row) { - //弹框询问是否取消车辆调度 - this.$confirm('此操作将取消该车辆的调度, 是否继续?', '警告', { - confirmButtonText: '确定取消调度', - cancelButtonText: '取消', - type: 'warning' - } - ).then(() => { - //开启加载 - this.cancelLoading = true; - cancel(row).then((response) => { - let res = response.data; - if (res.code !== '200') { - this.cancelLoading = false; - return this.$message.error('取消车辆调度,失败!请人工介入'); - } - //关闭加载 - this.cancelLoading = false; - this.$message.success('取消调度车辆,成功!'); - //刷新车辆调度列表 - this.getDispatchNodeList(); - }).catch(error => { - //关闭加载 - this.cancelLoading = false; - this.$message.error(error.toString()); - }); - }).catch(() => { - }); - }, - /** - * 获取用户信息 - */ - getUserInfo(param) { - getUser(param).then((response) => { - let res = response.data; - if (res.code !== '200') { - return this.$message.error('网络异常,请刷新界面!'); - } - if (res.data.list.length === 0) { - return this.$message.error('网络异常,请刷新界面!'); - } - if (res.data.list[0].mobilephone === null || res.data.list[0].mobilephone === '') { - return this.$message.error('请填写您的手机号码'); - } - this.queryInfo.userMobile = res.data.list[0].mobilephone; - this.dispatchForm.userMobile = res.data.list[0].mobilephone; - this.$message.success('欢迎使用,车辆调度系统!'); - }).catch((error) => { - this.$message.error(error.toString()); - }); - }, - /** - * 根据状态的不同区分颜色 - * - * @param row - * @param rowIndex - */ - rowStatus({row, rowIndex}) { - if (row.status === '1') { - return 'success-row'; - } - if (row.status === '2') { - return 'run-row'; - } - if (row.status === '3') { - return 'cancel-row'; - } - if (row.status === '4') { - return 'await-row'; - } - } - }, - mounted() { - var user = sessionStorage.getItem('user'); - if (user) { - user = JSON.parse(user); - console.log(user); - this.queryInfo.userName = user.username; - this.dispatchForm.userName = user.username; - let param = { - userName: this.queryInfo.userName - }; - this.getUserInfo(param); - } - /** - * 渲染完成之后,在获取调度记录列表 - */ - // this.getDispatchNodeList(); - } - } -</script> - -<style> - /* 完成状态 */ - .el-table .success-row { - background: rgba(64, 158, 255, 0.2); - } - - /* 执行状态 */ - .el-table .run-row { - background: rgba(103, 194, 58, 0.2); - } - - /* 取消状态 */ - .el-table .cancel-row { - background: rgba(144, 147, 153, 0.2); - } - - /* 待执行状态 */ - .el-table .await-row { - background: rgba(230, 162, 60, 0.2); - } -</style> diff --git a/src/views/nav3/DriverInfo.vue b/src/views/nav3/DriverInfo.vue deleted file mode 100644 index 7ea7f10..0000000 --- a/src/views/nav3/DriverInfo.vue +++ /dev/null @@ -1,654 +0,0 @@ -<template> - <el-container> - <el-main> - <!--面包屑导航区域--> - <!-- <div>--> - <!-- <el-breadcrumb separator-class="el-icon-arrow-right">--> - <!-- <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>--> - <!-- <el-breadcrumb-item>车辆调度</el-breadcrumb-item>--> - <!-- <el-breadcrumb-item>驾驶员信息</el-breadcrumb-item>--> - <!-- </el-breadcrumb>--> - <!-- </div>--> - <el-card style="background-color: #F5F7FA"> - <!--搜索区域--> - <div> - <el-row :gutter="24"> - <el-col :span="5"> - <el-input v-model="queryInfo.driverName" prefix-icon="el-icon-search" clearable - placeholder="请输入驾驶员姓名"></el-input> - </el-col> - <el-col :span="5"> - <el-input v-model="queryInfo.driverMobile" prefix-icon="el-icon-search" clearable - placeholder="请输入联系方式"></el-input> - </el-col> - <el-col :span="5"> - <el-input v-model="queryInfo.driverCompany" prefix-icon="el-icon-search" clearable - placeholder="请输入公司名称"></el-input> - </el-col> - <el-col :span="5"> - <el-select v-model="queryInfo.driverStatus" clearable placeholder="请选择驾驶员状态"> - <el-option - v-for="item in driverStatusList" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-col> - </el-row> - <el-row style="margin-top: 20px;"> - <el-button type="primary" @click="getDriverInfoList">查询驾驶员信息</el-button> - <el-button type="success" @click="addDriverInfoFormVisible = true">增加驾驶员信息</el-button> - </el-row> - </div> - <!--驾驶员信息列表区域--> - <div style="margin-top: 20px;"> - <el-table :data="driverInfoList" border stripe highlight-current-row v-loading="listLoading" - @selection-change="selsChange" - element-loading-text="拼命加载中"> - <el-table-column type="selection" width="55" :selectable="isSelectable" align="center"></el-table-column> - <el-table-column type="index" align="center"></el-table-column> - <el-table-column label="姓名" prop="driverName" align="center" width="100"></el-table-column> - <el-table-column label="联系方式" prop="driverMobile" align="center" width="130"></el-table-column> - <el-table-column label="职位" prop="driverPosition" align="center" width="100"> - <template slot-scope="scope"> - <span v-if="scope.row.driverPosition ==='1'">队长</span> - <span v-if="scope.row.driverPosition ==='2'">班长</span> - <span v-if="scope.row.driverPosition ==='3'">副班长</span> - <span v-if="scope.row.driverPosition ==='4'">员工</span> - </template> - </el-table-column> - <el-table-column label="状态" prop="driverStatus" align="center" width="120"> - <template slot-scope="scope"> - <span v-if="scope.row.driverStatus ==='1'">空闲状态</span> - <span v-if="scope.row.driverStatus ==='2'">执行状态</span> - <span v-if="scope.row.driverStatus ==='3'">轮休状态</span> - <span v-if="scope.row.driverStatus ==='4'">请假状态</span> - </template> - </el-table-column> - <el-table-column label="驾驶证" prop="driverLicenseNumber" align="center" - width="200"></el-table-column> - <el-table-column label="工号" prop="jobNumber" align="center" width="150"></el-table-column> - <el-table-column label="公司" prop="driverCompany" align="center" width="160"></el-table-column> - <el-table-column label="操作" width="220px" align="center" fixed="right"> - <template slot-scope="scope"> - <!--查看按钮--> - <el-tooltip effect="dark" content="编辑" placement="top-start" :enterable="false"> - <el-button type="primary" icon="el-icon-edit" size="mini" - @click="showEditDialogVisible(scope.$index,scope.row)">编辑 - </el-button> - </el-tooltip> - <!--取消调度按钮--> - <el-tooltip effect="dark" content="删除" placement="top-start" :enterable="false"> - <el-button type="danger" icon="el-icon-delete" size="mini" - :loading="delLoading" - :disabled="scope.row.driverStatus==='2'" - @click="removeDriverInfo(scope.$index,scope.row)">删除 - </el-button> - </el-tooltip> - </template> - </el-table-column> - </el-table> - <!--分页区域--> - <div style="margin-top: 10px"> - <el-row :gutter="24"> - <el-col :span="5"> - <el-button type="danger" icon="el-icon-delete" @click="batchRemove" - :disabled="this.sels.length===0">批量删除 - </el-button> - </el-col> - <el-col :span="10" style="margin-top: 5px"> - <el-pagination - @size-change="handleSizeChange" - @current-change="handleCurrentChange" - :current-page="queryInfo.pageNum" - :page-sizes="[10,20,30,50]" - :page-size="queryInfo.pageSize" - layout="total, sizes, prev, pager, next, jumper" - :total="total"> - </el-pagination> - </el-col> - </el-row> - </div> - </div> - </el-card> - <!-- 增加驾驶员信息对话框 --> - <div> - <el-dialog - style="margin-top: -50px" - title="增加驾驶员信息" - text-align="center" - :visible.sync="addDriverInfoFormVisible" - width="50%" @close="addDriverInfoDialogClosed"> - <el-form :model="addDriverInfoForm" label-width="100px" status-icon - :rules="addDriverInfoFormRules" ref="addDriverInfoFormRef" - size="medium" align="center" :inline="true" - style="background-color: #F5F7FA"> - <div style="margin-top: -15px"> - <br> - <el-form-item label="司机姓名:" prop="driverName"> - <el-input v-model="addDriverInfoForm.driverName" style="width: 300px;" clearable - placeholder="请输入驾驶员姓名"></el-input> - </el-form-item> - <el-form-item label="联系方式:" prop="driverMobile"> - <el-input v-model="addDriverInfoForm.driverMobile" style="width: 300px;" clearable - placeholder="请输入驾驶员联系方式"></el-input> - </el-form-item> - - - <el-form-item label="司机状态:" prop="driverStatus"> - <el-select v-model="addDriverInfoForm.driverStatus" style="width: 300px" clearable - placeholder="请选择驾驶员类型"> - <el-option - v-for="item in driverStatusList" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-form-item> - <el-form-item label="驾驶证号:" prop="driverLicenseNumber"> - <el-input v-model="addDriverInfoForm.driverLicenseNumber" style="width: 300px;" - clearable - placeholder="请输入驾驶证号码"></el-input> - </el-form-item> - <el-form-item label="工作职位:" prop="driverPosition"> - <el-select v-model="addDriverInfoForm.driverPosition" style="width: 300px" clearable - placeholder="请选择驾驶员类型"> - <el-option - v-for="item in driverPositionList" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-form-item> - - <el-form-item label="员工号码:" prop="jobNumber"> - <el-input v-model="addDriverInfoForm.jobNumber" style="width: 300px;" clearable - placeholder="请输入员工号码"></el-input> - </el-form-item> - <el-form-item label="司机公司:" prop="driverCompany"> - <el-input v-model="addDriverInfoForm.driverCompany" style="width: 300px;" clearable - placeholder="请输入驾驶员所属公司"></el-input> - </el-form-item> - <br> - </div> - </el-form> - <!--底部按钮区域--> - <span slot="footer" class="dialog-footer"> - <el-button @click="addDriverInfoFormVisible = false">取 消</el-button> - <el-button type="primary" :loading="addLoading" @click="addDriverInfo">增 加</el-button> - </span> - </el-dialog> - </div> - <!-- 编辑驾驶员信息,对话框 --> - <div> - <el-dialog - style="margin-top: -70px" - title="编辑驾驶员信息" - :visible.sync="editDialogVisible" - text-align="center" - width="50%" @close="editDriverInfoDialogClosed"> - <el-form :model="editDriverInfoForm" label-width="100px" status-icon - :rules="editDriverInfoFormRules" ref="editDriverInfoFormRef" - :inline="true" size="medium" align="center" - style="background-color: #F5F7FA"> - <div style="margin-top: -15px"> - <br> - <el-form-item label="司机姓名:" prop="driverName"> - <el-input v-model="editDriverInfoForm.driverName" style="width: 300px;" clearable - placeholder="请输入驾驶员姓名"></el-input> - </el-form-item> - <el-form-item label="联系方式:" prop="driverMobile"> - <el-input v-model="editDriverInfoForm.driverMobile" style="width: 300px;" clearable - placeholder="请输入驾驶员联系方式"></el-input> - </el-form-item> - - - <el-form-item label="司机状态:" prop="driverStatus"> - <el-select v-model="editDriverInfoForm.driverStatus" style="width: 300px" clearable - placeholder="请选择驾驶员类型"> - <el-option - v-for="item in driverStatusList" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-form-item> - <el-form-item label="驾驶证号:" prop="driverLicenseNumber"> - <el-input v-model="editDriverInfoForm.driverLicenseNumber" style="width: 300px;" - clearable - placeholder="请输入驾驶证号码"></el-input> - </el-form-item> - <el-form-item label="工作职位:" prop="driverPosition"> - <el-select v-model="editDriverInfoForm.driverPosition" style="width: 300px" clearable - placeholder="请选择驾驶员类型"> - <el-option - v-for="item in driverPositionList" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-form-item> - - <el-form-item label="员工号码:" prop="jobNumber"> - <el-input v-model="editDriverInfoForm.jobNumber" style="width: 300px;" clearable - placeholder="请输入员工号码"></el-input> - </el-form-item> - <el-form-item label="司机公司:" prop="driverCompany"> - <el-input v-model="editDriverInfoForm.driverCompany" style="width: 300px;" clearable - placeholder="请输入驾驶员所属公司"></el-input> - </el-form-item> - <br> - </div> - </el-form> - <!--底部按钮区域--> - <span slot="footer" class="dialog-footer"> - <el-button @click="editDialogVisible = false">取 消</el-button> - <el-button type="primary" :loading="editLoading" @click="editDriverInfo">编 辑</el-button> - </span> - </el-dialog> - </div> - </el-main> - </el-container> -</template> - -<script> - // import { - // selectDriverInfoList, - // insertDriverInfo, - // updateDriverInfo, - // batchRemoveDriverInfo, - // deleteDriverInfo, - // } from "../../api/dispatch_api"; - - export default { - name: "dispatch_api", - created() { - //刷新驾驶员信息列表 - this.getDriverInfoList(); - }, - data() { - //验证手机号的自定义规则 - var driverMobileValid = (rule, value, callback) => { - //验证手机号的正则表达式 - const regMobile = /^(0|86|17951)?(13[0-9]|15[0123456789]|17[678]|18[0-9]|14[57])[0-9]{8}$/; - if (regMobile.test(value)) { - //合法的手机号 - return callback(); - } - callback(new Error('请输入合法的手机号')); - }; - return { - /** - * 查询信息列表 - */ - queryInfo: { - //驾驶员姓名 - driverName: '', - //驾驶员联系方式 - driverMobile: '', - //驾驶员所属公司 - driverCompany: '', - //驾驶员状态 - driverStatus: '', - //当前的页数 - pageNum: 1, - //当前每页显示多少条数据 - pageSize: 10 - }, - /** - * 设置,总条数 - */ - total: 0, - /** - * 批量删除的选中列表 - */ - sels: [], - /** - * 驾驶员信息列表 - */ - driverInfoList: [], - /** - * 新增驾驶员信息表单 - */ - addDriverInfoForm: { - driverName: '', - driverLicenseNumber: '', - driverMobile: '', - jobNumber: '', - driverPosition: '1', - driverCompany: '', - driverStatus: '1', - }, - /** - * 编辑驾驶员信息表单 - */ - editDriverInfoForm: {}, - /** - * 控制,添加驾驶员信息对话框的显示与隐藏 - */ - addDriverInfoFormVisible: false, - /** - * 控制,编辑驾驶员信息对话框的显示与隐藏 - */ - editDialogVisible: false, - /* 列表加载 */ - listLoading: false, - /* 添加加载 */ - addLoading: false, - /* 编辑加载 */ - editLoading: false, - /* 删除加载 */ - delLoading: false, - /** - * 司机职位,列表 - */ - driverPositionList: [ - { - value: '1', - label: '队长' - }, - { - value: '2', - label: '班长' - }, - { - value: '3', - label: '副班长' - }, - { - value: '4', - label: '员工' - }, - ], - /** - * 驾驶员状态,列表 - */ - driverStatusList: [ - { - value: '1', - label: '空闲状态' - }, - { - value: '2', - label: '执行状态' - }, - { - value: '3', - label: '轮休状态' - }, - { - value: '4', - label: '请假状态' - }, - ], - /** - * 添加驾驶员信息,表单的验证规则对象 - */ - addDriverInfoFormRules: { - driverName: [ - {required: true, message: '请选择驾驶员姓名', trigger: ['blur', 'change']}, - ], - driverLicenseNumber: [ - {required: true, message: '请输入驾驶证号码', trigger: ['blur', 'change']}, - ], - driverMobile: [ - {required: true, message: '请输入联系方式', trigger: ['blur', 'change']}, - {validator: driverMobileValid, trigger: 'blur'} - ], - jobNumber: [ - {required: true, message: '请输入员工号码', trigger: ['blur', 'change']}, - ], - driverPosition: [ - {required: true, message: '请选择工作职位', trigger: ['blur', 'change']}, - ], - driverCompany: [ - {required: true, message: '请输入驾驶员所属公司', trigger: ['blur', 'change']}, - ], - driverStatus: [ - {required: true, message: '请选择驾驶员状态', trigger: ['blur', 'change']}, - ], - }, - /** - * 编辑驾驶员信息,表单的验证规则对象 - */ - editDriverInfoFormRules: { - driverName: [ - {required: true, message: '请选择驾驶员姓名', trigger: ['blur', 'change']}, - ], - driverLicenseNumber: [ - {required: true, message: '请输入驾驶证号码', trigger: ['blur', 'change']}, - ], - driverMobile: [ - {required: true, message: '请输入联系方式', trigger: ['blur', 'change']}, - {validator: driverMobileValid, trigger: 'blur'} - ], - jobNumber: [ - {required: true, message: '请输入员工号码', trigger: ['blur', 'change']}, - ], - driverPosition: [ - {required: true, message: '请选择工作职位', trigger: ['blur', 'change']}, - ], - driverCompany: [ - {required: true, message: '请输入驾驶员所属公司', trigger: ['blur', 'change']}, - ], - driverStatus: [ - {required: true, message: '请选择驾驶员状态', trigger: ['blur', 'change']}, - ], - } - } - }, - methods: { - /** - * 获取驾驶员信息列表 - */ - getDriverInfoList() { - //开启加载 - this.listLoading = true; - selectDriverInfoList(this.queryInfo).then((response) => { - let res = response.data; - if (res.code !== '200'){ - //关闭加载 - this.listLoading = false; - return this.$message.error('获取驾驶员信息列表,失败'); - } - // 获取驾驶员信息列表数据 - this.driverInfoList = res.data.list; - // 获取列表的总记录数 - this.total = res.data.total; - //关闭加载 - this.listLoading = false; - this.$message.success('获取驾驶员信息列表,成功'); - }).catch(error => { - this.listLoading = false; - this.$message.error(error.toString()); - }); - - }, - /** - * 增加驾驶员信息 - */ - addDriverInfo() { - /*进行表单的预验证*/ - this.$refs.addDriverInfoFormRef.validate(valid => { - // 未通过,表单预校验 - if (!valid) return; - // 通过,表单预检验,开启加载 - this.addLoading = true; - insertDriverInfo(this.addDriverInfoForm).then((response) => { - let res = response.data; - if (res.code !== '200'){ - //关闭加载 - this.addLoading = false; - return this.$message.error('添加驾驶员信息,失败'); - } - //关闭加载 - this.addLoading = false; - this.$message.success('添加驾驶员信息,成功'); - //关闭对话框 - this.addDriverInfoFormVisible = false; - //刷新驾驶员信息列表 - this.getDriverInfoList(); - }).catch(error => { - this.addLoading = false; - this.$message.error(error.toString()); - }); - }) - }, - /** - * 删除驾驶员信息 - */ - removeDriverInfo(index, row) { - //弹框询问是否删除驾驶员信息 - this.$confirm('此操作永久删除该驾驶员信息, 是否继续?', '警告', { - confirmButtonText: '确定删除', - cancelButtonText: '取消', - type: 'warning' - } - ).then(() => { - //开启加载 - this.delLoading = true; - deleteDriverInfo(row).then((response) => { - let res = response.data; - if (res.code !== '200') { - //关闭加载 - this.delLoading = false; - return this.$message.error('删除驾驶员信息,失败'); - } - //关闭加载 - this.delLoading = false; - this.$message.success('删除驾驶员信息,成功!'); - //刷新驾驶员信息列表 - this.getDriverInfoList(); - }).catch(error => { - this.delLoading = false; - this.$message.error(error.toString()); - }); - }).catch(() => { - }); - }, - /** - * 批量删除,之前的选中 - */ - selsChange: function (sels) { - this.sels = sels; - }, - /** - * 驾驶员状态为执行状态的时候,无法被选中 - */ - isSelectable(row, index) { - if (row.driverStatus === '2') { - return false; - } else { - return true; - } - }, - /** - * 批量删除功能 - */ - batchRemove() { - var ids = this.sels.map(item => item.id).toString(); - console.log(ids); - //弹框询问是否批量删除选中的车辆调度记录 - this.$confirm('此操作将永久删除,选中的驾驶员信息, 是否继续?', '警告', { - confirmButtonText: '确定删除', - cancelButtonText: '取消', - type: 'warning' - } - ).then(() => { - //开启加载 - this.listLoading = true; - let params = {ids: ids}; - batchRemoveDriverInfo(params).then(response => { - let res = response.data; - if (res.code !== '200') { - this.listLoading = false; - return this.$message.error('批量删除驾驶员信息,失败'); - } - this.$message.success('批量删除驶员信息,成功!'); - this.listLoading = false; - //刷新驾驶员信息列表 - this.getDriverInfoList(); - }).catch(error => { - this.delLoading = false; - this.$message.error(error.toString()); - }); - }).catch(() => { - }); - }, - /** - * 编辑驾驶员信息 - */ - editDriverInfo() { - /*进行表单的预验证*/ - this.$refs.editDriverInfoFormRef.validate(valid => { - // 未通过,表单预校验 - if (!valid) return; - // 通过,表单预检验,开启加载 - this.editLoading = true; - updateDriverInfo(this.editDriverInfoForm).then((response) => { - let res = response.data; - if (res.code !== '200') { - //关闭加载 - this.editLoading = false; - return this.$message.error('修改驾驶员信息,失败'); - } - //关闭加载 - this.editLoading = false; - this.$message.success('修改驾驶员信息,成功!'); - // 关闭,编辑驾驶员信息对话框 - this.editDialogVisible = false; - //刷新驾驶员信息列表 - this.getDriverInfoList(); - }).catch(error => { - this.editLoading = false; - this.$message.error(error.toString()); - }); - }) - }, - /** - * 添加驾驶员信息对话框,关闭时,重置对话框 - */ - addDriverInfoDialogClosed() { - this.$refs.addDriverInfoFormRef.resetFields(); - }, - /** - * 编辑驾驶员信息对话框,关闭时,重置对话框 - */ - editDriverInfoDialogClosed() { - this.$refs.editDriverInfoFormRef.resetFields(); - }, - /** - * 打开编辑驾驶员信息对话框 - */ - showEditDialogVisible(index, row) { - this.editDriverInfoForm = Object.assign({}, row); - this.editDialogVisible = true; - }, - /** - * 监听pageSize改变的事件 - */ - handleSizeChange(newSize) { - this.queryInfo.pageSize = newSize; - //刷新驾驶员信息列表 - this.getDriverInfoList(); - }, - /** - * 监听当前页码值改变的事件 - */ - handleCurrentChange(newPage) { - this.queryInfo.pageNum = newPage; - //刷新驾驶员信息列表 - this.getDriverInfoList(); - }, - } - } -</script> - -<style scoped> - -</style> diff --git a/src/views/nav3/VehicleInfo.vue b/src/views/nav3/VehicleInfo.vue deleted file mode 100644 index b45efbe..0000000 --- a/src/views/nav3/VehicleInfo.vue +++ /dev/null @@ -1,704 +0,0 @@ -<template> - <el-container> - <el-main> - <!--面包屑导航区域--> - <!-- <div>--> - <!-- <el-breadcrumb separator-class="el-icon-arrow-right">--> - <!-- <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>--> - <!-- <el-breadcrumb-item>车辆调度</el-breadcrumb-item>--> - <!-- <el-breadcrumb-item>车辆信息</el-breadcrumb-item>--> - <!-- </el-breadcrumb>--> - <!-- </div>--> - <el-card style="background-color: #F5F7FA"> - <!--搜索区域--> - <div> - <el-row :gutter="24"> - <el-col :span="5"> - <el-input v-model="queryInfo.licensePlateNumber" clearable prefix-icon="el-icon-search" - placeholder="请输入车牌号码"></el-input> - </el-col> - <el-col :span="5"> - <el-input v-model="queryInfo.vehicleCompany" clearable prefix-icon="el-icon-search" - placeholder="请输入车辆公司"></el-input> - </el-col> - <el-col :span="5"> - <el-select v-model="queryInfo.vehicleStatus" clearable placeholder="请选择车辆状态"> - <el-option - v-for="item in vehicleStatusList" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-col> - <el-col :span="5"> - <el-select v-model="queryInfo.vehicleType" clearable placeholder="请选择车辆类型"> - <el-option - v-for="item in vehicleTypeList" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-col> - </el-row> - <el-row style="margin-top: 20px;"> - <el-button type="primary" @click="getVehicleInfoList">查询车辆信息</el-button> - <el-button type="success" @click="addVehicleInfoFormVisible = true">增加车辆信息</el-button> - - </el-row> - </div> - <!--车辆信息列表区域--> - <div style="margin-top: 20px;"> - <el-table :data="vehicleInfoList" border stripe highlight-current-row v-loading="listLoading" - @selection-change="selsChange" - element-loading-text="拼命加载中"> - <el-table-column type="selection" width="55" :selectable="isSelectable" - align="center"></el-table-column> - <el-table-column type="index" align="center"></el-table-column> - <el-table-column label="车辆类型" prop="vehicleType" align="center" width="120"> - <template slot-scope="scope"> - <span v-if="scope.row.vehicleType ==='1'">重型货车</span> - <span v-if="scope.row.vehicleType ==='2'">中型货车</span> - <span v-if="scope.row.vehicleType ==='3'">轻型货车</span> - <span v-if="scope.row.vehicleType ==='4'">微型货车</span> - <span v-if="scope.row.vehicleType ==='5'">拖车</span> - <span v-if="scope.row.vehicleType ==='6'">叉车</span> - </template> - </el-table-column> - <el-table-column label="车牌号码" prop="licensePlateNumber" align="center" - width="130"></el-table-column> - <el-table-column label="车辆状态" prop="vehicleStatus" align="center" width="100"> - <template slot-scope="scope"> - <span v-if="scope.row.vehicleStatus ==='1'">空闲状态</span> - <span v-if="scope.row.vehicleStatus ==='2'">执行状态</span> - <span v-if="scope.row.vehicleStatus ==='3'">在修状态</span> - <span v-if="scope.row.vehicleStatus ==='4'">损坏未修</span> - <span v-if="scope.row.vehicleStatus ==='5'">保养状态</span> - </template> - </el-table-column> - <el-table-column label="车辆载重/Kg" prop="vehicleLoad" align="center" - width="110"></el-table-column> - <el-table-column label="挂车与否" prop="isTrailer" align="center" width="110"> - <template slot-scope="scope"> - <span v-if="scope.row.isTrailer ==='1'">有挂车</span> - <span v-if="scope.row.isTrailer ==='2'">没有挂车</span> - </template> - </el-table-column> - <el-table-column label="开始空闲时间" prop="freetime" align="center" width="160"></el-table-column> - - <el-table-column label="车辆公司" prop="vehicleCompany" align="center" - width="200"></el-table-column> - <el-table-column label="行驶证号" prop="drivingLicenseNumber" align="center" - width="160"></el-table-column> - <el-table-column label="操作" width="200px" align="center" fixed="right"> - <template slot-scope="scope"> - <!--查看按钮--> - <el-tooltip effect="dark" content="编辑" placement="top-start" :enterable="false"> - <el-button type="primary" icon="el-icon-edit" size="mini" - @click="showEditDialogVisible(scope.$index,scope.row)">编辑 - </el-button> - </el-tooltip> - <!--取消调度按钮--> - <el-tooltip effect="dark" content="删除" placement="top-start" :enterable="false"> - <el-button type="danger" icon="el-icon-delete" size="mini" - :loading="delLoading" - :disabled="scope.row.vehicleStatus==='2'" - @click="removeVehicleInfo(scope.$index,scope.row)">删除 - </el-button> - </el-tooltip> - </template> - </el-table-column> - </el-table> - <!--分页区域--> - <div style="margin-top: 10px"> - <el-row :gutter="24"> - <el-col :span="5"> - <el-button type="danger" icon="el-icon-delete" @click="batchRemove" - :disabled="this.sels.length===0">批量删除 - </el-button> - </el-col> - <el-col :span="10" style="margin-top: 5px"> - <el-pagination - @size-change="handleSizeChange" - @current-change="handleCurrentChange" - :current-page="queryInfo.pageNum" - :page-sizes="[10,20,30,50]" - :page-size="queryInfo.pageSize" - layout="total, sizes, prev, pager, next, jumper" - :total="total"> - </el-pagination> - </el-col> - </el-row> - </div> - </div> - </el-card> - <!-- 增加车辆信息对话框 --> - <div> - <el-dialog - style="margin-top: -50px" - title="增加车辆信息" - :visible.sync="addVehicleInfoFormVisible" - width="50%" @close="addVehicleInfoDialogClosed"> - <el-form :model="addVehicleInfoForm" label-width="100px" status-icon - :rules="addVehicleInfoFormRules" ref="addVehicleInfoFormRef" - style="margin-left:10%;margin-right:10%;background-color: #F5F7FA"> - <div style="margin-left: 30px"> - <br> - <el-form-item label="车牌号码:" prop="licensePlateNumber"> - <el-input v-model="addVehicleInfoForm.licensePlateNumber" clearable - style="width: 300px;" - placeholder="请输入车牌号码"></el-input> - </el-form-item> - <el-form-item label="行驶证号:" prop="drivingLicenseNumber"> - <el-input v-model="addVehicleInfoForm.drivingLicenseNumber" clearable - style="width: 300px;" - placeholder="请输入车辆行驶证号"></el-input> - </el-form-item> - <el-form-item label="车辆类型:" prop="vehicleType"> - <el-select v-model="addVehicleInfoForm.vehicleType" style="width: 300px" clearable - placeholder="请选择车辆类型"> - <el-option - v-for="item in vehicleTypeList" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-form-item> - <el-form-item label="车辆载重:" prop="vehicleLoad"> - <el-input-number style="width: 200px" v-model="addVehicleInfoForm.vehicleLoad" - :min="10" :max="10000" controls-position="right"> - </el-input-number> - <span style="margin-left:5px;font-size: 18px">Kg</span> - </el-form-item> - <el-form-item label="有无挂车:" prop="vehicleType"> - <el-select v-model="addVehicleInfoForm.isTrailer" style="width: 300px" clearable - placeholder="请选择有无挂车"> - <el-option - v-for="item in isTrailerList" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-form-item> - <el-form-item label="车辆公司:" prop="vehicleCompany"> - <el-input v-model="addVehicleInfoForm.vehicleCompany" clearable style="width: 300px;" - placeholder="请输入车辆公司"></el-input> - </el-form-item> - <br> - </div> - </el-form> - <!--底部按钮区域--> - <span slot="footer" class="dialog-footer"> - <el-button @click="addVehicleInfoFormVisible = false">取 消</el-button> - <el-button type="primary" :loading="addLoading" @click="addVehicleInfo">增 加</el-button> - </span> - </el-dialog> - </div> - <!-- 编辑车辆信息,对话框 --> - <div> - <el-dialog - title="编辑车辆信息" - text-align="center" - :visible.sync="editDialogVisible" - width="60%" @close="editVehicleInfoDialogClosed"> - <el-form :model="editVehicleInfoForm" label-width="100px" status-icon - :rules="editVehicleInfoFormRules" ref="editVehicleInfoFormRef" - :inline="true" align="center" - style="background-color: #F5F7FA"> - <div> - <br> - <el-form-item label="车牌号码:" prop="licensePlateNumber"> - <el-input v-model="editVehicleInfoForm.licensePlateNumber" clearable readonly - style="width:250px" - placeholder="请输入车牌号码"></el-input> - </el-form-item> - <el-form-item label="行驶证号:" prop="drivingLicenseNumber"> - <el-input v-model="editVehicleInfoForm.drivingLicenseNumber" clearable - style="width:250px" - placeholder="请输入车辆行驶证号"></el-input> - </el-form-item> - <el-form-item label="车辆类型:" prop="vehicleType"> - <el-select v-model="editVehicleInfoForm.vehicleType" clearable - style="width:250px" - placeholder="请选择车辆类型"> - <el-option - v-for="item in vehicleTypeList" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-form-item> - <el-form-item label="车辆载重:" prop="vehicleLoad"> - <el-input-number v-model="editVehicleInfoForm.vehicleLoad" - clearable style="width:220px" - :min="10" :max="10000" controls-position="right"> - </el-input-number> - <span style="margin-left:5px;font-size: 18px">Kg</span> - </el-form-item> - <el-form-item label="车辆状态:" prop="vehicleStatus"> - <el-select v-model="editVehicleInfoForm.vehicleStatus" clearable - style="width:250px" - clearable placeholder="请选择车辆状态"> - <el-option - v-for="item in vehicleStatusList" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-form-item> - <el-form-item label="有无挂车:" prop="vehicleType"> - <el-select v-model="editVehicleInfoForm.isTrailer" clearable - style="width:250px" clearable - placeholder="请选择有无挂车"> - <el-option - v-for="item in isTrailerList" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-form-item> - <el-form-item label="车辆公司:" prop="vehicleCompany"> - <el-input v-model="editVehicleInfoForm.vehicleCompany" clearable - style="width:250px" - placeholder="请输入车辆公司"></el-input> - </el-form-item> - <el-form-item label="空闲时间:" prop="freetime"> - <el-date-picker v-model="editVehicleInfoForm.freetime" type="datetime" - style="width:250px" - placeholder="选择调度时间"></el-date-picker> - </el-form-item> - <br> - </div> - </el-form> - <!--底部按钮区域--> - <span slot="footer" class="dialog-footer"> - <el-button @click="editDialogVisible = false">取 消</el-button> - <el-button type="primary" :loading="editLoading" @click="editVehicleInfo">编 辑</el-button> - </span> - </el-dialog> - </div> - </el-main> - </el-container> -</template> - -<script> - // import { - // selectVehicleInfoList, - // insertVehicleInfo, - // updateVehicleInfo, - // batchRemoveVehicleInfo, - // deleteVehicleInfo, deleteDispatchNote - // } from "../../api/dispatch_api"; - - export default { - name: "dispatch_api", - created() { - //获取车辆信息列表 - this.getVehicleInfoList(); - }, - data() { - return { - /** - * 查询信息列表 - */ - queryInfo: { - //车牌号 - licensePlateNumber: '', - //车辆所属公司 - vehicleCompany: '', - //车辆状态 - vehicleStatus: '', - //车辆类型 - vehicleType: '', - //当前的页数 - pageNum: 1, - //当前每页显示多少条数据 - pageSize: 10 - }, - /** - * 设置,总条数 - */ - total: 0, - /** - * 批量删除,选中列表 - */ - sels: [], - /** - * 车辆信息列表 - */ - vehicleInfoList: [], - /** - * 新增车辆信息表单 - */ - addVehicleInfoForm: { - vehicleType: '2', - licensePlateNumber: '', - vehicleLoad: '', - isTrailer: '2', - vehicleCompany: '', - drivingLicenseNumber: '', - }, - /** - * 编辑车辆信息表单 - */ - editVehicleInfoForm: {}, - /** - * 控制,添加车辆信息对话框的显示与隐藏 - */ - addVehicleInfoFormVisible: false, - /** - * 控制,编辑车辆信息对话框的显示与隐藏 - */ - editDialogVisible: false, - /* 列表加载 */ - listLoading: false, - /* 添加加载 */ - addLoading: false, - /* 编辑加载 */ - editLoading: false, - /* 删除加载 */ - delLoading: false, - /** - * 车辆类型,选项列表 - */ - vehicleTypeList: [ - { - value: '1', - label: '重型货车' - }, - { - value: '2', - label: '中型货车' - }, - { - value: '3', - label: '经济货车' - }, - { - value: '4', - label: '微型货车' - }, - { - value: '5', - label: '拖车' - }, - { - value: '6', - label: '叉车' - } - ], - /** - * 挂车与否,列表 - */ - isTrailerList: [ - { - value: '1', - label: '有挂车' - }, - { - value: '2', - label: '没有挂车' - }, - ], - /** - * 车辆状态列表 - */ - vehicleStatusList: [ - { - value: '1', - label: '空闲状态' - }, - { - value: '2', - label: '执行状态' - }, - { - value: '3', - label: '在修状态' - }, - { - value: '4', - label: '损坏未修状态' - }, - { - value: '5', - label: '保养状态' - }, - ], - /** - * 添加车辆信息表单的验证规则对象 - */ - addVehicleInfoFormRules: { - vehicleType: [ - {required: true, message: '请选择车辆类型', trigger: ['blur', 'change']}, - ], - licensePlateNumber: [ - {required: true, message: '请输入车牌号', trigger: ['blur', 'change']}, - ], - vehicleLoad: [ - {required: true, message: '请输入车辆载重', trigger: ['blur', 'change']}, - ], - isTrailer: [ - {required: true, message: '请选择有无挂车', trigger: ['blur', 'change']}, - ], - vehicleCompany: [ - {required: true, message: '请输入车辆公司名称', trigger: ['blur', 'change']}, - ], - drivingLicenseNumber: [ - {required: true, message: '请输入车辆行驶证号', trigger: ['blur', 'change']}, - ], - }, - /** - * 编辑车辆信息表单的验证规则对象 - */ - editVehicleInfoFormRules: { - vehicleStatus: [ - {required: true, message: '请选择车辆状态', trigger: ['blur', 'change']}, - ], - freetime: [ - {required: true, message: '请选择开始空闲时间', trigger: ['blur', 'change']}, - ], - vehicleType: [ - {required: true, message: '请选择车辆类型', trigger: ['blur', 'change']}, - ], - licensePlateNumber: [ - {required: true, message: '请输入车牌号', trigger: ['blur', 'change']}, - ], - vehicleLoad: [ - {required: true, message: '请输入车辆载重', trigger: ['blur', 'change']}, - ], - isTrailer: [ - {required: true, message: '请选择有无挂车', trigger: ['blur', 'change']}, - ], - vehicleCompany: [ - {required: true, message: '请输入车辆公司名称', trigger: ['blur', 'change']}, - ], - drivingLicenseNumber: [ - {required: true, message: '请输入车辆行驶证号', trigger: ['blur', 'change']}, - ], - } - } - }, - methods: { - /** - * 管理员端,获取车辆信息列表 - */ - getVehicleInfoList() { - //开启加载 - this.listLoading = true; - selectVehicleInfoList(this.queryInfo).then((response) => { - let res = response.data; - if (res.code !== '200') { - //关闭加载 - this.listLoading = false; - return this.$message.error('获取车辆信息列表失败'); - } - // 获取车辆信息列表数据 - this.vehicleInfoList = res.data.list; - // 获取列表的总记录数 - this.total = res.data.total; - //关闭加载 - this.listLoading = false; - this.$message.success('获取车辆信息列表,成功'); - }).catch(error => { - this.listLoading = false; - this.$message.error(error.toString()); - }); - }, - /** - * 管理员端,增加车辆信息 - */ - addVehicleInfo() { - /*进行表单的预验证*/ - this.$refs.addVehicleInfoFormRef.validate(valid => { - // 未通过,表单预校验 - if (!valid) return; - // 通过,表单预检验,发起添加车辆信息的网络请求,开启加载 - this.addLoading = true; - insertVehicleInfo(this.addVehicleInfoForm).then((response) => { - let res = response.data; - //添加调度记录信息,失败 - if (res.code !== '200') { - //关闭加载 - this.addLoading = false; - if(res.code === '406'){ - return this.$message.error('该车牌号已存在,请重新填写'); - } - return this.$message.error('添加车辆信息,失败'); - } - //关闭加载 - this.addLoading = false; - this.$message.success('添加调度记录信息,成功'); - //隐藏对话框 - this.addVehicleInfoFormVisible = false; - //刷新车辆信息列表 - this.getVehicleInfoList(); - }).catch(error => { - this.addLoading = false; - this.$message.error(error.toString()); - }); - - }) - }, - /** - * 管理员端,删除车辆信息 - */ - removeVehicleInfo(index, row) { - //弹框询问是否删除车辆信息 - this.$confirm('此操作永久删除该车辆信息, 是否继续?', '警告', { - confirmButtonText: '确定删除', - cancelButtonText: '取消', - type: 'warning' - } - ).then(() => { - //开启加载 - this.delLoading = true; - deleteVehicleInfo(row).then((response) => { - let res = response.data; - if (res.code !== '200') { - //关闭加载 - this.delLoading = false; - return this.$message.error('删除车辆信息,失败'); - } - //关闭加载 - this.delLoading = false; - this.$message.success('删除车辆信息,成功!'); - //刷新车辆信息列表 - this.getVehicleInfoList(); - }).catch(error => { - this.delLoading = false; - this.$message.error(error.toString()); - }); - }).catch(() => { - }); - }, - - /** - * 批量删除,之前的选中 - */ - selsChange: function (sels) { - this.sels = sels; - }, - /** - * 车辆状态为执行状态的时候,无法被选中 - */ - isSelectable(row, index) { - if (row.vehicleStatus === '2') { - return false; - } else { - return true; - } - }, - /** - * 批量删除功能 - */ - batchRemove() { - var ids = this.sels.map(item => item.id).toString(); - console.log(ids); - //弹框询问是否批量删除选中的车辆调度记录 - this.$confirm('此操作永久删除选中的车辆信息, 是否继续?', '警告', { - confirmButtonText: '确定删除', - cancelButtonText: '取消', - type: 'warning' - } - ).then(() => { - //开启加载 - this.listLoading = true; - let params = {ids: ids}; - batchRemoveVehicleInfo(params).then(response => { - let res = response.data; - if (res.code !== '200') { - this.listLoading = false; - return this.$message.error('批量删除车辆信息,失败'); - } - this.$message.success('批量删除车辆信息,成功!'); - this.listLoading = false; - //刷新车辆信息列表 - this.getVehicleInfoList(); - }).catch(error => { - this.delLoading = false; - this.$message.error(error.toString()); - }); - }).catch(() => { - }); - }, - /** - * 管理员端,编辑车辆信息 - */ - editVehicleInfo() { - /*进行表单的预验证*/ - this.$refs.editVehicleInfoFormRef.validate(valid => { - // 未通过,表单预校验 - if (!valid) return; - // 通过,表单预校验,开启加载 - this.editLoading = true; - updateVehicleInfo(this.editVehicleInfoForm).then((response) => { - let res = response.data; - if (res.code !== '200') { - //关闭加载 - this.editLoading = false; - return this.$message.error('修改车辆信息,失败'); - } - //关闭加载 - this.editLoading = false; - this.$message.success('修改车辆信息,成功!'); - //关闭编辑车辆信息对话框 - this.editDialogVisible = false; - //刷新车辆信息列表 - this.getVehicleInfoList(); - }).catch(error => { - this.editLoading = false; - this.$message.error(error.toString()); - }); - }) - }, - - /** - * 添加车辆信息对话框,关闭时,重置对话框 - */ - addVehicleInfoDialogClosed() { - this.$refs.addVehicleInfoFormRef.resetFields(); - }, - /** - * 编辑车辆信息对话框,关闭时,重置对话框 - */ - editVehicleInfoDialogClosed() { - this.$refs.editVehicleInfoFormRef.resetFields(); - }, - /** - * 打开编辑车辆信息对话框 - */ - showEditDialogVisible(index, row) { - this.editVehicleInfoForm = Object.assign({}, row); - this.editDialogVisible = true; - }, - /** - * 监听pageSize改变的事件 - */ - handleSizeChange(newSize) { - this.queryInfo.pageSize = newSize; - //刷新车辆信息列表 - this.getVehicleInfoList(); - - }, - /** - * 监听当前页码值改变的事件 - */ - handleCurrentChange(newPage) { - this.queryInfo.pageNum = newPage; - //刷新车辆信息列表 - this.getVehicleInfoList(); - }, - } - } -</script> - -<style scoped> - -</style> diff --git a/src/views/transit/transit.vue b/src/views/transit/transit.vue index 5c85e00..83a9d26 100644 --- a/src/views/transit/transit.vue +++ b/src/views/transit/transit.vue @@ -110,9 +110,9 @@ <el-form-item> <div style="display: inline-block;background-color: #6F8294;color: white; border-top-left-radius: 4px;margin-right: -4px;padding-right: 14px;font-size: 12px; - border-bottom-left-radius:4px;padding-left: 14px">新增时间段</div> + border-bottom-left-radius:4px;padding-left: 14px">申报时间段</div> <el-date-picker - v-model="formTrn.creattime" + v-model="searchTime" type="daterange" unlink-panels range-separator="-" @@ -593,6 +593,8 @@ trnmode:'', unloadcode:'', creattime:'', + startDate:'', + endDate:'', pageNum: 1, pageSize: 10 }, @@ -617,6 +619,7 @@ form: { autoid:'', seqno:'', + ieflag:'E', customscode:'', inputopid: '', inputopname:'', @@ -710,6 +713,24 @@ this.form.arriveno = this.customscode + loadcode + new Date().format('yyMMddHHmmss'); } }, + username: function () { + var user = loginuserInfo; + if (user) { + return user.username || ''; + } + }, + searchTime: { + get:function () { + return this.formTrn.creattime + }, + set:function (val) { + this.formTrn.creattime = val + if (val && val.length===2){ + this.formTrn.startDate = val[0] + this.formTrn.endDate = val[1] + } + } + } }, methods:{ @@ -769,7 +790,9 @@ // 获取消息标签列表 trnList() { const _this = this - selectTrans(this.formTrn).then((response) => { + let para = Object.assign({}, this.formTrn) + para.creattime = '' + selectTrans(para).then((response) => { const res = response.data if (res.code !== '200') { return _this.$message.error('获取消息收发记录,失败!') @@ -791,9 +814,12 @@ }, // 打开新增 addTrn() { + Object.keys(this.form).forEach(key => (this.form[key] = '')); this.dialogStatus = 'create' this.trn_dialog.addDialog = true this.form.arrivetime = new Date().format('yyyyMMddHHmmss') + this.form.username = this.username + this.form.ieflag = 'E' }, // 新增功能 @@ -855,7 +881,14 @@ send(row).then((response) => { const res = response.data if (res.code !== '200') { - return this.$message.error(res.msg); + this.$message({ + dangerouslyUseHTMLString: true, + showClose: true, + type:'error', + duration:0, + message: '<strong>'+ res.msg +'</strong><br/>' + '<span>'+ res.error+'</span>' + }); + return } this.$message.success('申报成功!'); this.trnList(); diff --git a/src/vuex/actions.js b/src/vuex/actions.js index 19cd820..344a0bd 100755 --- a/src/vuex/actions.js +++ b/src/vuex/actions.js @@ -9,3 +9,7 @@ export const decrement = ({commit}) => { export const setUserMenuStore = ({commit},menuList) => { commit('set_user_menu',menuList) } + +export const setUserInfoStore = ({commit},info) => { + commit('set_user_info',info) +} diff --git a/src/vuex/getters.js b/src/vuex/getters.js index 21c3b75..0feaf08 100755 --- a/src/vuex/getters.js +++ b/src/vuex/getters.js @@ -7,3 +7,7 @@ export const getCount = state => { export const getUserMenuStore = state => { return state.userMenu } + +export const getUserInfoStore = state => { + return state.userInfo +} diff --git a/src/vuex/store.js b/src/vuex/store.js index 1f32624..72a4596 100755 --- a/src/vuex/store.js +++ b/src/vuex/store.js @@ -8,9 +8,21 @@ Vue.use(Vuex) // 应用初始状态 const state = { count: 10, - openTab:[],//所有打开的路由 - activeIndex: '/main',//激活状态, - userMenu:[] //用户菜单 + //所有打开的路由 + openTab:[], + //激活状态, + activeIndex: '/main', + //用户菜单 + userMenu:[], + userInfo:{ + userId: 0, + username: '', + companyId: 0, + companyName: '', + realname: '', + userface: '' + } + } // 定义所需的 mutations @@ -54,6 +66,10 @@ const mutations = { set_user_menu(state, menu){ this.state.userMenu = menu; }, + //设置用户信息 + set_user_info(state,info){ + state.userInfo = info; + }, INCREMENT(state) { state.count++ }, -- libgit2 0.24.0