feat: add party-size queueing and call modes

This commit is contained in:
wangxuming
2026-07-16 11:40:34 +08:00
parent 7f751bebae
commit 66951b4dc3
53 changed files with 3348 additions and 533 deletions

View File

@@ -75,7 +75,7 @@ export function VisitorPhonePage() {
function returnToLookup() {
clearStoredPhone();
navigate("/visitor");
navigate("/visitor", { state: { activeTab: "lookup" } });
}
const liveTone = resource.offline ? "offline" : stale || resource.error ? "stale" : "live";
@@ -91,6 +91,9 @@ export function VisitorPhonePage() {
<span className={`visitor-header__meta visitor-header__meta--${liveTone}`}><i aria-hidden="true" />{liveLabel}</span>
</header>
<div className="visitor-content">
<button className="button button--ghost visitor-status-back" type="button" onClick={returnToLookup}>
<span aria-hidden="true"></span>
</button>
{!phone ? (
<FeedbackBanner tone="warning" title="查询会话已失效" action={<button className="button button--secondary button--small" onClick={returnToLookup}></button>}>
@@ -146,7 +149,7 @@ export function VisitorPhonePage() {
>
<span>{ticket.project_name}</span>
<strong>{ticket.ticket_number}</strong>
<small>{statusMeta.label}</small>
<small>{ticket.party_size} · {statusMeta.label}</small>
</button>
</div>
);
@@ -156,7 +159,6 @@ export function VisitorPhonePage() {
) : null}
{selectedTicket ? <VisitorTicketCard data={selectedTicket} lastUpdatedAt={freshnessTime} /> : null}
<button className="button button--secondary visitor-refresh" onClick={resource.refresh}></button>
<button className="button button--ghost visitor-refresh" onClick={returnToLookup}></button>
<p className="visitor-trust"></p>
</>
)}