优化
This commit is contained in:
@@ -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' })
|
||||
|
||||
Reference in New Issue
Block a user