空态分出第三种空 —— 「没接通」不许诺,别让人白等
上一版补占位时漏了一件:占位分**两种**空,我只做了一种。 「沟通记录」的注释写着「明说没接,不伪装成暂无数据」,正文却写「与客户、供应商的 邮件和消息都会归到这里」—— 注释和文案自相矛盾。按单归档的投影根本没做,`outbound_mail` 至今只有 channel 建表和 reset-runs 碰过,**任何界面都读不到**。所以在那一屏等下去 永远不会有内容,而文案在请人等。 改成如实说:「往来记录还没接通」。并给 EmptyState 加第三色调,让三种空长得不一样: ok 办完了、清空了 —— 这是好事(待批清空、无未读) brand 还没发生,但通路是通的 —— 等着就会有(还没有任务、还没有成果) muted 通路还没接 —— 等下去也不会有。灰环灰图标,视觉上就不许诺 `muted` 是新加的真色调(不是我编的类名 —— union 与 CSS 一并落地)。 文案也不把人指去「消息」面:那里同样读不到外部邮件,指过去是第二个谎。 顺手把十处空态过了一遍:其余 brand 都名副其实(起单、聚合、纪要、成果的装配都通), 只有沟通记录这一处在许诺。债务簿该条对账。 tsc ✓ eslint ✓ depcruise ✓ 481 测试 ✓ Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KeDBx2PHLavbURXB8LJJ7m
This commit is contained in:
@@ -2950,3 +2950,11 @@
|
||||
.proto-root .jc-fc-h { flex-wrap: wrap; row-gap: 3px; }
|
||||
.proto-root .jc-fc-h b { min-width: 0; flex: 1 1 auto; }
|
||||
.proto-root .jc-fc-open { white-space: nowrap; }
|
||||
|
||||
/* ── 空态第三色调:muted —— 「通路还没接」(补充,非原型)──────────────
|
||||
原型只有 ok(办完了)和 brand(等着就会有)。但还有第三种空:**通路没接**,
|
||||
等下去也不会有内容。它不能跟 brand 一个样 —— 那是在请人白等。
|
||||
灰环 + 灰图标,视觉上就不许诺。 */
|
||||
.proto-root .jc-empty.t-muted .r1 { background: radial-gradient(circle, var(--line-soft), transparent 72%); }
|
||||
.proto-root .jc-empty.t-muted .r2 { background: var(--line-soft); }
|
||||
.proto-root .jc-empty.t-muted .jc-empty-ico { color: var(--ink-3); }
|
||||
|
||||
@@ -192,12 +192,17 @@ export function ViewRegion({ detail, onReplyOrder }: ViewRegionProps) {
|
||||
{openFile !== undefined ? (
|
||||
<FileViewer doc={openFile} />
|
||||
) : view === 'comms' ? (
|
||||
/* 占位:与外界的往来(邮件线程等)还没接进来 —— 明说没接,不装成「暂无数据」 */
|
||||
/*
|
||||
* 「还没接」和「暂无数据」是两回事,占位不能混:
|
||||
* 邮件与通道消息的数据在 `channel` / `event` 里确实有,但按单归档的投影还没做 ——
|
||||
* 所以在这儿等下去也不会自己冒出内容来。说「都会归到这里」就是把没接说成了空,
|
||||
* 人会一直等,或者以为坏了。如实说没接通,再说接通之后是什么样。
|
||||
*/
|
||||
<EmptyState
|
||||
ico="mail"
|
||||
tone="brand"
|
||||
title="还没有往来记录"
|
||||
desc="与客户、供应商的邮件和消息都会归到这里,原件一并存档 —— 谈过什么、什么时候谈的,回头都查得到。"
|
||||
tone="muted"
|
||||
title="往来记录还没接通"
|
||||
desc="跟客户、供应商往来的邮件和消息,目前还没有按单归档到这一屏。接通后连原件一起存:谈过什么、什么时候谈的,回头都查得到。"
|
||||
/>
|
||||
) : view === 'wf' ? (
|
||||
<WfDetail detail={detail} openN={openList.length} doneN={orders.length - openList.length} />
|
||||
|
||||
@@ -190,6 +190,11 @@ export function NoteBand({ children }: { children: ReactNode }) {
|
||||
*
|
||||
* **空态是产品的常态,不是缺陷**:文案一律从用人的角度写「你手上现在没有什么」,
|
||||
* 而不是从开发角度写「这块还没做」—— 后者是给自己看的,前者才是用户要的那句话。
|
||||
*
|
||||
* 三个色调分的是**三种空**,不是三种好看:
|
||||
* - `ok` 办完了、清空了 —— 这是好事(待批清空、无未读)
|
||||
* - `brand` 还没发生,但通路是通的 —— 等着就会有(还没有任务、还没有成果)
|
||||
* - `muted` 通路还没接 —— 等下去也不会有内容。灰着,别让人白等
|
||||
*/
|
||||
export function EmptyState({
|
||||
ico,
|
||||
@@ -199,7 +204,7 @@ export function EmptyState({
|
||||
hint,
|
||||
}: {
|
||||
ico: string;
|
||||
tone: 'ok' | 'brand';
|
||||
tone: 'ok' | 'brand' | 'muted';
|
||||
title: string;
|
||||
desc: string;
|
||||
hint?: string | undefined;
|
||||
|
||||
Reference in New Issue
Block a user