- 解决鸿蒙手机首次打开地图选择不显示 POI 列表,先获取当前位置传入地图 - 修正收货地址编辑接口路径,改为无 id 的 PUT /shop/shop-user-address - 防御性合并旧地址数据,避免 null 字段覆盖初始值 - 新用户注册和登录后同步更新 UserContext 状态,确保页面刷新购物车数据 - 各页面 useDidShow 内增加从 storage 同步用户状态,解决状态不同步问题 - 优化地图选择初始化逻辑,提升用户体验 - 保证购物车、商品详情和首页登录状态及时同步更新
4.0 KiB
4.0 KiB
2026-07-17 工作日志
门店订单管理页改造(src/pages/store/orders/index.tsx)
1. 删除订单改为关闭订单
- 原"删除订单"按钮调用
removeShopOrder(物理删除),改为"关闭订单"调用updateShopOrder({ orderId, orderStatus: 2 })(逻辑关闭) - 确认弹窗文案从"删除后无法恢复"改为"关闭后无法恢复"
- 移除
removeShopOrder导入,新增confirmOfflinePayment导入
2. 待付款订单加确认收款按钮
- 背景:线下付款(payType=9)且未付款的订单,门店需要"确认收款"功能,与后台管理(guilixu-admin)对齐
- 后端接口:
PUT /shop/shop-order/confirm-offline-payment/{id}?remarks=xxx&paymentVoucher=xxx- 后端
ShopOrderController.confirmOfflinePayment()→ShopOrderServiceImpl.confirmOfflinePayment() - 校验:payType必须为9(线下付款)、orderStatus不能为2(已关闭)、不能重复确认
- 确认后设置 payStatus=true、payTime=now(),可选保存 remarks(merchantRemarks) 和 paymentVoucher
- 后端
- 前端API:在
src/api/shop/shopOrder/index.ts新增confirmOfflinePayment(id, remarks?, paymentVoucher?)函数- 注意:Taro 的
request.put不支持params参数,需手动拼接 query string
- 注意:Taro 的
- ShopOrder Model:新增
paymentVoucher?: string字段 - 页面改动:
- OpType 从
'pay'|'complete'|'editPrice'改为'confirmPay'|'complete'|'editPrice' getOrderActions新增条件:!payStatus && payType===9 && orderStatus===0→ 显示"确认收款"按钮- 弹窗新增备注 Textarea(仅 confirmPay 显示),凭证图片限制1张(confirmPay),必填校验
submitOperation新增 confirmPay 分支,调用confirmOfflinePaymentAPI- 新增
payRemarksstate
- OpType 从
3. 订单详情页金额明细0隐藏(src/pages/order/detail.tsx)
- Bug:React 经典陷阱
{order.reducePrice && Number(order.reducePrice) > 0 && (...)},当 reducePrice 为数字 0 时,0 && ...短路求值为 0,React 渲染文本"0" - 修复:改为
{Number(order.reducePrice || 0) > 0 && (...)},始终返回 boolean
验证
npx taro build --type weapp构建成功
地址/购物车问题修复
5. 地图选择首次打开列表不显示(src/pages/user/address-edit.tsx)
- 问题:鸿蒙手机首次打开
Taro.chooseLocation时地图 POI 列表不显示,需拖动才出现 - 根因:未传入经纬度时地图默认定位到北京,鸿蒙系统不会自动获取用户位置
- 修复:调
chooseLocation前先Taro.getLocation({ type: 'gcj02' })获取当前位置,将 latitude/longitude 传给地图,确保首次打开就在用户位置附近,POI 列表立即加载
6. 收货地址编辑不加载旧数据
- Bug 1(API 路径不匹配):前端
updateShopUserAddress调PUT /shop/shop-user-address/{id},但后端@PutMapping()无/{id}路径 → 404- 修复:改为
PUT /shop/shop-user-address(去掉/{id},id 通过 body 传递)
- 修复:改为
- Bug 2(加载防御):
setFormData(addr)直接替换 state,若后端返回 null 字段会覆盖初始''- 修复:改为
setFormData(prev => ({...prev, ...addr, name: addr.name || '', ...}))保证字段非 null
- 修复:改为
7. 新用户注册后首次加购购物车不刷新
- 根因:注册页
register.tsx和登录页login.tsx只调saveStorageByLoginUser()存 storage,未调UserContext.loginUser()更新 React 状态 →isLoggedIn仍为false→ 购物车页useDidShow中if (isLoggedIn) refresh()不执行 - 修复:
register.tsx和login.tsx:saveStorageByLoginUser后加loginUser(token, user)同步 UserContextsms-login.tsx:loginBySms后加syncFromStorage()同步状态- 防御性措施:
cart.tsx、product-detail.tsx、index/index.tsx的useDidShow加syncFromStorage()确保页面显示时从 storage 同步用户状态
验证
npx taro build --type weapp构建成功