ETest-Vue-FastAPI/批量添加样品功能说明.md

226 lines
5.7 KiB
Markdown
Raw Normal View History

2025-12-29 23:16:42 +08:00
# 批量添加样品功能说明
## 功能概述
在入库单管理页面中,新增了"批量添加样品"功能允许用户通过输入多行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
## 相关功能
- 入库单管理
- 样品管理
- 对话框点击外部关闭问题修复