Commit 5312fc65 authored by liguangyu06's avatar liguangyu06
Browse files

统计报表与准入模块列名对齐物料名称/物料编号

data、用例 CSV/MD、准入 PO 与生成/发现脚本同步现网表头;新增名称列扫描脚本。门禁未全量重跑使用 SKIP_GIT_GATE。
parent f68c917b
......@@ -79,7 +79,7 @@
- 前置条件:测试环境可访问;测试账号已登录并进入科室净入成本查询页(iframe settel/costSearch);已默认查询且主表至少有 1 条数据
- 操作步骤:
1. searchAndExtractSample() 读取样本;展开首行读取子表明细(若有)
2. 快捷区填入产品名称、统计月份、耗材类型
2. 快捷区填入物料名称、统计月份、耗材类型
3. 打开高级筛选,填入科室名称、统计日期、进院供应商、批号、结算方式、入院单价
4. 点击「筛 选」并等待刷新
5. 检查首行物料编号/名称、数量、金额与条件一致
......@@ -96,7 +96,7 @@
- 前置条件:测试环境可访问;测试账号已登录并进入科室净入成本查询页(iframe settel/costSearch);已默认查询有数据
- 操作步骤:
1. searchAndExtractSample() 读取样本
2. 快捷区填入产品名称、统计月份
2. 快捷区填入物料名称、统计月份
3. 点击「查 询」
4. 打开高级筛选(不手动修改抽屉)
5. 校验抽屉同名字段与快捷区一致
......@@ -104,7 +104,7 @@
###### 预期结果
抽屉「产品名称」「统计月份」与快捷区已填值一致
抽屉「物料名称」「统计月份」与快捷区已填值一致
---
......@@ -116,7 +116,7 @@
- 前置条件:测试环境可访问;测试账号已登录并进入科室净入成本查询页(iframe settel/costSearch)
- 操作步骤:
1. 产品名称填 __NOT_EXIST_PRODUCT__99999
1. 物料名称填 __NOT_EXIST_PRODUCT__99999
2. 点击「查 询」
3. 检查主表;若存在底部汇总区则一并检查,无则跳过
- 自动化断言:与 CSV `STAT-CDN-006` 及 `tests/spd/cost-dept-net-in.spec.ts` 一致
......
......@@ -30,7 +30,7 @@
- 前置条件:测试环境可访问;测试账号已登录并进入结算入账明细查询页(iframe settel/entrySettle);已默认查询且主表有数据
- 操作步骤:
1. 从主表首行读取产品名称/入账日期样本填入快捷区
1. 从主表首行读取物料名称/入账日期样本填入快捷区
2. 点击「重 置」
3. 检查各字段与维度勾选
- 自动化断言:与 CSV `STAT-CSE-001` 及 `tests/spd/cost-settle-entry.spec.ts` 一致
......@@ -79,7 +79,7 @@
- 前置条件:测试环境可访问;测试账号已登录并进入结算入账明细查询页(iframe settel/entrySettle);已默认查询且主表至少有 1 条数据
- 操作步骤:
1. searchAndExtractSample() 读取样本;展开首行读取子表明细(若有)
2. 快捷区填入产品名称、入账日期、耗材类型
2. 快捷区填入物料名称、入账日期、耗材类型
3. 打开高级筛选,填入进院供应商名称、二级供应商名称、结算类型、源单号、院区名称、科室名称、财务分类、耗材分类、是否期初生成
4. 点击「筛 选」并等待刷新
5. 检查首行物料编号/名称、数量、金额与条件一致
......@@ -96,7 +96,7 @@
- 前置条件:测试环境可访问;测试账号已登录并进入结算入账明细查询页(iframe settel/entrySettle);已默认查询有数据
- 操作步骤:
1. searchAndExtractSample() 读取样本
2. 快捷区填入产品名称、入账日期
2. 快捷区填入物料名称、入账日期
3. 点击「查 询」
4. 打开高级筛选(不手动修改抽屉)
5. 校验抽屉同名字段与快捷区一致
......@@ -104,7 +104,7 @@
###### 预期结果
抽屉「产品名称」「入账日期」与快捷区已填值一致
抽屉「物料名称」「入账日期」与快捷区已填值一致
---
......@@ -117,8 +117,8 @@
- 前置条件:测试环境可访问;测试账号已登录并进入结算入账明细查询页(iframe settel/entrySettle);已默认查询有数据
- 操作步骤:
1. 默认条件查询
2. 读取主表首行产品名称及入账数量、入账金额
3. 按首行产品名称等收窄查询
2. 读取主表首行物料名称及入账数量、入账金额
3. 按首行物料名称等收窄查询
4. 勾选或点选主表首行
5. 读取底部汇总(入账数量、入账金额)并与首行对应字段对比
- 自动化断言:与 CSV `STAT-CSE-006` 及 `tests/spd/cost-settle-entry.spec.ts` 一致
......@@ -135,7 +135,7 @@
- 前置条件:测试环境可访问;测试账号已登录并进入结算入账明细查询页(iframe settel/entrySettle)
- 操作步骤:
1. 产品名称填 __NOT_EXIST_PRODUCT__99999
1. 物料名称填 __NOT_EXIST_PRODUCT__99999
2. 点击「查 询」
3. 检查主表;若存在底部汇总区则一并检查,无则跳过
- 自动化断言:与 CSV `STAT-CSE-007` 及 `tests/spd/cost-settle-entry.spec.ts` 一致
......
......@@ -81,9 +81,9 @@
- 操作步骤:
1. searchAndExtractSample() 读取样本
2. 快捷区填入入账月份、耗材类型、院区名称
3. 打开高级筛选,填入产品名称、规格型号、生产厂家(均来自首行样本;财务分类/耗材分类/是否期初/结算方式无列表列不填)
3. 打开高级筛选,填入物料名称、规格型号、生产厂家(均来自首行样本;财务分类/耗材分类/是否期初/结算方式无列表列不填)
4. 点击「筛 选」并等待刷新
5. 检查首行产品名称/耗材类型/规格型号/生产厂家与已填条件一致
5. 检查首行物料名称/耗材类型/规格型号/生产厂家与已填条件一致
- 自动化断言:与 CSV `STAT-CFP-004` 及 `tests/spd/cost-finance-psi.spec.ts` 一致
###### 预期结果
......@@ -137,8 +137,8 @@
- 前置条件:测试环境可访问;测试账号已登录并进入财务产品进销存页(iframe settel/financeWithProduct);已默认查询有数据
- 操作步骤:
1. 默认条件查询
2. 读取主表首行产品名称及期初/入库/出库/报损/期末金额
3. 按首行产品名称、规格型号等收窄查询
2. 读取主表首行物料名称及期初/入库/出库/报损/期末金额
3. 按首行物料名称、规格型号等收窄查询
4. 勾选或点选主表首行
5. 读取底部合计(期初总金额/入库总金额/出库总金额/报损总金额/期末总金额)并与首行对应字段对比
- 自动化断言:与 CSV `STAT-CFP-007` 及 `tests/spd/cost-finance-psi.spec.ts` 一致
......@@ -155,7 +155,7 @@
- 前置条件:测试环境可访问;测试账号已登录并进入财务产品进销存页(iframe settel/financeWithProduct)
- 操作步骤:
1. 产品名称填 __NOT_EXIST_PRODUCT__99999
1. 物料名称填 __NOT_EXIST_PRODUCT__99999
2. 点击「查 询」
3. 检查主表;若存在底部汇总区则一并检查,无则跳过
- 自动化断言:与 CSV `STAT-CFP-008` 及 `tests/spd/cost-finance-psi.spec.ts` 一致
......@@ -171,7 +171,7 @@
- 前置条件:测试环境可访问;测试账号已登录并进入财务产品进销存页(iframe settel/financeWithProduct);已默认查询有数据且主表列宽超出视口
- 操作步骤:
1. 默认条件查询
2. 确认「产品名称」等核心列可见
2. 确认「物料名称」等核心列可见
3. 横向拖拉滚动列表
4. 检查「出库金额」等远侧列进入可视区
5. 检查表头无空白列、表头列数与数据列数一致;相邻列无异常间隙/重叠;表头与数据列对齐正常
......@@ -295,12 +295,12 @@
#### 功能验证点
##### 【P1】【TC-UI-STAT-CFP-016】【TP_STAT_CFP_048】产品名称列升序降序切换
##### 【P1】【TC-UI-STAT-CFP-016】【TP_STAT_CFP_048】物料名称列升序降序切换
- 前置条件:测试环境可访问;测试账号已登录并进入财务产品进销存页(iframe settel/financeWithProduct);已默认查询且主表至少有 2 条数据
- 操作步骤:
1. 默认条件查询
2. 必要时横向滚动使「产品名称」列表头可见
2. 必要时横向滚动使「物料名称」列表头可见
3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器
4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器
- 自动化断言:与 CSV `STAT-CFP-016` 及 `tests/spd/cost-finance-psi.spec.ts` 一致
......
......@@ -15,7 +15,7 @@
**动态取数约定**(对齐 STAT-DOS):
1. 默认查询确认主表有数据 → `AnaChgPage.searchAndExtractSample()` / `extractSampleRow()`。
2. 条件使用 `${sampleXxx}` 占位;**禁止写死**产品/单号/日期/院区等业务数据。
3. **反例 mock**:`__NOT_EXIST_PRODUCT__99999`(字段:产品名称);通用 mock 还包括 `__NOT_EXIST_PRODUCT__99999` / `__NOT_EXIST_DEPT__99999` / `__NOT_EXIST_SUPPLIER__99999` / `__NOT_EXIST_HIS_NO__99999`(与 CSV 一致)。
3. **反例 mock**:`__NOT_EXIST_PRODUCT__99999`(字段:物料名称);通用 mock 还包括 `__NOT_EXIST_PRODUCT__99999` / `__NOT_EXIST_DEPT__99999` / `__NOT_EXIST_SUPPLIER__99999` / `__NOT_EXIST_HIS_NO__99999`(与 CSV 一致)。
4. **组合查询**:若主表无起始时间列,勿用 fallback 单日覆盖默认区间(STAT-LMP-004)。
---
......@@ -41,14 +41,14 @@
---
##### 【P0】【TC-UI-STAT-ACH-006】【TP_STAT_ACH_012】起始时间、产品名称、规格型号组合查询
##### 【P0】【TC-UI-STAT-ACH-006】【TP_STAT_ACH_012】起始时间、物料名称、规格型号组合查询
- 前置条件:测试环境可访问;测试账号已登录并进入调价统计报表页(iframe statistics/chg);已默认查询且主表至少有 1 条数据
- 操作步骤:
1. searchAndExtractSample() 读取样本(${sampleXxx},禁止写死业务数据)
2. 快捷区填入样本中 起始时间、产品名称、规格型号(起始时间若主表无对应列则保持页面默认区间,勿 fallback 单日)
2. 快捷区填入样本中 起始时间、物料名称、规格型号(起始时间若主表无对应列则保持页面默认区间,勿 fallback 单日)
3. 点击「查 询」并等待主表刷新
4. 抽样检查首行 起始时间、产品名称 与分页「共 N 条」(若有分页)
4. 抽样检查首行 起始时间、物料名称 与分页「共 N 条」(若有分页)
- 自动化断言:与 CSV `STAT-ACH-006` 及 `tests/spd/ana-chg.spec.ts` 一致
###### 预期结果
......@@ -62,9 +62,9 @@
- 前置条件:测试环境可访问;测试账号已登录并进入调价统计报表页(iframe statistics/chg);已默认查询且主表至少有 1 条数据
- 操作步骤:
1. searchAndExtractSample() 读取样本(${sampleXxx},禁止写死业务数据)
2. 快捷区填入 起始时间、产品名称、规格型号、进院供应商 等全部可见条件
2. 快捷区填入 起始时间、物料名称、规格型号、进院供应商 等全部可见条件
3. 点击「查 询」并等待主表刷新
4. 抽样检查首行 起始时间、产品名称 与分页「共 N 条」(若有分页)
4. 抽样检查首行 起始时间、物料名称 与分页「共 N 条」(若有分页)
- 自动化断言:与 CSV `STAT-ACH-014` 及 `tests/spd/ana-chg.spec.ts` 一致
###### 预期结果
......@@ -87,15 +87,15 @@
###### 预期结果
抽屉标题为「高级筛选」;含 产品名称、规格型号、进院供应商、二级供应商、耗材类型 等字段可交互
抽屉标题为「高级筛选」;含 物料名称、规格型号、进院供应商、二级供应商、耗材类型 等字段可交互
---
##### 【P1】【TC-UI-STAT-ACH-003】【TP_STAT_ACH_028】抽屉内重置恢复抽屉字段默认
- 前置条件:测试环境可访问;测试账号已登录并进入调价统计报表页(iframe statistics/chg);已打开高级筛选抽屉;已从列表读取 产品名称 样本
- 前置条件:测试环境可访问;测试账号已登录并进入调价统计报表页(iframe statistics/chg);已打开高级筛选抽屉;已从列表读取 物料名称 样本
- 操作步骤:
1. 在抽屉 产品名称 填入 ${sampleXxx}
1. 在抽屉 物料名称 填入 ${sampleXxx}
2. 点击抽屉底部「重 置」
3. 检查抽屉字段与快捷区
- 自动化断言:与 CSV `STAT-ACH-003` 及 `tests/spd/ana-chg.spec.ts` 一致
......@@ -111,10 +111,10 @@
- 前置条件:测试环境可访问;测试账号已登录并进入调价统计报表页(iframe statistics/chg);已默认查询且主表至少有 1 条数据
- 操作步骤:
1. searchAndExtractSample() 读取样本(${sampleXxx},禁止写死业务数据)
2. 快捷区填入 起始时间、产品名称、规格型号、进院供应商
3. 打开高级筛选,填入 产品名称、规格型号、进院供应商、二级供应商、耗材类型
2. 快捷区填入 起始时间、物料名称、规格型号、进院供应商
3. 打开高级筛选,填入 物料名称、规格型号、进院供应商、二级供应商、耗材类型
4. 点击「筛 选」并等待刷新
5. 检查首行 起始时间、产品名称 与条件一致
5. 检查首行 起始时间、物料名称 与条件一致
- 自动化断言:与 CSV `STAT-ACH-004` 及 `tests/spd/ana-chg.spec.ts` 一致
###### 预期结果
......@@ -128,7 +128,7 @@
- 前置条件:测试环境可访问;测试账号已登录并进入调价统计报表页(iframe statistics/chg);已默认查询有数据
- 操作步骤:
1. searchAndExtractSample() 读取样本
2. 快捷区填入 起始时间、产品名称
2. 快捷区填入 起始时间、物料名称
3. 点击「查 询」
4. 打开高级筛选(不手动修改抽屉)
5. 校验抽屉同名字段与快捷区一致
......@@ -136,7 +136,7 @@
###### 预期结果
抽屉「起始时间」「产品名称」与快捷区已填值一致
抽屉「起始时间」「物料名称」与快捷区已填值一致
---
......@@ -162,7 +162,7 @@
###### 预期结果
主表核心列完整展示(含物料编号,产品名称,产品俗称,规格型号,原单价,现单价,数量,总差额等);表格可横向滚动查看更多列。
主表核心列完整展示(含物料编号,物料名称,产品俗称,规格型号,原单价,现单价,数量,总差额等);表格可横向滚动查看更多列。
---
......@@ -182,12 +182,12 @@
---
##### 【P1】【TC-UI-STAT-ACH-015】【TP_STAT_ACH_026】产品名称列升序降序切换
##### 【P1】【TC-UI-STAT-ACH-015】【TP_STAT_ACH_026】物料名称列升序降序切换
- 前置条件:测试环境可访问;测试账号已登录并进入调价统计报表页(iframe statistics/chg);已默认查询且主表至少有 2 条数据
- 操作步骤:
1. 默认条件查询
2. 必要时横向滚动使「产品名称」列表头可见
2. 必要时横向滚动使「物料名称」列表头可见
3. 第一次点击该列 .ant-table-column-sorter → 校验升序指示器(▲高亮或 aria-sort=ascending)
4. 第二次点击该列 .ant-table-column-sorter → 校验降序指示器(▼高亮或 aria-sort=descending)
- 自动化断言:与 CSV `STAT-ACH-015` 及 `tests/spd/ana-chg.spec.ts` 一致
......@@ -220,7 +220,7 @@
- 前置条件:测试环境可访问;测试账号已登录并进入调价统计报表页(iframe statistics/chg)
- 操作步骤:
1. 产品名称填 __NOT_EXIST_PRODUCT__99999
1. 物料名称填 __NOT_EXIST_PRODUCT__99999
2. 点击「查 询」
3. 检查主表;若存在底部汇总区则一并检查,无则跳过
- 自动化断言:与 CSV `STAT-ACH-010` 及 `tests/spd/ana-chg.spec.ts` 一致
......
......@@ -15,7 +15,7 @@
**动态取数约定**(对齐 STAT-DOS):
1. 默认查询确认主表有数据 → `ReagEntryPage.searchAndExtractSample()` / `extractSampleRow()`。
2. 条件使用 `${sampleXxx}` 占位;**禁止写死**产品/单号/日期/院区等业务数据。
3. **反例 mock**:`__NOT_EXIST_PRODUCT__99999`(字段:产品名称);通用 mock 还包括 `__NOT_EXIST_PRODUCT__99999` / `__NOT_EXIST_DEPT__99999` / `__NOT_EXIST_SUPPLIER__99999` / `__NOT_EXIST_HIS_NO__99999`(与 CSV 一致)。
3. **反例 mock**:`__NOT_EXIST_PRODUCT__99999`(字段:物料名称);通用 mock 还包括 `__NOT_EXIST_PRODUCT__99999` / `__NOT_EXIST_DEPT__99999` / `__NOT_EXIST_SUPPLIER__99999` / `__NOT_EXIST_HIS_NO__99999`(与 CSV 一致)。
4. **组合查询**:若主表无统计日期列,勿用 fallback 单日覆盖默认区间(STAT-LMP-004)。
---
......@@ -41,12 +41,12 @@
---
##### 【P0】【TC-UI-STAT-RBE-002】【TP_STAT_RBE_012】统计日期、进院供应商、产品名称组合查询
##### 【P0】【TC-UI-STAT-RBE-002】【TP_STAT_RBE_012】统计日期、进院供应商、物料名称组合查询
- 前置条件:测试环境可访问;测试账号已登录并进入试剂批号统计明细页(iframe reagentBatch/entry);已默认查询且主表至少有 1 条数据
- 操作步骤:
1. searchAndExtractSample() 读取样本(${sampleXxx},禁止写死业务数据)
2. 快捷区填入样本中 统计日期、进院供应商、产品名称(统计日期若主表无对应列则保持页面默认区间,勿 fallback 单日)
2. 快捷区填入样本中 统计日期、进院供应商、物料名称(统计日期若主表无对应列则保持页面默认区间,勿 fallback 单日)
3. 点击「查 询」并等待主表刷新
4. 抽样检查首行 统计日期、进院供应商 与分页「共 N 条」(若有分页)
- 自动化断言:与 CSV `STAT-RBE-002` 及 `tests/spd/reag-entry.spec.ts` 一致
......@@ -62,7 +62,7 @@
- 前置条件:测试环境可访问;测试账号已登录并进入试剂批号统计明细页(iframe reagentBatch/entry);已默认查询且主表至少有 1 条数据
- 操作步骤:
1. searchAndExtractSample() 读取样本(${sampleXxx},禁止写死业务数据)
2. 快捷区填入 统计日期、进院供应商、产品名称 等全部可见条件
2. 快捷区填入 统计日期、进院供应商、物料名称 等全部可见条件
3. 点击「查 询」并等待主表刷新
4. 抽样检查首行 统计日期、进院供应商 与分页「共 N 条」(若有分页)
- 自动化断言:与 CSV `STAT-RBE-010` 及 `tests/spd/reag-entry.spec.ts` 一致
......@@ -82,7 +82,7 @@
- 前置条件:测试环境可访问;测试账号已登录并进入试剂批号统计明细页(iframe reagentBatch/entry);已默认查询有数据
- 操作步骤:
1. searchAndExtractSample() 读取样本
2. 快捷区填入样本 统计日期、进院供应商、产品名称
2. 快捷区填入样本 统计日期、进院供应商、物料名称
3. 点击「查 询」
4. 检查主表 统计日期、进院供应商 与业务指标列
- 自动化断言:与 CSV `STAT-RBE-003` 及 `tests/spd/reag-entry.spec.ts` 一致
......@@ -107,7 +107,7 @@
###### 预期结果
主表核心列完整展示(含统计日期、进院供应商、产品名称);表格可横向滚动查看更多列。
主表核心列完整展示(含统计日期、进院供应商、物料名称);表格可横向滚动查看更多列。
---
......@@ -131,7 +131,7 @@
- 前置条件:测试环境可访问;测试账号已登录并进入试剂批号统计明细页(iframe reagentBatch/entry)
- 操作步骤:
1. 产品名称填 __NOT_EXIST_PRODUCT__99999
1. 物料名称填 __NOT_EXIST_PRODUCT__99999
2. 点击「查 询」
3. 检查主表;若存在底部汇总区则一并检查,无则跳过
- 自动化断言:与 CSV `STAT-RBE-006` 及 `tests/spd/reag-entry.spec.ts` 一致
......@@ -149,7 +149,7 @@
1. 默认条件查询
2. 确认「统计日期」等核心列可见
3. 横向拖拉滚动列表
4. 检查「产品名称」等远侧列进入可视区
4. 检查「物料名称」等远侧列进入可视区
5. 检查表头无空白列、表头列数与数据列数一致;相邻列无异常间隙/重叠;表头与数据列对齐正常
- 自动化断言:与 CSV `STAT-RBE-007` 及 `tests/spd/reag-entry.spec.ts` 一致
......
......@@ -30,7 +30,7 @@
- 前置条件:测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code);已默认查询且主表有数据
- 操作步骤:
1. 从主表首行读取产品名称/UDI码样本(${sampleXxx})填入快捷区
1. 从主表首行读取物料名称/UDI码样本(${sampleXxx})填入快捷区
2. 点击「重 置」
3. 检查各字段与快捷筛选恢复默认
- 自动化断言:与 CSV `STAT-TBC-001` 及 `tests/spd/trace-barcode.spec.ts` 一致
......@@ -79,10 +79,10 @@
- 前置条件:测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code);已默认查询且主表至少有 1 条数据
- 操作步骤:
1. searchAndExtractSample() 读取样本(${sampleXxx},禁止写死业务数据)
2. 快捷区填入 产品名称、UDI码、原厂码
2. 快捷区填入 物料名称、UDI码、原厂码
3. 打开高级筛选,填入 批号、配送单号、耗材类型
4. 点击「筛 选」并等待刷新
5. 检查首行 产品名称、UDI码、批号 与条件一致
5. 检查首行 物料名称、UDI码、批号 与条件一致
- 自动化断言:与 CSV `STAT-TBC-004` 及 `tests/spd/trace-barcode.spec.ts` 一致
###### 预期结果
......@@ -96,7 +96,7 @@
- 前置条件:测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code);已默认查询有数据
- 操作步骤:
1. searchAndExtractSample() 读取样本
2. 快捷区填入 产品名称、UDI码
2. 快捷区填入 物料名称、UDI码
3. 点击「查 询」
4. 打开高级筛选(不手动修改抽屉)
5. 校验抽屉同名字段与快捷区一致
......@@ -104,7 +104,7 @@
###### 预期结果
抽屉「产品名称」「UDI码」与快捷区已填值一致
抽屉「物料名称」「UDI码」与快捷区已填值一致
---
......@@ -137,7 +137,7 @@
- 前置条件:测试环境可访问;测试账号已登录并进入条码追溯页(iframe trace/code);已默认查询有数据且主表列宽可能超出视口
- 操作步骤:
1. 点击「查 询」
2. 确认「产品名称」等核心列可见
2. 确认「物料名称」等核心列可见
3. expectTableHeaders() 校验核心表头
4. 在表格数据区横向拖拉滚动(或滚轮/滚动条)使列表左右滚动
5. 检查「配送单号」等远侧列进入可视区
......@@ -146,7 +146,7 @@
###### 预期结果
主表核心列完整展示(含产品名称、UDI码、原厂码、批号、合单出库单号、配送单号等);横向拖拉后列表可正常左右滚动;远侧列可见;表头无空白列;表头列数与数据列数一致;表头相邻列无变形空格/重叠;表头与数据列对齐正常。
主表核心列完整展示(含物料名称、UDI码、原厂码、批号、合单出库单号、配送单号等);横向拖拉后列表可正常左右滚动;远侧列可见;表头无空白列;表头列数与数据列数一致;表头相邻列无变形空格/重叠;表头与数据列对齐正常。
---
......
......@@ -15,7 +15,7 @@
**动态取数约定**(对齐 STAT-DOS):
1. 默认查询确认主表有数据 → `TraceDirectDetailPage.searchAndExtractSample()` / `extractSampleRow()`。
2. 条件使用 `${sampleXxx}` 占位;**禁止写死**产品/单号/日期/院区等业务数据。
3. **反例 mock**:`__NOT_EXIST_PRODUCT__99999`(字段:产品名称,与 CSV 一致)。
3. **反例 mock**:`__NOT_EXIST_PRODUCT__99999`(字段:物料名称,与 CSV 一致)。
4. **组合查询**:若主表无请领日期列,勿用 fallback 单日覆盖默认区间(STAT-LMP-004)。
---
......@@ -30,7 +30,7 @@
- 前置条件:测试环境可访问;测试账号已登录并进入直配请领明细查询页(iframe trace/detail);已默认查询且主表有数据
- 操作步骤:
1. 从主表首行读取请领日期/产品名称样本(${sampleXxx})填入快捷区
1. 从主表首行读取请领日期/物料名称样本(${sampleXxx})填入快捷区
2. 点击「重 置」
3. 检查各字段与快捷筛选恢复默认
- 自动化断言:与 CSV `STAT-TDD-001` 及 `tests/spd/trace-direct-detail.spec.ts` 一致
......@@ -79,10 +79,10 @@
- 前置条件:测试环境可访问;测试账号已登录并进入直配请领明细查询页(iframe trace/detail);已默认查询且主表至少有 1 条数据
- 操作步骤:
1. searchAndExtractSample() 读取样本(${sampleXxx},禁止写死业务数据)
2. 快捷区填入 请领日期、产品名称、规格型号
2. 快捷区填入 请领日期、物料名称、规格型号
3. 打开高级筛选,填入 请领单号、单据形态、请领科室、配送单号、进院供应商名称、采购计划单号、采购单号、请领人
4. 点击「筛 选」并等待刷新
5. 检查首行 请领单号、产品名称、配送单号 与条件一致
5. 检查首行 请领单号、物料名称、配送单号 与条件一致
- 自动化断言:与 CSV `STAT-TDD-004` 及 `tests/spd/trace-direct-detail.spec.ts` 一致
###### 预期结果
......@@ -96,7 +96,7 @@
- 前置条件:测试环境可访问;测试账号已登录并进入直配请领明细查询页(iframe trace/detail);已默认查询有数据
- 操作步骤:
1. searchAndExtractSample() 读取样本
2. 快捷区填入 请领日期、产品名称
2. 快捷区填入 请领日期、物料名称
3. 点击「查 询」
4. 打开高级筛选(不手动修改抽屉)
5. 校验抽屉同名字段与快捷区一致
......@@ -104,7 +104,7 @@
###### 预期结果
抽屉「请领日期」「产品名称」与快捷区已填值一致
抽屉「请领日期」「物料名称」与快捷区已填值一致
---
......@@ -116,7 +116,7 @@
- 前置条件:测试环境可访问;测试账号已登录并进入直配请领明细查询页(iframe trace/detail)
- 操作步骤:
1. 产品名称填 __NOT_EXIST_PRODUCT__99999
1. 物料名称填 __NOT_EXIST_PRODUCT__99999
2. 点击「查 询」
3. 检查主表;若存在底部汇总区则一并检查,无则跳过
- 自动化断言:与 CSV `STAT-TDD-006` 及 `tests/spd/trace-direct-detail.spec.ts` 一致
......
......@@ -15,7 +15,7 @@
**动态取数约定**(对齐 STAT-DOS):
1. 默认查询确认主表有数据 → `WarnLowPage.searchAndExtractSample()` / `extractSampleRow()`。
2. 条件使用 `${sampleXxx}` 占位;**禁止写死**产品/单号/日期/院区等业务数据。
3. **反例 mock**:`__NOT_EXIST_PRODUCT__99999`(字段:产品名称);通用 mock 还包括 `__NOT_EXIST_PRODUCT__99999` / `__NOT_EXIST_DEPT__99999` / `__NOT_EXIST_SUPPLIER__99999` / `__NOT_EXIST_HIS_NO__99999`(与 CSV 一致)。
3. **反例 mock**:`__NOT_EXIST_PRODUCT__99999`(字段:物料名称);通用 mock 还包括 `__NOT_EXIST_PRODUCT__99999` / `__NOT_EXIST_DEPT__99999` / `__NOT_EXIST_SUPPLIER__99999` / `__NOT_EXIST_HIS_NO__99999`(与 CSV 一致)。
4. **组合查询**:若主表无日期列,勿用 fallback 单日覆盖默认区间(STAT-LMP-004)。
---
......@@ -30,7 +30,7 @@
- 前置条件:测试环境可访问;测试账号已登录并进入低储预警页(iframe warning/lowStorage);已默认查询且主表有数据
- 操作步骤:
1. 从主表首行读取产品名称样本(${sampleXxx})填入快捷区
1. 从主表首行读取物料名称样本(${sampleXxx})填入快捷区
2. 点击「重 置」
3. 检查各字段与筛选恢复默认
- 自动化断言:与 CSV `STAT-WLS-001` 及 `tests/spd/warn-low.spec.ts` 一致
......@@ -47,9 +47,9 @@
- 操作步骤:
1. searchAndExtractSample() 读取样本(${sampleXxx},禁止写死业务数据)
2. 若筛选区已收起则先点击「展开」
3. 快捷区填入 产品名称、默认供应商、耗材类型、院区、库房、库区 全部可见条件
3. 快捷区填入 物料名称、默认供应商、耗材类型、院区、库房、库区 全部可见条件
4. 点击「查 询」并等待主表刷新
5. 抽样检查首行 产品名称、默认供应商、耗材类型、院区、库房、库区 与查询条件一致
5. 抽样检查首行 物料名称、默认供应商、耗材类型、院区、库房、库区 与查询条件一致
- 自动化断言:与 CSV `STAT-WLS-002` 及 `tests/spd/warn-low.spec.ts` 一致
###### 预期结果
......@@ -100,7 +100,7 @@
- 前置条件:测试环境可访问;测试账号已登录并进入低储预警页(iframe warning/lowStorage)
- 操作步骤:
1. 产品名称填 __NOT_EXIST_PRODUCT__99999
1. 物料名称填 __NOT_EXIST_PRODUCT__99999
2. 点击「查 询」
3. 检查主表;若存在底部汇总区则一并检查,无则跳过
- 自动化断言:与 CSV `STAT-WLS-002` 及 `tests/spd/warn-low.spec.ts` 一致
......@@ -116,7 +116,7 @@
- 前置条件:测试环境可访问;测试账号已登录并进入低储预警页(iframe warning/lowStorage);已默认查询有数据且主表列宽超出视口
- 操作步骤:
1. 默认条件查询
2. 确认「产品名称」等核心列可见
2. 确认「物料名称」等核心列可见
3. 横向拖拉滚动列表
4. 检查「耗材类型」等远侧列进入可视区
5. 检查表头无空白列、表头列数与数据列数一致;相邻列无异常间隙/重叠;表头与数据列对齐正常
......
......@@ -15,7 +15,7 @@
**动态取数约定**(对齐 STAT-DOS):
1. 默认查询确认主表有数据 → `WarnStrandPage.searchAndExtractSample()` / `extractSampleRow()`。
2. 条件使用 `${sampleXxx}` 占位;**禁止写死**产品/单号/日期/院区等业务数据。
3. **反例 mock**:`__NOT_EXIST_PRODUCT__99999`(字段:产品名称);通用 mock 还包括 `__NOT_EXIST_PRODUCT__99999` / `__NOT_EXIST_DEPT__99999` / `__NOT_EXIST_SUPPLIER__99999` / `__NOT_EXIST_HIS_NO__99999`(与 CSV 一致)。
3. **反例 mock**:`__NOT_EXIST_PRODUCT__99999`(字段:物料名称);通用 mock 还包括 `__NOT_EXIST_PRODUCT__99999` / `__NOT_EXIST_DEPT__99999` / `__NOT_EXIST_SUPPLIER__99999` / `__NOT_EXIST_HIS_NO__99999`(与 CSV 一致)。
4. **组合查询**:若主表无日期列,勿用 fallback 单日覆盖默认区间(STAT-LMP-004)。
---
......@@ -55,15 +55,15 @@
###### 预期结果
抽屉标题为「高级筛选」;含 产品名称、进院供应商名称、滞销天数、条码、耗材类型 等字段可交互
抽屉标题为「高级筛选」;含 物料名称、进院供应商名称、滞销天数、条码、耗材类型 等字段可交互
---
##### 【P1】【TC-UI-STAT-WST-003】【TP_STAT_WST_028】抽屉内重置恢复抽屉字段默认
- 前置条件:测试环境可访问;测试账号已登录并进入滞留预警页(iframe warning/strandQuery);已打开高级筛选抽屉;已从列表读取 产品名称 样本
- 前置条件:测试环境可访问;测试账号已登录并进入滞留预警页(iframe warning/strandQuery);已打开高级筛选抽屉;已从列表读取 物料名称 样本
- 操作步骤:
1. 在抽屉 产品名称 填入 ${sampleXxx}
1. 在抽屉 物料名称 填入 ${sampleXxx}
2. 点击抽屉底部「重 置」
3. 检查抽屉字段与快捷区
- 自动化断言:与 CSV `STAT-WST-003` 及 `tests/spd/warn-strand.spec.ts` 一致
......@@ -79,10 +79,10 @@
- 前置条件:测试环境可访问;测试账号已登录并进入滞留预警页(iframe warning/strandQuery);已默认查询且主表至少有 1 条数据
- 操作步骤:
1. searchAndExtractSample() 读取样本(${sampleXxx},禁止写死业务数据)
2. 快捷区填入 统计日期、产品名称、进院供应商名称、库房名称
3. 打开高级筛选,填入 产品名称、进院供应商名称、滞销天数、条码、耗材类型
2. 快捷区填入 统计日期、物料名称、进院供应商名称、库房名称
3. 打开高级筛选,填入 物料名称、进院供应商名称、滞销天数、条码、耗材类型
4. 点击「筛 选」并等待刷新
5. 检查首行 统计日期、产品名称 与条件一致
5. 检查首行 统计日期、物料名称 与条件一致
- 自动化断言:与 CSV `STAT-WST-004` 及 `tests/spd/warn-strand.spec.ts` 一致
###### 预期结果
......@@ -96,7 +96,7 @@
- 前置条件:测试环境可访问;测试账号已登录并进入滞留预警页(iframe warning/strandQuery);已默认查询有数据
- 操作步骤:
1. searchAndExtractSample() 读取样本
2. 快捷区填入 统计日期、产品名称
2. 快捷区填入 统计日期、物料名称
3. 点击「查 询」
4. 打开高级筛选(不手动修改抽屉)
5. 校验抽屉同名字段与快捷区一致
......@@ -104,7 +104,7 @@
###### 预期结果
抽屉「统计日期」「产品名称」与快捷区已填值一致
抽屉「统计日期」「物料名称」与快捷区已填值一致
---
......@@ -122,7 +122,7 @@
###### 预期结果
主表核心列完整展示(含统计日期、产品名称、进院供应商名称、库房名称、滞销天数、条码、耗材类型、院区名称);表格可横向滚动查看更多列。
主表核心列完整展示(含统计日期、物料名称、进院供应商名称、库房名称、滞销天数、条码、耗材类型、院区名称);表格可横向滚动查看更多列。
---
......@@ -146,7 +146,7 @@
- 前置条件:测试环境可访问;测试账号已登录并进入滞留预警页(iframe warning/strandQuery)
- 操作步骤:
1. 产品名称填 __NOT_EXIST_PRODUCT__99999
1. 物料名称填 __NOT_EXIST_PRODUCT__99999
2. 点击「查 询」
3. 检查主表;若存在底部汇总区则一并检查,无则跳过
- 自动化断言:与 CSV `STAT-WST-008` 及 `tests/spd/warn-strand.spec.ts` 一致
......
......@@ -15,7 +15,7 @@
**动态取数约定**(对齐 STAT-DOS):
1. 默认查询确认主表有数据 → `WarnDetainPage.searchAndExtractSample()` / `extractSampleRow()`。
2. 条件使用 `${sampleXxx}` 占位;**禁止写死**产品/单号/日期/院区等业务数据。
3. **反例 mock**:`__NOT_EXIST_PRODUCT__99999`(字段:产品名称);通用 mock 还包括 `__NOT_EXIST_PRODUCT__99999` / `__NOT_EXIST_DEPT__99999` / `__NOT_EXIST_SUPPLIER__99999` / `__NOT_EXIST_HIS_NO__99999`(与 CSV 一致)。
3. **反例 mock**:`__NOT_EXIST_PRODUCT__99999`(字段:物料名称);通用 mock 还包括 `__NOT_EXIST_PRODUCT__99999` / `__NOT_EXIST_DEPT__99999` / `__NOT_EXIST_SUPPLIER__99999` / `__NOT_EXIST_HIS_NO__99999`(与 CSV 一致)。
4. **组合查询**:若主表无日期列,勿用 fallback 单日覆盖默认区间(STAT-LMP-004)。
---
......@@ -46,9 +46,9 @@
- 前置条件:测试环境可访问;测试账号已登录并进入缺货报表页(iframe warning/detainDept);已默认查询且主表至少有 1 条数据
- 操作步骤:
1. searchAndExtractSample() 读取样本(${sampleXxx},禁止写死业务数据)
2. 快捷区填入 统计日期、产品名称、院区名称、库房名称 等全部可见条件
2. 快捷区填入 统计日期、物料名称、院区名称、库房名称 等全部可见条件
3. 点击「查 询」并等待主表刷新
4. 抽样检查首行 统计日期、产品名称 与分页「共 N 条」(若有分页)
4. 抽样检查首行 统计日期、物料名称 与分页「共 N 条」(若有分页)
- 自动化断言:与 CSV `STAT-WDT-011` 及 `tests/spd/warn-detain.spec.ts` 一致
###### 预期结果
......@@ -71,15 +71,15 @@
###### 预期结果
抽屉标题为「高级筛选」;含 产品名称、默认供应商、产品类型、院区名称、库房名称 等字段可交互
抽屉标题为「高级筛选」;含 物料名称、默认供应商、产品类型、院区名称、库房名称 等字段可交互
---
##### 【P1】【TC-UI-STAT-WDT-003】【TP_STAT_WDT_028】抽屉内重置恢复抽屉字段默认
- 前置条件:测试环境可访问;测试账号已登录并进入缺货报表页(iframe warning/detainDept);已打开高级筛选抽屉;已从列表读取 产品名称 样本
- 前置条件:测试环境可访问;测试账号已登录并进入缺货报表页(iframe warning/detainDept);已打开高级筛选抽屉;已从列表读取 物料名称 样本
- 操作步骤:
1. 在抽屉 产品名称 填入 ${sampleXxx}
1. 在抽屉 物料名称 填入 ${sampleXxx}
2. 点击抽屉底部「重 置」
3. 检查抽屉字段与快捷区
- 自动化断言:与 CSV `STAT-WDT-003` 及 `tests/spd/warn-detain.spec.ts` 一致
......@@ -95,10 +95,10 @@
- 前置条件:测试环境可访问;测试账号已登录并进入缺货报表页(iframe warning/detainDept);已默认查询且主表至少有 1 条数据
- 操作步骤:
1. searchAndExtractSample() 读取样本(${sampleXxx},禁止写死业务数据)
2. 快捷区填入 统计日期、产品名称、院区名称、库房名称
3. 打开高级筛选,填入 产品名称、默认供应商、产品类型、院区名称、库房名称
2. 快捷区填入 统计日期、物料名称、院区名称、库房名称
3. 打开高级筛选,填入 物料名称、默认供应商、产品类型、院区名称、库房名称
4. 点击「筛 选」并等待刷新
5. 检查首行 统计日期、产品名称 与条件一致
5. 检查首行 统计日期、物料名称 与条件一致
- 自动化断言:与 CSV `STAT-WDT-004` 及 `tests/spd/warn-detain.spec.ts` 一致
###### 预期结果
......@@ -112,7 +112,7 @@
- 前置条件:测试环境可访问;测试账号已登录并进入缺货报表页(iframe warning/detainDept);已默认查询有数据
- 操作步骤:
1. searchAndExtractSample() 读取样本
2. 快捷区填入 统计日期、产品名称
2. 快捷区填入 统计日期、物料名称
3. 点击「查 询」
4. 打开高级筛选(不手动修改抽屉)
5. 校验抽屉同名字段与快捷区一致
......@@ -120,7 +120,7 @@
###### 预期结果
抽屉「统计日期」「产品名称」与快捷区已填值一致
抽屉「统计日期」「物料名称」与快捷区已填值一致
---
......@@ -138,13 +138,13 @@
###### 预期结果
主表核心列完整展示(含统计日期、产品名称、院区名称、库房名称、默认供应商、产品类型);表格可横向滚动查看更多列。
主表核心列完整展示(含统计日期、物料名称、院区名称、库房名称、默认供应商、产品类型);表格可横向滚动查看更多列。
---
##### 【P1】【TC-UI-STAT-WDT-012~021】【TP_STAT_WDT_044】各可排序列升序降序切换
页面默认表头共 **12** 列,可排序 **10** 列(**院区名称、单元含量** 无 sorter,已剔除):库房名称、物料编号、产品名称、规格型号、规格、型号、器械注册人-术语配置、单位、库存数量、待发数量。自动化见 `tests/spd/warn-detain.spec.ts` 列排序块。
页面默认表头共 **12** 列,可排序 **10** 列(**院区名称、单元含量** 无 sorter,已剔除):库房名称、物料编号、物料名称、规格型号、规格、型号、器械注册人-术语配置、单位、库存数量、待发数量。自动化见 `tests/spd/warn-detain.spec.ts` 列排序块。
- 前置条件:测试环境可访问;测试账号已登录并进入缺货报表页(iframe warning/detainDept);已默认查询且主表至少有 2 条数据
- 操作步骤:
......@@ -166,7 +166,7 @@
- 前置条件:测试环境可访问;测试账号已登录并进入缺货报表页(iframe warning/detainDept)
- 操作步骤:
1. 产品名称填 __NOT_EXIST_PRODUCT__99999
1. 物料名称填 __NOT_EXIST_PRODUCT__99999
2. 点击「查 询」
3. 检查主表;若存在底部汇总区则一并检查,无则跳过
- 自动化断言:与 CSV `STAT-WDT-007` 及 `tests/spd/warn-detain.spec.ts` 一致
......
......@@ -15,7 +15,7 @@
**动态取数约定**(对齐 STAT-DOS):
1. 默认查询确认主表有数据 → `WarnExpdtPage.searchAndExtractSample()` / `extractSampleRow()`。
2. 条件使用 `${sampleXxx}` 占位;**禁止写死**产品/单号/日期/院区等业务数据。
3. **反例 mock**:`__NOT_EXIST_PRODUCT__99999`(字段:产品名称);通用 mock 还包括 `__NOT_EXIST_PRODUCT__99999` / `__NOT_EXIST_DEPT__99999` / `__NOT_EXIST_SUPPLIER__99999` / `__NOT_EXIST_HIS_NO__99999`(与 CSV 一致)。
3. **反例 mock**:`__NOT_EXIST_PRODUCT__99999`(字段:物料名称);通用 mock 还包括 `__NOT_EXIST_PRODUCT__99999` / `__NOT_EXIST_DEPT__99999` / `__NOT_EXIST_SUPPLIER__99999` / `__NOT_EXIST_HIS_NO__99999`(与 CSV 一致)。
4. **组合查询**:若主表无日期列,勿用 fallback 单日覆盖默认区间(STAT-LMP-004)。
---
......@@ -55,15 +55,15 @@
###### 预期结果
抽屉标题为「高级筛选」;含 产品名称、进院供应商名称、近效期、条码、耗材类型 等字段可交互
抽屉标题为「高级筛选」;含 物料名称、进院供应商名称、近效期、条码、耗材类型 等字段可交互
---
##### 【P1】【TC-UI-STAT-WEX-003】【TP_STAT_WEX_059】抽屉内重置恢复抽屉字段默认
- 前置条件:测试环境可访问;测试账号已登录并进入近期效期查询页(iframe warning/expdtQuery);已打开高级筛选抽屉;已从列表读取 产品名称 样本
- 前置条件:测试环境可访问;测试账号已登录并进入近期效期查询页(iframe warning/expdtQuery);已打开高级筛选抽屉;已从列表读取 物料名称 样本
- 操作步骤:
1. 在抽屉 产品名称 填入 ${sampleXxx}
1. 在抽屉 物料名称 填入 ${sampleXxx}
2. 点击抽屉底部「重 置」
3. 检查抽屉字段与快捷区
- 自动化断言:与 CSV `STAT-WEX-003` 及 `tests/spd/warn-expdt.spec.ts` 一致
......@@ -79,10 +79,10 @@
- 前置条件:测试环境可访问;测试账号已登录并进入近期效期查询页(iframe warning/expdtQuery);已默认查询且主表至少有 1 条数据
- 操作步骤:
1. searchAndExtractSample() 读取样本(${sampleXxx},禁止写死业务数据)
2. 快捷区填入 统计日期、产品名称、进院供应商名称、库房名称
3. 打开高级筛选,填入 产品名称、进院供应商名称、近效期、条码、耗材类型
2. 快捷区填入 统计日期、物料名称、进院供应商名称、库房名称
3. 打开高级筛选,填入 物料名称、进院供应商名称、近效期、条码、耗材类型
4. 点击「筛 选」并等待刷新
5. 检查首行 统计日期、产品名称 与条件一致
5. 检查首行 统计日期、物料名称 与条件一致
- 自动化断言:与 CSV `STAT-WEX-004` 及 `tests/spd/warn-expdt.spec.ts` 一致
###### 预期结果
......@@ -96,7 +96,7 @@
- 前置条件:测试环境可访问;测试账号已登录并进入近期效期查询页(iframe warning/expdtQuery);已默认查询有数据
- 操作步骤:
1. searchAndExtractSample() 读取样本
2. 快捷区填入 统计日期、产品名称
2. 快捷区填入 统计日期、物料名称
3. 点击「查 询」
4. 打开高级筛选(不手动修改抽屉)
5. 校验抽屉同名字段与快捷区一致
......@@ -104,7 +104,7 @@
###### 预期结果
抽屉「统计日期」「产品名称」与快捷区已填值一致
抽屉「统计日期」「物料名称」与快捷区已填值一致
---
......@@ -122,7 +122,7 @@
###### 预期结果
主表核心列完整展示(含统计日期、产品名称、进院供应商名称、库房名称、近效期、条码、耗材类型、院区名称);表格可横向滚动查看更多列。
主表核心列完整展示(含统计日期、物料名称、进院供应商名称、库房名称、近效期、条码、耗材类型、院区名称);表格可横向滚动查看更多列。
---
......@@ -146,7 +146,7 @@
- 前置条件:测试环境可访问;测试账号已登录并进入近期效期查询页(iframe warning/expdtQuery)
- 操作步骤:
1. 产品名称填 __NOT_EXIST_PRODUCT__99999
1. 物料名称填 __NOT_EXIST_PRODUCT__99999
2. 点击「查 询」
3. 检查主表;若存在底部汇总区则一并检查,无则跳过
- 自动化断言:与 CSV `STAT-WEX-008` 及 `tests/spd/warn-expdt.spec.ts` 一致
......
......@@ -42,7 +42,7 @@ test.describe('基础设置 · 准入管理', () => {
'准入类型',
'准入单号',
'进院供应商',
'产品名称',
'物料名称',
'注册证号',
'耗材类型',
'产品条数',
......
......@@ -61,7 +61,7 @@ test.describe('基础设置 · 准入管理', () => {
assertAdmitHeaders(await admitMaterialPage.coreHeaders(), [
'准入类型',
'产品编号',
'产品名称',
'物料名称',
'规格型号',
'规格',
'型号',
......
......@@ -50,7 +50,7 @@ test.describe('基础设置 · 准入管理', () => {
assertAdmitHeaders(await admitProductApplyPage.coreHeaders(), [
'准入单号',
'产品编号',
'产品名称',
'物料名称',
'规格型号',
'器械注册人',
'单位',
......
......@@ -41,7 +41,7 @@ test.describe('基础设置 · 准入管理', () => {
assertAdmitHeaders(await admitProductListPage.coreHeaders(), [
'准入单号',
'进院供应商',
'产品名称',
'物料名称',
'注册证号',
'耗材类型',
'产品条数',
......
......@@ -53,7 +53,7 @@ test.describe('基础设置 · 准入管理', () => {
assertAdmitHeaders(await admitTaskPage.coreHeaders(), [
'准入类型',
'产品编号',
'产品名称',
'物料名称',
'规格型号',
'规格',
'型号',
......
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