import type { PositionEstimateDetailBody } from '@/api/position-estimate-report' export type PositionEstimateCellDetailSource = 'prediction' | 'transaction' export type PositionEstimateCellDetailLink = { index: number position: string source: PositionEstimateCellDetailSource title: string } type LinkableAmountField = Exclude function prediction(index: number, position: string, title: string) { return { index, position, source: 'prediction', title } as const } function transaction(index: number, position: string, title: string) { return { index, position, source: 'transaction', title } as const } /** * 移动端结果字段与老 JSP 可点击单元格的唯一映射。 * position 原样传给 140103007,index 只保留老页面的标题顺序语义。 */ export const POSITION_ESTIMATE_CELL_DETAIL_BY_FIELD = { hgPredAmtIn: prediction(0, 'C5', '回购(拆借)到期、CD发行、投资及到期收入报告金额明细'), hgPredAmtOut: prediction(1, 'D5', '回购(拆借)到期、CD发行、投资及到期支出报告金额明细'), hgUnverifyAmtIn: prediction(2, 'C6', '回购(拆借)到期、CD发行、投资及到期收入未核销金额明细'), hgUnverifyAmtOut: prediction(3, 'D6', '回购(拆借)到期、CD发行、投资及到期支出未核销金额明细'), zqPredAmtIn: prediction(4, 'C7', '债券承销收入报告金额明细'), zqPredAmtOut: prediction(5, 'D7', '债券承销支出报告金额明细'), zqUnverifyAmtIn: prediction(6, 'C8', '债券承销收入未核销金额明细'), zqUnverifyAmtOut: prediction(7, 'D8', '债券承销支出未核销金额明细'), pjPredAmtIn: prediction(8, 'C9', '票据业务收入报告金额明细'), pjPredAmtOut: prediction(9, 'D9', '票据业务支出报告金额明细'), pjUnverifyAmtIn: prediction(10, 'C10', '票据业务收入未核销金额明细'), pjUnverifyAmtOut: prediction(11, 'D10', '票据业务支出未核销金额明细'), tgPredAmtIn: prediction(12, 'C11', '托管业务收入报告金额明细'), tgPredAmtOut: prediction(13, 'D11', '托管业务支出报告金额明细'), tgUnverifyAmtIn: prediction(14, 'C12', '托管业务收入未核销金额明细'), tgUnverifyAmtOut: prediction(15, 'D12', '托管业务支出未核销金额明细'), tyPredAmtIn: prediction(16, 'C13', '同业业务收入报告金额明细'), tyPredAmtOut: prediction(17, 'D13', '同业业务支出报告金额明细'), tyUnverifyAmtIn: prediction(18, 'C14', '同业业务收入未核销金额明细'), tyUnverifyAmtOut: prediction(19, 'D14', '同业业务支出未核销金额明细'), fzhPredAmtIn: prediction(20, 'C15', '支行、营业部大额收付报告合计(3亿及以上)收入报告金额明细'), fzhPredAmtOut: prediction(21, 'D15', '支行、营业部大额收付报告合计(3亿及以上)支出报告金额明细'), fzhUnverifyAmtIn: prediction(22, 'C16', '支行、营业部大额收付报告合计(3亿及以上)收入未核销金额明细'), fzhUnverifyAmtOut: prediction(23, 'D16', '支行、营业部大额收付报告合计(3亿及以上)支出未核销金额明细'), lcPredAmtIn: prediction(24, 'C17', '理财业务发生额及到期收入报告金额明细'), lcPredAmtOut: prediction(25, 'D17', '理财业务发生额及到期支出报告金额明细'), lcUnverifyAmtIn: prediction(26, 'C18', '理财业务发生额及到期收入未核销金额明细'), lcUnverifyAmtOut: prediction(27, 'D18', '理财业务发生额及到期支出未核销金额明细'), qtPredAmtIn: prediction(28, 'C19', '其他收入报告金额明细'), qtPredAmtOut: prediction(29, 'D19', '其他支出报告金额明细'), qtUnverifyAmtIn: prediction(30, 'C20', '其他收入未核销金额明细'), qtUnverifyAmtOut: prediction(31, 'D20', '其他支出未核销金额明细'), xjAmtIn: transaction(32, 'C24', '现金出入库、净额轧差业务、财政准备金退缴报文【606报文】收入明细'), xjAmtOut: transaction(33, 'D24', '现金出入库、净额轧差业务、财政准备金退缴报文【606报文】支出明细'), unVerifyAmtIn1: transaction(34, 'C25', '1亿以下未核销大/小额业务流水【除606以外的报文】收入明细'), unVerifyAmtOut1: transaction(35, 'D25', '1亿以下未核销大/小额业务流水【除606以外的报文】支出明细'), unVerifyAmtIn: transaction(36, 'C26', '1亿及以上未核销大/小额业务流水【除606以外的报文】收入明细'), unVerifyAmtOut: transaction(37, 'D26', '1亿及以上未核销大/小额业务流水【除606以外的报文】支出明细'), zjPredAmtIn: prediction(38, 'C31', '今日资金交易新业务收付合计收入报告金额明细'), zjPredAmtOut: prediction(39, 'D31', '今日资金交易新业务收付合计支出报告金额明细'), zjUnverifyAmtIn: prediction(40, 'C32', '今日资金交易新业务收付合计收入未核销金额明细'), zjUnverifyAmtOut: prediction(41, 'D32', '今日资金交易新业务收付合计支出未核销金额明细'), } satisfies Partial> const detailLinks = Object.values(POSITION_ESTIMATE_CELL_DETAIL_BY_FIELD) export function getPositionEstimateCellDetailByField(field: string) { return POSITION_ESTIMATE_CELL_DETAIL_BY_FIELD[ field as keyof typeof POSITION_ESTIMATE_CELL_DETAIL_BY_FIELD ] } export function getPositionEstimateCellDetailByPosition(position: string) { const normalizedPosition = position.trim().toUpperCase() return detailLinks.find((item) => item.position === normalizedPosition) }