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 @@ + +