fix: surface active beds on elder records

This commit is contained in:
2026-07-02 17:43:00 -07:00
parent 9480030391
commit c181e6fbdd
5 changed files with 135 additions and 53 deletions

View File

@@ -56,6 +56,10 @@ function formatDateTime(value: string): string {
return new Date(value).toLocaleString("zh-CN");
}
function formatBedLabel(elder: Pick<Elder, "room" | "bed">): string {
return elder.room && elder.bed ? `${elder.room}-${elder.bed}` : "-";
}
function getRiskLabel(elder: Elder): { label: string; variant: "danger" | "warning" | "success" } {
if (elder.careLevel === "intensive") {
return { label: "红色重点", variant: "danger" };
@@ -136,6 +140,7 @@ export function EldersClient({ initialElders, permissions }: EldersClientProps):
const safePage = Math.min(page, pageCount);
const pageStart = (safePage - 1) * PAGE_SIZE;
const visibleElders = filteredElders.slice(pageStart, pageStart + PAGE_SIZE);
const editingElder = editingId ? elders.find((elder) => elder.id === editingId) : undefined;
function updateField<K extends keyof ElderInput>(key: K, value: ElderInput[K]): void {
setForm((current) => ({ ...current, [key]: value }));
@@ -359,9 +364,7 @@ export function EldersClient({ initialElders, permissions }: EldersClientProps):
</p>
</Table.Cell>
<Table.Cell className="px-4 py-3">{CARE_LEVEL_LABELS[elder.careLevel]}</Table.Cell>
<Table.Cell className="px-4 py-3 text-muted-foreground">
{elder.room}-{elder.bed}
</Table.Cell>
<Table.Cell className="px-4 py-3 text-muted-foreground">{formatBedLabel(elder)}</Table.Cell>
<Table.Cell className="px-4 py-3 text-muted-foreground">
{elder.primaryContact} / {elder.phone}
</Table.Cell>
@@ -490,16 +493,11 @@ export function EldersClient({ initialElders, permissions }: EldersClientProps):
/>
</div>
</div>
<div className="grid gap-3 sm:grid-cols-2">
<label className="grid gap-1.5 text-sm font-medium">
<Input value={form.room} onChange={(event) => updateField("room", event.target.value)} />
</label>
<label className="grid gap-1.5 text-sm font-medium">
<Input value={form.bed} onChange={(event) => updateField("bed", event.target.value)} />
</label>
</div>
{isEditing ? (
<div className="rounded-md border bg-secondary/30 px-3 py-2 text-sm">
{editingElder ? formatBedLabel(editingElder) : "-"}
</div>
) : null}
<label className="grid gap-1.5 text-sm font-medium">
<Input value={form.primaryContact} onChange={(event) => updateField("primaryContact", event.target.value)} />
@@ -543,7 +541,7 @@ export function EldersClient({ initialElders, permissions }: EldersClientProps):
<div className="flex flex-col gap-4">
{deleteTarget ? (
<div className="rounded-md border border-red-200 bg-red-50 p-3 text-sm text-red-700">
{deleteTarget.name}{deleteTarget.room}-{deleteTarget.bed}
{deleteTarget.name}{formatBedLabel(deleteTarget)}
{formatDateTime(deleteTarget.updatedAt)}
</div>
) : null}