From b950fb6085d2100faa1b1459f8faf219325f8c78 Mon Sep 17 00:00:00 2001 From: wangfukang <15630117759@163.com> Date: Mon, 6 Jul 2026 11:21:08 +0800 Subject: [PATCH] 1 --- package1/buyFood/buyFood.vue | 13 +++++-- package1/order/orderDetail.vue | 62 +++++++++++++++++++++++++++++----- package1/order/orderList.vue | 44 +++++++++++++++++++----- 3 files changed, 99 insertions(+), 20 deletions(-) diff --git a/package1/buyFood/buyFood.vue b/package1/buyFood/buyFood.vue index 805e72d..2edf306 100644 --- a/package1/buyFood/buyFood.vue +++ b/package1/buyFood/buyFood.vue @@ -145,7 +145,7 @@ 指定配送员 - + {{ assignedWorker ? assignedWorker.workerName + ' ' + assignedWorker.mobile : '配送员' }} @@ -601,7 +601,8 @@ addressBookVisible: false, freeOrderEffectVisible: false, freeOrderAmount: '0.00', - navigatingFromPayPopup: false + navigatingFromPayPopup: false, + isNavigatingToWorkerList: false } }, components: { @@ -772,6 +773,7 @@ }, watch: {}, onShow() { + this.isNavigatingToWorkerList = false; this.menuButtonInfo = uni.getMenuButtonBoundingClientRect() this.initAddress() this.updateImmediateTimeStr(); @@ -1027,6 +1029,7 @@ this.submitOrderToBackend(); }, goDetail() { + if (this.isNavigatingToWorkerList) return; let shopArea = this.shopItem.shopArea || ''; let putArea = this.formData.address ? this.formData.address.areaId : ''; if(shopArea == '' || putArea == ''){ @@ -1036,8 +1039,12 @@ }) return; } + this.isNavigatingToWorkerList = true; uni.navigateTo({ - url: `/package1/index/deliveryPersonList?orderType=0&shopAreaId=${shopArea}&putAreaId=${putArea}` + url: `/package1/index/deliveryPersonList?orderType=0&shopAreaId=${shopArea}&putAreaId=${putArea}`, + fail: () => { + this.isNavigatingToWorkerList = false; + } }) }, openCouponPopup() { diff --git a/package1/order/orderDetail.vue b/package1/order/orderDetail.vue index 8d0e4c6..5107bf8 100644 --- a/package1/order/orderDetail.vue +++ b/package1/order/orderDetail.vue @@ -826,11 +826,7 @@ ¥{{payAmountText}} - - 确认付款 - + @@ -847,6 +843,11 @@ alt="" style="width: 36rpx;height: 36rpx;" /> + + 确认付款 + @@ -1423,24 +1424,67 @@ } return false; }, - returnPopupProp(item) { + shouldCheckCancelOrderLatest(item) { + return item && item.deliveryType == 1 && item.status == 2; + }, + getOrderDetailForCancelCheck(id) { + return this.tui.request("/mall/order/detail/" + id, "GET", {}, false, true, true).then((res) => { + if (res.code == 200) { + return res.result; + } + this.tui.toast(res.message || "订单状态校验失败"); + return null; + }).catch(() => { + this.tui.toast("订单状态校验失败"); + return null; + }); + }, + async returnPopupProp(item) { + let latestItem = item; this.payData = item; if (item.status == 0) { this.cancelUnpaidOrder(item); return; } - if (this.isNoResponsibilityCancel(item)) { + if (this.shouldCheckCancelOrderLatest(item)) { + let latestDetail = await this.getOrderDetailForCancelCheck(item.id); + if (!latestDetail) { + return; + } + let isNoResponsibility = this.isNoResponsibilityCancel(latestDetail); + if (!isNoResponsibility && latestDetail.status != item.status) { + this.getOrderDetail(latestDetail.id); + uni.showModal({ + title: '提示', + content: '订单状态已发生变化,请确认是否取消订单', + confirmText: '继续退款', + success: (res) => { + if (res.confirm) { + this.openResponsibilityCancelPopup(latestDetail); + } + } + }); + return; + } + latestItem = latestDetail; + this.payData = latestDetail; + } + if (this.isNoResponsibilityCancel(latestItem)) { this.$refs.noResponsibilityCancelPopup.open('center'); return; } + this.openResponsibilityCancelPopup(latestItem); + }, + openResponsibilityCancelPopup(item) { + this.payData = item; if (this.payData.otherOrder == 1) { this.refundType = 3 this.refundTypeStatus = 2 this.sellTime = 3 } - if(this.orderDetail.deliveryInfo && this.orderDetail.deliveryInfo.arriveTime){ - this.arriveTime = this.orderDetail.deliveryInfo.arriveTime ? this.formatTimeText(this.orderDetail.deliveryInfo.arriveTime) : '未到店' + if(this.payData.deliveryInfo && this.payData.deliveryInfo.arriveTime){ + this.arriveTime = this.payData.deliveryInfo.arriveTime ? this.formatTimeText(this.payData.deliveryInfo.arriveTime) : '未到店' } if (this.payData.shopMakeTime != null && this.payData.deliveryInfo && this.payData.deliveryInfo.acceptTime) { const date1 = new Date(this.payData.deliveryInfo.acceptTime); diff --git a/package1/order/orderList.vue b/package1/order/orderList.vue index 029ceb9..a55d9af 100644 --- a/package1/order/orderList.vue +++ b/package1/order/orderList.vue @@ -128,21 +128,21 @@ {{item.otherOrder == 1 ? '快递/跑腿' : item.otherOrder == 3 ? '鱼塘订单' : item.shopName}} - + - - - - {{item.shopAddress}} + + + + {{item.shopAddress}} - - - {{item.receiverAddress}} + + + {{item.receiverAddress}} 下单时间:{{item.createTime | formatTime}} @@ -950,6 +950,7 @@ .goods-img { width: 160rpx; height: 160rpx; + flex-shrink: 0; position: relative; background: #fff; border-radius: 24rpx; @@ -962,9 +963,36 @@ height: 100%; border-radius: 24rpx; display: block; + object-fit: cover; } } + .errand-goods-card { + align-items: flex-start; + box-sizing: border-box; + } + + .errand-goods-content { + flex: 1; + min-width: 0; + text-align: left; + } + + .errand-address-row { + align-items: flex-start; + } + + .errand-address-icon { + flex: 0 0 50rpx; + } + + .errand-address-text { + flex: 1; + min-width: 0; + word-break: break-all; + white-space: normal; + } + .goods-card { display: flex; align-items: center;