45 lines
1.4 KiB
TypeScript
45 lines
1.4 KiB
TypeScript
import { Page } from 'playwright';
|
|
import { waitSpecifyApiLoad } from '@/utils/utils';
|
|
|
|
export class TransferManagementPage {
|
|
page: Page;
|
|
subPages: { name: string; url?: string[] }[];
|
|
|
|
/**
|
|
* 库存-调货管理页面
|
|
* @param {import('@playwright/test').Page} page
|
|
*/
|
|
constructor(page: Page) {
|
|
this.page = page;
|
|
this.subPages = [
|
|
{ name: '门店要货', url: ['/stock'] },
|
|
{ name: '要货单', url: ['/transfer_stock_bill'] },
|
|
{ name: '调货管理', url: ['/transfer_stock_bill'] },
|
|
];
|
|
}
|
|
|
|
gotoSubPage = async (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();
|
|
}
|
|
};
|
|
}
|