Commit ef8d2946 authored by lixy's avatar lixy

车辆排班

parent b2ffcd23
...@@ -336,12 +336,18 @@ export const asyncRouterMap = [{ ...@@ -336,12 +336,18 @@ export const asyncRouterMap = [{
name: '车辆保养记录', name: '车辆保养记录',
authority: 'vehicleUpkeepLog' authority: 'vehicleUpkeepLog'
}, },
// { {
// path: 'vehicleSchedulManage', path: 'vehicleSchedulManage',
// component: _import('vehicle/vehicleSchedulManage/index'), component: _import('vehicle/vehicleSchedulManage/index'),
// name: '车辆排班管理', name: '车辆排班管理',
// authority: 'vehicleSchedulManage' authority: 'vehicleSchedulManage'
// } },
{
path: 'vehicleRecords',
component: _import('vehicle/vehicleSchedulManage/vehicleRecords'),
name: '车辆排班记录',
authority: 'vehicleRecords'
}
] ]
}, },
{ {
......
...@@ -75,6 +75,14 @@ export function getCurrentMonth() { ...@@ -75,6 +75,14 @@ export function getCurrentMonth() {
return formatDate(today, 'MM'); return formatDate(today, 'MM');
} }
/**
* 获取当前月 yyyy-MM
* */
export function getCurrentYearMonth() {
const today = new Date();
return formatDate(today, 'yyyy-MM');
}
/** /**
* 返回yyyy-MM-dd * 返回yyyy-MM-dd
* */ * */
...@@ -89,4 +97,4 @@ export function getYMD_hm(timestamp) { ...@@ -89,4 +97,4 @@ export function getYMD_hm(timestamp) {
export function getYMD(timestamp) { export function getYMD(timestamp) {
let date = new Date(timestamp);//时间戳为10位需*1000,时间戳为13位的话不需乘1000 let date = new Date(timestamp);//时间戳为10位需*1000,时间戳为13位的话不需乘1000
return formatDate(date, 'yyyy-MM-dd'); return formatDate(date, 'yyyy-MM-dd');
} }
\ No newline at end of file
...@@ -305,7 +305,6 @@ ...@@ -305,7 +305,6 @@
type: 'success', type: 'success',
duration: 2000 duration: 2000
}); });
this.getList();
} else { } else {
this.$notify({ this.$notify({
title: '失败', title: '失败',
......
<template> <template>
<el-dialog title="订单详情" :visible.sync="dialogVisible" class="order-details"> <el-dialog title="租车订单详情" :visible.sync="dialogVisible" class="order-details">
<el-form :model="form" ref="form" label-width="90px"> <el-form :model="form" ref="form" label-width="90px">
<el-row> <el-row>
<el-col :span="8"> <el-col :span="8">
...@@ -132,3 +132,34 @@ ...@@ -132,3 +132,34 @@
} }
} }
</script> </script>
<style>
.label-text{
margin-left: 10px;
margin-right: 20px;
}
.label-title{
margin-top: 10px;
}
.orderDetail tr th{
background: #eef1f6;
}
.orderDetail tr td, .orderDetail tr th{
width: 500px;
text-align: center;
border: 1px solid #dfe6ec;
margin-left: 100px;
margin-right: 100px;
padding: 10px;
}
.label-value{
margin-left: 80px;
margin-right: 100px;
}
#license-img{
width: 50px;
height: 50px;
}
.order-details .el-form-item{
margin-bottom: 10px !important;
}
</style>
<template>
<el-dialog title="旅游订单详情" :visible.sync="dialogVisible">
<el-form :model="form" ref="form" label-width="90px">
<el-row>
<el-col :span="8">
<el-form-item label="订单号:">
<span>{{form.no}}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="支付时间:">
<span>{{form.crtTime}}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="订单状态:">
<span>{{form.ststusName}}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col>
<el-form-item label="出发地:">
<span>{{form.orderTourDetail.startCityName}}{{form.orderTourDetail.startAddr}}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col>
<el-form-item label="目的地:">
<span>{{form.orderTourDetail.endAddr}}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col>
<el-form-item label="活动日期:">
<span>{{form.orderTourDetail.startTime}}~{{form.orderTourDetail.endTime}}</span>
</el-form-item>
</el-col>
</el-row>
<table class="orderDetail">
<tr><th>旅行</th><th>价格</th><th>人数</th><th>保险</th></tr>
<tr>
<td>{{form.name}}</td>
<td>{{tourCostDetail}}</td>
<td>成人:{{form.orderTourDetail.adultNum}} 儿童:{{form.orderTourDetail.childNum}}</td>
<td>{{insureDetail}}</td>
</tr>
<tr>
<td ></td>
<td ></td>
<td ></td>
<td >订单金额:{{form.realAmount}}</td>
</tr>
</table>
<div>
<div style="margin: 20px 0;"><span style="font-size: 18px;font-weight: bold;">联系人信息</span></div>
<div>
<span style="font-weight: 700">联系人:</span><span class="label-text" >{{form.orderTourDetail.contactMan}}</span>
<span style="font-weight: 700">联系电话:</span><span class="label-text" >{{form.orderTourDetail.contactPhone}}</span>
<span style="font-weight: 700">Email:</span><span class="label-text">{{form.orderTourDetail.contactEmail}}</span>
</div>
</div>
<div>
<div style="margin: 20px 0;"><span style="font-size: 18px;font-weight: bold;">出游人信息 成人{{form.orderTourDetail.adultNum}}人 儿童{{form.orderTourDetail.childNum}}</span></div>
<table class="orderDetail">
<tr><th>姓名</th><th>电话</th><th>身份证号</th></tr>
<tr v-for="(item,index) in form.orderTourDetail.userVoList " :key="index">
<td>{{item.realname}}</td>
<td>{{item.username}}</td>
<td>{{item.idNumber}}</td>
</tr>
</table>
</div>
</el-form>
</el-dialog>
</template>
<script>
import ElRow from "element-ui/packages/row/src/row";
import ElInput from "../../../../node_modules/element-ui/packages/input/src/input.vue";
import ElCol from "element-ui/packages/col/src/col";
import ElFormItem from "../../../../node_modules/element-ui/packages/form/src/form-item.vue";
import ElForm from "../../../../node_modules/element-ui/packages/form/src/form.vue";
import {
getVehicleOrderDetail
} from 'api/vehicle/vehicleSchedulManage';
import {
timestamp2Date
} from 'utils/dateUtils';
export default {
props: ["tourRow"],
name: 'tourOrderDetailModal',
components: {
ElFormItem,
ElCol,
ElInput,
ElRow
},
data() {
return {
dialogVisible: false,
form: {
couponAmount: undefined,
crtHost: undefined,
crtName: undefined,
crtTime: undefined,
crtUser: undefined,
detailId: undefined,
endCompanyName: undefined,
goodsAmount: undefined,
hasDiscount: undefined,
hasMemberRight: undefined,
hasPay: undefined,
id: undefined,
name: undefined,
no: undefined,
orderAmount: undefined,
orderOrigin: undefined,
orderTourDetail: {
adultNum: undefined,
childNum: undefined,
contactEmail: undefined,
contactMan: undefined,
contactPhone: undefined,
costDetail: undefined,
crtTime: undefined,
dayNum: undefined,
endAddr: undefined,
endTime: undefined,
goodId: undefined,
hasInsure: undefined,
id: undefined,
isOutside: undefined,
orderId: undefined,
siteId: undefined,
spePriceId: undefined,
startAddr: undefined,
startCity: undefined,
startCityName: undefined,
startCompanyId: undefined,
startTime: undefined,
totalNumber: undefined,
tourUserIds: undefined,
updTime: undefined,
verificationId: undefined
},
payOrigin: undefined,
picture: undefined,
realAmount: undefined,
refundStatus: undefined,
startCompanyName: undefined,
status: undefined,
ststusName:undefined,
telephone: undefined,
type: undefined,
updTime: undefined,
userId: undefined,
username: undefined,
vehicleNumberPlat: undefined,
version: undefined,
},
costDetail:{
key:undefined,
val:undefined,
children:[
{
key:undefined,
detail:undefined,
val:undefined
}
]
},
insureDetail:'',//保险
tourCostDetail:''
}
},
watch: {
dialogVisible(newValue, oldValue){
if(!newValue){
this.$emit("tourOrderDetailDialogEvent", false);
}
},
},
mounted() {
this.getOrderInfo();//获取订单详情
},
methods: {
//获取订单详情
getOrderInfo(){debugger
let params = {
orderNo: this.tourRow.no
};
getVehicleOrderDetail(params).then(res => {
if (res.status == 200) {
let a = res.data;
this.form = a;
this.form.orderTourDetail.startTime = timestamp2Date(a.orderTourDetail.startTime)
this.form.orderTourDetail.endTime = timestamp2Date(a.orderTourDetail.endTime)
this.costDetail = JSON.parse(a.orderTourDetail.costDetail)
var cost = '';
this.costDetail.children.forEach(function(a1) {
cost += a1.key + ":" +a1.detail+" "
})
if (this.form.status == 2) {
this.form.ststusName = '取消';
}
if (this.form.status == 3) {
this.form.ststusName = '待付款';
}
if (this.form.status == 4) {
this.form.ststusName = '待出行';
}
if (this.form.status == 5) {
this.form.ststusName = '出行中';
}
if (this.form.status == 6) {
this.form.ststusName = '已完成';
}
if(a.orderTourDetail.hasInsure == 0) {
this.insureDetail = "不需要保险"
}
this.tourCostDetail = cost;
this.dialogVisible = true;
} else {
this.$notify({
title: '失败',
message: '操作失败!',
type: 'error',
duration: 2000
});
}
});
}
}
}
</script>
<style>
.label-text{
margin-left: 10px;
margin-right: 20px;
}
.label-title{
margin-top: 10px;
}
.orderDetail tr th{
background: #eef1f6;
}
.orderDetail tr td, .orderDetail tr th{
width: 500px;
text-align: center;
border: 1px solid #dfe6ec;
margin-left: 100px;
margin-right: 100px;
padding: 10px;
}
.label-value{
margin-left: 80px;
margin-right: 100px;
}
#license-img{
width: 50px;
height: 50px;
}
.order-details .el-form-item{
margin-bottom: 10px !important;
}
</style>
...@@ -177,7 +177,7 @@ ...@@ -177,7 +177,7 @@
</div> </div>
<div> <div>
<span class="label-text">备注:</span></span><span class="label-text">{{orderReturnVehicleCrosstown.remak}}</span> <span class="label-text">备注:</span><span class="label-text">{{orderReturnVehicleCrosstown.remak}}</span>
</div> </div>
<div> <div>
......
...@@ -33,15 +33,14 @@ ...@@ -33,15 +33,14 @@
<el-option :key="3" label="待付款" :value="3"></el-option> <el-option :key="3" label="待付款" :value="3"></el-option>
<el-option :key="4" label="待出行" :value="4"></el-option> <el-option :key="4" label="待出行" :value="4"></el-option>
<el-option :key="5" label="出行中" :value="5"></el-option> <el-option :key="5" label="出行中" :value="5"></el-option>
<el-option :key="6" label="已完成" :value="6"></el-option> <el-option :key="6" label="已完成" :value="6"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</el-form> </el-form>
<el-button class="filter-item" type="primary" v-waves icon="search" @click="handleFilter">搜索</el-button> <el-button class="filter-item" type="primary" v-waves icon="search" @click="handleFilter">搜索</el-button>
<el-button class="filter-item" type="primary" v-waves icon="delete" @click="clearSearch">清除搜索</el-button> <el-button class="filter-item" type="primary" v-waves icon="delete" @click="clearSearch">清除搜索</el-button>
</el-button>
</div> </div>
<el-table :key='tableKey' :data="list" v-loading.body="listLoading" <el-table :key='tableKey' :data="list" v-loading.body="listLoading"
border fit highlight-current-row border fit highlight-current-row
...@@ -67,7 +66,7 @@ ...@@ -67,7 +66,7 @@
<span>{{scope.row.username}}</span>/<span>{{scope.row.telephone}}</span> <span>{{scope.row.username}}</span>/<span>{{scope.row.telephone}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column width="150" align="center" label="报名人数"> <el-table-column width="150" align="center" label="报名人数">
<template scope="scope"> <template scope="scope">
<span>成人{{scope.row.orderTourDetail.adultNum}} 儿童{{scope.row.orderTourDetail.childNum}}</span> <span>成人{{scope.row.orderTourDetail.adultNum}} 儿童{{scope.row.orderTourDetail.childNum}}</span>
...@@ -85,13 +84,13 @@ ...@@ -85,13 +84,13 @@
<span>{{scope.row.startCompanyName}}</span> <span>{{scope.row.startCompanyName}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column width="110" align="center" label="订单价格"> <el-table-column width="110" align="center" label="订单价格">
<template scope="scope"> <template scope="scope">
<span>{{scope.row.orderAmount}}</span> <span>{{scope.row.orderAmount}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column width="110" align="center" label="状态"> <el-table-column width="110" align="center" label="状态">
<template scope="scope"> <template scope="scope">
<span v-if="scope.row.status == '2'">取消</span> <span v-if="scope.row.status == '2'">取消</span>
...@@ -113,72 +112,14 @@ ...@@ -113,72 +112,14 @@
:current-page.sync="listQuery.page" :page-sizes="[10,20,30, 50]" :page-size="listQuery.limit" :current-page.sync="listQuery.page" :page-sizes="[10,20,30, 50]" :page-size="listQuery.limit"
layout="total, sizes, prev, pager, next, jumper" :total="total"></el-pagination> layout="total, sizes, prev, pager, next, jumper" :total="total"></el-pagination>
</div> </div>
<!--订单详情-->
<el-dialog :title="modalTitle" :visible.sync="bannerDialogVisible"> <tourOrderDetailModal :tourRow="tourRow" :insureDetail="insureDetail" v-if="tourDialogVisible" :tourCostDetail="tourCostDetail" v-on:tourOrderDetailDialogEvent="tourOrderDetailDialogEvent"></tourOrderDetailModal>
<el-form :model="form" :rules="rules" ref="form" label-width="90px">
<div class="label-title">
<span >订单号:</span><span class="label-text">{{form.no}}</span>
<span >支付时间:</span><span class="label-text">{{form.crtTime}}</span>
</div>
<div class="label-title">
<span >订单状态:</span><span class="label-text">{{form.ststusName}}</span>
</div>
<div class="label-title">
<span >姓名/手机号:</span> <span class="label-text"><span >{{form.username}}</span>/<span>{{form.telephone}}</span></span>
</div>
<div class="label-title">
<span >配车:</span> <span class="label-text"><span >{{form.vehicleNumberPlat}}</span><a class="label-text" style="color: #1478F0;">重新配车></a></span>
</div>
<div class="label-title">
<span >出发地:</span> <span class="label-text">{{form.orderTourDetail.startAddr}}</span>
</div>
<div class="label-title">
<span >目的地:</span> <span class="label-text">{{form.orderTourDetail.endAddr}}</span>
</div>
<div class="label-title">
<span >活动日期:</span> <span class="label-text">{{form.orderTourDetail.startTime}}~{{form.orderTourDetail.endTime}}</span>
</div>
<table class="orderDetail">
<tr>
<td>旅行</td>
<td>价格</td>
<td>人数</td>
<td>保险</td>
</tr>
<tr>
<td>{{form.name}}</td>
<td>{{tourCostDetail}}</td>
<td>成人:{{form.orderTourDetail.adultNum}} 儿童:{{form.orderTourDetail.childNum}}</td>
<td>{{insureDetail}}</td>
</tr>
<tr>
<td ></td>
<td ></td>
<td ></td>
<td >共计:{{form.realAmount}}</td>
</tr>
</table>
<div style="margin-top: 20px;">
<div><span style="font-size: 20px;font-weight: bold;">联系人信息</span></div>
<div style="margin-top: 10px;"><span>{{form.orderTourDetail.contactMan}}</span><span class="label-text">{{form.orderTourDetail.contactPhone}}</span></div><br/>
<div><span>Email:</span><span class="label-text">{{form.orderTourDetail.contactEmail}}</span></div>
</div>
<div style="margin-top: 20px;">
<div><span style="font-size: 20px;font-weight: bold;">出游人信息 成人{{form.orderTourDetail.adultNum}}人 儿童{{form.orderTourDetail.childNum}}人</span></div>
<div style="margin-top: 10px;"><span>{{form.orderTourDetail.contactMan}}</span><span class="label-text">{{form.orderTourDetail.contactPhone}}</span></div><br/>
<div><span>Email:</span><span class="label-text">{{form.orderTourDetail.contactEmail}}</span></div>
</div>
</el-form>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import Detail from "./detail";//违章查询 import Detail from "./detail";//违章查询
import tourOrderDetailModal from "../modal/tourOrderDetailModal";//租车订单详情
import { import {
page, page,
getAllBranchCompany, getAllBranchCompany,
...@@ -199,6 +140,7 @@ ...@@ -199,6 +140,7 @@
name: 'branchCompanyStock', name: 'branchCompanyStock',
components: { components: {
Detail, Detail,
tourOrderDetailModal
}, },
data() { data() {
return { return {
...@@ -303,6 +245,7 @@ ...@@ -303,6 +245,7 @@
zoneId:undefined, zoneId:undefined,
startCompanyId: undefined startCompanyId: undefined
}, },
tourRow: {},//旅游订单详情-当前行
//"{"key":"费用明细","val":"","children":[{"key":"成人价格","detail":"¥13800.00/人×1人","val":"¥13800.00"}]}" //"{"key":"费用明细","val":"","children":[{"key":"成人价格","detail":"¥13800.00/人×1人","val":"¥13800.00"}]}"
costDetail:{ costDetail:{
key:undefined, key:undefined,
...@@ -315,7 +258,7 @@ ...@@ -315,7 +258,7 @@
} }
] ]
}, },
baranchQuery: { baranchQuery: {
zoneId:null zoneId:null
}, },
...@@ -327,7 +270,8 @@ ...@@ -327,7 +270,8 @@
allBranchCompany:[], allBranchCompany:[],
tourCostDetail:'', tourCostDetail:'',
insureDetail:'',//保险 insureDetail:'',//保险
tableKey: 0 tableKey: 0,
tourDialogVisible: false,//旅游详情
} }
}, },
created() { created() {
...@@ -369,37 +313,20 @@ ...@@ -369,37 +313,20 @@
console.log(params); console.log(params);
} }
}, },
/**
* 旅游订单详情弹框关闭
* */
tourOrderDetailDialogEvent(e){
this.tourDialogVisible = false;
},
/**
* 旅游订单详情
* @param row
*/
handleBuy(row) { handleBuy(row) {
console.log(row) this.tourRow = row;
this.form = row; this.tourDialogVisible = true;
if (this.form.status == 2) { },
this.form.ststusName = '取消';
}
if (this.form.status == 3) {
this.form.ststusName = '待付款';
}
if (this.form.status == 4) {
this.form.ststusName = '待出行';
}
if (this.form.status == 5) {
this.form.ststusName = '出行中';
}
if (this.form.status == 6) {
this.form.ststusName = '已完成';
}
this.form.orderTourDetail.startTime = timestamp2Date(this.form.orderTourDetail.startTime)
this.form.orderTourDetail.endTime = timestamp2Date(this.form.orderTourDetail.endTime)
this.costDetail = JSON.parse(this.form.orderTourDetail.costDetail)
var cost = '';
this.costDetail.children.forEach(function(a) {
cost += a.key + ":" +a.detail+" "
})
if(this.form.orderTourDetail.hasInsure == 0) {
this.insureDetail = "不需要保险"
}
this.tourCostDetail = cost
this.bannerDialogVisible = true;
},
getProvinceRegions(item) { getProvinceRegions(item) {
this.listQuery.zoneId = item this.listQuery.zoneId = item
this.baranchQuery.zoneId = item this.baranchQuery.zoneId = item
......
<!--车辆排班 保养弹框-->
<template>
<el-dialog :title="currentItem.title" :visible.sync="jinyong" width="10%">
<el-form :model="currentItem" ref="currentItem" label-width="120px">
<el-form-item label="车牌号:">
<span>{{currentItem.item.numberPlate}}</span>
</el-form-item>
<el-form-item label="停靠公司:">
<span>{{currentItem.item.parkCompanyName}}</span>
</el-form-item>
<el-form-item label="申请人:">
<span>{{currentItem.ii.vehicleBookRecord.bookUserName}}</span>
</el-form-item>
<el-form-item label="禁用时间:">
<span>{{currentItem.ii.vehicleBookRecord.bookStartDate}}~{{currentItem.ii.vehicleBookRecord.bookEndDate}}</span>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="cancel()">取消禁用</el-button>
</div>
</el-dialog>
</template>
<script>
import {mapGetters} from 'vuex';
import ElRow from "element-ui/packages/row/src/row";
import ElCol from "element-ui/packages/col/src/col";
import ElFormItem from "../../../../node_modules/element-ui/packages/form/src/form-item.vue";
import {
agreeBook,
cancleBook,
rejectBook
} from 'api/vehicle/vehicleSchedulManage';
export default {
components: {
ElFormItem,
ElCol,
ElRow},
props: ["currentItem"],
name: 'disableModal',
data() {
return {
jinyong:false,
}
},
created() {
},
watch: {
jinyong(newValue, oldValue){
if(!newValue){
this.$emit("jinyongDialogEvent", false);
}
},
},
mounted() {
this.jinyong = true;
},
methods: {
/**
* 弹框-取消
* */
cancel() {
console.log("取消禁用");
cancleBook(this.currentItem.ii.vehicleBookRecord.id).then(response => {this.$emit("jinyongDialogEvent", true);});
}
}
}
</script>
...@@ -27,11 +27,11 @@ ...@@ -27,11 +27,11 @@
<span></span> <span></span>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" v-if='currentItem.title == "展览用车"' class="dialog-footer"> <div slot="footer" v-if='currentItem.title == "展览用车" && currentItem.ii.vehicleBookRecord.status==2' class="dialog-footer">
<el-button @click="cancel()">取消用车</el-button> <el-button @click="cancel()">取消用车</el-button>
<el-button type="primary" @click="handelOk()">确 定</el-button> <el-button type="primary" @click="handelOk()">确 定</el-button>
</div> </div>
<div slot="footer" v-else class="dialog-footer"> <div slot="footer" v-if='currentItem.title == "预定用车" && currentItem.ii.vehicleBookRecord.status==1' class="dialog-footer">
<el-button type="primary" @click="agree()">同 意</el-button> <el-button type="primary" @click="agree()">同 意</el-button>
<el-button @click="notAgree()">不同意</el-button> <el-button @click="notAgree()">不同意</el-button>
</div> </div>
...@@ -42,6 +42,11 @@ ...@@ -42,6 +42,11 @@
import ElRow from "element-ui/packages/row/src/row"; import ElRow from "element-ui/packages/row/src/row";
import ElCol from "element-ui/packages/col/src/col"; import ElCol from "element-ui/packages/col/src/col";
import ElFormItem from "../../../../node_modules/element-ui/packages/form/src/form-item.vue"; import ElFormItem from "../../../../node_modules/element-ui/packages/form/src/form-item.vue";
import {
agreeBook,
cancleBook,
rejectBook
} from 'api/vehicle/vehicleSchedulManage';
export default { export default {
components: { components: {
ElFormItem, ElFormItem,
...@@ -73,28 +78,28 @@ ...@@ -73,28 +78,28 @@
* */ * */
cancel() { cancel() {
console.log("展览取消用车"); console.log("展览取消用车");
this.$emit("zhanlanDialogEvent", true); cancleBook(this.currentItem.ii.vehicleBookRecord.id).then(response => {this.$emit("zhanlanDialogEvent", true);});
}, },
/** /**
* 确定用车 * 确定用车
* */ * */
handelOk(){ handelOk(){
console.log("展览确定用车"); console.log("展览确定用车");
this.$emit("zhanlanDialogEvent", true); agreeBook(this.currentItem.ii.vehicleBookRecord.id).then(response => {this.$emit("zhanlanDialogEvent", true);});
}, },
/** /**
* 同意 * 同意
*/ */
agree(){ agree(){
console.log("同意"); console.log("同意");
this.$emit("zhanlanDialogEvent", true); agreeBook(this.currentItem.ii.vehicleBookRecord.id).then(response => {this.$emit("zhanlanDialogEvent", true);});
}, },
/** /**
* 不同意 * 不同意
*/ */
notAgree(){ notAgree(){
console.log("不同意"); console.log("不同意");
this.$emit("zhanlanDialogEvent", true); rejectBook(this.currentItem.ii.vehicleBookRecord.id).then(response => {this.$emit("zhanlanDialogEvent", true);});
}, },
} }
} }
......
<!--车辆排班 保养弹框--> <!--车辆排班 保养弹框-->
<template> <template>
<el-dialog title="保养用车" :visible.sync="baoyang" width="10%"> <el-dialog title="安排用车" :visible.sync="anpai" class="user-car">
<el-form :model="currentItem" ref="currentItem" label-width="120px"> <el-form :model="form" ref="form" :rules="rules" label-width="140px">
<el-form-item label="车牌号:"> <el-form-item label="车牌号">
<span>{{currentItem.item.numberPlate}}</span> <span>{{currentItem.item.numberPlate}}</span>
</el-form-item> </el-form-item>
<el-form-item label="所属公司:"> <el-form-item label="车型名称">
<span>{{currentItem.item.subordinateBranchName}}</span> <span>{{currentItem.item.vehicleModel.name}}</span>
</el-form-item> </el-form-item>
<el-form-item label="提车保养公司:"> <el-row>
<span>{{currentItem.item.parkCompanyName}}</span> <el-col :span="8">
<el-form-item label="当前停靠公司:">
<span>{{currentItem.item.parkCompanyName}}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="所属公司">
<span>{{currentItem.item.subordinateBranchName}}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="公里数">
<span>{{currentItem.item.maintenanceMileage}}km</span>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="房车配置">
<span>{{currentItem.item.vehicleModel.keyword}}</span>
</el-form-item> </el-form-item>
<el-form-item label="还车公司:"> <el-form-item label="选择时间" prop="times">
<span>{{currentItem.item.destinationBranchCompanyName}}</span> <el-date-picker
v-model="form.times"
type="datetimerange"
format="yyyy-MM-dd hh"
placeholder="选择时间范围">
</el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="保养人:"> <el-form-item label="还车分公司" prop="arrivalBranchCompanyName">
<span>{{currentItem.ii.vehicleBookRecord.bookUserName}}</span> <el-autocomplete
class="inline-input"
v-model="form.arrivalBranchCompanyName"
:fetch-suggestions="querySearch"
placeholder="请输入内容"
@select="handleSelectArrivalCompanyName"
></el-autocomplete>
</el-form-item> </el-form-item>
<el-form-item label="预定时间:"> <el-form-item label="用途" prop="bookType">
<span>{{currentItem.ii.vehicleBookRecord.bookStartDate}}~{{currentItem.ii.vehicleBookRecord.bookEndDate}}</span> <!--bookType 2-租车、1-分公司使用、3-维修、4、展览、5、旅游、6、保养、7、预约中、8、禁用-->
<el-select class="filter-item" v-model="form.bookType" placeholder="请选择用途">
<el-option label="展览" value="4"></el-option>
<el-option label="房车游" value="5"></el-option>
<el-option label="保养" value="6"></el-option>
<el-option label="禁用" value="8"></el-option>
<!--<el-option v-for="item in getAllUseType() " :key="item.code" :label="item.val"-->
<!--:value="item.code"></el-option>-->
</el-select>
</el-form-item>
<el-form-item label="使用人" prop="vehicleUsername">
<el-input v-model="form.vehicleUsername" placeholder="请输入使用人"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="用途:"> <el-form-item label="使用人联系方式" prop="vehicleUserPhone">
<span>保养</span> <el-input v-model="form.vehicleUserPhone" placeholder="请输入使用人联系方式"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="保养项目:"> <el-form-item label="说明">
<span></span> <el-input v-model="form.remark" :rows="3" placeholder="请输入说明"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button @click="cancel()">取消用车</el-button> <el-button @click="cancel()">取消</el-button>
<el-button type="primary" @click="handelOk()">确 定</el-button> <el-button type="primary" @click="handelOk('form')">确 定</el-button>
</div> </div>
</el-dialog> </el-dialog>
</template> </template>
<style>
.user-car .el-row{
margin-bottom: 0;
}
</style>
<script> <script>
import {mapGetters} from 'vuex'; import {mapGetters} from 'vuex';
import {
VEHICLE_CONSTANT_VEHICLE_BRAND,
VEHICLE_CONSTANT_VEHICLE_USE,
VEHICLE_CONSTANT_BRAND_CODE_UNKOWN,
BELONG_TO_TYPE_OWN,
VEHICLE_CONSTANT_USE_TYPE_UNKOWN,
VEHICLE_CONSTANT_STATUS_NORMAL
} from '../../../store/modules/baseInfo';
import {
getConstantByTypeAndCode,
getConstantListByType,
getAllInsuranceCompany,
getInsuranceCompany
} from 'api/base_info/constant/';
import {
getAllCompany,
getAll
} from 'api/base_info/branch_company/';
import {
bookPlan
} from 'api/vehicle/vehicleSchedulManage';
import ElRow from "element-ui/packages/row/src/row"; import ElRow from "element-ui/packages/row/src/row";
import ElCol from "element-ui/packages/col/src/col"; import ElCol from "element-ui/packages/col/src/col";
import ElFormItem from "../../../../node_modules/element-ui/packages/form/src/form-item.vue"; import ElFormItem from "../../../../node_modules/element-ui/packages/form/src/form-item.vue";
import {
formatDate
} from 'utils/dateFormattor';
export default { export default {
components: { components: {
ElFormItem, ElFormItem,
...@@ -47,37 +116,140 @@ ...@@ -47,37 +116,140 @@
name: 'vehiclePlanModal', name: 'vehiclePlanModal',
data() { data() {
return { return {
baoyang:false, anpai:false,
allCompaniesArr:[],
form:{
remark: "",
vehicleUsername: "",
arrivalBranchCompanyId: undefined,//还车分公司id
arrivalBranchCompanyName: "",//还车分公司名称
vehicleUserPhone:"",//使用人联系电话
bookType: undefined,//用途
times: [],
},
rules: {
vehicleUsername: [
{
type: 'string',
required: true,
message: '请输入使用人姓名',
trigger: 'blur'
},
{
min: 0,
max: 20,
message: '长度小于 20 个字符',
trigger: 'blur'
}
],
arrivalBranchCompanyName:{
type: 'string',
required: true,
message: '请选择还车公司',
trigger: 'change'
},
vehicleUserPhone:{
type: 'string',
required: true,
message: '请输入使用人联系方式',
trigger: 'blur'
},
bookType:{
type: 'string',
required: true,
message: '请选择用途',
trigger: 'change'
},
times: {
required: true,
message: '请选择时间',
}
}
} }
}, },
created() { created() {
console.log(this.currentItem); console.log(this.currentItem);
getAll()
.then(response => {
this.allCompaniesArr = response.data;
})
getAllCompany(codeAndBranchCompany => {
this.allCompanies = codeAndBranchCompany;
});
}, },
watch: { watch: {
baoyang(newValue, oldValue){ anpai(newValue, oldValue){
if(!newValue){ if(!newValue){
this.$emit("baoyangDialogEvent", false); this.$emit("anpaiDialogEvent", false);
} }
}, },
}, },
mounted() { mounted() {
this.baoyang = true; this.anpai = true;
}, },
methods: { methods: {
/** /**
* 保养-弹框-取消 * 还车分公司
*/
handleSelectArrivalCompanyName(item){
this.form.arrivalBranchCompanyId = item.id;
this.form.arrivalBranchCompanyName = item.name;
console.log(item);
},
querySearch(queryString, cb) {
let selectArry = [];
this.allCompaniesArr.map(function(item){
item.value = item.name;
selectArry.push(item);
});
this.selectArry = selectArry;
var results = queryString ? selectArry.filter(this.createFilter(queryString)) : selectArry;
// 调用 callback 返回建议列表的数据
cb(results);
},
createFilter(queryString) {
return (restaurant) => {
return (restaurant.name.indexOf(queryString.toLowerCase()) != -1);
};
},
/**
* 弹框-取消
* */ * */
cancel() { cancel() {
console.log("保养取消用车"); this.$emit("anpaiDialogEvent", false);
this.$emit("baoyangDialogEvent", true);
}, },
/** /**
* 保养-确定用车 * 确定用车
* */ * */
handelOk(){ handelOk(formName){
console.log("保养确定用车"); const set = this.$refs;
this.$emit("baoyangDialogEvent", true); set[formName].validate(valid => {
} if (valid) {
let params = {
vehicleId:this.currentItem.item.id,
bookStartDate: formatDate(this.form.times[0], "yyyy-MM-dd hh")+":00:00",//预定开始时间
bookEndDate: formatDate(this.form.times[1], "yyyy-MM-dd hh")+":00:00",//预定结束时间
retCompany: this.form.arrivalBranchCompanyId,//还车分公司
bookType: this.form.bookType,//预定车辆用途类型
vehicleUsername: this.form.vehicleUsername,//使用人姓名
vehicleUserPhone: this.form.vehicleUserPhone,//使用人电话
remark: this.form.remark//说明
};
bookPlan(params).then(response => {
if (response.status === 200) {
this.$emit("anpaiDialogEvent", true);
} else {
this.$notify({
title: '失败',
message: '操作失败!',
type: 'error',
duration: 2000
});
}
})
}
})
},
} }
} }
</script> </script>
......
<!--车辆排班记录-->
<template>
<div class="app-container calendar-list-container">
<div class="filter-container">
<el-input style="width: 200px;" placeholder="车牌号"
v-model="listQuery.numberPlate"></el-input>
<el-date-picker
v-model="listQuery.selectedMonth"
type="month"
format = "yyyy-MM"
placeholder="选择月">
</el-date-picker>
<el-button class="filter-item" type="primary" v-waves icon="search" @click="handleFilter">搜索</el-button>
</div>
<el-table :key='tableKey' :data="list" v-loading.body="listLoading" border fit highlight-current-row
style="width: 100%">
<el-table-column align="center" label="日期" width="200">
<template scope="scope">
<div>起:{{scope.row.bookStartDate}}</div>
<div>止:{{scope.row.bookEndDate}}</div>
</template>
</el-table-column>
<el-table-column width="100" align="center" label="用途">
<template scope="scope">
<!--/*2-租车、1-分公司使用、3-维修、4、展览、5、旅游、6、保养、7、预约中、8、禁用*/-->
<span>{{scope.row.bookType==2?"租房车":scope.row.bookType==4?"展览":scope.row.bookType==5?"房车游":scope.row.bookType==6?"保养":scope.row.bookType==7?"预约中":scope.row.bookType==8?"禁用":'未知用途'}}</span>
</template>
</el-table-column>
<el-table-column width="200" align="center" label="订单号">
<template scope="scope">
<span>{{scope.row.orderNo}}</span>
</template>
</el-table-column>
<el-table-column width="200" align="center" label="出车分公司">
<template scope="scope">
<span>{{scope.row.mileage}}</span>
</template>
</el-table-column>
<el-table-column width="200" align="center" label="还车分公司">
<template scope="scope">
<span>{{scope.row.retCompanyName}}</span>
</template>
</el-table-column>
<el-table-column width="150" align="center" label="使用人">
<template scope="scope">
<span>{{scope.row.vehicleUsername}}</span>
</template>
</el-table-column>
<el-table-column width="150" align="center" label="使用人联系方式">
<template scope="scope">
<span>{{scope.row.vehicleUserPhone}}</span>
</template>
</el-table-column>
<el-table-column align="center" label="操作" width="300">
<template scope="scope">
<el-button size="small" type="success" @click="handleDetail(scope.row)">详情</el-button>
<el-button size="small" type="success" @click="getLogInfo(scope.row)">重新安排</el-button>
</template>
</el-table-column>
</el-table>
<div v-show="!listLoading" class="pagination-container">
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
:current-page.sync="listQuery.page" :page-sizes="[10,20,30, 50]" :page-size="listQuery.limit"
layout="total, sizes, prev, pager, next, jumper" :total="total"></el-pagination>
</div>
<!--详情-->
<el-dialog title="详情" :visible.sync="dialogVisible">
<el-form :model="currentItem" ref="currentItem" label-width="120px">
<el-form-item label="车牌号:">
<span>{{currentItem.numberPlate}}</span>
</el-form-item>
<!--<el-form-item label="停靠公司:">-->
<!--<span>{{currentItem.parkCompanyName}}</span>-->
<!--</el-form-item>-->
<!--<el-form-item label="申请人:">-->
<!--<span>{{currentItem.ii.vehicleBookRecord.bookUserName}}</span>-->
<!--</el-form-item>-->
<!--<el-form-item label="禁用时间:">-->
<!--<span>{{currentItem.ii.vehicleBookRecord.bookStartDate}}~{{currentItem.ii.vehicleBookRecord.bookEndDate}}</span>-->
<!--</el-form-item>-->
</el-form>
</el-dialog>
</div>
</template>
<script>
import {
getBookRecord
} from 'api/vehicle/vehicleSchedulManage';
import rsCode from '../../../utils/rsCode';
import {
formatDate
} from 'utils/dateFormattor';
export default {
name: 'vehicleRecords',
data() {
return {
currentItem: {},//当前操作表单
dialogVisible: false,//记录详情
form: {
vehicleId: null,
numberPlate: null,
operator: null,
date: null,
mileage: null,
amount: null,
approvers: null,
branchCompanyId: null,
branchCompanyName: null,
upkeepItems: []
},
list: null,
total: null,
listLoading: true,
listQuery: {
page: 1,
limit: 20,
selectedMonth: "",
numberPlate: undefined
},
tableKey: 0,
dialogFormVisible: false
}
},
created() {
},
mounted() {
this.listQuery.selectedMonth = this.$route.query.selectedMonth;
this.listQuery.numberPlate = this.$route.query.numberPlate;
this.getList();
},
methods: {
handleFilter() {
this.getList();
},
/**
* 获取排班记录列表数据
*/
getList() {
this.listLoading = true;
if(this.listQuery.selectedMonth && (typeof this.listQuery.selectedMonth == "object")){
this.listQuery.selectedMonth = formatDate(this.listQuery.selectedMonth, "yyyy-MM");//预定开始时间;
}
getBookRecord(this.listQuery).then(response => {
this.list = response.data.data;
this.total = response.data.totalCount;
this.listLoading = false;
});
},
handleSizeChange(val) {
this.listQuery.limit = val;
this.getList();
},
handleCurrentChange(val) {
this.listQuery.page = val;
this.getList();
},
/**
* 详情
*/
handleDetail(row){
this.currentItem = row;
this.dialogVisible = true;
},
}
}
</script>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment