重构项目合同轻台账与详情命令面板(05-30-project-contract-ledger-detail-shell)

这个提交包含在:
2026-05-30 12:50:03 +08:00
父节点 dd1b655122
当前提交 fed797d19b
共修改 6 个文件,包含 253 行新增和 128 行删除
@@ -1076,16 +1076,32 @@ test("Wave3 PC 详情和通知中心视觉截图", async ({ page }) => {
await expect(page.getByTestId("workflow-task-overview")).toBeVisible();
await page.screenshot({ path: screenshotPath("02-pc-workflow-detail.png"), fullPage: true });
await page.goto("/projects");
await expect(page.getByRole("heading", { name: "项目", exact: true })).toBeVisible();
await expect(page.getByText("默认只看我负责/我参与")).toBeVisible();
await expect(page.getByText("新建项目")).toHaveCount(0);
await page.getByRole("button", { name: "台账工具" }).click();
await expect(page.getByText("新建项目")).toBeVisible();
await page.goto("/projects/project-wave3");
await expect(page.getByRole("heading", { name: /HYB-W3/ })).toBeVisible();
await expect(page.getByTestId("project-current-command")).toBeVisible();
await expect(page.locator("table").first()).toBeVisible();
await expect(page.getByText("离线档案柜 A-01")).toHaveCount(0);
await page.screenshot({ path: screenshotPath("03-pc-project-detail.png"), fullPage: true });
await page.goto("/contracts-registry?projectId=project-wave3");
await expect(page.getByRole("heading", { name: "合同台账", exact: true })).toBeVisible();
await expect(page.getByTestId("contracts-registry-summary")).toBeVisible();
await expect(page.getByRole("button", { name: "导出 CSV" })).toHaveCount(0);
await page.getByRole("button", { name: "台账工具" }).click();
await expect(page.getByTestId("contracts-ledger-tools")).toBeVisible();
await expect(page.getByTestId("contracts-editor-panel")).toBeVisible();
await expect(page.getByRole("button", { name: "导出 CSV" })).toBeVisible();
await expect(page.getByTestId("contracts-registry-row")).toBeVisible();
await page.getByTestId("contracts-registry-row").getByRole("button", { name: "归档" }).click();
await expect(page.getByTestId("action-confirm-dialog")).toContainText("确认归档");
await page.getByTestId("action-confirm-cancel").click();
await page.screenshot({ path: screenshotPath("04-pc-contracts-registry.png"), fullPage: true });
await page.goto("/notifications");