import Link from "next/link"; import type { Route } from "next"; import { Bell, CalendarDays, ChevronRight, ClipboardList } from "lucide-react"; import { EmptyState } from "@/components/empty-state"; import { StatusPill } from "@/components/status-pill"; import { formatDateTime, roleNames } from "@/lib/format"; import { getBootstrapData } from "@/lib/mobile-data"; import type { TaskStatus } from "@/lib/types"; const taskStatusText: Record = { pending: "待处理", in_progress: "处理中", completed: "已完成", cancelled: "已取消" }; const taskStatusTone: Record = { pending: "default", in_progress: "warning", completed: "success", cancelled: "danger" }; export default async function DashboardPage() { const data = await getBootstrapData(); const { user } = data; return (

{user.storeName || "员工端"}

你好,{user.displayName}

今日工作状态已同步,先处理最重要的事项。

{data.pendingTaskCount} 待办 {data.todayShifts.length} 班次 {data.unreadAnnouncementCount} 未读
{user.displayName.slice(0, 1)}

{user.displayName}

{user.storeName || "未绑定门店"}

账号正常 {roleNames(user.roles)}
{data.pendingTaskCount}

待办任务

{data.overdueTaskCount}

已逾期

{data.unreadAnnouncementCount}

未读公告

今日排班

{data.todayShifts.length > 0 ? (
{data.todayShifts.map((shift) => (

{shift.position}

{formatDateTime(shift.startAt)} - {formatDateTime(shift.endAt)}

已排班
))}
) : ( )}

待办任务

查看全部
{data.tasks.length > 0 ? (
{data.tasks.map((task) => { const href = `/tasks/${task.id}` as Route; return (

{task.title}

{task.description || `截止:${formatDateTime(task.dueAt)}`}

{taskStatusText[task.status]} ); })}
) : ( )}

最新公告

查看全部
{data.latestAnnouncements.length > 0 ? (
{data.latestAnnouncements.map((item) => { const href = `/announcements/${item.id}` as Route; return (

{item.title}

{item.summary || formatDateTime(item.publishedAt)}

{item.read ? "已读" : "未读"} ); })}
) : ( )}
); }