From 7cc3c152851a0e137e71dbf17918ab1e3d290f8f Mon Sep 17 00:00:00 2001 From: "han\\hanst" Date: Tue, 10 Feb 2026 11:12:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A8=A1=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/modules/ecss/del_upload_excel.vue | 79 +++++++++++++++++---- 1 file changed, 66 insertions(+), 13 deletions(-) diff --git a/src/views/modules/ecss/del_upload_excel.vue b/src/views/modules/ecss/del_upload_excel.vue index b5e3a32..9d945d6 100644 --- a/src/views/modules/ecss/del_upload_excel.vue +++ b/src/views/modules/ecss/del_upload_excel.vue @@ -1613,26 +1613,71 @@ this.invalidMaterialsDialog.materials = [] }, - // 保存模板修改 + /** + * 检查行数据是否已准备好保存模板 + * @param {Object} row - 行数据 + * @return {boolean} 是否可以保存 + */ + isRowReadyForSave(row) { + return !!(row.selectedTemplate && + row.selectedTemplate.trim() && + row.selectedCustomer && + row.selectedCustomer.trim()) + }, + + /** + * 保存模板修改 + * @param {Object} row - 行数据 + */ async saveTemplateChanges(row) { // 验证必填字段 - if (!row.selectedTemplate) { - this.$message.warning('请先选择客户模板') + if (!row.selectedTemplate || !row.selectedTemplate.trim()) { + this.$message.warning('请输入模板名称') return } - if (!row.selectedCustomer) { + if (!row.selectedCustomer || !row.selectedCustomer.trim()) { this.$message.warning('请填写客户信息') return } + // 判断操作类型,给用户明确提示 + const isNewTemplate = !row.originalTemplateName || row.originalTemplateName === '' + const isNameChanged = row.originalTemplateName && row.selectedTemplate !== row.originalTemplateName + + let confirmMessage = '' + if (isNewTemplate) { + // 手动输入的新模板名 + confirmMessage = `确定要保存模板"${row.selectedTemplate}"吗?\n\n如果此模板名已存在,将会覆盖原有模板内容!` + } else if (isNameChanged) { + // 基于已选模板另存为新模板 + confirmMessage = `确定要将模板"${row.originalTemplateName}"另存为"${row.selectedTemplate}"吗?\n\n如果"${row.selectedTemplate}"已存在,将会覆盖原有模板内容!` + } else { + // 更新原有模板 + confirmMessage = `确定要更新模板"${row.selectedTemplate}"吗?\n\n此操作将覆盖原有模板内容!` + } + + // 弹出确认对话框 + try { + await this.$confirm(confirmMessage, '操作确认', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', + distinguishCancelAndClose: true + }) + } catch (error) { + // 用户取消操作 + return + } + // 准备保存数据 const templateData = { - templateNo: row.templateNo, - ccuscode: row.ccuscode, - templateName: row.selectedTemplate, - originalTemplateName: row.originalTemplateName || row.selectedTemplate, // 原始模板名称 - ccusname: row.selectedCustomer, + templateName: row.selectedTemplate.trim(), + // ✅ 修复Bug:保持空字符串不变,不要用 || 运算符替换 + // 空字符串表示"新增或更新同名模板",非空表示"基于原模板修改" + originalTemplateName: row.originalTemplateName || '', + ccuscode: '', // 后端会根据实际情况自动处理 + ccusname: row.selectedCustomer.trim(), localShipAddress: row.selectedLocalAddress || '', overseasShipper: row.selectedOverseasShipper || '', overseasAddress: row.selectedOverseasAddress || '', @@ -1644,13 +1689,21 @@ const { data } = await updateCustomerTemplate(templateData) if (data && data.code === 0) { - // 如果模板名称变化了,提示用户已创建新模板 - const isNameChanged = row.originalTemplateName && row.selectedTemplate !== row.originalTemplateName - if (isNameChanged) { - this.$message.success(`新模板"${row.selectedTemplate}"创建成功!`) + // 判断是新增还是修改,给出不同的成功提示 + if (isNewTemplate) { + this.$message.success(`模板"${row.selectedTemplate}"保存成功!`) + // 保存成功后更新 originalTemplateName,下次保存时就是修改模式 + row.originalTemplateName = row.selectedTemplate + } else if (isNameChanged) { + this.$message.success(`新模板"${row.selectedTemplate}"另存成功!`) + // 另存为成功后更新 originalTemplateName + row.originalTemplateName = row.selectedTemplate } else { this.$message.success(`模板"${row.selectedTemplate}"更新成功!`) } + + // 保存成功后更新缓存 + this.saveToCache() } else { this.$message.error(data.msg || '保存模板失败') }