You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
428 lines
17 KiB
428 lines
17 KiB
<template>
|
|
<view class="mall-detail">
|
|
<view class="md-send">
|
|
<view class="ms-status-bar">{{ orderInfo.status_text || '-' }}</view>
|
|
<view class="ms-send-info" v-if="logisticsInfo" @click="toLogisticInfo">
|
|
<view class="msi-txt">
|
|
<view>快递:{{ logisticsInfo.logistics_info.logistics_name || '-' }} {{ logisticsInfo.logistics_info.logistics_no || '-' }}</view>
|
|
<view @click.stop="copyLogisticNum(logisticsInfo.logistics_info.logistics_no || '-')">复制</view>
|
|
</view>
|
|
<image mode="aspectFit" src="/subpackage/order/static/images/arrow.png"></image>
|
|
</view>
|
|
<view class="ms-main">
|
|
<view class="md-box ms-consignee">
|
|
<view class="md-tit">收货人信息</view>
|
|
<view class="mc-mode">配送方式:{{ orderInfo.product_order_self_pickup == 1 ? '自提' : '快递' }}</view>
|
|
<view class="mc-name">{{ order_custom.name || '-' }} <text>{{ order_custom.phone || '-' }}</text></view>
|
|
<view class="mc-addr">{{ order_custom.address || '-' }}</view>
|
|
<block v-if="orderInfo.product_order_self_pickup == 1&&orderInfo.product_order_self_pickup_info">
|
|
<view class="mc-code">取货码:{{ orderInfo.product_order_self_pickup_info.gcode || '-' }}</view>
|
|
<view class="mc-time">取货时间: {{ orderInfo.product_order_self_pickup_info.gtime || '-' }}</view>
|
|
</block>
|
|
</view>
|
|
<view class="md-box ms-goods-info">
|
|
<view class="md-tit">商品信息</view>
|
|
<view class="mgi-goods-ls">
|
|
<view class="mgl-item" v-for="(e, i) in orderInfo.product_order_goods" :key="i">
|
|
<image mode="aspectFill" :src="e.product_imgs"></image>
|
|
<view>
|
|
<view class="mi-name">
|
|
<view>{{ e.product_name || '-' }}</view>
|
|
<view>¥{{ e.product_price || '0' }}</view>
|
|
</view>
|
|
<view class="mi-spec">
|
|
<view v-if="e.product_spec_multi_info&&e.product_spec_multi_info.spec_info&&e.product_spec_multi_info.spec_info.length">
|
|
<block v-for="(k, j) in e.product_spec_multi_info.spec_info" :key="j">
|
|
{{ k + ';' }}
|
|
</block>
|
|
</view>
|
|
<view>×{{ e.product_nums || 0 }}</view>
|
|
</view>
|
|
<view class="mi-amount">
|
|
<view>实付:¥<text>{{ e.real_pay_amount || 0 }}</text></view>
|
|
|
|
<view v-if="e.product_refund_utype == 1">已退款</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="mgi-price-info">
|
|
<view class="mpi-line">
|
|
<view>金额小计</view><view>¥{{ orderInfo.amount || 0 }}</view>
|
|
</view>
|
|
<view class="mpi-line">
|
|
<view>积分抵扣</view><view>¥{{ orderInfo.deduction_amount || 0 }}</view>
|
|
</view>
|
|
<view class="mpi-line">
|
|
<view>折扣金额</view><view>¥{{ orderInfo.discount_amount || 0 }}</view>
|
|
</view>
|
|
<view class="mpi-line">
|
|
<view>优惠券优惠</view><view>¥{{ orderInfo.coupons_amount || 0 }}</view>
|
|
</view>
|
|
<view class="mpi-line">
|
|
<view>运费</view><view>¥{{ orderInfo.product_logistics_price || 0 }}</view>
|
|
</view>
|
|
<view class="mpi-total"><text>合计支付:</text>¥{{ orderInfo.pay_amount || 0 }}</view>
|
|
</view>
|
|
</view>
|
|
<view class="md-box">
|
|
<p-line :keyname="'下单时间'" :value="orderInfo.created_at || '-'" ></p-line>
|
|
<p-line :keyname="'订单编号'" :value="orderInfo.order_no || '-'" isbtn></p-line>
|
|
<p-line :keyname="'支付方式'" :value="payTypeTxt(orderInfo.pay_type) || '-'" ></p-line>
|
|
<p-line :keyname="'交易流水号'" :value="orderInfo.trade_no || '-'"></p-line>
|
|
<block v-if="orderInfo.status == 7">
|
|
<p-line :keyname="'退款编号'" :value="orderInfo.refund_no || '-'"></p-line>
|
|
<p-line :keyname="'退款时间'" :value="orderInfo.refund_time || '-'"></p-line>
|
|
<p-line :keyname="'退款金额'" :value="orderInfo.refund_amount || '0'" ></p-line>
|
|
</block>
|
|
|
|
</view>
|
|
</view>
|
|
<view class="ms-fixed-bar">
|
|
<view class="mfb-btns">
|
|
<!-- <view>查看退款</view> -->
|
|
<view v-if="isRufundBtn" class="red" @click="toRefund">主动退款</view>
|
|
<view v-if="orderInfo.status == 1&&orderInfo.after_sale_status == 0" class="green" @click="toSendOut">发货</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
// 0 待付款 / 1 待发货 / 2 待收货 / 3 待评价 / 4 交易完成 / 5 订单关闭 / 6 退款中 / 7 退款完成 / 8 退款失败 / 9 已删除
|
|
import p_line from '../../../components/p_line/p_line.vue';
|
|
import { ORDER_API } from '../../../js/api';
|
|
import server from '../../../js/server';
|
|
import util from '../../../../../utils/util';
|
|
export default {
|
|
computed: {
|
|
isRufundBtn(){
|
|
let { orderInfo } = this;
|
|
return (orderInfo.status!=6 || orderInfo.status != 7) && orderInfo.after_sale_status == 0
|
|
},
|
|
order_custom(){
|
|
let { orderInfo } = this;
|
|
if(orderInfo&&orderInfo.product_order_custom)return (orderInfo.product_order_custom || {})
|
|
return {};
|
|
},
|
|
logisticsInfo(){
|
|
let { orderInfo } = this;
|
|
if(orderInfo.product_order_logistics_data&&orderInfo.product_order_logistics_data.length){
|
|
return orderInfo.product_order_logistics_data[orderInfo.product_order_logistics_data.length - 1]; // 最后为最新
|
|
}
|
|
return null
|
|
}
|
|
},
|
|
components: {
|
|
'p-line': p_line,
|
|
},
|
|
data(){
|
|
return {
|
|
orderInfo: {}
|
|
}
|
|
},
|
|
onLoad(options){
|
|
this.getInfo(options.order_no);
|
|
},
|
|
methods: {
|
|
// 主动退款
|
|
toRefund(){
|
|
let { orderInfo } = this;
|
|
// let _ls = this.sendAndNotRefundList() || [];
|
|
// if(!_ls.length)return;
|
|
// if(_ls.length == 1)
|
|
return util.routeTo(`/subpackage/order/pages/mall/refund_operate/refund_operate?order_no=${orderInfo.order_no}&brand_id=${orderInfo.brand_id}`, 'nT');
|
|
// util.routeTo(`/subpackage/order/pages/mall/refund_list/refund_list?order_no=${orderInfo.order_no}&brand_id=${orderInfo.brand_id}`, 'nT');
|
|
},
|
|
// 已发货为退款列表
|
|
// sendAndNotRefundList(){
|
|
// let { orderInfo } = this;
|
|
// let _goodsLs = orderInfo.product_order_goods || [];
|
|
// return _goodsLs.filter(ele=>ele.product_logistics_end == 1&&ele.product_refund_utype == 0);
|
|
// },
|
|
// 快递详情
|
|
toLogisticInfo(){
|
|
let { orderInfo } = this;
|
|
util.routeTo(`/subpackage/order/pages/mall/check_logistic/check_logistic?order_no=${orderInfo.order_no}&brand_id=${orderInfo.brand_id}`, 'nT');
|
|
},
|
|
copyLogisticNum(_data){
|
|
uni.setClipboardData({ data: _data });
|
|
},
|
|
toSendOut(){
|
|
let { orderInfo } = this;
|
|
util.routeTo(`/subpackage/order/pages/mall/send_out/send_out?order_no=${orderInfo.order_no}&brand_id=${orderInfo.brand_id}`, 'nT');
|
|
},
|
|
payTypeTxt: util.order_pay_type_txt,
|
|
getInfo(order_no){
|
|
util.showLoad();
|
|
server.get({
|
|
url: ORDER_API.shop2OrderInfo,
|
|
data: { order_no },
|
|
failMsg: '加载失败!'
|
|
})
|
|
.then(res=>{
|
|
util.hideLoad();
|
|
let _order = res.order || {};
|
|
this.orderInfo = _order;
|
|
})
|
|
},
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss">
|
|
@import '~style/public.scss';
|
|
.mall-detail{
|
|
padding-bottom: 128upx;
|
|
padding-bottom: calc( 128upx + constant(safe-area-inset-bottom)); /* 兼容 iOS < 11.2 */
|
|
padding-bottom: calc( 128upx + env(safe-area-inset-bottom)); /* 兼容 iOS >= 11.2 */
|
|
}
|
|
.md-send{
|
|
.ms-status-bar{
|
|
padding: 0 44upx;
|
|
line-height: 108upx;
|
|
font-size: 36upx;
|
|
color: #fff;
|
|
background-color: #0a9a79;
|
|
}
|
|
.ms-send-info{
|
|
padding: 0 44upx;
|
|
height: 108upx;
|
|
background-color: #fff;
|
|
@include centerFlex(space-between);
|
|
.msi-txt{
|
|
@include centerFlex(flex-start);
|
|
>view{
|
|
&:first-child{
|
|
font-size: 28upx;
|
|
color: #000;
|
|
@include textHide(1);
|
|
}
|
|
&+view{
|
|
flex-shrink: 0;
|
|
margin-left: 20upx;
|
|
font-size: 28upx;
|
|
color: $themeColor;
|
|
}
|
|
}
|
|
}
|
|
>image{
|
|
margin-left: 20upx;
|
|
flex-shrink: 0;
|
|
width: 32upx;
|
|
height: 32upx;
|
|
}
|
|
|
|
}
|
|
.ms-main{
|
|
padding: 24upx;
|
|
}
|
|
.ms-consignee{
|
|
.mc-mode{
|
|
margin-bottom: 10upx;
|
|
line-height: 40upx;
|
|
font-size: 28upx;
|
|
color: #1a1a1a;
|
|
@include textHide(1);
|
|
}
|
|
.mc-name{
|
|
margin-bottom: 6upx;
|
|
line-height: 44upx;
|
|
font-weight: 500;
|
|
font-size: 32upx;
|
|
color: #1a1a1a;
|
|
@include textHide(1);
|
|
>text{
|
|
margin-left: 50upx;
|
|
}
|
|
}
|
|
.mc-addr{
|
|
margin-bottom: 16upx;
|
|
line-height: 40upx;
|
|
font-size: 28upx;
|
|
color: #9a9a9d;
|
|
}
|
|
.mc-code{
|
|
font-size: 32upx;
|
|
line-height: 52upx;
|
|
color: #9a9a9d;
|
|
@include textHide(1);
|
|
&.green{
|
|
color: $themeColor;
|
|
}
|
|
}
|
|
.mc-time{
|
|
font-size: 32upx;
|
|
line-height: 52upx;
|
|
color: #1a1a1a;
|
|
@include textHide(1);
|
|
}
|
|
}
|
|
.ms-goods-info{
|
|
.mgi-goods-ls{
|
|
.mgl-item{
|
|
margin-bottom: 30upx;
|
|
display: flex;
|
|
align-items: flex-start;
|
|
justify-content: flex-start;
|
|
border-bottom: 2upx solid #F2F2F7;
|
|
>image{
|
|
margin-right: 20upx;
|
|
flex-shrink: 0;
|
|
flex-grow: 0;
|
|
width: 180upx;
|
|
height: 180upx;
|
|
border-radius: 6upx;
|
|
}
|
|
>view{
|
|
flex-grow: 1;
|
|
.mi-name{
|
|
display: flex;
|
|
align-items: flex-start;
|
|
margin-bottom: 12upx;
|
|
>view{
|
|
&:first-child{
|
|
flex-grow: 1;
|
|
line-height: 40upx;
|
|
font-size: 28upx;
|
|
color: #333;
|
|
@include textHide(2);
|
|
}
|
|
&+view{
|
|
margin-left: 24upx;
|
|
flex-shrink: 0;
|
|
max-width: 130upx;
|
|
line-height: 34upx;
|
|
font-size: 24upx;
|
|
color: #1a1a1a;
|
|
@include textHide(1);
|
|
}
|
|
}
|
|
}
|
|
.mi-spec{
|
|
margin-bottom: 12upx;
|
|
@include centerFlex(space-between);
|
|
>view{
|
|
line-height: 40upx;
|
|
color: #9a9a9d;
|
|
&:first-child{
|
|
font-size: 24upx;
|
|
@include textHide(1);
|
|
}
|
|
&+view{
|
|
margin-left: 20upx;
|
|
flex-shrink: 0;
|
|
max-width: 30%;
|
|
font-size: 28upx;
|
|
@include textHide(1);
|
|
}
|
|
}
|
|
}
|
|
.mi-amount{
|
|
margin-bottom: 20upx;
|
|
@include centerFlex(space-between);
|
|
>view{
|
|
&:first-child{
|
|
flex-grow: 1;
|
|
font-size: 28upx;
|
|
color: #1a1a1a;
|
|
@include textHide(1);
|
|
>text{
|
|
font-size: 32upx;
|
|
font-weight: 500;
|
|
}
|
|
}
|
|
&+view{
|
|
flex-shrink: 0;
|
|
margin-left: 20upx;
|
|
line-height: 40upx;
|
|
font-size: 28upx;
|
|
color: #EA5061;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
.mgi-price-info{
|
|
.mpi-line{
|
|
margin-bottom: 30upx;
|
|
@include centerFlex(space-between);
|
|
>view{
|
|
&:first-child{
|
|
flex-shrink: 0;
|
|
margin-right: 20upx;
|
|
font-size: 28upx;
|
|
color: #9a9a9d;
|
|
}
|
|
&+view{
|
|
@include textHide(1);
|
|
font-size: 24upx;
|
|
color: #333;
|
|
}
|
|
}
|
|
}
|
|
.mpi-total{
|
|
text-align: right;
|
|
font-size: 32upx;
|
|
line-height: 40upx;
|
|
color: #1a1a1a;
|
|
@include textHide(1);
|
|
>text{
|
|
font-size: 28upx;
|
|
color: #9A9A9D;
|
|
}
|
|
}
|
|
}
|
|
.ms-fixed-bar{
|
|
position: fixed;
|
|
left: 0;
|
|
width: 100%;
|
|
bottom: 0;
|
|
padding: 10upx 24upx;
|
|
padding-bottom: calc( 10upx + constant(safe-area-inset-bottom)); /* 兼容 iOS < 11.2 */
|
|
padding-bottom: calc( 10upx + env(safe-area-inset-bottom)); /* 兼容 iOS >= 11.2 */
|
|
background-color: #f2f2f7;
|
|
.mfb-btns{
|
|
@include centerFlex(flex-end);
|
|
>view{
|
|
margin-left: 20upx;
|
|
width: 192upx;
|
|
line-height: 88upx;
|
|
text-align: center;
|
|
font-size: 32upx;
|
|
font-weight: 500;
|
|
border-radius: 10upx;
|
|
background-color: #fff;
|
|
color: $themeColor;
|
|
&.red{
|
|
color: #EA5061;
|
|
}
|
|
&.green{
|
|
background-color: $themeColor;
|
|
color: #fff;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.md-box{
|
|
|
|
margin-bottom: 24upx;
|
|
padding: 30upx 20upx;
|
|
border-radius: 10upx;
|
|
background-color: #fff;
|
|
}
|
|
.md-tit{
|
|
margin-bottom: 30upx;
|
|
line-height: 44upx;
|
|
font-weight: 500;
|
|
font-size: 32upx;
|
|
color: #1a1a1a;
|
|
}
|
|
</style>
|