2026-03-15 21:08:51 +08:00

56 lines
1.9 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.

# OrderBook.vue
**路径**`src/components/OrderBook.vue`
## 功能用途
订单簿组件,展示 Asks卖单与 Bids买单列表含价格、份额、累计总量以及横向进度条表示深度。支持通过 props 接收 CLOB WebSocket 实时数据,无 props 时回退到 mock 数据。
## 核心能力
- Trade Up / Trade Down Tab
- Asks、Bids 列表,带 `HorizontalProgressBar` 深度条(买卖两边共用同一最大值 `maxOrderBookTotal`,取两边累计总量中的最大值,便于对比深度)
- Last price、Spread 展示
- Live / 连接中 状态展示(均通过 i18n 国际化)
## Props
| 属性 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| asks | `{ price: number; shares: number }[]` | `[]` | 卖单列表(价格单位:¢) |
| bids | `{ price: number; shares: number }[]` | `[]` | 买单列表 |
| lastPrice | `number` | - | 最新成交价(¢) |
| spread | `number` | - | 买卖价差(¢) |
| loading | `boolean` | `false` | 是否连接中 |
| connected | `boolean` | `false` | 是否已连接 WebSocket |
## 使用方式
```vue
<!-- 由父组件传入 CLOB 数据 TradeDetail.vue -->
<OrderBook
:asks="orderBookAsks"
:bids="orderBookBids"
:last-price="clobLastPrice"
:spread="clobSpread"
:loading="clobLoading"
:connected="clobConnected"
/>
<!-- props 时使用 mock 数据 -->
<OrderBook />
```
## 国际化
组件内所有展示文案均使用 `trade.*``activity.live` 键:
- `trade.orderBook``trade.orderBookConnecting``trade.orderBookPrice``trade.orderBookShares``trade.orderBookTotal`
- `trade.orderBookAsks``trade.orderBookBids``trade.orderBookLast``trade.orderBookSpread`
- `activity.live`(实时状态)
## 扩展方式
1. **点击下单**:点击某行价格时,将价格传入 TradeComponent
2. **Trade Up/Down**:可按 Yes/No Token 切换展示不同订单簿