优化
This commit is contained in:
@@ -136,4 +136,27 @@ describe('CustomerDetailView', () => {
|
|||||||
expect(downloadTenantQualification).toHaveBeenCalledWith(tenant.id, '/files/license.png')
|
expect(downloadTenantQualification).toHaveBeenCalledWith(tenant.id, '/files/license.png')
|
||||||
expect(document.querySelector('img[alt="license.png预览"]')).not.toBeNull()
|
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 orderPageSize = ref(10)
|
||||||
const customerOrdersLoading = ref(false)
|
const customerOrdersLoading = ref(false)
|
||||||
const customerOrdersError = ref<ApiErrorDetails | null>(null)
|
const customerOrdersError = ref<ApiErrorDetails | null>(null)
|
||||||
|
let skipNextOrderPageLoad = false
|
||||||
const previews = ref<Record<string, PreviewState>>({})
|
const previews = ref<Record<string, PreviewState>>({})
|
||||||
const previewOpen = ref(false)
|
const previewOpen = ref(false)
|
||||||
const previewName = ref('')
|
const previewName = ref('')
|
||||||
@@ -195,6 +196,7 @@ async function loadDetail() {
|
|||||||
|
|
||||||
const optional: Promise<void>[] = []
|
const optional: Promise<void>[] = []
|
||||||
if (access.can('platform:order:list')) {
|
if (access.can('platform:order:list')) {
|
||||||
|
if (orderPage.value !== 1) skipNextOrderPageLoad = true
|
||||||
orderPage.value = 1
|
orderPage.value = 1
|
||||||
customerOrders.value = []
|
customerOrders.value = []
|
||||||
customerOrderTotal.value = 0
|
customerOrderTotal.value = 0
|
||||||
@@ -254,6 +256,10 @@ function handleTabKeydown(event: KeyboardEvent, key: DetailTab) {
|
|||||||
onMounted(loadDetail)
|
onMounted(loadDetail)
|
||||||
onBeforeUnmount(clearPreviews)
|
onBeforeUnmount(clearPreviews)
|
||||||
watch(orderPage, (page, previousPage) => {
|
watch(orderPage, (page, previousPage) => {
|
||||||
|
if (skipNextOrderPageLoad) {
|
||||||
|
skipNextOrderPageLoad = false
|
||||||
|
return
|
||||||
|
}
|
||||||
if (page !== previousPage) void loadCustomerOrders(page)
|
if (page !== previousPage) void loadCustomerOrders(page)
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
Reference in New Issue
Block a user