|
|
<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> |
...
|
...
|
|