Commit 6c31a476 authored by liguangyu06's avatar liguangyu06
Browse files

同步基础管理与统计报表用例文档,并更新 Playwright 脚本与 PO。

对齐 CSV/MD/测试点与现网列名及组合查询;补充厂商资质子 Tab 与基础模块复跑脚本。
parent aa8987ce
...@@ -38,20 +38,20 @@ ...@@ -38,20 +38,20 @@
#### 功能验证点 #### 功能验证点
- **TP_STAT_ACH_009**(高)|默认起始时间查询|验证要点:首次进入页面起始时间默认为合理默认区间,点击「查询」后主表有数据或空态提示明确|关联需求:UI-SPEC-SPD-ANA-001 - **TP_STAT_ACH_009**(高)|默认起始时间查询|验证要点:首次进入页面起始时间默认为合理默认区间,点击「查询」后主表有数据或空态提示明确|关联需求:UI-SPEC-SPD-ANA-001
- **TP_STAT_ACH_010**(高)|产品名称筛选|验证要点:填写或选择产品名称后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-ANA-001 - **TP_STAT_ACH_010**(高)|物料名称筛选|验证要点:填写或选择物料名称后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-ANA-001
- **TP_STAT_ACH_011**(高)|规格型号筛选|验证要点:填写或选择规格型号后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-ANA-001 - **TP_STAT_ACH_011**(高)|规格型号筛选|验证要点:填写或选择规格型号后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-ANA-001
- **TP_STAT_ACH_012**(高)|进院供应商筛选|验证要点:填写或选择进院供应商后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-ANA-001 - **TP_STAT_ACH_012**(高)|销售商(自定义)筛选|验证要点:填写或选择销售商(自定义)后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-ANA-001
- **TP_STAT_ACH_013**(高)|二级供应商筛选|验证要点:填写或选择二级供应商后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-ANA-001 - **TP_STAT_ACH_013**(高)|供应商筛选|验证要点:填写或选择供应商后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-ANA-001
- **TP_STAT_ACH_014**(中)|耗材类型筛选|验证要点:填写或选择耗材类型后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-ANA-001 - **TP_STAT_ACH_014**(中)|耗材类型筛选|验证要点:填写或选择耗材类型后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-ANA-001
- **TP_STAT_ACH_015**(高)|阳采ID筛选|验证要点:填写或选择阳采ID后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-ANA-001 - **TP_STAT_ACH_015**(高)|阳采ID筛选|验证要点:填写或选择阳采ID后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-ANA-001
- **TP_STAT_ACH_016**(高)|组合条件查询|验证要点:起始时间 + 产品名称 + 规格型号 + 进院供应商等组合查询,结果同时满足全部已填条件|关联需求:UI-SPEC-SPD-ANA-001 - **TP_STAT_ACH_016**(高)|组合条件查询|验证要点:起始时间 + 物料名称 + 规格型号 + 销售商(自定义)等组合查询,结果同时满足全部已填条件|关联需求:UI-SPEC-SPD-ANA-001
- **TP_STAT_ACH_017**(中)|快捷区重置|验证要点:填写快捷筛选条件后点击「重置」,各字段恢复默认,列表按产品规则刷新|关联需求:UI-SPEC-SPD-ANA-001 - **TP_STAT_ACH_017**(中)|快捷区重置|验证要点:填写快捷筛选条件后点击「重置」,各字段恢复默认,列表按产品规则刷新|关联需求:UI-SPEC-SPD-ANA-001
#### 边界验证点 #### 边界验证点
- **TP_STAT_ACH_018**(中)|起始时间起止同一天|验证要点:开始等于结束值时查询成功,仅返回该周期数据|关联需求:UI-SPEC-SPD-ANA-001 - **TP_STAT_ACH_018**(中)|起始时间起止同一天|验证要点:开始等于结束值时查询成功,仅返回该周期数据|关联需求:UI-SPEC-SPD-ANA-001
- **TP_STAT_ACH_019**(中)|起始时间跨度上限|验证要点:选择允许的最大日期跨度查询,系统正常返回或给出明确跨度限制提示|关联需求:UI-SPEC-SPD-ANA-001 - **TP_STAT_ACH_019**(中)|起始时间跨度上限|验证要点:选择允许的最大日期跨度查询,系统正常返回或给出明确跨度限制提示|关联需求:UI-SPEC-SPD-ANA-001
- **TP_STAT_ACH_020**(低)|产品名称空值查询|验证要点:产品名称为空仅按其它已填条件查询,返回符合其他条件的全量结果|关联需求:UI-SPEC-SPD-ANA-001 - **TP_STAT_ACH_020**(低)|物料名称空值查询|验证要点:物料名称为空仅按其它已填条件查询,返回符合其他条件的全量结果|关联需求:UI-SPEC-SPD-ANA-001
#### 异常验证点 #### 异常验证点
...@@ -74,10 +74,10 @@ ...@@ -74,10 +74,10 @@
- **TP_STAT_ACH_027**(高)|抽屉内筛选提交|验证要点:在抽屉填写条件后点击「筛选」,列表按条件刷新且主表/汇总更新|关联需求:UI-SPEC-SPD-ANA-001 - **TP_STAT_ACH_027**(高)|抽屉内筛选提交|验证要点:在抽屉填写条件后点击「筛选」,列表按条件刷新且主表/汇总更新|关联需求:UI-SPEC-SPD-ANA-001
- **TP_STAT_ACH_028**(高)|抽屉内重置|验证要点:点击抽屉底部「重置」,抽屉内各字段恢复默认|关联需求:UI-SPEC-SPD-ANA-001 - **TP_STAT_ACH_028**(高)|抽屉内重置|验证要点:点击抽屉底部「重置」,抽屉内各字段恢复默认|关联需求:UI-SPEC-SPD-ANA-001
- **TP_STAT_ACH_029**(中)|高级筛选-起始时间|验证要点:在抽屉填写起始时间后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-ANA-001 - **TP_STAT_ACH_029**(中)|高级筛选-起始时间|验证要点:在抽屉填写起始时间后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-ANA-001
- **TP_STAT_ACH_030**(中)|高级筛选-产品名称|验证要点:在抽屉填写产品名称后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-ANA-001 - **TP_STAT_ACH_030**(中)|高级筛选-物料名称|验证要点:在抽屉填写物料名称后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-ANA-001
- **TP_STAT_ACH_031**(中)|高级筛选-规格型号|验证要点:在抽屉填写规格型号后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-ANA-001 - **TP_STAT_ACH_031**(中)|高级筛选-规格型号|验证要点:在抽屉填写规格型号后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-ANA-001
- **TP_STAT_ACH_032**(中)|高级筛选-进院供应商|验证要点:在抽屉填写进院供应商后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-ANA-001 - **TP_STAT_ACH_032**(中)|高级筛选-销售商(自定义)|验证要点:在抽屉填写销售商(自定义)后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-ANA-001
- **TP_STAT_ACH_033**(中)|高级筛选-二级供应商|验证要点:在抽屉填写二级供应商后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-ANA-001 - **TP_STAT_ACH_033**(中)|高级筛选-供应商|验证要点:在抽屉填写供应商后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-ANA-001
- **TP_STAT_ACH_034**(高)|快捷区与高级筛选组合|验证要点:快捷区条件与抽屉条件同时生效,主表与底部汇总均满足组合条件|关联需求:UI-SPEC-SPD-ANA-001 - **TP_STAT_ACH_034**(高)|快捷区与高级筛选组合|验证要点:快捷区条件与抽屉条件同时生效,主表与底部汇总均满足组合条件|关联需求:UI-SPEC-SPD-ANA-001
- **TP_STAT_ACH_035**(高)|快捷区条件自动带入高级筛选|验证要点:快捷区填入与抽屉同名字段并查询后打开高级筛选,抽屉对应字段与快捷区已填值一致(不手动修改抽屉)|关联需求:UI-SPEC-SPD-ANA-001 - **TP_STAT_ACH_035**(高)|快捷区条件自动带入高级筛选|验证要点:快捷区填入与抽屉同名字段并查询后打开高级筛选,抽屉对应字段与快捷区已填值一致(不手动修改抽屉)|关联需求:UI-SPEC-SPD-ANA-001
...@@ -190,7 +190,7 @@ ...@@ -190,7 +190,7 @@
| 项 | 结论 | | 项 | 结论 |
|----|------| |----|------|
| 覆盖 | 已覆盖:导航、快捷筛选、高级筛选、主表列表、底部汇总、分页、导出;扫描快捷字段:起始时间、产品名称、规格型号、进院供应商、二级供应商、耗材类型、阳采ID;共 **65** 条原子测试点 | | 覆盖 | 已覆盖:导航、快捷筛选、高级筛选、主表列表、底部汇总、分页、导出;扫描快捷字段:起始时间、物料名称、规格型号、销售商(自定义)、供应商、耗材类型、阳采ID;共 **65** 条原子测试点 |
| 分类 | 功能 / 边界 / 异常 / 集成四类均已按功能点拆分 | | 分类 | 功能 / 边界 / 异常 / 集成四类均已按功能点拆分 |
| 去重 | 与同模块其它报表共用交互模式处保留本页差异(调价统计报表 专属业务 section);编号前缀 TP_STAT_ACH | | 去重 | 与同模块其它报表共用交互模式处保留本页差异(调价统计报表 专属业务 section);编号前缀 TP_STAT_ACH |
| 待评审项 | ① 导出直下载/下载中心以页面实测为准(自动化不校验文件内容) | | 待评审项 | ① 导出直下载/下载中心以页面实测为准(自动化不校验文件内容) |
......
...@@ -38,15 +38,15 @@ ...@@ -38,15 +38,15 @@
#### 功能验证点 #### 功能验证点
- **TP_STAT_APV_009**(高)|默认时间查询|验证要点:首次进入页面时间默认为合理默认区间,点击「搜索」后图表/主表有数据或空态提示明确|关联需求:UI-SPEC-SPD-ANA-003 - **TP_STAT_APV_009**(高)|默认时间查询|验证要点:首次进入页面时间默认为合理默认区间,点击「搜索」后图表/主表有数据或空态提示明确|关联需求:UI-SPEC-SPD-ANA-003
- **TP_STAT_APV_010**(高)|进院供应商名称筛选|验证要点:填写或选择进院供应商名称后搜索,结果与条件匹配|关联需求:UI-SPEC-SPD-ANA-003 - **TP_STAT_APV_010**(高)|销售商(自定义)名称筛选|验证要点:填写或选择销售商(自定义)名称后搜索,结果与条件匹配|关联需求:UI-SPEC-SPD-ANA-003
- **TP_STAT_APV_011**(高)|组合条件查询|验证要点:时间 + 进院供应商名称等组合搜索,结果同时满足全部已填条件|关联需求:UI-SPEC-SPD-ANA-003 - **TP_STAT_APV_011**(高)|组合条件查询|验证要点:时间 + 销售商(自定义)名称等组合搜索,结果同时满足全部已填条件|关联需求:UI-SPEC-SPD-ANA-003
- **TP_STAT_APV_012**(中)|快捷区重置|验证要点:填写快捷筛选条件后点击「重置」,各字段恢复默认,图表/列表按产品规则刷新|关联需求:UI-SPEC-SPD-ANA-003 - **TP_STAT_APV_012**(中)|快捷区重置|验证要点:填写快捷筛选条件后点击「重置」,各字段恢复默认,图表/列表按产品规则刷新|关联需求:UI-SPEC-SPD-ANA-003
#### 边界验证点 #### 边界验证点
- **TP_STAT_APV_013**(中)|时间起止同一天|验证要点:开始等于结束值时查询成功,仅返回该周期数据|关联需求:UI-SPEC-SPD-ANA-003 - **TP_STAT_APV_013**(中)|时间起止同一天|验证要点:开始等于结束值时查询成功,仅返回该周期数据|关联需求:UI-SPEC-SPD-ANA-003
- **TP_STAT_APV_014**(中)|时间跨度上限|验证要点:选择允许的最大日期跨度查询,系统正常返回或给出明确跨度限制提示|关联需求:UI-SPEC-SPD-ANA-003 - **TP_STAT_APV_014**(中)|时间跨度上限|验证要点:选择允许的最大日期跨度查询,系统正常返回或给出明确跨度限制提示|关联需求:UI-SPEC-SPD-ANA-003
- **TP_STAT_APV_015**(低)|进院供应商名称空值查询|验证要点:进院供应商名称为空仅按其它已填条件查询,返回符合其他条件的全量结果|关联需求:UI-SPEC-SPD-ANA-003 - **TP_STAT_APV_015**(低)|销售商(自定义)名称空值查询|验证要点:销售商(自定义)名称为空仅按其它已填条件查询,返回符合其他条件的全量结果|关联需求:UI-SPEC-SPD-ANA-003
#### 异常验证点 #### 异常验证点
...@@ -152,7 +152,7 @@ ...@@ -152,7 +152,7 @@
| 项 | 结论 | | 项 | 结论 |
|----|------| |----|------|
| 覆盖 | 已覆盖:导航、快捷筛选、财务图表、主表列表、底部汇总、导出;扫描快捷字段:时间、进院供应商名称;共 **43** 条原子测试点 | | 覆盖 | 已覆盖:导航、快捷筛选、财务图表、主表列表、底部汇总、导出;扫描快捷字段:时间、销售商(自定义)名称;共 **43** 条原子测试点 |
| 分类 | 功能 / 边界 / 异常 / 集成四类均已按功能点拆分 | | 分类 | 功能 / 边界 / 异常 / 集成四类均已按功能点拆分 |
| 去重 | 与同模块其它报表共用交互模式处保留本页差异(财务数据分析-供应商入账 专属业务 section);编号前缀 TP_STAT_APV | | 去重 | 与同模块其它报表共用交互模式处保留本页差异(财务数据分析-供应商入账 专属业务 section);编号前缀 TP_STAT_APV |
| 待评审项 | ① 导出直下载/下载中心以页面实测为准(自动化不校验文件内容);② 财务分析图表指标口径需业务确认 | | 待评审项 | ① 导出直下载/下载中心以页面实测为准(自动化不校验文件内容);② 财务分析图表指标口径需业务确认 |
......
...@@ -38,16 +38,16 @@ ...@@ -38,16 +38,16 @@
#### 功能验证点 #### 功能验证点
- **TP_STAT_RBE_009**(高)|默认统计日期查询|验证要点:首次进入页面统计日期默认为合理默认区间,点击「查询」后主表有数据或空态提示明确|关联需求:UI-SPEC-SPD-REAG-001 - **TP_STAT_RBE_009**(高)|默认统计日期查询|验证要点:首次进入页面统计日期默认为合理默认区间,点击「查询」后主表有数据或空态提示明确|关联需求:UI-SPEC-SPD-REAG-001
- **TP_STAT_RBE_010**(高)|进院供应商筛选|验证要点:填写或选择进院供应商后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-REAG-001 - **TP_STAT_RBE_010**(高)|销售商(自定义)筛选|验证要点:填写或选择销售商(自定义)后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-REAG-001
- **TP_STAT_RBE_011**(高)|产品名称筛选|验证要点:填写或选择产品名称后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-REAG-001 - **TP_STAT_RBE_011**(高)|物料名称筛选|验证要点:填写或选择物料名称后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-REAG-001
- **TP_STAT_RBE_012**(高)|组合条件查询|验证要点:统计日期 + 进院供应商 + 产品名称等组合查询,结果同时满足全部已填条件|关联需求:UI-SPEC-SPD-REAG-001 - **TP_STAT_RBE_012**(高)|组合条件查询|验证要点:统计日期 + 销售商(自定义) + 物料名称等组合查询,结果同时满足全部已填条件|关联需求:UI-SPEC-SPD-REAG-001
- **TP_STAT_RBE_013**(中)|快捷区重置|验证要点:填写快捷筛选条件后点击「重置」,各字段恢复默认,列表按产品规则刷新|关联需求:UI-SPEC-SPD-REAG-001 - **TP_STAT_RBE_013**(中)|快捷区重置|验证要点:填写快捷筛选条件后点击「重置」,各字段恢复默认,列表按产品规则刷新|关联需求:UI-SPEC-SPD-REAG-001
#### 边界验证点 #### 边界验证点
- **TP_STAT_RBE_014**(中)|统计日期起止同一天|验证要点:开始等于结束值时查询成功,仅返回该周期数据|关联需求:UI-SPEC-SPD-REAG-001 - **TP_STAT_RBE_014**(中)|统计日期起止同一天|验证要点:开始等于结束值时查询成功,仅返回该周期数据|关联需求:UI-SPEC-SPD-REAG-001
- **TP_STAT_RBE_015**(中)|统计日期跨度上限|验证要点:选择允许的最大日期跨度查询,系统正常返回或给出明确跨度限制提示|关联需求:UI-SPEC-SPD-REAG-001 - **TP_STAT_RBE_015**(中)|统计日期跨度上限|验证要点:选择允许的最大日期跨度查询,系统正常返回或给出明确跨度限制提示|关联需求:UI-SPEC-SPD-REAG-001
- **TP_STAT_RBE_016**(低)|进院供应商空值查询|验证要点:进院供应商为空仅按其它已填条件查询,返回符合其他条件的全量结果|关联需求:UI-SPEC-SPD-REAG-001 - **TP_STAT_RBE_016**(低)|销售商(自定义)空值查询|验证要点:销售商(自定义)为空仅按其它已填条件查询,返回符合其他条件的全量结果|关联需求:UI-SPEC-SPD-REAG-001
#### 异常验证点 #### 异常验证点
...@@ -154,7 +154,7 @@ ...@@ -154,7 +154,7 @@
| 项 | 结论 | | 项 | 结论 |
|----|------| |----|------|
| 覆盖 | 已覆盖:导航、快捷筛选、试剂批号统计业务、主表列表、底部汇总、导出;扫描快捷字段:统计日期、进院供应商、产品名称;共 **45** 条原子测试点 | | 覆盖 | 已覆盖:导航、快捷筛选、试剂批号统计业务、主表列表、底部汇总、导出;扫描快捷字段:统计日期、销售商(自定义)、物料名称;共 **45** 条原子测试点 |
| 分类 | 功能 / 边界 / 异常 / 集成四类均已按功能点拆分 | | 分类 | 功能 / 边界 / 异常 / 集成四类均已按功能点拆分 |
| 去重 | 与同模块其它报表共用交互模式处保留本页差异(试剂批号统计明细 专属业务 section);编号前缀 TP_STAT_RBE | | 去重 | 与同模块其它报表共用交互模式处保留本页差异(试剂批号统计明细 专属业务 section);编号前缀 TP_STAT_RBE |
| 待评审项 | ① 导出直下载/下载中心以页面实测为准(自动化不校验文件内容) | | 待评审项 | ① 导出直下载/下载中心以页面实测为准(自动化不校验文件内容) |
......
...@@ -38,19 +38,19 @@ ...@@ -38,19 +38,19 @@
#### 功能验证点 #### 功能验证点
- **TP_STAT_TBC_009**(高)|默认条件查询|验证要点:首次进入页面点击「查询」,主表有数据或空态提示明确(本页无日期类快捷字段)|关联需求:UI-SPEC-SPD-TRACE-002 - **TP_STAT_TBC_009**(高)|默认条件查询|验证要点:首次进入页面点击「查询」,主表有数据或空态提示明确(本页无日期类快捷字段)|关联需求:UI-SPEC-SPD-TRACE-002
- **TP_STAT_TBC_010**(高)|产品名称筛选|验证要点:填写或选择产品名称后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-002 - **TP_STAT_TBC_010**(高)|物料名称筛选|验证要点:填写或选择物料名称后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-002
- **TP_STAT_TBC_011**(高)|UDI码筛选|验证要点:填写或选择UDI码后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-002 - **TP_STAT_TBC_011**(高)|UDI码筛选|验证要点:填写或选择UDI码后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-002
- **TP_STAT_TBC_012**(高)|原厂码筛选|验证要点:填写或选择原厂码后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-002 - **TP_STAT_TBC_012**(高)|原厂码筛选|验证要点:填写或选择原厂码后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-002
- **TP_STAT_TBC_013**(高)|合单出库单号筛选|验证要点:填写或选择合单出库单号后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-002 - **TP_STAT_TBC_013**(高)|合单出库单号筛选|验证要点:填写或选择合单出库单号后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-002
- **TP_STAT_TBC_014**(高)|批号筛选|验证要点:填写或选择批号后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-002 - **TP_STAT_TBC_014**(高)|批号筛选|验证要点:填写或选择批号后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-002
- **TP_STAT_TBC_015**(高)|配送单号筛选|验证要点:填写或选择配送单号后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-002 - **TP_STAT_TBC_015**(高)|配送单号筛选|验证要点:填写或选择配送单号后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-002
- **TP_STAT_TBC_016**(中)|耗材类型筛选|验证要点:填写或选择耗材类型后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-002 - **TP_STAT_TBC_016**(中)|耗材类型筛选|验证要点:填写或选择耗材类型后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-002
- **TP_STAT_TBC_017**(高)|组合条件查询|验证要点:产品名称 + UDI码 + 原厂码 + 合单出库单号等组合查询,结果同时满足全部已填条件|关联需求:UI-SPEC-SPD-TRACE-002 - **TP_STAT_TBC_017**(高)|组合条件查询|验证要点:物料名称 + UDI码 + 原厂码 + 合单出库单号等组合查询,结果同时满足全部已填条件|关联需求:UI-SPEC-SPD-TRACE-002
- **TP_STAT_TBC_018**(中)|快捷区重置|验证要点:填写快捷筛选条件后点击「重置」,各字段恢复默认,列表按产品规则刷新或保持|关联需求:UI-SPEC-SPD-TRACE-002 - **TP_STAT_TBC_018**(中)|快捷区重置|验证要点:填写快捷筛选条件后点击「重置」,各字段恢复默认,列表按产品规则刷新或保持|关联需求:UI-SPEC-SPD-TRACE-002
#### 边界验证点 #### 边界验证点
- **TP_STAT_TBC_019**(低)|产品名称空值查询|验证要点:产品名称为空仅按UDI码查询,返回符合其他条件的全量结果|关联需求:UI-SPEC-SPD-TRACE-002 - **TP_STAT_TBC_019**(低)|物料名称空值查询|验证要点:物料名称为空仅按UDI码查询,返回符合其他条件的全量结果|关联需求:UI-SPEC-SPD-TRACE-002
#### 异常验证点 #### 异常验证点
...@@ -71,7 +71,7 @@ ...@@ -71,7 +71,7 @@
- **TP_STAT_TBC_024**(高)|打开高级筛选抽屉|验证要点:点击「高级筛选」后右侧抽屉打开,标题为「高级筛选」|关联需求:UI-SPEC-SPD-TRACE-002 - **TP_STAT_TBC_024**(高)|打开高级筛选抽屉|验证要点:点击「高级筛选」后右侧抽屉打开,标题为「高级筛选」|关联需求:UI-SPEC-SPD-TRACE-002
- **TP_STAT_TBC_025**(高)|抽屉内筛选提交|验证要点:在抽屉填写条件后点击「筛选」,列表按条件刷新且主表/汇总更新|关联需求:UI-SPEC-SPD-TRACE-002 - **TP_STAT_TBC_025**(高)|抽屉内筛选提交|验证要点:在抽屉填写条件后点击「筛选」,列表按条件刷新且主表/汇总更新|关联需求:UI-SPEC-SPD-TRACE-002
- **TP_STAT_TBC_026**(高)|抽屉内重置|验证要点:点击抽屉底部「重置」,抽屉内各字段恢复默认|关联需求:UI-SPEC-SPD-TRACE-002 - **TP_STAT_TBC_026**(高)|抽屉内重置|验证要点:点击抽屉底部「重置」,抽屉内各字段恢复默认|关联需求:UI-SPEC-SPD-TRACE-002
- **TP_STAT_TBC_027**(中)|高级筛选-产品名称|验证要点:在抽屉填写产品名称后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-002 - **TP_STAT_TBC_027**(中)|高级筛选-物料名称|验证要点:在抽屉填写物料名称后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-002
- **TP_STAT_TBC_028**(中)|高级筛选-UDI码|验证要点:在抽屉填写UDI码后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-002 - **TP_STAT_TBC_028**(中)|高级筛选-UDI码|验证要点:在抽屉填写UDI码后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-002
- **TP_STAT_TBC_029**(中)|高级筛选-原厂码|验证要点:在抽屉填写原厂码后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-002 - **TP_STAT_TBC_029**(中)|高级筛选-原厂码|验证要点:在抽屉填写原厂码后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-002
- **TP_STAT_TBC_030**(中)|高级筛选-合单出库单号|验证要点:在抽屉填写合单出库单号后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-002 - **TP_STAT_TBC_030**(中)|高级筛选-合单出库单号|验证要点:在抽屉填写合单出库单号后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-002
...@@ -206,7 +206,7 @@ ...@@ -206,7 +206,7 @@
| 项 | 结论 | | 项 | 结论 |
|----|------| |----|------|
| 覆盖 | 已覆盖:导航、快捷筛选、高级筛选、追溯链路、主表列表、底部汇总、分页、导出;扫描字段(7 项):产品名称、UDI码、原厂码、合单出库单号、批号、配送单号、耗材类型;无日期快捷字段;共 **68** 条原子测试点 | | 覆盖 | 已覆盖:导航、快捷筛选、高级筛选、追溯链路、主表列表、底部汇总、分页、导出;扫描字段(7 项):物料名称、UDI码、原厂码、合单出库单号、批号、配送单号、耗材类型;无日期快捷字段;共 **68** 条原子测试点 |
| 分类 | 功能 / 边界 / 异常 / 集成四类均已按功能点拆分 | | 分类 | 功能 / 边界 / 异常 / 集成四类均已按功能点拆分 |
| 去重 | 与同模块其它报表共用交互模式处保留本页差异(条码追溯 专属筛选字段);编号前缀 TP_STAT_TBC | | 去重 | 与同模块其它报表共用交互模式处保留本页差异(条码追溯 专属筛选字段);编号前缀 TP_STAT_TBC |
| 待评审项 | ① 重置是否清空高级筛选条件需产品确认;② 导出任务中心文案需对照页面;④ 本页无日期快捷字段,默认查询范围需对照产品规则 | | 待评审项 | ① 重置是否清空高级筛选条件需产品确认;② 导出任务中心文案需对照页面;④ 本页无日期快捷字段,默认查询范围需对照产品规则 |
......
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
- **TP_STAT_TBY_015**(高)|配送单号筛选|验证要点:填写或选择配送单号后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-001 - **TP_STAT_TBY_015**(高)|配送单号筛选|验证要点:填写或选择配送单号后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-001
- **TP_STAT_TBY_016**(高)|验收单号筛选|验证要点:填写或选择验收单号后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-001 - **TP_STAT_TBY_016**(高)|验收单号筛选|验证要点:填写或选择验收单号后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-001
- **TP_STAT_TBY_017**(中)|请领单状态筛选|验证要点:填写或选择请领单状态后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-001 - **TP_STAT_TBY_017**(中)|请领单状态筛选|验证要点:填写或选择请领单状态后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-001
- **TP_STAT_TBY_018**(高)|进院供应商筛选|验证要点:填写或选择进院供应商后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-001 - **TP_STAT_TBY_018**(高)|销售商(自定义)筛选|验证要点:填写或选择销售商(自定义)后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-001
- **TP_STAT_TBY_019**(高)|组合条件查询|验证要点:起止时间 + 请领单号 + 耗材类型 + 院区名称 + 科室名称等组合查询,结果同时满足全部已填条件|关联需求:UI-SPEC-SPD-TRACE-001 - **TP_STAT_TBY_019**(高)|组合条件查询|验证要点:起止时间 + 请领单号 + 耗材类型 + 院区名称 + 科室名称等组合查询,结果同时满足全部已填条件|关联需求:UI-SPEC-SPD-TRACE-001
- **TP_STAT_TBY_020**(中)|快捷区重置|验证要点:填写快捷筛选条件后点击「重置」,各字段恢复默认,列表按产品规则刷新或保持|关联需求:UI-SPEC-SPD-TRACE-001 - **TP_STAT_TBY_020**(中)|快捷区重置|验证要点:填写快捷筛选条件后点击「重置」,各字段恢复默认,列表按产品规则刷新或保持|关联需求:UI-SPEC-SPD-TRACE-001
...@@ -85,7 +85,7 @@ ...@@ -85,7 +85,7 @@
- **TP_STAT_TBY_038**(中)|高级筛选-配送单号|验证要点:在抽屉填写配送单号后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-001 - **TP_STAT_TBY_038**(中)|高级筛选-配送单号|验证要点:在抽屉填写配送单号后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-001
- **TP_STAT_TBY_039**(中)|高级筛选-验收单号|验证要点:在抽屉填写验收单号后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-001 - **TP_STAT_TBY_039**(中)|高级筛选-验收单号|验证要点:在抽屉填写验收单号后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-001
- **TP_STAT_TBY_040**(中)|高级筛选-请领单状态|验证要点:在抽屉填写请领单状态后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-001 - **TP_STAT_TBY_040**(中)|高级筛选-请领单状态|验证要点:在抽屉填写请领单状态后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-001
- **TP_STAT_TBY_041**(中)|高级筛选-进院供应商|验证要点:在抽屉填写进院供应商后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-001 - **TP_STAT_TBY_041**(中)|高级筛选-销售商(自定义)|验证要点:在抽屉填写销售商(自定义)后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-001
- **TP_STAT_TBY_042**(高)|快捷区与高级筛选组合|验证要点:快捷区条件与抽屉条件同时生效,主表与底部汇总均满足组合条件|关联需求:UI-SPEC-SPD-TRACE-001 - **TP_STAT_TBY_042**(高)|快捷区与高级筛选组合|验证要点:快捷区条件与抽屉条件同时生效,主表与底部汇总均满足组合条件|关联需求:UI-SPEC-SPD-TRACE-001
- **TP_STAT_TBY_043**(高)|快捷区条件自动带入高级筛选|验证要点:快捷区填入与抽屉同名字段并查询后打开高级筛选,抽屉对应字段与快捷区已填值一致(不手动修改抽屉)|关联需求:UI-SPEC-SPD-TRACE-001 - **TP_STAT_TBY_043**(高)|快捷区条件自动带入高级筛选|验证要点:快捷区填入与抽屉同名字段并查询后打开高级筛选,抽屉对应字段与快捷区已填值一致(不手动修改抽屉)|关联需求:UI-SPEC-SPD-TRACE-001
...@@ -215,7 +215,7 @@ ...@@ -215,7 +215,7 @@
| 项 | 结论 | | 项 | 结论 |
|----|------| |----|------|
| 覆盖 | 已覆盖:导航、快捷筛选、高级筛选、追溯链路、主表列表、底部汇总、分页、导出;扫描字段(10 项):起止时间、请领单号、耗材类型、院区名称、科室名称、采购单号、配送单号、验收单号、请领单状态、进院供应商;共 **77** 条原子测试点 | | 覆盖 | 已覆盖:导航、快捷筛选、高级筛选、追溯链路、主表列表、底部汇总、分页、导出;扫描字段(10 项):起止时间、请领单号、耗材类型、院区名称、科室名称、采购单号、配送单号、验收单号、请领单状态、销售商(自定义);共 **77** 条原子测试点 |
| 分类 | 功能 / 边界 / 异常 / 集成四类均已按功能点拆分 | | 分类 | 功能 / 边界 / 异常 / 集成四类均已按功能点拆分 |
| 去重 | 与同模块其它报表共用交互模式处保留本页差异(直配请领单追溯 专属筛选字段);编号前缀 TP_STAT_TBY | | 去重 | 与同模块其它报表共用交互模式处保留本页差异(直配请领单追溯 专属筛选字段);编号前缀 TP_STAT_TBY |
| 待评审项 | ① 重置是否清空高级筛选条件需产品确认;② 导出任务中心文案需对照页面;③ 组合查询时主表无起止时间列勿 fallback 单日(参考 STAT-LMP-004) | | 待评审项 | ① 重置是否清空高级筛选条件需产品确认;② 导出任务中心文案需对照页面;③ 组合查询时主表无起止时间列勿 fallback 单日(参考 STAT-LMP-004) |
......
...@@ -38,25 +38,25 @@ ...@@ -38,25 +38,25 @@
#### 功能验证点 #### 功能验证点
- **TP_STAT_TDD_009**(高)|默认请领日期区间查询|验证要点:首次进入页面请领日期默认为合理默认区间,点击「查询」后主表有数据或空态提示明确|关联需求:UI-SPEC-SPD-TRACE-003 - **TP_STAT_TDD_009**(高)|默认请领日期区间查询|验证要点:首次进入页面请领日期默认为合理默认区间,点击「查询」后主表有数据或空态提示明确|关联需求:UI-SPEC-SPD-TRACE-003
- **TP_STAT_TDD_010**(高)|产品名称筛选|验证要点:填写或选择产品名称后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003 - **TP_STAT_TDD_010**(高)|物料名称筛选|验证要点:填写或选择物料名称后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003
- **TP_STAT_TDD_011**(中)|规格型号筛选|验证要点:填写或选择规格型号后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003 - **TP_STAT_TDD_011**(中)|规格型号筛选|验证要点:填写或选择规格型号后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003
- **TP_STAT_TDD_012**(高)|请领单号筛选|验证要点:填写或选择请领单号后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003 - **TP_STAT_TDD_012**(高)|请领单号筛选|验证要点:填写或选择请领单号后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003
- **TP_STAT_TDD_013**(中)|单据形态筛选|验证要点:填写或选择单据形态后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003 - **TP_STAT_TDD_013**(中)|单据形态筛选|验证要点:填写或选择单据形态后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003
- **TP_STAT_TDD_014**(高)|请领科室筛选|验证要点:填写或选择请领科室后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003 - **TP_STAT_TDD_014**(高)|请领科室筛选|验证要点:填写或选择请领科室后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003
- **TP_STAT_TDD_015**(高)|配送单号筛选|验证要点:填写或选择配送单号后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003 - **TP_STAT_TDD_015**(高)|配送单号筛选|验证要点:填写或选择配送单号后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003
- **TP_STAT_TDD_016**(高)|进院供应商名称筛选|验证要点:填写或选择进院供应商名称后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003 - **TP_STAT_TDD_016**(高)|销售商(自定义)名称筛选|验证要点:填写或选择销售商(自定义)名称后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003
- **TP_STAT_TDD_017**(高)|采购计划单号筛选|验证要点:填写或选择采购计划单号后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003 - **TP_STAT_TDD_017**(高)|采购计划单号筛选|验证要点:填写或选择采购计划单号后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003
- **TP_STAT_TDD_018**(高)|采购单号筛选|验证要点:填写或选择采购单号后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003 - **TP_STAT_TDD_018**(高)|采购单号筛选|验证要点:填写或选择采购单号后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003
- **TP_STAT_TDD_019**(中)|请领人筛选|验证要点:填写或选择请领人后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003 - **TP_STAT_TDD_019**(中)|请领人筛选|验证要点:填写或选择请领人后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003
- **TP_STAT_TDD_020**(高)|院区名称筛选|验证要点:填写或选择院区名称后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003 - **TP_STAT_TDD_020**(高)|院区名称筛选|验证要点:填写或选择院区名称后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003
- **TP_STAT_TDD_021**(高)|组合条件查询|验证要点:请领日期 + 产品名称 + 规格型号 + 请领单号 + 单据形态等组合查询,结果同时满足全部已填条件|关联需求:UI-SPEC-SPD-TRACE-003 - **TP_STAT_TDD_021**(高)|组合条件查询|验证要点:请领日期 + 物料名称 + 规格型号 + 请领单号 + 单据形态等组合查询,结果同时满足全部已填条件|关联需求:UI-SPEC-SPD-TRACE-003
- **TP_STAT_TDD_022**(中)|快捷区重置|验证要点:填写快捷筛选条件后点击「重置」,各字段恢复默认,列表按产品规则刷新或保持|关联需求:UI-SPEC-SPD-TRACE-003 - **TP_STAT_TDD_022**(中)|快捷区重置|验证要点:填写快捷筛选条件后点击「重置」,各字段恢复默认,列表按产品规则刷新或保持|关联需求:UI-SPEC-SPD-TRACE-003
#### 边界验证点 #### 边界验证点
- **TP_STAT_TDD_023**(中)|请领日期起止同一天|验证要点:开始日期/月份等于结束值时查询成功,仅返回该周期数据|关联需求:UI-SPEC-SPD-TRACE-003 - **TP_STAT_TDD_023**(中)|请领日期起止同一天|验证要点:开始日期/月份等于结束值时查询成功,仅返回该周期数据|关联需求:UI-SPEC-SPD-TRACE-003
- **TP_STAT_TDD_024**(中)|请领日期跨度上限|验证要点:选择允许的最大日期跨度查询,系统正常返回或给出明确跨度限制提示|关联需求:UI-SPEC-SPD-TRACE-003 - **TP_STAT_TDD_024**(中)|请领日期跨度上限|验证要点:选择允许的最大日期跨度查询,系统正常返回或给出明确跨度限制提示|关联需求:UI-SPEC-SPD-TRACE-003
- **TP_STAT_TDD_025**(低)|产品名称空值查询|验证要点:产品名称为空仅按请领日期、规格型号查询,返回符合其他条件的全量结果|关联需求:UI-SPEC-SPD-TRACE-003 - **TP_STAT_TDD_025**(低)|物料名称空值查询|验证要点:物料名称为空仅按请领日期、规格型号查询,返回符合其他条件的全量结果|关联需求:UI-SPEC-SPD-TRACE-003
#### 异常验证点 #### 异常验证点
...@@ -80,13 +80,13 @@ ...@@ -80,13 +80,13 @@
- **TP_STAT_TDD_033**(高)|抽屉内筛选提交|验证要点:在抽屉填写条件后点击「筛选」,列表按条件刷新且主表/汇总更新|关联需求:UI-SPEC-SPD-TRACE-003 - **TP_STAT_TDD_033**(高)|抽屉内筛选提交|验证要点:在抽屉填写条件后点击「筛选」,列表按条件刷新且主表/汇总更新|关联需求:UI-SPEC-SPD-TRACE-003
- **TP_STAT_TDD_034**(高)|抽屉内重置|验证要点:点击抽屉底部「重置」,抽屉内各字段恢复默认|关联需求:UI-SPEC-SPD-TRACE-003 - **TP_STAT_TDD_034**(高)|抽屉内重置|验证要点:点击抽屉底部「重置」,抽屉内各字段恢复默认|关联需求:UI-SPEC-SPD-TRACE-003
- **TP_STAT_TDD_035**(中)|高级筛选-请领日期|验证要点:在抽屉填写请领日期后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003 - **TP_STAT_TDD_035**(中)|高级筛选-请领日期|验证要点:在抽屉填写请领日期后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003
- **TP_STAT_TDD_036**(中)|高级筛选-产品名称|验证要点:在抽屉填写产品名称后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003 - **TP_STAT_TDD_036**(中)|高级筛选-物料名称|验证要点:在抽屉填写物料名称后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003
- **TP_STAT_TDD_037**(中)|高级筛选-规格型号|验证要点:在抽屉填写规格型号后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003 - **TP_STAT_TDD_037**(中)|高级筛选-规格型号|验证要点:在抽屉填写规格型号后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003
- **TP_STAT_TDD_038**(中)|高级筛选-请领单号|验证要点:在抽屉填写请领单号后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003 - **TP_STAT_TDD_038**(中)|高级筛选-请领单号|验证要点:在抽屉填写请领单号后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003
- **TP_STAT_TDD_039**(中)|高级筛选-单据形态|验证要点:在抽屉填写单据形态后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003 - **TP_STAT_TDD_039**(中)|高级筛选-单据形态|验证要点:在抽屉填写单据形态后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003
- **TP_STAT_TDD_040**(中)|高级筛选-请领科室|验证要点:在抽屉填写请领科室后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003 - **TP_STAT_TDD_040**(中)|高级筛选-请领科室|验证要点:在抽屉填写请领科室后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003
- **TP_STAT_TDD_041**(中)|高级筛选-配送单号|验证要点:在抽屉填写配送单号后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003 - **TP_STAT_TDD_041**(中)|高级筛选-配送单号|验证要点:在抽屉填写配送单号后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003
- **TP_STAT_TDD_042**(中)|高级筛选-进院供应商名称|验证要点:在抽屉填写进院供应商名称后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003 - **TP_STAT_TDD_042**(中)|高级筛选-销售商(自定义)名称|验证要点:在抽屉填写销售商(自定义)名称后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003
- **TP_STAT_TDD_043**(中)|高级筛选-采购计划单号|验证要点:在抽屉填写采购计划单号后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003 - **TP_STAT_TDD_043**(中)|高级筛选-采购计划单号|验证要点:在抽屉填写采购计划单号后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003
- **TP_STAT_TDD_044**(中)|高级筛选-采购单号|验证要点:在抽屉填写采购单号后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003 - **TP_STAT_TDD_044**(中)|高级筛选-采购单号|验证要点:在抽屉填写采购单号后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-003
- **TP_STAT_TDD_045**(高)|快捷区与高级筛选组合|验证要点:快捷区条件与抽屉条件同时生效,主表与底部汇总均满足组合条件|关联需求:UI-SPEC-SPD-TRACE-003 - **TP_STAT_TDD_045**(高)|快捷区与高级筛选组合|验证要点:快捷区条件与抽屉条件同时生效,主表与底部汇总均满足组合条件|关联需求:UI-SPEC-SPD-TRACE-003
...@@ -110,7 +110,7 @@ ...@@ -110,7 +110,7 @@
#### 功能验证点 #### 功能验证点
- **TP_STAT_TDD_050**(高)|明细行与请领单关联一致|验证要点:按请领单号/产品名称组合查询,明细行请领科室、配送单号、采购单号等与上游单据一致|关联需求:UI-SPEC-SPD-TRACE-003 - **TP_STAT_TDD_050**(高)|明细行与请领单关联一致|验证要点:按请领单号/物料名称组合查询,明细行请领科室、配送单号、采购单号等与上游单据一致|关联需求:UI-SPEC-SPD-TRACE-003
#### 边界验证点 #### 边界验证点
...@@ -217,7 +217,7 @@ ...@@ -217,7 +217,7 @@
| 项 | 结论 | | 项 | 结论 |
|----|------| |----|------|
| 覆盖 | 已覆盖:导航、快捷筛选、高级筛选、追溯链路、主表列表、底部汇总、分页、导出;扫描字段(12 项):请领日期、产品名称、规格型号、请领单号、单据形态、请领科室、配送单号、进院供应商名称、采购计划单号、采购单号、请领人、院区名称;共 **79** 条原子测试点 | | 覆盖 | 已覆盖:导航、快捷筛选、高级筛选、追溯链路、主表列表、底部汇总、分页、导出;扫描字段(12 项):请领日期、物料名称、规格型号、请领单号、单据形态、请领科室、配送单号、销售商(自定义)名称、采购计划单号、采购单号、请领人、院区名称;共 **79** 条原子测试点 |
| 分类 | 功能 / 边界 / 异常 / 集成四类均已按功能点拆分 | | 分类 | 功能 / 边界 / 异常 / 集成四类均已按功能点拆分 |
| 去重 | 与同模块其它报表共用交互模式处保留本页差异(直配请领明细查询 专属筛选字段);编号前缀 TP_STAT_TDD | | 去重 | 与同模块其它报表共用交互模式处保留本页差异(直配请领明细查询 专属筛选字段);编号前缀 TP_STAT_TDD |
| 待评审项 | ① 重置是否清空高级筛选条件需产品确认;② 导出任务中心文案需对照页面;③ 组合查询时主表无请领日期列勿 fallback 单日(参考 STAT-LMP-004) | | 待评审项 | ① 重置是否清空高级筛选条件需产品确认;② 导出任务中心文案需对照页面;③ 组合查询时主表无请领日期列勿 fallback 单日(参考 STAT-LMP-004) |
......
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
- **TP_STAT_TPR_012**(高)|配送单号筛选|验证要点:填写或选择配送单号后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-004 - **TP_STAT_TPR_012**(高)|配送单号筛选|验证要点:填写或选择配送单号后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-004
- **TP_STAT_TPR_013**(高)|验收单号筛选|验证要点:填写或选择验收单号后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-004 - **TP_STAT_TPR_013**(高)|验收单号筛选|验证要点:填写或选择验收单号后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-004
- **TP_STAT_TPR_014**(中)|采购单状态筛选|验证要点:填写或选择采购单状态后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-004 - **TP_STAT_TPR_014**(中)|采购单状态筛选|验证要点:填写或选择采购单状态后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-004
- **TP_STAT_TPR_015**(高)|进院供应商筛选|验证要点:填写或选择进院供应商后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-004 - **TP_STAT_TPR_015**(高)|销售商(自定义)筛选|验证要点:填写或选择销售商(自定义)后查询,主表列与条件匹配|关联需求:UI-SPEC-SPD-TRACE-004
- **TP_STAT_TPR_016**(高)|组合条件查询|验证要点:采购日期 + 采购单号 + 耗材属性 + 配送单号 + 验收单号等组合查询,结果同时满足全部已填条件|关联需求:UI-SPEC-SPD-TRACE-004 - **TP_STAT_TPR_016**(高)|组合条件查询|验证要点:采购日期 + 采购单号 + 耗材属性 + 配送单号 + 验收单号等组合查询,结果同时满足全部已填条件|关联需求:UI-SPEC-SPD-TRACE-004
- **TP_STAT_TPR_017**(中)|快捷区重置|验证要点:填写快捷筛选条件后点击「重置」,各字段恢复默认,列表按产品规则刷新或保持|关联需求:UI-SPEC-SPD-TRACE-004 - **TP_STAT_TPR_017**(中)|快捷区重置|验证要点:填写快捷筛选条件后点击「重置」,各字段恢复默认,列表按产品规则刷新或保持|关联需求:UI-SPEC-SPD-TRACE-004
...@@ -79,7 +79,7 @@ ...@@ -79,7 +79,7 @@
- **TP_STAT_TPR_032**(中)|高级筛选-配送单号|验证要点:在抽屉填写配送单号后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-004 - **TP_STAT_TPR_032**(中)|高级筛选-配送单号|验证要点:在抽屉填写配送单号后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-004
- **TP_STAT_TPR_033**(中)|高级筛选-验收单号|验证要点:在抽屉填写验收单号后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-004 - **TP_STAT_TPR_033**(中)|高级筛选-验收单号|验证要点:在抽屉填写验收单号后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-004
- **TP_STAT_TPR_034**(中)|高级筛选-采购单状态|验证要点:在抽屉填写采购单状态后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-004 - **TP_STAT_TPR_034**(中)|高级筛选-采购单状态|验证要点:在抽屉填写采购单状态后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-004
- **TP_STAT_TPR_035**(中)|高级筛选-进院供应商|验证要点:在抽屉填写进院供应商后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-004 - **TP_STAT_TPR_035**(中)|高级筛选-销售商(自定义)|验证要点:在抽屉填写销售商(自定义)后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-TRACE-004
- **TP_STAT_TPR_036**(高)|快捷区与高级筛选组合|验证要点:快捷区条件与抽屉条件同时生效,主表与底部汇总均满足组合条件|关联需求:UI-SPEC-SPD-TRACE-004 - **TP_STAT_TPR_036**(高)|快捷区与高级筛选组合|验证要点:快捷区条件与抽屉条件同时生效,主表与底部汇总均满足组合条件|关联需求:UI-SPEC-SPD-TRACE-004
- **TP_STAT_TPR_037**(高)|快捷区条件自动带入高级筛选|验证要点:快捷区填入与抽屉同名字段并查询后打开高级筛选,抽屉对应字段与快捷区已填值一致(不手动修改抽屉)|关联需求:UI-SPEC-SPD-TRACE-004 - **TP_STAT_TPR_037**(高)|快捷区条件自动带入高级筛选|验证要点:快捷区填入与抽屉同名字段并查询后打开高级筛选,抽屉对应字段与快捷区已填值一致(不手动修改抽屉)|关联需求:UI-SPEC-SPD-TRACE-004
...@@ -208,7 +208,7 @@ ...@@ -208,7 +208,7 @@
| 项 | 结论 | | 项 | 结论 |
|----|------| |----|------|
| 覆盖 | 已覆盖:导航、快捷筛选、高级筛选、追溯链路、主表列表、底部汇总、分页、导出;扫描字段(7 项):采购日期、采购单号、耗材属性、配送单号、验收单号、采购单状态、进院供应商;共 **70** 条原子测试点 | | 覆盖 | 已覆盖:导航、快捷筛选、高级筛选、追溯链路、主表列表、底部汇总、分页、导出;扫描字段(7 项):采购日期、采购单号、耗材属性、配送单号、验收单号、采购单状态、销售商(自定义);共 **70** 条原子测试点 |
| 分类 | 功能 / 边界 / 异常 / 集成四类均已按功能点拆分 | | 分类 | 功能 / 边界 / 异常 / 集成四类均已按功能点拆分 |
| 去重 | 与同模块其它报表共用交互模式处保留本页差异(采购单追溯 专属筛选字段);编号前缀 TP_STAT_TPR | | 去重 | 与同模块其它报表共用交互模式处保留本页差异(采购单追溯 专属筛选字段);编号前缀 TP_STAT_TPR |
| 待评审项 | ① 重置是否清空高级筛选条件需产品确认;② 导出任务中心文案需对照页面;③ 组合查询时主表无采购日期列勿 fallback 单日(参考 STAT-LMP-004) | | 待评审项 | ① 重置是否清空高级筛选条件需产品确认;② 导出任务中心文案需对照页面;③ 组合查询时主表无采购日期列勿 fallback 单日(参考 STAT-LMP-004) |
......
...@@ -37,17 +37,17 @@ ...@@ -37,17 +37,17 @@
#### 功能验证点 #### 功能验证点
- **TP_STAT_WLS_009**(高)|产品名称筛选|验证要点:填写或选择产品名称后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-004 - **TP_STAT_WLS_009**(高)|物料名称筛选|验证要点:填写或选择物料名称后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-004
- **TP_STAT_WLS_010**(高)|默认供应商筛选|验证要点:填写或选择默认供应商后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-004 - **TP_STAT_WLS_010**(高)|默认销售商筛选|验证要点:填写或选择默认销售商后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-004
- **TP_STAT_WLS_011**(中)|耗材类型筛选|验证要点:填写或选择耗材类型后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-004 - **TP_STAT_WLS_011**(中)|耗材类型筛选|验证要点:填写或选择耗材类型后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-004
- **TP_STAT_WLS_012**(高)|组合条件查询|验证要点:产品名称 + 默认供应商 + 耗材类型 + 院区 + 库房 + 库区 等组合查询,结果同时满足全部已填条件|关联需求:UI-SPEC-SPD-WARN-004 - **TP_STAT_WLS_012**(高)|组合条件查询|验证要点:物料名称 + 默认销售商 + 耗材类型 + 院区 + 库房 + 库区 等组合查询,结果同时满足全部已填条件|关联需求:UI-SPEC-SPD-WARN-004
- **TP_STAT_WLS_013**(中)|快捷区重置|验证要点:填写快捷筛选条件后点击「重置」,各字段恢复默认,列表按产品规则刷新|关联需求:UI-SPEC-SPD-WARN-004 - **TP_STAT_WLS_013**(中)|快捷区重置|验证要点:填写快捷筛选条件后点击「重置」,各字段恢复默认,列表按产品规则刷新|关联需求:UI-SPEC-SPD-WARN-004
- **TP_STAT_WLS_044**(中)|收起与展开筛选区|验证要点:点击「收起」后扩展条件(院区/库房/库区)隐藏,按钮变为「展开」;再次展开后扩展条件可见且已填字段值不丢失|关联需求:UI-SPEC-SPD-WARN-004 - **TP_STAT_WLS_044**(中)|收起与展开筛选区|验证要点:点击「收起」后扩展条件(院区/库房/库区)隐藏,按钮变为「展开」;再次展开后扩展条件可见且已填字段值不丢失|关联需求:UI-SPEC-SPD-WARN-004
- **TP_STAT_WLS_045**(高)|按包装含量统计切换|验证要点:默认选中「按包装含量统计」;点击开关切换为「按散货数量统计」后查询成功,主表刷新且无报错(对应接口 0:按包装含量统计 1:散货统计)|关联需求:UI-SPEC-SPD-WARN-004 - **TP_STAT_WLS_045**(高)|按包装含量统计切换|验证要点:默认选中「按包装含量统计」;点击开关切换为「按散货数量统计」后查询成功,主表刷新且无报错(对应接口 0:按包装含量统计 1:散货统计)|关联需求:UI-SPEC-SPD-WARN-004
#### 边界验证点 #### 边界验证点
- **TP_STAT_WLS_014**(低)|产品名称空值查询|验证要点:产品名称为空仅按其它已填条件查询,返回符合其他条件的全量结果|关联需求:UI-SPEC-SPD-WARN-004 - **TP_STAT_WLS_014**(低)|物料名称空值查询|验证要点:物料名称为空仅按其它已填条件查询,返回符合其他条件的全量结果|关联需求:UI-SPEC-SPD-WARN-004
#### 异常验证点 #### 异常验证点
...@@ -153,7 +153,7 @@ ...@@ -153,7 +153,7 @@
| 项 | 结论 | | 项 | 结论 |
|----|------| |----|------|
| 覆盖 | 已覆盖:导航、快捷筛选(含收起/展开、按包装含量统计开关)、预警业务规则(低储)、主表列表、底部汇总、导出;扫描快捷字段:产品名称、默认供应商、耗材类型;共 **44** 条原子测试点 | | 覆盖 | 已覆盖:导航、快捷筛选(含收起/展开、按包装含量统计开关)、预警业务规则(低储)、主表列表、底部汇总、导出;扫描快捷字段:物料名称、默认销售商、耗材类型;共 **44** 条原子测试点 |
| 分类 | 功能 / 边界 / 异常 / 集成四类均已按功能点拆分 | | 分类 | 功能 / 边界 / 异常 / 集成四类均已按功能点拆分 |
| 去重 | 与同模块其它报表共用交互模式处保留本页差异(低储预警 专属业务 section);编号前缀 TP_STAT_WLS | | 去重 | 与同模块其它报表共用交互模式处保留本页差异(低储预警 专属业务 section);编号前缀 TP_STAT_WLS |
| 待评审项 | ① 导出直下载/下载中心以页面实测为准(自动化不校验文件内容);② 预警阈值(滞销/效期/低储)需与库存策略配置对照 | | 待评审项 | ① 导出直下载/下载中心以页面实测为准(自动化不校验文件内容);② 预警阈值(滞销/效期/低储)需与库存策略配置对照 |
......
...@@ -37,20 +37,20 @@ ...@@ -37,20 +37,20 @@
#### 功能验证点 #### 功能验证点
- **TP_STAT_WST_009**(高)|产品名称筛选|验证要点:填写或选择产品名称后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-001 - **TP_STAT_WST_009**(高)|物料名称筛选|验证要点:填写或选择物料名称后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-001
- **TP_STAT_WST_010**(高)|进院供应商名称筛选|验证要点:填写或选择进院供应商名称后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-001 - **TP_STAT_WST_010**(高)|销售商(自定义)名称筛选|验证要点:填写或选择销售商(自定义)名称后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-001
- **TP_STAT_WST_011**(中)|滞销天数筛选|验证要点:填写或选择滞销天数后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-001 - **TP_STAT_WST_011**(中)|滞销天数筛选|验证要点:填写或选择滞销天数后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-001
- **TP_STAT_WST_012**(中)|条码筛选|验证要点:填写或选择条码后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-001 - **TP_STAT_WST_012**(中)|条码筛选|验证要点:填写或选择条码后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-001
- **TP_STAT_WST_013**(中)|耗材类型筛选|验证要点:填写或选择耗材类型后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-001 - **TP_STAT_WST_013**(中)|耗材类型筛选|验证要点:填写或选择耗材类型后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-001
- **TP_STAT_WST_014**(高)|院区名称筛选|验证要点:填写或选择院区名称后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-001 - **TP_STAT_WST_014**(高)|院区名称筛选|验证要点:填写或选择院区名称后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-001
- **TP_STAT_WST_015**(中)|库房名称筛选|验证要点:填写或选择库房名称后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-001 - **TP_STAT_WST_015**(中)|库房名称筛选|验证要点:填写或选择库房名称后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-001
- **TP_STAT_WST_016**(中)|库区筛选|验证要点:填写或选择库区后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-001 - **TP_STAT_WST_016**(中)|库区筛选|验证要点:填写或选择库区后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-001
- **TP_STAT_WST_017**(高)|组合条件查询|验证要点:产品名称 + 进院供应商名称 + 滞销天数等组合查询,结果同时满足全部已填条件|关联需求:UI-SPEC-SPD-WARN-001 - **TP_STAT_WST_017**(高)|组合条件查询|验证要点:物料名称 + 销售商(自定义)名称 + 滞销天数等组合查询,结果同时满足全部已填条件|关联需求:UI-SPEC-SPD-WARN-001
- **TP_STAT_WST_018**(中)|快捷区重置|验证要点:填写快捷筛选条件后点击「重置」,各字段恢复默认,列表按产品规则刷新|关联需求:UI-SPEC-SPD-WARN-001 - **TP_STAT_WST_018**(中)|快捷区重置|验证要点:填写快捷筛选条件后点击「重置」,各字段恢复默认,列表按产品规则刷新|关联需求:UI-SPEC-SPD-WARN-001
#### 边界验证点 #### 边界验证点
- **TP_STAT_WST_019**(低)|产品名称空值查询|验证要点:产品名称为空仅按其它已填条件查询,返回符合其他条件的全量结果|关联需求:UI-SPEC-SPD-WARN-001 - **TP_STAT_WST_019**(低)|物料名称空值查询|验证要点:物料名称为空仅按其它已填条件查询,返回符合其他条件的全量结果|关联需求:UI-SPEC-SPD-WARN-001
#### 异常验证点 #### 异常验证点
...@@ -71,8 +71,8 @@ ...@@ -71,8 +71,8 @@
- **TP_STAT_WST_024**(高)|打开高级筛选抽屉|验证要点:点击「高级筛选」后右侧抽屉打开,标题为「高级筛选」|关联需求:UI-SPEC-SPD-WARN-001 - **TP_STAT_WST_024**(高)|打开高级筛选抽屉|验证要点:点击「高级筛选」后右侧抽屉打开,标题为「高级筛选」|关联需求:UI-SPEC-SPD-WARN-001
- **TP_STAT_WST_025**(高)|抽屉内筛选提交|验证要点:在抽屉填写条件后点击「筛选」,列表按条件刷新且主表/汇总更新|关联需求:UI-SPEC-SPD-WARN-001 - **TP_STAT_WST_025**(高)|抽屉内筛选提交|验证要点:在抽屉填写条件后点击「筛选」,列表按条件刷新且主表/汇总更新|关联需求:UI-SPEC-SPD-WARN-001
- **TP_STAT_WST_026**(高)|抽屉内重置|验证要点:点击抽屉底部「重置」,抽屉内各字段恢复默认|关联需求:UI-SPEC-SPD-WARN-001 - **TP_STAT_WST_026**(高)|抽屉内重置|验证要点:点击抽屉底部「重置」,抽屉内各字段恢复默认|关联需求:UI-SPEC-SPD-WARN-001
- **TP_STAT_WST_027**(中)|高级筛选-产品名称|验证要点:在抽屉填写产品名称后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-001 - **TP_STAT_WST_027**(中)|高级筛选-物料名称|验证要点:在抽屉填写物料名称后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-001
- **TP_STAT_WST_028**(中)|高级筛选-进院供应商名称|验证要点:在抽屉填写进院供应商名称后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-001 - **TP_STAT_WST_028**(中)|高级筛选-销售商(自定义)名称|验证要点:在抽屉填写销售商(自定义)名称后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-001
- **TP_STAT_WST_029**(中)|高级筛选-滞销天数|验证要点:在抽屉填写滞销天数后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-001 - **TP_STAT_WST_029**(中)|高级筛选-滞销天数|验证要点:在抽屉填写滞销天数后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-001
- **TP_STAT_WST_030**(中)|高级筛选-条码|验证要点:在抽屉填写条码后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-001 - **TP_STAT_WST_030**(中)|高级筛选-条码|验证要点:在抽屉填写条码后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-001
- **TP_STAT_WST_031**(中)|高级筛选-耗材类型|验证要点:在抽屉填写耗材类型后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-001 - **TP_STAT_WST_031**(中)|高级筛选-耗材类型|验证要点:在抽屉填写耗材类型后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-001
...@@ -141,7 +141,7 @@ ...@@ -141,7 +141,7 @@
#### 功能验证点 #### 功能验证点
- **TP_STAT_WST_048**(高)|默认列展示完整|验证要点:查询后主表展示序号及业务核心列(产品/科室/数量/金额等,以页面为准)|关联需求:UI-SPEC-SPD-WARN-001 - **TP_STAT_WST_048**(高)|默认列展示完整|验证要点:查询后主表展示序号及业务核心列(产品/科室/数量/金额等,以页面为准)|关联需求:UI-SPEC-SPD-WARN-001
- **TP_STAT_WST_075**(高)|点击条码打开产品详情|验证要点:点击主表首行【条码】弹出产品详情,详情中产品编号与该行一致;点击右上角 x 关闭后弹窗消失|关联需求:UI-SPEC-SPD-WARN-001 - **TP_STAT_WST_075**(高)|点击条码打开产品详情|验证要点:点击主表首行【条码】弹出产品详情,详情中物料编号与该行一致;点击右上角 x 关闭后弹窗消失|关联需求:UI-SPEC-SPD-WARN-001
- **TP_STAT_WST_049**(中)|列表横向拖拉滚动与列对齐正常|验证要点:列宽超出视口时可横向拖拉滚动,远侧列进入可视区;表头与数据列对齐无异常间隙/重叠|关联需求:UI-SPEC-SPD-WARN-001 - **TP_STAT_WST_049**(中)|列表横向拖拉滚动与列对齐正常|验证要点:列宽超出视口时可横向拖拉滚动,远侧列进入可视区;表头与数据列对齐无异常间隙/重叠|关联需求:UI-SPEC-SPD-WARN-001
- **TP_STAT_WST_050**(低)|打开列设置面板|验证要点:点击列设置齿轮图标,面板正常弹出且字段列表与表格可配置列一致|关联需求:UI-SPEC-SPD-WARN-001 - **TP_STAT_WST_050**(低)|打开列设置面板|验证要点:点击列设置齿轮图标,面板正常弹出且字段列表与表格可配置列一致|关联需求:UI-SPEC-SPD-WARN-001
- **TP_STAT_WST_051**(低)|列设置取消勾选后再勾选列表列恢复|验证要点:取消勾选非核心列后表头隐藏,再次勾选后表头恢复,列设置勾选状态与列表一致|关联需求:UI-SPEC-SPD-WARN-001 - **TP_STAT_WST_051**(低)|列设置取消勾选后再勾选列表列恢复|验证要点:取消勾选非核心列后表头隐藏,再次勾选后表头恢复,列设置勾选状态与列表一致|关联需求:UI-SPEC-SPD-WARN-001
...@@ -232,7 +232,7 @@ ...@@ -232,7 +232,7 @@
| 项 | 结论 | | 项 | 结论 |
|----|------| |----|------|
| 覆盖 | 已覆盖:导航、快捷筛选、高级筛选、预警业务规则(滞留)、条码打开产品详情、条码明细导出、主表列表、底部汇总、分页、导出;扫描快捷字段:产品名称、进院供应商名称、滞销天数、条码、耗材类型、院区名称、库房名称、库区;共 **75** 条原子测试点 | | 覆盖 | 已覆盖:导航、快捷筛选、高级筛选、预警业务规则(滞留)、条码打开产品详情、条码明细导出、主表列表、底部汇总、分页、导出;扫描快捷字段:物料名称、销售商(自定义)名称、滞销天数、条码、耗材类型、院区名称、库房名称、库区;共 **75** 条原子测试点 |
| 分类 | 功能 / 边界 / 异常 / 集成四类均已按功能点拆分 | | 分类 | 功能 / 边界 / 异常 / 集成四类均已按功能点拆分 |
| 去重 | 与同模块其它报表共用交互模式处保留本页差异(滞留预警 专属业务 section);编号前缀 TP_STAT_WST | | 去重 | 与同模块其它报表共用交互模式处保留本页差异(滞留预警 专属业务 section);编号前缀 TP_STAT_WST |
| 待评审项 | ① 导出直下载/下载中心以页面实测为准(自动化不校验文件内容);② 预警阈值(滞销/效期/低储)需与库存策略配置对照 | | 待评审项 | ① 导出直下载/下载中心以页面实测为准(自动化不校验文件内容);② 预警阈值(滞销/效期/低储)需与库存策略配置对照 |
......
...@@ -37,17 +37,17 @@ ...@@ -37,17 +37,17 @@
#### 功能验证点 #### 功能验证点
- **TP_STAT_WDT_009**(高)|产品名称筛选|验证要点:填写或选择产品名称后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-002 - **TP_STAT_WDT_009**(高)|物料名称筛选|验证要点:填写或选择物料名称后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-002
- **TP_STAT_WDT_010**(高)|默认供应商筛选|验证要点:填写或选择默认供应商后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-002 - **TP_STAT_WDT_010**(高)|默认销售商筛选|验证要点:填写或选择默认销售商后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-002
- **TP_STAT_WDT_011**(中)|产品类型筛选|验证要点:填写或选择产品类型后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-002 - **TP_STAT_WDT_011**(中)|产品类型筛选|验证要点:填写或选择产品类型后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-002
- **TP_STAT_WDT_012**(高)|院区名称筛选|验证要点:填写或选择院区名称后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-002 - **TP_STAT_WDT_012**(高)|院区名称筛选|验证要点:填写或选择院区名称后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-002
- **TP_STAT_WDT_013**(中)|库房名称筛选|验证要点:填写或选择库房名称后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-002 - **TP_STAT_WDT_013**(中)|库房名称筛选|验证要点:填写或选择库房名称后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-002
- **TP_STAT_WDT_014**(高)|组合条件查询|验证要点:产品名称 + 默认供应商 + 产品类型等组合查询,结果同时满足全部已填条件|关联需求:UI-SPEC-SPD-WARN-002 - **TP_STAT_WDT_014**(高)|组合条件查询|验证要点:物料名称 + 默认销售商 + 产品类型等组合查询,结果同时满足全部已填条件|关联需求:UI-SPEC-SPD-WARN-002
- **TP_STAT_WDT_015**(中)|快捷区重置|验证要点:填写快捷筛选条件后点击「重置」,各字段恢复默认,列表按产品规则刷新|关联需求:UI-SPEC-SPD-WARN-002 - **TP_STAT_WDT_015**(中)|快捷区重置|验证要点:填写快捷筛选条件后点击「重置」,各字段恢复默认,列表按产品规则刷新|关联需求:UI-SPEC-SPD-WARN-002
#### 边界验证点 #### 边界验证点
- **TP_STAT_WDT_016**(低)|产品名称空值查询|验证要点:产品名称为空仅按其它已填条件查询,返回符合其他条件的全量结果|关联需求:UI-SPEC-SPD-WARN-002 - **TP_STAT_WDT_016**(低)|物料名称空值查询|验证要点:物料名称为空仅按其它已填条件查询,返回符合其他条件的全量结果|关联需求:UI-SPEC-SPD-WARN-002
#### 异常验证点 #### 异常验证点
...@@ -68,8 +68,8 @@ ...@@ -68,8 +68,8 @@
- **TP_STAT_WDT_021**(高)|打开高级筛选抽屉|验证要点:点击「高级筛选」后右侧抽屉打开,标题为「高级筛选」|关联需求:UI-SPEC-SPD-WARN-002 - **TP_STAT_WDT_021**(高)|打开高级筛选抽屉|验证要点:点击「高级筛选」后右侧抽屉打开,标题为「高级筛选」|关联需求:UI-SPEC-SPD-WARN-002
- **TP_STAT_WDT_022**(高)|抽屉内筛选提交|验证要点:在抽屉填写条件后点击「筛选」,列表按条件刷新且主表/汇总更新|关联需求:UI-SPEC-SPD-WARN-002 - **TP_STAT_WDT_022**(高)|抽屉内筛选提交|验证要点:在抽屉填写条件后点击「筛选」,列表按条件刷新且主表/汇总更新|关联需求:UI-SPEC-SPD-WARN-002
- **TP_STAT_WDT_023**(高)|抽屉内重置|验证要点:点击抽屉底部「重置」,抽屉内各字段恢复默认|关联需求:UI-SPEC-SPD-WARN-002 - **TP_STAT_WDT_023**(高)|抽屉内重置|验证要点:点击抽屉底部「重置」,抽屉内各字段恢复默认|关联需求:UI-SPEC-SPD-WARN-002
- **TP_STAT_WDT_024**(中)|高级筛选-产品名称|验证要点:在抽屉填写产品名称后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-002 - **TP_STAT_WDT_024**(中)|高级筛选-物料名称|验证要点:在抽屉填写物料名称后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-002
- **TP_STAT_WDT_025**(中)|高级筛选-默认供应商|验证要点:在抽屉填写默认供应商后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-002 - **TP_STAT_WDT_025**(中)|高级筛选-默认销售商|验证要点:在抽屉填写默认销售商后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-002
- **TP_STAT_WDT_026**(中)|高级筛选-产品类型|验证要点:在抽屉填写产品类型后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-002 - **TP_STAT_WDT_026**(中)|高级筛选-产品类型|验证要点:在抽屉填写产品类型后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-002
- **TP_STAT_WDT_027**(中)|高级筛选-院区名称|验证要点:在抽屉填写院区名称后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-002 - **TP_STAT_WDT_027**(中)|高级筛选-院区名称|验证要点:在抽屉填写院区名称后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-002
- **TP_STAT_WDT_028**(中)|高级筛选-库房名称|验证要点:在抽屉填写库房名称后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-002 - **TP_STAT_WDT_028**(中)|高级筛选-库房名称|验证要点:在抽屉填写库房名称后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-002
...@@ -120,7 +120,7 @@ ...@@ -120,7 +120,7 @@
- **TP_STAT_WDT_041**(中)|列表横向拖拉滚动与列对齐正常|验证要点:列宽超出视口时可横向拖拉滚动,远侧列进入可视区;表头与数据列对齐无异常间隙/重叠|关联需求:UI-SPEC-SPD-WARN-002 - **TP_STAT_WDT_041**(中)|列表横向拖拉滚动与列对齐正常|验证要点:列宽超出视口时可横向拖拉滚动,远侧列进入可视区;表头与数据列对齐无异常间隙/重叠|关联需求:UI-SPEC-SPD-WARN-002
- **TP_STAT_WDT_042**(低)|打开列设置面板|验证要点:点击列设置齿轮图标,面板正常弹出且字段列表与表格可配置列一致|关联需求:UI-SPEC-SPD-WARN-002 - **TP_STAT_WDT_042**(低)|打开列设置面板|验证要点:点击列设置齿轮图标,面板正常弹出且字段列表与表格可配置列一致|关联需求:UI-SPEC-SPD-WARN-002
- **TP_STAT_WDT_043**(低)|列设置取消勾选后再勾选列表列恢复|验证要点:取消勾选非核心列后表头隐藏,再次勾选后表头恢复,列设置勾选状态与列表一致|关联需求:UI-SPEC-SPD-WARN-002 - **TP_STAT_WDT_043**(低)|列设置取消勾选后再勾选列表列恢复|验证要点:取消勾选非核心列后表头隐藏,再次勾选后表头恢复,列设置勾选状态与列表一致|关联需求:UI-SPEC-SPD-WARN-002
- **TP_STAT_WDT_044**(中)|列排序|验证要点:默认表头 12 列中可排序 10 列(院区名称、单元含量无 sorter):库房名称、产品编号、产品名称、规格型号、规格、型号、器械注册人-术语配置、单位、库存数量、待发数量;点击列头升序/降序切换且指示器状态正确|关联需求:UI-SPEC-SPD-WARN-002 - **TP_STAT_WDT_044**(中)|列排序|验证要点:默认表头 12 列中可排序 10 列(院区名称、单元含量无 sorter):库房名称、物料编号、物料名称、规格型号、规格、型号、器械注册人-术语配置、单位、库存数量、待发数量;点击列头升序/降序切换且指示器状态正确|关联需求:UI-SPEC-SPD-WARN-002
#### 边界验证点 #### 边界验证点
...@@ -207,7 +207,7 @@ ...@@ -207,7 +207,7 @@
| 项 | 结论 | | 项 | 结论 |
|----|------| |----|------|
| 覆盖 | 已覆盖:导航、快捷筛选、高级筛选、预警业务规则(缺货)、主表列表、底部汇总、分页、导出;扫描快捷字段:产品名称、默认供应商、产品类型、院区名称、库房名称;共 **66** 条原子测试点 | | 覆盖 | 已覆盖:导航、快捷筛选、高级筛选、预警业务规则(缺货)、主表列表、底部汇总、分页、导出;扫描快捷字段:物料名称、默认销售商、产品类型、院区名称、库房名称;共 **66** 条原子测试点 |
| 分类 | 功能 / 边界 / 异常 / 集成四类均已按功能点拆分 | | 分类 | 功能 / 边界 / 异常 / 集成四类均已按功能点拆分 |
| 去重 | 与同模块其它报表共用交互模式处保留本页差异(缺货报表 专属业务 section);编号前缀 TP_STAT_WDT | | 去重 | 与同模块其它报表共用交互模式处保留本页差异(缺货报表 专属业务 section);编号前缀 TP_STAT_WDT |
| 待评审项 | ① 导出直下载/下载中心以页面实测为准(自动化不校验文件内容);② 预警阈值(滞销/效期/低储)需与库存策略配置对照 | | 待评审项 | ① 导出直下载/下载中心以页面实测为准(自动化不校验文件内容);② 预警阈值(滞销/效期/低储)需与库存策略配置对照 |
......
...@@ -37,15 +37,15 @@ ...@@ -37,15 +37,15 @@
#### 功能验证点 #### 功能验证点
- **TP_STAT_WEX_009**(高)|产品名称筛选|验证要点:填写或选择产品名称后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-003 - **TP_STAT_WEX_009**(高)|物料名称筛选|验证要点:填写或选择物料名称后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-003
- **TP_STAT_WEX_010**(高)|进院供应商名称筛选|验证要点:填写或选择进院供应商名称后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-003 - **TP_STAT_WEX_010**(高)|销售商(自定义)名称筛选|验证要点:填写或选择销售商(自定义)名称后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-003
- **TP_STAT_WEX_011**(中)|近效期筛选|验证要点:填写或选择近效期后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-003 - **TP_STAT_WEX_011**(中)|近效期筛选|验证要点:填写或选择近效期后查询,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-003
- **TP_STAT_WEX_012**(高)|组合条件查询|验证要点:产品名称 + 进院供应商名称 + 近效期等组合查询,结果同时满足全部已填条件|关联需求:UI-SPEC-SPD-WARN-003 - **TP_STAT_WEX_012**(高)|组合条件查询|验证要点:物料名称 + 销售商(自定义)名称 + 近效期等组合查询,结果同时满足全部已填条件|关联需求:UI-SPEC-SPD-WARN-003
- **TP_STAT_WEX_013**(中)|快捷区重置|验证要点:填写快捷筛选条件后点击「重置」,各字段恢复默认,列表按产品规则刷新|关联需求:UI-SPEC-SPD-WARN-003 - **TP_STAT_WEX_013**(中)|快捷区重置|验证要点:填写快捷筛选条件后点击「重置」,各字段恢复默认,列表按产品规则刷新|关联需求:UI-SPEC-SPD-WARN-003
#### 边界验证点 #### 边界验证点
- **TP_STAT_WEX_014**(低)|产品名称空值查询|验证要点:产品名称为空仅按其它已填条件查询,返回符合其他条件的全量结果|关联需求:UI-SPEC-SPD-WARN-003 - **TP_STAT_WEX_014**(低)|物料名称空值查询|验证要点:物料名称为空仅按其它已填条件查询,返回符合其他条件的全量结果|关联需求:UI-SPEC-SPD-WARN-003
#### 异常验证点 #### 异常验证点
...@@ -66,8 +66,8 @@ ...@@ -66,8 +66,8 @@
- **TP_STAT_WEX_057**(高)|打开高级筛选抽屉|验证要点:点击「高级筛选」后右侧抽屉打开,标题为「高级筛选」|关联需求:UI-SPEC-SPD-WARN-003 - **TP_STAT_WEX_057**(高)|打开高级筛选抽屉|验证要点:点击「高级筛选」后右侧抽屉打开,标题为「高级筛选」|关联需求:UI-SPEC-SPD-WARN-003
- **TP_STAT_WEX_058**(高)|抽屉内筛选提交|验证要点:在抽屉填写条件后点击「筛选」,列表按条件刷新且主表/汇总更新|关联需求:UI-SPEC-SPD-WARN-003 - **TP_STAT_WEX_058**(高)|抽屉内筛选提交|验证要点:在抽屉填写条件后点击「筛选」,列表按条件刷新且主表/汇总更新|关联需求:UI-SPEC-SPD-WARN-003
- **TP_STAT_WEX_059**(高)|抽屉内重置|验证要点:点击抽屉底部「重置」,抽屉内各字段恢复默认|关联需求:UI-SPEC-SPD-WARN-003 - **TP_STAT_WEX_059**(高)|抽屉内重置|验证要点:点击抽屉底部「重置」,抽屉内各字段恢复默认|关联需求:UI-SPEC-SPD-WARN-003
- **TP_STAT_WEX_060**(中)|高级筛选-产品名称|验证要点:在抽屉填写产品名称后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-003 - **TP_STAT_WEX_060**(中)|高级筛选-物料名称|验证要点:在抽屉填写物料名称后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-003
- **TP_STAT_WEX_061**(中)|高级筛选-进院供应商名称|验证要点:在抽屉填写进院供应商名称后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-003 - **TP_STAT_WEX_061**(中)|高级筛选-销售商(自定义)名称|验证要点:在抽屉填写销售商(自定义)名称后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-003
- **TP_STAT_WEX_062**(中)|高级筛选-近效期|验证要点:在抽屉填写近效期后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-003 - **TP_STAT_WEX_062**(中)|高级筛选-近效期|验证要点:在抽屉填写近效期后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-003
- **TP_STAT_WEX_063**(中)|高级筛选-条码|验证要点:在抽屉填写条码后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-003 - **TP_STAT_WEX_063**(中)|高级筛选-条码|验证要点:在抽屉填写条码后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-003
- **TP_STAT_WEX_064**(中)|高级筛选-耗材类型|验证要点:在抽屉填写耗材类型后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-003 - **TP_STAT_WEX_064**(中)|高级筛选-耗材类型|验证要点:在抽屉填写耗材类型后筛选,结果与条件匹配|关联需求:UI-SPEC-SPD-WARN-003
...@@ -136,7 +136,7 @@ ...@@ -136,7 +136,7 @@
#### 功能验证点 #### 功能验证点
- **TP_STAT_WEX_030**(高)|默认列展示完整|验证要点:查询后主表展示序号及业务核心列(产品/科室/数量/金额等,以页面为准)|关联需求:UI-SPEC-SPD-WARN-003 - **TP_STAT_WEX_030**(高)|默认列展示完整|验证要点:查询后主表展示序号及业务核心列(产品/科室/数量/金额等,以页面为准)|关联需求:UI-SPEC-SPD-WARN-003
- **TP_STAT_WEX_070**(高)|点击条码打开产品详情|验证要点:点击主表首行【条码】弹出产品详情,详情中产品编号与该行一致;点击右上角 x 关闭后弹窗消失|关联需求:UI-SPEC-SPD-WARN-003 - **TP_STAT_WEX_070**(高)|点击条码打开产品详情|验证要点:点击主表首行【条码】弹出产品详情,详情中物料编号与该行一致;点击右上角 x 关闭后弹窗消失|关联需求:UI-SPEC-SPD-WARN-003
- **TP_STAT_WEX_031**(中)|列表横向拖拉滚动与列对齐正常|验证要点:列宽超出视口时可横向拖拉滚动,远侧列进入可视区;表头与数据列对齐无异常间隙/重叠|关联需求:UI-SPEC-SPD-WARN-003 - **TP_STAT_WEX_031**(中)|列表横向拖拉滚动与列对齐正常|验证要点:列宽超出视口时可横向拖拉滚动,远侧列进入可视区;表头与数据列对齐无异常间隙/重叠|关联需求:UI-SPEC-SPD-WARN-003
- **TP_STAT_WEX_032**(低)|打开列设置面板|验证要点:点击列设置齿轮图标,面板正常弹出且字段列表与表格可配置列一致|关联需求:UI-SPEC-SPD-WARN-003 - **TP_STAT_WEX_032**(低)|打开列设置面板|验证要点:点击列设置齿轮图标,面板正常弹出且字段列表与表格可配置列一致|关联需求:UI-SPEC-SPD-WARN-003
- **TP_STAT_WEX_033**(低)|列设置取消勾选后再勾选列表列恢复|验证要点:取消勾选非核心列后表头隐藏,再次勾选后表头恢复,列设置勾选状态与列表一致|关联需求:UI-SPEC-SPD-WARN-003 - **TP_STAT_WEX_033**(低)|列设置取消勾选后再勾选列表列恢复|验证要点:取消勾选非核心列后表头隐藏,再次勾选后表头恢复,列设置勾选状态与列表一致|关联需求:UI-SPEC-SPD-WARN-003
...@@ -227,7 +227,7 @@ ...@@ -227,7 +227,7 @@
| 项 | 结论 | | 项 | 结论 |
|----|------| |----|------|
| 覆盖 | 已覆盖:导航、快捷筛选、高级筛选、预警业务规则(效期)、条码打开产品详情、条码明细导出、主表列表、底部汇总、分页、导出;扫描快捷字段:产品名称、进院供应商名称、近效期;共 **70** 条原子测试点 | | 覆盖 | 已覆盖:导航、快捷筛选、高级筛选、预警业务规则(效期)、条码打开产品详情、条码明细导出、主表列表、底部汇总、分页、导出;扫描快捷字段:物料名称、销售商(自定义)名称、近效期;共 **70** 条原子测试点 |
| 分类 | 功能 / 边界 / 异常 / 集成四类均已按功能点拆分 | | 分类 | 功能 / 边界 / 异常 / 集成四类均已按功能点拆分 |
| 去重 | 与同模块其它报表共用交互模式处保留本页差异(近期效期查询 专属业务 section);编号前缀 TP_STAT_WEX | | 去重 | 与同模块其它报表共用交互模式处保留本页差异(近期效期查询 专属业务 section);编号前缀 TP_STAT_WEX |
| 待评审项 | ① 导出直下载/下载中心以页面实测为准(自动化不校验文件内容);② 预警阈值(滞销/效期/低储)需与库存策略配置对照 | | 待评审项 | ① 导出直下载/下载中心以页面实测为准(自动化不校验文件内容);② 预警阈值(滞销/效期/低储)需与库存策略配置对照 |
......
...@@ -24,7 +24,7 @@ test.describe('基础设置 · 准入管理', () => { ...@@ -24,7 +24,7 @@ test.describe('基础设置 · 准入管理', () => {
await assertAdmitListOrEmpty(await admitMaterialPage.snapshotList()); await assertAdmitListOrEmpty(await admitMaterialPage.snapshotList());
}); });
test('ADMIT-MAT-003 产品名称筛选', async ({ admitMaterialPage }) => { test('ADMIT-MAT-003 物料名称筛选', async ({ admitMaterialPage }) => {
await admitMaterialPage.open(); await admitMaterialPage.open();
await admitMaterialPage.filterByProductName(); await admitMaterialPage.filterByProductName();
}); });
...@@ -78,58 +78,22 @@ test.describe('基础设置 · 准入管理', () => { ...@@ -78,58 +78,22 @@ test.describe('基础设置 · 准入管理', () => {
await admitMaterialPage.open(); await admitMaterialPage.open();
await admitMaterialPage.switchPending(); await admitMaterialPage.switchPending();
}); });
test('ADMIT-MAT-011 待申请 Tab 计数与分页总数一致', async ({ admitMaterialPage }) => {
await admitMaterialPage.open();
await admitMaterialPage.pendingCountMatches();
});
}); });
test.describe('物料准入管理 · 详情与编辑', () => {
test('ADMIT-MAT-012 打开详情后返回', async ({ admitMaterialPage }) => {
await admitMaterialPage.open();
await admitMaterialPage.detailAndBack();
});
test('ADMIT-MAT-013 详情关键字段不可直接改写', async ({ admitMaterialPage }) => { test.describe('物料准入管理 · 详情与编辑', () => {
test('ADMIT-MAT-011 详情关键字段不可直接改写', async ({ admitMaterialPage }) => {
await admitMaterialPage.open(); await admitMaterialPage.open();
await admitMaterialPage.detailReadonly(); await admitMaterialPage.detailReadonly();
}); });
test('ADMIT-MAT-014 待申请行编辑回填', async ({ admitMaterialPage }) => { test('ADMIT-MAT-012 待申请行编辑回填', async ({ admitMaterialPage }) => {
await admitMaterialPage.open(); await admitMaterialPage.open();
await admitMaterialPage.editBackfill(); await admitMaterialPage.editBackfill();
}); });
test('ADMIT-MAT-015 编辑取消不保存', async ({ admitMaterialPage }) => { test('ADMIT-MAT-013 已生效行不提供编辑', async ({ admitMaterialPage }) => {
await admitMaterialPage.open();
await admitMaterialPage.editCancel();
});
test('ADMIT-MAT-016 编辑清空产品名称拦截(mock反例)', async ({ admitMaterialPage }) => {
await admitMaterialPage.open();
await admitMaterialPage.editClearName();
});
test('ADMIT-MAT-017 已生效行不提供编辑', async ({ admitMaterialPage }) => {
await admitMaterialPage.open(); await admitMaterialPage.open();
await admitMaterialPage.effectiveNoEdit(); await admitMaterialPage.effectiveNoEdit();
}); });
}); });
test.describe('物料准入管理 · 关联与作废', () => {
test('ADMIT-MAT-018 关联产品取消不落库', async ({ admitMaterialPage }) => {
await admitMaterialPage.open();
await admitMaterialPage.relateCancel();
});
test('ADMIT-MAT-019 作废确认后取消', async ({ admitMaterialPage }) => {
await admitMaterialPage.open();
await admitMaterialPage.voidCancel();
});
test('ADMIT-MAT-020 打开操作日志后关闭', async ({ admitMaterialPage }) => {
await admitMaterialPage.open();
await admitMaterialPage.openLog();
});
});
}); });
...@@ -23,7 +23,7 @@ test.describe('基础设置 · 准入管理', () => { ...@@ -23,7 +23,7 @@ test.describe('基础设置 · 准入管理', () => {
await assertAdmitListOrEmpty(await admitProductApplyPage.snapshotList()); await assertAdmitListOrEmpty(await admitProductApplyPage.snapshotList());
}); });
test('ADMIT-PAP-003 产品名称筛选', async ({ admitProductApplyPage }) => { test('ADMIT-PAP-003 物料名称筛选', async ({ admitProductApplyPage }) => {
await admitProductApplyPage.open(); await admitProductApplyPage.open();
await admitProductApplyPage.filterByProductName(); await admitProductApplyPage.filterByProductName();
}); });
...@@ -38,14 +38,10 @@ test.describe('基础设置 · 准入管理', () => { ...@@ -38,14 +38,10 @@ test.describe('基础设置 · 准入管理', () => {
await admitProductApplyPage.resetFilters(); await admitProductApplyPage.resetFilters();
}); });
test('ADMIT-PAP-006 无匹配结果空态(mock反例)', async ({ admitProductApplyPage }) => { });
await admitProductApplyPage.open();
await assertAdmitMockEmpty(await admitProductApplyPage.mockEmpty());
});
});
test.describe('产品准入申请 · 状态与列表', () => { test.describe('产品准入申请 · 状态与列表', () => {
test('ADMIT-PAP-007 列表核心列完整', async ({ admitProductApplyPage }) => { test('ADMIT-PAP-006 列表核心列完整', async ({ admitProductApplyPage }) => {
await admitProductApplyPage.open(); await admitProductApplyPage.open();
assertAdmitHeaders(await admitProductApplyPage.coreHeaders(), [ assertAdmitHeaders(await admitProductApplyPage.coreHeaders(), [
'准入单号', '准入单号',
...@@ -58,29 +54,29 @@ test.describe('基础设置 · 准入管理', () => { ...@@ -58,29 +54,29 @@ test.describe('基础设置 · 准入管理', () => {
]); ]);
}); });
test('ADMIT-PAP-008 切换待申请 Tab', async ({ admitProductApplyPage }) => { test('ADMIT-PAP-007 切换待申请 Tab', async ({ admitProductApplyPage }) => {
await admitProductApplyPage.open(); await admitProductApplyPage.open();
await admitProductApplyPage.switchPending(); await admitProductApplyPage.switchPending();
}); });
test('ADMIT-PAP-009 翻至第 2 页', async ({ admitProductApplyPage }) => { test('ADMIT-PAP-008 翻至第 2 页', async ({ admitProductApplyPage }) => {
await admitProductApplyPage.open(); await admitProductApplyPage.open();
await admitProductApplyPage.goPage2(); await admitProductApplyPage.goPage2();
}); });
test('ADMIT-PAP-010 跳至指定页', async ({ admitProductApplyPage }) => { test('ADMIT-PAP-009 跳至指定页', async ({ admitProductApplyPage }) => {
await admitProductApplyPage.open(); await admitProductApplyPage.open();
await admitProductApplyPage.jumpPage2(); await admitProductApplyPage.jumpPage2();
}); });
}); });
test.describe('产品准入申请 · 新增与导入', () => { test.describe('产品准入申请 · 新增与导入', () => {
test('ADMIT-PAP-011 打开新增产品后返回', async ({ admitProductApplyPage }) => { test('ADMIT-PAP-010 打开新增产品后返回', async ({ admitProductApplyPage }) => {
await admitProductApplyPage.open(); await admitProductApplyPage.open();
await admitProductApplyPage.openAddAndBack(); await admitProductApplyPage.openAddAndBack();
}); });
test('ADMIT-PAP-012 新增取消不落库', async ({ admitProductApplyPage }) => { test('ADMIT-PAP-011 新增取消不落库', async ({ admitProductApplyPage }) => {
await admitProductApplyPage.open(); await admitProductApplyPage.open();
await admitProductApplyPage.addCancel(); await admitProductApplyPage.addCancel();
}); });
...@@ -88,27 +84,27 @@ test.describe('基础设置 · 准入管理', () => { ...@@ -88,27 +84,27 @@ test.describe('基础设置 · 准入管理', () => {
}); });
test.describe('产品准入申请 · 详情、编辑与作废', () => { test.describe('产品准入申请 · 详情、编辑与作废', () => {
test('ADMIT-PAP-013 打开详情后返回', async ({ admitProductApplyPage }) => { test('ADMIT-PAP-012 打开详情后返回', async ({ admitProductApplyPage }) => {
await admitProductApplyPage.open(); await admitProductApplyPage.open();
await admitProductApplyPage.detailAndBack(); await admitProductApplyPage.detailAndBack();
}); });
test('ADMIT-PAP-014 待申请编辑回填', async ({ admitProductApplyPage }) => { test('ADMIT-PAP-013 待申请编辑回填', async ({ admitProductApplyPage }) => {
await admitProductApplyPage.open(); await admitProductApplyPage.open();
await admitProductApplyPage.editBackfill(); await admitProductApplyPage.editBackfill();
}); });
test('ADMIT-PAP-015 编辑取消不保存', async ({ admitProductApplyPage }) => { test('ADMIT-PAP-014 编辑取消不保存', async ({ admitProductApplyPage }) => {
await admitProductApplyPage.open(); await admitProductApplyPage.open();
await admitProductApplyPage.editCancel(); await admitProductApplyPage.editCancel();
}); });
test('ADMIT-PAP-016 作废确认后取消', async ({ admitProductApplyPage }) => { test('ADMIT-PAP-015 作废确认后取消', async ({ admitProductApplyPage }) => {
await admitProductApplyPage.open(); await admitProductApplyPage.open();
await admitProductApplyPage.voidCancel(); await admitProductApplyPage.voidCancel();
}); });
test('ADMIT-PAP-017 已通过行不提供编辑', async ({ admitProductApplyPage }) => { test('ADMIT-PAP-016 已通过行不提供编辑', async ({ admitProductApplyPage }) => {
await admitProductApplyPage.open(); await admitProductApplyPage.open();
await admitProductApplyPage.passedNoEdit(); await admitProductApplyPage.passedNoEdit();
}); });
......
...@@ -21,22 +21,12 @@ test.describe('基础设置 · 准入管理', () => { ...@@ -21,22 +21,12 @@ test.describe('基础设置 · 准入管理', () => {
await assertAdmitListOrEmpty(await admitSupplyPage.snapshotList()); await assertAdmitListOrEmpty(await admitSupplyPage.snapshotList());
}); });
test('ADMIT-SUP-003 按进院供应商筛选', async ({ admitSupplyPage }) => { test('ADMIT-SUP-003 变更单号无匹配空态(mock反例)', async ({ admitSupplyPage }) => {
await admitSupplyPage.open();
await admitSupplyPage.filterBySupplier();
});
test('ADMIT-SUP-004 重置恢复默认', async ({ admitSupplyPage }) => {
await admitSupplyPage.open();
await admitSupplyPage.resetFilters();
});
test('ADMIT-SUP-005 变更单号无匹配空态(mock反例)', async ({ admitSupplyPage }) => {
await admitSupplyPage.open(); await admitSupplyPage.open();
await assertAdmitMockEmpty(await admitSupplyPage.mockEmpty()); await assertAdmitMockEmpty(await admitSupplyPage.mockEmpty());
}); });
test('ADMIT-SUP-006 列表核心列完整', async ({ admitSupplyPage }) => { test('ADMIT-SUP-004 列表核心列完整', async ({ admitSupplyPage }) => {
await admitSupplyPage.open(); await admitSupplyPage.open();
assertAdmitHeaders(await admitSupplyPage.coreHeaders(), [ assertAdmitHeaders(await admitSupplyPage.coreHeaders(), [
'申请单号', '申请单号',
...@@ -51,50 +41,48 @@ test.describe('基础设置 · 准入管理', () => { ...@@ -51,50 +41,48 @@ test.describe('基础设置 · 准入管理', () => {
]); ]);
}); });
test('ADMIT-SUP-007 切换待提交 Tab 且计数一致', async ({ admitSupplyPage }) => { test('ADMIT-SUP-005 切换待提交 Tab 且计数一致', async ({ admitSupplyPage }) => {
await admitSupplyPage.open(); await admitSupplyPage.open();
await admitSupplyPage.switchPending(); await admitSupplyPage.switchPending();
}); });
test('ADMIT-SUP-014 多条件组合查询(制单日期等6项)', async ({ admitSupplyPage }) => {
await admitSupplyPage.open();
await admitSupplyPage.filterCombination();
});
}); });
test.describe('供货目录申请 · 新增与编辑', () => { test.describe('供货目录申请 · 新增与编辑', () => {
test('ADMIT-SUP-006 新增放弃不落库', async ({ admitSupplyPage }) => {
test('ADMIT-SUP-008 新增放弃不落库', async ({ admitSupplyPage }) => {
await admitSupplyPage.open(); await admitSupplyPage.open();
await admitSupplyPage.addCancel(); await admitSupplyPage.addCancel();
}); });
test('ADMIT-SUP-009 业务模式与是否默认只切换不提交', async ({ admitSupplyPage }) => { test('ADMIT-SUP-007 业务模式与是否默认只切换不提交', async ({ admitSupplyPage }) => {
await admitSupplyPage.open(); await admitSupplyPage.open();
await admitSupplyPage.switchModeWithoutSubmit(); await admitSupplyPage.switchModeWithoutSubmit();
}); });
test('ADMIT-SUP-010 待提交编辑回填', async ({ admitSupplyPage }) => { test('ADMIT-SUP-008 待提交编辑回填', async ({ admitSupplyPage }) => {
await admitSupplyPage.open(); await admitSupplyPage.open();
await admitSupplyPage.editBackfill(); await admitSupplyPage.editBackfill();
}); });
test('ADMIT-SUP-011 编辑取消不保存', async ({ admitSupplyPage }) => { test('ADMIT-SUP-009 编辑取消不保存', async ({ admitSupplyPage }) => {
await admitSupplyPage.open(); await admitSupplyPage.open();
await admitSupplyPage.editCancel(); await admitSupplyPage.editCancel();
}); });
}); });
test.describe('供货目录申请 · 批量提交与详情', () => { test.describe('供货目录申请 · 批量提交与详情', () => {
test('ADMIT-SUP-012 未勾选时批量提交不可用', async ({ admitSupplyPage }) => { test('ADMIT-SUP-010 未勾选时批量提交不可用', async ({ admitSupplyPage }) => {
await admitSupplyPage.open(); await admitSupplyPage.open();
await admitSupplyPage.batchNeedsSelection(); await admitSupplyPage.batchNeedsSelection();
}); });
test('ADMIT-SUP-013 勾选后批量提交取消', async ({ admitSupplyPage }) => { test('ADMIT-SUP-011 勾选后批量提交取消', async ({ admitSupplyPage }) => {
await admitSupplyPage.open(); await admitSupplyPage.open();
await admitSupplyPage.batchCancel(); await admitSupplyPage.batchCancel();
}); });
}); test('ADMIT-SUP-012 多条件组合查询(制单日期等6项)', async ({ admitSupplyPage }) => {
await admitSupplyPage.open();
await admitSupplyPage.filterCombination();
});
});
}); });
...@@ -23,7 +23,7 @@ test.describe('财务数据分析-供应商入账 · 快捷筛选查询', () => ...@@ -23,7 +23,7 @@ test.describe('财务数据分析-供应商入账 · 快捷筛选查询', () =>
await anaProvPage.applyQuickFields(sample, anaProvComboQuickFields); await anaProvPage.applyQuickFields(sample, anaProvComboQuickFields);
await anaProvPage.resetQuickFilter(); await anaProvPage.resetQuickFilter();
}); });
test('STAT-APV-002 时间、院区名称、进院供应商组合查询', { tag: '@smoke' }, async ({ anaProvPage }) => { test('STAT-APV-002 时间、院区名称、销售商(自定义)组合查询', { tag: '@smoke' }, async ({ anaProvPage }) => {
await anaProvPage.searchWithQuickComboChart(anaProvComboQuickFields); await anaProvPage.searchWithQuickComboChart(anaProvComboQuickFields);
}); });
}); });
......
...@@ -30,15 +30,17 @@ test.describe('基础设置 · 医院资料', () => { ...@@ -30,15 +30,17 @@ test.describe('基础设置 · 医院资料', () => {
test('BASIC-NTC-004 发布范围下拉查询', async ({ basicNoticePage }) => { test('BASIC-NTC-004 发布范围下拉查询', async ({ basicNoticePage }) => {
await basicNoticePage.open(); await basicNoticePage.open();
const sample = await basicNoticePage.extractSample(); const sample = await basicNoticePage.extractSample();
await basicNoticePage.queryByScope(sample.samplePublishScope); const scope = await basicNoticePage.pickPublishScopeFilter(sample.samplePublishScope);
await basicNoticePage.expectScopeResultsMatch(sample.samplePublishScope); await basicNoticePage.search();
await basicNoticePage.expectScopeResultsMatch(scope);
}); });
test('BASIC-NTC-005 标题与范围组合查询', async ({ basicNoticePage }) => { test('BASIC-NTC-005 标题与范围组合查询', async ({ basicNoticePage }) => {
await basicNoticePage.open(); await basicNoticePage.open();
const sample = await basicNoticePage.extractSample(); const sample = await basicNoticePage.extractSample();
await basicNoticePage.queryByTitleAndScope(sample.sampleNoticeTitle, sample.samplePublishScope); await basicNoticePage.queryByTitleAndScope(sample.sampleNoticeTitle, sample.samplePublishScope);
await basicNoticePage.expectTitleResultsMatch(sample.sampleNoticeTitle); const keyword = basicNoticePage.titleQueryKeyword(sample.sampleNoticeTitle);
await basicNoticePage.expectTitleResultsMatch(keyword);
await basicNoticePage.expectScopeResultsMatch(sample.samplePublishScope); await basicNoticePage.expectScopeResultsMatch(sample.samplePublishScope);
}); });
......
...@@ -13,8 +13,6 @@ test.describe('基础设置 · 用户管理', () => { ...@@ -13,8 +13,6 @@ test.describe('基础设置 · 用户管理', () => {
await assertListOrEmpty(await basicUserUnionPage.snapshotList(), '默认查询'); await assertListOrEmpty(await basicUserUnionPage.snapshotList(), '默认查询');
}); });
test('USER-UNI-002 重置恢复默认医院', async ({ basicUserUnionPage }) => { test('USER-UNI-002 重置恢复默认医院', async ({ basicUserUnionPage }) => {
await basicUserUnionPage.open(); await basicUserUnionPage.open();
const defHospital = await basicUserUnionPage.currentHospitalLabel(); const defHospital = await basicUserUnionPage.currentHospitalLabel();
...@@ -24,7 +22,6 @@ test.describe('基础设置 · 用户管理', () => { ...@@ -24,7 +22,6 @@ test.describe('基础设置 · 用户管理', () => {
await expect(basicUserUnionPage.locators.nameInput).toHaveValue(''); await expect(basicUserUnionPage.locators.nameInput).toHaveValue('');
}); });
test('USER-UNI-003 无匹配空态(mock反例)', { tag: '@smoke' }, async ({ basicUserUnionPage }) => { test('USER-UNI-003 无匹配空态(mock反例)', { tag: '@smoke' }, async ({ basicUserUnionPage }) => {
await basicUserUnionPage.open(); await basicUserUnionPage.open();
await basicUserUnionPage.queryMockEmpty(); await basicUserUnionPage.queryMockEmpty();
...@@ -59,23 +56,6 @@ test.describe('基础设置 · 用户管理', () => { ...@@ -59,23 +56,6 @@ test.describe('基础设置 · 用户管理', () => {
expect(await basicUserUnionPage.currentHospitalLabel(), '翻页后医院筛选应保持').toBe(hospital); expect(await basicUserUnionPage.currentHospitalLabel(), '翻页后医院筛选应保持').toBe(hospital);
}); });
test('USER-UNI-011 切换20条每页页面正常且列表同步', async ({ basicUserUnionPage }) => {
await basicUserUnionPage.open();
await basicUserUnionPage.query();
const hospital = await basicUserUnionPage.currentHospitalLabel();
const { total, rowsBefore, rowsAfter } = await basicUserUnionPage.switchToTwentyPerPage();
const expectedRows = Math.min(total, 20);
expect(rowsAfter, '当前页行数应与 20 条/页及总条数一致').toBe(expectedRows);
expect(rowsAfter, '切换后可见行应随每页条数变化').not.toBe(rowsBefore);
expect(await basicUserUnionPage.getTotalCount(), '总条数应不变').toBe(total);
await expect(basicUserUnionPage.locators.pageSizeChanger, '每页条数').toContainText(/20/);
expect(await basicUserUnionPage.currentHospitalLabel(), '切换后所属医院筛选应保持').toBe(hospital);
await expect(basicUserUnionPage.locators.formSelect('所属医院'), '筛选区').toBeVisible();
await expect(basicUserUnionPage.locators.tableHeader.first(), '列表表头').toBeVisible();
});
test('USER-UNI-006 与用户管理页同一用户字段一致', async ({ basicUserUnionPage, basicUserPage }) => { test('USER-UNI-006 与用户管理页同一用户字段一致', async ({ basicUserUnionPage, basicUserPage }) => {
await basicUserUnionPage.open(); await basicUserUnionPage.open();
const sample = await basicUserUnionPage.extractUnionSample(); const sample = await basicUserUnionPage.extractUnionSample();
...@@ -96,6 +76,21 @@ test.describe('基础设置 · 用户管理', () => { ...@@ -96,6 +76,21 @@ test.describe('基础设置 · 用户管理', () => {
const headers = await basicUserPage.headerTexts(); const headers = await basicUserPage.headerTexts();
expect(headers.includes('所属医院'), '用户管理页仅无所属医院').toBeFalsy(); expect(headers.includes('所属医院'), '用户管理页仅无所属医院').toBeFalsy();
}); });
test('USER-UNI-009 切换20条每页页面正常且列表同步', async ({ basicUserUnionPage }) => {
await basicUserUnionPage.open();
await basicUserUnionPage.query();
const hospital = await basicUserUnionPage.currentHospitalLabel();
const { total, rowsBefore, rowsAfter } = await basicUserUnionPage.switchToTwentyPerPage();
const expectedRows = Math.min(total, 20);
expect(rowsAfter, '当前页行数应与 20 条/页及总条数一致').toBe(expectedRows);
expect(rowsAfter, '切换后可见行应随每页条数变化').not.toBe(rowsBefore);
expect(await basicUserUnionPage.getTotalCount(), '总条数应不变').toBe(total);
await expect(basicUserUnionPage.locators.pageSizeChanger, '每页条数').toContainText(/20/);
expect(await basicUserUnionPage.currentHospitalLabel(), '切换后所属医院筛选应保持').toBe(hospital);
await expect(basicUserUnionPage.locators.formSelect('所属医院'), '筛选区').toBeVisible();
await expect(basicUserUnionPage.locators.tableHeader.first(), '列表表头').toBeVisible();
});
}); });
test.describe('医共体用户管理 · 新增与编辑', () => { test.describe('医共体用户管理 · 新增与编辑', () => {
...@@ -113,52 +108,10 @@ test.describe('基础设置 · 用户管理', () => { ...@@ -113,52 +108,10 @@ test.describe('基础设置 · 用户管理', () => {
const login = await basicUserUnionPage.addAndCancelOnHospital(); const login = await basicUserUnionPage.addAndCancelOnHospital();
await assertMockEmpty(await basicUserUnionPage.snapshotList(), login); await assertMockEmpty(await basicUserUnionPage.snapshotList(), login);
}); });
test('USER-UNI-009 必填为空拦截', async ({ basicUserUnionPage }) => {
await basicUserUnionPage.open();
await basicUserUnionPage.submitEmptyRequired();
await basicUserUnionPage.expectBlockedAndStay();
await basicUserUnionPage.closeDialog();
});
test('USER-UNI-010 打开编辑并回填', async ({ basicUserUnionPage }) => {
await basicUserUnionPage.open();
await basicUserUnionPage.query();
const { login, name } = await basicUserUnionPage.openEdit();
const dialog = basicUserUnionPage.dialog();
const codeVal = (await basicUserUnionPage.locators.dialogUserCode().inputValue().catch(() => '')) || '';
const nameVal = (await basicUserUnionPage.locators.dialogName().inputValue().catch(() => '')) || '';
expect(
codeVal.replace(/\s/g, '') === login.replace(/\s/g, '') || nameVal.includes(name.slice(0, 2)),
'回填应与列表行一致',
).toBeTruthy();
await expect(dialog.getByText(/所属医院/).first().or(dialog), '弹窗可见').toBeVisible();
await basicUserUnionPage.closeDialog();
});
}); });
test.describe('医共体用户管理 · 授权', () => { test.describe('医共体用户管理 · 授权', () => {
test('USER-UNI-013 授权弹框账号与所选行一致', { tag: '@smoke' }, async ({ basicUserUnionPage }) => { test('USER-UNI-010 打开授权后取消不生效', async ({ basicUserUnionPage }) => {
await basicUserUnionPage.open();
await basicUserUnionPage.query();
const { row, sampleLoginName, sampleUserName } = await basicUserUnionPage.pickRowWithLogin();
await basicUserUnionPage.openAuthOnRow(row);
await basicUserUnionPage.expectUserRoleAuthDialogAccount(sampleLoginName, sampleUserName);
await basicUserUnionPage.closeDialog();
});
test('USER-UNI-014 授权弹框添加移除角色行', async ({ basicUserUnionPage }) => {
await basicUserUnionPage.open();
await basicUserUnionPage.query();
const { row } = await basicUserUnionPage.pickRowWithLogin();
await basicUserUnionPage.openAuthOnRow(row);
const { before, afterAdd, afterRemove } = await basicUserUnionPage.runAuthAddThenRemove();
expect(afterAdd, '点击添加后应新增一行').toBe(before + 1);
expect(afterRemove, '点击移除后应删除新增行').toBe(before);
await basicUserUnionPage.closeDialog();
});
test('USER-UNI-012 打开授权后取消不生效', async ({ basicUserUnionPage }) => {
await basicUserUnionPage.open(); await basicUserUnionPage.open();
await basicUserUnionPage.query(); await basicUserUnionPage.query();
await basicUserUnionPage.openRowAction('授权'); await basicUserUnionPage.openRowAction('授权');
...@@ -177,5 +130,14 @@ test.describe('基础设置 · 用户管理', () => { ...@@ -177,5 +130,14 @@ test.describe('基础设置 · 用户管理', () => {
if (before > 0 || after > 0) expect(after, '取消后勾选应恢复').toBe(before); if (before > 0 || after > 0) expect(after, '取消后勾选应恢复').toBe(before);
await basicUserUnionPage.closeDialog(); await basicUserUnionPage.closeDialog();
}); });
test('USER-UNI-011 授权弹框账号与所选行一致', { tag: '@smoke' }, async ({ basicUserUnionPage }) => {
await basicUserUnionPage.open();
await basicUserUnionPage.query();
const { row, sampleLoginName, sampleUserName } = await basicUserUnionPage.pickRowWithLogin();
await basicUserUnionPage.openAuthOnRow(row);
await basicUserUnionPage.expectUserRoleAuthDialogAccount(sampleLoginName, sampleUserName);
await basicUserUnionPage.closeDialog();
});
}); });
}); });
...@@ -7,8 +7,6 @@ import { assertListOrEmpty, assertMockEmpty } from './helpers/user-assert.helper ...@@ -7,8 +7,6 @@ import { assertListOrEmpty, assertMockEmpty } from './helpers/user-assert.helper
*/ */
test.describe('基础设置 · 用户管理', () => { test.describe('基础设置 · 用户管理', () => {
test.describe('用户管理 · 筛选与查询', () => { test.describe('用户管理 · 筛选与查询', () => {
test('USER-USR-001 重置恢复默认', async ({ basicUserPage }) => { test('USER-USR-001 重置恢复默认', async ({ basicUserPage }) => {
await basicUserPage.open(); await basicUserPage.open();
const sample = await basicUserPage.extractSample(); const sample = await basicUserPage.extractSample();
...@@ -17,7 +15,6 @@ test.describe('基础设置 · 用户管理', () => { ...@@ -17,7 +15,6 @@ test.describe('基础设置 · 用户管理', () => {
await expect(basicUserPage.locators.nameInput).toHaveValue(''); await expect(basicUserPage.locators.nameInput).toHaveValue('');
}); });
test('USER-USR-002 高级筛选按状态过滤', { tag: '@smoke' }, async ({ basicUserPage }) => { test('USER-USR-002 高级筛选按状态过滤', { tag: '@smoke' }, async ({ basicUserPage }) => {
await basicUserPage.open(); await basicUserPage.open();
await basicUserPage.filterByStatus('启用'); await basicUserPage.filterByStatus('启用');
...@@ -32,7 +29,6 @@ test.describe('基础设置 · 用户管理', () => { ...@@ -32,7 +29,6 @@ test.describe('基础设置 · 用户管理', () => {
}); });
test.describe('用户管理 · 列表与分页', () => { test.describe('用户管理 · 列表与分页', () => {
test('USER-USR-004 分页翻至第 2 页', async ({ basicUserPage }) => { test('USER-USR-004 分页翻至第 2 页', async ({ basicUserPage }) => {
await basicUserPage.open(); await basicUserPage.open();
await basicUserPage.query(); await basicUserPage.query();
...@@ -41,7 +37,7 @@ test.describe('基础设置 · 用户管理', () => { ...@@ -41,7 +37,7 @@ test.describe('基础设置 · 用户管理', () => {
expect(secondLogin, '第 2 页首行应更换').not.toBe(firstLogin); expect(secondLogin, '第 2 页首行应更换').not.toBe(firstLogin);
}); });
test('USER-USR-014 切换20条每页页面正常且列表同步', async ({ basicUserPage }) => { test('USER-USR-010 切换20条每页页面正常且列表同步', async ({ basicUserPage }) => {
await basicUserPage.open(); await basicUserPage.open();
await basicUserPage.query(); await basicUserPage.query();
const { total, rowsBefore, rowsAfter } = await basicUserPage.switchToTwentyPerPage(); const { total, rowsBefore, rowsAfter } = await basicUserPage.switchToTwentyPerPage();
...@@ -54,9 +50,8 @@ test.describe('基础设置 · 用户管理', () => { ...@@ -54,9 +50,8 @@ test.describe('基础设置 · 用户管理', () => {
await expect(basicUserPage.locators.nameInput, '筛选区').toBeVisible(); await expect(basicUserPage.locators.nameInput, '筛选区').toBeVisible();
await expect(basicUserPage.locators.tableHeader.first(), '列表表头').toBeVisible(); await expect(basicUserPage.locators.tableHeader.first(), '列表表头').toBeVisible();
}); });
}); });
test.describe('用户管理 · 新增用户', () => { test.describe('用户管理 · 新增用户', () => {
test('USER-USR-005 打开新增用户弹窗', async ({ basicUserPage }) => { test('USER-USR-005 打开新增用户弹窗', async ({ basicUserPage }) => {
await basicUserPage.open(); await basicUserPage.open();
...@@ -72,48 +67,10 @@ test.describe('基础设置 · 用户管理', () => { ...@@ -72,48 +67,10 @@ test.describe('基础设置 · 用户管理', () => {
const login = await basicUserPage.addAndCancel(); const login = await basicUserPage.addAndCancel();
await assertMockEmpty(await basicUserPage.snapshotList(), login); await assertMockEmpty(await basicUserPage.snapshotList(), login);
}); });
test('USER-USR-007 必填为空拦截', async ({ basicUserPage }) => {
await basicUserPage.open();
await basicUserPage.submitEmptyRequired();
await basicUserPage.expectBlockedAndStay();
await basicUserPage.closeDialog();
});
test('USER-USR-008 登录账号重复拦截', async ({ basicUserPage }) => {
await basicUserPage.open();
const sample = await basicUserPage.extractSample();
await basicUserPage.submitDuplicateLogin(sample.sampleLoginName);
await basicUserPage.expectBlockedAndStay();
await basicUserPage.closeDialog();
await basicUserPage.queryByName(sample.sampleLoginName);
expect((await basicUserPage.snapshotList()).rows, '原用户仍在').toBeGreaterThan(0);
});
}); });
test.describe('用户管理 · 编辑用户', () => { test.describe('用户管理 · 编辑用户', () => {
test('USER-USR-009 打开编辑用户弹窗并回填', async ({ basicUserPage }) => { test('USER-USR-007 编辑时账号只读', async ({ basicUserPage }) => {
await basicUserPage.open();
await basicUserPage.query();
const { login, name } = await basicUserPage.openEdit();
const dialog = basicUserPage.dialog();
await expect(dialog).toContainText(/编辑用户|编辑/);
const codeVal = (await basicUserPage.locators.dialogUserCode().inputValue().catch(() => '')) || '';
const nameVal = (await basicUserPage.locators.dialogName().inputValue().catch(() => '')) || '';
expect(codeVal.replace(/\s/g, '') === login.replace(/\s/g, '') || nameVal.includes(name.slice(0, 2)), '回填应与列表行一致').toBeTruthy();
await basicUserPage.closeDialog();
});
test('USER-USR-010 编辑取消不保存', async ({ basicUserPage }) => {
await basicUserPage.open();
await basicUserPage.query();
const original = await basicUserPage.editAndCancel();
const { name } = await basicUserPage.openEdit();
expect(name, '取消后姓名仍为原值').toBe(original);
await basicUserPage.closeDialog();
});
test('USER-USR-011 编辑时账号只读', async ({ basicUserPage }) => {
await basicUserPage.open(); await basicUserPage.open();
await basicUserPage.query(); await basicUserPage.query();
await basicUserPage.openEdit(); await basicUserPage.openEdit();
...@@ -124,7 +81,7 @@ test.describe('基础设置 · 用户管理', () => { ...@@ -124,7 +81,7 @@ test.describe('基础设置 · 用户管理', () => {
await basicUserPage.closeDialog(); await basicUserPage.closeDialog();
}); });
test('USER-USR-012 编辑弹窗可见签名图片', async ({ basicUserPage }) => { test('USER-USR-008 编辑弹窗可见签名图片', async ({ basicUserPage }) => {
await basicUserPage.open(); await basicUserPage.open();
await basicUserPage.query(); await basicUserPage.query();
await basicUserPage.openEdit(); await basicUserPage.openEdit();
...@@ -134,27 +91,7 @@ test.describe('基础设置 · 用户管理', () => { ...@@ -134,27 +91,7 @@ test.describe('基础设置 · 用户管理', () => {
}); });
test.describe('用户管理 · 授权', () => { test.describe('用户管理 · 授权', () => {
test('USER-USR-016 授权弹框添加移除角色行', async ({ basicUserPage }) => { test('USER-USR-009 打开授权后取消不生效', async ({ basicUserPage }) => {
await basicUserPage.open();
await basicUserPage.query();
const { row } = await basicUserPage.pickRowWithLogin();
await basicUserPage.openAuthOnRow(row);
const { before, afterAdd, afterRemove } = await basicUserPage.runAuthAddThenRemove();
expect(afterAdd, '点击添加后应新增一行').toBe(before + 1);
expect(afterRemove, '点击移除后应删除新增行').toBe(before);
await basicUserPage.closeDialog();
});
test('USER-USR-015 授权弹框账号与所选行一致', { tag: '@smoke' }, async ({ basicUserPage }) => {
await basicUserPage.open();
await basicUserPage.query();
const { row, sampleLoginName, sampleUserName } = await basicUserPage.pickRowWithLogin();
await basicUserPage.openAuthOnRow(row);
await basicUserPage.expectUserRoleAuthDialogAccount(sampleLoginName, sampleUserName);
await basicUserPage.closeDialog();
});
test('USER-USR-013 打开授权后取消不生效', async ({ basicUserPage }) => {
await basicUserPage.open(); await basicUserPage.open();
await basicUserPage.query(); await basicUserPage.query();
await basicUserPage.openRowAction('授权'); await basicUserPage.openRowAction('授权');
...@@ -173,5 +110,14 @@ test.describe('基础设置 · 用户管理', () => { ...@@ -173,5 +110,14 @@ test.describe('基础设置 · 用户管理', () => {
if (before > 0 || after > 0) expect(after, '取消后勾选应恢复').toBe(before); if (before > 0 || after > 0) expect(after, '取消后勾选应恢复').toBe(before);
await basicUserPage.closeDialog(); await basicUserPage.closeDialog();
}); });
test('USER-USR-011 授权弹框账号与所选行一致', { tag: '@smoke' }, async ({ basicUserPage }) => {
await basicUserPage.open();
await basicUserPage.query();
const { row, sampleLoginName, sampleUserName } = await basicUserPage.pickRowWithLogin();
await basicUserPage.openAuthOnRow(row);
await basicUserPage.expectUserRoleAuthDialogAccount(sampleLoginName, sampleUserName);
await basicUserPage.closeDialog();
});
}); });
}); });
import { test } from '../../fixtures'; import { test } from '../../fixtures';
import { import {
centerReportPsiColumns,
centerReportPsiComboQuickFields, centerReportPsiComboQuickFields,
centerReportPsiData, centerReportPsiData,
centerReportPsiSyncFields, centerReportPsiSyncFields,
...@@ -70,7 +71,10 @@ test.describe('中心库产品进销存 · 主表列表', () => { ...@@ -70,7 +71,10 @@ test.describe('中心库产品进销存 · 主表列表', () => {
test('STAT-PSI-005 无匹配数据空列表(mock反例)', async ({ centerReportPsiPage }) => { test('STAT-PSI-005 无匹配数据空列表(mock反例)', async ({ centerReportPsiPage }) => {
await centerReportPsiPage.openAdvancedFilter(); await centerReportPsiPage.openAdvancedFilter();
await centerReportPsiPage.fillDrawerTextByLabel('产品名称', centerReportPsiData.mockNotExistProduct); await centerReportPsiPage.fillDrawerTextByLabel(
centerReportPsiColumns.productName,
centerReportPsiData.mockNotExistProduct,
);
await centerReportPsiPage.applyAdvancedFilter(); await centerReportPsiPage.applyAdvancedFilter();
await centerReportPsiPage.expectEmptyList(); await centerReportPsiPage.expectEmptyList();
}); });
......
...@@ -23,7 +23,7 @@ test.describe('产品周转率报表', () => { ...@@ -23,7 +23,7 @@ test.describe('产品周转率报表', () => {
await centerReportTurnoverPage.expectProductNameEmpty(); await centerReportTurnoverPage.expectProductNameEmpty();
}); });
test('STAT-PTR-002 统计周期院区产品组合查询', async ({ centerReportTurnoverPage }) => { test('STAT-PTR-002 统计周期院区物料组合查询', async ({ centerReportTurnoverPage }) => {
const sample = await centerReportTurnoverPage.searchAndExtractSample(); const sample = await centerReportTurnoverPage.searchAndExtractSample();
const campus = await centerReportTurnoverPage.getQuickSelectValue('院区名称'); const campus = await centerReportTurnoverPage.getQuickSelectValue('院区名称');
if (campus) { if (campus) {
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment