优化PC核心工作流视觉 Wave2(05-27-pc-core-workflow-visual-wave2)
这个提交包含在:
@@ -388,7 +388,7 @@ function QuickLinksPanel({ items }: { items: PortalHomePayload["quickLinks"] })
|
||||
const safeItems = Array.isArray(items) ? items : [];
|
||||
|
||||
return (
|
||||
<SectionPanel title="常用入口">
|
||||
<SectionPanel title="入口">
|
||||
<div className="grid gap-3 sm:grid-cols-2">
|
||||
{safeItems.length ? safeItems.map((item) => (
|
||||
<Link key={item.key} to={item.href} className="portal-list-card text-sm font-medium text-slate-700">
|
||||
@@ -400,13 +400,13 @@ function QuickLinksPanel({ items }: { items: PortalHomePayload["quickLinks"] })
|
||||
);
|
||||
}
|
||||
|
||||
function SecondaryCardsPanel({ title, description, cards }: { title: string; description: string; cards: PortalHomePayload["cards"] }) {
|
||||
function SecondaryCardsPanel({ title, cards }: { title: string; cards: PortalHomePayload["cards"] }) {
|
||||
if (!cards.length) {
|
||||
return <EmptyStateCard title={title} description="暂无统计项。" />;
|
||||
}
|
||||
|
||||
return (
|
||||
<SectionPanel title={title} description={description}>
|
||||
<SectionPanel title={title}>
|
||||
<div className="grid gap-3 sm:grid-cols-2">
|
||||
{cards.map((card) => (
|
||||
<MetricCard
|
||||
@@ -589,7 +589,7 @@ function GettingStartedCard({
|
||||
return (
|
||||
<SectionPanel
|
||||
title="快速上手"
|
||||
description="完成基础资料。"
|
||||
description="基础资料"
|
||||
actions={(
|
||||
<button
|
||||
type="button"
|
||||
@@ -740,7 +740,7 @@ function TodoAggregatePanel({ items }: { items: TodoAggregateItem[] }) {
|
||||
{item.severity === "high" ? <span className="badge-error">高优先</span> : null}
|
||||
{item.severity === "warning" ? <span className="badge-warning">关注</span> : null}
|
||||
</div>
|
||||
<div className="mt-2 text-sm text-primary">进入处理</div>
|
||||
<div className="mt-1 text-sm text-primary">进入</div>
|
||||
</div>
|
||||
</div>
|
||||
</Link>
|
||||
@@ -748,7 +748,7 @@ function TodoAggregatePanel({ items }: { items: TodoAggregateItem[] }) {
|
||||
</div>
|
||||
{hiddenCount > 0 ? (
|
||||
<div className="portal-panel-footer">
|
||||
<span>还有 {hiddenCount} 项已收起。</span>
|
||||
<span>另有 {hiddenCount} 项。</span>
|
||||
<Link to="/todos" className="font-medium text-primary hover:underline">查看全部待办</Link>
|
||||
</div>
|
||||
) : null}
|
||||
@@ -784,7 +784,7 @@ function TeamStatusBoardPanel({ items }: { items: PortalTeamStatusItem[] }) {
|
||||
</div>
|
||||
{hiddenCount > 0 ? (
|
||||
<div className="portal-panel-footer">
|
||||
<span>已收起 {hiddenCount} 位成员。</span>
|
||||
<span>另有 {hiddenCount} 位。</span>
|
||||
<Link to="/team" className="font-medium text-primary hover:underline">查看全部</Link>
|
||||
</div>
|
||||
) : null}
|
||||
@@ -1053,7 +1053,7 @@ export function PortalHomePage() {
|
||||
key: "approval",
|
||||
icon: "fact_check",
|
||||
label: "处理审批",
|
||||
description: "进入审批中心查看待办",
|
||||
description: "待办处理",
|
||||
to: "/workflow/tasks",
|
||||
});
|
||||
}
|
||||
@@ -1062,7 +1062,7 @@ export function PortalHomePage() {
|
||||
key: "finance",
|
||||
icon: "payments",
|
||||
label: "财务处理",
|
||||
description: "查看付款和风险待处理",
|
||||
description: "付款 / 风险",
|
||||
to: payload.financeSummary.href,
|
||||
});
|
||||
}
|
||||
@@ -1071,7 +1071,7 @@ export function PortalHomePage() {
|
||||
key: "system",
|
||||
icon: "admin_panel_settings",
|
||||
label: "系统管理",
|
||||
description: "账号、配置和审计入口",
|
||||
description: "账号 / 配置",
|
||||
to: "/people",
|
||||
});
|
||||
}
|
||||
@@ -1080,7 +1080,7 @@ export function PortalHomePage() {
|
||||
key: "leave",
|
||||
icon: "event_available",
|
||||
label: "提交请假",
|
||||
description: "直接进入请假申请页",
|
||||
description: "请假申请",
|
||||
to: "/leave-requests?action=create",
|
||||
});
|
||||
}
|
||||
@@ -1089,7 +1089,7 @@ export function PortalHomePage() {
|
||||
key: "expense",
|
||||
icon: "request_quote",
|
||||
label: "提交报销",
|
||||
description: "进入报销工作台创建单据",
|
||||
description: "报销单据",
|
||||
to: "/reimbursements",
|
||||
});
|
||||
}
|
||||
@@ -1097,7 +1097,7 @@ export function PortalHomePage() {
|
||||
key: "attendance",
|
||||
icon: "schedule",
|
||||
label: "考勤汇总",
|
||||
description: "查看企微打卡摘要和 OA 修正",
|
||||
description: "企微摘要 / OA 修正",
|
||||
to: "/attendance",
|
||||
});
|
||||
if (payload.weeklyReport || payload.weeklySummary) {
|
||||
@@ -1105,7 +1105,7 @@ export function PortalHomePage() {
|
||||
key: "weekly",
|
||||
icon: "article",
|
||||
label: "提交周报",
|
||||
description: "进入周报页继续填写或查看团队缺口",
|
||||
description: "填写 / 查看缺口",
|
||||
to: "/weekly-reports",
|
||||
});
|
||||
}
|
||||
@@ -1136,7 +1136,7 @@ export function PortalHomePage() {
|
||||
}
|
||||
/>
|
||||
|
||||
<div className="portal-metric-strip">
|
||||
<div className="portal-metric-strip ops-status-strip">
|
||||
{primaryCards.map((card) => (
|
||||
<MetricCard
|
||||
key={card.key}
|
||||
@@ -1161,7 +1161,7 @@ export function PortalHomePage() {
|
||||
fallback={(
|
||||
<PortalSectionFallback
|
||||
title="快速上手"
|
||||
description="完成基础资料。"
|
||||
description="基础资料"
|
||||
/>
|
||||
)}
|
||||
>
|
||||
@@ -1234,7 +1234,6 @@ export function PortalHomePage() {
|
||||
|
||||
<SecondaryCardsPanel
|
||||
title="项目与组织"
|
||||
description="项目、组织、风险"
|
||||
cards={secondaryCards}
|
||||
/>
|
||||
</SecondaryWorkspacePanel>
|
||||
|
||||
在新工单中引用
屏蔽一个用户