Files
guilixu-admin/.workbuddy/memory/2026-07-17.md
赵忠林 2745f4b0db feat(shopOrder): 增加发货门店与配送店员选择功能
- 在发货类型非“无需发货”时新增发货门店下拉选择,支持加载门店列表
- 选择门店后自动回填发货地址及快递配送发货人信息
- 商家送货时新增配送店员下拉筛选,支持根据门店联动加载配送人员
- 配送店员选择后自动回填发货人姓名和电话
- 表单校验新增发货门店必填及配送店员在商家送货时必填规则
- 更新提交数据结构,包含发货门店ID与配送店员ID字段
- 订单详情页增加发货门店及配送店员展示字段
- 调整配送方式单选按钮顺序,快递配送与商家送货前置,无需发货后置
2026-07-17 04:17:57 +08:00

40 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 值不变。
## 后端 Java 改动guilixu-java分两轮
### 第一轮shop_order 主表
- `ShopOrder.java` 实体加持久化字段 `sendStoreId``deliveryUserId`(→`send_store_id`/`delivery_user_id`),及虚拟展示字段 `sendStoreName`/`deliveryUserName`exist=false
- `ShopOrderMapper.xml``selectSql``LEFT JOIN shop_store f` / `LEFT JOIN shop_store_user g` 并 SELECT `f.name as sendStoreName, g.name as deliveryUserName`,让订单详情联带回门店/店员名称。
- 前端 `orderInfo.vue` 展示路径从 `form.shopOrderDelivery.xxx` 改为 `form.sendStoreName`/`form.deliveryUserName`(名称落在订单主对象上)。
- SQL`ALTER TABLE shop_order ADD send_store_id INT, delivery_user_id INT;`
### 第二轮shop_order_delivery 发货单表(用户要求"也写进发货记录表"
- `ShopOrderDelivery.java` 实体加持久化字段 `sendStoreId``deliveryUserId`
- `ShopOrderController.update()` 的发货写入分支(无需物流分支 deliveryMethod=20、实物快递分支 deliveryMethod=30、以及补录运单号分支新建 `ShopOrderDelivery` 时都 `setSendStoreId`/`setDeliveryUserId`(值取自 `shopOrder` 对象,兜底取 `shopOrderNow`)。
- 说明:前端发货只调 `PUT /shop/shop-order`,该接口内部 `new ShopOrderDelivery()` 并 save 落 `shop_order_delivery`;主表靠 `updateById(shopOrder)` 自动落库,发货单表需显式 set 字段。
- SQL`ALTER TABLE shop_order_delivery ADD send_store_id INT, delivery_user_id INT;`
- 验证:`vue-tsc` 前端零报错Java 用 `./mvnw -o compile` 后台验证中。