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

3.5 KiB
Raw Blame History

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:新增 sendStoreIddeliveryUserId 字段(为后端落库铺路)。
  3. orderInfo.vue:发货信息卡片增加「发货门店」「配送店员」展示(可选链,后端返回 storeName/deliveryUserName 后自动生效,否则显示「未填写」)。

关键结论 / 待后端配合

  • 门店、店员 list API 已存在,前端改动零后端依赖即可落地交互。
  • 后端缺口(需补充)shop_order 表需新增 send_store_iddelivery_user_id 字段存储门店/店员关联;否则下拉选了也存不进去。
  • 登录用户 User 模型无 storeId,无法默认锁定当前门店,门店下拉需用户手动选择。
  • 原「发货地址模板」需求因无现成后端接口,改用「门店作为发货地址模板」方案满足(复用门店 name/phone/address

配送方式排序调整

  • 修改 deliveryModal.vue 配送方式 radio 按钮顺序:快递配送→商家送货→无需发货(原:快递配送→无需发货→商家送货),仅调换模板中 radio 排列顺序value 值不变。

后端 Java 改动guilixu-java分两轮

第一轮shop_order 主表

  • ShopOrder.java 实体加持久化字段 sendStoreIddeliveryUserId(→send_store_id/delivery_user_id),及虚拟展示字段 sendStoreName/deliveryUserNameexist=false
  • ShopOrderMapper.xmlselectSqlLEFT 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(名称落在订单主对象上)。
  • SQLALTER TABLE shop_order ADD send_store_id INT, delivery_user_id INT;

第二轮shop_order_delivery 发货单表(用户要求"也写进发货记录表"

  • ShopOrderDelivery.java 实体加持久化字段 sendStoreIddeliveryUserId
  • ShopOrderController.update() 的发货写入分支(无需物流分支 deliveryMethod=20、实物快递分支 deliveryMethod=30、以及补录运单号分支新建 ShopOrderDelivery 时都 setSendStoreId/setDeliveryUserId(值取自 shopOrder 对象,兜底取 shopOrderNow)。
  • 说明:前端发货只调 PUT /shop/shop-order,该接口内部 new ShopOrderDelivery() 并 save 落 shop_order_delivery;主表靠 updateById(shopOrder) 自动落库,发货单表需显式 set 字段。
  • SQLALTER TABLE shop_order_delivery ADD send_store_id INT, delivery_user_id INT;
  • 验证:vue-tsc 前端零报错Java 用 ./mvnw -o compile 后台验证中。