Files
mes-ui-d2/docs/迁移功能测试流程.md
sheng a0192d9567
Some checks failed
Release pipeline / publish (push) Has been cancelled
Release pipeline / Always run job (push) Has been cancelled
feat(production-master-data): 新增生产主数据模块下物料与工序相关功能
1. 新增物料单位、物料类别、物料信息管理的API与页面
2. 新增工序单元管理的API、页面与弹窗组件
3. 新增可选参数管理组件与相关API
4. 补充对应国际化多语言配置
5. 新增生产主数据模块路由配置
6. 新增计量单位功能测试流程文档
2026-06-02 11:25:26 +08:00

360 lines
28 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# MES-UI 迁移功能测试流程文档(累积追加版)
> 本文档用于记录每次 MES-UI 迁移完成后的功能测试流程。
> 采用**累积追加**模式:每次完成新功能迁移,将对应测试内容追加到本文件末尾,并在「目录」中补充章节索引。
> 测试人员按章节顺序执行用例,每完成一项需在「[ ]」中改为「[x]」并填写实际结果;对未通过项在「问题记录」区域详细描述。
>
> **测试结果约定**
> - ✅ 通过Pass
> - ❌ 失败Fail
> - ⚠️ 阻塞Block依赖其他功能未通过
>
> **填写示例**
> - `[x] 1.1 列表正常加载 ✅ 实际10 条记录,分页正常`
> - `[ ] 1.2 编码为空校验 ❌ 实际:未拦截空值,提示词缺失`
---
## 目录
- [一、测试环境与通用前置条件](#一测试环境与通用前置条件)
- [二、物料类别列表Material Category](#二物料类别列表material-category)
- [三、物料信息管理Material Master](#三物料信息管理material-master)
---
## 一、测试环境与通用前置条件
> 所有功能测试前,请先确认以下环境和基础数据准备就绪。
### 1.1 测试环境
| 项目 | 要求 |
|------|------|
| 操作系统 | Windows 10 / 11 或 macOS |
| 浏览器 | Chrome ≥ 100推荐、Edge ≥ 100 |
| Node.js | ≥ 16.0(用于本地构建) |
| MES-UI 仓库 | `d:\code\mes\mes-ui`,已安装依赖 `pnpm install` |
| 后端服务 | Webman 后台已启动(地址、端口按部署环境),数据库表 `material_category` 已存在 |
| 启动命令 | `pnpm dev``npm run serve`,默认 `http://localhost:8080` |
| 登录账号 | 具备「生产配置」菜单权限的账号,建议使用 `admin` 角色 |
| 网络 | 能正常访问后端 API |
### 1.2 通用前置条件
1. 已完成 `pnpm install`,依赖安装无错误。
2. `pnpm dev` 启动成功,浏览器可访问 `http://localhost:8080`
3. 使用具有「生产配置 / 物料模型 / 物料类别列表」访问权限的账号登录。
4. 后端数据库中 `material_category` 表至少有 1 条数据,用于列表展示和编辑。
5. 中英文语言切换正常:在右上角下拉框切换「中文 / English」所有标签翻译均能显示。
6. 浏览器 DevTools 的 Network 面板可见请求 URL 类似 `production_configuration/matetial_model/matetial_category/list?...`(迁移后保持旧 URL
### 1.3 测试结果总览(按功能)
| 功能 | 章节 | 用例数 | 通过 | 失败 | 阻塞 | 测试人 / 日期 |
|------|------|:----:|:----:|:----:|:----:|---------------|
| 物料类别列表 | 二 | 22 | | | | |
| 物料信息管理 | 三 | 30 | | | | |
---
## 二、物料类别列表Material Category
### 2.1 功能概述
- **一级模块**生产配置Production Master Data
- **二级模块**物料模型Material Model
- **三级模块**物料类别列表Material Category
- **功能说明**:用于维护物料类别(区分原材料和半成品),支持编码、名称、备注、创建时间等字段的增删改查
- **菜单路径**:生产配置 → 物料模型 → 物料类别列表
- **路由地址**`/production_configuration/matetial_model/matetial_category`(迁移阶段沿用旧 URL
- **涉及文件**
- 页面:[src/views/production-master-data/material-model/material-category/index.vue](file:///d:/code/mes/mes-ui/src/views/production-master-data/material-model/material-category/index.vue)
- API[src/api/production-master-data/material-category.js](file:///d:/code/mes/mes-ui/src/api/production-master-data/material-category.js)
- 路由:[src/router/modules/production-master-data.js](file:///d:/code/mes/mes-ui/src/router/modules/production-master-data.js)
- i18n`src/locales/zh-chs.json` & `en.json`key 前缀 `page.production_master_data.material_model.material_category.*`
### 2.2 字段说明
| 字段 | 类型 | 必填 | 长度限制 | 说明 |
|------|------|:----:|---------|------|
| 序号 | 数字 | — | — | 表格自增序号,由 `useTableColumns` 自动生成 |
| 物料类别编码 | 字符串 | ✅ | 1~45 | 唯一标识 |
| 物料类别名称 | 字符串 | ✅ | 1~45 | 类别中文名 |
| 备注 | 字符串 | ❌ | — | 多行文本 |
| 创建时间 | 日期 | — | — | 后端自动填充 |
| 操作 | — | — | — | 行内「编辑」「删除」按钮 |
### 2.3 前置条件
1. 已登录具备「生产配置 / 物料模型 / 物料类别列表」权限的账号。
2. 后端 `material_category` 表存在;若为空,可通过本测试用例的「新增」步骤补足。
3. 浏览器地址栏输入 `/production_configuration/matetial_model/matetial_category` 可直接访问。
4. 当前页面右上角语言切换为「中文」切换为「English」后再次验证关键标签。
### 2.4 测试用例
#### 2.4.1 列表与搜索
| # | 操作步骤 | 预期结果 | 实际结果 | 通过 |
|---|---------|---------|---------|:----:|
| 1.1 | 打开「物料类别列表」页面 | 表格自动加载,列表正常显示;表头依次为:序号 / 物料类别编码 / 物料类别名称 / 备注 / 创建时间 / 操作 | | ☐ |
| 1.2 | 在「物料类别编码」输入框输入已存在的关键字,点击「查询」 | 列表仅显示编码模糊匹配的数据,页码回到 1URL 不暴露搜索值 | | ☐ |
| 1.3 | 在「物料类别名称」输入框输入已存在的关键字,点击「查询」 | 列表仅显示名称模糊匹配的数据 | | ☐ |
| 1.4 | 同时输入编码 + 名称后点击「查询」 | 列表为 AND 条件过滤结果 | | ☐ |
| 1.5 | 在搜索框内按 `Enter` 键 | 触发查询,效果与点击「查询」一致 | | ☐ |
| 1.6 | 点击「重置」按钮 | 搜索框清空,列表恢复初始数据,页码回到 1 | | ☐ |
| 1.7 | 翻到第 2 页,点击「重置」 | 页码回到 1列表刷新 | | ☐ |
| 1.8 | 列表行数超过 1 页时,切换「每页显示条数」 | 列表按新分页重新加载URL / 请求参数同步变化 | | ☐ |
| 1.9 | 切换右上角语言为「English」 | 表头列名翻译正确No. / Category Code / Category Name / Remark / Create Time / Actions | | ☐ |
| 1.10 | 后端返回空数据 | 表格区域显示空数据占位,分页总数为 0 | | ☐ |
#### 2.4.2 新增物料类别
| # | 操作步骤 | 预期结果 | 实际结果 | 通过 |
|---|---------|---------|---------|:----:|
| 2.1 | 点击工具栏「新增」按钮 | 弹出「新增物料类别」对话框,含编码 / 名称 / 备注三个表单项,编码默认聚焦 | | ☐ |
| 2.2 | 编码留空,名称输入「测试类别 A」备注输入「原材料」点击「确定」 | 弹框内编码字段红色错误提示「请输入物料类别编码」;不会提交成功 | | ☐ |
| 2.3 | 编码输入「TEST_001」名称留空点击「确定」 | 名称字段红色错误提示「请输入物料类别名称」 | | ☐ |
| 2.4 | 编码输入 46 个字符(如 46 个 `a`),名称输入「测试类别 A」点击「确定」 | 编码字段提示「长度在 1 到 45 个字符」 | | ☐ |
| 2.5 | 名称输入 46 个字符编码输入「TEST_002」点击「确定」 | 名称字段提示「长度在 1 到 45 个字符」 | | ☐ |
| 2.6 | 编码输入已存在的编码(如数据库现存 `RAW_001`),名称输入「重复测试」,点击「确定」 | 提交失败,弹出后端返回的错误提示(如「编码已存在」);列表不刷新 | | ☐ |
| 2.7 | 编码输入「TEST_001」名称输入「测试类别 A」备注输入「用于半成品分类」点击「确定」 | 提交成功,弹框关闭,顶部提示「操作成功」;列表新增一行 | | ☐ |
| 2.8 | 在弹框中点击「取消」 | 弹框关闭,不提交任何数据 | | ☐ |
| 2.9 | 打开新增弹框后点击右上角 × 关闭 | 弹框关闭,再次打开时表单已重置 | | ☐ |
| 2.10 | 重复 2.7 步骤的编码「TEST_001」再次提交 | 后端返回「编码已存在」或类似错误,不重复创建 | | ☐ |
#### 2.4.3 编辑物料类别
| # | 操作步骤 | 预期结果 | 实际结果 | 通过 |
|---|---------|---------|---------|:----:|
| 3.1 | 在列表中找到「测试类别 A」2.7 创建),点击行内「编辑」 | 弹出「编辑物料类别」对话框,编码 / 名称 / 备注自动回填 | | ☐ |
| 3.2 | 将名称修改为「测试类别 A1」备注改为「原材料-已更新」,点击「确定」 | 提交成功,弹框关闭,提示「操作成功」;列表行名称 / 备注同步更新 | | ☐ |
| 3.3 | 编辑时清空编码并保存 | 编码字段必填提示「请输入物料类别编码」 | | ☐ |
| 3.4 | 编辑时清空名称并保存 | 名称字段必填提示「请输入物料类别名称」 | | ☐ |
| 3.5 | 编辑时将编码修改为与另一行相同的值(如 `RAW_001`),点击「确定」 | 后端返回「编码已存在」错误 | | ☐ |
| 3.6 | 编辑弹框打开后点击「取消」 | 数据不保存,列表无变化 | | ☐ |
| 3.7 | 编辑后重新打开编辑弹框 | 表单仍展示上一次保存后的数据 | | ☐ |
| 3.8 | 编辑成功后检查「创建时间」字段 | 创建时间未变化(仅首次新增时赋值) | | ☐ |
#### 2.4.4 删除物料类别
| # | 操作步骤 | 预期结果 | 实际结果 | 通过 |
|---|---------|---------|---------|:----:|
| 4.1 | 在列表中找到「测试类别 A1」点击行内「删除」 | 弹出确认框「确定要执行该操作吗?」,标题为「提示」 | | ☐ |
| 4.2 | 在确认框中点击「取消」 | 删除取消,列表无变化 | | ☐ |
| 4.3 | 在确认框中点击「确定」 | 确认框关闭,顶部提示「操作成功」;该行从列表中消失 | | ☐ |
| 4.4 | 在仅剩 1 条数据的列表上点击「删除」并确认 | 删除成功后,列表变为空,分页回到第 1 页 | | ☐ |
| 4.5 | 尝试删除仍被「物料信息」引用的物料类别 | 后端返回「存在引用,无法删除」或类似错误 | | ☐ |
| 4.6 | 删除操作期间切换「每页显示条数」 | 删除后页码自动修正,避免出现空页 | | ☐ |
#### 2.4.5 权限与异常场景
| # | 操作步骤 | 预期结果 | 实际结果 | 通过 |
|---|---------|---------|---------|:----:|
| 5.1 | 使用无「新增」权限的账号登录 | 工具栏「新增」按钮不显示或不可点击 | | ☐ |
| 5.2 | 使用无「编辑」权限的账号登录 | 行内「编辑」按钮不显示 | | ☐ |
| 5.3 | 使用无「删除」权限的账号登录 | 行内「删除」按钮不显示 | | ☐ |
| 5.4 | 断网后刷新页面 | 表格显示加载失败或空态DevTools Network 显示请求失败 | | ☐ |
| 5.5 | 后端返回 500 错误(如临时停服) | 顶部红色错误提示(如「操作失败」),不卡死页面 | | ☐ |
| 5.6 | 同时打开两个浏览器标签页,在 A 标签新增数据后B 标签刷新列表 | B 标签列表应能看到 A 标签新增的数据 | | ☐ |
#### 2.4.6 国际化与界面
| # | 操作步骤 | 预期结果 | 实际结果 | 通过 |
|---|---------|---------|---------|:----:|
| 6.1 | 中文状态下打开新增弹框 | 弹框标题、字段标签、按钮文字均为中文 | | ☐ |
| 6.2 | 切换为「English」后再次打开新增弹框 | 弹框标题「Add Material Category」按钮「Confirm / Cancel」 | | ☐ |
| 6.3 | 中文状态下点击删除,确认弹框标题为「提示」 | 确认框标题与按钮文字中文显示 | | ☐ |
| 6.4 | 英文状态下点击删除确认弹框标题为「Tip」 | 确认框英文显示 | | ☐ |
| 6.5 | 列表右上角「帮助」按钮(? 图标) | 鼠标悬停或点击显示「物料类别用于区分原材料和半成品」 | | ☐ |
| 6.6 | 备注字段为空时点击保存 | 提交成功,列表中备注列空白(无 `null` / `undefined` 文本) | | ☐ |
### 2.5 接口契约(用于前后端联调核对)
| 方法 | URL | 旧 method 名 | 入参关键 key | 备注 |
|------|-----|-------------|-------------|------|
| GET | `production_configuration/matetial_model/matetial_category/list` | `production_configuration_matetial_model_matetial_category_list` | `code / name / page_no / page_size` | 列表查询 |
| GET | `…/all` | `…_all` | — | 全部类别(下拉框用,可选) |
| POST | `…/create` | `…_create` | `code / name / remark` | 新增 |
| PUT | `…/edit` | `…_edit` | `id / code / name / remark` | 编辑(`id` 为行主键) |
| DELETE | `…/delete` | `…_delete` | `id: [rowId]` | 删除,参数名 `id` 数组(与旧项目保持一致) |
### 2.6 问题记录
> 测试人员发现问题时填写。每条问题一行,格式:`[编号] [用例编号] [现象] [复现步骤] [期望] [截图/日志] [负责人] [处理状态]`。
| 编号 | 用例 | 现象 | 复现步骤 | 期望 | 截图/日志 | 负责人 | 状态 |
|:---:|:---:|------|---------|------|----------|:----:|:----:|
| | | | | | | | |
### 2.7 备注
- 本页面沿用旧 URL 与后台 method 名,待后台数据库路由表统一更新后统一修改。
- 涉及 `confirmMixin` / `useTableColumns` / `useTableButtons` / `i18nMixin` 等公共 Composable如其他页面出现类似问题先确认是否在迁移组件时有遗漏。
- 若新增 / 编辑成功后接口返回结构变化(`res.data` 包裹层调整),需要同步更新 `fetchData` 的解析逻辑。
---
## 三、物料信息管理Material Master
### 3.1 功能概述
- **一级模块**生产配置Production Master Data
- **二级模块**物料模型Material Model
- **三级模块**物料信息管理Material Master
- **功能说明**:用于维护物料主数据,包括物料编码、名称、所属物料类别、单位、备注等,支持新增、编辑、删除、批量删除、按编码/名称/类别检索。
- **菜单路径**:生产配置 → 物料模型 → 物料信息管理
- **路由地址**`/production_configuration/matetial_model/matetial_management`(迁移阶段沿用旧 URL
- **涉及文件**
- 页面:[src/views/production-master-data/material-model/material-master/index.vue](file:///d:/code/mes/mes-ui/src/views/production-master-data/material-model/material-master/index.vue)
- API[src/api/production-master-data/material-master.js](file:///d:/code/mes/mes-ui/src/api/production-master-data/material-master.js)
- 路由:[src/router/modules/production-master-data.js](file:///d:/code/mes/mes-ui/src/router/modules/production-master-data.js)
- i18n`src/locales/zh-chs.json` & `en.json`key 前缀 `page.production_master_data.material_model.material_master.*`
### 3.2 字段说明
| 字段 | 类型 | 必填 | 长度限制 | 说明 |
|------|------|:----:|---------|------|
| 序号 | 数字 | — | — | 表格自增序号 |
| 物料编码 | 字符串 | ✅ | 1~100 | 唯一标识 |
| 物料名称 | 字符串 | ✅ | 1~100 | 物料中文名 |
| 物料类别 | 下拉 | ✅ | — | 来源于物料类别下拉(依赖「物料类别列表」已迁移) |
| 单位 | 输入/下拉 | ❌ | — | 当前版本以文本框占位;待「计量单位」模块迁移后接入下拉数据源 |
| 备注 | 字符串 | ❌ | — | 多行文本,超过 20 字符鼠标悬停展示全量 |
| 创建人 | 字符串 | — | — | 后端返回 |
| 创建时间 | 日期 | — | — | 后端自动填充 |
| 操作 | — | — | — | 行内「编辑」「删除」按钮 |
### 3.3 前置条件
1. 已登录具备「生产配置 / 物料模型 / 物料信息管理」权限的账号。
2. 已完成「物料类别列表」迁移,「物料类别」下拉数据正常加载(用于新增/编辑时的类别选择)。
3. 后端 `material` 表存在;若为空,可通过本测试用例的「新增」步骤补足。
4. 浏览器地址栏输入 `/production_configuration/matetial_model/matetial_management` 可直接访问。
5. 当前页面右上角语言切换为「中文」切换为「English」后再次验证关键标签。
### 3.4 测试用例
#### 3.4.1 列表与搜索
| # | 操作步骤 | 预期结果 | 实际结果 | 通过 |
|---|---------|---------|---------|:----:|
| 1.1 | 打开「物料信息管理」页面 | 表格自动加载,列表正常显示;表头依次为:序号 / 物料编码 / 物料名称 / 物料类别 / 单位 / 备注 / 创建人 / 创建时间 / 操作 | | ☐ |
| 1.2 | 物料类别下拉可正常展开,选项来源于物料类别数据 | 下拉选项与「物料类别列表」一致,支持搜索过滤 | | ☐ |
| 1.3 | 在「物料编码」输入框输入已存在的关键字,点击「查询」 | 列表仅显示编码模糊匹配的数据,页码回到 1 | | ☐ |
| 1.4 | 在「物料名称」输入框输入已存在的关键字,点击「查询」 | 列表仅显示名称模糊匹配的数据 | | ☐ |
| 1.5 | 在「物料类别」下拉中选择某一项,点击「查询」 | 列表仅显示该类别下的物料 | | ☐ |
| 1.6 | 同时输入编码 + 名称 + 类别后点击「查询」 | 列表为 AND 条件过滤结果 | | ☐ |
| 1.7 | 在搜索框内按 `Enter` 键 | 触发查询,效果与点击「查询」一致 | | ☐ |
| 1.8 | 点击「重置」按钮 | 搜索框清空,列表恢复初始数据,页码回到 1 | | ☐ |
| 1.9 | 翻到第 2 页,点击「重置」 | 页码回到 1列表刷新 | | ☐ |
| 1.10 | 列表行数超过 1 页时,切换「每页显示条数」 | 列表按新分页重新加载,请求参数 `page_size` 同步变化 | | ☐ |
| 1.11 | 切换右上角语言为「English」 | 表头列名翻译正确No. / Material Code / Material Name / Category / Unit / Remark / Created By / Created At / Action | | ☐ |
| 1.12 | 备注长度 > 20 字符时,鼠标悬停单元格 | 弹层显示完整备注内容 | | ☐ |
| 1.13 | 备注长度 <= 20 字符时 | 单元格直接展示文本,不显示弹层 | | ☐ |
| 1.14 | 后端返回空数据 | 表格区域显示空数据占位,分页总数为 0 | | ☐ |
#### 3.4.2 新增物料信息
| # | 操作步骤 | 预期结果 | 实际结果 | 通过 |
|---|---------|---------|---------|:----:|
| 2.1 | 点击工具栏「新增」按钮 | 弹出「新增物料信息」对话框,依次为:物料编码 / 物料名称 / 物料类别 / 单位 / 备注 | | ☐ |
| 2.2 | 编码留空,名称输入「测试物料 A」类别下拉选择「原材料」点击「确定」 | 编码字段红色错误提示「请输入物料编码」 | | ☐ |
| 2.3 | 编码输入「MAT_001」名称留空点击「确定」 | 名称字段红色错误提示「请输入物料名称」 | | ☐ |
| 2.4 | 编码、名称都填写,类别留空,点击「确定」 | 类别字段红色错误提示「请选择物料类别」 | | ☐ |
| 2.5 | 编码输入 101 个字符(如 101 个 `a`),名称输入「测试物料 A」点击「确定」 | 编码字段提示「长度在 1 到 100 个字符」 | | ☐ |
| 2.6 | 名称输入 101 个字符编码输入「MAT_002」点击「确定」 | 名称字段提示「长度在 1 到 100 个字符」 | | ☐ |
| 2.7 | 编码输入已存在的编码,名称输入「重复测试」,点击「确定」 | 提交失败,弹出后端返回的错误提示(如「编码已存在」);列表不刷新 | | ☐ |
| 2.8 | 编码输入「MAT_001」名称输入「测试物料 A」类别选择「原材料」单位输入「个」备注输入「用于产线领料」点击「确定」 | 提交成功,弹框关闭,顶部提示「操作成功」;列表新增一行且所有字段正确展示 | | ☐ |
| 2.9 | 在弹框中点击「取消」 | 弹框关闭,不提交任何数据 | | ☐ |
| 2.10 | 打开新增弹框后点击右上角 × 关闭,再次点击「新增」 | 弹框再次打开时表单已重置 | | ☐ |
| 2.11 | 重复 2.8 步骤的编码「MAT_001」再次提交 | 后端返回「编码已存在」或类似错误,不重复创建 | | ☐ |
#### 3.4.3 编辑物料信息
| # | 操作步骤 | 预期结果 | 实际结果 | 通过 |
|---|---------|---------|---------|:----:|
| 3.1 | 在列表中找到「MAT_001」2.8 创建),点击行内「编辑」 | 弹出「编辑物料信息」对话框,编码 / 名称 / 类别 / 单位 / 备注自动回填 | | ☐ |
| 3.2 | 将名称修改为「测试物料 A1」类别改为「半成品」单位改为「箱」备注改为「用于产线补料」点击「确定」 | 提交成功,弹框关闭,提示「操作成功」;列表行各字段同步更新 | | ☐ |
| 3.3 | 编辑时清空编码并保存 | 编码字段必填提示「请输入物料编码」 | | ☐ |
| 3.4 | 编辑时清空名称并保存 | 名称字段必填提示「请输入物料名称」 | | ☐ |
| 3.5 | 编辑时清空类别并保存 | 类别字段必填提示「请选择物料类别」 | | ☐ |
| 3.6 | 编辑时将编码修改为与另一行相同的值,点击「确定」 | 后端返回「编码已存在」错误 | | ☐ |
| 3.7 | 编辑弹框打开后点击「取消」 | 数据不保存,列表无变化 | | ☐ |
| 3.8 | 编辑后重新打开编辑弹框 | 表单仍展示上一次保存后的数据 | | ☐ |
| 3.9 | 编辑成功后检查「创建时间」字段 | 创建时间未变化(仅首次新增时赋值) | | ☐ |
| 3.10 | 编辑时清空备注并保存 | 提交成功,列表中备注列空白(无 `null` / `undefined` 文本) | | ☐ |
#### 3.4.4 删除与批量删除
| # | 操作步骤 | 预期结果 | 实际结果 | 通过 |
|---|---------|---------|---------|:----:|
| 4.1 | 在列表中找到「MAT_001」点击行内「删除」 | 弹出确认框「确定要执行该操作吗?」,标题为「提示」 | | ☐ |
| 4.2 | 在确认框中点击「取消」 | 删除取消,列表无变化 | | ☐ |
| 4.3 | 在确认框中点击「确定」 | 确认框关闭,顶部提示「操作成功」;该行从列表中消失 | | ☐ |
| 4.4 | 在仅剩 1 条数据的列表上点击「删除」并确认 | 删除成功后,列表变为空,分页回到第 1 页 | | ☐ |
| 4.5 | 不勾选任何数据,直接点击工具栏「批量删除」 | 顶部红色错误提示「请先选择要删除的数据」 | | ☐ |
| 4.6 | 勾选 3 条数据,点击「批量删除」,确认框标题与按钮中文显示 | 弹出确认框「确定要删除所选物料吗?」 | | ☐ |
| 4.7 | 在 4.6 弹出的确认框中点击「确定」 | 3 条数据全部删除,顶部提示「操作成功」;列表刷新 | | ☐ |
| 4.8 | 尝试删除被其他业务(如 BOM引用的物料 | 后端返回「存在引用,无法删除」或类似错误 | | ☐ |
| 4.9 | 删除操作期间切换「每页显示条数」 | 删除后页码自动修正,避免出现空页 | | ☐ |
#### 3.4.5 权限与异常场景
| # | 操作步骤 | 预期结果 | 实际结果 | 通过 |
|---|---------|---------|---------|:----:|
| 5.1 | 使用无「新增」权限的账号登录 | 工具栏「新增」按钮不显示或不可点击 | | ☐ |
| 5.2 | 使用无「编辑」权限的账号登录 | 行内「编辑」按钮不显示 | | ☐ |
| 5.3 | 使用无「删除」权限的账号登录 | 行内「删除」按钮不显示 | | ☐ |
| 5.4 | 使用无「批量删除」权限的账号登录 | 工具栏「批量删除」按钮不显示或不可点击 | | ☐ |
| 5.5 | 断网后刷新页面 | 表格显示加载失败或空态DevTools Network 显示请求失败 | | ☐ |
| 5.6 | 后端返回 500 错误(如临时停服) | 顶部红色错误提示(如「操作失败」),不卡死页面 | | ☐ |
| 5.7 | 物料类别下拉数据加载失败时进入新增弹框 | 类别下拉为空,但仍可正常打开弹框 | | ☐ |
| 5.8 | 同时打开两个浏览器标签页,在 A 标签新增数据后B 标签刷新列表 | B 标签列表应能看到 A 标签新增的数据 | | ☐ |
#### 3.4.6 国际化与界面
| # | 操作步骤 | 预期结果 | 实际结果 | 通过 |
|---|---------|---------|---------|:----:|
| 6.1 | 中文状态下打开新增弹框 | 弹框标题、字段标签、按钮文字均为中文 | | ☐ |
| 6.2 | 切换为「English」后再次打开新增弹框 | 弹框标题「Add Material」按钮「Confirm / Cancel」 | | ☐ |
| 6.3 | 中文状态下点击删除,确认弹框标题为「提示」 | 确认框标题与按钮文字中文显示 | | ☐ |
| 6.4 | 英文状态下点击删除确认弹框标题为「Tip」 | 确认框英文显示 | | ☐ |
| 6.5 | 列表右上角「帮助」按钮(? 图标) | 鼠标悬停或点击显示「物料信息用于维护物料编码、名称、规格等属性」 | | ☐ |
| 6.6 | 中文状态下批量删除无选中数据 | 错误提示「请先选择要删除的数据」 | | ☐ |
| 6.7 | 英文状态下批量删除无选中数据 | 错误提示「Please select data first」 | | ☐ |
### 3.5 接口契约(用于前后端联调核对)
| 方法 | URL | 旧 method 名 | 入参关键 key | 备注 |
|------|-----|-------------|-------------|------|
| GET | `production_configuration/matetial_model/matetial_management/list` | `production_configuration_matetial_model_matetial_management_list` | `code / name / bom_source_category_id / page_no / page_size` | 列表查询 |
| GET | `…/all` | `…_all` | — | 全部物料(下拉框用,可选) |
| POST | `…/create` | `…_create` | `code / name / bom_source_category_id / unit_id / remark` | 新增 |
| PUT | `…/edit` | `…_edit` | `id / code / name / bom_source_category_id / unit_id / remark` | 编辑(`id` 为行主键) |
| DELETE | `…/delete` | `…_delete` | `id: [rowId]` | 单条删除,参数名 `id` 数组(与旧项目保持一致) |
| DELETE | `…/batch_delete` | `…_batch_delete` | `id: [id1, id2, …]` | 批量删除 |
| POST | `…/get_import_template` | `…_get_import_template` | — | 导入模板下载(响应 `blob`),本版本预留 |
| POST | `…/matetial_data_import` | `…_matetial_data_import` | `import_data: JSON.stringify([...])` | 物料数据导入,本版本预留 |
| POST | `…/matetial_data_export_task` | `…_matetial_data_export_task` | — | 物料数据导出任务创建,本版本预留 |
> 说明:本版本优先实现列表 / 新增 / 编辑 / 删除 / 批量删除五大核心功能;导入 / 导出Excel 模板下载、批量导入、导出任务)保留 API 方法和钩子位置,待后续迭代中补齐弹框 UI。
### 3.6 问题记录
> 测试人员发现问题时填写。每条问题一行,格式:`[编号] [用例编号] [现象] [复现步骤] [期望] [截图/日志] [负责人] [处理状态]`。
| 编号 | 用例 | 现象 | 复现步骤 | 期望 | 截图/日志 | 负责人 | 状态 |
|:---:|:---:|------|---------|------|----------|:----:|:----:|
| | | | | | | | |
### 3.7 备注
- 本页面沿用旧 URL 与后台 method 名,待后台数据库路由表统一更新后统一修改。
- 「物料类别」下拉数据由 `getMaterialCategoryAll` 提供,依赖「物料类别列表」功能已迁移完成;如该下拉为空,请先检查该模块是否正常运行。
- 「单位」字段在当前版本以文本框占位,依赖「计量单位」模块迁移后接入下拉数据源(与 BOM 等联动),测试时需在「备注」中注明该功能尚未启用。
- 涉及 `confirmMixin` / `useTableColumns` / `useTableButtons` / `i18nMixin` 等公共 Composable如其他页面出现类似问题先确认是否在迁移组件时有遗漏。
- 备注长度 > 20 字符时使用 `el-popover` 悬停展示全量内容;该交互与旧项目保持一致。
- 若新增 / 编辑成功后接口返回结构变化(`res.data` 包裹层调整),需要同步更新 `fetchData` 的解析逻辑。