From f6cd60ec613aceba15f6e49600dd4c857c1fc2f5 Mon Sep 17 00:00:00 2001 From: liuyihe <2513762445@qq.com> Date: Fri, 28 Aug 2026 15:15:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=B0=BE=E7=A8=8B=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=90=88=E6=89=98=E5=85=B3=E8=81=94=E4=B8=8E=E5=8F=96?= =?UTF-8?q?=E6=B6=88=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../overseas-warehouse/api/lastMileOrders.ts | 3 +++ .../overseas-warehouse/lastMilePresentation.ts | 3 +++ .../pages/LastMileOrdersView.vue | 18 +++++++++++++++++- src/modules/overseas-warehouse/types.ts | 1 + 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/modules/overseas-warehouse/api/lastMileOrders.ts b/src/modules/overseas-warehouse/api/lastMileOrders.ts index b1057285..859aaab3 100644 --- a/src/modules/overseas-warehouse/api/lastMileOrders.ts +++ b/src/modules/overseas-warehouse/api/lastMileOrders.ts @@ -72,6 +72,9 @@ export interface LastMileOrderSummaryDto { relabelOrderNo?: string | null relabelStatus?: string | null palletMergeFlag?: string | null + /** Optional grouping facts returned by newer last-leg services. */ + palletMergeBatchId?: string | null + palletMergeOrderNos?: string[] | null currentStatus?: string | null privateRemark?: string | null customerRemark?: string | null diff --git a/src/modules/overseas-warehouse/lastMilePresentation.ts b/src/modules/overseas-warehouse/lastMilePresentation.ts index d01d1ba8..591158f8 100644 --- a/src/modules/overseas-warehouse/lastMilePresentation.ts +++ b/src/modules/overseas-warehouse/lastMilePresentation.ts @@ -99,6 +99,9 @@ export function toLastMileOrderListItem(dto: LastMileOrderSummaryDto): LastMileO relabelStatus: lastMileStatusLabel(dto.relabelStatus), consolidated: palletMergeLabel(dto.palletMergeFlag), palletMergeFlag: String(dto.palletMergeFlag ?? '').trim(), + palletMergeRelation: Array.isArray(dto.palletMergeOrderNos) && dto.palletMergeOrderNos.length + ? dto.palletMergeOrderNos.map((value) => text(value)).join('、') + : dto.palletMergeBatchId ? `批次 ${text(dto.palletMergeBatchId)}` : '—', status: lastMileStatusLabel(dto.currentStatus), internalRemark: text(dto.privateRemark), customerRemark: text(dto.customerRemark), diff --git a/src/modules/overseas-warehouse/pages/LastMileOrdersView.vue b/src/modules/overseas-warehouse/pages/LastMileOrdersView.vue index 1091fb5f..67a1b931 100644 --- a/src/modules/overseas-warehouse/pages/LastMileOrdersView.vue +++ b/src/modules/overseas-warehouse/pages/LastMileOrdersView.vue @@ -89,6 +89,7 @@ const columns: DataTableColumn[] = [ { key: 'relabelOrderNo', prop: 'relabelOrderNo', label: '换标单号', minWidth: 150 }, { key: 'relabelStatus', prop: 'relabelStatus', label: '换标状态', width: 110 }, { key: 'consolidated', prop: 'consolidated', label: '合托标记', width: 100 }, + { key: 'palletMergeRelation', prop: 'palletMergeRelation', label: '合托关联订单', minWidth: 180 }, { key: 'status', prop: 'status', label: '当前状态', width: 110 }, { key: 'createdAt', prop: 'createdAt', label: '创建时间', minWidth: 170 }, { key: 'internalRemark', prop: 'internalRemark', label: '备注(仅自己)', minWidth: 160 }, @@ -197,6 +198,21 @@ async function batchPalletMerge() { } catch (error) { actionError.value = getApiErrorDetails(error, '批量合托标记失败,请重试') } finally { actionLoading.value = false } } +async function cancelBatchPalletMerge() { + const targets = selectedRows.value.filter((row) => row.palletMergeFlag === 'REQUIRED') + if (!targets.length) { ElMessage.warning('请选择至少 1 条待合托订单'); return } + try { + await ElMessageBox.confirm(`确定取消选中的 ${targets.length} 条订单合托标记吗?`, '取消合托标记', { type: 'warning', confirmButtonText: '确认取消', cancelButtonText: '返回' }) + } catch { return } + actionLoading.value = true; actionError.value = null + try { + await Promise.all(targets.map((row) => setLastMileOrderPalletMergeRequired(row.id, { palletMergeRequired: false }))) + selectedRows.value = [] + ElMessage.success(`已取消 ${targets.length} 条订单合托标记`) + await load() + } catch (error) { actionError.value = getApiErrorDetails(error, '取消合托标记失败,请重试') } + finally { actionLoading.value = false } +} async function submitTransfer() { if (!transferForm.warehouseId.trim() || !transferForm.warehouseCode.trim() || !transferForm.warehouseName.trim()) { ElMessage.warning('请填写目的仓 ID、代码和名称') @@ -244,7 +260,7 @@ onMounted(() => { void load() })
- +
diff --git a/src/modules/overseas-warehouse/types.ts b/src/modules/overseas-warehouse/types.ts index 05fe3258..9de832a2 100644 --- a/src/modules/overseas-warehouse/types.ts +++ b/src/modules/overseas-warehouse/types.ts @@ -37,6 +37,7 @@ export interface LastMileOrderListItem { relabelStatus: string consolidated: string palletMergeFlag: string + palletMergeRelation: string status: string internalRemark: string customerRemark: string