From bef50c2f262cb966fb34528be8cbcbcd7236e7f0 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:09:51 +0800
Subject: [PATCH] =?UTF-8?q?feat(order):=20=E6=94=AF=E6=8C=81=E7=BA=BF?=
=?UTF-8?q?=E4=B8=8B=E4=BB=98=E6=AC=BE=E5=85=88=E5=8F=91=E8=B4=A7=E5=90=8E?=
=?UTF-8?q?=E7=BB=93=E6=AC=BE=E6=B5=81=E7=A8=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 后端移除确认收款时订单状态限制,已发货订单确认收款后自动完成订单
- 管理后台订单列表和操作按钮区分线下付款未付款不同发货状态
- 离线付款弹窗新增发货状态字段及提示文案动态展示
- 订单详情支付状态标签区分已发货待收款状态,更新步骤条显示逻辑
- 小程序端订单状态文本和操作按钮支持线下付款先发货后结款场景
---
.workbuddy/memory/2026-07-17.md | 25 +++++++++++++++++++
.../components/OfflinePaymentModal.vue | 20 +++++++++++----
.../shop/shopOrder/components/orderInfo.vue | 19 ++++++++++++--
src/views/shop/shopOrder/index.vue | 14 +++++++++--
4 files changed, 69 insertions(+), 9 deletions(-)
diff --git a/.workbuddy/memory/2026-07-17.md b/.workbuddy/memory/2026-07-17.md
index 0007fb4..46778c9 100644
--- a/.workbuddy/memory/2026-07-17.md
+++ b/.workbuddy/memory/2026-07-17.md
@@ -95,3 +95,28 @@
4. 订单信息区新增「配送方式」字段展示(使用 DELIVERY_TYPE_MAP)
- deliveryType 值范围来自管理后台 deliveryModal.vue:0=快递配送, 1=无需发货(自提), 2=商家送货
- ⚠️ 初次改错了项目(guilixu-taro),已用 git checkout 还原,正确改动在 xinlong-shop-taro
+
+## 方案A:线下付款先发货后结款(三端同步改动)
+
+### 后端(guilixu-java)
+1. `ShopOrderServiceImpl.confirmOfflinePayment()`:移除 `.eq(ShopOrder::getOrderStatus, 0)` 约束,允许已发货订单确认收款。新增逻辑:若 `deliveryStatus=20`(已发货),确认收款后自动 `setOrderStatus=1` 完成订单。
+2. `ShopOrderController.confirmOfflinePayment()`:更新 `@Operation` 描述和成功消息(不再固定写"进入待发货状态")。
+3. `ShopOrderService.java`:更新 Javadoc 描述。
+4. **注意**:Controller 的 `PUT /shop/shop-order`(update)接口发货时**不校验 payStatus**,仅判断 `deliveryStatus 10→20`,所以未付款的线下订单可以直接通过 update 接口发货(前端改 deliveryStatus 即可)。
+
+### 管理后台(guilixu-admin)
+1. `src/views/shop/shopOrder/index.vue`:线下付款未付款订单(payType=9, payStatus=0, orderStatus=0)分两种情况:
+ - `deliveryStatus=10`:同时显示「确认收款」+「发货」+「关闭」
+ - `deliveryStatus=20`:仅显示「确认收款」(先发货后结款,已发货状态)
+2. `src/views/shop/shopOrder/components/OfflinePaymentModal.vue`:
+ - 新增 `deliveryStatus` 表单字段 + `alertMessage` 计算属性:已发货时提示"确认后订单将自动完成",未发货时提示"进入待发货状态"。
+ - 成功消息动态化:`deliveryStatus===20 ? '已自动完成' : '已进入待发货状态'`
+3. `src/views/shop/shopOrder/components/orderInfo.vue`:
+ - 支付状态标签:`payType=9 && payStatus=0 && deliveryStatus=20` → 蓝色「已发货待收款」
+ - `loadSteps()` 步骤条:线下付款未付款但已发货时,步骤条显示「下单→待收款→已发货」而非停留在「下单」
+
+### 小程序端(xinlong-shop-taro)
+1. `src/pages/store/orders/index.tsx`:
+ - `getStatusText()`:新增「已发货待收款」状态(`payType===9 && !payStatus && deliveryStatus===20`)
+ - `getOrderActions()`:发货按钮条件放宽——线下付款未付款(`payType===9`)也能显示发货按钮(支持先发货后结款)
+ - `OP_DESC`:确认收款描述移除"订单将进入待发货状态"(已不是唯一路径)
diff --git a/src/views/shop/shopOrder/components/OfflinePaymentModal.vue b/src/views/shop/shopOrder/components/OfflinePaymentModal.vue
index 2782f1d..64bdc02 100644
--- a/src/views/shop/shopOrder/components/OfflinePaymentModal.vue
+++ b/src/views/shop/shopOrder/components/OfflinePaymentModal.vue
@@ -13,7 +13,7 @@
@@ -73,7 +73,7 @@