# 批量添加样品功能说明 ## 功能概述 在入库单管理页面中,新增了"批量添加样品"功能,允许用户通过输入多行SN号快速创建多条样品记录。 ## 功能位置 **页面**:入库单管理 → 新增/编辑入库单对话框 → 样品信息区域 **按钮**:在"添加样品"按钮旁边,有一个绿色的"批量添加样品"按钮 ## 使用方法 ### 步骤1:打开批量添加对话框 1. 在入库单管理页面,点击"新增"或"修改"按钮打开入库单对话框 2. 滚动到"样品信息"区域 3. 点击"批量添加样品"按钮 ### 步骤2:输入样品SN号 在文本框中输入样品SN号,**每行一个SN号**,例如: ``` SN001 SN002 SN003 242323950 DGMK V1.1 PCBA ``` ### 步骤3:确认添加 点击"确定"按钮,系统将: 1. 自动识别每一行的SN号 2. 跳过空行 3. 检查SN号是否已存在(避免重复) 4. 为每个有效的SN号创建一条样品记录 5. 显示成功添加的样品数量 ## 功能特点 ### 1. 智能处理 - ✅ 自动去除每行前后的空格 - ✅ 自动跳过空行 - ✅ 自动检测重复的SN号,避免重复添加 ### 2. 批量创建 - ✅ 一次可以添加多条样品记录 - ✅ 每条记录自动填充SN号 - ✅ 其他字段(型号、硬件版本等)保持为空,可后续手动填写 ### 3. 用户友好 - ✅ 清晰的提示信息 - ✅ 实时反馈添加结果 - ✅ 防止误操作(点击对话框外部不会关闭) ## 字段说明 批量添加的样品记录包含以下字段: | 字段 | 说明 | 批量添加时的值 | |------|------|----------------| | 样品SN | 样品序列号 | **自动填充**(从输入的文本中获取) | | 样品型号 | 样品的型号 | 空(需手动填写) | | 硬件版本号 | 硬件版本 | 空(需手动填写) | | 样品外观状态 | 外观状态 | 空(需手动填写) | | 计划测试截止日期 | 测试截止日期 | 空(需手动填写) | | 计划测试项 | 测试项目 | 空(需手动填写) | | 状态 | 样品状态 | 正常(默认值) | ## 使用场景 ### 场景1:快速录入多个样品 当收到一批样品时,可以先批量录入所有SN号,然后再逐个补充其他信息。 **示例**: ``` 收到10个样品,SN号分别为: SN001, SN002, SN003, ..., SN010 操作: 1. 点击"批量添加样品" 2. 输入10个SN号(每行一个) 3. 点击确定 4. 系统自动创建10条样品记录 5. 逐个补充型号、版本等信息 ``` ### 场景2:从Excel或文本文件导入 如果SN号已经在Excel或文本文件中,可以直接复制粘贴。 **操作**: 1. 在Excel中选中SN号列 2. 复制(Ctrl+C) 3. 在批量添加对话框中粘贴(Ctrl+V) 4. 点击确定 ### 场景3:避免重复录入 系统会自动检测重复的SN号,避免重复添加。 **示例**: ``` 已有样品:SN001, SN002 批量添加:SN002, SN003, SN004 结果: - SN002 已存在,跳过 - SN003 添加成功 - SN004 添加成功 - 提示:成功添加 2 条样品记录 ``` ## 注意事项 ### 1. SN号格式 - 每行只能输入一个SN号 - SN号可以包含字母、数字、特殊字符 - 系统会自动去除前后空格 ### 2. 重复检测 - 系统会检查当前入库单中是否已存在相同的SN号 - 如果存在,该SN号会被跳过,不会重复添加 - 最终会显示实际添加的样品数量 ### 3. 后续操作 - 批量添加后,其他字段(型号、版本等)需要手动填写 - 可以在表格中直接编辑每条样品记录 - 也可以删除不需要的样品记录 ### 4. 数据保存 - 批量添加的样品记录只是临时添加到表单中 - 需要点击入库单对话框底部的"确定"按钮才会保存到数据库 - 点击"取消"按钮会放弃所有修改 ## 技术实现 ### 修改的文件 - `ruoyi-fastapi-frontend/src/views/warehouse/receipt/index.vue` ### 新增的功能 1. **批量添加按钮**:在样品信息区域添加"批量添加样品"按钮 2. **批量添加对话框**:包含多行文本输入框 3. **文本解析逻辑**:按行分割文本,提取SN号 4. **重复检测逻辑**:检查SN号是否已存在 5. **批量创建逻辑**:为每个SN号创建样品记录 ### 核心代码 ```javascript // 批量添加样品方法 submitBatchSample() { // 按行分割文本 const lines = this.batchSampleText.split('\n'); let addedCount = 0; // 处理每一行 lines.forEach(line => { const sn = line.trim(); // 跳过空行 if (sn) { // 检查是否已存在相同的SN号 const exists = this.form.samples.some(sample => sample.sampleSn === sn); if (!exists) { this.form.samples.push({ sampleModel: null, sampleSn: sn, hardwareVersion: null, externalStatus: null, testDeadline: null, testItems: null, status: '0' }); addedCount++; } } }); if (addedCount > 0) { this.$modal.msgSuccess(`成功添加 ${addedCount} 条样品记录`); this.batchSampleOpen = false; } else { this.$modal.msgWarning("没有添加任何样品,请检查输入的SN号是否已存在"); } } ``` ## 未来优化方向 ### 可能的增强功能 1. **支持更多字段的批量输入** - 例如:SN号,型号,版本(CSV格式) - 需要更复杂的解析逻辑 2. **支持文件上传** - 直接上传Excel或CSV文件 - 自动解析文件内容 3. **模板下载** - 提供Excel模板下载 - 用户填写后上传 4. **数据验证** - SN号格式验证 - 必填字段检查 5. **导入预览** - 显示即将导入的数据 - 允许用户确认或修改 ## 日期 开发日期:2025-12-05 ## 相关功能 - 入库单管理 - 样品管理 - 对话框点击外部关闭问题修复