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

5.7 KiB
Raw Permalink Blame History

批量添加样品功能说明

功能概述

在入库单管理页面中,新增了"批量添加样品"功能允许用户通过输入多行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号创建样品记录

核心代码

// 批量添加样品方法
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

相关功能

  • 入库单管理
  • 样品管理
  • 对话框点击外部关闭问题修复