批量添加样品功能
parent
120a17f55a
commit
a5e2bfef4b
|
|
@ -234,7 +234,8 @@
|
|||
<el-divider content-position="left">样品信息</el-divider>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-button type="primary" icon="el-icon-plus" size="small" @click="handleAddSample" style="margin-bottom: 10px">添加样品</el-button>
|
||||
<el-button type="primary" icon="el-icon-plus" size="small" @click="handleAddSample" style="margin-bottom: 10px; margin-right: 10px">添加样品</el-button>
|
||||
<el-button type="success" icon="el-icon-document-add" size="small" @click="handleBatchAddSample" style="margin-bottom: 10px">批量添加样品</el-button>
|
||||
<el-table :data="form.samples" border style="width: 100%">
|
||||
<el-table-column type="index" label="序号" width="50" align="center" />
|
||||
<el-table-column label="样品型号" width="120">
|
||||
|
|
@ -297,6 +298,27 @@
|
|||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 批量添加样品对话框 -->
|
||||
<el-dialog title="批量添加样品" :visible.sync="batchSampleOpen" width="600px" append-to-body :close-on-click-modal="false">
|
||||
<el-form label-width="120px">
|
||||
<el-form-item label="样品SN号">
|
||||
<el-input
|
||||
v-model="batchSampleText"
|
||||
type="textarea"
|
||||
:rows="10"
|
||||
placeholder="请输入样品SN号,每行一个SN号 例如: SN001 SN002 SN003"
|
||||
/>
|
||||
<div style="margin-top: 10px; color: #909399; font-size: 12px">
|
||||
<i class="el-icon-info"></i> 提示:每行输入一个SN号,系统将自动为每个SN号创建一条样品记录
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitBatchSample">确 定</el-button>
|
||||
<el-button @click="batchSampleOpen = false">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
|
@ -325,6 +347,10 @@ export default {
|
|||
title: "",
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
// 批量添加样品对话框
|
||||
batchSampleOpen: false,
|
||||
// 批量添加样品文本
|
||||
batchSampleText: "",
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
|
|
@ -479,6 +505,51 @@ export default {
|
|||
status: '0'
|
||||
});
|
||||
},
|
||||
/** 批量添加样品 */
|
||||
handleBatchAddSample() {
|
||||
this.batchSampleText = "";
|
||||
this.batchSampleOpen = true;
|
||||
},
|
||||
/** 提交批量添加样品 */
|
||||
submitBatchSample() {
|
||||
if (!this.batchSampleText || !this.batchSampleText.trim()) {
|
||||
this.$modal.msgWarning("请输入样品SN号");
|
||||
return;
|
||||
}
|
||||
|
||||
// 按行分割文本
|
||||
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号是否已存在");
|
||||
}
|
||||
},
|
||||
/** 删除样品 */
|
||||
handleDeleteSample(index) {
|
||||
this.form.samples.splice(index, 1);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,225 @@
|
|||
# 批量添加样品功能说明
|
||||
|
||||
## 功能概述
|
||||
|
||||
在入库单管理页面中,新增了"批量添加样品"功能,允许用户通过输入多行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
|
||||
|
||||
## 相关功能
|
||||
|
||||
- 入库单管理
|
||||
- 样品管理
|
||||
- 对话框点击外部关闭问题修复
|
||||
Loading…
Reference in New Issue