统一PC前端布局密度(05-28-pc-frontend-layout-unification)

这个提交包含在:
2026-05-28 00:58:29 +08:00
父节点 f926905c57
当前提交 2229449e66
共修改 18 个文件,包含 308 行新增和 83 行删除
+15 -15
查看文件
@@ -524,7 +524,7 @@ function AdoptionSummaryPanel({ adoptionSummary }: { adoptionSummary: NonNullabl
<div className="mt-2 text-2xl font-semibold text-zinc-900">{adoptionSummary.announcementCount}</div>
</div>
</div>
<div className="mt-4 rounded-2xl border border-slate-200 bg-slate-50 px-4 py-4 text-sm text-slate-600">
<div className="mt-4 rounded-lg border border-slate-200 bg-slate-50 px-3.5 py-3 text-sm text-slate-600">
<div className="font-medium text-zinc-900">本周观测提示</div>
<ul className="mt-2 list-disc space-y-1 pl-5">
{adoptionSummary.hints.map((hint) => (
@@ -589,7 +589,7 @@ function GettingStartedCard({
return (
<SectionPanel
title="快速上手"
description="基础资料"
description="基础设置"
actions={(
<button
type="button"
@@ -622,7 +622,7 @@ function GettingStartedCard({
</Link>
))}
<div className="rounded-2xl border border-slate-200 bg-slate-50 px-4 py-4">
<div className="rounded-lg border border-slate-200 bg-slate-50 px-3.5 py-3">
<div className="flex items-center justify-between gap-3 text-sm">
<span className="font-medium text-zinc-900">完成进度</span>
<span className="text-zinc-500">{completedCount}/{items.length}</span>
@@ -726,10 +726,10 @@ function TodoAggregatePanel({ items }: { items: TodoAggregateItem[] }) {
<Link key={`${item.title}-${item.href}-${item.sourceLabel}`} to={item.href} className="portal-list-card">
<div className="flex items-start gap-3">
<div className={item.severity === "high"
? "mt-0.5 flex size-9 items-center justify-center rounded-2xl bg-red-50 text-red-600"
? "mt-0.5 flex size-9 items-center justify-center rounded-lg bg-red-50 text-red-600"
: item.severity === "warning"
? "mt-0.5 flex size-9 items-center justify-center rounded-2xl bg-amber-50 text-amber-600"
: "mt-0.5 flex size-9 items-center justify-center rounded-2xl bg-zinc-100 text-zinc-600"}
? "mt-0.5 flex size-9 items-center justify-center rounded-lg bg-amber-50 text-amber-600"
: "mt-0.5 flex size-9 items-center justify-center rounded-lg bg-zinc-100 text-zinc-600"}
>
<span className="material-symbols-outlined text-[18px]">{item.icon}</span>
</div>
@@ -896,14 +896,14 @@ export function PortalHomePage() {
const gettingStartedCompletedCount = gettingStartedItems.filter((item) => item.completed).length;
if (portalQuery.isLoading) {
return <div className="card-std p-6 text-sm text-zinc-500">加载工作台中...</div>;
return <div className="card-std p-5 text-sm text-zinc-500">加载工作台中...</div>;
}
if (portalQuery.isError || !portalQuery.data) {
const message = isApiError(portalQuery.error)
? `${portalQuery.error.code}: ${mapApiErrorMessage(portalQuery.error.code, portalQuery.error.details, portalQuery.error.message)}`
: "工作台加载失败";
return <div className="card-std p-6 text-sm text-red-600">{message}</div>;
return <div className="card-std p-5 text-sm text-red-600">{message}</div>;
}
const payload = portalQuery.data;
@@ -1096,8 +1096,8 @@ export function PortalHomePage() {
quickActions.push({
key: "attendance",
icon: "schedule",
label: "考勤汇总",
description: "企微摘要 / OA 修正",
label: "考勤",
description: "企微摘要",
to: "/attendance",
});
if (payload.weeklyReport || payload.weeklySummary) {
@@ -1105,7 +1105,7 @@ export function PortalHomePage() {
key: "weekly",
icon: "article",
label: "提交周报",
description: "填写 / 查看缺口",
description: "填写 / 缺口",
to: "/weekly-reports",
});
}
@@ -1161,7 +1161,7 @@ export function PortalHomePage() {
fallback={(
<PortalSectionFallback
title="快速上手"
description="基础资料"
description="基础设置"
/>
)}
>
@@ -1205,9 +1205,9 @@ export function PortalHomePage() {
<>
<SecondaryWorkspacePanel
title="角色重点"
description="常用入口"
description="入口"
>
<div className="grid gap-6 xl:grid-cols-[minmax(0,1fr),minmax(0,1fr)] 2xl:grid-cols-[minmax(0,1fr),minmax(0,1fr),360px]">
<div className="grid gap-4 xl:grid-cols-[minmax(0,1fr),minmax(0,1fr)] 2xl:grid-cols-[minmax(0,1fr),minmax(0,1fr),340px]">
{roleCapabilities.canApproveTasks ? (
<SummaryPanel title="审批处理" items={approvalSummaryItems} />
) : null}
@@ -1243,7 +1243,7 @@ export function PortalHomePage() {
) : (
<SecondaryWorkspacePanel
title="更多入口"
description="申请、资产、最近访问和项目指标"
description="申请、资产、最近访问"
>
<div className="portal-secondary-compact-grid">
<CompactSummaryLinks title="我的申请与资产" items={employeeSummaryItems} />