From 147802dbe9d6ed4a03a4c28dd9827a32e78269c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Fri, 17 Jul 2026 15:51:22 +0800 Subject: [PATCH] =?UTF-8?q?fix(order):=20=E7=BB=9F=E4=B8=80=E7=BA=BF?= =?UTF-8?q?=E4=B8=8B=E4=BB=98=E6=AC=BE=E5=B7=B2=E5=8F=91=E8=B4=A7=E6=9C=AA?= =?UTF-8?q?=E4=BB=98=E6=AC=BE=E7=8A=B6=E6=80=81=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 用户端订单卡的已发货待收款状态调整,线下付款且未付款状态显示红色标识 - 用户端订单详情新增该状态的红色展示和提示信息 - 门店端订单列表状态文案和颜色同步更新,保持与用户端一致 - 门店端订单操作按钮逻辑调整,未付款已发货订单显示“确认完成”按钮 - 解决线下付款先发货后付款订单的状态显示和按钮操作不一致问题 --- .workbuddy/memory/2026-07-17.md | 17 +++++++++++++++++ src/components/common/OrderCard/index.tsx | 3 +++ src/pages/order/detail.tsx | 5 +++++ src/pages/store/orders/index.tsx | 22 +++++++++++++--------- 4 files changed, 38 insertions(+), 9 deletions(-) diff --git a/.workbuddy/memory/2026-07-17.md b/.workbuddy/memory/2026-07-17.md index fe5291f..ddc8192 100644 --- a/.workbuddy/memory/2026-07-17.md +++ b/.workbuddy/memory/2026-07-17.md @@ -111,3 +111,20 @@ - `src/components/common/OrderCard/index.tsx`:`getCardStatus` 把 `deliveryStatus===20/30` 判断提前到 `!payStatus` 之前 - `src/pages/order/detail.tsx`:`getOrderDisplayStatus` 和 `getOrderPhase` 两个函数都做同样调整,物流状态优先于付款状态 - **影响范围**:仅影响"未付款但已发货"的异常场景,正常流程不受影响 + +### 状态描述对齐:已发货待收款(payType=9 + deliveryStatus=20 + 未付款) +- **需求**:线下付款(payType=9)已发货但未确认收款的订单,用户端应与门店端一致显示"已发货待收款"(红色),而非"待收货"(蓝色) +- **修改文件**: + - `src/components/common/OrderCard/index.tsx`:`getCardStatus` 在 `deliveryStatus===20` 之前加 `!payStatus && payType===9 && deliveryStatus===20` → "已发货待收款"(红色) + - `src/pages/order/detail.tsx`:`getOrderDisplayStatus` 在物流状态判断前加 `isOffline && !payStatus && (deliveryStatus===20||30)` → "已发货待收款"(红色,subtitle: 商品已发货,请尽快转账付款) + - `src/pages/store/orders/index.tsx`:`getStatusText` 恢复 `payType===9 && deliveryStatus===20` → "已发货待收款";`getStatusColor` 对应红色 +- **最终统一**:三端状态文案完全对齐 + | 场景 | 用户端列表 | 用户端详情 | 门店端 | + |------|-----------|-----------|--------| + | 线下付款+已发货+未付款 | 已发货待收款(红) | 已发货待收款(红) | 已发货待收款(红) | + | 其他已发货 | 待收货(蓝) | 待收货(蓝) | 待收货(蓝) | + +### 门店端:未付款已发货也显示"确认完成"按钮 +- **问题**:线下付款先发货后结款的订单(未付款+已发货),门店端只有"确认收款"按钮,缺少"确认完成"按钮来上传送达照片 +- **修改**:`getOrderActions` 中"确认完成"按钮的条件从 `order.payStatus`(已付款)改为 `order.deliveryStatus >= 20`(已发货) +- **效果**:线下付款+未付款+已发货的订单,同时显示"确认收款"和"确认完成"两个按钮 diff --git a/src/components/common/OrderCard/index.tsx b/src/components/common/OrderCard/index.tsx index e164c72..c9e6c7f 100644 --- a/src/components/common/OrderCard/index.tsx +++ b/src/components/common/OrderCard/index.tsx @@ -25,6 +25,9 @@ const getCardStatus = (order: ShopOrder): { text: string; color: string } => { // 终态:orderStatus=1 必须最先判断,盖过 deliveryStatus/payStatus if (orderStatus === 1) return { text: '已完成', color: '#0e932e' } + // 线下付款(9)已发货但未确认收款:显示"已发货待收款"(红色),与门店端一致 + if (!payStatus && payType === 9 && deliveryStatus === 20) return { text: '已发货待收款', color: '#ee0a24' } + // 物流状态优先于付款状态(已发货/已收货的订单,即使未付款也显示物流状态) if (deliveryStatus === 20) return { text: '待收货', color: '#4b9cf5' } if (deliveryStatus === 30) return { text: '已收货', color: '#0e932e' } diff --git a/src/pages/order/detail.tsx b/src/pages/order/detail.tsx index b9cd260..662f0d4 100644 --- a/src/pages/order/detail.tsx +++ b/src/pages/order/detail.tsx @@ -71,6 +71,11 @@ const getOrderDisplayStatus = (order: ShopOrder): { title: string; bgColor: stri return { bgColor: '#ee0a24', title: '退款被拒绝', subtitle: '退款申请已被拒绝' } } + // 线下付款已发货但未确认收款:显示"已发货待收款"(红色),与门店端一致 + if (isOffline && !payStatus && (deliveryStatus === 20 || deliveryStatus === 30)) { + return { bgColor: '#ee0a24', title: '已发货待收款', subtitle: '商品已发货,请尽快转账付款' } + } + // 物流状态优先于付款状态(已发货/已收货的订单,即使未付款也显示物流状态) if (deliveryStatus === 20 || deliveryStatus === 30) { return { bgColor: '#4b9cf5', title: '待收货', subtitle: '商品运输中,请注意查收' } diff --git a/src/pages/store/orders/index.tsx b/src/pages/store/orders/index.tsx index 2f5f2c3..a9af7d2 100644 --- a/src/pages/store/orders/index.tsx +++ b/src/pages/store/orders/index.tsx @@ -100,22 +100,25 @@ function parseSendEndImg(raw: string): string[] { function getStatusText(order: ShopOrder): string { if (order.orderStatus === 1) return '已完成' if (order.orderStatus === 2) return '已关闭' + // 线下付款·已发货待收款(先发货后结款) + if (order.payType === 9 && order.deliveryStatus === 20) return '已发货待收款' if (order.payStatus === false || order.payStatus === null) { - // 线下付款·已发货待收款(先发货后结款) - if (order.payType === 9 && order.deliveryStatus === 20) return '已发货待收款' - // 线下付款待确认收款 - if (order.payType === 9) return '待确认收款' - return '待收款' + // 线下付款待确认收款 + if (order.payType === 9) return '待确认收款' + return '待收款' } - if (order.payStatus && order.deliveryStatus === 10) return '待发货' if (order.payStatus && order.deliveryStatus === 20) return '待收货' + if (order.payStatus && order.deliveryStatus === 10) return '待发货' return '进行中' } function getStatusColor(order: ShopOrder): string { if (order.orderStatus === 1) return '#0e932e' if (order.orderStatus === 2) return '#999' + // 已发货待收款:红色(与用户端一致) + if (order.payType === 9 && order.deliveryStatus === 20) return '#ee0a24' if (order.payStatus === false || order.payStatus === null) return '#ee0a24' + if (order.deliveryStatus === 20) return '#4b9cf5' if (order.payStatus) return '#ff7d00' return '#999' } @@ -131,7 +134,7 @@ function getOrderActions(order: ShopOrder): { label: string; type: OpType }[] { const actions: { label: string; type: OpType }[] = [] // 修改金额:仅在确认收款前显示(未付款时才可改价) if (!order.payStatus) { - actions.push({label: '修改金额', type: 'editPrice'}) + actions.push({label: '改价', type: 'editPrice'}) } // 线下付款·待确认收款:显示"确认收款"按钮 if (!order.payStatus && order.payType === 9 && order.orderStatus === 0) { @@ -146,8 +149,9 @@ function getOrderActions(order: ShopOrder): { label: string; type: OpType }[] { actions.push({label: '发货', type: 'ship'}) } } - // 确认完成:仅在确认收款后显示(已付款才能确认完成) - if (order.payStatus) { + // 确认完成:已发货即可确认完成(无论是否付款,线下付款先发货后结款场景也需要上传送达照片) + const shipped = order.deliveryStatus != null && order.deliveryStatus >= 20 + if (shipped) { actions.push({label: '确认完成', type: 'complete'}) } return actions