feat(management-navigation-single-company-ux): 收敛管理导航与单公司配置体验
这个提交包含在:
@@ -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 });
|
||||
|
||||
在新工单中引用
屏蔽一个用户