This commit is contained in:
chc
2024-03-11 15:55:56 +08:00
13 changed files with 585 additions and 17 deletions

View File

@@ -0,0 +1,248 @@
<template>
<div>
<view class="logistics-detail">
<view class="card">
<div v-if="logisticsList && logisticsList.length>0">
<ul class="express-log" v-for="(packageItem, packageIndex) in logisticsList" :key="packageIndex" v-if="packageItem">
<div class="layui-layer-wrap">
<dl>
<dt>物流公司</dt>
<dd><div class="text-box">{{ packageItem.logisticsName }}</div></dd>
</dl>
<dl>
<dt>快递单号</dt>
<dd>
<div nctype="ordersSn" class="text-box">
<a class="item" :href='"https://www.baidu.com/s?wd="+packageItem.logisticsNo' target="_blank">{{ packageItem.logisticsNo }}</a>
</div>
</dd>
</dl>
<div class="div-express-log">
<ul class="express-log express-log-name">
<li v-for="(item, index) in packageItem.orderPackageItemList" :key="index">
<p class="time" style="width: 50%;"><span>商品名称</span><span>{{ item.goodsName }}</span></p>
<p class="time" style="width: 30%;"><span>发货时间</span><span>{{ item.logisticsTime }}</span></p>
<p class="time" style="width: 20%;"><span>发货数量</span><span>{{ item.deliverNumber }}</span></p>
</li>
</ul>
</div>
<div class="div-express-log">
<ul class="express-log" v-if="packageItem.traces && packageItem.traces.traces">
<li v-for="(item, index) in packageItem.traces.traces" :key="index">
<span class="time">{{ item.AcceptTime || item.acceptTime }}</span>
<span class="detail">{{ item.AcceptStation || item.remark }}</span>
</li>
</ul>
<ul class="express-log" v-else>
<li>暂无物流信息</li>
</ul>
</div>
</div>
</ul>
</div>
</view>
</view>
</div>
</template>
<script>
import { getPackage } from "@/api/trade.js";
export default {
data() {
return {
order: {},
logisticsList: [],
}
},
components: {
},
computed: {
},
onLoad(option) {
let sn = option.order_sn;
this.tracesList(sn);
},
mounted() {
},
methods: {
tracesList(sn) {
getPackage(sn).then((res) => {
if(res.data.success){
this.logisticsList = res.data.result;
}
});
},
},
}
</script>
<style >
page {
background: #fff;
}
</style>
<style lang="scss" scoped>
// @import url('./goods.scss');
.goods-item-view {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
padding: 10rpx 30rpx;
.goods-img {
flex: 1;
}
.goods-info {
padding-left: 30rpx;
flex: 3;
.goods-title {
margin-bottom: 10rpx;
color: $font-color-dark;
}
.goods-specs {
font-size: 24rpx;
margin-bottom: 10rpx;
color: #cccccc;
}
.goods-price {
font-size: 28rpx;
margin-bottom: 10rpx;
color: #ff5a10;
}
}
.goods-num {
>.good-complaint {
margin-top: 10rpx;
}
text-align: center;
flex: 1;
width: 60rpx;
color: $main-color;
}
}
.goods-info {
flex: 2;
}
.card-title {
background: #f2f2f2;
}
.logistics-detail {
margin-top: 20rpx;
padding: 0 16rpx;
}
.card {
background: #fff;
border-radius: 20rpx;
width: 100%;
> .card-title {
font-size: 24rpx;
border-top-left-radius: 20rpx;
border-top-right-radius: 20rpx;
padding: 16rpx;
}
> .time-line {
padding: 16rpx 32rpx;
}
}
.u-order-title {
font-weight: bold;
}
.u-order-desc {
font-size: 26rpx;
color: #666;
margin: 10rpx 0;
}
.u-order-time {
font-size: 24rpx;
color: #999;
}
.empty {
padding: 40rpx 0;
}
.express-log {
/*margin: 5px -10px 5px 5px;*/
padding: 20rpx;
list-style-type: none;
li {
display: flex;
margin-top: 18rpx;
}
li:nth-of-type(1) {
margin-top: 0;
}
.time {
width: 140rpx;
display: flex;
// float: left;
flex-direction: column;
font-size: 24rpx;
line-height: 40rpx;
span:nth-of-type(1) {
margin-bottom: 16rpx;
}
}
.detail {
width: 100%;
flex: 1;
margin-left: 30rpx;
display: inline-block;
font-size: 24rpx;
line-height: 40rpx;
}
li {
line-height: 60rpx;
}
}
.layui-layer-wrap {
dl {
border-top: solid 1px #f5f5f5;
margin-top: -2rpx;
overflow: hidden;
dt {
font-size: 26rpx;
line-height: 40rpx;
display: inline-block;
padding: 16rpx 1% 16rpx 0;
color: #999;
}
dd {
font-size: 26rpx;
line-height: 40rpx;
display: inline-block;
padding: 16rpx 0 16rpx 16rpx;
border-left: solid 2rpx #f5f5f5;
.text-box {
line-height: 40rpx;
color: #333;
word-break: break-all;
}
}
}
}
.div-express-log {
// max-height: 600rpx;
border: solid 2rpx #e7e7e7;
background: #fafafa;
border-radius: 10rpx;
margin-bottom: 6rpx;
// overflow-y: auto;
// overflow-x: auto;
}
</style>

View File

@@ -651,7 +651,7 @@ export default {
});
return false;
}
} else if (this.shippingText === "LOGISTICS" && this.orderMessage.cartTypeEnum != 'VIRTUAL') {
} else if (this.shippingText === "LOGISTICS" && this.orderMessage.cartTypeEnum !== 'VIRTUAL') {
if (!this.address.id) {
uni.showToast({
title: "请选择地址",

View File

@@ -9,8 +9,8 @@
</div>
<!-- 物流信息 -->
<view class="info-view logistics-view">
<view class="logistics-List" v-if="logisticsList && logisticsList.traces.length != 0 ">
<view class="info-view logistics-view" v-if="order.orderType !== 'VIRTUAL'">
<view class="logistics-List" v-if="logisticsList && logisticsList.traces && logisticsList.traces.length != 0 ">
<view class="logistics-List-title">
{{ logisticsList.traces[logisticsList.traces.length - 1].AcceptStation }}
</view>
@@ -23,6 +23,14 @@
<view class="verificationCode" v-if="order.verificationCode">
券码 {{ order.orderStatus == 'CANCELLED' ? '已失效' : order.verificationCode }}
</view>
<view @click="handleClickDeliver()" class="info-view logi-view" v-if="orderPackage && orderPackage.length">
<view class="verificationCode">
当前订单有 {{ orderPackage.length }} 个包裹快递
</view>
<div>
点击此处查看
</div>
</view>
<view v-else class="logistics-List-title">
{{ '暂无物流信息' }}
</view>
@@ -30,7 +38,7 @@
</view>
<!-- 地址 -->
<view class="info-view" v-if="order.deliveryMethod == 'LOGISTICS'">
<view class="info-view" v-if="order.deliveryMethod === 'LOGISTICS' && order.orderType !== 'VIRTUAL'">
<view class="address-view">
<view>
<view class="address-title">
@@ -44,7 +52,7 @@
</view>
<!-- 提货地址 -->
<view class="info-view" v-if="order.deliveryMethod == 'SELF_PICK_UP'">
<view class="info-view" v-if="order.deliveryMethod === 'SELF_PICK_UP'">
<view class="address-view">
<view>
<view class="order-info-view">
@@ -83,6 +91,9 @@
<view class="goods-price">
{{ sku.goodsPrice | unitPrice }}
<!-- <span v-if="sku.point">+{{ sku.point }}积分</span> -->
<span style="font-size: 24rpx;margin-left: 14rpx;color: #ff9900;" v-if="sku.isRefund && sku.isRefund !== 'NO_REFUND'">
{{refundPriceList(sku.isRefund)}} ({{ sku.refundPrice | unitPrice("") }})
</span>
</view>
</view>
<view class="goods-num">
@@ -105,7 +116,7 @@
<view class="title">商品总价</view>
<view class="value">{{ order.goodsPrice | unitPrice }}</view>
</view>
<view class="order-info-view">
<view class="order-info-view" v-if="order.freightPrice">
<view class="title">运费</view>
<view class="value">{{ order.freightPrice | unitPrice }}</view>
</view>
@@ -249,7 +260,7 @@
</template>
<script>
import { getExpress } from "@/api/trade.js";
import { getExpress, getPackage } from "@/api/trade.js";
import { cancelOrder, confirmReceipt, getOrderDetail } from "@/api/order.js";
import shares from "@/components/m-share/index"; //分享
@@ -307,6 +318,7 @@ export default {
cancelList: "",
rogShow: false,
reason: "",
orderPackage:"",
};
},
onLoad(options) {
@@ -314,6 +326,34 @@ export default {
this.sn = options.sn;
},
methods: {
//获取包裹
async getOrderPackage() {
getPackage(this.order.sn).then(res => {
if (res.data.success) {
this.orderPackage = res.data.result
}
})
},
handleClickDeliver(){
uni.navigateTo({
url: `/pages/order/deliverDetail?order_sn=${this.order.sn}`,
});
},
// 退款状态枚举
refundPriceList(status) {
switch (status) {
case 'ALL_REFUND':
return "全部退款";
case 'PART_REFUND':
return "部分退款";
case 'NO_REFUND':
return "未退款";
case 'REFUNDING':
return "退款中";
default:
return "";
}
},
callPhone(){
this.$options.filters.callPhone(this.order.storeAddressMobile )
},
@@ -359,7 +399,8 @@ export default {
this.orderGoodsList = order.orderItems;
this.orderDetail = res.data.result;
if (this.order.deliveryMethod === 'LOGISTICS') {
this.loadLogistics(sn)
this.loadLogistics(sn);
this.getOrderPackage();
}
if (this.$store.state.isShowToast){ uni.hideLoading() };
});