From 25978401e1b7b0493b7e7c5607ca644c5ef29c05 Mon Sep 17 00:00:00 2001 From: zlwu <704541015@qq.com> Date: Mon, 27 Jul 2026 21:15:41 +0800 Subject: [PATCH] feat(web-admin): allow multi planIds in transport slip print dialogs Co-authored-by: Cursor --- .../pl-delivery-slip-print-dialog/index.vue | 26 ++++++++++++++----- .../pl-inbound-slip-print-dialog/index.vue | 23 +++++++++++----- .../pl-subpack-slip-print-dialog/index.vue | 25 +++++++++++++----- 3 files changed, 55 insertions(+), 19 deletions(-) diff --git a/web-admin/src/components/business/pl-delivery-slip-print-dialog/index.vue b/web-admin/src/components/business/pl-delivery-slip-print-dialog/index.vue index ae30ee559..fa81ca34d 100644 --- a/web-admin/src/components/business/pl-delivery-slip-print-dialog/index.vue +++ b/web-admin/src/components/business/pl-delivery-slip-print-dialog/index.vue @@ -69,6 +69,7 @@ import { setupDeliverySlipEditorTypeCheckboxes, type DeliverySlipRenderContext } from '@/utils/pl-delivery-slip-template' +import { buildBatchPrintPlanView, normalizePlanIds } from '@/utils/pl-batch-print' import { injectSlipSealImages, stripSlipSealImages } from '@/utils/pl-slip-red-seal' import { getPlSlipPdfCanvasScale } from '@/utils/pl-slip-pdf-render' @@ -136,19 +137,32 @@ async function buildSlipRenderContext(plan: Plan): Promise 1 ? '正在生成合打送(提)货单...' : '正在生成送(提)货单...', + duration: 800 + }) + const plans = await Promise.all( + ids.map(async (id) => { + const res = await planApi.get(id) + return (res.data ?? res) as Plan + }) + ) + const plan = ids.length === 1 ? plans[0] : buildBatchPrintPlanView(plans) currentPlan.value = plan let htmlContent = '' try { - const templateRes = await planApi.getDeliverySlipTemplate(planId) + const templateRes = await planApi.getDeliverySlipTemplate(ids[0]) const saved = (templateRes.data ?? templateRes) as string if (saved?.trim()) { htmlContent = saved diff --git a/web-admin/src/components/business/pl-inbound-slip-print-dialog/index.vue b/web-admin/src/components/business/pl-inbound-slip-print-dialog/index.vue index b79285f60..3b092ed31 100644 --- a/web-admin/src/components/business/pl-inbound-slip-print-dialog/index.vue +++ b/web-admin/src/components/business/pl-inbound-slip-print-dialog/index.vue @@ -67,6 +67,7 @@ import { restoreInboundSlipPlaceholders, type InboundSlipRenderContext } from '@/utils/pl-inbound-slip-template' +import { buildBatchPrintPlanView, normalizePlanIds } from '@/utils/pl-batch-print' import { injectSlipSealImages, stripSlipSealImages } from '@/utils/pl-slip-red-seal' import { getPlSlipPdfCanvasScale } from '@/utils/pl-slip-pdf-render' @@ -134,19 +135,29 @@ async function buildSlipRenderContext(plan: Plan): Promise 1 ? '正在生成合打入库单...' : '正在生成入库单...', duration: 800 }) + const plans = await Promise.all( + ids.map(async (id) => { + const res = await planApi.get(id) + return (res.data ?? res) as Plan + }) + ) + const plan = ids.length === 1 ? plans[0] : buildBatchPrintPlanView(plans) currentPlan.value = plan let htmlContent = '' try { - const templateRes = await planApi.getInboundSlipTemplate(planId) + const templateRes = await planApi.getInboundSlipTemplate(ids[0]) const saved = (templateRes.data ?? templateRes) as string if (saved?.trim()) { htmlContent = saved diff --git a/web-admin/src/components/business/pl-subpack-slip-print-dialog/index.vue b/web-admin/src/components/business/pl-subpack-slip-print-dialog/index.vue index 3bdd41dd6..176abcd7a 100644 --- a/web-admin/src/components/business/pl-subpack-slip-print-dialog/index.vue +++ b/web-admin/src/components/business/pl-subpack-slip-print-dialog/index.vue @@ -70,6 +70,7 @@ import { setupSubpackSlipEditorCheckboxes, type SubpackSlipRenderContext } from '@/utils/pl-subpack-slip-template' +import { buildBatchPrintPlanView, normalizePlanIds } from '@/utils/pl-batch-print' import { injectSlipSealImages, stripSlipSealImages } from '@/utils/pl-slip-red-seal' import { getPlSlipPdfCanvasScale } from '@/utils/pl-slip-pdf-render' @@ -127,22 +128,32 @@ async function buildSlipRenderContext(plan: Plan): Promise 1 ? '正在生成合打分装单...' : '正在生成分装单...', duration: 800 }) + const plans = await Promise.all( + ids.map(async (id) => { + const res = await planApi.get(id) + return (res.data ?? res) as Plan + }) + ) + const plan = ids.length === 1 ? plans[0] : buildBatchPrintPlanView(plans) currentPlan.value = plan - const slipNoRes = await planApi.ensureSubpackSlipNo(planId) + const slipNoRes = await planApi.ensureSubpackSlipNo(ids[0]) currentSubpackSlipNo.value = String((slipNoRes as { data?: string }).data ?? slipNoRes ?? '').trim() let htmlContent = '' try { - const templateRes = await planApi.getSubpackSlipTemplate(planId) + const templateRes = await planApi.getSubpackSlipTemplate(ids[0]) const saved = (templateRes.data ?? templateRes) as string if (saved?.trim()) { htmlContent = saved