import { type Page } from 'playwright'; import { waitSpecifyApiLoad } from '@/utils/utils'; export class InventoryManagementPage { page: Page; subPages: { name: string; url?: string[] }[]; /** * 库存管理页 * @param page */ constructor(page: Page) { this.page = page; this.subPages = [ { name: '库存余量表', url: [] }, { name: '安全库存差额表', url: [] }, { name: '寄存余量表', url: [] }, { name: '过期预警表', url: [] }, ]; } /** * 跳转子页面 * @param subPageName 子页面名称 * - 库存余量表 * - 安全库存差额表 * - 寄存余量表 * - 过期预警表 */ async gotoSubPage(subPageName: string) { if (!this.subPages.some(item => item.name === subPageName)) { throw new Error(`暂不支持${subPageName}页面`); } const $dropDown = this.page .locator('.top_tab .tab_item', { hasText: '库存管理', }) .locator('.ant-dropdown-link'); await $dropDown.click(); const subPage = this.subPages.find(item => item.name === subPageName); if (subPage?.url) { await Promise.all([ this.page.getByRole('menuitem', { name: subPageName }).click(), waitSpecifyApiLoad(subPage.url), ]); } else { await this.page.getByRole('menuitem', { name: subPageName }).click(); } } }