From 5b934ecd178144338d2b430fe9c1bcd48b04d5be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E6=AF=85?= <1335909236@qq.com> Date: Tue, 19 Aug 2025 09:55:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E5=94=AE=E5=90=8E=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=20-=20=E7=94=B3=E8=AF=B7=E9=80=80=E6=AC=BE=20?= =?UTF-8?q?=E7=A1=AE=E8=AE=A4=E6=94=B6=E8=B4=A7=20=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/afterSale.js | 5 ++ packages/myOrders/afterSale/index.vue | 4 +- packages/myOrders/index/index.vue | 71 +++++++++++++---- .../myOrders/index/popup/afterSale/index.vue | 7 +- .../myOrders/index/popup/refund/refund.vue | 16 ++-- packages/myOrders/pending/index.css | 77 +++++++++++++++++++ packages/myOrders/pending/index.vue | 31 ++++++-- 7 files changed, 180 insertions(+), 31 deletions(-) create mode 100644 api/afterSale.js diff --git a/api/afterSale.js b/api/afterSale.js new file mode 100644 index 00000000..e5af8f5c --- /dev/null +++ b/api/afterSale.js @@ -0,0 +1,5 @@ +export const apiArr = { + afterSaleCreate: "/api/v2/wechat/commodity/after-sales/refund-info/create", //商品订单售后信息创建 + cancelOrConfirm: "/api/v2/wechat/commodity/order/cancel_or_confirm", //商品订单确认收货或取消 + isAllow: "/api/v2/wechat/commodity/after-sales/is-allow", //判断订单是否能申请售后 +}; diff --git a/packages/myOrders/afterSale/index.vue b/packages/myOrders/afterSale/index.vue index 8a75371c..dab0d27a 100644 --- a/packages/myOrders/afterSale/index.vue +++ b/packages/myOrders/afterSale/index.vue @@ -111,10 +111,10 @@ export default { }); }, pendingPage(item) { - // NavgateTo(`/packages/myOrders/pending/index?item=${JSON.stringify(item)}`); //拒绝申请 + NavgateTo(`/packages/myOrders/pending/index?item=${JSON.stringify(item)}`); //拒绝申请 // NavgateTo(`/packages/myOrders/sendBack/index?item=${JSON.stringify(item)}`); //自行寄回 // NavgateTo(`/packages/myOrders/refundOver/index?item=${JSON.stringify(item)}`); //退款成功 - NavgateTo(`/packages/myOrders/changeInfo/index?item=${JSON.stringify(item)}`); //换货 + // NavgateTo(`/packages/myOrders/changeInfo/index?item=${JSON.stringify(item)}`); //换货 } } diff --git a/packages/myOrders/index/index.vue b/packages/myOrders/index/index.vue index ecf915a3..6bd802d9 100644 --- a/packages/myOrders/index/index.vue +++ b/packages/myOrders/index/index.vue @@ -48,18 +48,18 @@ - - + - + 4笔售后 @@ -117,6 +117,7 @@ import { NavgateTo } from '../../../utils'; import { apiArr } from "../../../api/order"; +import { apiArr as afterSaleApi } from "../../../api/afterSale"; import Rated from "../rated/rated.vue"; import AwaitRated from "../awaitRated/awaitRated.vue"; import AfterSale from "../afterSale/index.vue"; @@ -155,6 +156,7 @@ export default { afterSaleGoods: [],//售后商品列表 noSalePopup: false,//无售后商品 showTkPopup: false,//申请退款 + afterSaleItem: '',//操作对象 }; }, methods: { @@ -165,26 +167,43 @@ export default { } }, // 取消订单 - cancelOrder() { + cancelOrder(item) { + this.afterSaleItem = item; this.showPopup = true }, // 处理订单取消事件 handleOrderCancelled(data) { console.log("🚀 ~ handleOrderCancelled ~ 取消原因:", data.reason); + const params = { + order_id: this.afterSaleItem.id, + method: 1, + cancel_reason: data.reason, + } + request(afterSaleApi.cancelOrConfirm, "POST", params).then((res) => { + console.log("🚀 ~ handleOrderCancelled ~ res:", res) + }); + }, // 售后按钮 afterSale(item) { - // 根据条件判断是否可以售后 - if (item) { - console.log("🚀 ~ afterSale ~ item:", item) - this.afterSaleGoods = item.commodity_order_item_list; - this.selectedAsGood = item.commodity_order_item_list[0].id; - this.$refs.afterSalePopupRef.openAfterSalePopup(); - } else { - this.noSalePopup = true - } + this.afterSaleGoods = item.commodity_order_item_list; + this.$refs.afterSalePopupRef.openAfterSalePopup(); + + // // 根据条件判断是否可以售后 + // request(afterSaleApi.isAllow, "POST", { + // order_id: item.id, + // }).then((res) => { + // console.log("🚀 ~ afterSale ~ res:", res) + // if (res.data.is_allow_after_sales) { + // this.afterSaleGoods = res.data.allow_items; + // // this.selectedAsGood = item.commodity_order_item_list[0].id; + // this.$refs.afterSalePopupRef.openAfterSalePopup(); + // } else { + // this.noSalePopup = true + // } + // }); }, // 处理退款提交事件 @@ -194,22 +213,44 @@ export default { // 申请退款 - applyRefund() { + applyRefund(item) { + this.afterSaleItem = item; this.showTkPopup = true }, // 处理退款确认事件 handleRefundConfirmed(data) { + console.log("🚀 ~ handleRefundConfirmed ~ handleRefundConfirmed:", this.afterSaleItem) console.log("🚀 ~ handleRefundConfirmed ~ 退款原因:", data.reason); + const params = { + nick_name: uni.getStorageSync("nickName"), + order_id: this.afterSaleItem.id, + after_sales_type: 1, + after_sales_reason: data.reason, + refund_amount: this.afterSaleItem.total_amount, + order_status: 3 + } + console.log("🚀 ~ handleRefundConfirmed ~ parasm:", params) + request(afterSaleApi.afterSaleCreate, "POST", params).then((res) => { + console.log("🚀 ~ handleRefundConfirmed ~ res:", res) + }); }, // 确认收货 - confirmReceiving() { + confirmReceiving(item) { uni.showModal({ title: "确认收货", content: "确认收货后订单状态将变为【已完成】,如有售后需求可正常申请退款/售后,确定要确认收货吗?", success: (res) => { if (res.confirm) { + const params = { + order_id: item.id, + method: 2, + } + console.log("🚀 ~ confirmReceiving ~ params:", params) + request(afterSaleApi.cancelOrConfirm, "POST", params).then((res) => { + console.log("🚀 ~ handleRefundConfirmed ~ res:", res) + }); } }, }); diff --git a/packages/myOrders/index/popup/afterSale/index.vue b/packages/myOrders/index/popup/afterSale/index.vue index 32ba831a..7ab7672d 100644 --- a/packages/myOrders/index/popup/afterSale/index.vue +++ b/packages/myOrders/index/popup/afterSale/index.vue @@ -25,11 +25,10 @@ 当日达 - {{ item.goods_name - }} + {{ item.goods_name}} - {{ item.goods_desc }} - ¥{{ item.sales_price }}/个 + {{ item.goods_spec }} + ¥{{ item.cost_price }}/个 x{{ item.count }} diff --git a/packages/myOrders/index/popup/refund/refund.vue b/packages/myOrders/index/popup/refund/refund.vue index 681cafea..85d527e1 100644 --- a/packages/myOrders/index/popup/refund/refund.vue +++ b/packages/myOrders/index/popup/refund/refund.vue @@ -4,7 +4,8 @@ 选择退款原因 - + {{ reason }} @@ -24,7 +25,7 @@ export default { showPopup: { type: Boolean, default: false - } + }, }, data() { return { @@ -52,10 +53,15 @@ export default { console.log("🚀 ~ confirmRefund ~ 退款原因:", selectedText); this.$emit('update:showPopup', false); this.$emit('refundConfirmed', { reason: selectedText }); - uni.showToast({ + uni.showModal({ title: '退款申请成功', - content: "将在审核后完成退款", - icon: 'success' + content: '将在审核后完成退款', + showCancel: false, + success: (res) => { + if (res.confirm) { + console.log('用户点击确定'); + } + } }); } }, diff --git a/packages/myOrders/pending/index.css b/packages/myOrders/pending/index.css index 1e854f79..0fb844e2 100644 --- a/packages/myOrders/pending/index.css +++ b/packages/myOrders/pending/index.css @@ -242,4 +242,81 @@ font-size: 28rpx; line-height: 80rpx; text-align: center; +} + +/* 弹窗样式 */ +.popup-content { + width: 600rpx; + background-color: #ffffff; + border-radius: 20rpx; + padding: 40rpx; + display: flex; + flex-direction: column; + align-items: center; +} + +.success-icon { + margin: 20rpx 0; +} + +.check-circle { + width: 120rpx; + height: 120rpx; + background-color: #00c853; + border-radius: 50%; + display: flex; + justify-content: center; + align-items: center; +} + +.check-mark { + color: #ffffff; + font-size: 70rpx; + font-weight: bold; +} + +.popup-title { + font-size: 36rpx; + font-weight: bold; + color: #333333; + margin: 20rpx 0; +} + +.popup-desc { + font-size: 28rpx; + color: #666666; + text-align: center; + line-height: 40rpx; + margin-bottom: 30rpx; + padding: 0 20rpx; +} + +.popup-buttons { + display: flex; + justify-content: space-between; + width: 100%; + margin-top: 20rpx; +} + +.continue-btn { + width: 240rpx; + height: 80rpx; + background-color: #f6f7fb; + color: #333333; + border-radius: 40rpx; + font-size: 28rpx; + line-height: 80rpx; + text-align: center; +} + +.know-btn { + width: 240rpx; + height: 80rpx; + background-color: #ff4d4f; + color: #ffffff; + border: none; + border-radius: 40rpx; + font-size: 28rpx; + line-height: 80rpx; + text-align: center; } \ No newline at end of file diff --git a/packages/myOrders/pending/index.vue b/packages/myOrders/pending/index.vue index 262f0577..1aa8091f 100644 --- a/packages/myOrders/pending/index.vue +++ b/packages/myOrders/pending/index.vue @@ -92,7 +92,25 @@ + + + + + + + + + + 已为您催处理 + 平台客服已帮您催促卖家,07月26日20:49前卖家未处理系统将自动退款。 + + + + + + @@ -110,7 +128,8 @@ export default { data() { return { currentAfterSale: {}, - pickerDefaultDate: new Date() + pickerDefaultDate: new Date(), + showPopup: false }; }, created() { @@ -181,10 +200,12 @@ export default { // 催处理 urgeProcess() { - uni.showToast({ - title: '已发送催处理通知', - icon: 'success' - }); + this.showPopup = true; + }, + + // 关闭弹窗 + closePopup() { + this.showPopup = false; } } };