feat: 订单轮询 + 竞态防护 + 性能优化 (OrdersPage 完善)

- startPolling: 基于 Map<orderId, timer> 的多订单并发轮询
    幂等启动(重复点击防重)+ 局部 state 更新 + 终态全量刷新
  - fetchOrders: AbortController 防竞态,切换筛选/分页时取消旧请求
    AbortError 静默吞掉,不污染 error state
  - columns: useMemo 稳定引用,依赖 [token.colorPrimary, handleContinuePay]
  - 卸载清理: abort + clearTimeout 双重防护
  - 文档同步: CHANGELOG / TODO 更新至 0.0.21
This commit is contained in:
2026-06-15 19:58:25 +08:00
parent 06e6486aa3
commit 72a0290693
3 changed files with 94 additions and 19 deletions

View File

@@ -32,6 +32,20 @@
- uploadValidation 内联到 ImageInputcontrols/ 不再混工具函数)
- 删除空占位 Test3.tsx
### 支付系统 & 订单明细
- **RechargePage antd 6.x 适配**`InputNumber.addonAfter``Space.Compact``Space direction``orientation`,消除弃用警告
- **OrdersPage 订单明细页面**`/orders`,方案 B — 独立订单管理页):
- 状态筛选 Segmented全部/待支付/已支付/已过期/支付失败)+ 分页 Table
- "继续支付"操作:打开支付 URL + `startPolling` 单订单轮询
- `pollingRef: Map<orderId, timer>` 管理多订单并发轮询,幂等启动(重复点击防重)
- 局部 state 更新 + 终态全量刷新(`fetchOrders`
- `AbortController` 防竞态:切换筛选/分页时取消旧请求
- `columns` 使用 `useMemo` 稳定引用
- 错误态 Result + 重试按钮
- **PageDispatcher**:注册 `/orders` 路由width: 820, height: 640新增 `CLOSE_PAGE` / `PAGE_LOCK` 事件监听
- **payments.ts**:支付 API 模块类型体系(`CreateOrderResponseBody``OrderListResponseBody` / `OrderInfoResponseBody` 名义类型),`PaymentAPI.getOrdersListInfo` 支持 `AbortSignal`
---
## 0.0.202026-06-12