// ============ 视图数据类型(合并接口 + 行情后,供 View 消费) ============ // 保留原始字段,不在数据层预先格式化/预先判断涨跌色;HTTP 占位行允许行情字段暂缺。 export interface RankItem { code: string; market: string; name: string; price?: number; // 涨跌幅(%数值,如 3.21 表示 +3.21%)。行情推送里固定字段,任何 Tab 下都存在, // 用于「最新价」列的取色,也是 涨幅/跌幅 Tab 第三列的数据来源。 price_chg?: number; // 涨速/跌速(%数值)。仅 riseSpeed/fallSpeed Tab 下有值。 chg_speed?: number; // 成交额(原始数值,未换算单位)。仅 turnOver Tab 下有值。 turnover?: number; // 日增仓(原始数值,未换算单位)。仅 increPosit Tab 下有值。 incre_posit?: number; } // 当前市场排名卡片的完整展示数据;网络/行情更新后整体替换以触发 UI 刷新。 export interface CardData { tableList: RankItem[]; } export type MarketRankingHqValue = string | number; // 对齐真实鸿蒙行情返回行:通过行情字段 ID 获取当前合约的值。 export class MarketRankingTableRow { private values: Map = new Map(); set(fieldId: number, value: MarketRankingHqValue): void { this.values.set(fieldId, value); } get(fieldId: number): MarketRankingHqValue | undefined { return this.values.get(fieldId); } } // 对齐真实鸿蒙行情 TableData:每个 tableRows 元素代表一份合约行情。 export class MarketRankingTableData { tableRows: MarketRankingTableRow[] = []; addRow(row: MarketRankingTableRow): void { this.tableRows.push(row); } } export interface MarketRankingHqRequestParams { protocolId: string; pageId: string; onlineId: string; columnOrder: string; requestDic: string; } export interface TabMetric { id: string; label: ResourceStr; api: string; // HTTP 接口 quote_type 参数用 hqId: number; // 行情订阅 sortid 用 hasChildren: boolean; // Vue 用 children 数组本身判断,这里简化为布尔标记 } export interface PeriodRange { id: string; label: ResourceStr; api: string; hqId: number; } // ============ 后端接口原始响应类型(recommend_futures) ============ // 对应 docs/cards/interfaces.md「一、HTTP 接口 - 1. 市场排名列表」 export interface RecommendFuturesItem { contract_code: string; contract_name: string; market: string; } export interface RecommendFuturesResponse { code: number; data: RecommendFuturesItem[]; }