This commit is contained in:
2026-08-07 18:15:56 +08:00
parent 217768fb0b
commit 3c69e67e75
2 changed files with 29 additions and 0 deletions
@@ -136,4 +136,27 @@ describe('CustomerDetailView', () => {
expect(downloadTenantQualification).toHaveBeenCalledWith(tenant.id, '/files/license.png')
expect(document.querySelector('img[alt="license.png预览"]')).not.toBeNull()
})
it('does not duplicate the first page request when retrying from a later page', async () => {
const wrapper = mount(CustomerDetailView, { attachTo: document.body, global: { plugins: [pinia, ElementPlus] } })
await flushPromises()
vi.mocked(listPlatformFirstLegOrders).mockRejectedValueOnce(new Error('暂时不可用'))
const vm = wrapper.vm as unknown as { orderPage: number }
vm.orderPage = 2
await flushPromises()
expect(listPlatformFirstLegOrders).toHaveBeenCalledTimes(2)
const ordersTab = [...document.querySelectorAll<HTMLButtonElement>('.detail-tabs button')]
.find((button) => button.textContent?.trim() === '运单记录')
ordersTab?.click()
await flushPromises()
const retryButton = [...document.querySelectorAll<HTMLButtonElement>('button')]
.find((button) => button.textContent?.includes('重新加载'))
retryButton?.click()
await flushPromises()
expect(listPlatformFirstLegOrders).toHaveBeenCalledTimes(3)
expect(listPlatformFirstLegOrders).toHaveBeenLastCalledWith({ tenantId: tenant.id, page: 1, size: 10 })
})
})
@@ -53,6 +53,7 @@ const orderPage = ref(1)
const orderPageSize = ref(10)
const customerOrdersLoading = ref(false)
const customerOrdersError = ref<ApiErrorDetails | null>(null)
let skipNextOrderPageLoad = false
const previews = ref<Record<string, PreviewState>>({})
const previewOpen = ref(false)
const previewName = ref('')
@@ -195,6 +196,7 @@ async function loadDetail() {
const optional: Promise<void>[] = []
if (access.can('platform:order:list')) {
if (orderPage.value !== 1) skipNextOrderPageLoad = true
orderPage.value = 1
customerOrders.value = []
customerOrderTotal.value = 0
@@ -254,6 +256,10 @@ function handleTabKeydown(event: KeyboardEvent, key: DetailTab) {
onMounted(loadDetail)
onBeforeUnmount(clearPreviews)
watch(orderPage, (page, previousPage) => {
if (skipNextOrderPageLoad) {
skipNextOrderPageLoad = false
return
}
if (page !== previousPage) void loadCustomerOrders(page)
})
</script>