fix market ranking state and quote rendering

This commit is contained in:
clz
2026-07-27 15:19:28 +08:00
parent c05fc03fd8
commit 30d9154086
4 changed files with 126 additions and 68 deletions
@@ -1,7 +1,12 @@
import { AbsRowData, RowData, TableData } from '@b2b/hq_table';
import { TableRequestClient } from '@b2c/lib_baseui';
import { TableConstants as BaseTableConstants, TableRequestClient } from '@b2c/lib_baseui';
import { RequestHelper, StuffTableStruct } from '@kernel/lib_communication';
import { applyStandardPriceToTableData } from 'biz_quote';
import {
QuoteCustomSettingManager,
StandardPriceType,
StandardPriceTypeHelper,
applyStandardPriceToTableData,
} from 'biz_quote';
import {
CardData,
RankItem,
@@ -16,6 +21,17 @@ import { TableConstants } from '../../market-ranking/TableConstants';
const FRAME_ID = 2201;
const PAGE_ID = 4106;
const REQUIRED_IDS_FOR_STANDARD_PRICE: number[] = [
BaseTableConstants.DATA_ID_CODE_4,
BaseTableConstants.DATA_ID_PRICE,
BaseTableConstants.DATA_ID_ZF,
BaseTableConstants.DATA_ID_ZD,
BaseTableConstants.DATA_ID_MARKET,
BaseTableConstants.DATA_ID_MARKET_OLD,
StandardPriceTypeHelper.FIELD_ZUO_SHOU,
StandardPriceTypeHelper.FIELD_JIN_KAI,
StandardPriceTypeHelper.FIELD_ZUO_JIE,
];
export type MarketRankingCardDataListener = (cardData: CardData) => void;
@@ -107,7 +123,9 @@ class MarketRankingTableRequestClient extends TableRequestClient {
return value;
}
if (typeof value === 'string' && value !== '' && value !== '--') {
const result: number = Number(value);
// 行情解析及标准价换算后的字段可能带 "%" 等展示后缀。
// 与仓库内其他行情卡片保持一致,读取开头的有效数值。
const result: number = parseFloat(value);
return Number.isNaN(result) ? undefined : result;
}
return undefined;
@@ -142,14 +160,12 @@ export class MarketRankingHqRequestClient {
const sortId: number = this.getSortId(primaryIdx, secondaryIdx);
const fieldIds: number[] = [
TableConstants.DATA_ID_NAME,
TableConstants.DATA_ID_PRICE,
TableConstants.DATA_ID_CODE_4,
TableConstants.DATA_ID_MARKET,
TableConstants.DATA_ID_ZF,
TableConstants.DATA_ID_PRE_PRICE,
TableConstants.DATA_ID_OPEN_PRICE,
TableConstants.DATA_ID_JSJ,
];
REQUIRED_IDS_FOR_STANDARD_PRICE.forEach((fieldId: number): void => {
if (!fieldIds.includes(fieldId)) {
fieldIds.push(fieldId);
}
});
if (!fieldIds.includes(sortId)) {
fieldIds.push(sortId);
}
@@ -182,11 +198,15 @@ export class MarketRankingHqRequestClient {
): string {
const metric: TabMetric = TAB_METRICS[primaryIdx];
const sortOrder: string = metric.sortOrder;
const computeMode: StandardPriceType =
QuoteCustomSettingManager.getInstance().getStandardPriceType();
return `\r\nsortid=${sortId}\r\n` +
`sortorder=${sortOrder}\r\n` +
`push=1\r\n` +
`dataitem=${fieldIds.map((fieldId: number): string => `${fieldId},`).join('')}\r\n` +
`codelist=${this.formatCodeList(contracts)}\r\n` +
`update=1\r\n` +
`computemode=${computeMode}\r\n` +
`scenario=qht_qihuo_sort\r\n` +
`precision=1\r\n` +
`pushtime=2.5\r\n`;