xtraderClient/docs/views/TradeDetail.md

2.3 KiB
Raw Blame History

TradeDetail.vue

路径src/views/TradeDetail.vue
路由/trade-detail/:idname: trade-detail

功能用途

交易详情页展示单个市场的分时图、订单簿、Comments/Top Holders/Activity 标签页以及右侧交易组件Buy/Sell、Merge/Split。支持桌面端与移动端布局移动端使用底部 Yes/No 栏 + 弹窗。

核心能力

  • 分时图ECharts 渲染,支持 Past、时间粒度切换
  • 订单簿:OrderBook 组件,通过 ClobSdk 对接 CLOB WebSocket 实时数据(全量快照、增量更新、成交推送)
  • 交易:TradeComponent,传入 marketinitialOptionpositions(持仓数据)
  • 持仓列表:通过 getPositionList 获取当前市场持仓,传递给 TradeComponent 用于计算可合并份额
  • 限价订单:通过 getOrderList 获取当前市场未成交限价单,支持撤单
  • 移动端:底部栏 + v-bottom-sheet 嵌入 TradeComponent
  • Merge/Split通过 TradeComponent 或底部菜单触发,成功后监听 mergeSuccess/splitSuccess 事件刷新持仓
  • 401 权限错误:加载详情失败时,通过 useAuthError().formatAuthError 统一提示「请先登录」或「权限不足」

使用方式

  • 从首页卡片点击进入,或直接访问 /trade-detail/123
  • 路由参数 id 为 Event ID用于 findPmEvent

持仓刷新机制

  • 下单成功TradeComponent 触发 orderSuccessonOrderSuccess() 刷新持仓和未成交订单
  • 合并成功TradeComponent 触发 mergeSuccessonMergeSuccess() 刷新持仓,显示 toast 提示
  • 拆分成功TradeComponent 触发 splitSuccessonSplitSuccess() 刷新持仓

持仓刷新调用 loadMarketPositions(),通过 /clob/position/getPositionList 接口获取最新持仓数据,并根据 tokenId 匹配 Yes/No 方向。

扩展方式

  1. 订单簿:已通过 sdk/clobSocket.ts 的 ClobSdk 对接 CLOB WebSocket使用 Yes/No token ID 订阅 price_size_allprice_size_deltatrade 消息
  2. 分时图:可接入 WebSocket 推送的图表数据
  3. Comments:对接评论接口,替换 placeholder
  4. Top Holders:对接持仓接口
  5. Activity:已对接 CLOB trade 消息,实时追加成交记录