zhwl-miniapp/pages/shop/refundReason.vue
2025-06-26 12:38:35 +08:00

167 lines
7.7 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="waper">
<u-navbar :autoBack="true" :placeholder="true" bgColor="#FBFBFB">
<view slot='center' class="navbar_title">退款详情</view>
</u-navbar>
<view class="waper_content" v-if="detail">
<view class="status">
<view class="top">
<view class="icon">
<u-icon name="checkmark-circle-fill" size="30rpx" color="#01be69" v-if="detail.refundStatus != '-1'"></u-icon>
<u-icon name="close-circle-fill" size="30rpx" color="#cd674f" v-if="detail.refundStatus == '-1'"></u-icon>
</view>
<view class="text">
<view>{{detail.refundStatusName}}</view>
<view>{{detail.createTime}}</view>
</view>
</view>
<view class="bottom" v-if="detail.refundStatus == '-1'">商家拒绝退款,本次退款申请关闭,如问题仍未解决,您可以在确认收货前重新发起申请。</view>
</view>
<view class="money" v-if="detail.refundStatus > 0">
<view>退款总金额</view>
<view><text>¥</text>{{detail.refundFee}}</view>
</view>
<view class="info" v-if="detail.goodsList.length > 0">
<view class="title">{{detail.goodsList[0].storeName}}</view>
<view class="goods" v-for="(i, index) in detail.goodsList" :key="index">
<view class="img">
<image :src="$utils.setImgUrl(i.image)" mode=""></image>
</view>
<view class="text">
<view class="name">{{i.title}}</view>
<view class="tag">
<view>
<text v-if="i.goodsSkuText">{{i.goodsSkuText.split(',').join('-')}}</text>
</view>
<view>X{{i.goodsNum}}</view>
</view>
<view class="num">总价{{(i.goodsNum * i.price).toFixed(2)}}</view>
</view>
</view>
</view>
<view class="list_waper">
<view class="list">
<view>订单编号</view>
<view>
<text>{{detail.zdyWcscOrder.orderSn}}</text>
<text>复制</text>
</view>
</view>
<view class="list">
<view>退款原因</view>
<view>{{detail.reasonText}} {{detail.content}}</view>
</view>
<view class="list">
<view>退款金额</view>
<view>{{detail.refundFee}}</view>
</view>
<view class="list">
<view>申请时间</view>
<view>{{detail.createTime}}</view>
</view>
<!-- 成功 -->
<view class="list" v-if="detail.refundStatus == 2">
<view>退款时间</view>
<view>{{detail.updateTime}}</view>
</view>
<!-- 失败 -->
<view class="list" v-if="detail.refundStatus == -1">
<view>失败原因</view>
<view>{{detail.checkReason}}</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data () {
return {
detail: null
}
},
async onLoad (options) {
let info = await this.$shop.orderRefundDetail(options.id);
this.detail = info.data;
}
}
</script>
<style lang="scss">
.waper_content{
width: 100%; box-sizing: border-box; padding: 24rpx;
.status{
width: 100%; background: #fff; border-radius: 10rpx; padding: 24rpx; box-sizing: border-box;
.top{
width: 100%; box-sizing: border-box; padding-left: 50rpx; position: relative;
.icon{
position: absolute; left: 0; top: 0;
/deep/.u-icon__icon { color: #03AE80 !important; font-size: 32rpx !important; }
}
.text{
width: 100%; line-height: 33rpx; color: rgba(0,0,0,0.65); font-size: 28rpx;
view:first-child{ font-weight: 500; margin-bottom: 18rpx; color: rgba(0,0,0,0.85); }
}
}
.bottom{ margin-top: 24rpx; padding-top: 24rpx; border-top: 1rpx solid rgba(0,0,0,0.1); line-height: 36rpx; color: rgba(0,0,0,0.45); font-size: 26rpx; }
}
.money{
width: 100%; background: #fff; border-radius: 10rpx; padding: 0 24rpx; box-sizing: border-box; height: 129rpx; display: flex; justify-content: space-between; align-items: center; margin-top: 20rpx;
view{
color: rgba(0,0,0,0.85);
&:nth-child(1){ font-size: 28rpx; font-weight: 500; }
&:nth-child(2){
font-size: 54rpx; font-weight: bold;
text { font-size: 32rpx; font-weight: 400; }
}
}
}
.info{
width: 100%; background: #fff; border-radius: 10rpx; box-sizing: border-box; padding: 32rpx 24rpx 24rpx; margin-top: 20rpx;
.title{ line-height: 38rpx; color: rgba(0,0,0,0.85); font-size: 32rpx; font-weight: 500; }
.goods{
width: 100%; margin-top: 25rpx; box-sizing: border-box; padding-left: 190rpx; position: relative; margin-bottom: 28rpx; min-height: 170rpx;
&:last-child{ margin-bottom: 0; }
.img{
width: 170rpx; height: 170rpx; position: absolute; left: 0; top: 0;
image{ border-radius: 10rpx; }
}
.text{
width: 100%;
.name{ line-height: 33rpx; color: rgba(0,0,0,0.85); font-size: 28rpx; font-weight: 500; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; }
.tag{
width: 100%; margin-top: 20rpx; display: flex; justify-content: space-between; align-items: center; height: 48rpx;
view{
&:nth-child(1){
display: flex; align-items: center;
text{ height: 48rpx; padding: 0 24rpx; background: #F4F4F4; border-radius: 2rpx; color: rgba(0,0,0,0.65); font-size: 24rpx; line-height: 48rpx; }
}
&:nth-child(2){ color: rgba(0,0,0,0.65); font-size: 24rpx; }
}
}
.num{ width: 100%; margin-top: 30rpx; line-height: 33rpx; color: rgba(0,0,0,0.85); font-size: 28rpx; text-align: right; }
}
}
}
.list_waper{
width: 100%; background: #fff; border-radius: 10rpx; box-sizing: border-box; padding: 24rpx; margin-top: 20rpx;
.list{
width: 100%; box-sizing: border-box; padding-left: 130rpx; position: relative; min-height: 40rpx; margin-bottom: 24rpx;
&:last-child{ margin-bottom: 0; }
view{
&:nth-child(1){ color: rgba(0,0,0,0.65); font-size: 28rpx; position: absolute; left: 0; top: 0; line-height: 33rpx; }
&:nth-child(2){
color: rgba(0,0,0,0.85); font-size: 28rpx; line-height: 33rpx; display: flex; width: 100%; justify-content: flex-end; align-items: center; text-align: right;
text:last-child{
margin-left: 48rpx; color: #3F79FF; position: relative;
&::after{ content: ""; width: 2rpx; height: 24rpx; background: #A2A2A4; position: absolute; left: -23rpx; top: 50%; transform: translateY(-50%); }
}
}
}
}
}
}
</style>