diff --git a/app/src/pages/admin/AdminPage.tsx b/app/src/pages/admin/AdminPage.tsx index 4b9c36a..d07b249 100644 --- a/app/src/pages/admin/AdminPage.tsx +++ b/app/src/pages/admin/AdminPage.tsx @@ -9,9 +9,10 @@ import { import { Badge, Button, Card, CardBody, CardHeader, Dialog, Empty, Input, useToast } from '@/components/ui'; import { fmtDateTime, fmtSize } from '@/lib/format'; -type Filter = 'all' | 'valid' | 'used' | 'disabled'; +type Filter = 'all' | 'valid' | 'used' | 'gone' | 'disabled'; function InviteStatus({ i }: { i: InviteRow }) { + if (i.used_by && i.holder_gone) return 已销户; if (i.used_by) return 已使用; return i.valid ? 可用 : 已停用; } @@ -86,10 +87,10 @@ export function AdminPage() { }); const invites = useMemo(() => invitesQ.data?.invites ?? [], [invitesQ.data]); - const users = usersQ.data?.users ?? []; const filtered = useMemo(() => invites.filter((i) => { if (filter === 'valid') return i.valid && !i.used_by; - if (filter === 'used') return !!i.used_by; + if (filter === 'used') return !!i.used_by && !i.holder_gone; + if (filter === 'gone') return !!i.used_by && !!i.holder_gone; if (filter === 'disabled') return !i.valid && !i.used_by; return true; }), [invites, filter]); @@ -158,7 +159,7 @@ export function AdminPage() { -
+ @@ -193,7 +194,7 @@ export function AdminPage() { )}
- {([['all', '全部'], ['valid', '可用'], ['used', '已使用'], ['disabled', '已停用']] as [Filter, string][]).map(([k, label]) => ( + {([['all', '全部'], ['valid', '可用'], ['used', '已使用'], ['gone', '已销户'], ['disabled', '已停用']] as [Filter, string][]).map(([k, label]) => ( @@ -275,26 +276,6 @@ export function AdminPage() { )} - - - - - {users.length ? ( -
- {users.map((u) => ( -
- {u.username} - {u.is_admin && 管理员} - {u.devices} 设备 · {u.records} 记录 · {fmtSize(u.attachment_bytes)} -
- ))} -
- ) : ( - } title="暂无用户" /> - )} -
-
-
setDelUser(null)} @@ -339,7 +320,7 @@ export function AdminPage() { }>
将删除现有 demo 账号及其全部数据,然后重新创建并播种全套虚拟演示数据 - (个人信息档案、16 条足迹、4 学期成绩、简历内容)。 + (个人信息档案、25 条足迹(含 10 项竞赛获奖与证书附件)、4 学期学科成绩、简历内容)。
demo / demo1234 · 仅影响演示账号,其他用户不受影响。