This commit is contained in:
2026-08-07 20:07:37 +08:00
parent 28d0b81c5a
commit 99413ee155
27 changed files with 1065 additions and 595 deletions
@@ -38,6 +38,8 @@ const deletingIds = ref(new Set<string>())
const formRef = ref<FormInstance>()
let warehouseSequence = 0
let palletSequence = 0
let detailSequence = 0
let editorSequence = 0
type PalletFilters = QueryModel & { warehouseId: string; palletCode: string; palletType: string }
type AppliedPalletFilters = Pick<PalletFilters, 'warehouseId' | 'palletCode' | 'palletType'>
@@ -226,6 +228,7 @@ function resetFilters() {
}
function openCreate() {
editorSequence += 1
Object.assign(form, emptyForm())
form.warehouseId = isActiveDomesticWarehouse(filters.value.warehouseId) ? filters.value.warehouseId : ''
editorOpen.value = true
@@ -254,16 +257,20 @@ async function fetchDetail(row: PlatformPalletResource) {
}
async function openDetail(row: PlatformPalletResource) {
const sequence = ++detailSequence
detailLoading.value = true
detailOpen.value = true
detail.value = null
try {
detail.value = await fetchDetail(row)
const result = await fetchDetail(row)
if (sequence !== detailSequence || !detailOpen.value) return
detail.value = result
} catch (error) {
if (sequence !== detailSequence) return
detailOpen.value = false
ElMessage.error(errorMessage(getApiErrorDetails(error, '托盘详情加载失败,请稍后重试')))
} finally {
detailLoading.value = false
if (sequence === detailSequence) detailLoading.value = false
}
}
@@ -272,9 +279,13 @@ async function openEdit(row: PlatformPalletResource) {
ElMessage.warning('仅支持编辑国内仓托盘')
return
}
const sequence = ++editorSequence
try {
assignForm(await fetchDetail(row))
const result = await fetchDetail(row)
if (sequence !== editorSequence) return
assignForm(result)
} catch (error) {
if (sequence !== editorSequence) return
ElMessage.error(errorMessage(getApiErrorDetails(error, '托盘详情加载失败,请稍后重试')))
}
}
@@ -341,6 +352,12 @@ watch([page, pageSize], ([nextPage, nextSize], [previousPage, previousSize]) =>
if (nextPage === previousPage && nextSize === previousSize) return
void loadPallets()
})
watch(detailOpen, (open) => {
if (open) return
detailSequence += 1
detailLoading.value = false
detail.value = null
})
watch(() => access.can(editorPermission.value), (canWrite) => {
if (!canWrite && editorOpen.value) editorOpen.value = false
}, { flush: 'sync' })