修复审批详情报销入口(07-27-yang-jun-reimbursement-readiness)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s

这个提交包含在:
2026-07-31 10:05:35 +08:00
父节点 dfbbe9a750
当前提交 d2841b166d
共修改 8 个文件,包含 134 行新增和 6 行删除
+13 -2
查看文件
@@ -1177,8 +1177,19 @@ export function MobileApprovalsPage() {
) : null}
</div>
{selectedTask.reimbursement ? (
<div className="mt-3 rounded-lg bg-zinc-50 px-3 py-2 text-xs text-zinc-600">
{joinBusinessMeta([`报销日期:${selectedTask.reimbursement.reimbursementDate ?? "-"}`, selectedTask.reimbursement.description])}
<div className="mt-3 space-y-3">
<div className="rounded-lg bg-zinc-50 px-3 py-2 text-xs text-zinc-600">
{joinBusinessMeta([`报销日期:${selectedTask.reimbursement.reimbursementDate ?? "-"}`, selectedTask.reimbursement.description])}
</div>
<Button asChild className="w-full" variant="secondary">
<Link
data-testid="mobile-approval-reimbursement-detail-link"
state={{ from: currentMobileSource }}
to={`/mobile/reimbursements/${encodeURIComponent(selectedTask.reimbursement.id)}`}
>
查看完整报销单
</Link>
</Button>
</div>
) : null}
{selectedTask.leaveRequest ? (
@@ -398,6 +398,17 @@ export function WorkflowTaskDetailPage() {
</>
) : null}
</dl>
{detail.reimbursement ? (
<Button asChild variant="secondary">
<Link
data-testid="workflow-task-reimbursement-detail-link"
to={`/reimbursements/${encodeURIComponent(detail.reimbursement.id)}`}
>
查看报销单
</Link>
</Button>
) : null}
</div>
</SectionPanel>
@@ -242,6 +242,7 @@ function buildNotifications() {
function workflowTaskSummary(status: "pending" | "completed" = "pending") {
const isCompleted = status === "completed";
const completedAt = isCompleted ? new Date().toISOString() : null;
return {
id: isCompleted ? "task-dg7-completed" : "task-dg7",
instanceId: "instance-dg7",
@@ -252,7 +253,7 @@ function workflowTaskSummary(status: "pending" | "completed" = "pending") {
status,
outcome: isCompleted ? "approved" : null,
createdAt: "2026-05-12T08:00:00.000Z",
completedAt: isCompleted ? "2026-05-12T09:00:00.000Z" : null,
completedAt,
workflowInstance: {
entityType: "reimbursement",
entityId: "reimbursement-dg7",
@@ -272,6 +273,7 @@ function workflowTaskSummary(status: "pending" | "completed" = "pending") {
function workflowTaskDetail(status: "pending" | "completed" = "pending") {
const isCompleted = status === "completed";
const completedAt = isCompleted ? new Date().toISOString() : null;
const history = [
{
id: "history-workflow-submit-dg7",
@@ -309,7 +311,7 @@ function workflowTaskDetail(status: "pending" | "completed" = "pending") {
outcome: isCompleted ? "approved" : null,
comment: null,
createdAt: "2026-05-12T08:00:00.000Z",
completedAt: isCompleted ? "2026-05-12T09:00:00.000Z" : null,
completedAt,
},
workflowInstance: {
id: "instance-dg7",
@@ -989,6 +991,16 @@ test.describe("MIF7 移动信息架构整改", () => {
await mobile.page.getByTestId("mobile-approvals-detail-header").getByRole("button", { name: "返回" }).click();
await expect(mobile.page).toHaveURL(/\/mobile$/);
await mobile.page.getByTestId("mobile-pending-summary").getByRole("link").first().click();
await expect(mobile.page).toHaveURL(/\/mobile\/approvals\/task-dg7$/);
await mobile.page.getByTestId("mobile-approval-reimbursement-detail-link").click();
await expect(mobile.page).toHaveURL(/\/mobile\/reimbursements\/reimbursement-dg7$/);
await expect(mobile.page.getByTestId("mobile-reimbursement-items")).toBeVisible();
await mobile.page.getByTestId("mobile-reimbursement-detail-header").getByRole("button", { name: "返回" }).click();
await expect(mobile.page).toHaveURL(/\/mobile\/approvals\/task-dg7$/);
await expectApprovalActionsStable(mobile.page);
await mobile.page.goto("/mobile/approvals");
await expect(mobile.page.getByRole("tab", { name: "待我处理" })).toBeVisible();
await expect(mobile.page.getByRole("tab", { name: "已处理" })).toBeVisible();
@@ -1097,6 +1097,12 @@ test("Wave3 PC 详情和通知中心视觉截图", async ({ page }) => {
await expect(page.getByText("审批动作")).toHaveCount(0);
await expect(page.getByRole("heading", { name: "处理", exact: true })).toBeVisible();
await expect(page.getByTestId("workflow-task-overview")).toBeVisible();
await page.getByTestId("workflow-task-reimbursement-detail-link").click();
await expect(page).toHaveURL(/\/reimbursements\/reim-wave3$/);
await expect(page.getByTestId("reimbursement-overview")).toBeVisible();
await page.goBack();
await expect(page).toHaveURL(/\/workflow\/tasks\/task-wave3$/);
await expect(page.getByTestId("workflow-task-overview")).toBeVisible();
await page.screenshot({ path: screenshotPath("02-pc-workflow-detail.png"), fullPage: true });
await page.goto("/notifications");