From e9249c910f988e2ee36d5ead9dd3681be87ae336 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 04:11:45 +0800 Subject: [PATCH] =?UTF-8?q?feat(shopOrder):=20=E5=A2=9E=E5=8A=A0=E5=8F=91?= =?UTF-8?q?=E8=B4=A7=E9=97=A8=E5=BA=97=E4=B8=8E=E9=85=8D=E9=80=81=E5=BA=97?= =?UTF-8?q?=E5=91=98=E9=80=89=E6=8B=A9=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在发货类型非“无需发货”时新增发货门店下拉选择,支持加载门店列表 - 选择门店后自动回填发货地址及快递配送发货人信息 - 商家送货时新增配送店员下拉筛选,支持根据门店联动加载配送人员 - 配送店员选择后自动回填发货人姓名和电话 - 表单校验新增发货门店必填及配送店员在商家送货时必填规则 - 更新提交数据结构,包含发货门店ID与配送店员ID字段 - 订单详情页增加发货门店及配送店员展示字段 - 调整配送方式单选按钮顺序,快递配送与商家送货前置,无需发货后置 --- .workbuddy/memory/2026-07-17.md | 24 +++ src/api/shop/shopOrder/model/index.ts | 8 + .../shopOrder/components/deliveryModal.vue | 138 +++++++++++++++++- .../shop/shopOrder/components/orderInfo.vue | 18 +++ 4 files changed, 186 insertions(+), 2 deletions(-) create mode 100644 .workbuddy/memory/2026-07-17.md diff --git a/.workbuddy/memory/2026-07-17.md b/.workbuddy/memory/2026-07-17.md new file mode 100644 index 0000000..e223f57 --- /dev/null +++ b/.workbuddy/memory/2026-07-17.md @@ -0,0 +1,24 @@ +# 2026-07-17 工作日志 + +## 订单发货功能改进(shopOrder / deliveryModal) + +分析了订单发货弹窗(`src/views/shop/shopOrder/components/deliveryModal.vue`)三种配送方式,按用户确认的改进方案实施了前端改动: + +### 改动文件 +1. `deliveryModal.vue`(核心) + - 新增「发货门店」下拉(复用 `listShopStore`),选中后自动回填:快递配送→发货人=门店名/电话=门店电话/地址=门店地址;商家送货→地址=门店地址。 + - 商家送货(`deliveryType===2`)新增「配送店员」二级联动下拉(复用 `listShopStoreUser({storeId})`),选中店员自动回填发货人=店员名/联系方式=店员电话。 + - 校验:发货门店必填(`deliveryType!==1`);配送店员必填(仅 `deliveryType===2`)。 + - 提交时附带 `sendStoreId` / `deliveryUserId`。 +2. `api/shop/shopOrder/model/index.ts`:新增 `sendStoreId`、`deliveryUserId` 字段(为后端落库铺路)。 +3. `orderInfo.vue`:发货信息卡片增加「发货门店」「配送店员」展示(可选链,后端返回 `storeName`/`deliveryUserName` 后自动生效,否则显示「未填写」)。 + +### 关键结论 / 待后端配合 +- 门店、店员 list API 已存在,前端改动零后端依赖即可落地交互。 +- **后端缺口(需补充)**:`shop_order` 表需新增 `send_store_id`、`delivery_user_id` 字段存储门店/店员关联;否则下拉选了也存不进去。 +- 登录用户 `User` 模型无 `storeId`,无法默认锁定当前门店,门店下拉需用户手动选择。 +- 原「发货地址模板」需求因无现成后端接口,改用「门店作为发货地址模板」方案满足(复用门店 name/phone/address)。 + +## 配送方式排序调整 + +- 修改 `deliveryModal.vue` 配送方式 radio 按钮顺序:快递配送→商家送货→无需发货(原:快递配送→无需发货→商家送货),仅调换模板中 radio 排列顺序,value 值不变。 diff --git a/src/api/shop/shopOrder/model/index.ts b/src/api/shop/shopOrder/model/index.ts index 255b079..70ae74f 100644 --- a/src/api/shop/shopOrder/model/index.ts +++ b/src/api/shop/shopOrder/model/index.ts @@ -111,6 +111,14 @@ export interface ShopOrder { sendPhone?: string; // 发货地址 sendAddress?: string; + // 发货门店id(快递配送=发货仓库,商家送货=配送门店) + sendStoreId?: number; + // 配送店员id(商家送货时记录具体配送人员) + deliveryUserId?: number; + // 发货门店名称(后端联表返回) + sendStoreName?: string; + // 配送店员名称(后端联表返回) + deliveryUserName?: string; // 优惠类型:0无、1抵扣优惠券、2折扣优惠券、3、VIP月卡、4VIP年卡,5VIP次卡、6VIP会员卡、7IC月卡、8IC年卡、9IC次卡、10IC会员卡、11免费订单、12VIP充值卡、13IC充值卡、14VIP季卡、15IC季卡 couponType?: number; // 优惠说明 diff --git a/src/views/shop/shopOrder/components/deliveryModal.vue b/src/views/shop/shopOrder/components/deliveryModal.vue index 5d1c43d..9dc936b 100644 --- a/src/views/shop/shopOrder/components/deliveryModal.vue +++ b/src/views/shop/shopOrder/components/deliveryModal.vue @@ -22,8 +22,8 @@ 快递配送 - 无需发货 商家送货 + 无需发货 @@ -87,6 +87,49 @@