fix(client): retain customs access after order completion

This commit is contained in:
2026-10-02 11:33:51 +08:00
parent c115f1c504
commit 605388e666
5 changed files with 108 additions and 6 deletions
@@ -5,7 +5,8 @@ import DataTable, { type DataTableColumn } from '@/components/common/DataTable.v
import QueryToolbar, { type QueryField, type QueryModel } from '@/components/common/QueryToolbar.vue'
import type { TableAction } from '@/components/common/tableActions'
import { useFirstLegOrdersStore } from '../public'
import { getMerchantCustomsForOrder, type MerchantCustomsContainer } from '../api/customs'
import { getMerchantCustomsForOrder, isMerchantCustomsUnavailable, type MerchantCustomsContainer } from '../api/customs'
import { isCustomsOrderCandidate } from '../utils/customsEligibility'
import CustomsDocumentsDialog from '../components/CustomsDocumentsDialog.vue'
import type { FirstLegOrder } from '../types/firstLegOrder'
@@ -77,9 +78,12 @@ async function load() {
loading.value = true; errorMessage.value = ''
try {
await store.load()
const candidates = store.orders.filter((order) => order.status === 'LOADED' && order.taxMode === 'TAX_REFUND')
if (store.loadError) throw new Error(store.loadError)
const candidates = store.orders.filter(isCustomsOrderCandidate)
const results = await Promise.allSettled(candidates.map(async (order) => ({ order, detail: await getMerchantCustomsForOrder(order.id) })))
records.value = results.flatMap((result) => result.status === 'fulfilled' && result.value.detail.inbounds.some((item) => item.orderId === result.value.order.id && item.taxMode === 'TAX_REFUND') ? [result.value] : [])
const failedCount = results.filter((result) => result.status === 'rejected' && !isMerchantCustomsUnavailable(result.reason)).length
if (failedCount) errorMessage.value = `${failedCount} 票订单的报关资料加载失败,请重新加载`
} catch (error) {
records.value = []
errorMessage.value = error instanceof Error ? error.message : '报关资料加载失败,请稍后重试'