收口报销详情返回与金额展示(07-27-yang-jun-reimbursement-readiness)

这个提交包含在:
2026-08-01 15:03:48 +08:00
父节点 85fad71070
当前提交 3bfcbbfc91
共修改 16 个文件,包含 219 行新增和 81 行删除
+16 -4
查看文件
@@ -1,6 +1,6 @@
import type { ReactNode } from "react";
import { useMemo, useState } from "react";
import { Link, Navigate, useNavigate, useParams } from "react-router-dom";
import { Link, Navigate, useLocation, useNavigate, useParams } from "react-router-dom";
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import { isApiError } from "../api/types";
import { mapApiErrorMessage } from "../api/errorMessages";
@@ -34,6 +34,11 @@ import { Button } from "../components/ui/button";
import { Textarea } from "../components/ui/textarea";
import { resolvePurchaseDisplayCode } from "../lib/approvalDisplay";
import { formatDisplayDateTime } from "../lib/displayFormat";
import {
buildPcDetailSource,
resolvePcDetailSource,
type PcDetailNavigationState,
} from "../lib/pcDetailNavigation";
import { getWorkflowConfirmCopy, type WorkflowConfirmAction } from "../lib/workflowActionConfirm";
function entityTitle(entityType: string | undefined) {
@@ -118,6 +123,7 @@ type SecondaryWorkflowAction = "reject" | "return" | "transfer";
export function WorkflowTaskDetailPage() {
const { taskId = "" } = useParams();
const location = useLocation();
const navigate = useNavigate();
const queryClient = useQueryClient();
const { permissions } = useAuth();
@@ -130,6 +136,9 @@ export function WorkflowTaskDetailPage() {
const [activeSecondaryAction, setActiveSecondaryAction] = useState<SecondaryWorkflowAction | null>(null);
const [confirmAction, setConfirmAction] = useState<WorkflowConfirmAction | null>(null);
const [transferConfirmOpen, setTransferConfirmOpen] = useState(false);
const currentTaskSource = buildPcDetailSource(location.pathname, location.search);
const navigationState = location.state as PcDetailNavigationState | null;
const backSource = resolvePcDetailSource(navigationState?.from, currentTaskSource) ?? "/workflow/tasks";
const detailQuery = useQuery({
enabled: Boolean(taskId),
@@ -263,10 +272,10 @@ export function WorkflowTaskDetailPage() {
<p className="text-sm text-red-600">{message}</p>
<Button
variant="secondary"
onClick={() => navigate("/workflow/tasks")}
onClick={() => navigate(backSource, { replace: true })}
type="button"
>
返回待办列表
{backSource.startsWith("/reimbursements") ? "返回报销列表" : "返回待办列表"}
</Button>
</div>
);
@@ -292,7 +301,9 @@ export function WorkflowTaskDetailPage() {
)}
actions={(
<Button asChild variant="secondary" data-testid="workflow-task-back">
<Link to="/workflow/tasks">返回待办列表</Link>
<Link replace to={backSource}>
{backSource.startsWith("/reimbursements") ? "返回报销列表" : "返回待办列表"}
</Link>
</Button>
)}
/>
@@ -397,6 +408,7 @@ export function WorkflowTaskDetailPage() {
<Button asChild variant="secondary">
<Link
data-testid="workflow-task-reimbursement-detail-link"
state={{ from: currentTaskSource }}
to={`/reimbursements/${encodeURIComponent(detail.reimbursement.id)}`}
>
查看报销单