parent
a7e890ae9d
commit
8000ab007c
9 changed files with 551 additions and 286 deletions
@ -0,0 +1,18 @@ |
|||||||
|
import request from '@/util/axios' |
||||||
|
|
||||||
|
//列表
|
||||||
|
export const queryExpressList = (param) => request({ |
||||||
|
url: '/sjapi/list', |
||||||
|
method: 'post', |
||||||
|
data: param |
||||||
|
}); |
||||||
|
|
||||||
|
//列表
|
||||||
|
export const queryExpressDetail = (param) => request({ |
||||||
|
url: '/pollapi/poll/query.do', |
||||||
|
method: 'post', |
||||||
|
headers: { |
||||||
|
'Content-Type': 'application/x-www-form-urlencoded' |
||||||
|
}, |
||||||
|
params: param |
||||||
|
}); |
||||||
@ -0,0 +1,215 @@ |
|||||||
|
<template> |
||||||
|
<div class="container_box"> |
||||||
|
<el-form :inline="true" :model="queryForm" class="demo-form-inline" size="small"> |
||||||
|
<el-form-item label="快递单号"> |
||||||
|
<el-input v-model="queryForm.courierNumber" placeholder="快递单号" clearable></el-input> |
||||||
|
</el-form-item> |
||||||
|
<el-form-item label="下单时间"> |
||||||
|
<el-date-picker @change="changeSearchDate" v-model="queryForm.dateRange" type="daterange" range-separator="至" |
||||||
|
start-placeholder="开始日期" end-placeholder="结束日期"> |
||||||
|
</el-date-picker> |
||||||
|
</el-form-item> |
||||||
|
<el-form-item label="快递类型"> |
||||||
|
<el-select v-model="queryForm.expressType" placeholder="快递类型"> |
||||||
|
<el-option label="全部" value=""></el-option> |
||||||
|
<el-option :key="value" v-for="(key, value) in expressTypeList" :label="value" :value="value"></el-option> |
||||||
|
</el-select> |
||||||
|
</el-form-item> |
||||||
|
<el-form-item> |
||||||
|
<el-button type="primary" @click="onSubmit">搜 索</el-button> |
||||||
|
</el-form-item> |
||||||
|
<el-form-item> |
||||||
|
<el-upload ref="upload" class="upload-demo" action="/sjapi/send" :show-file-list="false" :on-success="uploadSuccess" |
||||||
|
:on-error="uploadError" :limit="1"> |
||||||
|
<el-button size="small">导 入</el-button> |
||||||
|
</el-upload> |
||||||
|
</el-form-item> |
||||||
|
</el-form> |
||||||
|
<el-table :data="expressData" size="small" border style="width: 100%"> |
||||||
|
<el-table-column prop="orderTime" label="下单时间" width="180"> |
||||||
|
<template slot-scope="scope"> |
||||||
|
{{ dateFormatter(scope.row.orderTime) }} |
||||||
|
</template> |
||||||
|
</el-table-column> |
||||||
|
<el-table-column prop="courierNumber" label="快递单号"> |
||||||
|
<template slot-scope="scope"> |
||||||
|
<el-button @click="queryExpressDetail(scope.row)" type="text">{{ scope.row.courierNumber }}</el-button> |
||||||
|
</template> |
||||||
|
</el-table-column> |
||||||
|
<el-table-column prop="expressType" label="快递类型"> |
||||||
|
</el-table-column> |
||||||
|
<el-table-column prop="placeOfOrigin" label="发件地"> |
||||||
|
</el-table-column> |
||||||
|
<el-table-column prop="destination" label="收件地"> |
||||||
|
</el-table-column> |
||||||
|
<el-table-column prop="addressee" label="收件人"> |
||||||
|
</el-table-column> |
||||||
|
<el-table-column prop="cellphoneNumber" label="收件人手机号"> |
||||||
|
</el-table-column> |
||||||
|
</el-table> |
||||||
|
<div style="margin-top:20px;"> |
||||||
|
<el-pagination background :page-sizes="[10, 20, 50]" @size-change="handleSizeChange" |
||||||
|
@current-change="handleCurrentChange" :current-page="pagination.page" |
||||||
|
layout="total, sizes,prev, pager, next, jumper" :total="total"> |
||||||
|
</el-pagination> |
||||||
|
</div> |
||||||
|
<!-- 快递100物流跟踪记录 --> |
||||||
|
<el-dialog title="物流进度" :visible.sync="dialogVisible" :close-on-click-moda="false"> |
||||||
|
<div style="height:400px;overflow-y:auto;font-size:12px;line-height:18px;text-align:left;"> |
||||||
|
<div style="display:flex;margin-bottom:10px;" v-for="(item, index) in expressRecord" :key="'record' + index"> |
||||||
|
<div style="width:120px;">{{ item.ftime }}</div> |
||||||
|
<div style="flex:1;">{{ item.context }}</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div slot="footer" class="dialog-footer" style="text-align:center;"> |
||||||
|
<el-button size="small" @click="dialogVisible = false">关 闭</el-button> |
||||||
|
</div> |
||||||
|
</el-dialog> |
||||||
|
</div> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
import { queryExpressList, queryExpressDetail } from "@/api/sjApi"; |
||||||
|
import { dateFormat } from "@/util/date"; |
||||||
|
import md5 from "js-md5"; |
||||||
|
export default { |
||||||
|
data() { |
||||||
|
return { |
||||||
|
queryForm: { |
||||||
|
courierNumber: '', |
||||||
|
expressType: '', |
||||||
|
dateRange: '', |
||||||
|
}, |
||||||
|
pagination: { |
||||||
|
page: 1, |
||||||
|
size: 10 |
||||||
|
}, |
||||||
|
total: 0, |
||||||
|
expressData: [],//快递列表 |
||||||
|
expressTypeList: { |
||||||
|
'圆通速递': 'yuantong', |
||||||
|
'韵达快递': 'yunda', |
||||||
|
'中通快递': 'zhongtong', |
||||||
|
'申通快递': 'shentong', |
||||||
|
'极兔速递': 'jtexpress', |
||||||
|
'邮政快递包裹': 'youzhengguonei', |
||||||
|
'顺丰速运': 'shunfeng', |
||||||
|
'EMS': 'ems', |
||||||
|
'京东物流': 'jd', |
||||||
|
},//快递类型 |
||||||
|
dialogVisible: false, |
||||||
|
expressRecord: [], //快递跟踪记录 |
||||||
|
}; |
||||||
|
}, |
||||||
|
mounted() { |
||||||
|
this.queryList(); |
||||||
|
}, |
||||||
|
methods: { |
||||||
|
//日期范围 |
||||||
|
changeSearchDate(date) { |
||||||
|
if (date == null) { |
||||||
|
this.queryForm.dateRange = ''; |
||||||
|
} |
||||||
|
}, |
||||||
|
//快递列表 |
||||||
|
queryList() { |
||||||
|
let param = JSON.parse(JSON.stringify(this.queryForm)); |
||||||
|
if (this.queryForm.dateRange) { |
||||||
|
param.startTime = dateFormat(new Date(this.queryForm.dateRange[0]), 'yyyy-MM-dd hh:mm:ss'); |
||||||
|
param.endTime = dateFormat(new Date(this.queryForm.dateRange[1]), 'yyyy-MM-dd') + ' 23:59:59'; |
||||||
|
} |
||||||
|
param.page = this.pagination.page; |
||||||
|
param.size = this.pagination.size; |
||||||
|
let _param = {}; |
||||||
|
Object.keys(param).map(item => { |
||||||
|
if (param[item] && item) { |
||||||
|
_param[item] = param[item]; |
||||||
|
} |
||||||
|
}) |
||||||
|
queryExpressList(_param).then(res => { |
||||||
|
if (res.code == 200) { |
||||||
|
this.total = res.total; |
||||||
|
this.expressData = res.data; |
||||||
|
} |
||||||
|
|
||||||
|
}) |
||||||
|
}, |
||||||
|
//分页 |
||||||
|
handleSizeChange(val) { |
||||||
|
//改变size 重新查询 |
||||||
|
this.pagination.size = val; |
||||||
|
this.pagination.page = 1; |
||||||
|
this.queryList(); |
||||||
|
}, |
||||||
|
handleCurrentChange(val) { |
||||||
|
this.pagination.page = val; |
||||||
|
this.queryList(); |
||||||
|
}, |
||||||
|
//搜索查询 |
||||||
|
onSubmit() { |
||||||
|
this.pagination.page = 1; |
||||||
|
this.queryList(); |
||||||
|
}, |
||||||
|
//excel导入 |
||||||
|
uploadSuccess(response, file, fileList) { |
||||||
|
if(response.code == 200) { |
||||||
|
this.$message.success('导入成功'); |
||||||
|
this.$refs.upload.clearFiles(); |
||||||
|
this.pagination.page = 1; |
||||||
|
this.queryList(); |
||||||
|
} |
||||||
|
}, |
||||||
|
uploadError(err, file, fileList) { |
||||||
|
console.log('导入失败', err) |
||||||
|
}, |
||||||
|
//快递100 |
||||||
|
queryExpressDetail(row) { |
||||||
|
let param = { |
||||||
|
customer: "15A684C85BB850280B92FC3F5FBD4585", |
||||||
|
sign: "", |
||||||
|
param: JSON.stringify({ |
||||||
|
"com": this.expressTypeList[row.expressType], |
||||||
|
"num": row.courierNumber, |
||||||
|
"phone": row.cellphoneNumber, |
||||||
|
"from": "", |
||||||
|
"to": "", |
||||||
|
"resultv2": "4", |
||||||
|
"show": "0", |
||||||
|
"order": "desc" |
||||||
|
}) |
||||||
|
} |
||||||
|
param.sign = md5(param.param + 'vERvNXiK9181' + param.customer).toUpperCase(); |
||||||
|
queryExpressDetail(param).then(res => { |
||||||
|
this.expressRecord = res.data; |
||||||
|
this.dialogVisible = true; |
||||||
|
}) |
||||||
|
}, |
||||||
|
//日期格式化 |
||||||
|
dateFormatter(date) { |
||||||
|
return dateFormat(new Date(date), 'yyyy/MM/dd hh:mm:ss') |
||||||
|
} |
||||||
|
}, |
||||||
|
}; |
||||||
|
</script> |
||||||
|
|
||||||
|
<style lang="scss" scoped> |
||||||
|
.container_box { |
||||||
|
font-size: 12px; |
||||||
|
height: 100%; |
||||||
|
background: #fff; |
||||||
|
padding: 20px; |
||||||
|
|
||||||
|
.demo-form-inline { |
||||||
|
text-align: left; |
||||||
|
|
||||||
|
.el-form-item { |
||||||
|
margin-bottom: 20px !important; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
::v-deep .el-form-item__label { |
||||||
|
float: left; |
||||||
|
font-size: 12px; |
||||||
|
} |
||||||
|
} |
||||||
|
</style> |
||||||
Loading…
Reference in new issue