diff --git a/src/modules/overseas-warehouse/components/RelabelQuantityPanel.vue b/src/modules/overseas-warehouse/components/RelabelQuantityPanel.vue index 17b447a..f3b2e06 100644 --- a/src/modules/overseas-warehouse/components/RelabelQuantityPanel.vue +++ b/src/modules/overseas-warehouse/components/RelabelQuantityPanel.vue @@ -6,8 +6,8 @@ const data = ref(null) const error = ref('') let generation = 0 function dimension(known: number, unknown: number, unit: string) { - if (unknown > 0 && known === 0) return `——(${unknown} 票)` - return `已知 ${known} ${unit}${unknown > 0 ? `(${unknown} 票 ——)` : ''}` + if (unknown > 0 && known === 0) return `—(${unknown} 票)` + return `已知 ${known} ${unit}${unknown > 0 ? `(${unknown} 票 —)` : ''}` } watch(() => [props.query, props.relabelNo], async () => { const current = ++generation diff --git a/src/modules/overseas-warehouse/views/WarehouseServiceView.vue b/src/modules/overseas-warehouse/views/WarehouseServiceView.vue index 8f1e6cb..08d7a15 100644 --- a/src/modules/overseas-warehouse/views/WarehouseServiceView.vue +++ b/src/modules/overseas-warehouse/views/WarehouseServiceView.vue @@ -277,7 +277,7 @@ const listColumns = computed(() => config.value.columns.map(( ? { key: 'actions', label, slotName: 'actions', width: props.service === 'transfer' ? 210 : 160, fixed: 'left' } : { key: String(index - 1), prop: String(index - 1), label, minWidth: label === '关联业务单号' ? 300 : index === 1 || label === '换标单号' ? 190 : 130, singleLine: label !== '关联业务单号', className: label === '关联业务单号' ? 'related-business-number-cell' : undefined, - slotName: props.service === 'labeling' && label === '换标类型' ? 'labelingType' : props.service === 'labeling' && label === '状态' ? 'labelingStatus' : props.service === 'transfer' && label === '换标状态' ? 'transferRelabelStatus' : props.service === 'transfer' && label === '状态' ? 'transferStatus' : undefined })) + slotName: props.service === 'labeling' && ['SKU 数(种)', '箱数', '贴标件数'].includes(label) ? 'labelingQuantity' : props.service === 'labeling' && label === '换标类型' ? 'labelingType' : props.service === 'labeling' && label === '状态' ? 'labelingStatus' : props.service === 'transfer' && label === '换标状态' ? 'transferRelabelStatus' : props.service === 'transfer' && label === '状态' ? 'transferStatus' : undefined })) const discardSelectedBoxKeys = ref([]) const discardBoxSearch = ref('') const discardCandidates = ref([]) @@ -1136,7 +1136,7 @@ async function load() { total.value = Number.isFinite(Number(result.total)) ? Number(result.total) : result.records.length submittedRows.value = result.records.map((item) => { const destinationWarehouses = warehouseDisplay(item.overseasWarehouseId) - return { ...row([item.relabelNo, (item.relatedBusinessOrderNos || []).join('、') || '—', destinationWarehouses, dimensionResult?.orders[item.relabelNo]?.skuCount ?? '——', dimensionResult?.orders[item.relabelNo]?.cartonCount ?? '——', dimensionResult?.orders[item.relabelNo]?.labelPieceCount ?? '——', (item.operationTypes || []).map(type => ({ CARTON_LABEL: '只换箱唛', SKU_LABEL: '只换 SKU', RETURN_BULK_SKU_LABEL: '只换 SKU', CARTON_AND_SKU: 'SKU 和箱唛都换' }[type] || type)).join('、') || '—', statusLabel(item.status), formatDateTime(item.createdAt)]), __status: item.status, __confirmedAt: item.customerConfirmedAt || '' } + return { ...row([item.relabelNo, (item.relatedBusinessOrderNos || []).join('、') || '—', destinationWarehouses, dimensionResult?.orders[item.relabelNo]?.skuCount ?? '—', dimensionResult?.orders[item.relabelNo]?.cartonCount ?? '—', dimensionResult?.orders[item.relabelNo]?.labelPieceCount ?? '—', (item.operationTypes || []).map(type => ({ CARTON_LABEL: '只换箱唛', SKU_LABEL: '只换 SKU', RETURN_BULK_SKU_LABEL: '只换 SKU', CARTON_AND_SKU: 'SKU 和箱唛都换' }[type] || type)).join('、') || '—', statusLabel(item.status), formatDateTime(item.createdAt)]), __status: item.status, __confirmedAt: item.customerConfirmedAt || '' } }) } else if (props.service === 'disposal') { const discardQuery = { page: page.value, size: pageSize.value, discardNo: filters.number || undefined, inboundCode: filters.inboundNo || undefined, overseasWarehouseId: filters.warehouse || undefined, status: filters.status || undefined, createdFrom: dateTime(filters.start), createdTo: dateTime(filters.end, true), completedFrom: dateTime(filters.completedStart), completedTo: dateTime(filters.completedEnd, true) } @@ -1711,6 +1711,7 @@ function addReturnBoxBinding(source: RelabelInventoryCandidate) { + @@ -1893,7 +1894,7 @@ function addReturnBoxBinding(source: RelabelInventoryCandidate) { -

订单概览

操作仓{{ warehouseDisplay(selectedRelabelDetail?.application.overseasWarehouseId) }}
关联单号{{ selectedRelabelDetail?.application.customerOrderNo || '—' }}
SKU 数(种){{ selectedRelabelDetail ? relabelSkuCount(selectedRelabelDetail.items) : '—' }}
箱数{{ selectedRelabelQuantity?.cartonCount ?? '——' }}
贴标截止时间{{ formatDateTime(selectedRelabelDetail?.application.labelDeadline) }}
仓库联系人{{ selectedRelabelDetail?.application.contactName || '—' }}
联系电话{{ selectedRelabelDetail?.application.contactPhone || '—' }}
创建时间{{ formatDateTime(selectedRelabelDetail?.application.createdAt) }}
状态{{ statusLabel(selectedDetail?.status || '') }}
目的去向{{ destinationTypeLabel(selectedDetail?.destinationType, selectedDetail?.fbaWarehouseCode) }}
FBA 目的仓{{ selectedDetail?.destinationWarehouseName || warehouseDisplay(selectedDetail?.destinationWarehouseCode || selectedDetail?.fbaWarehouseCode) }}
FBA 货件号{{ selectedDetail?.fbaShipmentNo || '—' }}
私人仓地址{{ selectedDetail?.privateDestinationAddress || '—' }}
邮编{{ selectedDetail?.privateDestinationPostalCode || '—' }}
私人仓联系人{{ selectedDetail?.privateDestinationContactName || '—' }}
联系电话{{ selectedDetail?.privateDestinationContactPhone || '—' }}
海外仓{{ warehouseDisplay(selectedDetail?.operatingWarehouseId) }}
预报 SKU 种数{{ new Set((selectedDetail?.items || []).map(item => item.skuCode).filter(Boolean)).size }}
预报 SKU 总件数{{ transferForecastQuantity }}
预计箱数{{ selectedDetail?.packageCount ?? '—' }}
实际签收箱数{{ countedTransferCartons().length ?? '—' }}
入仓方式{{ deliveryMethodLabel(selectedDetail?.deliveryMethod || '') }}
期望发货时间{{ formatDateTime(selectedDetail?.estimatedShipAt) }}
实际发货时间{{ formatDateTime(selectedDetail?.actualShipAt) }}
是否换标{{ selectedDetail?.needRelabel ? '是' : '否' }}
换标状态{{ transferRelabelStatus(selectedDetail || {}).label }}
换标单号{{ selectedDetail?.relabelNo || '—' }}
创建时间{{ formatDateTime(selectedDetail?.createdAt) }}
废弃申请单号{{ selectedDetail?.discardNo || '—' }}
废弃出库单号{{ selectedDetail?.outboundNo || '—' }}
进仓编号{{ selectedDetail?.inboundCodes || '—' }}
操作仓{{ selectedDetail?.overseasWarehouseName || '—' }}
SKU 汇总{{ [...new Set((selectedDetail?.items || []).map(item => item.skuCode).filter(Boolean))].join('、') || '未记录' }}
申请箱数{{ selectedDetail?.requestedPackages ?? '未记录' }}
预估费用{{ selectedDetail?.currency || 'USD' }} {{ selectedDetail?.totalFee ?? '未记录' }}
状态{{ statusLabel(selectedDetail?.status || '') }}
废弃完成时间{{ formatDateTime(selectedDetail?.customerConfirmedAt) }}
创建时间{{ formatDateTime(selectedDetail?.createdAt) }}
{{ column }}{{ selectedDetail?.[String(index)] || '—' }}
+

订单概览

操作仓{{ warehouseDisplay(selectedRelabelDetail?.application.overseasWarehouseId) }}
关联单号{{ selectedRelabelDetail?.application.customerOrderNo || '—' }}
SKU 数(种){{ selectedRelabelDetail ? relabelSkuCount(selectedRelabelDetail.items) : '—' }}
箱数{{ selectedRelabelQuantity?.cartonCount ?? '—' }}
贴标截止时间{{ formatDateTime(selectedRelabelDetail?.application.labelDeadline) }}
仓库联系人{{ selectedRelabelDetail?.application.contactName || '—' }}
联系电话{{ selectedRelabelDetail?.application.contactPhone || '—' }}
创建时间{{ formatDateTime(selectedRelabelDetail?.application.createdAt) }}
状态{{ statusLabel(selectedDetail?.status || '') }}
目的去向{{ destinationTypeLabel(selectedDetail?.destinationType, selectedDetail?.fbaWarehouseCode) }}
FBA 目的仓{{ selectedDetail?.destinationWarehouseName || warehouseDisplay(selectedDetail?.destinationWarehouseCode || selectedDetail?.fbaWarehouseCode) }}
FBA 货件号{{ selectedDetail?.fbaShipmentNo || '—' }}
私人仓地址{{ selectedDetail?.privateDestinationAddress || '—' }}
邮编{{ selectedDetail?.privateDestinationPostalCode || '—' }}
私人仓联系人{{ selectedDetail?.privateDestinationContactName || '—' }}
联系电话{{ selectedDetail?.privateDestinationContactPhone || '—' }}
海外仓{{ warehouseDisplay(selectedDetail?.operatingWarehouseId) }}
预报 SKU 种数{{ new Set((selectedDetail?.items || []).map(item => item.skuCode).filter(Boolean)).size }}
预报 SKU 总件数{{ transferForecastQuantity }}
预计箱数{{ selectedDetail?.packageCount ?? '—' }}
实际签收箱数{{ countedTransferCartons().length ?? '—' }}
入仓方式{{ deliveryMethodLabel(selectedDetail?.deliveryMethod || '') }}
期望发货时间{{ formatDateTime(selectedDetail?.estimatedShipAt) }}
实际发货时间{{ formatDateTime(selectedDetail?.actualShipAt) }}
是否换标{{ selectedDetail?.needRelabel ? '是' : '否' }}
换标状态{{ transferRelabelStatus(selectedDetail || {}).label }}
换标单号{{ selectedDetail?.relabelNo || '—' }}
创建时间{{ formatDateTime(selectedDetail?.createdAt) }}
废弃申请单号{{ selectedDetail?.discardNo || '—' }}
废弃出库单号{{ selectedDetail?.outboundNo || '—' }}
进仓编号{{ selectedDetail?.inboundCodes || '—' }}
操作仓{{ selectedDetail?.overseasWarehouseName || '—' }}
SKU 汇总{{ [...new Set((selectedDetail?.items || []).map(item => item.skuCode).filter(Boolean))].join('、') || '未记录' }}
申请箱数{{ selectedDetail?.requestedPackages ?? '未记录' }}
预估费用{{ selectedDetail?.currency || 'USD' }} {{ selectedDetail?.totalFee ?? '未记录' }}
状态{{ statusLabel(selectedDetail?.status || '') }}
废弃完成时间{{ formatDateTime(selectedDetail?.customerConfirmedAt) }}
创建时间{{ formatDateTime(selectedDetail?.createdAt) }}
{{ column }}{{ selectedDetail?.[String(index)] || '—' }}

本次废弃箱子

入仓码SKU品名申请数量所选箱唛
{{ item.inboundCode || '—' }}{{ item.skuCode || '—' }}{{ item.productName || '—' }}{{ item.discardPackages ?? '—' }} {{ item.quantityUnit || '单位未记录' }}
实际:{{ item.actualDiscardPackages == null ? '未记录' : `${item.actualDiscardPackages} ${item.quantityUnit || '单位未记录'}` }}
{{ item.cartonMarks?.join('、') || '全部库存(历史记录无箱唛快照)' }}
@@ -1977,7 +1978,7 @@ function addReturnBoxBinding(source: RelabelInventoryCandidate) {

换标任务明细

- +
换标模式我方箱唛新 FBA 箱唛FBA 目的仓任务数量/单位商品 SKUSKU 换标明细FBA 货件编号贴标要求备注
{{ item.operationType === 'CARTON_AND_SKU' ? '箱唛 + SKU 换标' : ['SKU_LABEL', 'RETURN_BULK_SKU_LABEL'].includes(item.operationType || '') ? 'SKU 换标' : '箱唛换标' }}{{ item.cartonMark || '—' }}{{ item.fbaCartonMark || '—' }}{{ warehouseDisplay(item.destinationFbaWarehouseCode) }}{{ item.totalPackageCount ?? '——' }} {{ String(item.operationType) === 'RETURN_BULK_SKU_LABEL' ? '件' : '箱任务' }}{{ relabelSkuCodes(item).join('、') || '—' }}{{ item.newSkuCode || '—' }}{{ item.shipmentNo || '—' }}{{ item.labelRequirement || '—' }}{{ item.remark || '—' }}
{{ item.operationType === 'CARTON_AND_SKU' ? '箱唛 + SKU 换标' : ['SKU_LABEL', 'RETURN_BULK_SKU_LABEL'].includes(item.operationType || '') ? 'SKU 换标' : '箱唛换标' }}{{ item.cartonMark || '—' }}{{ item.fbaCartonMark || '—' }}{{ warehouseDisplay(item.destinationFbaWarehouseCode) }}—{{ relabelSkuCodes(item).join('、') || '—' }}{{ item.newSkuCode || '—' }}{{ item.shipmentNo || '—' }}{{ item.labelRequirement || '—' }}{{ item.remark || '—' }}
暂无换标任务明细
@@ -1987,6 +1988,7 @@ function addReturnBoxBinding(source: RelabelInventoryCandidate) {