change(CrmQuoteInfo): 隐藏有效期起字段并优化物料产品名称处理

- 根据需求隐藏报价单页面的有效期起字段,保留后端兼容
- 添加前端兜底逻辑确保标准物料产品名称不为空
- 优化报价单模板下载按钮的文案和样式
dev
zangch@mesnac.com 4 weeks ago
parent cb26fffc7b
commit 098d833c31

@ -68,6 +68,8 @@
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<!-- 按当前报价单页面要求暂时隐藏有效期起仅保留后端字段兼容历史数据与模板变量 -->
<!--
<el-col :span="12"> <el-col :span="12">
<el-form-item label="有效期起" prop="validFrom"> <el-form-item label="有效期起" prop="validFrom">
<el-date-picker <el-date-picker
@ -80,6 +82,7 @@
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
-->
<el-col :span="12"> <el-col :span="12">
<el-form-item label="有效期止" prop="validTo"> <el-form-item label="有效期止" prop="validTo">
<el-date-picker <el-date-picker
@ -151,16 +154,17 @@
:value="item.templateId" :value="item.templateId"
/> />
</el-select> </el-select>
<el-tooltip content="PDF预览" placement="top"> <el-button
<el-button link
link type="primary"
type="info" icon="Download"
icon="Download" :disabled="!form.templateId || !form.quoteId"
:disabled="!form.templateId || !form.quoteId" @click="handleQuoteTemplateDownload"
@click="handleQuoteTemplateDownload" style="font-weight: 600"
v-hasPermi="['oa/crm:crmQuoteInfo:export']" v-hasPermi="['oa/crm:crmQuoteInfo:export']"
/> >
</el-tooltip> 报价单查看
</el-button>
</div> </div>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -603,6 +607,16 @@ const materialRules = {
}; };
const saleMaterialSelectRef = ref<InstanceType<typeof SaleMaterialSelect>>(); const saleMaterialSelectRef = ref<InstanceType<typeof SaleMaterialSelect>>();
const openSaleMaterialSelect = () => saleMaterialSelectRef.value?.open(); 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 saleMaterialSelectCallBack = (data: any) => {
const list = data || []; const list = data || [];
if (list.length) { if (list.length) {
@ -620,6 +634,7 @@ const saleMaterialSelectCallBack = (data: any) => {
if (m.unitName) { if (m.unitName) {
materialForm.value.unitName = m.unitName; materialForm.value.unitName = m.unitName;
} }
ensureStandardMaterialProductName(materialForm.value as any);
} }
}; };
const handleMaterialFlagChange = (flag: string) => { const handleMaterialFlagChange = (flag: string) => {
@ -712,9 +727,12 @@ const submitMaterialForm = () => {
materialData.materialCode = undefined; materialData.materialCode = undefined;
materialData.materialName = undefined; materialData.materialName = undefined;
materialData.saleMaterialName = undefined; materialData.saleMaterialName = undefined;
} else if (!materialData.relationMaterialId && materialData.productName) { } else {
// ensureStandardMaterialProductName(materialData);
materialData.saleMaterialName = materialData.productName; if (!materialData.relationMaterialId && materialData.productName) {
//
materialData.saleMaterialName = materialData.productName;
}
} }
if (currentMaterialIndex.value !== null && currentMaterialIndex.value >= 0) { if (currentMaterialIndex.value !== null && currentMaterialIndex.value >= 0) {
materialRows.value[currentMaterialIndex.value] = materialData; materialRows.value[currentMaterialIndex.value] = materialData;
@ -954,10 +972,10 @@ const handleApprovalRecord = () => {
} }
}; };
/** 报价单模板预览/PDF导出 */ /** 报价单查看/PDF预览 */
const handleQuoteTemplateDownload = () => { const handleQuoteTemplateDownload = () => {
if (!form.quoteId) { if (!form.quoteId) {
proxy?.$modal.msgWarning('请先保存报价单后再导出PDF'); proxy?.$modal.msgWarning('请先保存报价单后再查看PDF');
return; return;
} }
if (!form.templateId) { if (!form.templateId) {

@ -206,11 +206,14 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="客户名称" align="center" prop="customerName" width="180" v-if="columns[22].visible" show-overflow-tooltip /> <el-table-column label="客户名称" align="center" prop="customerName" width="180" v-if="columns[22].visible" show-overflow-tooltip />
<!-- 按当前报价单页面要求暂时隐藏报价有效期起仅保留后端字段兼容历史数据 -->
<!--
<el-table-column label="报价有效期起" align="center" prop="validFrom" width="180" v-if="columns[9].visible"> <el-table-column label="报价有效期起" align="center" prop="validFrom" width="180" v-if="columns[9].visible">
<template #default="scope"> <template #default="scope">
<span>{{ parseTime(scope.row.validFrom, '{y}-{m}-{d} {h}:{i}:{s}') }}</span> <span>{{ parseTime(scope.row.validFrom, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
-->
<el-table-column label="报价有效期" align="center" prop="validDays" width="100" v-if="columns[10].visible" /> <el-table-column label="报价有效期" align="center" prop="validDays" width="100" v-if="columns[10].visible" />
<el-table-column label="报价有效期止" align="center" prop="validTo" width="180" v-if="columns[11].visible"> <el-table-column label="报价有效期止" align="center" prop="validTo" width="180" v-if="columns[11].visible">
<template #default="scope"> <template #default="scope">
@ -560,7 +563,7 @@ const columns = ref<FieldOption[]>([
{ key: 6, label: `业务方向`, visible: false }, { key: 6, label: `业务方向`, visible: false },
{ key: 7, label: `部门`, visible: false }, { key: 7, label: `部门`, visible: false },
{ key: 8, label: `报价日期`, visible: true }, { key: 8, label: `报价日期`, visible: true },
{ key: 9, label: `报价有效期起`, visible: true }, { key: 9, label: `报价有效期起`, visible: false },
{ key: 10, label: `报价有效期`, visible: false }, { key: 10, label: `报价有效期`, visible: false },
{ key: 11, label: `报价有效期止`, visible: true }, { key: 11, label: `报价有效期止`, visible: true },
{ key: 12, label: `交货期`, visible: false }, { key: 12, label: `交货期`, visible: false },

Loading…
Cancel
Save