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

130 lines
6.5 KiB
Vue
Raw Permalink 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="#fff">
<view slot='center' class="navbar_title">退款详情</view>
</u-navbar>
<view class="waper_box">
<view class="list" v-for="(i, index) in list" :key="index" @click="toDetail(i.id)">
<view class="title">
<view>{{i.refundStatusName}}</view>
<view>退款编号:{{i.refundCode}}</view>
</view>
<view class="content">
<view class="money">
<view class="left">退款金额:¥{{i.actualPrice}}{{i.refundQuantity}}张)</view>
<view class="right" @click.stop="tabShow(index)">
<view>{{i.show ? '收起' : '展开'}}</view>
<view class="icon">
<u-icon :name="i.show ? 'arrow-up' : 'arrow-down'" color="#999" size="26rpx"></u-icon>
</view>
</view>
</view>
<view class="fee" v-show="i.show">手续费:¥{{i.totalFee}}</view>
<view class="step" v-show="i.show">
<view class="step_list step_active">
<view class="text">申请退款</view>
<view class="time">{{i.createTime}}</view>
<view class="active">
<image src="https://common/refund_active.png" mode=""></image>
</view>
</view>
<view :class="'step_list' + (i.refundStatus > 1 ? ' step_active' : '')">
<view class="text">退款待审核</view>
<view class="active" v-if="i.refundStatus > 1">
<image src="https://common/refund_active.png" mode=""></image>
</view>
<view class="icon" v-else></view>
</view>
<view :class="'step_list' + (i.refundStatus > 1 ? ' step_active' : '') + (i.updateTime ? '' : ' add_time')">
<view class="text over_text" v-if="i.refundStatus == '100'">审核驳回</view>
<view class="text over_text" v-if="i.refundStatus == '200'">退款成功,资金原路返回</view>
<view class="text over_text" v-if="i.refundStatus == '2'">退款中预计在1-3个工作日完成</view>
<view class="text over_text" v-if="i.refundStatus == '4'">退款失败,请联系管理员</view>
<view class="time" v-if="i.updateTime">{{i.updateTime}}</view>
<view class="active" v-if="i.refundStatus > 1">
<image src="https://common/refund_active.png" mode=""></image>
</view>
<view class="icon" v-else></view>
<view class="msg" v-if="i.refundStatus == '100' && i.refundDescribe[1]">拒绝原因:{{i.refundDescribe}}</view>
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data () {
return {
list: []
}
},
async onLoad (options) {
let info = await this.$http.getRefundListByOrderId(options.orderId);
for (var i = 0; i < info.data.length; i ++) {
info.data[i].show = true;
}
this.list = info.data;
},
methods: {
tabShow (index) {
this.list[index].show = !this.list[index].show;
},
toDetail (id) {
uni.navigateTo({ url: '/pages/my/refundDetail?id=' + id })
}
}
}
</script>
<style lang="scss">
page{ background: #F6F6F6; }
.waper_box{
width: 100%; box-sizing: border-box; padding: 32rpx;
.list{
width: 100%; background: #fff; border-radius: 10rpx; box-sizing: border-box; padding: 32rpx 24rpx; margin-bottom: 24rpx;
&:last-child{ margin-bottom: 0; }
.title{
padding-bottom: 24rpx; border-bottom: 2rpx solid rgba(0, 0, 0, 0.1);
view{
&:nth-child(1){ line-height: 46rpx; color: #333; font-size: 32rpx; font-weight: bold; }
&:nth-child(2){ margin-top: 8rpx; line-height: 40rpx; font-size: 28rpx; color: #999; font-weight: 500; }
}
}
.content{
width: 100%; margin-top: 24rpx;
.money{
width: 100%; height: 40rpx; display: flex; justify-content: space-between; align-items: center;
.left{ color: #666; font-size: 28rpx; font-weight: 500; }
.right{
color: #999; display: flex; align-items: center; font-size: 28rpx;
.icon{ margin-left: 12rpx; }
}
}
.fee{ margin-top: 24rpx; line-height: 40rpx; color: #666; font-size: 28rpx; font-weight: 500; }
.step{
width: 100%; margin-top: 32rpx;
.step_list{
width: 100%; padding-left: 44rpx; position: relative; margin-bottom: 32rpx;
.text{ line-height: 40rpx; color: #333; font-size: 28rpx; font-weight: 500; }
.time{ margin-top: 4rpx; line-height: 34rpx; color: #999; font-size: 24rpx; }
&::after{ content: ""; width: 2rpx; height: 100%; background: #E8E8E8; position: absolute; left: 10rpx; top: calc(50% + 7rpx); z-index: 5; }
&.step_active::after{ background: #03AE80; }
&.step_active .over_text{ color: #03AE80; }
&:nth-child(2)::after{ width: 0; }
.icon{ width: 10rpx; height: 10rpx; background: #999; border-radius: 10rpx; position: absolute; left: 6rpx; top: 50%; transform: translateY(-50%); z-index: 6; }
.active{ width: 20rpx; height: 20rpx; position: absolute; left: 0; top: 50%; transform: translateY(-50%); }
.msg{ margin-top: 12rpx; color: #333; font-size: 26rpx; line-height: 36rpx; }
&:last-child{
margin-bottom: 0;
&::after{ top: auto; bottom: calc(50% + 7rpx); }
}
&.add_time::after{ height: calc(100% + 30rpx); }
}
}
}
}
}
</style>