feat(management-navigation-single-company-ux): 收敛管理导航与单公司配置体验

这个提交包含在:
2026-08-03 12:43:00 +08:00
父节点 f4ddc18f12
当前提交 4b0184c64b
共修改 36 个文件,包含 1249 行新增和 178 行删除
@@ -432,6 +432,7 @@ type MockVerificationRecord = {
};
type Wave4MockOptions = {
legalEntities?: Array<(typeof legalEntities)[number]>;
detailVerification?: MockVerificationRecord | null;
verificationRecords?: MockVerificationRecord[];
triggerVerificationError?: Record<string, unknown>;
@@ -924,7 +925,17 @@ async function mockWave4Apis(page: Page, options: Wave4MockOptions = {}) {
}
if (pathName === "/api/master-data/legal-entities") {
await fulfillJson(route, { includeArchived: false, items: legalEntities });
await fulfillJson(route, { includeArchived: false, items: options.legalEntities ?? legalEntities });
return;
}
if (pathName === "/api/payment-accounts") {
await fulfillJson(route, { items: [] });
return;
}
if (pathName === "/api/bank-institutions") {
await fulfillJson(route, { items: [{ id: "bank-wave4", code: "CCB", name: "中国建设银行" }] });
return;
}
@@ -1016,7 +1027,7 @@ const pages = [
{ path: "/organization", summary: "organization-summary", proof: "text=研发部", screenshot: "06-organization" },
{ path: "/system/workspace", summary: "workspace-settings-summary", proof: "data-testid=workspace-modules-table", screenshot: "07-workspace" },
{ path: "/system/users", summary: "users-summary", proof: "data-testid=users-table", screenshot: "08-users" },
{ path: "/system/master-data", summary: "master-data-summary", proof: "text=法体列表", screenshot: "09-master-data" },
{ path: "/system/master-data", summary: "master-data-summary", proof: "text=公司信息", screenshot: "09-master-data" },
{ path: "/system/notification-channels", summary: "notification-channels-summary", proof: "data-testid=notification-channels-table", screenshot: "10-notification-channels" },
{ path: "/system/settings", summary: "system-settings-summary", proof: "text=管理", screenshot: "11-system-settings" },
{ path: "/system/feature-flags", summary: "feature-flags-summary", proof: "data-testid=feature-flags-table", screenshot: "12-feature-flags" },
@@ -1066,6 +1077,47 @@ test("PC 财务列表使用明确动作入口", async ({ page }) => {
await expect(page.getByTestId("invoice-export-csv")).toBeVisible();
});
test("管理子页共享面包屑、侧栏高亮并自动关联唯一公司", async ({ page }) => {
await mockWave4Apis(page);
await page.setViewportSize({ width: 1440, height: 960 });
await login(page);
await page.goto("/system/payment-accounts");
const breadcrumbs = page.getByTestId("topbar-management-breadcrumbs");
await expect(breadcrumbs).toContainText("管理");
await expect(breadcrumbs).toContainText("企业银行账户");
await expect(breadcrumbs.getByRole("link", { name: "管理" })).toHaveAttribute("href", "/system/settings");
await expect(page.getByTestId("payment-account-company")).toHaveText("海音达科技");
await expect(page.locator("#payment-account-legal-entity")).toHaveCount(0);
await expect(page.locator('a.nav-link-item[aria-label="管理"]')).toHaveClass(/nav-link-item--active/);
});
test("企业银行账户在缺少公司信息时给出可执行入口", async ({ page }) => {
await mockWave4Apis(page, { legalEntities: [] });
await login(page);
await page.goto("/system/payment-accounts");
await expect(page.getByRole("heading", { name: "先完善公司信息" })).toBeVisible();
await expect(page.getByRole("link", { name: "完善公司信息" })).toHaveAttribute("href", "/system/master-data");
await expect(page.getByTestId("payment-account-company")).toHaveCount(0);
});
test("企业银行账户在异常多公司状态下停止自动关联", async ({ page }) => {
await mockWave4Apis(page, {
legalEntities: [
legalEntities[0],
{ ...legalEntities[0], id: "legal-wave4-extra", code: "HYD-EXTRA", name: "合成重复公司" },
],
});
await login(page);
await page.goto("/system/payment-accounts");
await expect(page.getByRole("heading", { name: "公司信息需要处理" })).toBeVisible();
await expect(page.getByText("系统不会猜测付款账户应关联哪一条")).toBeVisible();
await expect(page.getByTestId("payment-account-company")).toHaveCount(0);
});
test("审批规则负责人本人兜底默认财务并兼容财务负责人", async ({ page }) => {
await mockWave4Apis(page);
await page.setViewportSize({ width: 1440, height: 960 });