From bae32191465d315ae1fb443cfb49ed7260e47f45 Mon Sep 17 00:00:00 2001 From: hwj Date: Thu, 28 May 2026 16:23:02 +0800 Subject: [PATCH] =?UTF-8?q?style=EF=BC=9A=E6=89=93=E5=8D=B0/=E6=8A=A5?= =?UTF-8?q?=E8=A1=A8-=E6=A8=A1=E6=9D=BF=E7=AE=A1=E7=90=86=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E7=BA=B8=E5=BC=A0=E5=B0=BA=E5=AF=B8=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../printTemplate/PrintTemplateDesigner.vue | 39 +++++++++++++++---- .../printTemplate/ReportTemplateDesigner.vue | 39 +++++++++++++++---- 2 files changed, 62 insertions(+), 16 deletions(-) diff --git a/src/views/mes/printTemplate/PrintTemplateDesigner.vue b/src/views/mes/printTemplate/PrintTemplateDesigner.vue index 6708ddde..dae7097e 100644 --- a/src/views/mes/printTemplate/PrintTemplateDesigner.vue +++ b/src/views/mes/printTemplate/PrintTemplateDesigner.vue @@ -307,10 +307,13 @@ const paperTypes = { B4: { width: 250, height: 352.6 }, B5: { width: 250, height: 175.6 } } -const curPaper = ref({ +const defaultPaperConfig = { type: 'A4', width: 210, height: 296.6 +} +const curPaper = ref({ + ...defaultPaperConfig }) const paperPopVisible = ref(false) const paperWidth = ref(220) @@ -342,6 +345,31 @@ let iconSelectEventKey = '' let iconSelectHandler: ((payload: any) => void) | undefined let clearSettingHandler: (() => void) | undefined +const normalizePaperConfig = (value: any) => { + const width = Number(value?.width) + const height = Number(value?.height) + if (width <= 0 || height <= 0 || Number.isNaN(width) || Number.isNaN(height)) { + return { ...defaultPaperConfig } + } + return { + type: typeof value?.type === 'string' && value.type ? value.type : 'other', + width, + height + } +} + +const applyPaperConfig = (value: any) => { + const paper = normalizePaperConfig(value) + curPaper.value = paper + paperWidth.value = paper.width + paperHeight.value = paper.height +} + +const getTemplatePaperConfig = (value: any) => { + const panel = Array.isArray(value?.panels) ? value.panels[0] : undefined + return panel +} + const ensureInit = () => { if (hiprintInited) { return @@ -549,13 +577,7 @@ const handleSave = async () => { const resetState = () => { scaleValue.value = 1 setSelectedIconState(null) - curPaper.value = { - type: 'A4', - width: 210, - height: 296.6 - } - paperWidth.value = 220 - paperHeight.value = 80 + applyPaperConfig(defaultPaperConfig) paperPopVisible.value = false } @@ -564,6 +586,7 @@ const open = async (row: any) => { dialogTitle.value = `${t('TemplateManagement.PrintTemplate.designTitle')}${row.templateName ? ' - ' + row.templateName : ''}` currentTemplateJson.value = row.templateJson ? (typeof row.templateJson === 'string' ? JSON.parse(row.templateJson) : row.templateJson) : undefined resetState() + applyPaperConfig(getTemplatePaperConfig(currentTemplateJson.value)) await loadBarcodeDictData() dialogVisible.value = true await nextTick() diff --git a/src/views/mes/printTemplate/ReportTemplateDesigner.vue b/src/views/mes/printTemplate/ReportTemplateDesigner.vue index 44c127a2..9aeed5ff 100644 --- a/src/views/mes/printTemplate/ReportTemplateDesigner.vue +++ b/src/views/mes/printTemplate/ReportTemplateDesigner.vue @@ -528,10 +528,13 @@ const paperTypes = { B4: { width: 250, height: 352.6 }, B5: { width: 250, height: 175.6 } } -const curPaper = ref({ +const defaultPaperConfig = { type: 'A4', width: 210, height: 296.6 +} +const curPaper = ref({ + ...defaultPaperConfig }) const paperPopVisible = ref(false) const paperWidth = ref(220) @@ -563,6 +566,31 @@ let iconSelectEventKey = '' let iconSelectHandler: ((payload: any) => void) | undefined let clearSettingHandler: (() => void) | undefined +const normalizePaperConfig = (value: any) => { + const width = Number(value?.width) + const height = Number(value?.height) + if (width <= 0 || height <= 0 || Number.isNaN(width) || Number.isNaN(height)) { + return { ...defaultPaperConfig } + } + return { + type: typeof value?.type === 'string' && value.type ? value.type : 'other', + width, + height + } +} + +const applyPaperConfig = (value: any) => { + const paper = normalizePaperConfig(value) + curPaper.value = paper + paperWidth.value = paper.width + paperHeight.value = paper.height +} + +const getTemplatePaperConfig = (value: any) => { + const panel = Array.isArray(value?.panels) ? value.panels[0] : undefined + return panel +} + const ensureInit = () => { if (hiprintInited) { return @@ -788,13 +816,7 @@ const handleSave = async () => { const resetState = () => { scaleValue.value = 1 setSelectedIconState(null) - curPaper.value = { - type: 'A4', - width: 210, - height: 296.6 - } - paperWidth.value = 220 - paperHeight.value = 80 + applyPaperConfig(defaultPaperConfig) paperPopVisible.value = false } @@ -803,6 +825,7 @@ const open = async (row: any) => { dialogTitle.value = `${t('TemplateManagement.PrintTemplate.designTitle')}${row.templateName ? ' - ' + row.templateName : ''}` currentTemplateJson.value = row.templateJson ? (typeof row.templateJson === 'string' ? JSON.parse(row.templateJson) : row.templateJson) : undefined resetState() + applyPaperConfig(getTemplatePaperConfig(currentTemplateJson.value)) dialogVisible.value = true await nextTick() ensureInit()