xtraderClient/docs/views/TradeDetail.md

43 lines
2.8 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.

# TradeDetail.vue
**路径**`src/views/TradeDetail.vue`
**路由**`/trade-detail/:id`name: `trade-detail`
## 功能用途
交易详情页展示单个市场的分时图、订单簿、Comments/Top Holders/Activity 标签页以及右侧交易组件Buy/Sell、Merge/Split。支持桌面端与移动端布局移动端使用底部 Yes/No 栏 + 弹窗。
## 核心能力
- 分时图ECharts 渲染,支持 Past、时间粒度切换
- 订单簿:`OrderBook` 组件,通过 **ClobSdk** 对接 CLOB WebSocket 实时数据(全量快照、增量更新、成交推送);份额接口按 6 位小数传1_000_000 = 1 share`priceSizeToRows``mergeDelta` 会将 raw 值除以 `ORDER_BOOK_SIZE_SCALE` 转为展示值
- 交易:`TradeComponent`,传入 `market``initialOption``positions`(持仓数据)
- 持仓列表:通过 `getPositionList` 获取当前市场持仓,传递给 `TradeComponent` 用于计算可合并份额
- 限价订单:通过 `getOrderList` 获取当前市场未成交限价单,支持撤单
- 移动端:底部栏 + `v-bottom-sheet` 嵌入 `TradeComponent`
- Merge/Split通过 `TradeComponent` 或底部菜单触发,成功后监听 `mergeSuccess`/`splitSuccess` 事件刷新持仓
- **401 权限错误**:加载详情失败时,通过 `useAuthError().formatAuthError` 统一提示「请先登录」或「权限不足」
- **Sell 弹窗 emitsOptions 竞态**`sellDialogRenderContent` 延迟 350ms 卸载 TradeComponent等 v-dialog transition 完成,避免 Vue patch 时组件实例为 null 的 `emitsOptions` 错误
- **底部栏 slot 竞态**`tradeSheetRenderContent` 延迟 50ms 挂载、350ms 卸载 TradeComponent避免 v-bottom-sheet transition 期间 VTextField 触发「Slot default invoked outside of the render function」警告
## 使用方式
- 从首页卡片点击进入,或直接访问 `/trade-detail/123`
- 路由参数 `id` 为 Event ID用于 `findPmEvent`
## 持仓刷新机制
- **下单成功**`TradeComponent` 触发 `orderSuccess``onOrderSuccess()` 刷新持仓和未成交订单
- **合并成功**`TradeComponent` 触发 `mergeSuccess``onMergeSuccess()` 刷新持仓,显示 toast 提示
- **拆分成功**`TradeComponent` 触发 `splitSuccess``onSplitSuccess()` 刷新持仓
持仓刷新调用 `loadMarketPositions()`,通过 `/clob/position/getPositionList` 接口获取最新持仓数据,并根据 `tokenId` 匹配 Yes/No 方向。
## 扩展方式
1. **订单簿**:已通过 `sdk/clobSocket.ts` 的 ClobSdk 对接 CLOB WebSocket使用 **Yes/No token ID** 订阅 `price_size_all``price_size_delta``trade` 消息
2. **分时图**:可接入 WebSocket 推送的图表数据
3. **Comments**:对接评论接口,替换 placeholder
4. **Top Holders**:对接持仓接口
5. **Activity**:已对接 CLOB `trade` 消息,实时追加成交记录