feat(store): 在订单列表页新增下单时间展示

- 订单卡片头部左侧新增「下单时间:YYYY-MM-DD HH:mm」显示,位于订单号下方
- 状态标签右侧对齐方式由垂直居中调整为顶端对齐,适配两行文本
- 新增辅助函数 formatOrderTime 兼容 ISO 和空格分隔时间格式,仅保留到分钟
- 复用后台返回的 ShopOrder.createTime 字段,无需后端改动,保证时间数据准确同步
This commit is contained in:
2026-07-23 02:03:50 +08:00
parent c6e022f815
commit 0cc0d089e9
3 changed files with 80 additions and 2 deletions

View File

@@ -0,0 +1,7 @@
# 2026-07-23 工作日志
## 门店订单列表补充「下单时间」
- 文件:`src/pages/store/orders/index.tsx`
- 在订单卡片头部左侧新增「下单时间YYYY-MM-DD HH:mm」位于订单号下方状态标签仍在右侧`items-center``items-start` 适配两行)。
- 数据字段:复用 `ShopOrder.createTime`(创建时间=下单时间,接口本来就有返回,列表排序也用它,无需改后端)。
- 新增辅助函数 `formatOrderTime(raw)`:兼容 `2026-07-23T02:00:18``2026-07-23 02:00:18` 两种格式,仅保留到分钟。

View File

@@ -0,0 +1,55 @@
2026年7月17日 下午改动问题总结
================================================
1. 门店订单页 — 付款凭证(paymentVoucher)未显示
文件: src/pages/store/orders/index.tsx
问题: renderOrderCard 中只渲染了送达凭证(sendEndImg),遗漏了付款凭证(paymentVoucher)
修复: 在买家备注下方、送达凭证上方新增付款凭证展示区(绿色背景),支持点击预览大图
2. 门店订单页 — 改价功能来回调整
文件: src/pages/store/orders/index.tsx
问题: 先把独立「改价」按钮和弹窗合并到「确认收款」弹窗中
修复: 下午用户要求改回来恢复独立的改价按钮橙色bg-orange-500和弹窗确认收款弹窗去掉实付金额输入框
3. 门店订单页 — 拆分"确认完成"为"送达"和"确认完成"
文件: src/pages/store/orders/index.tsx
问题: 新增deliver送达操作已发货但无送达照片时显示上传照片后按钮自动隐藏
修复: complete确认完成仅已付款可操作只标记orderStatus=1。清除误用deliveryStatus=30表示"已送达"的逻辑
4. 状态文案对齐 — "已发货待收款"
文件: src/pages/store/orders/index.tsx, src/components/common/OrderCard/index.tsx, src/pages/order/detail.tsx
问题: 线下付款(payType=9)+已发货+未付款 → 三端统一显示"已发货待收款"(红色)
修复: 其他已发货 → "待收货"(蓝色)
5. 修复未付款已发货订单状态显示错误
文件: src/components/common/OrderCard/index.tsx, src/pages/order/detail.tsx
问题: !payStatus判断优先于deliveryStatus导致"未付款但已发货"显示为"待付款"
修复: 物流状态判断提前到付款状态之前
6. 门店中心 — 右上角扫码登录PC后台
文件: src/pages/store/center/index.tsx
问题: 顶部渐变区右上角新增扫码图标,点击调起微信扫码 → 解析token → confirmWechatQRLogin确认PC端登录
7. 订单详情页 — "过期时间"改为"送达时间"
文件: src/pages/order/detail.tsx
问题: 信息区「过期时间」(expirationTime)改为「送达时间」(deliveryTime)
8. 新用户注册后首次加购购物车不刷新
文件: src/passport/login.tsx, src/passport/register.tsx, src/passport/sms-login.tsx, src/pages/shop/cart.tsx等
问题: 登录/注册后只存了storage未同步UserContext → isLoggedIn仍为false → 购物车不刷新
修复: 登录/注册后调loginUser()/syncFromStorage()同步React状态
9. 收货地址编辑不加载旧数据
文件: src/pages/user/address-edit.tsx, src/api/shop/shopUserAddress/index.ts
问题: API路径PUT /shop/shop-user-address/{id} → PUT /shop/shop-user-address后端无/{id}路径导致404
修复: setFormData改为merge模式防止null覆盖
10. 地图选择首次打开列表不显示
文件: src/pages/user/address-edit.tsx
问题: 鸿蒙手机首次打开chooseLocation时POI列表空白
修复: 先getLocation获取当前位置传入地图确保首次打开就在用户位置附近
11. 订单详情页金额明细0隐藏问题
文件: src/pages/order/detail.tsx
问题: {order.reducePrice && Number(order.reducePrice) > 0}当reducePrice为0时React渲染了文本"0"
修复: 改为{Number(order.reducePrice || 0) > 0 && (...)}

View File

@@ -84,6 +84,17 @@ function formatDateTime(date: Date): string {
return `${y}-${m}-${d} ${h}:${mi}:${s}`
}
/** 格式化下单时间为「YYYY-MM-DD HH:mm」兼容 "2026-07-23T02:00:18" 与 "2026-07-23 02:00:18" */
function formatOrderTime(raw?: string): string {
if (!raw) return ''
const s = raw.replace('T', ' ').trim()
const parts = s.split(' ')
if (parts.length < 2) return s
const timeParts = parts[1].split(':')
const hhmm = `${timeParts[0]}:${timeParts[1] || '00'}`
return `${parts[0]} ${hhmm}`
}
/** 解析 sendEndImg兼容 JSON 数组(新格式)和逗号分隔(旧格式) */
function parseSendEndImg(raw: string): string[] {
if (!raw || !raw.trim()) return []
@@ -585,8 +596,13 @@ export default function StoreOrdersPage() {
return (
<View key={order.orderId} className='bg-white rounded-xl mx-3 mt-3 p-4'>
{/* 订单头部 */}
<View className='flex justify-between items-center mb-3'>
<View className='flex justify-between items-start mb-3'>
<View className='flex flex-col'>
<Text className='text-xs text-gray-400'>{order.orderNo}</Text>
{order.createTime ? (
<Text className='text-xs text-gray-400 mt-1'>{formatOrderTime(order.createTime)}</Text>
) : null}
</View>
<Text className='text-xs' style={{color: getStatusColor(order)}}>
{getStatusText(order)}
</Text>