209 lines
8.0 KiB
Vue
209 lines
8.0 KiB
Vue
<template>
|
||
<div class="deliver-search-container">
|
||
<el-dialog :visible.sync="showDialog" top="30vh" width="900px" title="物流查询">
|
||
<div class="deliver-box">
|
||
<div class="deliver-recode-box flex">
|
||
<div class="recode-img">
|
||
<el-image style="width: 100%; height: 100%" fit="cover" :src="deliverOrder.image" />
|
||
<div class="float-count flex row-center">共{{deliverOrder.count}}件商品</div>
|
||
</div>
|
||
<div class="recode-info-container m-l-10">
|
||
<div class="flex">
|
||
<div class="recode-label">物流状态:</div>
|
||
<div class="primary lg" style="font-weight: 500">{{deliverOrder.tips}}</div>
|
||
</div>
|
||
<div class="flex" style="margin: 6px 0;">
|
||
<div class="recode-label">快递公司:</div>
|
||
<div >{{deliverOrder.shipping_name}}</div>
|
||
</div>
|
||
<div class="flex">
|
||
<div class="recode-label">快递单号:</div>
|
||
<div>{{deliverOrder.invoice_no}}</div>
|
||
<div class="copy-btn primary flex row-center" @click="onCopy">复制</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="deliver-flow-box m-t-16">
|
||
<el-timeline>
|
||
<!-- 收货 -->
|
||
<el-timeline-item
|
||
v-if="deliverFinish.tips"
|
||
>
|
||
<div>
|
||
<div class="flex lg">
|
||
<div class="m-r-8" style="font-weight: 500">
|
||
{{deliverTake.contacts}}
|
||
</div>
|
||
<div style="font-weight: 500">{{deliverTake.mobile}}</div>
|
||
</div>
|
||
<div class="lighter m-t-8">{{deliverTake.address}}</div>
|
||
</div>
|
||
</el-timeline-item>
|
||
<!-- 交易状态 -->
|
||
<el-timeline-item
|
||
v-if="deliverFinish.tips"
|
||
:timestamp="deliverFinish.time"
|
||
>
|
||
<div class="time-line-title">{{deliverFinish.title}}</div>
|
||
<div>{{deliverFinish.tips}}</div>
|
||
</el-timeline-item>
|
||
<!-- 跟踪物流 -->
|
||
<el-timeline-item
|
||
v-if="delivery.traces && delivery.traces.length"
|
||
:timestamp="delivery.time"
|
||
>
|
||
<div class="time-line-title m-b-8">{{delivery.title}}</div>
|
||
<el-timeline-item
|
||
v-for="(item, index) in delivery.traces"
|
||
:key="index"
|
||
:timestamp="item[0]"
|
||
>
|
||
<div class="muted">{{item[1]}}</div>
|
||
</el-timeline-item>
|
||
</el-timeline-item>
|
||
<!-- 完成 -->
|
||
<el-timeline-item
|
||
v-if="deliverShipment.tips"
|
||
:timestamp="deliverShipment.time"
|
||
>
|
||
<div class="time-line-title">{{deliverShipment.title}}</div>
|
||
<div>{{deliverShipment.tips}}</div>
|
||
</el-timeline-item>
|
||
<!-- 下单 -->
|
||
<el-timeline-item
|
||
v-if="deliverBuy.tips"
|
||
:timestamp="deliverBuy.time"
|
||
>
|
||
<div class="time-line-title">{{deliverBuy.title}}</div>
|
||
<div>{{deliverBuy.tips}}</div>
|
||
</el-timeline-item>
|
||
</el-timeline>
|
||
</div>
|
||
</div>
|
||
</el-dialog>
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
export default {
|
||
props: {
|
||
value: {
|
||
type: Boolean,
|
||
default: false,
|
||
},
|
||
aid: {
|
||
type: Number | String
|
||
}
|
||
},
|
||
data() {
|
||
return {
|
||
showDialog: false,
|
||
deliverBuy: {},
|
||
delivery: {},
|
||
deliverFinish: {},
|
||
deliverOrder: {},
|
||
deliverShipment: {},
|
||
deliverTake: {},
|
||
timeLineArray: []
|
||
}
|
||
},
|
||
watch: {
|
||
value(val) {
|
||
console.log(val, 'val')
|
||
this.showDialog = val;
|
||
},
|
||
showDialog(val) {
|
||
if(val) {
|
||
if(this.aid) {
|
||
this.timeLineArray = []
|
||
this.getDeliverTraces();
|
||
}
|
||
}
|
||
this.$emit("input", val);
|
||
},
|
||
},
|
||
methods: {
|
||
async getDeliverTraces() {
|
||
let data = {
|
||
id: this.aid
|
||
}
|
||
let res = await this.$get("order/orderTraces", {params: data});
|
||
if(res.code == 1) {
|
||
let {buy, delivery, finish, order, shipment, take} = res.data
|
||
this.deliverBuy = buy;
|
||
this.delivery = delivery;
|
||
this.deliverFinish = finish;
|
||
this.deliverOrder = order;
|
||
this.deliverShipment = shipment;
|
||
this.deliverTake = take;
|
||
this.timeLineArray.push(this.deliverFinish);
|
||
this.timeLineArray.push(this.delivery);
|
||
this.timeLineArray.push(this.deliverShipment);
|
||
this.timeLineArray.push(this.deliverBuy);
|
||
console.log(this.timeLineArray)
|
||
}
|
||
},
|
||
onCopy() {
|
||
// this.deliverOrder.invoice_no;
|
||
let oInput = document.createElement('input');
|
||
oInput.value = this.deliverOrder.invoice_no;
|
||
document.body.appendChild(oInput);
|
||
oInput.select();
|
||
document.execCommand("Copy");
|
||
this.$message.success("复制成功");
|
||
oInput.remove();
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
.deliver-search-container {
|
||
.deliver-box {
|
||
.deliver-recode-box {
|
||
padding: 10px 20px;
|
||
background-color: #F2F2F2;
|
||
.recode-img {
|
||
position: relative;
|
||
width: 72px;
|
||
height: 72px;
|
||
.float-count {
|
||
position: absolute;
|
||
bottom: 0;
|
||
height: 20px;
|
||
width: 100%;
|
||
background-color: rgba(0, 0, 0, 0.5);
|
||
color: white;
|
||
font-size: 12px;
|
||
}
|
||
}
|
||
.recode-info-container {
|
||
flex: 1;
|
||
.recode-label {
|
||
width: 70px;
|
||
}
|
||
.copy-btn {
|
||
height: 20px;
|
||
min-width: 42px;
|
||
border: 1px solid $--color-primary;
|
||
font-size: 12px;
|
||
margin-left: 8px;
|
||
border-radius: 60px;
|
||
cursor: pointer;
|
||
&:hover {
|
||
background-color: white;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
.deliver-flow-box {
|
||
padding-left: 15px;
|
||
}
|
||
.time-line-title {
|
||
font-weight: 500px;
|
||
font-size: 16px;
|
||
margin-bottom: 10px;
|
||
}
|
||
}
|
||
}
|
||
</style> |