From 098d833c31b0ea54816b1abb0e755e00e92db140 Mon Sep 17 00:00:00 2001 From: "zangch@mesnac.com" Date: Mon, 23 Mar 2026 16:35:48 +0800 Subject: [PATCH] =?UTF-8?q?change(CrmQuoteInfo):=20=E9=9A=90=E8=97=8F?= =?UTF-8?q?=E6=9C=89=E6=95=88=E6=9C=9F=E8=B5=B7=E5=AD=97=E6=AE=B5=E5=B9=B6?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=89=A9=E6=96=99=E4=BA=A7=E5=93=81=E5=90=8D?= =?UTF-8?q?=E7=A7=B0=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 根据需求隐藏报价单页面的有效期起字段,保留后端兼容 - 添加前端兜底逻辑确保标准物料产品名称不为空 - 优化报价单模板下载按钮的文案和样式 --- src/views/oa/crm/crmQuoteInfo/edit.vue | 48 +++++++++++++++++-------- src/views/oa/crm/crmQuoteInfo/index.vue | 5 ++- 2 files changed, 37 insertions(+), 16 deletions(-) diff --git a/src/views/oa/crm/crmQuoteInfo/edit.vue b/src/views/oa/crm/crmQuoteInfo/edit.vue index 161a9d3..4b59702 100644 --- a/src/views/oa/crm/crmQuoteInfo/edit.vue +++ b/src/views/oa/crm/crmQuoteInfo/edit.vue @@ -68,6 +68,8 @@ /> + + - - - + + 报价单查看 + @@ -603,6 +607,16 @@ const materialRules = { }; const saleMaterialSelectRef = ref>(); const openSaleMaterialSelect = () => saleMaterialSelectRef.value?.open(); +const ensureStandardMaterialProductName = ( + row: CrmQuoteMaterialForm & { materialFlag?: string; materialName?: string; saleMaterialName?: string } +) => { + if (row.materialFlag !== '1' || row.productName) { + return; + } + // 标准物料新增时前端先兜底一次,避免用户未手填产品名称时表格显示为空; + // 真正的客户销售物料关联仍以后端保存逻辑为准,前后端共同保证不漏建。 + row.productName = row.saleMaterialName || row.materialName || undefined; +}; const saleMaterialSelectCallBack = (data: any) => { const list = data || []; if (list.length) { @@ -620,6 +634,7 @@ const saleMaterialSelectCallBack = (data: any) => { if (m.unitName) { materialForm.value.unitName = m.unitName; } + ensureStandardMaterialProductName(materialForm.value as any); } }; const handleMaterialFlagChange = (flag: string) => { @@ -712,9 +727,12 @@ const submitMaterialForm = () => { materialData.materialCode = undefined; materialData.materialName = undefined; materialData.saleMaterialName = undefined; - } else if (!materialData.relationMaterialId && materialData.productName) { - // 保存前的本地表格先展示用户最新输入的产品名称,真正的销售物料关联由后端保存时补齐。 - materialData.saleMaterialName = materialData.productName; + } else { + ensureStandardMaterialProductName(materialData); + if (!materialData.relationMaterialId && materialData.productName) { + // 保存前的本地表格先展示用户最新输入的产品名称,真正的销售物料关联由后端保存时补齐。 + materialData.saleMaterialName = materialData.productName; + } } if (currentMaterialIndex.value !== null && currentMaterialIndex.value >= 0) { materialRows.value[currentMaterialIndex.value] = materialData; @@ -954,10 +972,10 @@ const handleApprovalRecord = () => { } }; -/** 报价单模板预览/PDF导出 */ +/** 报价单查看/PDF预览 */ const handleQuoteTemplateDownload = () => { if (!form.quoteId) { - proxy?.$modal.msgWarning('请先保存报价单后再导出PDF'); + proxy?.$modal.msgWarning('请先保存报价单后再查看PDF'); return; } if (!form.templateId) { diff --git a/src/views/oa/crm/crmQuoteInfo/index.vue b/src/views/oa/crm/crmQuoteInfo/index.vue index 44f0ebb..ca87aba 100644 --- a/src/views/oa/crm/crmQuoteInfo/index.vue +++ b/src/views/oa/crm/crmQuoteInfo/index.vue @@ -206,11 +206,14 @@ + +