Commit 4997b883 authored by 164003836@qq.con's avatar 164003836@qq.con

车辆信息管理:增加简单的还车,提车环节

parent 41640b63
...@@ -37,3 +37,19 @@ export function unbook(id) { ...@@ -37,3 +37,19 @@ export function unbook(id) {
method: 'delete' method: 'delete'
}); });
} }
export function lift(data) {
return fetch({
url: '/vehicle/vehicleInfo/book/4employee/lift',
method: 'put',
data: data
});
}
export function ret(data) {
return fetch({
url: '/vehicle/vehicleInfo/book/4employee/ret',
method: 'put',
data: data
});
}
...@@ -13,6 +13,7 @@ export const VEHICLE_CONSTANT_STATUS_NORMAL = 1; // 车辆状态 - 废弃 ...@@ -13,6 +13,7 @@ export const VEHICLE_CONSTANT_STATUS_NORMAL = 1; // 车辆状态 - 废弃
export const BOOK_RECORD_STATUS_APPLY = 1; // 预定记录状态 - 申请中 export const BOOK_RECORD_STATUS_APPLY = 1; // 预定记录状态 - 申请中
export const BOOK_RECORD_STATUS_PROVED = 2; // 预定记录状态 - 已通过 export const BOOK_RECORD_STATUS_PROVED = 2; // 预定记录状态 - 已通过
export const BOOK_RECORD_STATUS_LIFT = 7; // 预定记录状态 - 已提车
const baseInfo = { const baseInfo = {
...@@ -59,6 +60,10 @@ const baseInfo = { ...@@ -59,6 +60,10 @@ const baseInfo = {
6: { 6: {
code: 6, code: 6,
val: '取消预订' val: '取消预订'
},
7: {
code: 7,
val: '已提车'
} }
} }
}, },
......
...@@ -6,6 +6,7 @@ export default { ...@@ -6,6 +6,7 @@ export default {
VEHICLE_INFO_NUMBER_PLATE_EXIST: 102001, //车牌已存在 VEHICLE_INFO_NUMBER_PLATE_EXIST: 102001, //车牌已存在
VEHICLE_INFO_CODE_EXIST: 102003, //车辆编码已存在 VEHICLE_INFO_CODE_EXIST: 102003, //车辆编码已存在
VEHICLE_BOOKED_RECORD_ALREADY_CHANGED: 103001, //车辆预定申请状态已被修改,请刷新后继续操作 VEHICLE_BOOKED_RECORD_ALREADY_CHANGED: 103001, //车辆预定申请状态已被修改,请刷新后继续操作
VEHICLE_BOOKED_RECORD_STATUS_CHANGED: 103002 //车辆预定申请状态已被修改,请刷新后继续操作
}, },
msg: { msg: {
1: '成功', 1: '成功',
...@@ -13,6 +14,7 @@ export default { ...@@ -13,6 +14,7 @@ export default {
101001: "车辆预定信息已被修改,请刷新后继续操作", 101001: "车辆预定信息已被修改,请刷新后继续操作",
103001: "车辆预定申请状态已被修改,请刷新后继续操作", 103001: "车辆预定申请状态已被修改,请刷新后继续操作",
102001: "车牌已存在", 102001: "车牌已存在",
102003: "车辆编码已存在" 102003: "车辆编码已存在",
103002: "车辆预定申请状态已变更,请刷新后继续操作"
} }
} }
...@@ -84,11 +84,11 @@ ...@@ -84,11 +84,11 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" label="提车地址" width="200"> <!-- <el-table-column align="center" label="提车地址" width="200">-->
<template scope="scope"> <!-- <template scope="scope">-->
<span>{{scope.row.liftAddr}}</span> <!-- <span>{{scope.row.liftAddr}}</span>-->
</template> <!-- </template>-->
</el-table-column> <!-- </el-table-column>-->
<el-table-column align="center" label="目的地" width="200"> <el-table-column align="center" label="目的地" width="200">
<template scope="scope"> <template scope="scope">
...@@ -102,18 +102,50 @@ ...@@ -102,18 +102,50 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" label="申请审核人" width="65"> <el-table-column align="center" label="申请审核人" width="120">
<template scope="scope"> <template scope="scope">
<span>{{scope.row.reviewerNameApply}}</span> <span>{{scope.row.reviewerNameApply}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" label="取消人" width="65"> <el-table-column align="center" label="取消人" width="100">
<template scope="scope"> <template scope="scope">
<span>{{scope.row.reviewerNameCancel}}</span> <span>{{scope.row.reviewerNameCancel}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" label="提车地点" width="120">
<template scope="scope">
<span>{{scope.row.liftCompanyName}}</span>
</template>
</el-table-column>
<el-table-column align="center" label="提车审核人" width="120">
<template scope="scope">
<span>{{scope.row.reviewerNameLift}}</span>
</template>
</el-table-column>
<el-table-column align="center" label="提车时间" width="120">
<template scope="scope">
<span>{{scope.row.actualStartDate}}</span>
</template>
</el-table-column>
<el-table-column align="center" label="还车地点" width="120">
<template scope="scope">
<span>{{scope.row.retCompanyName}}</span>
</template>
</el-table-column>
<el-table-column align="center" label="还车审核人" width="120">
<template scope="scope">
<span>{{scope.row.reviewerNameReturn}}</span>
</template>
</el-table-column>
<el-table-column align="center" label="还车时间" width="120">
<template scope="scope">
<span>{{scope.row.actualEndDate}}</span>
</template>
</el-table-column>
<el-table-column align="center" label="操作" width="250"> <el-table-column align="center" label="操作" width="250">
<template scope="scope"> <template scope="scope">
<el-button size="small" type="success" @click="handleBookInfo(scope.row)">预订信息</el-button> <el-button size="small" type="success" @click="handleBookInfo(scope.row)">预订信息</el-button>
...@@ -125,6 +157,12 @@ ...@@ -125,6 +157,12 @@
v-if="bookRecord_btn_reject && checkIfApply(scope.row.status) && !checkIfBooked(scope.row.bookedDate, [scope.row.bookStartDate, scope.row.bookEndDate]) " v-if="bookRecord_btn_reject && checkIfApply(scope.row.status) && !checkIfBooked(scope.row.bookedDate, [scope.row.bookStartDate, scope.row.bookEndDate]) "
size="small" type="danger" @click="handleReject(scope.row)">拒绝 size="small" type="danger" @click="handleReject(scope.row)">拒绝
</el-button> </el-button>
<el-button v-if="bookRecord_btn_lift && checkIfProved(scope.row.status)" size="small" type="success"
@click="handleLift(scope.row)">提车
</el-button>
<el-button v-if="bookRecord_btn_ret && checkIfLift(scope.row.status)" size="small" type="success"
@click="handleRet(scope.row)">还车
</el-button>
<el-button v-if="bookRecord_btn_unbook && checkIfProved(scope.row.status)" size="small" type="danger" <el-button v-if="bookRecord_btn_unbook && checkIfProved(scope.row.status)" size="small" type="danger"
@click="handleUnbook(scope.row)">取消预定 @click="handleUnbook(scope.row)">取消预定
</el-button> </el-button>
...@@ -141,6 +179,52 @@ ...@@ -141,6 +179,52 @@
<book-info-viewer ref="bookInfoViewer"></book-info-viewer> <book-info-viewer ref="bookInfoViewer"></book-info-viewer>
<!-- 提车对话框相关html元素 -->
<el-dialog title="提车" :visible.sync="dialogForm4LiftVisible">
<el-form :model="form4Lift" :rules="rules4Lift" ref="form4Lift" label-width="120px">
<el-form-item label="提车分公司" prop="liftCompany">
<el-select class="filter-item" v-model="form4Lift.liftCompany" placeholder="请选择提车分公司">
<el-option :key="undefined" label="无" :value="undefined"></el-option>
<el-option v-for="item in allCompanies" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="提车备注" prop="liftRemark">
<el-input v-model="form4Lift.liftRemark" placeholder="请输入备注信息"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancelDialog4Lift('form4Lift')">取 消</el-button>
<el-button type="primary" @click="lift('form4Lift')">确 定</el-button>
</div>
</el-dialog>
<!-- 提车对话框相关html元素 -->
<el-dialog title="还车" :visible.sync="dialogForm4RetVisible">
<el-form :model="form4Ret" :rules="rules4Ret" ref="form4Ret" label-width="120px">
<el-form-item label="还车分公司" prop="retCompany">
<el-select class="filter-item" v-model.number="form4Ret.retCompany" placeholder="请选择还车分公司">
<el-option :key="undefined" label="无" :value="undefined"></el-option>
<el-option v-for="item in allCompanies" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="还车备注" prop="retRemark">
<el-input v-model="form4Ret.retRemark" placeholder="请输入备注信息"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancelDialog4Ret('form4Ret')">取 消</el-button>
<el-button type="primary" @click="ret('form4Ret')">确 定</el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
...@@ -149,6 +233,9 @@ ...@@ -149,6 +233,9 @@
page, page,
prove, prove,
reject, reject,
getObj,
lift,
ret,
unbook unbook
} from 'api/vehicle/bookRecord'; } from 'api/vehicle/bookRecord';
...@@ -173,7 +260,8 @@ ...@@ -173,7 +260,8 @@
import { import {
BOOK_RECORD_STATUS_APPLY, BOOK_RECORD_STATUS_APPLY,
BOOK_RECORD_STATUS_PROVED BOOK_RECORD_STATUS_PROVED,
BOOK_RECORD_STATUS_LIFT
} from '../../../store/modules/baseInfo'; } from '../../../store/modules/baseInfo';
import bookInfoViewer from '../bookInfoViewer'; import bookInfoViewer from '../bookInfoViewer';
...@@ -204,8 +292,58 @@ ...@@ -204,8 +292,58 @@
bookRecord_btn_prove: false, bookRecord_btn_prove: false,
bookRecord_btn_unbook: false, bookRecord_btn_unbook: false,
bookRecord_btn_reject: false, bookRecord_btn_reject: false,
bookRecord_btn_lift: false,
bookRecord_btn_ret: false,
dialogForm4LiftVisible: false,
dialogForm4RetVisible: false,
allCompanies: {}, allCompanies: {},
tableKey: 0 tableKey: 0,
form4Lift: {
id: undefined,
liftCompany: undefined,
liftRemark: undefined
},
rules4Lift: {
liftCompany: [
{
required: true,
message: '请选择提车分公司',
trigger: 'blur',
type: 'integer'
}
],
retRemark: [
{
min: 0,
max: 2000,
message: '长度小于 2000 个字符',
trigger: 'blur'
}
]
},
form4Ret: {
id: undefined,
retCompany: undefined,
retRemark: undefined
},
rules4Ret: {
retCompany: [
{
required: true,
message: '请选择提车分公司',
trigger: 'blur',
type: 'integer'
}
],
retRemark: [
{
min: 0,
max: 2000,
message: '长度小于 2000 个字符',
trigger: 'blur'
}
]
}
} }
}, },
created() { created() {
...@@ -216,6 +354,8 @@ ...@@ -216,6 +354,8 @@
this.bookRecord_btn_prove = this.elements['bookRecord:btn_prove']; this.bookRecord_btn_prove = this.elements['bookRecord:btn_prove'];
this.bookRecord_btn_unbook = this.elements['bookRecord:btn_unbook']; this.bookRecord_btn_unbook = this.elements['bookRecord:btn_unbook'];
this.bookRecord_btn_reject = this.elements['bookRecord:btn_reject']; this.bookRecord_btn_reject = this.elements['bookRecord:btn_reject'];
this.bookRecord_btn_lift = this.elements['bookRecord:btn_lift'];
this.bookRecord_btn_ret = this.elements['bookRecord:btn_ret'];
}, },
computed: { computed: {
...mapGetters([ ...mapGetters([
...@@ -239,6 +379,49 @@ ...@@ -239,6 +379,49 @@
} }
}, },
methods: { methods: {
cancelDialog4Lift(formName) {
this.dialogForm4LiftVisible = false;
this.$refs[formName].resetFields();
},
cancelDialog4Ret(formName) {
this.dialogForm4RetVisible = false;
this.$refs[formName].resetFields();
},
lift(formName) {
const set = this.$refs;
set[formName].validate(valid => {
if (valid) {
lift(this.form4Lift).then((response) => {
if (response.code === rsCode.code.VEHICLE_BOOKED_RECORD_STATUS_CHANGED) {
this.$notify({
title: '失败',
message: rsCode.msg[rsCode.code.VEHICLE_BOOKED_RECORD_STATUS_CHANGED],
type: 'error',
duration: 2000
});
} else if (response.code === rsCode.RS_CODE_SUC) {
this.$notify({
title: '成功',
message: '操作成功',
type: 'success',
duration: 2000
});
this.dialogForm4LiftVisible = false;
this.getList();
} else {
this.$notify({
title: '失败',
message: '操作失败',
type: 'error',
duration: 2000
});
}
});
} else {
return false;
}
});
},
handleBookInfo(row) { handleBookInfo(row) {
this.$refs.bookInfoViewer.handleBookInfo(row.vehicle); this.$refs.bookInfoViewer.handleBookInfo(row.vehicle);
}, },
...@@ -263,6 +446,9 @@ ...@@ -263,6 +446,9 @@
checkIfProved(code) { checkIfProved(code) {
return code === BOOK_RECORD_STATUS_PROVED; return code === BOOK_RECORD_STATUS_PROVED;
}, },
checkIfLift(code) {
return code === BOOK_RECORD_STATUS_LIFT;
},
getList() { getList() {
this.listLoading = true; this.listLoading = true;
page(this.listQuery) page(this.listQuery)
...@@ -374,6 +560,63 @@ ...@@ -374,6 +560,63 @@
}); });
}); });
}, },
handleLift(row) {
this.resetTemp4Lift();
getObj(row.id)
.then(response => {
if (!this.$utils.isEmpty(response.data) && this.$utils.isInteger(response.data.liftCompany)) {
this.form4Lift.liftCompany = response.data.liftCompany;
}
this.form4Lift.id = row.id;
this.dialogForm4LiftVisible = true;
});
},
handleRet(row) {
this.resetTemp4Ret();
getObj(row.id)
.then(response => {
if (!this.$utils.isEmpty(response.data) && this.$utils.isInteger(response.data.retCompany)) {
this.form4Ret.retCompany = response.data.retCompany;
}
this.form4Ret.id = row.id;
this.dialogForm4RetVisible = true;
});
},
ret(formName) {
const set = this.$refs;
set[formName].validate(valid => {
if (valid) {
ret(this.form4Ret).then((response) => {
if (response.code === rsCode.code.VEHICLE_BOOKED_RECORD_STATUS_CHANGED) {
this.$notify({
title: '失败',
message: rsCode.msg[rsCode.code.VEHICLE_BOOKED_RECORD_STATUS_CHANGED],
type: 'error',
duration: 2000
});
} else if (response.code === rsCode.RS_CODE_SUC) {
this.$notify({
title: '成功',
message: '操作成功',
type: 'success',
duration: 2000
});
this.dialogForm4RetVisible = false;
this.getList();
} else {
this.$notify({
title: '失败',
message: '操作失败',
type: 'error',
duration: 2000
});
}
});
} else {
return false;
}
});
},
handleUnbook(row) { handleUnbook(row) {
this.$confirm('确定取消预定?', '提示', { this.$confirm('确定取消预定?', '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
...@@ -408,15 +651,18 @@ ...@@ -408,15 +651,18 @@
}); });
}); });
}, },
resetTemp() { resetTemp4Lift() {
this.form = { this.form4Lift = {
id: undefined,
liftCompany: undefined,
liftRemark: undefined
};
},
resetTemp4Ret() {
this.form4Ret = {
id: undefined, id: undefined,
name: undefined, retCompany: undefined,
addrProvince: undefined, retRemark: undefined
addrCity: undefined,
addrTown: undefined,
addrDetail: undefined,
updateTime: undefined
}; };
} }
} }
......
...@@ -49,13 +49,18 @@ ...@@ -49,13 +49,18 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-button class="filter-item" type="primary" :icon=" showMoreQueryFilter ? 'caret-top' : 'caret-bottom' " <el-form-item label="分公司" prop="subordinateBranch">
v-waves @click="showMoreQueryFilter=!showMoreQueryFilter"> <el-select class="filter-item" v-model="listQuery.subordinateBranch" placeholder="请选择分公司">
更多条件 <el-option :key="undefined" label="无" :value="undefined"></el-option>
</el-button> <el-option v-for="item in allCompanies" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-button class="filter-item" type="primary" :icon=" showMoreQueryFilter ? 'caret-top' : 'caret-bottom' "
v-waves @click="showMoreQueryFilter=!showMoreQueryFilter">
更多条件
</el-button>
<transition name="fade"> <transition name="fade">
<div v-if="showMoreQueryFilter"> <div v-if="showMoreQueryFilter">
...@@ -462,8 +467,11 @@ ...@@ -462,8 +467,11 @@
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="提车地址" prop="liftAddr"> <el-form-item label="提车分公司" prop="liftCompany">
<el-input v-model="form4Apply.liftAddr" placeholder="请输入提车地址"></el-input> <el-select class="filter-item" v-model.number="form4Apply.liftCompany" placeholder="请选择提车分公司">
<el-option :key="undefined" label="无" :value="undefined"></el-option>
<el-option v-for="item in allCompanies" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="目的地" prop="destination"> <el-form-item label="目的地" prop="destination">
<el-input v-model="form4Apply.destination" placeholder="请输入目的地"></el-input> <el-input v-model="form4Apply.destination" placeholder="请输入目的地"></el-input>
...@@ -622,6 +630,7 @@ ...@@ -622,6 +630,7 @@
bookEndDate: undefined, bookEndDate: undefined,
vehicle: undefined, vehicle: undefined,
liftAddr: undefined, liftAddr: undefined,
liftCompany: undefined,
destination: undefined, destination: undefined,
remark: undefined remark: undefined
}, },
...@@ -707,17 +716,12 @@ ...@@ -707,17 +716,12 @@
trigger: 'blur' trigger: 'blur'
} }
], ],
liftAddr: [ liftCompany: [
{ {
required: true, required: true,
message: '请输入提车地址', message: '请选择提车分公司',
trigger: 'blur' trigger: 'blur',
}, type: 'integer'
{
min: 0,
max: 200,
message: '长度小于 200 个字符',
trigger: 'blur'
} }
], ],
destination: [ destination: [
...@@ -1154,6 +1158,7 @@ ...@@ -1154,6 +1158,7 @@
bookStartDate: undefined, bookStartDate: undefined,
bookEndDate: undefined, bookEndDate: undefined,
vehicle: undefined, vehicle: undefined,
liftCompany: undefined,
liftAddr: undefined, liftAddr: undefined,
destination: undefined, destination: undefined,
remark: undefined remark: undefined
......
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