Commit 12a0da55 authored by hanfeng's avatar hanfeng

Merge branch 'base-modify' of http://113.105.137.151:22280/youjj/cloud-platform-ui into base-modify

parents 0828e966 51039a4a
import fetch from 'utils/fetch';
/**
* 获取列表
* @param query
*/
export function getPushList(query) {
return fetch({
url: '/api/universal/jpush/list',
method: 'Get',
params: query
});
}
/**
* 系统发送类型
* @param query
*/
export function getSendTypeList() {
return fetch({
url: '/api/universal/jpush/sendTpyes',
method: 'Get',
});
}
/**
* 跳转页面类型
* @param query
*/
export function getJumpTypeList() {
return fetch({
url: '/api/universal/jpush/jumpTpyes',
method: 'Get',
});
}
/**
* 获取弹窗管理列表某一条数据
* @param query
*/
export function getObj(id) {
return fetch({
url: '/api/universal/jpush/getOne/'+id,
method: 'Get'
})
}
/**
* 弹窗管理--添加
* @param query
*/
export function addObj(obj) {
return fetch({
url: '/api/universal/jpush/addMessagePush',
method: 'post',
data: obj
});
}
/**
* 编辑某一条数据,上下架
* @param query
*/
export function editObj(data) {
return fetch({
url: '/api/universal/jpush/udpMessagePush',
method: 'post',
data: data
})
}
/**
* 删除数据
* @param query
*/
export function delObj(id) {
return fetch({
url: '/api/universal/jpush/del/' + id,
method: 'delete',
})
}
/**
* 立即推送
* @param query
*/
export function pushStype(query) {
return fetch({
url: '/api/universal/jpush/stype',
method: 'Get',
params: query
});
}
...@@ -63,6 +63,7 @@ export function getBookedInfo(vehicleId, yearMonth) { ...@@ -63,6 +63,7 @@ export function getBookedInfo(vehicleId, yearMonth) {
method: 'get' method: 'get'
}); });
} }
/* /*
* 根据id获取片区下省份 * 根据id获取片区下省份
* */ * */
...@@ -89,3 +90,11 @@ export function editObj(param) { ...@@ -89,3 +90,11 @@ export function editObj(param) {
data: param data: param
}); });
} }
//检查车辆编码是否存在
export function checkCode(code, id) {
return fetch({
url: '/vehicle/vehicleInfo/exist_code/' + code + '?id=' + id,
method: 'get'
});
}
...@@ -334,7 +334,7 @@ export const asyncRouterMap = [{ ...@@ -334,7 +334,7 @@ export const asyncRouterMap = [{
{ {
path: 'bookRecord', path: 'bookRecord',
component: _import('vehicle/bookRecord/index'), component: _import('vehicle/bookRecord/index'),
name: '车辆申请管理', name: '车辆排班管理',
authority: 'bookRecord' authority: 'bookRecord'
}, },
{ {
...@@ -364,7 +364,7 @@ export const asyncRouterMap = [{ ...@@ -364,7 +364,7 @@ export const asyncRouterMap = [{
{ {
path: 'vehicleSchedulManage', path: 'vehicleSchedulManage',
component: _import('vehicle/vehicleSchedulManage/index'), component: _import('vehicle/vehicleSchedulManage/index'),
name: '车辆排班管理', name: '车辆排班',
authority: 'vehicleSchedulManage' authority: 'vehicleSchedulManage'
}, },
{ {
...@@ -519,6 +519,12 @@ export const asyncRouterMap = [{ ...@@ -519,6 +519,12 @@ export const asyncRouterMap = [{
component: _import('appManagement/selectedActivities/index'), component: _import('appManagement/selectedActivities/index'),
name: '首页精选活动', name: '首页精选活动',
authority: 'selectedActivities' authority: 'selectedActivities'
},
{
path: 'pushManagement',
component: _import('appManagement/pushManagement/index'),
name: '消息推送',
authority: 'pushManagement'
} }
] ]
}, },
......
<template>
<div class="app-container calendar-list-container" v-loading.body="showLoadingBody">
<div class="filter-container" ref="filter-container">
<el-form ref="queryForm" :inline="inline" :model="listQuery" label-width="60px">
<el-row>
<el-col :span="4">
<el-form-item label="标题">
<el-input v-model.number="listQuery.title" placeholder="请输入标题"></el-input>
</el-form-item>
</el-col>
<el-col :span="4">
<el-select class="filter-item" v-model="listQuery.type" placeholder="请选择推送方式" @change="handleTypeChange">
<el-option :key="null" label="全部" :value="null"></el-option>
<el-option :key="1" label="手动推送" :value="1"></el-option>
<el-option :key="2" label="系统自动推送" :value="2"></el-option>
</el-select>
</el-col>
<el-button class="filter-item" type="primary" v-waves icon="search" @click="handleFilter">搜索</el-button>
<el-button class="filter-item" type="primary" style="float: right;" @click="handleCreate">+ 添加通知</el-button>
</el-row>
</el-form>
</div>
<el-table :key='tableKey' :data="list" border fit highlight-current-row
style="width: 100%">
<el-table-column
type="index"
align="center" label="序号" width="98">
</el-table-column>
<el-table-column width="200" align="center" label="标题">
<template scope="scope">
<span>{{scope.row.title}}</span>
</template>
</el-table-column>
<el-table-column align="center" label="描述">
<template scope="scope">
<span>{{scope.row.alerts}}</span>
</template>
</el-table-column>
<el-table-column width="200" align="center" label="推送方式">
<template scope="scope">
<span v-if="scope.row.type==1">手动推送</span>
<span v-if="scope.row.type==2">系统自动推送</span>
</template>
</el-table-column>
<el-table-column width="250" align="center" label="创建时间">
<template scope="scope">
<span>{{scope.row.crtTimeStr}}</span>
</template>
</el-table-column>
<el-table-column align="center" width="150" label="操作" fixed="right">
<template scope="scope">
<el-button size="small" class="el-button el-button--text el-button--small" @click="handleDown(scope.row)" v-show="scope.row.type==1">立即推送</el-button>
<el-button size="small" class="el-button el-button--text el-button--small" @click="handleUpdate(scope.row)">编辑</el-button>
<el-button class="el-button el-button--text el-button--small" size="small" @click="deleteHandler(scope.row)" style="color:red;">删除</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,40,50]" :page-size="listQuery.limit"
layout="total, sizes, prev, pager, next, jumper" :total="total"></el-pagination>
</div>
<!-- banner modal弹窗 -->
<el-dialog :title="modalTitle" :visible.sync="bannerDialogVisible">
<el-form :model="form" :rules="rules" ref="form" label-width="90px">
<el-form-item label="推送方式" >
<!--<el-radio-group size="large" v-model="form.type">-->
<!--<el-radio-button style="margin-bottom: 10px;" label="0">安卓</el-radio-button>-->
<!--<el-radio-button style="margin-bottom: 10px;" label="1">iOS</el-radio-button>-->
<!--</el-radio-group>-->
<el-radio-group v-model="form.type" size="medium">
<el-radio-button label="1" >手工推送</el-radio-button>
<el-radio-button label="2">系统自动推送</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item label="发送类型">
<el-select class="filter-item" v-model="form.sendType" placeholder="请选择发送类型" @change="handleSendType">
<el-option v-for="(val, key, index) in sendList " :key="val.code" :label="val.value" :value="val.code"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="跳转页面">
<el-select class="filter-item" v-model="form.jumpType" placeholder="请选择跳转类型" @change="handleJumpType">
<el-option v-for="(val, key, index) in jumpList " :key="val.code" :label="val.value" :value="val.code"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="标题" prop="title">
<el-input v-model="form.title" placeholder="请输入标题"></el-input>
</el-form-item>
<el-form-item label="描述" prop="alert">
<el-input v-model="form.alert" placeholder="请输入描述"></el-input>
</el-form-item>
<el-form-item label="样式" >
<el-radio-group v-model="form.style" size="medium" @change="handleRadio">
<el-radio-button label="1">标准样式</el-radio-button>
<el-radio-button label="3" >大图</el-radio-button>
<el-radio-button label="2">自定义样式</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item label="图片" prop="picture" v-if="showPic" :style="{display:'block'}">
<el-upload
class="avatar-uploader"
:action="BASE_API+'/api/universal/file/app/unauth/admin/upload'"
:show-file-list="false"
:headers="getHeaderWithToken"
:on-success="handleAvatarSuccess">
<img v-if="$utils.isString(form.bigPicPath) && !$utils.isEmpty(form.bigPicPath)" :src="form.bigPicPath" style="width:200px;max-height:200px;">
<i v-else class="el-icon-plus avatar-uploader-icon" style="lineHeight:100px;width:100px;height: 100px;vertical-align: middle;"></i>
</el-upload>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancelHandel">取 消</el-button>
<el-button v-if="modalTitle=='创建'" type="primary" @click="create('form')">确 定</el-button>
<el-button v-else type="primary" @click="update('form')">确 定</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import 'static/css/uploadImg.css';// 引入图片上传组件对话框
import {
formatDate
} from 'utils/dateFormattor';
import {
toEast8Date,
deepCopyDate,
newEast8Date,
convertDate2Str,
timestamp2Date,
getYMD_hm
} from 'utils/dateUtils';
import {
getPushList,
getSendTypeList,
getJumpTypeList,
getObj,
addObj,
editObj,
delObj,
pushStype
} from 'src/api/appManagement/pushManagement';
import rsCode from '../../../utils/rsCode';
import {mapGetters} from 'vuex';
import {
getToken
} from '../../../utils/auth';
import Element1 from "../../admin/menu/components/element";
import ElRow from "element-ui/packages/row/src/row";
import ElCol from "element-ui/packages/col/src/col";
export default {
name: 'pushManagement',
components: {
ElCol,
ElRow,
Element1
},
data() {
return {
showPic:false,
tableKey:0,
jumpList:undefined,
sendList:undefined,
modalTitle: "创建",
BASE_API: process.env.BASE_API,
bannerDialogVisible: false,//添加、编辑弹框
showLoadingBody: false,
form: {
type:1,
title:'',
alert:'',
style:1,
bigPicPath:'',
sendType:0,
jumpType:0,
},
listQuery: {
page: 1,
limit: 10,
title: '',//标题
type:undefined
},
pushQuery: {
id: 0,
userIds: '',
},
rules: {
title: {
type: 'string',
required: true,
message: '请输入标题',
trigger: 'blur'
},
alert: {
type: 'string',
required: true,
message: '请输入描述',
},
},
pickerOptionsStart: {
disabledDate(time) {
return time.getTime() < Date.now() - 8.64e7;
}
},
pickerOptionsEnd: {
disabledDate: time => {
const beginDateVal = new Date(this.form.starTimeStr).getTime()
if (beginDateVal) {
return time.getTime() < beginDateVal - 8.64e7
}
}
},
list: null,
total: null,
listLoading: true,
inline: true,
}
},
created() {
this.getList();
this.getSendTypeList();
this.getJumpTypeList();
},
computed: {
...mapGetters([
'elements',
'belong2Type'
]),
getHeaderWithToken() {
return {Authorization: getToken()};
},
},
methods: {
handleFilter() {
this.listQuery.page = 1;
this.$refs.queryForm.validate(valid => {
if (valid) {
this.getList();
} else {
return false;
}
});
},
getSendTypeList(){
getSendTypeList().then(response => {
this.sendList = response.data
});
},
getJumpTypeList(){
getJumpTypeList().then(response => {
this.jumpList = response.data
});
},
handleSendType(item) {
this.form.sendType = item;
},
handleJumpType(item) {
this.form.jumpType = item;
},
handleRadio(item) {
if(item == 3) {
this.showPic = true;
} else {
this.showPic = false;
}
},
handleTypeChange(item) {
this.listQuery.type = item;
},
handleSizeChange(val) {
this.listQuery.limit = val;
this.getList();
},
handleCurrentChange(val) {
this.listQuery.page = val;
this.getList();
},
/**
* 添加
* */
handleCreate() {
this.cleanForm();
this.modalTitle = '创建';
this.bannerDialogVisible = true;
},
/**
* 操作-编辑
* */
handleUpdate(row) {
this.modalTitle = '编辑';
this.cleanForm();
getObj(row.id).then(response => {
var item = response.data;
item.up_name = item.timeType==0?'不限':item.timeType==1?'自定义':'';
if(item.startTime>0&&item.timeType==1){
item.starTimeStr = getYMD_hm(item.startTime);
}else{
item.starTimeStr = '';
}
if(item.endTime>0&&item.timeType==1){
item.endTimeStr = getYMD_hm(item.endTime);
}else{
item.endTimeStr = '';
}
this.form = item;
this.bannerDialogVisible = true;
})
},
/**
* 弹框-取消
* */
cancelHandel(){
this.cleanForm();
this.bannerDialogVisible = false;
},
/**
* 清空表单
* */
cleanForm() {
this.form = {
type:1,
title:'',
alert:'',
style:1,
bigPicPath:'',
sendType:0,
jumpType:0,
}
},
/**
* 获取banner列表数据
* */
getList() {
this.listLoading = true;
getPushList(this.listQuery).then(response => {
let totalCountRs = undefined;
let listRs = undefined;
if (!this.$utils.isEmpty(response.data.data) && this.$utils.isInteger(response.data.totalCount)) {
listRs = response.data.data;
response.data.data.map(function(item){
item.crtTimeStr = timestamp2Date(item.crtTime);
item.alerts = item.alert;
item.visible2 = false;
});
totalCountRs = response.data.totalCount;
}
this.listLoading = false;
this.list = listRs;
this.total = totalCountRs;
});
},
/**
* 创建
* */
create(formName) {
let that = this;
const set = this.$refs;
set[formName].validate(valid => {
if (valid) {
addObj(this.form).then(response => {
if (response.status === 200) {
this.bannerDialogVisible = false;
this.$notify({
title: '成功',
message: '创建成功',
type: 'success',
duration: 2000
});
this.getList();
} else {
this.$notify({
title: '失败',
message: rsCode.msg[response.code] ? rsCode.msg[response.code] : '操作失败!',
type: 'error',
duration: 2000
});
}
});
} else {
return false;
}
});
},
/**
* 编辑-更新
* */
update(formName) {
let that = this;
const set = this.$refs;
set[formName].validate(valid => {
if (valid) {
editObj(this.form).then(response => {
if (response.status === 200) {
this.bannerDialogVisible = false;
this.$notify({
title: '成功',
message: '编辑成功',
type: 'success',
duration: 2000
});
this.getList();
} else {
this.$notify({
title: '失败',
message: rsCode.msg[response.code] ? rsCode.msg[response.code] : '操作失败!',
type: 'error',
duration: 2000
});
}
});
} else {
return false;
}
});
},
/**
* 上传图片
* @param file
* @returns {boolean}
*/
beforeAvatarUpload(file) {
const isJPG = file.type === 'image/jpeg' || file.type === 'image/gif';
const isLt2M = file.size / 1024 / 1024 < 10;
if (!isJPG) {
this.$message.error('上传图片只能是 JPG/GIF 格式!');
}
if (!isLt2M) {
this.$message.error('上传图片大小不能超过 10MB!');
}
this.showLoadingBody = true;
return isJPG && isLt2M;
},
handleAvatarSuccess(res, file) {
this.form.bigPicPath = res.data;
this.showLoadingBody = false;
},
/**
* 操作-删除
* */
deleteHandler(row) {
this.$confirm('确定删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
delObj(row.id).then(response => {
if (response.status === 200) {
this.$notify({
title: '成功',
message: '删除成功',
type: 'success',
duration: 2000
});
this.getList();
} else {
this.$notify({
title: '删除失败',
message: rsCode.msg[response.code] ? rsCode.msg[response.code] : '操作失败!',
type: 'error',
duration: 2000
});
}
});
})
},
/**
* 操作-推送
* */
handleDown(row) {
this.$confirm('确定推送吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.pushQuery.id=row.id
pushStype(this.pushQuery).then(response => {
if (response.status === 200) {
this.$notify({
title: '成功',
message: '推送成功',
type: 'success',
duration: 2000
});
this.getList();
} else {
this.$notify({
title: '推送失败',
message: rsCode.msg[response.code] ? rsCode.msg[response.code] : '操作失败!',
type: 'error',
duration: 2000
});
}
});
})
},
}
}
</script>
...@@ -9,10 +9,12 @@ ...@@ -9,10 +9,12 @@
:value="val.code"></el-option> :value="val.code"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="车辆编码">
<el-input type="number" v-model.number="listQuery.code" placeholder="请输入车辆编码"></el-input>
</el-form-item>
<el-form-item label="车牌号"> <el-form-item label="车牌号">
<el-input v-model="listQuery.numberPlate" placeholder="请输入车牌号"></el-input> <el-input v-model="listQuery.numberPlate" placeholder="请输入车牌号"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="用途"> <el-form-item label="用途">
<el-select class="filter-item" v-model="listQuery.bookType" placeholder="请选择"> <el-select class="filter-item" v-model="listQuery.bookType" placeholder="请选择">
<el-option :key="undefined" label="无" :value="undefined"></el-option> <el-option :key="undefined" label="无" :value="undefined"></el-option>
...@@ -55,15 +57,9 @@ ...@@ -55,15 +57,9 @@
</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="申请状态"> <el-table-column align="center" label="申请状态">
<template scope="scope"> <template scope="scope">
<span>{{getBookRecordStatus(scope.row.status)}}</span> <span>{{getBookRecordStatus(scope.row)}}</span>
</template> </template>
</el-table-column> </el-table-column>
...@@ -230,12 +226,11 @@ ...@@ -230,12 +226,11 @@
<el-col :span="24"> <el-col :span="24">
<el-form-item label="申请状态"> <el-form-item label="申请状态">
<span v-if="detailItem.status==1">申请中</span> <span v-if="detailItem.status==1">申请中</span>
<span v-if="detailItem.status==2">已通过</span> <span v-if="detailItem.status==3">待出行</span>
<span v-if="detailItem.status==3">已归还</span> <span v-if="detailItem.status==4">驳回</span>
<span v-if="detailItem.status==4">拒绝</span> <span v-if="detailItem.status==5">出行中</span>
<span v-if="detailItem.status==5">逾期归还</span>
<span v-if="detailItem.status==6">取消预订</span> <span v-if="detailItem.status==6">取消预订</span>
<span v-if="detailItem.status==7">提车</span> <span v-if="detailItem.status==7">完成</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -718,27 +713,22 @@ ...@@ -718,27 +713,22 @@
trigger: 'blur' trigger: 'blur'
} }
}, },
departurePicList:[],
statusList:[ statusList:[
{ {
code:'1', code:'1',
val:'申请中' val:'申请中'
}, },
{
code:'2',
val:'已通过'
},
{ {
code:'3', code:'3',
val:'已归还' val:'待出行'
}, },
{ {
code:'4', code:'4',
val:'拒绝' val:'驳回'
}, },
{ {
code:'5', code:'5',
val:'逾期归还' val:'出行中'
}, },
{ {
code:'6', code:'6',
...@@ -746,7 +736,7 @@ ...@@ -746,7 +736,7 @@
}, },
{ {
code:'7', code:'7',
val:'已提车' val:'已完成'
}, },
], ],
bookTypeList:[ bookTypeList:[
...@@ -1260,13 +1250,31 @@ ...@@ -1260,13 +1250,31 @@
this.listLoading = false; this.listLoading = false;
}) })
}, },
getBookRecordStatus: function (code) { getBookRecordStatus: function (data) {
if (!this.$utils.isInteger(code)) { this.bookRecordStatus['3'].val = '待出行'
return '未知'; this.bookRecordStatus['4'].val = '驳回'
} this.bookRecordStatus['5'].val = '出行中'
return this.bookRecordStatus[code + ''].val; this.bookRecordStatus['7'].val = '已完成'
if(data) {
if (!this.$utils.isInteger(data.status)) {
return '未知';
}
if(data.status == 2 && (data.vehicleDepartureLogVo == undefined || data.vehicleDepartureLogVo == null)) {
return this.bookRecordStatus['3'].val;
}
if(data.status == 2 && data.vehicleDepartureLogVo != undefined && data.vehicleDepartureLogVo != null && data.vehicleDepartureLogVo.state == 0) {
return this.bookRecordStatus['5'].val;
}
if(data.status == 2 && data.vehicleDepartureLogVo != undefined && data.vehicleDepartureLogVo != null && data.vehicleDepartureLogVo.state == 1) {
return this.bookRecordStatus['7'].val;
}
return this.bookRecordStatus[data.status + ''].val;
}
return '';
}, },
getAllBookRecordStatus: function () { getAllBookRecordStatus: function () {
console.log(this.bookRecordStatus)
return this.bookRecordStatus; return this.bookRecordStatus;
}, },
getDatePeriodStr([startDate, endDate]) { getDatePeriodStr([startDate, endDate]) {
...@@ -1486,7 +1494,7 @@ ...@@ -1486,7 +1494,7 @@
var obj = { var obj = {
vehicleBookRecordId:row.id vehicleBookRecordId:row.id
}; };
unbook(obj) unbook(obj)
.then(response => { .then(response => {
if(response.code==1){ if(response.code==1){
...@@ -1504,7 +1512,7 @@ ...@@ -1504,7 +1512,7 @@
type: 'error', type: 'error',
duration: 2000 duration: 2000
}); });
} }
}).catch(response=>{ }).catch(response=>{
console.log(response) console.log(response)
} }
......
...@@ -3,25 +3,44 @@ ...@@ -3,25 +3,44 @@
<div class="filter-container"> <div class="filter-container">
<el-form> <el-form>
<el-row> <el-row>
<el-col :span="8"> <el-col :span="5">
<el-form-item> <el-form-item>
<el-date-picker <el-date-picker
v-model="listQuery.time" v-model="listQuery.time"
type="date" type="date"
:editable="false" :editable="false"
format="yyyy-MM-dd" format="yyyy-MM-dd"
prop = "time" prop="time"
placeholder="请选择日期"> placeholder="请选择日期">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="5">
<el-form-item > <el-form-item>
<el-input type="number" style="width: 200px;" v-model.number="listQuery.code"
placeholder="请输入车辆编码"></el-input>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item>
<el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="车牌号" <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="车牌号"
v-model="listQuery.numberPlate"></el-input> v-model="listQuery.numberPlate"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> </el-row>
<el-row>
<el-col :span="5">
<el-form-item label="分公司" prop="departureId">
<el-autocomplete
class="inline-input"
v-model="state1"
:fetch-suggestions="querySearch"
placeholder="请输入内容"
@select="handleSelect"
></el-autocomplete>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item> <el-form-item>
<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-form-item> </el-form-item>
...@@ -61,9 +80,9 @@ ...@@ -61,9 +80,9 @@
width="65"> width="65">
</el-table-column> </el-table-column>
<!--<el-table-column align="center" label="编号" width="65">--> <!--<el-table-column align="center" label="编号" width="65">-->
<!--<template scope="scope">--> <!--<template scope="scope">-->
<!--<span>{{scope.row.id}}</span>--> <!--<span>{{scope.row.id}}</span>-->
<!--</template>--> <!--</template>-->
<!--</el-table-column>--> <!--</el-table-column>-->
<el-table-column align="center" label="车牌号" width="120"> <el-table-column align="center" label="车牌号" width="120">
<template scope="scope"> <template scope="scope">
...@@ -71,75 +90,75 @@ ...@@ -71,75 +90,75 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column width="200" align="center" label="出车时间"> <el-table-column width="200" align="center" label="出车时间">
<template scope="scope"> <template scope="scope">
<span>{{scope.row.departureTime}}</span> <span>{{scope.row.departureTime}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column width="100" align="center" label="使用人"> <el-table-column width="100" align="center" label="使用人">
<template scope="scope"> <template scope="scope">
<span>{{scope.row.user}}</span> <span>{{scope.row.user}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column width="200" align="center" label="出车地点"> <el-table-column width="200" align="center" label="出车地点">
<template scope="scope"> <template scope="scope">
<span>{{scope.row.departureName}}</span> <span>{{scope.row.departureName}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column width="200" align="center" label="还车时间"> <el-table-column width="200" align="center" label="还车时间">
<template scope="scope"> <template scope="scope">
<span>{{scope.row.arrivalTime}}</span> <span>{{scope.row.arrivalTime}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column width="100" align="center" label="还车人"> <el-table-column width="100" align="center" label="还车人">
<template scope="scope"> <template scope="scope">
<span>{{scope.row.recycleMan}}</span> <span>{{scope.row.recycleMan}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column width="200" align="center" label="还车地点"> <el-table-column width="200" align="center" label="还车地点">
<template scope="scope"> <template scope="scope">
<span>{{scope.row.arrivalName}}</span> <span>{{scope.row.arrivalName}}</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.departureDay}}</span> <span>{{scope.row.departureDay}}</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.mileage}}</span> <span>{{scope.row.mileage}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column width="100" align="center" label="验车人"> <el-table-column width="100" align="center" label="验车人">
<template scope="scope"> <template scope="scope">
<span>{{scope.row.checkMan}}</span> <span>{{scope.row.checkMan}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column width="100" align="center" label="用途"> <el-table-column width="100" align="center" label="用途">
<template scope="scope"> <template scope="scope">
<span>{{scope.row.use}}</span> <span>{{scope.row.use}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column width="200" align="center" label="使用人电话" v-if="showMoreMoreCol" > <el-table-column width="200" align="center" label="使用人电话" v-if="showMoreMoreCol">
<template scope="scope"> <template scope="scope">
<span>{{scope.row.userTel}}</span> <span>{{scope.row.userTel}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column width="200" align="center" label="验车人电话" v-if="showMoreMoreCol" > <el-table-column width="200" align="center" label="验车人电话" v-if="showMoreMoreCol">
<template scope="scope"> <template scope="scope">
<span>{{scope.row.checkManTel}}</span> <span>{{scope.row.checkManTel}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column width="100" align="center" label="开始公里数" v-if="showMoreMoreCol" > <el-table-column width="100" align="center" label="开始公里数" v-if="showMoreMoreCol">
<template scope="scope"> <template scope="scope">
<span>{{scope.row.mileageStart}}</span> <span>{{scope.row.mileageStart}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column width="100" align="center" label="结束公里数" v-if="showMoreMoreCol" > <el-table-column width="100" align="center" label="结束公里数" v-if="showMoreMoreCol">
<template scope="scope"> <template scope="scope">
<span>{{scope.row.mileageEnd}}</span> <span>{{scope.row.mileageEnd}}</span>
</template> </template>
...@@ -177,129 +196,188 @@ ...@@ -177,129 +196,188 @@
} }
</style> </style>
<script> <script>
import {mapGetters} from 'vuex'; import {mapGetters} from 'vuex';
import { import {
page, page,
statistic statistic
} from '../../../api/vehicle/departureLog'; } from '../../../api/vehicle/departureLog';
import { import {
toEast8Date, getAllCompany,
deepCopyDate, getAll
newEast8Date } from 'api/base_info/branch_company/';
} from 'utils/dateUtils'; import {
export default { getAllZone
name: 'vehicleDepartureLog', } from 'api/base_info/constant/';
data() { import {
return { getAllBranchCompanyByZoneId
showMoreMoreCol: false, } from 'api/order/rentVehicle';
form: { import {
id: null, toEast8Date,
numberPlate: null, deepCopyDate,
vehicleId: null, newEast8Date
use: null, } from 'utils/dateUtils';
user: null,
userTel: null, export default {
checkMan: null, name: 'vehicleDepartureLog',
checkManTel: null, data() {
recycleMan: null, return {
recycleManTel: null, showMoreMoreCol: false,
departureTime: null, form: {
arrivalTime: null, id: null,
mileageStart: null, numberPlate: null,
mileageEnd: null, vehicleId: null,
state: null use: null,
}, user: null,
rules: { userTel: null,
name: [ checkMan: null,
{ checkManTel: null,
required: true, recycleMan: null,
message: '请输入用户', recycleManTel: null,
trigger: 'blur' departureTime: null,
arrivalTime: null,
mileageStart: null,
mileageEnd: null,
state: null,
allCompaniesArr:[],
selectArry: [],
},
rules: {
name: [
{
required: true,
message: '请输入用户',
trigger: 'blur'
}
]
},
list: null,
total: null,
listLoading: true,
allBranchCompany:[],
baranchQuery: {
zoneId:null
},
allZoneArr:[],//全部片区
state1:'',
listQuery: {
page: 1,
limit: 20,
time: "",
numberPlate: undefined,
departureId:undefined,
},
dialogStatus: '',
textMap: {
update: '编辑',
create: '创建'
},
tableKey: 0,
dialogFormVisible: null,
statisticVisiable: true,
statisticData: {
departureCount: null,
departureDay: null,
departureMileage: null
}
} }
]
}, },
list: null, created() {
total: null, const numberPlate = this.$route.query.numberPlate;
listLoading: true, if (numberPlate) {
listQuery: { this.listQuery.numberPlate = numberPlate;
page: 1, }
limit: 20, this.handleFilter();
time: "", getAll()
numberPlate: undefined .then(response => {
this.allCompaniesArr = response.data;
})
}, },
dialogStatus: '', computed: {
textMap: { ...mapGetters([
update: '编辑', 'elements'
create: '创建' ]),
//获取大区列表
getAllZoneList() {
return getAllZone();
},
}, },
tableKey: 0, methods: {
dialogFormVisible: null, handleFilter() {
statisticVisiable: true, this.getList();
statisticData: { if (this.listQuery.numberPlate) {
departureCount: null, statistic({numberPlate: this.listQuery.numberPlate}).then(response => {
departureDay: null, this.statisticData = response.data;
departureMileage: null });
} this.statisticVisiable = true;
} }
}, },
created() { dateToString: function (date) {
const numberPlate = this.$route.query.numberPlate; var year = date.getFullYear();
if (numberPlate) { var month = (date.getMonth() + 1).toString();
this.listQuery.numberPlate = numberPlate; var day = (date.getDate()).toString();
} if (month.length == 1) {
this.handleFilter(); month = "0" + month;
}, }
computed: { if (day.length == 1) {
...mapGetters([ day = "0" + day;
'elements' }
]) var dateTime = year + "-" + month + "-" + day;
}, return dateTime;
methods: { },
handleFilter() { getList() {
this.getList(); this.listLoading = true;
if (this.listQuery.numberPlate) { if (!this.listQuery.numberPlate) {
statistic({numberPlate: this.listQuery.numberPlate}).then(response => { this.statisticVisiable = false;
this.statisticData = response.data; }
}); if (this.listQuery.time) {
this.statisticVisiable = true; this.listQuery.time = this.dateToString(this.listQuery.time);
} }
}, if (!this.state1) {
dateToString: function(date){ this.listQuery.departureId = undefined;
var year = date.getFullYear(); }
var month =(date.getMonth() + 1).toString(); page(this.listQuery)
var day = (date.getDate()).toString(); .then(response => {
if (month.length == 1) { this.list = response.data.list;
month = "0" + month; this.total = response.data.total;
this.listLoading = false;
})
},
querySearch(queryString, cb) {
let selectArry = [];
let iitem = {
value: "全部",
name: "全部"
};
selectArry.push(iitem);
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);
};
},
handleSelect(item) {
if (item.value == "全部") {
this.listQuery.departureId = undefined;
} else {
this.listQuery.departureId = item.id;
}
},
handleSizeChange(val) {
this.listQuery.limit = val;
this.getList();
},
handleCurrentChange(val) {
this.listQuery.page = val;
this.getList();
},
} }
if (day.length == 1) {
day = "0" + day;
}
var dateTime = year + "-" + month + "-" + day;
return dateTime;
},
getList() {
this.listLoading = true;
if (!this.listQuery.numberPlate) {
this.statisticVisiable = false;
}
if(this.listQuery.time){
this.listQuery.time = this.dateToString(this.listQuery.time);
}
page(this.listQuery)
.then(response => {
this.list = response.data.list;
this.total = response.data.total;
this.listLoading = false;
})
},
handleSizeChange(val) {
this.listQuery.limit = val;
this.getList();
},
handleCurrentChange(val) {
this.listQuery.page = val;
this.getList();
}
} }
}
</script> </script>
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -16,6 +16,9 @@ ...@@ -16,6 +16,9 @@
<el-form-item label="车牌"> <el-form-item label="车牌">
<el-input v-model="listQuery.numberPlate" placeholder="请输入车牌"></el-input> <el-input v-model="listQuery.numberPlate" placeholder="请输入车牌"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="车辆编码">
<el-input type="number" style="width: 200px;" v-model.number="listQuery.code" placeholder="请输入车辆编码"></el-input>
</el-form-item>
<el-form-item label="用途"> <el-form-item label="用途">
<el-select class="filter-item" v-model="listQuery.useType" placeholder="请选择用途"> <el-select class="filter-item" v-model="listQuery.useType" placeholder="请选择用途">
<el-option :key="undefined" label="无" :value="undefined"></el-option> <el-option :key="undefined" label="无" :value="undefined"></el-option>
...@@ -473,6 +476,10 @@ ...@@ -473,6 +476,10 @@
} }
}, },
created() { created() {
const numberPlate = this.$route.query.numberPlate;
if (numberPlate) {
this.listQuery.numberPlate = numberPlate;
}
this.getList(); this.getList();
this.getAllVehicleType(); this.getAllVehicleType();
let currentMonth = getCurrentMonth(); let currentMonth = getCurrentMonth();
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
<div class="filter-container"> <div class="filter-container">
<el-input style="width: 200px;" placeholder="车牌号" <el-input style="width: 200px;" placeholder="车牌号"
v-model="listQuery.numberPlate"></el-input> v-model="listQuery.numberPlate"></el-input>
<el-input type="number" style="width: 200px;" v-model.number="listQuery.code" placeholder="请输入车辆编码"></el-input>
<el-date-picker <el-date-picker
v-model="listQuery.selectedMonth" v-model="listQuery.selectedMonth"
type="month" type="month"
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
<div class="filter-container"> <div class="filter-container">
<el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="车牌号" <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="车牌号"
v-model="listQuery.numberPlate"></el-input> v-model="listQuery.numberPlate"></el-input>
<el-input type="number" style="width: 200px;" v-model.number="listQuery.code" class="filter-item" placeholder="请输入车辆编码"></el-input>
<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>
</div> </div>
<el-table :key='tableKey' :data="list" v-loading.body="listLoading" border fit highlight-current-row <el-table :key='tableKey' :data="list" v-loading.body="listLoading" border fit highlight-current-row
......
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