From 3b7b765a3d83941db5d077acdb17f297f18ec850 Mon Sep 17 00:00:00 2001
From: wangfukang <15630117759@163.com>
Date: Mon, 22 Jun 2026 18:23:45 +0800
Subject: [PATCH] 1
---
package2/group/groupBuyList.vue | 4 +-
package2/group/groupBuySingle.vue | 138 ++++++++++++++++++++++++--
package2/shop/afterService.vue | 160 +++++++++++++++++++++++-------
3 files changed, 252 insertions(+), 50 deletions(-)
diff --git a/package2/group/groupBuyList.vue b/package2/group/groupBuyList.vue
index c18914c..fa26454 100644
--- a/package2/group/groupBuyList.vue
+++ b/package2/group/groupBuyList.vue
@@ -188,7 +188,7 @@
-
宿舍群正在等一个饭搭子
@@ -681,7 +681,7 @@
}
.title-sreach {
- width: 75%;
+ width: 68%;
display: flex;
align-items: flex-start;
height: 188rpx;
diff --git a/package2/group/groupBuySingle.vue b/package2/group/groupBuySingle.vue
index 2a94acb..d4c67cd 100644
--- a/package2/group/groupBuySingle.vue
+++ b/package2/group/groupBuySingle.vue
@@ -306,12 +306,20 @@
-
-
-
-
+
+
+
@@ -464,8 +472,8 @@
- 面对面团
+
+ 面对面团
{{isStoreGroupOrder ? '发起到店团' : '发起拼团'}}¥{{selectedGroupRule && selectedGroupRule.groupPrice ? parseFloat(selectedGroupRule.groupPriceAndMore).toFixed(2) : '0.00'}}
@@ -1776,7 +1784,7 @@
},
submitCartCheckout() {
if (this.cartItems.length === 0) {
- this.$refs.warnPopup.open()
+ this.$refs.selectGoodsPopup.open()
return;
}
@@ -1929,6 +1937,14 @@
return name;
},
changeValue(type) {
+ let checkedMoreBuy = this.moreBuyList.find(item => item.isChecked && item.id == this.checkMoreBuyIndex);
+ if (!checkedMoreBuy) {
+ uni.showToast({
+ title: '请先选择搭配小食商品',
+ icon: 'none'
+ });
+ return;
+ }
if (type == 'plus') {
this.vModelValue += 1
} else {
@@ -2117,7 +2133,7 @@
position: fixed;
top: 0;
left: 0;
- width: 100%;
+ width: 75%;
display: flex;
align-items: center;
z-index: 100;
@@ -2580,6 +2596,99 @@
font-weight: 700;
}
+ .select-goods-popup {
+ position: relative;
+ width: 580rpx;
+ padding: 58rpx 44rpx 46rpx;
+ box-sizing: border-box;
+ border-radius: 44rpx;
+ background:
+ radial-gradient(circle at 18% 12%, rgba(166, 255, 234, 0.42) 0, rgba(166, 255, 234, 0) 128rpx),
+ radial-gradient(circle at 82% 22%, rgba(216, 255, 122, 0.38) 0, rgba(216, 255, 122, 0) 150rpx),
+ linear-gradient(180deg, #ffffff 0%, #f6fffb 100%);
+ text-align: center;
+ box-shadow: 0 28rpx 80rpx rgba(0, 35, 28, 0.18);
+ overflow: hidden;
+ }
+
+ .select-goods-close {
+ position: absolute;
+ top: 22rpx;
+ right: 22rpx;
+ width: 52rpx;
+ height: 52rpx;
+ border-radius: 50%;
+ background: rgba(244, 251, 249, 0.95);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ z-index: 2;
+ }
+
+ .select-goods-decor {
+ position: absolute;
+ border-radius: 999rpx;
+ background: linear-gradient(135deg, rgba(216, 255, 122, 0.68), rgba(166, 255, 234, 0.72));
+ filter: blur(1rpx);
+ }
+
+ .decor-left {
+ width: 150rpx;
+ height: 46rpx;
+ top: 22rpx;
+ left: -44rpx;
+ transform: rotate(-18deg);
+ }
+
+ .decor-right {
+ width: 190rpx;
+ height: 54rpx;
+ right: -62rpx;
+ bottom: 118rpx;
+ transform: rotate(-22deg);
+ }
+
+ .select-goods-icon {
+ width: 108rpx;
+ height: 108rpx;
+ margin: 0 auto 22rpx;
+ border-radius: 36rpx;
+ background: linear-gradient(135deg, #e3ff96 0%, #a6ffea 100%);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ box-shadow: 0 16rpx 32rpx rgba(98, 229, 190, 0.25);
+ transform: rotate(-6deg);
+ }
+
+ .select-goods-title {
+ color: #153a35;
+ font-size: 34rpx;
+ font-weight: 900;
+ line-height: 48rpx;
+ }
+
+ .select-goods-text {
+ margin-top: 18rpx;
+ color: #334943;
+ font-size: 32rpx;
+ font-weight: 900;
+ line-height: 46rpx;
+ }
+
+ .select-goods-btn {
+ width: 320rpx;
+ height: 82rpx;
+ margin: 42rpx auto 0;
+ border-radius: 999rpx;
+ background: linear-gradient(90deg, #d8ff7a 0%, #8ff5d8 100%);
+ color: #153a35;
+ font-size: 28rpx;
+ font-weight: 900;
+ line-height: 82rpx;
+ box-shadow: 0 16rpx 34rpx rgba(98, 229, 190, 0.28);
+ }
+
.num-plus {
width: 56rpx;
height: 56rpx;
@@ -3407,6 +3516,15 @@
color: #153a35 !important;
box-shadow: 0 12rpx 24rpx rgba(98, 229, 190, 0.22);
font-weight: 900;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 18rpx;
+ line-height: normal;
+ }
+
+ .group-face-text {
+ line-height: 1;
}
@keyframes checkoutTextShine {
diff --git a/package2/shop/afterService.vue b/package2/shop/afterService.vue
index 7ef72bc..2737d6b 100644
--- a/package2/shop/afterService.vue
+++ b/package2/shop/afterService.vue
@@ -29,11 +29,23 @@
{{item.status == 0?'待退款':item.status == 3?'待售后':""}}
-
-
+
+
退款原因: {{item.refundTypeStatus == 1?'商家原因':item.refundTypeStatus == 2?'配送原因':item.refundTypeStatus == 3?'商家/配送都有原因(需要退配送费)':item.refundTypeStatus == 4?'平台退款':""}}
退款类型: {{item.refundType == 1?'退商品':item.refundType == 2?'退配送费':item.refundType == 3?'全额退款':""}}
+
+ 退款/售后原因:
+ {{item.reason || '无'}}
+
+
+ 退款/售后原因图片:
+
+
+
+
退款金额: ¥{{item.refundAmount}}
@@ -43,11 +55,11 @@
查看订单
-
- 不同意
+
+ {{submitLoading ? '处理中' : '不同意'}}
-
- 同意
+
+ {{submitLoading ? '处理中' : '同意'}}
@@ -168,7 +180,8 @@
goodsList:[],
orderDetail:{},
returnData:[],
- returnCount:0
+ returnCount:0,
+ submitLoading:false
}
},
filters:{
@@ -247,7 +260,7 @@
}else{
this.searchCountForm.linkId = uni.getStorageSync('shopId')
}
- this.tui.request("/mall/refund/page", "POST", this.searchCountForm, false, false).then((res) => {
+ return this.tui.request("/mall/refund/page", "POST", this.searchCountForm, false, false).then((res) => {
if (res.code == 200 && res.result != null) {
that.returnCount = res.result.records.length;
that.returnData = res.result.records
@@ -259,9 +272,26 @@
uni.hideLoading();
}).catch((res) => {});
},
+ getPictureList(pictures) {
+ if (pictures == null || pictures === '') return [];
+ if (Array.isArray(pictures)) {
+ return pictures.filter(item => item != null && item !== '');
+ }
+ return String(pictures).split(',').map(item => item.trim()).filter(item => item !== '');
+ },
+ previewRefundImage(pictures, index) {
+ const urls = this.getPictureList(pictures);
+ if (urls.length === 0) return;
+ uni.previewImage({
+ urls,
+ current: urls[index]
+ });
+ },
returnAmountAllow(item,status){
+ if (this.submitLoading) return;
let titleText = status == 1 ? '确定同意该申请吗?' : '确定拒绝该申请吗?';
//退款提示
+ this.groupOrderIdList = [];
if(item.groupOrderIds != null && item.groupOrderIds != ''){
titleText += '该订单为面对面配送单,所有参团订单将同步处理';
@@ -271,8 +301,6 @@
this.groupOrderIdList.push(this.returnData[i]);
}
}
- }else{
- this.groupOrderIdList = []
}
// 2. 弹出确认框
@@ -281,56 +309,68 @@
content: titleText,
success: (res) => {
if (res.confirm) {
+ this.submitLoading = true;
+ uni.showLoading({
+ title: '处理中',
+ mask: true
+ });
+ let requestList = [];
if(this.groupOrderIdList != [] && this.groupOrderIdList.length > 0){
for(let i = 0; i < this.groupOrderIdList.length;i++){
- this.processReturn(this.groupOrderIdList[i], status);
+ requestList.push(this.processReturn(this.groupOrderIdList[i], status));
}
}else{
- this.processReturn(item, status);
+ requestList.push(this.processReturn(item, status));
}
+ Promise.all(requestList).then((messageList) => {
+ this.tui.toast(messageList[0] || '操作成功');
+ return this.getReturnCount();
+ }).catch((message) => {
+ this.tui.toast(message || '操作失败');
+ }).then(() => {
+ this.submitLoading = false;
+ uni.hideLoading();
+ });
}
}
});
},
processReturn(item,status){
- let url = ''
+ let returnFormData = {}
//退款
if(item.status == 0){
//不同意
if(status == 0){
- this.returnFormData.status = 2
+ returnFormData.status = 2
}else{
- this.returnFormData.status = 1
+ returnFormData.status = 1
}
}else if(item.status == 3){
//售后
if(status == 0){
- this.returnFormData.status = 5
+ returnFormData.status = 5
}else{
- this.returnFormData.status = 4
+ returnFormData.status = 4
}
}
- this.returnFormData.id = item.id;
- this.returnFormData.linkId = item.linkId;
- this.returnFormData.orderId = item.orderId;
- this.returnFormData.deliveryType = item.mallOrder.deliveryType;
- this.returnFormData.orderType = item.mallOrder.orderType;
- this.returnFormData.refundAmount = item.refundAmount;
- this.returnFormData.refundType = item.refundType;
- this.returnFormData.refundTypeStatus = item.refundTypeStatus;
+ returnFormData.id = item.id;
+ returnFormData.linkId = item.linkId;
+ returnFormData.orderId = item.orderId;
+ returnFormData.deliveryType = item.mallOrder.deliveryType;
+ returnFormData.orderType = item.mallOrder.orderType;
+ returnFormData.refundAmount = item.refundAmount;
+ returnFormData.refundType = item.refundType;
+ returnFormData.refundTypeStatus = item.refundTypeStatus;
- let that = this
- this.tui.request("/mall/refund/allowOrReject", "POST", this.returnFormData, false, false).then((res) => {
+ return this.tui.request("/mall/refund/allowOrReject", "POST", returnFormData, false, false).then((res) => {
if (res.code == 200) {
- that.tui.toast(res.message);
- this.getReturnCount()
- that.$forceUpdate();
+ return res.message;
} else {
- that.tui.toast(res.message);
- return;
+ return Promise.reject(res.message);
}
- uni.hideLoading();
- }).catch((res) => {});
+ }).catch((res) => {
+ return Promise.reject(res && res.message ? res.message : res);
+ });
},
back() {
uni.navigateBack()
@@ -342,23 +382,27 @@