R102/A1-A8 优化报销主流程

这个提交包含在:
2026-05-06 23:06:12 +08:00
父节点 ed35967a65
当前提交 9a9def6286
共修改 10 个文件,包含 608 行新增和 54 行删除
@@ -14,6 +14,7 @@ import { Button } from "../components/ui/button";
import { Tabs, TabsList, TabsTrigger } from "../components/ui/tabs";
import { PageHeader } from "../components/common/PageHeader";
import { PageScaffold } from "../components/patterns/PageScaffold";
import { resolveReimbursementDisplayCode } from "../lib/reimbursementDisplay";
import { resolveErrorMessage } from "../lib/resolveErrorMessage";
const STATUS_TABS: Array<{ value: ReimbursementStatus; label: string }> = [
@@ -49,12 +50,13 @@ function formatDate(value: string | null | undefined) {
function ReimbursementCard({ item }: { item: ReimbursementListItem }) {
const actionLabel = item.status === "draft" || item.status === "rejected" ? "继续编辑" : "查看详情";
const displayCode = resolveReimbursementDisplayCode(item);
return (
<article className="rounded-lg border border-zinc-200 bg-white p-4 shadow-sm" data-testid="mobile-reimbursement-card">
<div className="flex items-start justify-between gap-3">
<div className="min-w-0">
<div className="truncate text-sm font-semibold text-zinc-900">{item.formNumber || item.id}</div>
<div className="truncate text-sm font-semibold text-zinc-900">{displayCode}</div>
<div className="mt-1 text-xs text-zinc-500">{formatDate(item.reimbursementDate)}</div>
</div>
<span className="badge-neutral shrink-0">{STATUS_LABEL[item.status]}</span>