/**
* 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 网关按它分流。',
),
});