This commit is contained in:
2024-08-22 12:53:28 +08:00
commit 1d65a849fd
360 changed files with 41757 additions and 0 deletions

View File

@@ -0,0 +1,68 @@
var e = getApp();
Page({
data: {
disabled: !1,
nav_select: !1,
name: "",
region: "",
phone: "",
detail: "",
error: "",
order_goods_id: 0,
info: {}
},
onLoad: function(e) {
this.data.order_goods_id = e.order_goods_id, this.getOrderDetail(e.order_goods_id);
},
goodsDetail: function(e) {
var t = e.currentTarget.dataset.id;
wx.navigateTo({
url: "../goods/index?goods_id=" + t
});
},
getOrderDetail: function(t) {
var a = this;
e._get("user.order_goods/getOrderGoods", {
order_goods_id: t
}, function(e) {
e.data.info.aftermarket_apply_date = a.formatDate(1e3 * e.data.info.aftermarket_apply_time),
e.data.info.aftermarket_dispose_date = a.formatDate(1e3 * e.data.info.aftermarket_dispose_time),
a.setData(e.data);
});
},
formatDate: function(e) {
var t = new Date(e), a = t.getFullYear(), r = t.getMonth() + 1;
r = r < 10 ? "0" + r : r;
var o = t.getDate();
o = o < 10 ? "0" + o : o;
var d = t.getHours();
d = d < 10 ? "0" + d : d;
var i = t.getMinutes(), n = t.getSeconds();
return a + "-" + r + "-" + o + " " + d + ":" + (i = i < 10 ? "0" + i : i) + ":" + (n = n < 10 ? "0" + n : n);
},
saveData: function(t) {
var a = this, r = t.detail.value;
if (r.order_goods_id = a.data.order_goods_id, !a.validation(r)) return e.showError(a.data.error),
!1;
a.setData({
disabled: !0
}), e._post_form("user.order_goods/submitAftermarket", r, function(t) {
if (console.log(t), 1 != t.code) return e.showError(t.msg), !1;
a.getOrderDetail(a.data.order_goods_id);
}, !1, function() {
a.setData({
disabled: !1
});
});
},
validation: function(e) {
return "" === e.refund_reason ? (this.data.error = "退款原因不能为空", !1) : 20 != this.data.info.order.delivery_status || "" !== e.deliver_no || (this.data.error = "快递单号不能为空",
!1);
},
bindRegionChange: function(e) {
this.setData({
region: e.detail.value
});
}
});

View File

@@ -0,0 +1,6 @@
{
"navigationBarTitleText": "售后详情",
"usingComponents": {
"shortcut": "/components/shortcut/shortcut"
}
}

View File

@@ -0,0 +1,85 @@
<view class="container">
<view class="common-header-xian"></view>
<view class="order-cont b-f m-top20">
<view class="padding-box b-f">
<view class="order-header dis-flex">
<view class="flex-box t-l">
<text class="title">商品详情</text>
</view>
</view>
</view>
<view class="padding-box b-f">
<view class="order-cont dis-flex">
<view class="order-num"></view>
<view class="order-time">
<text>{{order.create_time}}</text>
</view>
</view>
</view>
</view>
<view class="padding-box b-f">
<view bindtap="goodsDetail" class="dis-flex flow-shopList b-f" data-id="{{info.goods_id}}">
<view class="flow-list-left">
<image mode="scaleToFill" src="{{info.image.file_path}}"></image>
</view>
<view class="flow-list-right">
<text class="h4 twolist-hidden">{{info.goods_name}}</text>
<text class="p f-22 col-7">{{info.goods_attr}}</text>
<view class="flow-list-cont">
<text class="flow-cont">¥{{info.goods_price}}</text>
<text class="small">×{{info.total_num}}</text>
</view>
<view></view>
</view>
</view>
</view>
<form bindsubmit="saveData" wx:if="{{info.refund_status==0}}">
<view class="address-cont-title b-f b-b">
<view class="list address-box dis-flex b-b">
<view class="left-name">
<text class="f-30">退款原因</text>
</view>
<view class="right-cont flex-box">
<input name="refund_reason" placeholder="请输入退款原因" value=""></input>
</view>
</view>
<view class="list address-box dis-flex" wx:if="{{info.order.delivery_status.value==20}}">
<view class="left-name">
<text class="f-30">快递单号</text>
</view>
<view class="right-cont flex-box">
<input name="deliver_no" placeholder="请输入快递单号" value=""></input>
</view>
</view>
</view>
<view class="address-cont-title b-f b-b"></view>
<view class="padding-box m-top20 profile-btn">
<button disabled="{{disabled}}" formType="submit">提交</button>
</view>
</form>
<view class="flow-all-money b-f padding-box m-top20" wx:if="{{info.refund_status>0}}">
<view class="dis-flex flow-all-list-cont1">
<text class="col-16">退款单号: {{info.refund_no}}</text>
</view>
<view class="dis-flex flow-all-list-cont1">
<text class="col-16">退款原因: {{info.refund_reason}}</text>
</view>
<view class="dis-flex flow-all-list-cont1" wx:if="{{info.deliver_no.length>0}}">
<text class="col-16" selectable="{{true}}">快递单号: {{info.deliver_no}}</text>
</view>
<view class="dis-flex flow-all-list-cont1">
<text class="col-16" selectable="{{true}}" wx:if="{{info.refund_status==1}}">退款状态: 已申请</text>
<text class="col-16" selectable="{{true}}" wx:if="{{info.refund_status==2}}">退款状态: 已退款 </text>
</view>
<view class="dis-flex flow-all-list-cont1">
<text class="col-16" selectable="{{true}}">申请时间: {{info.aftermarket_apply_date}}</text>
</view>
<view class="dis-flex flow-all-list-cont1" wx:if="{{info.refund_status==2}}">
<text class="col-16" selectable="{{true}}">完成时间: {{info.aftermarket_dispose_date}} </text>
</view>
<view class="dis-flex flow-all-list-cont1" wx:if="{{info.refund_status==2}}">
<text class="col-16" selectable="{{true}}">退款金额: ¥{{info.refund_price}} </text>
</view>
</view>
</view>
<shortcut></shortcut>

View File

@@ -0,0 +1,224 @@
.profile-list .admin {
color: #333;
font-size: 30rpx;
padding-left: 15px;
}
.address-box .left-name {
width: 85px;
}
.address-cont-title .list {
padding: 24rpx;
width: auto;
}
.tui-picker-detail text {
padding: 0 10rpx;
}
.infoText {
display: block;
line-height: 56rpx;
}
picker-view {
background-color: #fff;
bottom: 0;
height: 480rpx;
padding: 0;
position: fixed;
width: 100%;
}
picker-view-column view {
align-items: center;
display: flex;
font-size: 28rpx;
height: 100%;
justify-content: center;
line-height: 28rpx;
vertical-align: middle;
}
.animation-element-wrapper {
height: 100%;
left: 0;
top: 0;
z-index: 21;
}
.animation-element,.animation-element-wrapper {
display: flex;
position: fixed;
width: 100%;
}
.animation-element {
background-color: #fff;
bottom: 0;
height: 570rpx;
}
.animation-button {
align-items: center;
height: 100rpx;
line-height: 100rpx;
margin-top: 20rpx;
top: 20rpx;
width: 400rpx;
}
.address-text {
color: #999;
display: inline-flex;
font-family: Arial,Helvetica,sans-serif;
font-size: 30rpx;
height: 50rpx;
line-height: 50rpx;
margin-top: 20rpx;
position: fixed;
text-align: center;
}
.left-bt {
left: 30rpx;
}
.right-bt {
color: #ec5151;
right: 30rpx;
}
.line {
background-color: #eee;
display: block;
height: 1rpx;
margin-top: 89rpx;
position: fixed;
width: 100%;
}
.address-box .right-cont input {
color: #444;
font-size: 30rpx;
width: 100%;
}
.bargain-commont-bg {
background: rgba(0,0,0,.6);
bottom: 0;
left: 0;
position: fixed;
right: 0;
top: 0;
z-index: 20;
}
.f-34 {
font-size: 34rpx;
}
.f-32 {
font-size: 32rpx;
}
.f-31 {
font-size: 31rpx;
}
.f-28 {
font-size: 28rpx;
}
.f-26 {
font-size: 26rpx;
}
.f-24 {
font-size: 24rpx;
}
.f-22 {
font-size: 22rpx;
}
.b-r {
border-right: 1rpx solid #eee;
}
.b-b {
border-bottom: 1rpx solid #eee;
}
.b-t {
border-top: 1rpx solid #eee;
}
.m-top4 {
margin-top: 4rpx;
}
.m-top10 {
margin-top: 10rpx;
}
.m-top20 {
margin-top: 25rpx;
}
.m-top35 {
margin-top: 35rpx;
}
.flow-list .header {
background: #fff;
border-bottom: 1rpx solid #f1f1f1;
padding: 15rpx 0;
position: relative;
}
.flow-list .header text {
font-size: 32rpx;
padding-left: 80rpx;
}
.flow-list .header image {
height: 37rpx;
left: 15px;
margin-top: -18rpx;
position: absolute;
top: 50%;
width: 34rpx;
}
.order-header {
border-bottom: 1rpx solid #f1f1f1;
padding: 15rpx 0;
}
.order-header text {
font-size: 28rpx;
}
.order-header text.title {
color: #333;
}
.order-cont {
justify-content: space-between;
}
.order-cont .order-num text,.order-cont .time {
color: #888;
}
.order-cont .order-num text,.order-cont .order-time text {
color: #777;
font-size: 26rpx;
}
.flow-all-list-cont1 {
font-size: 32rpx;
padding: 10rpx 0;
}

View File

@@ -0,0 +1,86 @@
var t = getApp();
Page({
data: {
dataType: "all",
data: []
},
onLoad: function(t) {
this.data.dataType = t.type || "all", this.setData({
dataType: this.data.dataType
});
},
onShow: function() {
this.getOrderList(this.data.dataType);
},
formatDate: function(t) {
var e = new Date(t), a = e.getFullYear(), r = e.getMonth() + 1;
r = r < 10 ? "0" + r : r;
var d = e.getDate();
d = d < 10 ? "0" + d : d;
var o = e.getHours();
o = o < 10 ? "0" + o : o;
var n = e.getMinutes(), i = e.getSeconds();
return a + "-" + r + "-" + d + " " + o + ":" + (n = n < 10 ? "0" + n : n) + ":" + (i = i < 10 ? "0" + i : i);
},
getOrderList: function(e) {
var a = this;
t._get("user.order_goods/getOrderGoodsList", {
dataType: e
}, function(t) {
t.data.length && wx.pageScrollTo({
scrollTop: 0
});
for (var e = 0; e < t.data.length; e++) t.data[e].aftermarket_apply_date = a.formatDate(1e3 * t.data[e].aftermarket_apply_time);
a.setData(t);
});
},
bindHeaderTap: function(t) {
this.setData({
dataType: t.target.dataset.type
}), this.getOrderList(t.target.dataset.type);
},
cancelOrder: function(e) {
var a = this, r = e.currentTarget.dataset.id;
wx.showModal({
title: "提示",
content: "确认取消订单?",
success: function(e) {
e.confirm && t._post_form("user.order/cancel", {
order_id: r
}, function(t) {
a.getOrderList(a.data.dataType);
});
}
});
},
receipt: function(e) {
var a = this, r = e.currentTarget.dataset.id;
wx.showModal({
title: "提示",
content: "确认收到商品?",
success: function(e) {
e.confirm && t._post_form("user.order/receipt", {
order_id: r
}, function(t) {
a.getOrderList(a.data.dataType);
});
}
});
},
detail: function(t) {
var e = t.currentTarget.dataset.id;
wx.navigateTo({
url: "../aftermarket/create?order_goods_id=" + e
});
},
orderDetail: function(t) {
var e = t.currentTarget.dataset.id;
wx.navigateTo({
url: "../order/detail?order_id=" + e
});
},
onPullDownRefresh: function() {
wx.stopPullDownRefresh();
}
});

View File

@@ -0,0 +1,4 @@
{
"navigationBarTitleText": "售后订单",
"usingComponents": {}
}

View File

@@ -0,0 +1,78 @@
<view class="container m-b5">
<view class="goods-detail-box">
<view class="header f-28 col-3">
<view catchtap="bindHeaderTap" class="{{dataType==='all'?'active':''}}" data-type="all">全部售后</view>
<view bindtap="bindHeaderTap" class="{{dataType==='apply'?'active':''}}" data-type="apply">已申请</view>
<view bindtap="bindHeaderTap" class="{{dataType==='complete'?'active':''}}" data-type="complete">已完成</view>
</view>
<scroll-view scrollY="{{true}}">
<view class="wrapper">
<view wx:if="{{data.length}}">
<view class="m-top20 " wx:for="{{data}}" wx:key="this">
<view class="order-box b-f">
<view class="order-header dis-flex">
<view class="flex-box t-l">
<text class="title">商品信息</text>
</view>
<view class="flex-box t-r">
<text class="cont" wx:if="{{item.refund_status==2}}">已完成</text>
<text class="cont" wx:if="{{item.refund_status==1}}">已申请</text>
</view>
</view>
</view>
<view class="order-box b-f">
<view class="order-cont dis-flex">
<view class="order-num">
<text>退款单号:{{item.refund_no}}</text>
</view>
<view class="order-time">
<text>{{item.create_time}}</text>
</view>
</view>
</view>
<view class="order-box order-img_list">
<view class="order-shop">
<view bindtap="detail" class="order-list-box dis-flex" data-id="{{item.order_goods_id}}">
<view class="left">
<view class="dis-flex">
<view class="order-shop-left">
<image src="{{item.image.file_path}}"></image>
</view>
</view>
</view>
<view class="right p-r">
<text class="goods-number">共1件</text>
<text class="iconfont icon-xiangyoujiantou user-orderJtou"></text>
</view>
</view>
</view>
</view>
<view class="order-box b-f">
<view class="order-btn dis-flex">
<view class="order-left">
<view class="text">
<text>申请时间:</text>
<text class="">{{item.aftermarket_apply_date}}</text>
</view>
</view>
<view class="order-right">
<view class="dis-flex">
<view class="flex-box">
<view bindtap="orderDetail" class="btn-main" data-id="{{item.order_id}}">订单详情</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
<view wx:else>
<view class="yoshop-notcont">
<text class="iconfont icon-ziyuan"></text>
<text class="cont">亲,您还没有售后信息哦!</text>
</view>
</view>
</view>
</scroll-view>
</view>
</view>

View File

@@ -0,0 +1,151 @@
.header {
background: #fff;
border-bottom: 1rpx solid #e4e4e4;
display: flex;
height: 44px;
line-height: 44px;
position: fixed;
top: 0;
width: 100%;
z-index: 100;
}
.header view {
flex: 1;
text-align: center;
}
.header .active {
color: #fd4a5f;
}
.wrapper {
margin-top: 54px;
}
.order-box {
padding: 0 15px;
}
.order-header {
padding-top: 10rpx;
}
.order-header .title {
color: #333;
font-size: 30rpx;
}
.order-header .cont {
color: #fd4a5f;
font-size: 30rpx;
}
.order-cont {
justify-content: space-between;
padding: 15rpx 0;
}
.order-cont .order-num text,.order-cont .order-time text {
color: #777;
font-size: 26rpx;
}
.order-shop {
padding: 16rpx 0;
}
.order-shop-left,.order-shop-left image {
background: #fff;
display: inline-block;
height: 160rpx;
margin-right: 15rpx;
width: 160rpx;
}
.order-shop .num {
float: right;
}
.order-btn {
padding: 18rpx 0;
}
.order-btn .order-left {
flex: 3;
}
.order-btn .order-left .text,.order-btn .order-left text {
font-size: 30rpx;
}
.order-btn .order-left .text {
color: #777;
}
.order-btn .order-right {
flex: 1.5;
}
.order-list-box .left {
flex: 4;
overflow: hidden;
position: relative;
}
.order-list-box .right {
flex: 1;
}
.goods-number {
color: #777;
font-size: 28rpx;
position: absolute;
right: 12px;
top: 35%;
}
.btn-default {
border: 1rpx solid #ccc;
border-radius: 4px;
color: #555;
}
.btn-default,.btn-main {
float: right;
font-size: 28rpx;
padding: 6rpx 20rpx;
}
.btn-main {
border: 1rpx solid #fd4a5f;
border-radius: 4px;
color: #fd4a5f;
margin-left: 10rpx;
}
.user-orderJtou {
color: #888;
font-size: 24rpx;
margin-top: -20rpx;
position: absolute;
right: 0;
top: 50%;
}
.order-img_list {
background: #fff;
border-bottom: 1rpx solid #f1f1f1;
border-top: 1rpx solid #f1f1f1;
}
.order-right-name {
color: #555;
font-size: 30rpx;
left: 180rpx;
line-height: 1.6;
margin-top: -46rpx;
position: absolute;
top: 50%;
width: 100%;
}