226 lines
5.7 KiB
Markdown
226 lines
5.7 KiB
Markdown
|
|
# 批量添加样品功能说明
|
|||
|
|
|
|||
|
|
## 功能概述
|
|||
|
|
|
|||
|
|
在入库单管理页面中,新增了"批量添加样品"功能,允许用户通过输入多行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
|
|||
|
|
|
|||
|
|
## 相关功能
|
|||
|
|
|
|||
|
|
- 入库单管理
|
|||
|
|
- 样品管理
|
|||
|
|
- 对话框点击外部关闭问题修复
|