/** * A6 视图模版 —— 议价两屏:正式报价单 / 待放行即发出(AM 07)。 * 这是**唯一会触达外界**的活动:放行一刻要发信、要回写台账,所以那一屏必须说清后果。 */ import { kvCard, noteCard, tableCard, viewShell } from '@sdk'; export const QUOTE_COMPOSED = viewShell({ title: '正式报价单', kicker: 'A6 · 报价议价', tone: 'brand', body: kvCard('报价抬头', [ ['报价单号', 'quoteNo', 'mono'], ['客户编码', 'customerCode', 'mono'], ['型号 PN', 'pn', 'mono'], ]) + kvCard('报价条款', [ ['单价', 'unit_price'], ['交期', 'lead_time'], ['最小包装量 SPQ', 'spq'], ['最小起订量 MOQ', 'moq'], ['贸易条款', 'trade_terms'], ['有效期', 'valid_until'], ]) + noteCard('这一步还没碰外界', '报价单此刻只是草稿。发出动作是写类的,过程中只登记为「动作意向」——入参冻结、等放行,放行前一封信都不会发出去。'), }); export const QUOTE_RELEASE = viewShell({ title: '正式报价单 · 放行即发出', kicker: 'A6 · 成果预览', tone: 'danger', body: tableCard( '本单报价', 'mine:quote_negotiate.formal_quote', [ ['报价单号', 'quote_no', 'mono'], ['型号', 'pn', 'mono'], ['单价', 'unit_price'], ['交期', 'lead_time'], ], ) + noteCard( '按下放行会发生什么', '① 落地预检先跑:交付物齐备、动作意向可执行、授权在契约边界内 —— 预检不过不发卡。' + '② 放行通过即刻落地:台账回写 + 出站发送(报价单发给客户),动作附幂等键。' + '③ 落地收敛后输出口才发射 —— 下游只见落地完成的任务;已成动作留存不回滚。' + '④ 出口三选一(成交 / 有异议 / 拒绝)恰发一口,随放行一并确认,G4 网关按它分流。', ), });