作者 朱兆平

用vuex接管用户信息的存取

... ... @@ -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:""
};
... ...
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);};
... ...
... ... @@ -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'));
... ...
<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>
... ...
... ... @@ -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"
... ...
... ... @@ -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',
... ...
<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) {
... ...
... ... @@ -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,6 +66,9 @@
};
},
methods: {
...mapActions( // 语法糖
['setUserInfoStore'] // 相当于this.$store.dispatch('modifyName'),提交这个方法
),
canplay() {
this.vedioCanPlay = true
},
... ... @@ -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;
... ...
... ... @@ -285,7 +285,7 @@
</template>
<script>
// import {selectDispatchNoteList, dispatch, cancel, getUser} from '../../api/dispatch_api'
import {selectDispatchNoteList, dispatch, cancel, getUser} from '../../api/dispatch_api'
export default {
name: 'dispatch_api',
... ...
<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>
... ...
... ... @@ -257,13 +257,13 @@
</template>
<script>
// import {
// selectDriverInfoList,
// insertDriverInfo,
// updateDriverInfo,
// batchRemoveDriverInfo,
// deleteDriverInfo,
// } from "../../api/dispatch_api";
import {
selectDriverInfoList,
insertDriverInfo,
updateDriverInfo,
batchRemoveDriverInfo,
deleteDriverInfo,
} from "../../api/dispatch_api";
export default {
name: "dispatch_api",
... ...
... ... @@ -288,13 +288,13 @@
</template>
<script>
// import {
// selectVehicleInfoList,
// insertVehicleInfo,
// updateVehicleInfo,
// batchRemoveVehicleInfo,
// deleteVehicleInfo, deleteDispatchNote
// } from "../../api/dispatch_api";
import {
selectVehicleInfoList,
insertVehicleInfo,
updateVehicleInfo,
batchRemoveVehicleInfo,
deleteVehicleInfo, deleteDispatchNote
} from "../../api/dispatch_api";
export default {
name: "dispatch_api",
... ...
... ... @@ -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">查&emsp;&emsp;询</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">新&emsp;&emsp;增</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';
... ...
... ... @@ -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,60 +68,108 @@
</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>
<span>{{addForm.userId}}</span>
</el-form-item>
<el-form-item label="账号">
<span>{{editForm.username}}</span>
<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">账&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;号</template>
</el-input>
</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-col>
<el-col :span="12">
<el-form-item label=" " prop="realname">
<el-input v-model="addForm.realname">
<template slot="prepend">姓&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;名</template>
</el-input>
</el-form-item>
<el-form-item label="姓名" prop="realname">
<el-input v-model="editForm.realname" auto-complete="off"></el-input>
</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">密&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;码</template>
</el-input>
</el-form-item>
<el-form-item label="电话" prop="mobilephone">
<el-input v-model="editForm.mobilephone" auto-complete="off"></el-input>
</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-form-item label="Email" prop="email">
<el-input v-model="editForm.email" auto-complete="off"></el-input>
</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&nbsp;&nbsp;&nbsp;&nbsp;</template>
</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-col>
<el-col :span="12">
<el-form-item label=" " prop="address">
<el-input v-model="addForm.address">
<template slot="prepend">地&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;址</template>
</el-input>
</el-form-item>
<el-form-item label="年龄">
<el-input-number v-model="editForm.age" :min="0" :max="200"></el-input-number>
</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">电&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;话</template>
</el-input>
</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>
</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-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-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-form-item lable="头像">
</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"
... ... @@ -130,58 +182,12 @@
<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>
</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>
... ...
... ... @@ -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();
... ...
... ... @@ -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)
}
... ...
... ... @@ -7,3 +7,7 @@ export const getCount = state => {
export const getUserMenuStore = state => {
return state.userMenu
}
export const getUserInfoStore = state => {
return state.userInfo
}
... ...
... ... @@ -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++
},
... ...