54 lines
1.5 KiB
TypeScript
54 lines
1.5 KiB
TypeScript
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();
|
|
}
|
|
}
|
|
}
|