R97 B1-B5 精修高频页面操作密度
这个提交包含在:
@@ -341,7 +341,7 @@ export function ReimbursementsPage() {
|
||||
<ListWorkspace>
|
||||
<PageHeader
|
||||
title="我的报销"
|
||||
subtitle="报销列表、详情与提交/撤回/支付动作入口。"
|
||||
subtitle="草稿、审批、支付。"
|
||||
actions={
|
||||
<div className="flex flex-col gap-2 sm:flex-row sm:items-center">
|
||||
{showProxyOwnerSelector ? (
|
||||
@@ -491,10 +491,10 @@ export function ReimbursementsPage() {
|
||||
) : null}
|
||||
|
||||
<section className="grid gap-4 md:grid-cols-2 xl:grid-cols-4">
|
||||
<MetricCard title="当前列表" value={stats.currentPageCount} note={`共 ${listQuery.data?.total ?? 0} 条记录`} />
|
||||
<MetricCard title="当前金额" value={formatCurrency(stats.currentPageAmount)} note="按当前页与筛选统计" />
|
||||
<MetricCard title="审批中" value={stats.reviewing} note="待继续推进的报销单" tone={stats.reviewing > 0 ? "warning" : "neutral"} />
|
||||
<MetricCard title="已支付" value={stats.paid} note={`当前范围:${scope === "all" ? "全范围" : "仅自己"}`} />
|
||||
<MetricCard title="当前列表" value={stats.currentPageCount} note={`共 ${listQuery.data?.total ?? 0} 条`} />
|
||||
<MetricCard title="当前金额" value={formatCurrency(stats.currentPageAmount)} note="当前页" />
|
||||
<MetricCard title="审批中" value={stats.reviewing} note="待推进" tone={stats.reviewing > 0 ? "warning" : "neutral"} />
|
||||
<MetricCard title="已支付" value={stats.paid} note={scope === "all" ? "全范围" : "仅自己"} />
|
||||
</section>
|
||||
|
||||
<FilterBar className="space-y-4">
|
||||
@@ -566,7 +566,7 @@ export function ReimbursementsPage() {
|
||||
|
||||
{batchMode ? (
|
||||
<div className="rounded-2xl border border-amber-200 bg-amber-50 px-4 py-3 text-sm text-amber-800">
|
||||
当前只可勾选你本人可处理的 reviewing 报销待办。批量通过可不填意见,批量驳回必须填写统一理由。
|
||||
仅勾选你可处理的审批中报销;驳回需填写理由。
|
||||
</div>
|
||||
) : null}
|
||||
</FilterBar>
|
||||
@@ -636,7 +636,7 @@ export function ReimbursementsPage() {
|
||||
|
||||
{item.pendingWorkflow?.task?.id ? (
|
||||
<div className="rounded-lg border border-amber-200 bg-amber-50 px-3 py-2 text-xs text-amber-700">
|
||||
当前待办:{item.pendingWorkflow.task.stepName}
|
||||
待办:{item.pendingWorkflow.task.stepName}
|
||||
</div>
|
||||
) : null}
|
||||
|
||||
@@ -653,7 +653,12 @@ export function ReimbursementsPage() {
|
||||
选择
|
||||
</label>
|
||||
) : null}
|
||||
<Button asChild className="min-h-10 flex-1" size="sm" variant="secondary">
|
||||
<Button
|
||||
asChild
|
||||
className="min-h-11 flex-1"
|
||||
size="sm"
|
||||
variant={["draft", "rejected"].includes(item.status) ? "default" : "secondary"}
|
||||
>
|
||||
<Link
|
||||
to={`/reimbursements/${item.id}`}
|
||||
data-testid="reimbursement-mobile-detail-link"
|
||||
@@ -720,7 +725,7 @@ export function ReimbursementsPage() {
|
||||
) : null}
|
||||
{item.pendingWorkflow?.task?.id ? (
|
||||
<div className="text-xs text-amber-700">
|
||||
当前待办:{item.pendingWorkflow.task.stepName} · task {item.pendingWorkflow.task.id}
|
||||
待办:{item.pendingWorkflow.task.stepName}
|
||||
</div>
|
||||
) : null}
|
||||
</td>
|
||||
@@ -744,8 +749,12 @@ export function ReimbursementsPage() {
|
||||
</td>
|
||||
<td className="table-td">{item.reimbursementDate ?? "-"}</td>
|
||||
<td className="table-td">
|
||||
<Link to={`/reimbursements/${item.id}`} className="btn-ghost" data-testid="reimbursement-detail-link">
|
||||
<span className="material-symbols-outlined text-[18px]">more_horiz</span>
|
||||
<Link
|
||||
to={`/reimbursements/${item.id}`}
|
||||
className={["draft", "rejected"].includes(item.status) ? "btn-primary" : "btn-secondary"}
|
||||
data-testid="reimbursement-detail-link"
|
||||
>
|
||||
{["draft", "rejected"].includes(item.status) ? "编辑" : "详情"}
|
||||
</Link>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
在新工单中引用
屏蔽一个用户