This commit is contained in:
2026-11-06 13:33:14 +08:00
parent 110d52fd5b
commit e10e079565
8 changed files with 61 additions and 12 deletions
@@ -747,7 +747,7 @@ function selectStatus(status: UnifiedOrderMainStatus | '' | 'MEASUREMENT_REVIEW'
if (selectedTab.value === status) return
ordersRequestSerial += 1
measurementReviewSelected.value = status === 'MEASUREMENT_REVIEW'
if (measurementReviewSelected.value) selectedOrders.value = []
handleOrderSelectionChange([])
if (status === 'MEASUREMENT_REVIEW') {
return
}
@@ -1670,11 +1670,23 @@ function tabCount(value: UnifiedOrderMainStatus | '' | 'MEASUREMENT_REVIEW') {
return value ? statusCounts.value[value] : undefined
}
const measurementReviewOrders = ref<UnifiedOrderResource[]>([])
let measurementReviewRequestSerial = 0
/** 保留审核列表对应的原始订单,工具栏操作复用同一客户、入库单和业务资格。 */
async function loadMeasurementReviewTasks(pagination: { page: number; size: number }) {
const serial = ++measurementReviewRequestSerial
const result = await listPlatformUnifiedOrders({ ...orderCountFilters(), mainStatus: 'MEASUREMENT_REVIEW', ...pagination })
if (serial === measurementReviewRequestSerial) measurementReviewOrders.value = result.records
return { ...result, records: result.records.map(toMeasurementReviewTask) }
}
/** 审核列表勾选映射回原始订单,避免混用其他页签的勾选数据。 */
function handleMeasurementReviewSelection(rows: Array<{ id: string }>) {
const ids = new Set(rows.map(row => String(row.id)))
handleOrderSelectionChange(measurementReviewOrders.value.filter(row => ids.has(String(row.inboundId))))
}
async function loadOrders(refreshCounts = true) {
const serial = ++ordersRequestSerial
if (refreshCounts) void loadStatusCounts()
@@ -2862,7 +2874,14 @@ function orderDialogTitle(action: string, inboundCode?: string | null) {
<template v-else>
<div v-if="measurementReviewSelected" id="unified-orders-results" class="orders-status-toolbar" role="tabpanel">
<InboundTaskList ref="measurementReviewList" :task-loader="loadMeasurementReviewTasks" mode="review" title="订单列表" class="is-embedded" @changed="loadStatusCounts">
<InboundTaskList ref="measurementReviewList" :task-loader="loadMeasurementReviewTasks" mode="review" title="订单列表" class="is-embedded" @changed="loadStatusCounts" @selection-change="handleMeasurementReviewSelection">
<template #toolbar-actions="{ loading: reviewLoading }">
<div v-if="can('platform:firstleg:smart-loading:assign')" class="coload-toolbar-action">
<el-button type="primary" plain :loading="coLoadSaving" :disabled="reviewLoading || !canCreateCoLoadGroup" aria-label="合柜报关" @click="openCoLoadCreate"><Link2 :size="16" />合柜报关<span v-if="selectedOrders.length">({{ selectedOrders.length }})</span></el-button>
</div>
<el-button v-if="can('platform:firstleg:inbound:view')" :loading="printingCartonLabels" :disabled="reviewLoading || printingCartonLabels || !selectedCartonLabelOrders.length" @click="printSelectedCartonLabels"><Printer :size="16" />打印箱唛<span v-if="selectedCartonLabelOrders.length">({{ selectedCartonLabelOrders.length }})</span></el-button>
<el-button v-if="can('platform:firstleg:smart-loading:list')" type="primary" @click="smartLoadingOpen = true"><PackageOpen :size="16" />智能装柜</el-button>
</template>
<template #status-tabs>
<div ref="statusTabList" class="status-tabs density-status-tabs workbench-list-tabs" role="tablist" aria-label="订单主状态" :aria-busy="statusCountsLoading">
<button