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

将基础管理等未入库改动暂存到 temp 分支,便于远程备份。

新模块用例尚未具备通关凭证,本次按临时备份跳过本地门禁。
parent f6eec849
# Auto-generated from vendor-auth-final-elements.json
# Source: http://spdtest.cmic.com.cn:8080/spd/basic/mfrs/paltform/mfrsName/authAuditFinal
# Scanned: 2026-10-20T08:41:58.554Z
# Page: 基础设置 > 厂商管理 > 授权变更终审
# Note: filter dropdown was opened during scan
page: vendor-auth-final
module: spd-basic
url: http://spdtest.cmic.com.cn:8080/spd/basic/mfrs/paltform/mfrsName/authAuditFinal
locators:
# --- main::main ---
menu_home:
description: "首页"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "首页"
playwright: "page.getByRole('menuitem', { name: '首页' })"
menu_basicSetting:
description: "基础设置"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "基础设置"
playwright: "page.getByRole('menuitem', { name: '基础设置' })"
menu_purchase:
description: "采购管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "采购管理"
playwright: "page.getByRole('menuitem', { name: '采购管理' })"
menu_opening:
description: "期初管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "期初管理"
playwright: "page.getByRole('menuitem', { name: '期初管理' })"
menu_centerStock:
description: "中心库管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "中心库管理"
playwright: "page.getByRole('menuitem', { name: '中心库管理' })"
menu_deptBusiness:
description: "科室业务管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "科室业务管理"
playwright: "page.getByRole('menuitem', { name: '科室业务管理' })"
menu_finance:
description: "财务管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "财务管理"
playwright: "page.getByRole('menuitem', { name: '财务管理' })"
menu_orthoVolume:
description: "骨科带量"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "骨科带量"
playwright: "page.getByRole('menuitem', { name: '骨科带量' })"
menu_general:
description: "综合管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "综合管理"
playwright: "page.getByRole('menuitem', { name: '综合管理' })"
menu_yangcai:
description: "阳采管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "阳采管理"
playwright: "page.getByRole('menuitem', { name: '阳采管理' })"
menu_processCenter:
description: "流程中心"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "流程中心"
playwright: "page.getByRole('menuitem', { name: '流程中心' })"
menu_logistics:
description: "后勤物资管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "后勤物资管理"
playwright: "page.getByRole('menuitem', { name: '后勤物资管理' })"
menu_statReport:
description: "统计报表"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "统计报表"
playwright: "page.getByRole('menuitem', { name: '统计报表' })"
menu_dataViz:
description: "数据可视化"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "数据可视化"
playwright: "page.getByRole('menuitem', { name: '数据可视化' })"
menu_vendorQuery:
description: "厂商查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "厂商查询"
playwright: "page.getByRole('menuitem', { name: '厂商查询' })"
menu_vendorQual:
description: "供应商资质管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "供应商资质管理"
playwright: "page.getByRole('menuitem', { name: '供应商资质管理' })"
menu_authFirst:
description: "授权变更初审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "授权变更初审"
playwright: "page.getByRole('menuitem', { name: '授权变更初审' })"
menu_certFirst:
description: "注册证变更初审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "注册证变更初审"
playwright: "page.getByRole('menuitem', { name: '注册证变更初审' })"
menu_certFinal:
description: "注册证变更终审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "注册证变更终审"
playwright: "page.getByRole('menuitem', { name: '注册证变更终审' })"
menu_authFinal:
description: "授权变更终审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "授权变更终审"
playwright: "page.getByRole('menuitem', { name: '授权变更终审' })"
menu_certDiff:
description: "注册证差异对比"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "注册证差异对比"
playwright: "page.getByRole('menuitem', { name: '注册证差异对比' })"
menu_evalScheme:
description: "评价方案维护"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "评价方案维护"
playwright: "page.getByRole('menuitem', { name: '评价方案维护' })"
menu_evalIndicator:
description: "评价指标维护"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "评价指标维护"
playwright: "page.getByRole('menuitem', { name: '评价指标维护' })"
menu_vendorHoliday:
description: "供应商节假日管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "供应商节假日管理"
playwright: "page.getByRole('menuitem', { name: '供应商节假日管理' })"
authFinal:
description: "授权变更终审"
element_type: tab
section: "main::main"
strategy: text
value: "授权变更终审"
playwright: "page.getByText('授权变更终审')"
tab_authFinal:
description: "授权变更终审"
element_type: div
section: "main::main"
strategy: id
value: "rc-tabs-0-tab-/basic/mfrs/paltform/mfrsName/authAuditFinal"
playwright: "page.locator('#rc-tabs-0-tab-/basic/mfrs/paltform/mfrsName/authAuditFinal')"
operationDateDateRange:
description: "制单日期"
element_type: datepicker
section: "main::main"
strategy: label_text
value: "制单日期"
playwright: "page.getByText('制单日期', { exact: true })"
dateRange:
description: "开始日期"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_dateValue"
playwright: "page.locator('#table_search_form_dateValue')"
operationDateInput:
description: "结束日期"
element_type: text
section: "main::main"
strategy: placeholder
value: "结束日期"
playwright: "page.getByPlaceholder('结束日期')"
documentNo:
description: "请输入"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_orderNo"
playwright: "page.locator('#table_search_form_orderNo')"
el_e99480e594aee59586Select:
description: "请选择"
element_type: select
section: "main::main"
strategy: label_text
value: "销售商"
playwright: "page.getByText('销售商', { exact: true })"
supplierId:
description: "销售商"
element_type: search
section: "main::main"
strategy: id
value: "table_search_form_provId"
playwright: "page.locator('#table_search_form_provId')"
searchBtn:
description: "查 询"
element_type: button
section: "main::main"
strategy: role
role: button
name: "查 询"
playwright: "page.getByRole('button', { name: '查 询' })"
resetBtn:
description: "重 置"
element_type: button
section: "main::main"
strategy: role
role: button
name: "重 置"
playwright: "page.getByRole('button', { name: '重 置' })"
expandFilterBtn:
description: "展开"
element_type: button
section: "main::main"
strategy: role
role: button
name: "展开"
playwright: "page.getByRole('button', { name: '展开' })"
# Auto-generated from vendor-auth-first-elements.json
# Source: http://spdtest.cmic.com.cn:8080/spd/basic/mfrs/paltform/mfrsName/authAudit
# Scanned: 2026-10-20T08:41:49.683Z
# Page: 基础设置 > 厂商管理 > 授权变更初审
# Note: filter dropdown was opened during scan
page: vendor-auth-first
module: spd-basic
url: http://spdtest.cmic.com.cn:8080/spd/basic/mfrs/paltform/mfrsName/authAudit
locators:
# --- main::main ---
menu_home:
description: "首页"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "首页"
playwright: "page.getByRole('menuitem', { name: '首页' })"
menu_basicSetting:
description: "基础设置"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "基础设置"
playwright: "page.getByRole('menuitem', { name: '基础设置' })"
menu_purchase:
description: "采购管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "采购管理"
playwright: "page.getByRole('menuitem', { name: '采购管理' })"
menu_opening:
description: "期初管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "期初管理"
playwright: "page.getByRole('menuitem', { name: '期初管理' })"
menu_centerStock:
description: "中心库管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "中心库管理"
playwright: "page.getByRole('menuitem', { name: '中心库管理' })"
menu_deptBusiness:
description: "科室业务管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "科室业务管理"
playwright: "page.getByRole('menuitem', { name: '科室业务管理' })"
menu_finance:
description: "财务管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "财务管理"
playwright: "page.getByRole('menuitem', { name: '财务管理' })"
menu_orthoVolume:
description: "骨科带量"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "骨科带量"
playwright: "page.getByRole('menuitem', { name: '骨科带量' })"
menu_general:
description: "综合管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "综合管理"
playwright: "page.getByRole('menuitem', { name: '综合管理' })"
menu_yangcai:
description: "阳采管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "阳采管理"
playwright: "page.getByRole('menuitem', { name: '阳采管理' })"
menu_processCenter:
description: "流程中心"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "流程中心"
playwright: "page.getByRole('menuitem', { name: '流程中心' })"
menu_logistics:
description: "后勤物资管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "后勤物资管理"
playwright: "page.getByRole('menuitem', { name: '后勤物资管理' })"
menu_statReport:
description: "统计报表"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "统计报表"
playwright: "page.getByRole('menuitem', { name: '统计报表' })"
menu_dataViz:
description: "数据可视化"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "数据可视化"
playwright: "page.getByRole('menuitem', { name: '数据可视化' })"
menu_vendorQuery:
description: "厂商查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "厂商查询"
playwright: "page.getByRole('menuitem', { name: '厂商查询' })"
menu_vendorQual:
description: "供应商资质管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "供应商资质管理"
playwright: "page.getByRole('menuitem', { name: '供应商资质管理' })"
menu_authFirst:
description: "授权变更初审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "授权变更初审"
playwright: "page.getByRole('menuitem', { name: '授权变更初审' })"
menu_certFirst:
description: "注册证变更初审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "注册证变更初审"
playwright: "page.getByRole('menuitem', { name: '注册证变更初审' })"
menu_certFinal:
description: "注册证变更终审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "注册证变更终审"
playwright: "page.getByRole('menuitem', { name: '注册证变更终审' })"
menu_authFinal:
description: "授权变更终审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "授权变更终审"
playwright: "page.getByRole('menuitem', { name: '授权变更终审' })"
menu_certDiff:
description: "注册证差异对比"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "注册证差异对比"
playwright: "page.getByRole('menuitem', { name: '注册证差异对比' })"
menu_evalScheme:
description: "评价方案维护"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "评价方案维护"
playwright: "page.getByRole('menuitem', { name: '评价方案维护' })"
menu_evalIndicator:
description: "评价指标维护"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "评价指标维护"
playwright: "page.getByRole('menuitem', { name: '评价指标维护' })"
menu_vendorHoliday:
description: "供应商节假日管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "供应商节假日管理"
playwright: "page.getByRole('menuitem', { name: '供应商节假日管理' })"
authFirst:
description: "授权变更初审"
element_type: tab
section: "main::main"
strategy: text
value: "授权变更初审"
playwright: "page.getByText('授权变更初审')"
tab_authFirst:
description: "授权变更初审"
element_type: div
section: "main::main"
strategy: id
value: "rc-tabs-0-tab-/basic/mfrs/paltform/mfrsName/authAudit"
playwright: "page.locator('#rc-tabs-0-tab-/basic/mfrs/paltform/mfrsName/authAudit')"
operationDateDateRange:
description: "制单日期"
element_type: datepicker
section: "main::main"
strategy: label_text
value: "制单日期"
playwright: "page.getByText('制单日期', { exact: true })"
dateRange:
description: "开始日期"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_dateValue"
playwright: "page.locator('#table_search_form_dateValue')"
operationDateInput:
description: "结束日期"
element_type: text
section: "main::main"
strategy: placeholder
value: "结束日期"
playwright: "page.getByPlaceholder('结束日期')"
documentNo:
description: "请输入"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_orderNo"
playwright: "page.locator('#table_search_form_orderNo')"
el_e99480e594aee59586Select:
description: "请选择"
element_type: select
section: "main::main"
strategy: label_text
value: "销售商"
playwright: "page.getByText('销售商', { exact: true })"
supplierId:
description: "销售商"
element_type: search
section: "main::main"
strategy: id
value: "table_search_form_provId"
playwright: "page.locator('#table_search_form_provId')"
searchBtn:
description: "查 询"
element_type: button
section: "main::main"
strategy: role
role: button
name: "查 询"
playwright: "page.getByRole('button', { name: '查 询' })"
resetBtn:
description: "重 置"
element_type: button
section: "main::main"
strategy: role
role: button
name: "重 置"
playwright: "page.getByRole('button', { name: '重 置' })"
expandFilterBtn:
description: "展开"
element_type: button
section: "main::main"
strategy: role
role: button
name: "展开"
playwright: "page.getByRole('button', { name: '展开' })"
# Auto-generated from vendor-cert-diff-elements.json
# Source: http://spdtest.cmic.com.cn:8080/spd/basic/mfrs/scjs/yc/certCompare
# Scanned: 2026-10-20T08:43:43.547Z
# Page: 基础设置 > 厂商管理 > 注册证差异对比
page: vendor-cert-diff
module: spd-basic
url: http://spdtest.cmic.com.cn:8080/spd/basic/mfrs/scjs/yc/certCompare
locators:
# --- main::main ---
menu_home:
description: "首页"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "首页"
playwright: "page.getByRole('menuitem', { name: '首页' })"
menu_basicSetting:
description: "基础设置"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "基础设置"
playwright: "page.getByRole('menuitem', { name: '基础设置' })"
menu_purchase:
description: "采购管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "采购管理"
playwright: "page.getByRole('menuitem', { name: '采购管理' })"
menu_opening:
description: "期初管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "期初管理"
playwright: "page.getByRole('menuitem', { name: '期初管理' })"
menu_centerStock:
description: "中心库管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "中心库管理"
playwright: "page.getByRole('menuitem', { name: '中心库管理' })"
menu_deptBusiness:
description: "科室业务管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "科室业务管理"
playwright: "page.getByRole('menuitem', { name: '科室业务管理' })"
menu_finance:
description: "财务管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "财务管理"
playwright: "page.getByRole('menuitem', { name: '财务管理' })"
menu_orthoVolume:
description: "骨科带量"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "骨科带量"
playwright: "page.getByRole('menuitem', { name: '骨科带量' })"
menu_general:
description: "综合管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "综合管理"
playwright: "page.getByRole('menuitem', { name: '综合管理' })"
menu_yangcai:
description: "阳采管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "阳采管理"
playwright: "page.getByRole('menuitem', { name: '阳采管理' })"
menu_processCenter:
description: "流程中心"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "流程中心"
playwright: "page.getByRole('menuitem', { name: '流程中心' })"
menu_logistics:
description: "后勤物资管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "后勤物资管理"
playwright: "page.getByRole('menuitem', { name: '后勤物资管理' })"
menu_statReport:
description: "统计报表"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "统计报表"
playwright: "page.getByRole('menuitem', { name: '统计报表' })"
menu_dataViz:
description: "数据可视化"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "数据可视化"
playwright: "page.getByRole('menuitem', { name: '数据可视化' })"
menu_vendorQuery:
description: "厂商查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "厂商查询"
playwright: "page.getByRole('menuitem', { name: '厂商查询' })"
menu_vendorQual:
description: "供应商资质管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "供应商资质管理"
playwright: "page.getByRole('menuitem', { name: '供应商资质管理' })"
menu_authFirst:
description: "授权变更初审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "授权变更初审"
playwright: "page.getByRole('menuitem', { name: '授权变更初审' })"
menu_certFirst:
description: "注册证变更初审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "注册证变更初审"
playwright: "page.getByRole('menuitem', { name: '注册证变更初审' })"
menu_certFinal:
description: "注册证变更终审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "注册证变更终审"
playwright: "page.getByRole('menuitem', { name: '注册证变更终审' })"
menu_authFinal:
description: "授权变更终审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "授权变更终审"
playwright: "page.getByRole('menuitem', { name: '授权变更终审' })"
menu_certDiff:
description: "注册证差异对比"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "注册证差异对比"
playwright: "page.getByRole('menuitem', { name: '注册证差异对比' })"
menu_evalScheme:
description: "评价方案维护"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "评价方案维护"
playwright: "page.getByRole('menuitem', { name: '评价方案维护' })"
menu_evalIndicator:
description: "评价指标维护"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "评价指标维护"
playwright: "page.getByRole('menuitem', { name: '评价指标维护' })"
menu_vendorHoliday:
description: "供应商节假日管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "供应商节假日管理"
playwright: "page.getByRole('menuitem', { name: '供应商节假日管理' })"
certDiff:
description: "注册证差异对比"
element_type: tab
section: "main::main"
strategy: text
value: "注册证差异对比"
playwright: "page.getByText('注册证差异对比')"
tab_certDiff:
description: "注册证差异对比"
element_type: div
section: "main::main"
strategy: id
value: "rc-tabs-0-tab-/basic/mfrs/scjs/yc/certCompare"
playwright: "page.locator('#rc-tabs-0-tab-/basic/mfrs/scjs/yc/certCompare')"
el_e789a9e69699e5908de7a7b0Input:
description: "请输入"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_goodsName"
playwright: "page.locator('#table_search_form_goodsName')"
specModel:
description: "请输入"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_goodsSpec"
playwright: "page.locator('#table_search_form_goodsSpec')"
statusSelect:
description: "启用"
element_type: select
section: "main::main"
strategy: label_text
value: "状态"
playwright: "page.getByText('状态', { exact: true })"
statusInput:
description: "状态"
element_type: search
section: "main::main"
strategy: id
value: "table_search_form_mgiTbStatus"
playwright: "page.locator('#table_search_form_mgiTbStatus')"
searchBtn:
description: "查询"
element_type: button
section: "main::main"
strategy: role
role: button
name: "查询"
playwright: "page.getByRole('button', { name: '查询' })"
resetBtn:
description: "重置"
element_type: button
section: "main::main"
strategy: role
role: button
name: "重置"
playwright: "page.getByRole('button', { name: '重置' })"
expandFilterBtn:
description: "展开"
element_type: button
section: "main::main"
strategy: role
role: button
name: "展开"
playwright: "page.getByRole('button', { name: '展开' })"
el_e7ab8be58db3e69bb4e696b0Btn:
description: "立即更新"
element_type: button
section: "main::main"
strategy: role
role: button
name: "立即更新"
playwright: "page.getByRole('button', { name: '立即更新' })"
exportBtn:
description: "导出"
element_type: button
section: "main::main"
strategy: role
role: button
name: "导出"
playwright: "page.getByRole('button', { name: '导出' })"
# --- main::pagination ---
pagination_el_e585b137363537e69da13132333435e280a2e280a2e280a23339323030e69da12fe9a1b5e8b7b3e887b3e9a1b5:
description: "共 7657 条12345•••39200 条/页跳至页"
element_type: ul
section: "main::pagination"
strategy: text
value: "共 7657 条12345•••39200 条/页跳至页"
playwright: "page.getByText('共 7657 条12345•••39200 条/页跳至页')"
pagination_prevPageBtn:
description: "上一页"
element_type: li
section: "main::pagination"
strategy: text
value: "上一页"
playwright: "page.getByText('上一页')"
pagination_page_1:
description: "1"
element_type: pagination_item
section: "main::pagination"
strategy: css
value: ".ant-pagination-item-active"
playwright: "page.locator('.ant-pagination-item-active')"
pagination_page_2:
description: "2"
element_type: pagination_item
section: "main::pagination"
strategy: text
value: "2"
playwright: "page.getByText('2')"
pagination_page_3:
description: "3"
element_type: pagination_item
section: "main::pagination"
strategy: text
value: "3"
playwright: "page.getByText('3')"
pagination_page_4:
description: "4"
element_type: pagination_item
section: "main::pagination"
strategy: text
value: "4"
playwright: "page.getByText('4')"
pagination_page_5:
description: "5"
element_type: pagination_item
section: "main::pagination"
strategy: text
value: "5"
playwright: "page.getByText('5')"
pagination_el_e59091e5908e35e9a1b5:
description: "向后 5 页"
element_type: li
section: "main::pagination"
strategy: text
value: "向后 5 页"
playwright: "page.getByText('向后 5 页')"
pagination_page_39:
description: "39"
element_type: pagination_item
section: "main::pagination"
strategy: text
value: "39"
playwright: "page.getByText('39')"
pagination_nextPageBtn:
description: "下一页"
element_type: li
section: "main::pagination"
strategy: text
value: "下一页"
playwright: "page.getByText('下一页')"
pagination_pageSizeSelect:
description: "200 条/页"
element_type: select
section: "main::pagination"
strategy: text
value: "200 条/页"
playwright: "page.getByText('200 条/页')"
# Auto-generated from vendor-cert-final-elements.json
# Source: http://spdtest.cmic.com.cn:8080/spd/basic/mfrs/paltform/mfrsName/regCertAuditFinal
# Scanned: 2026-10-20T08:42:16.674Z
# Page: 基础设置 > 厂商管理 > 注册证变更终审
# Note: filter dropdown was opened during scan
page: vendor-cert-final
module: spd-basic
url: http://spdtest.cmic.com.cn:8080/spd/basic/mfrs/paltform/mfrsName/regCertAuditFinal
locators:
# --- main::main ---
menu_home:
description: "首页"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "首页"
playwright: "page.getByRole('menuitem', { name: '首页' })"
menu_basicSetting:
description: "基础设置"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "基础设置"
playwright: "page.getByRole('menuitem', { name: '基础设置' })"
menu_purchase:
description: "采购管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "采购管理"
playwright: "page.getByRole('menuitem', { name: '采购管理' })"
menu_opening:
description: "期初管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "期初管理"
playwright: "page.getByRole('menuitem', { name: '期初管理' })"
menu_centerStock:
description: "中心库管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "中心库管理"
playwright: "page.getByRole('menuitem', { name: '中心库管理' })"
menu_deptBusiness:
description: "科室业务管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "科室业务管理"
playwright: "page.getByRole('menuitem', { name: '科室业务管理' })"
menu_finance:
description: "财务管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "财务管理"
playwright: "page.getByRole('menuitem', { name: '财务管理' })"
menu_orthoVolume:
description: "骨科带量"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "骨科带量"
playwright: "page.getByRole('menuitem', { name: '骨科带量' })"
menu_general:
description: "综合管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "综合管理"
playwright: "page.getByRole('menuitem', { name: '综合管理' })"
menu_yangcai:
description: "阳采管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "阳采管理"
playwright: "page.getByRole('menuitem', { name: '阳采管理' })"
menu_processCenter:
description: "流程中心"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "流程中心"
playwright: "page.getByRole('menuitem', { name: '流程中心' })"
menu_logistics:
description: "后勤物资管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "后勤物资管理"
playwright: "page.getByRole('menuitem', { name: '后勤物资管理' })"
menu_statReport:
description: "统计报表"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "统计报表"
playwright: "page.getByRole('menuitem', { name: '统计报表' })"
menu_dataViz:
description: "数据可视化"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "数据可视化"
playwright: "page.getByRole('menuitem', { name: '数据可视化' })"
menu_vendorQuery:
description: "厂商查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "厂商查询"
playwright: "page.getByRole('menuitem', { name: '厂商查询' })"
menu_vendorQual:
description: "供应商资质管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "供应商资质管理"
playwright: "page.getByRole('menuitem', { name: '供应商资质管理' })"
menu_authFirst:
description: "授权变更初审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "授权变更初审"
playwright: "page.getByRole('menuitem', { name: '授权变更初审' })"
menu_certFirst:
description: "注册证变更初审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "注册证变更初审"
playwright: "page.getByRole('menuitem', { name: '注册证变更初审' })"
menu_certFinal:
description: "注册证变更终审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "注册证变更终审"
playwright: "page.getByRole('menuitem', { name: '注册证变更终审' })"
menu_authFinal:
description: "授权变更终审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "授权变更终审"
playwright: "page.getByRole('menuitem', { name: '授权变更终审' })"
menu_certDiff:
description: "注册证差异对比"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "注册证差异对比"
playwright: "page.getByRole('menuitem', { name: '注册证差异对比' })"
menu_evalScheme:
description: "评价方案维护"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "评价方案维护"
playwright: "page.getByRole('menuitem', { name: '评价方案维护' })"
menu_evalIndicator:
description: "评价指标维护"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "评价指标维护"
playwright: "page.getByRole('menuitem', { name: '评价指标维护' })"
menu_vendorHoliday:
description: "供应商节假日管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "供应商节假日管理"
playwright: "page.getByRole('menuitem', { name: '供应商节假日管理' })"
certFinal:
description: "注册证变更终审"
element_type: tab
section: "main::main"
strategy: text
value: "注册证变更终审"
playwright: "page.getByText('注册证变更终审')"
tab_certFinal:
description: "注册证变更终审"
element_type: div
section: "main::main"
strategy: id
value: "rc-tabs-0-tab-/basic/mfrs/paltform/mfrsName/regCertAuditFinal"
playwright: "page.locator('#rc-tabs-0-tab-/basic/mfrs/paltform/mfrsName/regCertAuditFinal')"
operationDateDateRange:
description: "制单日期"
element_type: datepicker
section: "main::main"
strategy: label_text
value: "制单日期"
playwright: "page.getByText('制单日期', { exact: true })"
dateRange:
description: "开始日期"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_dateValue"
playwright: "page.locator('#table_search_form_dateValue')"
operationDateInput:
description: "结束日期"
element_type: text
section: "main::main"
strategy: placeholder
value: "结束日期"
playwright: "page.getByPlaceholder('结束日期')"
documentNo:
description: "请输入"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_orderNo"
playwright: "page.locator('#table_search_form_orderNo')"
changeTypeSelect:
description: "请选择"
element_type: select
section: "main::main"
strategy: label_text
value: "变更类型"
playwright: "page.getByText('变更类型', { exact: true })"
changeTypeInput:
description: "变更类型"
element_type: search
section: "main::main"
strategy: id
value: "table_search_form_chgType"
playwright: "page.locator('#table_search_form_chgType')"
searchBtn:
description: "查 询"
element_type: button
section: "main::main"
strategy: role
role: button
name: "查 询"
playwright: "page.getByRole('button', { name: '查 询' })"
resetBtn:
description: "重 置"
element_type: button
section: "main::main"
strategy: role
role: button
name: "重 置"
playwright: "page.getByRole('button', { name: '重 置' })"
expandFilterBtn:
description: "展开"
element_type: button
section: "main::main"
strategy: role
role: button
name: "展开"
playwright: "page.getByRole('button', { name: '展开' })"
# Auto-generated from vendor-cert-first-elements.json
# Source: http://spdtest.cmic.com.cn:8080/spd/basic/mfrs/paltform/mfrsName/regCertAudit
# Scanned: 2026-10-20T08:42:07.556Z
# Page: 基础设置 > 厂商管理 > 注册证变更初审
# Note: filter dropdown was opened during scan
page: vendor-cert-first
module: spd-basic
url: http://spdtest.cmic.com.cn:8080/spd/basic/mfrs/paltform/mfrsName/regCertAudit
locators:
# --- main::main ---
menu_home:
description: "首页"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "首页"
playwright: "page.getByRole('menuitem', { name: '首页' })"
menu_basicSetting:
description: "基础设置"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "基础设置"
playwright: "page.getByRole('menuitem', { name: '基础设置' })"
menu_purchase:
description: "采购管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "采购管理"
playwright: "page.getByRole('menuitem', { name: '采购管理' })"
menu_opening:
description: "期初管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "期初管理"
playwright: "page.getByRole('menuitem', { name: '期初管理' })"
menu_centerStock:
description: "中心库管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "中心库管理"
playwright: "page.getByRole('menuitem', { name: '中心库管理' })"
menu_deptBusiness:
description: "科室业务管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "科室业务管理"
playwright: "page.getByRole('menuitem', { name: '科室业务管理' })"
menu_finance:
description: "财务管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "财务管理"
playwright: "page.getByRole('menuitem', { name: '财务管理' })"
menu_orthoVolume:
description: "骨科带量"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "骨科带量"
playwright: "page.getByRole('menuitem', { name: '骨科带量' })"
menu_general:
description: "综合管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "综合管理"
playwright: "page.getByRole('menuitem', { name: '综合管理' })"
menu_yangcai:
description: "阳采管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "阳采管理"
playwright: "page.getByRole('menuitem', { name: '阳采管理' })"
menu_processCenter:
description: "流程中心"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "流程中心"
playwright: "page.getByRole('menuitem', { name: '流程中心' })"
menu_logistics:
description: "后勤物资管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "后勤物资管理"
playwright: "page.getByRole('menuitem', { name: '后勤物资管理' })"
menu_statReport:
description: "统计报表"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "统计报表"
playwright: "page.getByRole('menuitem', { name: '统计报表' })"
menu_dataViz:
description: "数据可视化"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "数据可视化"
playwright: "page.getByRole('menuitem', { name: '数据可视化' })"
menu_vendorQuery:
description: "厂商查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "厂商查询"
playwright: "page.getByRole('menuitem', { name: '厂商查询' })"
menu_vendorQual:
description: "供应商资质管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "供应商资质管理"
playwright: "page.getByRole('menuitem', { name: '供应商资质管理' })"
menu_authFirst:
description: "授权变更初审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "授权变更初审"
playwright: "page.getByRole('menuitem', { name: '授权变更初审' })"
menu_certFirst:
description: "注册证变更初审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "注册证变更初审"
playwright: "page.getByRole('menuitem', { name: '注册证变更初审' })"
menu_certFinal:
description: "注册证变更终审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "注册证变更终审"
playwright: "page.getByRole('menuitem', { name: '注册证变更终审' })"
menu_authFinal:
description: "授权变更终审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "授权变更终审"
playwright: "page.getByRole('menuitem', { name: '授权变更终审' })"
menu_certDiff:
description: "注册证差异对比"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "注册证差异对比"
playwright: "page.getByRole('menuitem', { name: '注册证差异对比' })"
menu_evalScheme:
description: "评价方案维护"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "评价方案维护"
playwright: "page.getByRole('menuitem', { name: '评价方案维护' })"
menu_evalIndicator:
description: "评价指标维护"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "评价指标维护"
playwright: "page.getByRole('menuitem', { name: '评价指标维护' })"
menu_vendorHoliday:
description: "供应商节假日管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "供应商节假日管理"
playwright: "page.getByRole('menuitem', { name: '供应商节假日管理' })"
certFirst:
description: "注册证变更初审"
element_type: tab
section: "main::main"
strategy: text
value: "注册证变更初审"
playwright: "page.getByText('注册证变更初审')"
tab_certFirst:
description: "注册证变更初审"
element_type: div
section: "main::main"
strategy: id
value: "rc-tabs-0-tab-/basic/mfrs/paltform/mfrsName/regCertAudit"
playwright: "page.locator('#rc-tabs-0-tab-/basic/mfrs/paltform/mfrsName/regCertAudit')"
operationDateDateRange:
description: "制单日期"
element_type: datepicker
section: "main::main"
strategy: label_text
value: "制单日期"
playwright: "page.getByText('制单日期', { exact: true })"
dateRange:
description: "开始日期"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_dateValue"
playwright: "page.locator('#table_search_form_dateValue')"
operationDateInput:
description: "结束日期"
element_type: text
section: "main::main"
strategy: placeholder
value: "结束日期"
playwright: "page.getByPlaceholder('结束日期')"
documentNo:
description: "请输入"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_orderNo"
playwright: "page.locator('#table_search_form_orderNo')"
changeTypeSelect:
description: "请选择"
element_type: select
section: "main::main"
strategy: label_text
value: "变更类型"
playwright: "page.getByText('变更类型', { exact: true })"
changeTypeInput:
description: "变更类型"
element_type: search
section: "main::main"
strategy: id
value: "table_search_form_chgType"
playwright: "page.locator('#table_search_form_chgType')"
searchBtn:
description: "查 询"
element_type: button
section: "main::main"
strategy: role
role: button
name: "查 询"
playwright: "page.getByRole('button', { name: '查 询' })"
resetBtn:
description: "重 置"
element_type: button
section: "main::main"
strategy: role
role: button
name: "重 置"
playwright: "page.getByRole('button', { name: '重 置' })"
expandFilterBtn:
description: "展开"
element_type: button
section: "main::main"
strategy: role
role: button
name: "展开"
playwright: "page.getByRole('button', { name: '展开' })"
# Auto-generated from vendor-eval-indicator-elements.json
# Source: http://spdtest.cmic.com.cn:8080/spd/basic/mfrs/paltform/mfrsName/indicators
# Scanned: 2026-10-20T08:44:01.895Z
# Page: 基础设置 > 厂商管理 > 评价指标维护
# Note: filter dropdown was opened during scan
# Note: dialog/modal was opened during scan
page: vendor-eval-indicator
module: spd-basic
url: http://spdtest.cmic.com.cn:8080/spd/basic/mfrs/paltform/mfrsName/indicators
locators:
# --- main::main ---
menu_home:
description: "首页"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "首页"
playwright: "page.getByRole('menuitem', { name: '首页' })"
menu_basicSetting:
description: "基础设置"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "基础设置"
playwright: "page.getByRole('menuitem', { name: '基础设置' })"
menu_purchase:
description: "采购管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "采购管理"
playwright: "page.getByRole('menuitem', { name: '采购管理' })"
menu_opening:
description: "期初管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "期初管理"
playwright: "page.getByRole('menuitem', { name: '期初管理' })"
menu_centerStock:
description: "中心库管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "中心库管理"
playwright: "page.getByRole('menuitem', { name: '中心库管理' })"
menu_deptBusiness:
description: "科室业务管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "科室业务管理"
playwright: "page.getByRole('menuitem', { name: '科室业务管理' })"
menu_finance:
description: "财务管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "财务管理"
playwright: "page.getByRole('menuitem', { name: '财务管理' })"
menu_orthoVolume:
description: "骨科带量"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "骨科带量"
playwright: "page.getByRole('menuitem', { name: '骨科带量' })"
menu_general:
description: "综合管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "综合管理"
playwright: "page.getByRole('menuitem', { name: '综合管理' })"
menu_yangcai:
description: "阳采管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "阳采管理"
playwright: "page.getByRole('menuitem', { name: '阳采管理' })"
menu_processCenter:
description: "流程中心"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "流程中心"
playwright: "page.getByRole('menuitem', { name: '流程中心' })"
menu_logistics:
description: "后勤物资管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "后勤物资管理"
playwright: "page.getByRole('menuitem', { name: '后勤物资管理' })"
menu_statReport:
description: "统计报表"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "统计报表"
playwright: "page.getByRole('menuitem', { name: '统计报表' })"
menu_dataViz:
description: "数据可视化"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "数据可视化"
playwright: "page.getByRole('menuitem', { name: '数据可视化' })"
menu_vendorQuery:
description: "厂商查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "厂商查询"
playwright: "page.getByRole('menuitem', { name: '厂商查询' })"
menu_vendorQual:
description: "供应商资质管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "供应商资质管理"
playwright: "page.getByRole('menuitem', { name: '供应商资质管理' })"
menu_authFirst:
description: "授权变更初审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "授权变更初审"
playwright: "page.getByRole('menuitem', { name: '授权变更初审' })"
menu_certFirst:
description: "注册证变更初审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "注册证变更初审"
playwright: "page.getByRole('menuitem', { name: '注册证变更初审' })"
menu_certFinal:
description: "注册证变更终审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "注册证变更终审"
playwright: "page.getByRole('menuitem', { name: '注册证变更终审' })"
menu_authFinal:
description: "授权变更终审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "授权变更终审"
playwright: "page.getByRole('menuitem', { name: '授权变更终审' })"
menu_certDiff:
description: "注册证差异对比"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "注册证差异对比"
playwright: "page.getByRole('menuitem', { name: '注册证差异对比' })"
menu_evalScheme:
description: "评价方案维护"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "评价方案维护"
playwright: "page.getByRole('menuitem', { name: '评价方案维护' })"
menu_evalIndicator:
description: "评价指标维护"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "评价指标维护"
playwright: "page.getByRole('menuitem', { name: '评价指标维护' })"
menu_vendorHoliday:
description: "供应商节假日管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "供应商节假日管理"
playwright: "page.getByRole('menuitem', { name: '供应商节假日管理' })"
evalIndicator:
description: "评价指标维护"
element_type: tab
section: "main::main"
strategy: text
value: "评价指标维护"
playwright: "page.getByText('评价指标维护')"
tab_evalIndicator:
description: "评价指标维护"
element_type: div
section: "main::main"
strategy: id
value: "rc-tabs-0-tab-/basic/mfrs/paltform/mfrsName/indicators"
playwright: "page.locator('#rc-tabs-0-tab-/basic/mfrs/paltform/mfrsName/indicators')"
el_e68c87e6a087e58886e7b1bb:
description: "指标分类"
element_type: a
section: "main::main"
strategy: text
value: "指标分类"
playwright: "page.getByText('指标分类')"
addBtn:
description: "新增"
element_type: button
section: "main::main"
strategy: role
role: button
name: "新增"
playwright: "page.getByRole('button', { name: '新增' })"
categoryNameInput:
description: "分类名称"
element_type: text
section: "main::main"
strategy: placeholder
value: "分类名称"
playwright: "page.getByPlaceholder('分类名称')"
tree_node_e68c87e6a087:
description: "指标一级分类"
element_type: tree_title
section: "main::main"
strategy: tree_node
value: "指标一级分类"
tree: ".ant-tree"
playwright: "page.locator('.ant-tree .ant-tree-title').filter({ hasText: /^\\s*指标一级分类\\s*$/ })"
tree_node_313131:
description: "111"
element_type: tree_title
section: "main::main"
strategy: tree_node
value: "111"
tree: ".ant-tree"
playwright: "page.locator('.ant-tree .ant-tree-title').filter({ hasText: /^\\s*111\\s*$/ })"
tree_node_323232:
description: "222"
element_type: tree_title
section: "main::main"
strategy: tree_node
value: "222"
tree: ".ant-tree"
playwright: "page.locator('.ant-tree .ant-tree-title').filter({ hasText: /^\\s*222\\s*$/ })"
tree_node_53e6b58be8af:
description: "S测试"
element_type: tree_title
section: "main::main"
strategy: tree_node
value: "S测试"
tree: ".ant-tree"
playwright: "page.locator('.ant-tree .ant-tree-title').filter({ hasText: /^\\s*S测试\\s*$/ })"
tree_node_e6b58be8af95:
description: "测试指标"
element_type: tree_title
section: "main::main"
strategy: tree_node
value: "测试指标"
tree: ".ant-tree"
playwright: "page.locator('.ant-tree .ant-tree-title').filter({ hasText: /^\\s*测试指标\\s*$/ })"
tree_node_323630363236:
description: "260626回归指标分类"
element_type: tree_title
section: "main::main"
strategy: tree_node
value: "260626回归指标分类"
tree: ".ant-tree"
playwright: "page.locator('.ant-tree .ant-tree-title').filter({ hasText: /^\\s*260626回归指标分类\\s*$/ })"
tree_node_30363137e68c:
description: "0617指标"
element_type: tree_title
section: "main::main"
strategy: tree_node
value: "0617指标"
tree: ".ant-tree"
playwright: "page.locator('.ant-tree .ant-tree-title').filter({ hasText: /^\\s*0617指标\\s*$/ })"
el_e68c87e6a087e7bc96e7a081Input:
description: "请输入指标编码"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_indicatorsCode"
playwright: "page.locator('#table_search_form_indicatorsCode')"
el_e68c87e6a087e5908de7a7b0Input:
description: "请输入指标名称"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_indicatorsName"
playwright: "page.locator('#table_search_form_indicatorsName')"
searchBtn:
description: "查 询"
element_type: button
section: "main::main"
strategy: role
role: button
name: "查 询"
playwright: "page.getByRole('button', { name: '查 询' })"
resetBtn:
description: "重 置"
element_type: button
section: "main::main"
strategy: role
role: button
name: "重 置"
playwright: "page.getByRole('button', { name: '重 置' })"
editBtn:
description: "编辑"
element_type: button
section: "main::main"
strategy: role
role: button
name: "编辑"
playwright: "page.getByRole('button', { name: '编辑' })"
detailBtn:
description: "详情"
element_type: button
section: "main::main"
strategy: role
role: button
name: "详情"
playwright: "page.getByRole('button', { name: '详情' })"
logBtn:
description: "日志"
element_type: button
section: "main::main"
strategy: role
role: button
name: "日志"
playwright: "page.getByRole('button', { name: '日志' })"
# --- main::pagination ---
pagination_indicatorCode:
description: "共 31 条150 条/页"
element_type: ul
section: "main::pagination"
strategy: label_text
value: "指标编号"
playwright: "page.getByText('指标编号', { exact: true })"
pagination_prevPageBtn:
description: "上一页"
element_type: li
section: "main::pagination"
strategy: label_text
value: "指标编号"
playwright: "page.getByText('指标编号', { exact: true })"
pagination_indicatorCodeBtn:
description: "指标编号"
element_type: button
section: "main::pagination"
strategy: label_text
value: "指标编号"
playwright: "page.getByText('指标编号', { exact: true })"
pagination_page_1:
description: "1"
element_type: pagination_item
section: "main::pagination"
strategy: css
value: ".ant-pagination-item-active"
playwright: "page.locator('.ant-pagination-item-active')"
pagination_nextPageBtn:
description: "下一页"
element_type: li
section: "main::pagination"
strategy: label_text
value: "指标编号"
playwright: "page.getByText('指标编号', { exact: true })"
pagination_pageSizeSelect:
description: "50 条/页"
element_type: select
section: "main::pagination"
strategy: label_text
value: "指标编号"
playwright: "page.getByText('指标编号', { exact: true })"
pagination_indicatorCode_2:
description: "共 31 条150 条/页205010020 条/页50 条/页100 条/页200 条/页"
element_type: ul
section: "main::pagination"
strategy: label_text
value: "指标编号"
playwright: "page.getByText('指标编号', { exact: true })"
pagination_pageSizeSelect_2:
description: "50 条/页205010020 条/页50 条/页100 条/页200 条/页"
element_type: select
section: "main::pagination"
strategy: label_text
value: "指标编号"
playwright: "page.getByText('指标编号', { exact: true })"
# --- main::modal:新增 ---
el_e4b88ae7baa7e58886e7b1bbSelect:
description: "请选择"
element_type: select
section: "main::modal:新增"
strategy: label_text
value: "上级分类"
playwright: "page.getByText('上级分类', { exact: true })"
basePkgCategoryName:
description: "分类名称"
element_type: text
section: "main::modal:新增"
strategy: id
value: "form_item_kindName"
playwright: "page.locator('#form_item_kindName')"
enable:
description: "启用"
element_type: radio
section: "main::modal:新增"
strategy: text
value: "启用"
playwright: "page.getByText('启用')"
disable:
description: "停用"
element_type: radio
section: "main::modal:新增"
strategy: text
value: "停用"
playwright: "page.getByText('停用')"
cancelBtn:
description: "取 消"
element_type: button
section: "main::modal:新增"
strategy: role
role: button
name: "取 消"
playwright: "page.getByRole('button', { name: '取 消' })"
confirmBtn:
description: "确 定"
element_type: button
section: "main::modal:新增"
strategy: role
role: button
name: "确 定"
playwright: "page.getByRole('button', { name: '确 定' })"
# Auto-generated from vendor-eval-scheme-elements.json
# Source: http://spdtest.cmic.com.cn:8080/spd/basic/mfrs/paltform/mfrsName/evaluationPlan
# Scanned: 2026-10-20T08:43:52.262Z
# Page: 基础设置 > 厂商管理 > 评价方案维护
# Note: dialog/modal was opened during scan
page: vendor-eval-scheme
module: spd-basic
url: http://spdtest.cmic.com.cn:8080/spd/basic/mfrs/paltform/mfrsName/evaluationPlan
locators:
# --- main::main ---
menu_home:
description: "首页"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "首页"
playwright: "page.getByRole('menuitem', { name: '首页' })"
menu_basicSetting:
description: "基础设置"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "基础设置"
playwright: "page.getByRole('menuitem', { name: '基础设置' })"
menu_purchase:
description: "采购管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "采购管理"
playwright: "page.getByRole('menuitem', { name: '采购管理' })"
menu_opening:
description: "期初管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "期初管理"
playwright: "page.getByRole('menuitem', { name: '期初管理' })"
menu_centerStock:
description: "中心库管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "中心库管理"
playwright: "page.getByRole('menuitem', { name: '中心库管理' })"
menu_deptBusiness:
description: "科室业务管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "科室业务管理"
playwright: "page.getByRole('menuitem', { name: '科室业务管理' })"
menu_finance:
description: "财务管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "财务管理"
playwright: "page.getByRole('menuitem', { name: '财务管理' })"
menu_orthoVolume:
description: "骨科带量"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "骨科带量"
playwright: "page.getByRole('menuitem', { name: '骨科带量' })"
menu_general:
description: "综合管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "综合管理"
playwright: "page.getByRole('menuitem', { name: '综合管理' })"
menu_yangcai:
description: "阳采管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "阳采管理"
playwright: "page.getByRole('menuitem', { name: '阳采管理' })"
menu_processCenter:
description: "流程中心"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "流程中心"
playwright: "page.getByRole('menuitem', { name: '流程中心' })"
menu_logistics:
description: "后勤物资管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "后勤物资管理"
playwright: "page.getByRole('menuitem', { name: '后勤物资管理' })"
menu_statReport:
description: "统计报表"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "统计报表"
playwright: "page.getByRole('menuitem', { name: '统计报表' })"
menu_dataViz:
description: "数据可视化"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "数据可视化"
playwright: "page.getByRole('menuitem', { name: '数据可视化' })"
menu_vendorQuery:
description: "厂商查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "厂商查询"
playwright: "page.getByRole('menuitem', { name: '厂商查询' })"
menu_vendorQual:
description: "供应商资质管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "供应商资质管理"
playwright: "page.getByRole('menuitem', { name: '供应商资质管理' })"
menu_authFirst:
description: "授权变更初审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "授权变更初审"
playwright: "page.getByRole('menuitem', { name: '授权变更初审' })"
menu_certFirst:
description: "注册证变更初审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "注册证变更初审"
playwright: "page.getByRole('menuitem', { name: '注册证变更初审' })"
menu_certFinal:
description: "注册证变更终审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "注册证变更终审"
playwright: "page.getByRole('menuitem', { name: '注册证变更终审' })"
menu_authFinal:
description: "授权变更终审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "授权变更终审"
playwright: "page.getByRole('menuitem', { name: '授权变更终审' })"
menu_certDiff:
description: "注册证差异对比"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "注册证差异对比"
playwright: "page.getByRole('menuitem', { name: '注册证差异对比' })"
menu_evalScheme:
description: "评价方案维护"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "评价方案维护"
playwright: "page.getByRole('menuitem', { name: '评价方案维护' })"
menu_evalIndicator:
description: "评价指标维护"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "评价指标维护"
playwright: "page.getByRole('menuitem', { name: '评价指标维护' })"
menu_vendorHoliday:
description: "供应商节假日管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "供应商节假日管理"
playwright: "page.getByRole('menuitem', { name: '供应商节假日管理' })"
evalScheme:
description: "评价方案维护"
element_type: tab
section: "main::main"
strategy: text
value: "评价方案维护"
playwright: "page.getByText('评价方案维护')"
tab_evalScheme:
description: "评价方案维护"
element_type: div
section: "main::main"
strategy: id
value: "rc-tabs-0-tab-/basic/mfrs/paltform/mfrsName/evaluationPlan"
playwright: "page.locator('#rc-tabs-0-tab-/basic/mfrs/paltform/mfrsName/evaluationPlan')"
el_e5889be5bbbae697a5e69c9fDateRange:
description: "创建日期"
element_type: datepicker
section: "main::main"
strategy: label_text
value: "创建日期"
playwright: "page.getByText('创建日期', { exact: true })"
dateRange:
description: "开始日期"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_dateValue"
playwright: "page.locator('#table_search_form_dateValue')"
el_e5889be5bbbae697a5e69c9fInput:
description: "结束日期"
element_type: text
section: "main::main"
strategy: placeholder
value: "结束日期"
playwright: "page.getByPlaceholder('结束日期')"
el_e590afe794a8e697a5e69c9fDateRange:
description: "启用日期"
element_type: datepicker
section: "main::main"
strategy: label_text
value: "启用日期"
playwright: "page.getByText('启用日期', { exact: true })"
el_e590afe794a8e697a5e69c9fInput:
description: "开始日期"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_startTimeValue"
playwright: "page.locator('#table_search_form_startTimeValue')"
el_e590afe794a8e697a5e69c9fInput_2:
description: "结束日期"
element_type: text
section: "main::main"
strategy: placeholder
value: "结束日期"
playwright: "page.getByPlaceholder('结束日期')"
schemeCodeInput:
description: "请输入方案编码"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_planCode"
playwright: "page.locator('#table_search_form_planCode')"
searchBtn:
description: "查 询"
element_type: button
section: "main::main"
strategy: role
role: button
name: "查 询"
playwright: "page.getByRole('button', { name: '查 询' })"
resetBtn:
description: "重 置"
element_type: button
section: "main::main"
strategy: role
role: button
name: "重 置"
playwright: "page.getByRole('button', { name: '重 置' })"
expandFilterBtn:
description: "展开"
element_type: button
section: "main::main"
strategy: role
role: button
name: "展开"
playwright: "page.getByRole('button', { name: '展开' })"
addBtn:
description: "新 增"
element_type: button
section: "main::main"
strategy: role
role: button
name: "新 增"
playwright: "page.getByRole('button', { name: '新 增' })"
# --- main::modal:新增方案 ---
el_e696b9e6a188e5908de7a7b0Input:
description: "方案名称"
element_type: text
section: "main::modal:新增方案"
strategy: id
value: "form_item_planName"
playwright: "page.locator('#form_item_planName')"
remark:
description: "限255字符"
element_type: textarea
section: "main::modal:新增方案"
strategy: id
value: "form_item_remark"
playwright: "page.locator('#form_item_remark')"
cancelBtn:
description: "取 消"
element_type: button
section: "main::modal:新增方案"
strategy: role
role: button
name: "取 消"
playwright: "page.getByRole('button', { name: '取 消' })"
confirmBtn:
description: "确 定"
element_type: button
section: "main::modal:新增方案"
strategy: role
role: button
name: "确 定"
playwright: "page.getByRole('button', { name: '确 定' })"
# Auto-generated from vendor-holiday-elements.json
# Source: http://spdtest.cmic.com.cn:8080/spd/basic/mfrs/basic/prov/holiday
# Scanned: 2026-10-20T08:44:28.895Z
# Page: 基础设置 > 厂商管理 > 供应商节假日管理
# Note: dialog/modal was opened during scan
# Note: edit dialog was opened during scan
page: vendor-holiday
module: spd-basic
url: http://spdtest.cmic.com.cn:8080/spd/basic/mfrs/basic/prov/holiday
locators:
# --- main::main ---
menu_home:
description: "首页"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "首页"
playwright: "page.getByRole('menuitem', { name: '首页' })"
menu_basicSetting:
description: "基础设置"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "基础设置"
playwright: "page.getByRole('menuitem', { name: '基础设置' })"
menu_purchase:
description: "采购管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "采购管理"
playwright: "page.getByRole('menuitem', { name: '采购管理' })"
menu_opening:
description: "期初管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "期初管理"
playwright: "page.getByRole('menuitem', { name: '期初管理' })"
menu_centerStock:
description: "中心库管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "中心库管理"
playwright: "page.getByRole('menuitem', { name: '中心库管理' })"
menu_deptBusiness:
description: "科室业务管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "科室业务管理"
playwright: "page.getByRole('menuitem', { name: '科室业务管理' })"
menu_finance:
description: "财务管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "财务管理"
playwright: "page.getByRole('menuitem', { name: '财务管理' })"
menu_orthoVolume:
description: "骨科带量"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "骨科带量"
playwright: "page.getByRole('menuitem', { name: '骨科带量' })"
menu_general:
description: "综合管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "综合管理"
playwright: "page.getByRole('menuitem', { name: '综合管理' })"
menu_yangcai:
description: "阳采管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "阳采管理"
playwright: "page.getByRole('menuitem', { name: '阳采管理' })"
menu_processCenter:
description: "流程中心"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "流程中心"
playwright: "page.getByRole('menuitem', { name: '流程中心' })"
menu_logistics:
description: "后勤物资管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "后勤物资管理"
playwright: "page.getByRole('menuitem', { name: '后勤物资管理' })"
menu_statReport:
description: "统计报表"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "统计报表"
playwright: "page.getByRole('menuitem', { name: '统计报表' })"
menu_dataViz:
description: "数据可视化"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "数据可视化"
playwright: "page.getByRole('menuitem', { name: '数据可视化' })"
menu_vendorQuery:
description: "厂商查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "厂商查询"
playwright: "page.getByRole('menuitem', { name: '厂商查询' })"
menu_vendorQual:
description: "供应商资质管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "供应商资质管理"
playwright: "page.getByRole('menuitem', { name: '供应商资质管理' })"
menu_authFirst:
description: "授权变更初审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "授权变更初审"
playwright: "page.getByRole('menuitem', { name: '授权变更初审' })"
menu_certFirst:
description: "注册证变更初审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "注册证变更初审"
playwright: "page.getByRole('menuitem', { name: '注册证变更初审' })"
menu_certFinal:
description: "注册证变更终审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "注册证变更终审"
playwright: "page.getByRole('menuitem', { name: '注册证变更终审' })"
menu_authFinal:
description: "授权变更终审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "授权变更终审"
playwright: "page.getByRole('menuitem', { name: '授权变更终审' })"
menu_certDiff:
description: "注册证差异对比"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "注册证差异对比"
playwright: "page.getByRole('menuitem', { name: '注册证差异对比' })"
menu_evalScheme:
description: "评价方案维护"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "评价方案维护"
playwright: "page.getByRole('menuitem', { name: '评价方案维护' })"
menu_evalIndicator:
description: "评价指标维护"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "评价指标维护"
playwright: "page.getByRole('menuitem', { name: '评价指标维护' })"
menu_vendorHoliday:
description: "供应商节假日管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "供应商节假日管理"
playwright: "page.getByRole('menuitem', { name: '供应商节假日管理' })"
vendorHoliday:
description: "供应商节假日管理"
element_type: tab
section: "main::main"
strategy: text
value: "供应商节假日管理"
playwright: "page.getByText('供应商节假日管理')"
tab_vendorHoliday:
description: "供应商节假日管理"
element_type: div
section: "main::main"
strategy: id
value: "rc-tabs-0-tab-/basic/mfrs/basic/prov/holiday"
playwright: "page.locator('#rc-tabs-0-tab-/basic/mfrs/basic/prov/holiday')"
addBtn:
description: "新 增"
element_type: button
section: "main::main"
strategy: role
role: button
name: "新 增"
playwright: "page.getByRole('button', { name: '新 增' })"
nameOrYearInput:
description: "请输入名称/年度"
element_type: text
section: "main::main"
strategy: placeholder
value: "请输入名称/年度"
playwright: "page.getByPlaceholder('请输入名称/年度')"
editBtn:
description: "编辑"
element_type: button
section: "main::main"
strategy: role
role: button
name: "编辑"
playwright: "page.getByRole('button', { name: '编辑' })"
el_e689b9e9878fe588a0e999a4Btn:
description: "批量删除"
element_type: button
section: "main::main"
strategy: role
role: button
name: "批量删除"
playwright: "page.getByRole('button', { name: '批量删除' })"
# --- main::pagination ---
pagination_add:
description: "共 16 条150 条/页"
element_type: ul
section: "main::pagination"
strategy: label_text
value: "新 增"
playwright: "page.getByText('新 增', { exact: true })"
pagination_prevPageBtn:
description: "上一页"
element_type: li
section: "main::pagination"
strategy: label_text
value: "新 增"
playwright: "page.getByText('新 增', { exact: true })"
pagination_addBtn:
description: "新 增"
element_type: button
section: "main::pagination"
strategy: label_text
value: "新 增"
playwright: "page.getByText('新 增', { exact: true })"
pagination_page_1:
description: "1"
element_type: pagination_item
section: "main::pagination"
strategy: css
value: ".ant-pagination-item-active"
playwright: "page.locator('.ant-pagination-item-active')"
pagination_nextPageBtn:
description: "下一页"
element_type: li
section: "main::pagination"
strategy: label_text
value: "新 增"
playwright: "page.getByText('新 增', { exact: true })"
pagination_pageSizeSelect:
description: "50 条/页"
element_type: select
section: "main::pagination"
strategy: label_text
value: "新 增"
playwright: "page.getByText('新 增', { exact: true })"
# --- main::modal:新增 ---
el_e5908de7a7b0Input:
description: "请输入"
element_type: text
section: "main::modal:新增"
strategy: id
value: "form_item_cname"
playwright: "page.locator('#form_item_cname')"
yearDateRange:
description: "年度"
element_type: datepicker
section: "main::modal:新增"
strategy: label_text
value: "年度"
playwright: "page.getByText('年度', { exact: true })"
yearInput:
description: "2026"
element_type: text
section: "main::modal:新增"
strategy: id
value: "form_item_yearly"
playwright: "page.locator('#form_item_yearly')"
el_e8b5b7e6ada2e697a5e69c9fDateRange:
description: "起止日期"
element_type: datepicker
section: "main::modal:新增"
strategy: label_text
value: "起止日期"
playwright: "page.getByText('起止日期', { exact: true })"
el_e8b5b7e6ada2e697a5e69c9fInput:
description: "开始日期"
element_type: text
section: "main::modal:新增"
strategy: id
value: "form_item_holidayDate"
playwright: "page.locator('#form_item_holidayDate')"
el_e8b5b7e6ada2e697a5e69c9fInput_2:
description: "结束日期"
element_type: text
section: "main::modal:新增"
strategy: placeholder
value: "结束日期"
playwright: "page.getByPlaceholder('结束日期')"
remark:
description: "请输入"
element_type: textarea
section: "main::modal:新增"
strategy: id
value: "form_item_remark"
playwright: "page.locator('#form_item_remark')"
cancelBtn:
description: "取 消"
element_type: button
section: "main::modal:新增"
strategy: role
role: button
name: "取 消"
playwright: "page.getByRole('button', { name: '取 消' })"
confirmBtn:
description: "确 认"
element_type: button
section: "main::modal:新增"
strategy: role
role: button
name: "确 认"
playwright: "page.getByRole('button', { name: '确 认' })"
# --- main::modal:编辑 ---
el_e5908de7a7b0Input_2:
description: "请输入"
element_type: text
section: "main::modal:编辑"
strategy: id
value: "form_item_cname"
playwright: "page.locator('#form_item_cname')"
el_e5908de7a7b0:
description: "close-circle"
element_type: span
section: "main::modal:编辑"
strategy: label
value: "close-circle"
playwright: "page.getByLabel('close-circle')"
yearDateRange_2:
description: "年度"
element_type: datepicker
section: "main::modal:编辑"
strategy: label_text
value: "年度"
playwright: "page.getByText('年度', { exact: true })"
yearInput_2:
description: "2026"
element_type: text
section: "main::modal:编辑"
strategy: id
value: "form_item_yearly"
playwright: "page.locator('#form_item_yearly')"
el_e8b5b7e6ada2e697a5e69c9fDateRange_2:
description: "起止日期"
element_type: datepicker
section: "main::modal:编辑"
strategy: label_text
value: "起止日期"
playwright: "page.getByText('起止日期', { exact: true })"
el_e8b5b7e6ada2e697a5e69c9fInput_3:
description: "开始日期"
element_type: text
section: "main::modal:编辑"
strategy: id
value: "form_item_holidayDate"
playwright: "page.locator('#form_item_holidayDate')"
el_e8b5b7e6ada2e697a5e69c9fInput_4:
description: "结束日期"
element_type: text
section: "main::modal:编辑"
strategy: placeholder
value: "结束日期"
playwright: "page.getByPlaceholder('结束日期')"
remark_2:
description: "请输入"
element_type: textarea
section: "main::modal:编辑"
strategy: id
value: "form_item_remark"
playwright: "page.locator('#form_item_remark')"
# Auto-generated from vendor-qual-elements.json
# Source: http://spdtest.cmic.com.cn:8080/spd/basic/mfrs/basic/qcManage
# Scanned: 2026-10-20T08:41:30.230Z
# Page: 基础设置 > 厂商管理 > 供应商资质管理
# Note: filter dropdown was opened during scan
page: vendor-qual
module: spd-basic
url: http://spdtest.cmic.com.cn:8080/spd/basic/mfrs/basic/qcManage
locators:
# --- main::main ---
menu_home:
description: "首页"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "首页"
playwright: "page.getByRole('menuitem', { name: '首页' })"
menu_basicSetting:
description: "基础设置"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "基础设置"
playwright: "page.getByRole('menuitem', { name: '基础设置' })"
menu_purchase:
description: "采购管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "采购管理"
playwright: "page.getByRole('menuitem', { name: '采购管理' })"
menu_opening:
description: "期初管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "期初管理"
playwright: "page.getByRole('menuitem', { name: '期初管理' })"
menu_centerStock:
description: "中心库管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "中心库管理"
playwright: "page.getByRole('menuitem', { name: '中心库管理' })"
menu_deptBusiness:
description: "科室业务管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "科室业务管理"
playwright: "page.getByRole('menuitem', { name: '科室业务管理' })"
menu_finance:
description: "财务管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "财务管理"
playwright: "page.getByRole('menuitem', { name: '财务管理' })"
menu_orthoVolume:
description: "骨科带量"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "骨科带量"
playwright: "page.getByRole('menuitem', { name: '骨科带量' })"
menu_general:
description: "综合管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "综合管理"
playwright: "page.getByRole('menuitem', { name: '综合管理' })"
menu_yangcai:
description: "阳采管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "阳采管理"
playwright: "page.getByRole('menuitem', { name: '阳采管理' })"
menu_processCenter:
description: "流程中心"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "流程中心"
playwright: "page.getByRole('menuitem', { name: '流程中心' })"
menu_logistics:
description: "后勤物资管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "后勤物资管理"
playwright: "page.getByRole('menuitem', { name: '后勤物资管理' })"
menu_statReport:
description: "统计报表"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "统计报表"
playwright: "page.getByRole('menuitem', { name: '统计报表' })"
menu_dataViz:
description: "数据可视化"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "数据可视化"
playwright: "page.getByRole('menuitem', { name: '数据可视化' })"
menu_vendorQuery:
description: "厂商查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "厂商查询"
playwright: "page.getByRole('menuitem', { name: '厂商查询' })"
menu_vendorQual:
description: "供应商资质管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "供应商资质管理"
playwright: "page.getByRole('menuitem', { name: '供应商资质管理' })"
menu_authFirst:
description: "授权变更初审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "授权变更初审"
playwright: "page.getByRole('menuitem', { name: '授权变更初审' })"
menu_certFirst:
description: "注册证变更初审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "注册证变更初审"
playwright: "page.getByRole('menuitem', { name: '注册证变更初审' })"
menu_certFinal:
description: "注册证变更终审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "注册证变更终审"
playwright: "page.getByRole('menuitem', { name: '注册证变更终审' })"
menu_authFinal:
description: "授权变更终审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "授权变更终审"
playwright: "page.getByRole('menuitem', { name: '授权变更终审' })"
menu_certDiff:
description: "注册证差异对比"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "注册证差异对比"
playwright: "page.getByRole('menuitem', { name: '注册证差异对比' })"
menu_evalScheme:
description: "评价方案维护"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "评价方案维护"
playwright: "page.getByRole('menuitem', { name: '评价方案维护' })"
menu_evalIndicator:
description: "评价指标维护"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "评价指标维护"
playwright: "page.getByRole('menuitem', { name: '评价指标维护' })"
menu_vendorHoliday:
description: "供应商节假日管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "供应商节假日管理"
playwright: "page.getByRole('menuitem', { name: '供应商节假日管理' })"
vendorQual:
description: "供应商资质管理"
element_type: tab
section: "main::main"
strategy: text
value: "供应商资质管理"
playwright: "page.getByText('供应商资质管理')"
tab_vendorQual:
description: "供应商资质管理"
element_type: div
section: "main::main"
strategy: id
value: "rc-tabs-0-tab-/basic/mfrs/basic/qcManage"
playwright: "page.locator('#rc-tabs-0-tab-/basic/mfrs/basic/qcManage')"
supplierName:
description: "请输入"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_provName"
playwright: "page.locator('#table_search_form_provName')"
el_e8af81e4bbb6e7b1bbe59e8bSelect:
description: "请选择"
element_type: select
section: "main::main"
strategy: label_text
value: "证件类型"
playwright: "page.getByText('证件类型', { exact: true })"
el_e8af81e4bbb6e7b1bbe59e8bInput:
description: "证件类型"
element_type: search
section: "main::main"
strategy: id
value: "table_search_form_certType"
playwright: "page.locator('#table_search_form_certType')"
searchBtn:
description: "查 询"
element_type: button
section: "main::main"
strategy: role
role: button
name: "查 询"
playwright: "page.getByRole('button', { name: '查 询' })"
resetBtn:
description: "重 置"
element_type: button
section: "main::main"
strategy: role
role: button
name: "重 置"
playwright: "page.getByRole('button', { name: '重 置' })"
exportBtn:
description: "导 出"
element_type: button
section: "main::main"
strategy: role
role: button
name: "导 出"
playwright: "page.getByRole('button', { name: '导 出' })"
viewDetailBtn:
description: "查看"
element_type: button
section: "main::main"
strategy: role
role: button
name: "查看"
playwright: "page.getByRole('button', { name: '查看' })"
# --- main::pagination ---
pagination_action:
description: "共 30 条150 条/页"
element_type: ul
section: "main::pagination"
strategy: label_text
value: "操作"
playwright: "page.getByText('操作', { exact: true })"
pagination_prevPageBtn:
description: "上一页"
element_type: li
section: "main::pagination"
strategy: label_text
value: "操作"
playwright: "page.getByText('操作', { exact: true })"
pagination_actionBtn:
description: "操作"
element_type: button
section: "main::pagination"
strategy: label_text
value: "操作"
playwright: "page.getByText('操作', { exact: true })"
pagination_page_1:
description: "1"
element_type: pagination_item
section: "main::pagination"
strategy: css
value: ".ant-pagination-item-active"
playwright: "page.locator('.ant-pagination-item-active')"
pagination_nextPageBtn:
description: "下一页"
element_type: li
section: "main::pagination"
strategy: label_text
value: "操作"
playwright: "page.getByText('操作', { exact: true })"
pagination_pageSizeSelect:
description: "50 条/页"
element_type: select
section: "main::pagination"
strategy: label_text
value: "操作"
playwright: "page.getByText('操作', { exact: true })"
# --- main::modal:承诺书 ---
cancelBtn:
description: "取 消"
element_type: button
section: "main::modal:承诺书"
strategy: role
role: button
name: "取 消"
playwright: "page.getByRole('button', { name: '取 消' })"
# Auto-generated from vendor-query-elements.json
# Source: http://spdtest.cmic.com.cn:8080/spd/basic/mfrs/paltform/mfrsName/factory
# Scanned: 2026-10-20T08:41:21.432Z
# Page: 基础设置 > 厂商管理 > 厂商查询
page: vendor-query
module: spd-basic
url: http://spdtest.cmic.com.cn:8080/spd/basic/mfrs/paltform/mfrsName/factory
locators:
# --- main::main ---
menu_home:
description: "首页"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "首页"
playwright: "page.getByRole('menuitem', { name: '首页' })"
menu_basicSetting:
description: "基础设置"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "基础设置"
playwright: "page.getByRole('menuitem', { name: '基础设置' })"
menu_purchase:
description: "采购管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "采购管理"
playwright: "page.getByRole('menuitem', { name: '采购管理' })"
menu_opening:
description: "期初管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "期初管理"
playwright: "page.getByRole('menuitem', { name: '期初管理' })"
menu_centerStock:
description: "中心库管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "中心库管理"
playwright: "page.getByRole('menuitem', { name: '中心库管理' })"
menu_deptBusiness:
description: "科室业务管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "科室业务管理"
playwright: "page.getByRole('menuitem', { name: '科室业务管理' })"
menu_finance:
description: "财务管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "财务管理"
playwright: "page.getByRole('menuitem', { name: '财务管理' })"
menu_orthoVolume:
description: "骨科带量"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "骨科带量"
playwright: "page.getByRole('menuitem', { name: '骨科带量' })"
menu_general:
description: "综合管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "综合管理"
playwright: "page.getByRole('menuitem', { name: '综合管理' })"
menu_yangcai:
description: "阳采管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "阳采管理"
playwright: "page.getByRole('menuitem', { name: '阳采管理' })"
menu_processCenter:
description: "流程中心"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "流程中心"
playwright: "page.getByRole('menuitem', { name: '流程中心' })"
menu_logistics:
description: "后勤物资管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "后勤物资管理"
playwright: "page.getByRole('menuitem', { name: '后勤物资管理' })"
menu_statReport:
description: "统计报表"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "统计报表"
playwright: "page.getByRole('menuitem', { name: '统计报表' })"
menu_dataViz:
description: "数据可视化"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "数据可视化"
playwright: "page.getByRole('menuitem', { name: '数据可视化' })"
menu_vendorQuery:
description: "厂商查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "厂商查询"
playwright: "page.getByRole('menuitem', { name: '厂商查询' })"
menu_vendorQual:
description: "供应商资质管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "供应商资质管理"
playwright: "page.getByRole('menuitem', { name: '供应商资质管理' })"
menu_authFirst:
description: "授权变更初审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "授权变更初审"
playwright: "page.getByRole('menuitem', { name: '授权变更初审' })"
menu_certFirst:
description: "注册证变更初审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "注册证变更初审"
playwright: "page.getByRole('menuitem', { name: '注册证变更初审' })"
menu_certFinal:
description: "注册证变更终审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "注册证变更终审"
playwright: "page.getByRole('menuitem', { name: '注册证变更终审' })"
menu_authFinal:
description: "授权变更终审"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "授权变更终审"
playwright: "page.getByRole('menuitem', { name: '授权变更终审' })"
menu_certDiff:
description: "注册证差异对比"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "注册证差异对比"
playwright: "page.getByRole('menuitem', { name: '注册证差异对比' })"
menu_evalScheme:
description: "评价方案维护"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "评价方案维护"
playwright: "page.getByRole('menuitem', { name: '评价方案维护' })"
menu_evalIndicator:
description: "评价指标维护"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "评价指标维护"
playwright: "page.getByRole('menuitem', { name: '评价指标维护' })"
menu_vendorHoliday:
description: "供应商节假日管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "供应商节假日管理"
playwright: "page.getByRole('menuitem', { name: '供应商节假日管理' })"
vendorQuery:
description: "厂商查询"
element_type: tab
section: "main::main"
strategy: text
value: "厂商查询"
playwright: "page.getByText('厂商查询')"
tab_vendorQuery:
description: "厂商查询"
element_type: div
section: "main::main"
strategy: id
value: "rc-tabs-0-tab-/basic/mfrs/paltform/mfrsName/factory"
playwright: "page.locator('#rc-tabs-0-tab-/basic/mfrs/paltform/mfrsName/factory')"
mfrsNameInput:
description: "厂商名称"
element_type: text
section: "main::main"
strategy: placeholder
value: "厂商名称"
playwright: "page.getByPlaceholder('厂商名称')"
tableDensity:
description: "column-height"
element_type: span
section: "main::main"
strategy: label
value: "column-height"
playwright: "page.getByLabel('column-height')"
# --- main::pagination ---
pagination_el_e585b1343430e69da13132333435e280a2e280a2e280a2393530e69da12fe9a1b5e8b7b3e887b3e9a1b5:
description: "共 440 条12345•••950 条/页跳至页"
element_type: ul
section: "main::pagination"
strategy: text
value: "共 440 条12345•••950 条/页跳至页"
playwright: "page.getByText('共 440 条12345•••950 条/页跳至页')"
pagination_prevPageBtn:
description: "上一页"
element_type: li
section: "main::pagination"
strategy: text
value: "上一页"
playwright: "page.getByText('上一页')"
pagination_page_1:
description: "1"
element_type: pagination_item
section: "main::pagination"
strategy: css
value: ".ant-pagination-item-active"
playwright: "page.locator('.ant-pagination-item-active')"
pagination_page_2:
description: "2"
element_type: pagination_item
section: "main::pagination"
strategy: text
value: "2"
playwright: "page.getByText('2')"
pagination_page_3:
description: "3"
element_type: pagination_item
section: "main::pagination"
strategy: text
value: "3"
playwright: "page.getByText('3')"
pagination_page_4:
description: "4"
element_type: pagination_item
section: "main::pagination"
strategy: text
value: "4"
playwright: "page.getByText('4')"
pagination_page_5:
description: "5"
element_type: pagination_item
section: "main::pagination"
strategy: text
value: "5"
playwright: "page.getByText('5')"
pagination_el_e59091e5908e35e9a1b5:
description: "向后 5 页"
element_type: li
section: "main::pagination"
strategy: text
value: "向后 5 页"
playwright: "page.getByText('向后 5 页')"
pagination_page_9:
description: "9"
element_type: pagination_item
section: "main::pagination"
strategy: text
value: "9"
playwright: "page.getByText('9')"
pagination_nextPageBtn:
description: "下一页"
element_type: li
section: "main::pagination"
strategy: text
value: "下一页"
playwright: "page.getByText('下一页')"
pagination_pageSizeSelect:
description: "50 条/页"
element_type: select
section: "main::pagination"
strategy: text
value: "50 条/页"
playwright: "page.getByText('50 条/页')"
import type { Locator, Page } from '@playwright/test';
/** 基础设置 · 厂商管理。叶子菜单是 .ant-menu-item,不是 role=menuitem。 */
export class VendorSharedLocators {
readonly menuBasic: Locator;
readonly vendorSubmenuTitle: Locator;
readonly tableHeader: Locator;
readonly empty: Locator;
readonly paginationTotal: Locator;
readonly nextPage: Locator;
readonly prevPage: Locator;
readonly formError: Locator;
constructor(protected readonly page: Page) {
this.menuBasic = page.getByRole('menuitem', { name: '基础设置' });
this.vendorSubmenuTitle = page.locator('.ant-menu-submenu-title').filter({ hasText: /^厂商管理$/ });
this.tableHeader = page.locator('.ant-table-thead th');
this.empty = page.locator('.ant-empty, .ant-empty-description').first();
this.paginationTotal = page.locator('.ant-pagination-total-text').first();
this.nextPage = page.locator('.ant-pagination-next').first();
this.prevPage = page.locator('.ant-pagination-prev').first();
this.formError = page.locator('.ant-form-item-explain-error, .ant-message-notice, .ant-notification-notice');
}
menuLeaf(name: string): Locator {
return this.page.locator('.ant-menu-item').filter({ hasText: new RegExp(`^\\s*${name}\\s*$`) }).first();
}
button(name: string, root: Locator | Page = this.page): Locator {
const compact = name.replace(/\s/g, '');
const pattern = new RegExp(compact.split('').join('\\s*'));
return root.getByRole('button', { name: pattern });
}
tab(name: string): Locator {
return this.page.locator('.ant-tabs-tab').filter({ hasText: new RegExp(name) }).first();
}
putPage(): Locator {
return this.page.locator('.put-page').last();
}
dialog(): Locator {
return this.page.locator('.ant-modal-wrap .ant-modal, .ant-drawer-open').last();
}
}
import type { Locator, Page } from '@playwright/test';
import { WhFlowSharedLocators } from './wh-flow-shared.locator';
/** 探针绑定。选择器来自 locators/spd/warehouse-probe.locator.yaml */
export class WarehouseProbeLocators extends WhFlowSharedLocators {
readonly queryBtn: Locator;
readonly resetBtn: Locator;
readonly bindBtn: Locator;
readonly modalCancel: Locator;
constructor(page: Page) {
super(page);
this.queryBtn = page.getByRole('button', { name: /查\s*询/ });
this.resetBtn = page.getByRole('button', { name: /重\s*置/ });
this.bindBtn = page.getByRole('button', { name: '绑定货位' });
this.modalCancel = page.getByRole('button', { name: /取\s*消/ });
}
probeIdInput(): Locator {
return this.page.locator('.ant-form-item').filter({ hasText: '探针ID' }).locator('input').first();
}
hostCodeInput(): Locator {
return this.page.locator('.ant-form-item').filter({ hasText: '主机编码' }).locator('input').first();
}
bindSelect(): Locator {
return this.page.locator('.ant-form-item').filter({ hasText: '是否绑定货位' }).locator('.ant-select').first();
}
bindModal(): Locator {
return this.page.locator('.ant-modal:visible').filter({ hasText: /货位绑定探针/ }).first();
}
confirmCountBtn(root?: Locator): Locator {
const scope = root ?? this.page;
return scope.getByRole('button', { name: /确\s*定/ }).first();
}
}
# Auto-generated from warehouse-probe-elements.json
# Source: http://spdtest.cmic.com.cn:8080/spd/basic/storehouse/storehouse/probe
# Scanned: 2026-10-20T09:05:17.123Z
# Page: 基础设置 > 库房管理 > 探针绑定
# Note: filter dropdown was opened during scan
page: warehouse-probe
module: spd-basic
url: http://spdtest.cmic.com.cn:8080/spd/basic/storehouse/storehouse/probe
locators:
# --- main::main ---
menu_home:
description: "首页"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "首页"
playwright: "page.getByRole('menuitem', { name: '首页' })"
menu_basicSetting:
description: "基础设置"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "基础设置"
playwright: "page.getByRole('menuitem', { name: '基础设置' })"
menu_purchase:
description: "采购管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "采购管理"
playwright: "page.getByRole('menuitem', { name: '采购管理' })"
menu_opening:
description: "期初管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "期初管理"
playwright: "page.getByRole('menuitem', { name: '期初管理' })"
menu_centerStock:
description: "中心库管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "中心库管理"
playwright: "page.getByRole('menuitem', { name: '中心库管理' })"
menu_deptBusiness:
description: "科室业务管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "科室业务管理"
playwright: "page.getByRole('menuitem', { name: '科室业务管理' })"
menu_finance:
description: "财务管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "财务管理"
playwright: "page.getByRole('menuitem', { name: '财务管理' })"
menu_orthoVolume:
description: "骨科带量"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "骨科带量"
playwright: "page.getByRole('menuitem', { name: '骨科带量' })"
menu_general:
description: "综合管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "综合管理"
playwright: "page.getByRole('menuitem', { name: '综合管理' })"
menu_yangcai:
description: "阳采管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "阳采管理"
playwright: "page.getByRole('menuitem', { name: '阳采管理' })"
menu_processCenter:
description: "流程中心"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "流程中心"
playwright: "page.getByRole('menuitem', { name: '流程中心' })"
menu_logistics:
description: "后勤物资管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "后勤物资管理"
playwright: "page.getByRole('menuitem', { name: '后勤物资管理' })"
menu_statReport:
description: "统计报表"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "统计报表"
playwright: "page.getByRole('menuitem', { name: '统计报表' })"
menu_dataViz:
description: "数据可视化"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "数据可视化"
playwright: "page.getByRole('menuitem', { name: '数据可视化' })"
menu_el_e5ba93e58cbae8aebee7bdae:
description: "库区设置"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "库区设置"
playwright: "page.getByRole('menuitem', { name: '库区设置' })"
menu_el_e68ea2e99288e7bb91e5ae9a:
description: "探针绑定"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "探针绑定"
playwright: "page.getByRole('menuitem', { name: '探针绑定' })"
menu_el_e58d8ee6b885e9809ae98193:
description: "华清通道"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "华清通道"
playwright: "page.getByRole('menuitem', { name: '华清通道' })"
el_e68ea2e99288e7bb91e5ae9a:
description: "探针绑定"
element_type: tab
section: "main::main"
strategy: text
value: "探针绑定"
playwright: "page.getByText('探针绑定')"
tab_el_e68ea2e99288e7bb91e5ae9a:
description: "探针绑定"
element_type: div
section: "main::main"
strategy: id
value: "rc-tabs-0-tab-/basic/storehouse/storehouse/probe"
playwright: "page.locator('#rc-tabs-0-tab-/basic/storehouse/storehouse/probe')"
el_e68ea2e992884944Input:
description: "请输入"
element_type: text
section: "main::main"
strategy: id
value: "form_item_cname"
playwright: "page.locator('#form_item_cname')"
el_e68ea2e992884944Input_2:
description: "请输入"
element_type: text
section: "main::main"
strategy: id
value: "form_item_cname"
playwright: "page.locator('#form_item_cname')"
el_e698afe590a6e7bb91e5ae9ae8b4a7e4bd8dSelect:
description: "请选择"
element_type: select
section: "main::main"
strategy: label_text
value: "是否绑定货位"
playwright: "page.getByText('是否绑定货位', { exact: true })"
searchBtn:
description: "查 询"
element_type: button
section: "main::main"
strategy: role
role: button
name: "查 询"
playwright: "page.getByRole('button', { name: '查 询' })"
resetBtn:
description: "重 置"
element_type: button
section: "main::main"
strategy: role
role: button
name: "重 置"
playwright: "page.getByRole('button', { name: '重 置' })"
tableDensity:
description: "column-height"
element_type: span
section: "main::main"
strategy: label
value: "column-height"
playwright: "page.getByLabel('column-height')"
8Btn:
description: "28"
element_type: button
section: "main::main"
strategy: role
role: button
name: "28"
playwright: "page.getByRole('button', { name: '28' })"
el_e7bb91e5ae9ae8b4a7e4bd8dBtn:
description: "绑定货位"
element_type: button
section: "main::main"
strategy: role
role: button
name: "绑定货位"
playwright: "page.getByRole('button', { name: '绑定货位' })"
Btn:
description: "3"
element_type: button
section: "main::main"
strategy: role
role: button
name: "3"
playwright: "page.getByRole('button', { name: '3' })"
# --- main::pagination ---
pagination_el_e585b13131e69da1313530e69da12fe9a1b5:
description: "共 11 条150 条/页"
element_type: ul
section: "main::pagination"
strategy: text
value: "共 11 条150 条/页"
playwright: "page.getByText('共 11 条150 条/页')"
pagination_prevPageBtn:
description: "上一页"
element_type: li
section: "main::pagination"
strategy: text
value: "上一页"
playwright: "page.getByText('上一页')"
pagination_page_1:
description: "1"
element_type: pagination_item
section: "main::pagination"
strategy: css
value: ".ant-pagination-item-active"
playwright: "page.locator('.ant-pagination-item-active')"
pagination_nextPageBtn:
description: "下一页"
element_type: li
section: "main::pagination"
strategy: text
value: "下一页"
playwright: "page.getByText('下一页')"
pagination_pageSizeSelect:
description: "50 条/页"
element_type: select
section: "main::pagination"
strategy: text
value: "50 条/页"
playwright: "page.getByText('50 条/页')"
# --- main::modal:货位绑定探针 ---
el_e5bd93e5898de5ba93e688bfSelect:
description: "千泉山院区中心库房"
element_type: select
section: "main::modal:货位绑定探针"
strategy: label_text
value: "当前库房"
playwright: "page.getByText('当前库房', { exact: true })"
el_e5bd93e5898de5ba93e688bfInput:
description: "当前库房"
element_type: search
section: "main::modal:货位绑定探针"
strategy: id
value: "form_item_deptId"
playwright: "page.locator('#form_item_deptId')"
el_e5bd93e5898de5ba93e58cbaSelect:
description: "当前库区"
element_type: select
section: "main::modal:货位绑定探针"
strategy: label_text
value: "当前库区"
playwright: "page.getByText('当前库区', { exact: true })"
el_e5bd93e5898de5ba93e58cbaInput:
description: "当前库区"
element_type: search
section: "main::modal:货位绑定探针"
strategy: id
value: "form_item_areaCode"
playwright: "page.locator('#form_item_areaCode')"
el_e8b4a7e4bd8de69fa5e8afa2Input:
description: "请输入"
element_type: text
section: "main::modal:货位绑定探针"
strategy: id
value: "form_item_shelfNo"
playwright: "page.locator('#form_item_shelfNo')"
el_e8b4a7e4bd8de78ab6e68081Select:
description: "货位状态"
element_type: select
section: "main::modal:货位绑定探针"
strategy: label_text
value: "货位状态"
playwright: "page.getByText('货位状态', { exact: true })"
el_e9bb98e8aea4e8b4a7e4bd8dSelect:
description: "默认货位"
element_type: select
section: "main::modal:货位绑定探针"
strategy: label_text
value: "默认货位"
playwright: "page.getByText('默认货位', { exact: true })"
el_e585b132363236e69da13132333435e280a2e280a2e280a235333530e69da12fe9a1b5e8b7b3e887b3e9a1b5:
description: "共 2626 条12345•••5350 条/页跳至页"
element_type: ul
section: "main::modal:货位绑定探针"
strategy: text
value: "共 2626 条12345•••5350 条/页跳至页"
playwright: "page.getByText('共 2626 条12345•••5350 条/页跳至页')"
prevPageBtn:
description: "上一页"
element_type: li
section: "main::modal:货位绑定探针"
strategy: text
value: "上一页"
playwright: "page.getByText('上一页')"
page_1:
description: "1"
element_type: pagination_item
section: "main::modal:货位绑定探针"
strategy: css
value: ".ant-pagination-item-active"
playwright: "page.locator('.ant-pagination-item-active')"
page_2:
description: "2"
element_type: pagination_item
section: "main::modal:货位绑定探针"
strategy: text
value: "2"
playwright: "page.getByText('2')"
page_3:
description: "3"
element_type: pagination_item
section: "main::modal:货位绑定探针"
strategy: text
value: "3"
playwright: "page.getByText('3')"
page_4:
description: "4"
element_type: pagination_item
section: "main::modal:货位绑定探针"
strategy: text
value: "4"
playwright: "page.getByText('4')"
page_5:
description: "5"
element_type: pagination_item
section: "main::modal:货位绑定探针"
strategy: text
value: "5"
playwright: "page.getByText('5')"
el_e59091e5908e35e9a1b5:
description: "向后 5 页"
element_type: li
section: "main::modal:货位绑定探针"
strategy: text
value: "向后 5 页"
playwright: "page.getByText('向后 5 页')"
page_53:
description: "53"
element_type: pagination_item
section: "main::modal:货位绑定探针"
strategy: text
value: "53"
playwright: "page.getByText('53')"
nextPageBtn:
description: "下一页"
element_type: li
section: "main::modal:货位绑定探针"
strategy: text
value: "下一页"
playwright: "page.getByText('下一页')"
pageSizeSelect:
description: "50 条/页"
element_type: select
section: "main::modal:货位绑定探针"
strategy: text
value: "50 条/页"
playwright: "page.getByText('50 条/页')"
cancelBtn:
description: "取 消"
element_type: button
section: "main::modal:货位绑定探针"
strategy: role
role: button
name: "取 消"
playwright: "page.getByRole('button', { name: '取 消' })"
confirmBtn:
description: "确定(0)"
element_type: button
section: "main::modal:货位绑定探针"
strategy: role
role: button
name: "确定(0)"
playwright: "page.getByRole('button', { name: '确定(0)' })"
import type { Locator, Page } from '@playwright/test';
import { WhFlowSharedLocators } from './wh-flow-shared.locator';
/** 库区设置。选择器来自 locators/spd/warehouse-zone.locator.yaml */
export class WarehouseZoneLocators extends WhFlowSharedLocators {
readonly warehouseNameInput: Locator;
readonly zoneSearch: Locator;
readonly syncBtn: Locator;
readonly addBtn: Locator;
readonly tree: Locator;
readonly shelfNo: Locator;
readonly shelfName: Locator;
readonly address: Locator;
readonly cancelBtn: Locator;
readonly confirmBtn: Locator;
constructor(page: Page) {
super(page);
this.warehouseNameInput = page.getByPlaceholder('库房名称');
this.zoneSearch = page.getByPlaceholder('库区编号/名称');
this.syncBtn = page.getByRole('button', { name: '同步' });
this.addBtn = page.getByRole('button', { name: /新\s*增/ });
this.tree = page.locator('.ant-tree').first();
this.shelfNo = page.locator('#basic_shelfNo');
this.shelfName = page.locator('#basic_shelfName');
this.address = page.locator('#basic_address');
this.cancelBtn = page.getByRole('button', { name: /取\s*消/ });
this.confirmBtn = page.getByRole('button', { name: /确\s*定/ });
}
treeTitles(): Locator {
return this.tree.locator('.ant-tree-title');
}
selectedTreeTitle(): Locator {
return this.tree.locator('.ant-tree-treenode-selected .ant-tree-title').first();
}
}
# Auto-generated from warehouse-zone-elements.json
# Source: http://spdtest.cmic.com.cn:8080/spd/basic/storehouse/platform/storehouse/area
# Scanned: 2026-10-20T09:08:25.864Z
# Page: 基础设置 > 库房管理 > 库区设置
# Note: dialog/modal was opened during scan
# Note: edit dialog was opened during scan
page: warehouse-zone
module: spd-basic
url: http://spdtest.cmic.com.cn:8080/spd/basic/storehouse/platform/storehouse/area
locators:
# --- main::main ---
menu_home:
description: "首页"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "首页"
playwright: "page.getByRole('menuitem', { name: '首页' })"
menu_basicSetting:
description: "基础设置"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "基础设置"
playwright: "page.getByRole('menuitem', { name: '基础设置' })"
menu_purchase:
description: "采购管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "采购管理"
playwright: "page.getByRole('menuitem', { name: '采购管理' })"
menu_opening:
description: "期初管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "期初管理"
playwright: "page.getByRole('menuitem', { name: '期初管理' })"
menu_centerStock:
description: "中心库管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "中心库管理"
playwright: "page.getByRole('menuitem', { name: '中心库管理' })"
menu_deptBusiness:
description: "科室业务管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "科室业务管理"
playwright: "page.getByRole('menuitem', { name: '科室业务管理' })"
menu_finance:
description: "财务管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "财务管理"
playwright: "page.getByRole('menuitem', { name: '财务管理' })"
menu_orthoVolume:
description: "骨科带量"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "骨科带量"
playwright: "page.getByRole('menuitem', { name: '骨科带量' })"
menu_general:
description: "综合管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "综合管理"
playwright: "page.getByRole('menuitem', { name: '综合管理' })"
menu_yangcai:
description: "阳采管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "阳采管理"
playwright: "page.getByRole('menuitem', { name: '阳采管理' })"
menu_processCenter:
description: "流程中心"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "流程中心"
playwright: "page.getByRole('menuitem', { name: '流程中心' })"
menu_logistics:
description: "后勤物资管理"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "后勤物资管理"
playwright: "page.getByRole('menuitem', { name: '后勤物资管理' })"
menu_statReport:
description: "统计报表"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "统计报表"
playwright: "page.getByRole('menuitem', { name: '统计报表' })"
menu_dataViz:
description: "数据可视化"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "数据可视化"
playwright: "page.getByRole('menuitem', { name: '数据可视化' })"
menu_el_e5ba93e58cbae8aebee7bdae:
description: "库区设置"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "库区设置"
playwright: "page.getByRole('menuitem', { name: '库区设置' })"
menu_el_e68ea2e99288e7bb91e5ae9a:
description: "探针绑定"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "探针绑定"
playwright: "page.getByRole('menuitem', { name: '探针绑定' })"
menu_el_e58d8ee6b885e9809ae98193:
description: "华清通道"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "华清通道"
playwright: "page.getByRole('menuitem', { name: '华清通道' })"
el_e5ba93e58cbae8aebee7bdae:
description: "库区设置"
element_type: tab
section: "main::main"
strategy: text
value: "库区设置"
playwright: "page.getByText('库区设置')"
tab_el_e5ba93e58cbae8aebee7bdae:
description: "库区设置"
element_type: div
section: "main::main"
strategy: id
value: "rc-tabs-0-tab-/basic/storehouse/platform/storehouse/area"
playwright: "page.locator('#rc-tabs-0-tab-/basic/storehouse/platform/storehouse/area')"
el_e5908ce6ada5Btn:
description: "同步"
element_type: button
section: "main::main"
strategy: role
role: button
name: "同步"
playwright: "page.getByRole('button', { name: '同步' })"
el_e5ba93e688bfe4bfa1e681afInput:
description: "库房名称"
element_type: text
section: "main::main"
strategy: placeholder
value: "库房名称"
playwright: "page.getByPlaceholder('库房名称')"
tree_node_e58589e8b0b7:
description: "光谷院区中心库房"
element_type: tree_title
section: "main::main"
strategy: tree_node
value: "光谷院区中心库房"
tree: ".ant-tree"
playwright: "page.locator('.ant-tree .ant-tree-title').filter({ hasText: /^\\s*光谷院区中心库房\\s*$/ })"
tree_node_e6b4aae5b1b1:
description: "洪山院区中心库房"
element_type: tree_title
section: "main::main"
strategy: tree_node
value: "洪山院区中心库房"
tree: ".ant-tree"
playwright: "page.locator('.ant-tree .ant-tree-title').filter({ hasText: /^\\s*洪山院区中心库房\\s*$/ })"
tree_node_31323035e999:
description: "1205院区中心库房"
element_type: tree_title
section: "main::main"
strategy: tree_node
value: "1205院区中心库房"
tree: ".ant-tree"
playwright: "page.locator('.ant-tree .ant-tree-title').filter({ hasText: /^\\s*1205院区中心库房\\s*$/ })"
tree_node_e7bb93e7ae97:
description: "结算院区中心库房"
element_type: tree_title
section: "main::main"
strategy: tree_node
value: "结算院区中心库房"
tree: ".ant-tree"
playwright: "page.locator('.ant-tree .ant-tree-title').filter({ hasText: /^\\s*结算院区中心库房\\s*$/ })"
tree_node_e59b9ee5bd92:
description: "回归测试院区中心库房"
element_type: tree_title
section: "main::main"
strategy: tree_node
value: "回归测试院区中心库房"
tree: ".ant-tree"
playwright: "page.locator('.ant-tree .ant-tree-title').filter({ hasText: /^\\s*回归测试院区中心库房\\s*$/ })"
tree_node_e5a4a9e5bf83:
description: "天心阁院区中心库房"
element_type: tree_title
section: "main::main"
strategy: tree_node
value: "天心阁院区中心库房"
tree: ".ant-tree"
playwright: "page.locator('.ant-tree .ant-tree-title').filter({ hasText: /^\\s*天心阁院区中心库房\\s*$/ })"
tree_node_e58d83e6b389:
description: "千泉山院区中心库房"
element_type: tree_title
section: "main::main"
strategy: tree_node
value: "千泉山院区中心库房"
tree: ".ant-tree"
playwright: "page.locator('.ant-tree .ant-tree-title').filter({ hasText: /^\\s*千泉山院区中心库房\\s*$/ })"
tree_node_e9a9ace78e8b:
description: "马王堆院区中心库房"
element_type: tree_title
section: "main::main"
strategy: tree_node
value: "马王堆院区中心库房"
tree: ".ant-tree"
playwright: "page.locator('.ant-tree .ant-tree-title').filter({ hasText: /^\\s*马王堆院区中心库房\\s*$/ })"
tree_node_e4b8bbe999a2:
description: "主院区中心库房"
element_type: tree_title
section: "main::main"
strategy: tree_node
value: "主院区中心库房"
tree: ".ant-tree"
playwright: "page.locator('.ant-tree .ant-tree-title').filter({ hasText: /^\\s*主院区中心库房\\s*$/ })"
tree_node_e5b2b3e9ba93:
description: "岳麓山院区中心库房"
element_type: tree_title
section: "main::main"
strategy: tree_node
value: "岳麓山院区中心库房"
tree: ".ant-tree"
playwright: "page.locator('.ant-tree .ant-tree-title').filter({ hasText: /^\\s*岳麓山院区中心库房\\s*$/ })"
tree_node_e695b0e68dae:
description: "数据检查院区中心库房"
element_type: tree_title
section: "main::main"
strategy: tree_node
value: "数据检查院区中心库房"
tree: ".ant-tree"
playwright: "page.locator('.ant-tree .ant-tree-title').filter({ hasText: /^\\s*数据检查院区中心库房\\s*$/ })"
tree_node_e4b89ce59c9f:
description: "东土城院区中心库房"
element_type: tree_title
section: "main::main"
strategy: tree_node
value: "东土城院区中心库房"
tree: ".ant-tree"
playwright: "page.locator('.ant-tree .ant-tree-title').filter({ hasText: /^\\s*东土城院区中心库房\\s*$/ })"
tree_node_e699bae883bd:
description: "智能院区中心库房"
element_type: tree_title
section: "main::main"
strategy: tree_node
value: "智能院区中心库房"
tree: ".ant-tree"
playwright: "page.locator('.ant-tree .ant-tree-title').filter({ hasText: /^\\s*智能院区中心库房\\s*$/ })"
tree_node_e887aae58aa8:
description: "自动采购/请领建议专用院区中心库房"
element_type: tree_title
section: "main::main"
strategy: tree_node
value: "自动采购/请领建议专用院区中心库房"
tree: ".ant-tree"
playwright: "page.locator('.ant-tree .ant-tree-title').filter({ hasText: /^\\s*自动采购/请领建议专用院区中心库房\\s*$/ })"
addBtn:
description: "新 增"
element_type: button
section: "main::main"
strategy: role
role: button
name: "新 增"
playwright: "page.getByRole('button', { name: '新 增' })"
addInput:
description: "库区编号/名称"
element_type: text
section: "main::main"
strategy: placeholder
value: "库区编号/名称"
playwright: "page.getByPlaceholder('库区编号/名称')"
el_e5ba93e688bfe4bfa1e681af:
description: "column-height"
element_type: span
section: "main::main"
strategy: label
value: "column-height"
playwright: "page.getByLabel('column-height')"
editBtn:
description: "编辑"
element_type: button
section: "main::main"
strategy: role
role: button
name: "编辑"
playwright: "page.getByRole('button', { name: '编辑' })"
el_e4babae59198e7aea1e79086Btn:
description: "人员管理"
element_type: button
section: "main::main"
strategy: role
role: button
name: "人员管理"
playwright: "page.getByRole('button', { name: '人员管理' })"
el_e8b4a7e4bd8de7aea1e79086Btn:
description: "货位管理"
element_type: button
section: "main::main"
strategy: role
role: button
name: "货位管理"
playwright: "page.getByRole('button', { name: '货位管理' })"
disableBtn:
description: "停用"
element_type: button
section: "main::main"
strategy: role
role: button
name: "停用"
playwright: "page.getByRole('button', { name: '停用' })"
enableBtn:
description: "启用"
element_type: button
section: "main::main"
strategy: role
role: button
name: "启用"
playwright: "page.getByRole('button', { name: '启用' })"
# --- main::pagination ---
pagination_el_e5ba93e688bfe4bfa1e681af:
description: "共 5 条150 条/页"
element_type: ul
section: "main::pagination"
strategy: label_text
value: "库房信息"
playwright: "page.getByText('库房信息', { exact: true })"
pagination_prevPageBtn:
description: "上一页"
element_type: li
section: "main::pagination"
strategy: label_text
value: "库房信息"
playwright: "page.getByText('库房信息', { exact: true })"
pagination_el_e5ba93e688bfe4bfa1e681afBtn:
description: "库房信息"
element_type: button
section: "main::pagination"
strategy: label_text
value: "库房信息"
playwright: "page.getByText('库房信息', { exact: true })"
pagination_page_1:
description: "1"
element_type: pagination_item
section: "main::pagination"
strategy: css
value: ".ant-pagination-item-active"
playwright: "page.locator('.ant-pagination-item-active')"
pagination_nextPageBtn:
description: "下一页"
element_type: li
section: "main::pagination"
strategy: label_text
value: "库房信息"
playwright: "page.getByText('库房信息', { exact: true })"
pagination_pageSizeSelect:
description: "50 条/页"
element_type: select
section: "main::pagination"
strategy: label_text
value: "库房信息"
playwright: "page.getByText('库房信息', { exact: true })"
# --- main::modal:新增库区 ---
el_e5ba93e58cbae7bc96e58fb7Input:
description: "请输入"
element_type: text
section: "main::modal:新增库区"
strategy: id
value: "basic_shelfNo"
playwright: "page.locator('#basic_shelfNo')"
storageAreaInput:
description: "请输入"
element_type: text
section: "main::modal:新增库区"
strategy: id
value: "basic_shelfName"
playwright: "page.locator('#basic_shelfName')"
el_e5ba93e58cbae59cb0e59d80Input:
description: "请输入"
element_type: text
section: "main::modal:新增库区"
strategy: id
value: "basic_address"
playwright: "page.locator('#basic_address')"
el_e590a6:
description: "否"
element_type: radio
section: "main::modal:新增库区"
strategy: text
value: "否"
playwright: "page.getByText('否')"
el_e698af:
description: "是"
element_type: radio
section: "main::modal:新增库区"
strategy: text
value: "是"
playwright: "page.getByText('是')"
el_e88194e7b3bbe4babaSelect:
description: "联系人"
element_type: select
section: "main::modal:新增库区"
strategy: label_text
value: "联系人"
playwright: "page.getByText('联系人', { exact: true })"
el_e88194e7b3bbe4babaInput:
description: "联系人"
element_type: search
section: "main::modal:新增库区"
strategy: id
value: "basic_linkman"
playwright: "page.locator('#basic_linkman')"
el_e88194e7b3bbe696b9e5bc8fInput:
description: "请输入"
element_type: text
section: "main::modal:新增库区"
strategy: id
value: "basic_recPhone"
playwright: "page.locator('#basic_recPhone')"
cancelBtn:
description: "取 消"
element_type: button
section: "main::modal:新增库区"
strategy: role
role: button
name: "取 消"
playwright: "page.getByRole('button', { name: '取 消' })"
confirmBtn:
description: "确 定"
element_type: button
section: "main::modal:新增库区"
strategy: role
role: button
name: "确 定"
playwright: "page.getByRole('button', { name: '确 定' })"
# --- main::modal:编辑库区信息 ---
el_e5ba93e58cbae7bc96e58fb7Input_2:
description: "请输入"
element_type: text
section: "main::modal:编辑库区信息"
strategy: id
value: "basic_shelfNo"
playwright: "page.locator('#basic_shelfNo')"
storageAreaInput_2:
description: "请输入"
element_type: text
section: "main::modal:编辑库区信息"
strategy: id
value: "basic_shelfName"
playwright: "page.locator('#basic_shelfName')"
el_e5ba93e58cbae59cb0e59d80Input_2:
description: "请输入"
element_type: text
section: "main::modal:编辑库区信息"
strategy: id
value: "basic_address"
playwright: "page.locator('#basic_address')"
el_e590a6_2:
description: "否"
element_type: radio
section: "main::modal:编辑库区信息"
strategy: text
value: "否"
playwright: "page.getByText('否')"
el_e698af_2:
description: "是"
element_type: radio
section: "main::modal:编辑库区信息"
strategy: text
value: "是"
playwright: "page.getByText('是')"
el_e88194e7b3bbe4babaSelect_2:
description: "蒋中心库"
element_type: select
section: "main::modal:编辑库区信息"
strategy: label_text
value: "联系人"
playwright: "page.getByText('联系人', { exact: true })"
el_e88194e7b3bbe4babaInput_2:
description: "联系人"
element_type: search
section: "main::modal:编辑库区信息"
strategy: id
value: "basic_linkman"
playwright: "page.locator('#basic_linkman')"
el_e88194e7b3bbe696b9e5bc8fInput_2:
description: "请输入"
element_type: text
section: "main::modal:编辑库区信息"
strategy: id
value: "basic_recPhone"
playwright: "page.locator('#basic_recPhone')"
import type { Locator, Page } from '@playwright/test';
/** 库房管理 / 流程设置共用。叶子菜单是 .ant-menu-item。 */
export class WhFlowSharedLocators {
readonly menuBasic: Locator;
readonly tableHeader: Locator;
readonly empty: Locator;
readonly paginationTotal: Locator;
readonly nextPage: Locator;
readonly prevPage: Locator;
readonly formError: Locator;
constructor(protected readonly page: Page) {
this.menuBasic = page.getByRole('menuitem', { name: '基础设置' });
this.tableHeader = page.locator('.ant-table-thead th');
this.empty = page.locator('.ant-empty, .ant-empty-description').first();
this.paginationTotal = page.locator('.ant-pagination-total-text').first();
this.nextPage = page.locator('.ant-pagination-next').first();
this.prevPage = page.locator('.ant-pagination-prev').first();
this.formError = page.locator('.ant-form-item-explain-error, .ant-message-notice, .ant-notification-notice');
}
groupSubmenuTitle(name: string): Locator {
return this.page.locator('.ant-menu-submenu-title').filter({ hasText: new RegExp(`^\\s*${name}\\s*$`) });
}
menuLeaf(name: string): Locator {
return this.page.locator('.ant-menu-item').filter({ hasText: new RegExp(`^\\s*${name}\\s*$`) }).first();
}
button(name: string, root: Locator | Page = this.page): Locator {
const compact = name.replace(/\s/g, '');
const pattern = new RegExp(compact.split('').join('\\s*'));
return root.getByRole('button', { name: pattern });
}
putPage(): Locator {
return this.page.locator('.put-page').last();
}
dialog(): Locator {
return this.page.locator('.ant-modal-wrap .ant-modal:visible, .ant-drawer-open').last();
}
}
......@@ -24,6 +24,9 @@
"test:page": "node scripts/run-page.mjs",
"suites": "node scripts/run-ci.mjs --list",
"flake:report": "node scripts/flake-report.mjs",
"failures:report": "node scripts/failure-report.mjs",
"quarantine:sync": "node scripts/sync-quarantine.mjs",
"quarantine:apply": "node scripts/sync-quarantine.mjs --write",
"email:summary": "node scripts/ci-email-summary.mjs",
"test:quarantine": "node scripts/run-ci.mjs --suite=quarantine",
"test:smoke": "playwright test tests/spd/login.spec.ts tests/spd/home.spec.ts --grep @smoke",
......@@ -84,9 +87,78 @@
"discover:scan-invoice-trace": "node scripts/scan-invoice-trace-batch.mjs",
"discover:scan-consume": "node scripts/scan-consume-batch.mjs",
"discover:scan-extended": "node scripts/scan-extended-report-batch.mjs",
"discover:scan-admit": "node scripts/scan-admit-batch.mjs",
"discover:scan-basic": "node scripts/scan-basic-batch.mjs",
"discover:scan-vendor": "node scripts/scan-vendor-batch.mjs",
"discover:scan-surgery": "node scripts/scan-surgery-batch.mjs",
"discover:scan-user": "node scripts/scan-user-batch.mjs",
"discover:scan-warehouse": "node scripts/scan-wh-flow-batch.mjs warehouse-zone warehouse-probe",
"discover:scan-flow": "node scripts/scan-wh-flow-batch.mjs flow-def flow-inst",
"discover:scan-wh-flow": "node scripts/scan-wh-flow-batch.mjs",
"discover:yaml-from-json-basic": "node scripts/json-to-locator-yaml.mjs --all-new",
"generate:testpoints-vendor": "python3 scripts/generate-vendor-testpoints.py",
"generate:testpoints-user": "python3 scripts/generate-user-testpoints.py",
"generate:testpoints-warehouse": "python3 scripts/generate-wh-flow-testpoints.py warehouse-zone warehouse-probe",
"generate:testpoints-flow": "python3 scripts/generate-wh-flow-testpoints.py flow-def flow-inst",
"generate:testpoints-wh-flow": "python3 scripts/generate-wh-flow-testpoints.py",
"generate:md-user": "python3 scripts/generate-user-md.py",
"generate:md-wh-flow": "python3 scripts/generate-wh-flow-md.py",
"generate:md-csv-wh-flow": "python3 scripts/generate-wh-flow-md.py",
"test:warehouse-zone": "playwright test tests/spd/warehouse-zone.spec.ts --project=chromium --grep @smoke",
"test:warehouse-zone:all": "playwright test tests/spd/warehouse-zone.spec.ts --project=chromium --workers=1",
"test:warehouse-probe": "playwright test tests/spd/warehouse-probe.spec.ts --project=chromium --grep @smoke",
"test:warehouse-probe:all": "playwright test tests/spd/warehouse-probe.spec.ts --project=chromium --workers=1",
"test:flow-def": "playwright test tests/spd/flow-def.spec.ts --project=chromium --grep @smoke",
"test:flow-def:all": "playwright test tests/spd/flow-def.spec.ts --project=chromium --workers=1",
"test:flow-inst": "playwright test tests/spd/flow-inst.spec.ts --project=chromium --grep @smoke",
"test:flow-inst:all": "playwright test tests/spd/flow-inst.spec.ts --project=chromium --workers=1",
"test:wh-flow:smoke": "playwright test tests/spd/warehouse-zone.spec.ts tests/spd/warehouse-probe.spec.ts tests/spd/flow-def.spec.ts tests/spd/flow-inst.spec.ts --project=chromium --grep @smoke --workers=1",
"test:wh-flow:all": "playwright test tests/spd/warehouse-zone.spec.ts tests/spd/warehouse-probe.spec.ts tests/spd/flow-def.spec.ts tests/spd/flow-inst.spec.ts --project=chromium --workers=1",
"assert:wh-flow-csv-spec": "node scripts/assert-wh-flow-csv-spec-sync.mjs",
"assert:wh-flow-isolation": "node scripts/assert-vendor-no-reuse-open.mjs",
"generate:md-csv-user": "python3 scripts/generate-user-md.py",
"test:basic-user": "playwright test tests/spd/basic-user.spec.ts --project=chromium --grep @smoke",
"test:basic-user:all": "playwright test tests/spd/basic-user.spec.ts --project=chromium --workers=1",
"test:basic-user-union": "playwright test tests/spd/basic-user-union.spec.ts --project=chromium --grep @smoke",
"test:basic-user-union:all": "playwright test tests/spd/basic-user-union.spec.ts --project=chromium --workers=1",
"test:basic-role": "playwright test tests/spd/basic-role.spec.ts --project=chromium --grep @smoke",
"test:basic-role:all": "playwright test tests/spd/basic-role.spec.ts --project=chromium --workers=1",
"test:user:smoke": "playwright test tests/spd/basic-user.spec.ts tests/spd/basic-user-union.spec.ts tests/spd/basic-role.spec.ts --project=chromium --grep @smoke --workers=1",
"test:user:all": "playwright test tests/spd/basic-user.spec.ts tests/spd/basic-user-union.spec.ts tests/spd/basic-role.spec.ts --project=chromium --workers=1",
"assert:user-csv-spec": "node scripts/assert-user-csv-spec-sync.mjs",
"assert:basic-csv-spec": "node scripts/assert-basic-csv-spec-sync.mjs",
"test:vendor-query": "playwright test tests/spd/vendor-query.spec.ts --project=chromium --grep @smoke",
"test:vendor-query:all": "playwright test tests/spd/vendor-query.spec.ts --project=chromium --workers=1",
"test:vendor-qual": "playwright test tests/spd/vendor-qual.spec.ts --project=chromium --grep @smoke",
"test:vendor-qual:all": "playwright test tests/spd/vendor-qual.spec.ts --project=chromium --workers=1",
"test:vendor:smoke": "playwright test tests/spd/vendor-query.spec.ts tests/spd/vendor-qual.spec.ts tests/spd/vendor-audit.spec.ts tests/spd/vendor-cert-diff.spec.ts tests/spd/vendor-eval-scheme.spec.ts tests/spd/vendor-eval-indicator.spec.ts tests/spd/vendor-holiday.spec.ts --project=chromium --grep @smoke --workers=1",
"test:vendor-audit:smoke": "playwright test tests/spd/vendor-audit.spec.ts --project=chromium --grep @smoke --workers=1",
"test:vendor-audit:all": "playwright test tests/spd/vendor-audit.spec.ts --project=chromium --workers=1",
"test:vendor-cert-diff": "playwright test tests/spd/vendor-cert-diff.spec.ts --project=chromium --grep @smoke",
"test:vendor-cert-diff:all": "playwright test tests/spd/vendor-cert-diff.spec.ts --project=chromium --workers=1",
"test:vendor-eval-scheme": "playwright test tests/spd/vendor-eval-scheme.spec.ts --project=chromium --grep @smoke",
"test:vendor-eval-scheme:all": "playwright test tests/spd/vendor-eval-scheme.spec.ts --project=chromium --workers=1",
"test:vendor-eval-indicator": "playwright test tests/spd/vendor-eval-indicator.spec.ts --project=chromium --grep @smoke",
"test:vendor-eval-indicator:all": "playwright test tests/spd/vendor-eval-indicator.spec.ts --project=chromium --workers=1",
"test:vendor-holiday": "playwright test tests/spd/vendor-holiday.spec.ts --project=chromium --grep @smoke",
"test:vendor-holiday:all": "playwright test tests/spd/vendor-holiday.spec.ts --project=chromium --workers=1",
"generate:md-csv-vendor": "python3 scripts/generate-vendor-md-csv.py",
"assert:vendor-csv-spec": "node scripts/assert-vendor-csv-spec-sync.mjs",
"assert:vendor-isolation": "node scripts/assert-vendor-no-reuse-open.mjs",
"test:surgery-base-pkg": "playwright test tests/spd/surgery-base-pkg.spec.ts --project=chromium --grep @smoke",
"test:surgery-base-pkg:all": "playwright test tests/spd/surgery-base-pkg.spec.ts --project=chromium --workers=1",
"test:surgery-oper-type": "playwright test tests/spd/surgery-oper-type.spec.ts --project=chromium --grep @smoke",
"test:surgery-oper-type:all": "playwright test tests/spd/surgery-oper-type.spec.ts --project=chromium --workers=1",
"test:surgery-std-pkg": "playwright test tests/spd/surgery-std-pkg.spec.ts --project=chromium --grep @smoke",
"test:surgery-std-pkg:all": "playwright test tests/spd/surgery-std-pkg.spec.ts --project=chromium --workers=1",
"test:surgery:smoke": "playwright test tests/spd/surgery-base-pkg.spec.ts tests/spd/surgery-oper-type.spec.ts tests/spd/surgery-std-pkg.spec.ts --project=chromium --grep @smoke --workers=1",
"test:surgery:all": "playwright test tests/spd/surgery-base-pkg.spec.ts tests/spd/surgery-oper-type.spec.ts tests/spd/surgery-std-pkg.spec.ts --project=chromium --workers=1",
"assert:surgery-csv-spec": "node scripts/assert-surgery-csv-spec-sync.mjs",
"test:vendor:all": "playwright test tests/spd/vendor-query.spec.ts tests/spd/vendor-qual.spec.ts tests/spd/vendor-audit.spec.ts tests/spd/vendor-cert-diff.spec.ts tests/spd/vendor-eval-scheme.spec.ts tests/spd/vendor-eval-indicator.spec.ts tests/spd/vendor-holiday.spec.ts --project=chromium --workers=1",
"discover:yaml-from-json": "node scripts/json-to-locator-yaml.mjs --all-extended",
"update:ui-specs-extended": "python3 scripts/update-extended-ui-specs.py",
"update:ui-specs-consume": "python3 scripts/update-consume-ui-specs.py",
"sync:ui-specs-user": "python3 scripts/sync-docs-ui-specs.py --only USER-001,USER-002,USER-003",
"generate:testpoints-invoice-trace": "python3 scripts/generate-invoice-trace-testpoints.py",
"generate:testpoints-consume": "python3 scripts/generate-consume-testpoints.py",
"generate:testpoints-extended": "python3 scripts/generate-extended-testpoints.py",
......
import { expect, type Page } from '@playwright/test';
import { admitData } from '../../data/admit.data';
import { AdmitSharedPage } from './admit-shared.page';
/** 物料准入单列表。详情里的「通过」只取消,不确认审批。 */
export class AdmitMaterialListPage extends AdmitSharedPage {
constructor(page: Page) {
super(page, {
path: admitData.materialListPath,
pathPart: 'productOrder/zrlist',
menu: admitData.menuMaterialList,
forbidden: ['supplyApply/', 'accessKind/', 'productApply/'],
});
}
async expectEntered(): Promise<void> {
await this.expectOnPage();
expect(this.page.url()).toContain('zrlist');
await expect(this.tab('已通过')).toBeVisible();
}
async filterByOrderOrFallback(): Promise<void> {
await this.query();
await this.queryByFirstAvailable([
{ column: '准入单号', filter: '准入单号', kind: 'input' },
{ column: '注册证号', filter: '注册证号', kind: 'input' },
{ column: '产品名称', filter: '产品名称', kind: 'input' },
{ column: '器械注册人', filter: '器械注册人', kind: 'input' },
]);
}
async resetFilters(): Promise<void> {
await this.query();
const filled = await this.fillFirstVisibleFilter();
await this.reset();
if (filled) await this.expectInputCleared(filled);
await this.expectListOrEmpty();
}
async mockEmpty(): Promise<void> {
const cert = this.textInput('注册证号');
if (await cert.isVisible().catch(() => false)) {
await this.fillFilter('注册证号', admitData.mockCert);
} else {
await this.fillFilter('产品名称', admitData.mockGoods);
}
await this.query();
await this.expectMockEmpty();
}
async expectCoreColumns(): Promise<void> {
await this.query();
await this.expectHeaders(['准入类型', '准入单号', '进院供应商', '产品名称', '注册证号', '耗材类型', '产品条数', '状态', '操作']);
await expect(this.rowAction(await this.firstRow(), '详情')).toBeVisible();
}
async switchPassed(): Promise<void> {
await this.clickTabAndMatchCount('已通过');
await expect(this.tab('已通过')).toHaveClass(/ant-tabs-tab-active/);
}
async detailAndBack(): Promise<void> {
await this.query();
const row = await this.firstRow();
const order = await this.tryCell(row, '准入单号');
await this.openPutFromRow(row, '详情');
if (order) await expect(this.put()).toContainText(order.slice(0, 8));
await expect(this.put().getByText('审批进程').first()).toBeVisible();
await this.leaveWithoutCommit();
}
async detailCountMatches(): Promise<void> {
await this.query();
const row = await this.firstRow();
const countText = (await this.cellText(row, '产品条数')).replace(/\s/g, '');
await this.openPutFromRow(row, '详情');
await expect(this.put()).toContainText(countText);
await this.leaveWithoutCommit();
}
async openApproval(): Promise<void> {
await this.query();
await this.openPutFromRow(await this.firstRow(), '详情');
await this.openDetailSection('审批进程');
await this.leaveWithoutCommit();
}
async exportDetail(): Promise<void> {
await this.query();
await this.openPutFromRow(await this.firstRow(), '详情');
const exp = this.button('导出', this.put()).first();
if (!(await exp.isVisible().catch(() => false))) {
await this.leaveWithoutCommit();
await this.skipWhenDataInsufficient('详情无导出');
}
await this.click(exp, '导出');
await this.assertPageHealthy('详情导出');
expect(this.page.url()).not.toMatch(/\/login/);
await expect(this.put().getByRole('button', { name: /返\s*回/ }).first()).toBeVisible();
await this.leaveWithoutCommit();
}
async detailSearchMock(): Promise<void> {
await this.query();
await this.openPutFromRow(await this.firstRow(), '详情');
const input = this.putInput('产品名称');
const target = (await input.isVisible().catch(() => false)) ? input : this.put().locator('input').first();
await this.fill(target, admitData.mockGoods, '详情搜索 mock');
const query = this.button('查询', this.put()).first();
if (await query.isVisible().catch(() => false)) await this.click(query, '详情查询');
await this.waitForTableReady();
const empty = await this.put().getByText('暂无数据').first().isVisible().catch(() => false);
const rows = await this.put().locator('.ant-table-tbody > tr.ant-table-row').count();
expect(empty || rows === 0, '详情无匹配应空态').toBeTruthy();
await this.leaveWithoutCommit();
}
async passedNotConfirm(): Promise<void> {
await this.skipIfTabEmpty('已通过');
const row = await this.firstRow();
const order = await this.tryCell(row, '准入单号');
await this.openPutFromRow(row, '详情');
const pass = this.button('通过', this.put()).first();
const visible = await pass.isVisible().catch(() => false);
const disabled = visible && ((await pass.isDisabled().catch(() => false)) || ((await pass.getAttribute('class')) ?? '').includes('disabled'));
if (!visible || disabled) {
await this.leaveWithoutCommit();
} else {
await this.click(pass, '通过');
const confirm = this.page.locator('.ant-modal-confirm:visible, .ant-modal:visible').last();
if (await confirm.isVisible().catch(() => false)) {
await this.click(confirm.getByRole('button', { name: /取\s*消/ }).first(), '取消通过');
}
await this.leaveWithoutCommit();
}
await this.clickTab('已通过');
if (order) await expect(this.page.getByText(order.slice(0, 10)).first()).toBeVisible();
}
private async fillFirstVisibleFilter(): Promise<string> {
for (const label of ['注册证号', '产品名称', '器械注册人']) {
if (await this.textInput(label).isVisible().catch(() => false)) {
await this.fillFilter(label, '样');
return label;
}
}
return '';
}
/** 组合查询:一次性填满筛选区全部字段后查询(字段以现网搜索条为准)。 */
async filterCombination(): Promise<void> {
const scope = await this.queryScope();
await this.applyFilterCombination(
[
{ label: '制单日期', kind: 'dateRange', value: '样本' },
{ label: '销售商', kind: 'text', value: '样本' },
{ label: '耗材类型', kind: 'select', value: '样本' },
{ label: '器械注册人', kind: 'text', value: '样本' },
{ label: '注册证号', kind: 'text', value: '样本' },
{ label: '供应商', kind: 'text', value: '样本' },
],
{ scope },
);
}
}
import { expect, type Page } from '@playwright/test';
import { admitData } from '../../data/admit.data';
import { AdmitSharedPage } from './admit-shared.page';
/** 物料准入管理。写操作只取消,不确认生成/作废/关联。 */
export class AdmitMaterialPage extends AdmitSharedPage {
constructor(page: Page) {
super(page, {
path: admitData.materialPath,
pathPart: 'productApply/ZRlist',
menu: admitData.menuMaterial,
forbidden: ['productOrder/', 'supplyApply/', 'accessKind/'],
});
}
async expectEntered(): Promise<void> {
await this.expectOnPage();
expect(this.page.url()).toContain('ZRlist');
for (const name of ['关联产品', '生成申请单', '一键生成', '作废']) {
await expect(this.button(name).first(), name).toBeVisible();
}
await expect(this.tab('待申请')).toBeVisible();
}
async filterByProductName(): Promise<void> {
await this.query();
const name = await this.sampleCell('产品名称');
await this.fillFilter('产品名称', name.slice(0, 40));
await this.query();
await this.expectRowsContain('产品名称', name);
}
async filterByGoodsType(): Promise<void> {
await this.query();
const type = await this.sampleCell('耗材类型');
await this.chooseSelect('耗材类型', type);
await this.query();
await this.expectRowsContain('耗材类型', type);
}
async filterByNameAndType(): Promise<void> {
await this.query();
const name = await this.sampleCell('产品名称');
const type = await this.sampleCell('耗材类型');
await this.fillFilter('产品名称', name.slice(0, 40));
await this.chooseSelect('耗材类型', type);
await this.query();
await this.expectRowsContain('产品名称', name);
await this.expectRowsContain('耗材类型', type);
}
async resetFilters(): Promise<void> {
await this.query();
const name = await this.sampleCell('产品名称');
await this.fillFilter('产品名称', name.slice(0, 20));
await this.reset();
await this.expectInputCleared('产品名称');
await this.expectListOrEmpty();
}
async collapseKeepsName(): Promise<void> {
await this.query();
const name = await this.sampleCell('产品名称');
await this.collapseKeeps('产品名称', name.slice(0, 20));
}
async mockEmptyName(): Promise<void> {
await this.fillFilter('产品名称', admitData.mockGoods);
await this.query();
await this.expectMockEmpty();
}
async expectCoreColumns(): Promise<void> {
await this.query();
await this.expectHeaders([
'准入类型',
'产品编号',
'产品名称',
'规格型号',
'规格',
'型号',
'器械注册人',
'单位',
'耗材类型',
'默认进院供应商',
'操作',
]);
const row = await this.firstRow();
await expect(this.rowAction(row, '详情')).toBeVisible();
}
async switchPending(): Promise<void> {
await this.clickTab('待申请');
await expect(this.tab('待申请')).toHaveClass(/ant-tabs-tab-active/);
await this.expectListOrEmpty();
}
async pendingCountMatches(): Promise<void> {
await this.clickTabAndMatchCount('待申请');
}
async generateNeedsSelection(): Promise<void> {
await this.expectNeedsSelection('生成申请单');
}
async detailAndBack(): Promise<void> {
await this.query();
const row = await this.firstRow();
const name = await this.cellText(row, '产品名称');
await this.openPutFromRow(row, '详情');
await expect(this.put()).toContainText(name.slice(0, 8));
await this.leaveWithoutCommit();
await expect(this.button('查询').first()).toBeVisible();
}
async detailReadonly(): Promise<void> {
await this.query();
await this.openPutFromRow(await this.firstRow(), '详情');
const save = this.button('保存', this.put());
expect(await save.count(), '详情不应提供保存').toBe(0);
const nameInput = this.putInput('产品名称');
if (await nameInput.isVisible().catch(() => false)) {
await expect(nameInput).toBeDisabled();
}
await this.leaveWithoutCommit();
}
async editBackfill(): Promise<void> {
await this.clickTab('待申请');
const row = await this.skipIfNoAction('编辑', '待申请无编辑');
const name = await this.cellText(row, '产品名称');
const spec = await this.tryCell(row, '规格型号');
await this.openPutFromRow(row, '编辑');
await expect(this.putInput('产品名称')).toHaveValue(name);
if (spec && (await this.putInput('规格型号').isVisible().catch(() => false))) {
await expect(this.putInput('规格型号')).toHaveValue(spec);
}
await this.leaveWithoutCommit();
}
async editCancel(): Promise<void> {
await this.clickTab('待申请');
const row = await this.skipIfNoAction('编辑', '待申请无编辑');
const name = await this.cellText(row, '产品名称');
await this.openPutFromRow(row, '编辑');
const input = this.putInput('产品名称');
await this.fill(input, `${name}-取消`, '临时改名');
await this.leaveWithoutCommit();
await this.clickTab('待申请');
const again = await this.skipIfNoAction('编辑', '待申请无编辑');
await this.openPutFromRow(again, '编辑');
await expect(this.putInput('产品名称')).toHaveValue(name);
await this.leaveWithoutCommit();
}
async editClearName(): Promise<void> {
await this.clickTab('待申请');
const row = await this.skipIfNoAction('编辑', '待申请无编辑');
const name = await this.cellText(row, '产品名称');
await this.openPutFromRow(row, '编辑');
await this.fill(this.putInput('产品名称'), '', '清空产品名称');
await this.saveOnPut();
await this.expectBlockedAndStay();
await this.leaveWithoutCommit();
await this.clickTab('待申请');
const again = await this.rowWithAction('编辑');
expect(again, '取消后原行仍应可编辑').toBeTruthy();
await this.openPutFromRow(again as NonNullable<typeof again>, '编辑');
await expect(this.putInput('产品名称')).toHaveValue(name);
await this.leaveWithoutCommit();
}
async effectiveNoEdit(): Promise<void> {
await this.skipIfTabEmpty('已生效');
const edit = (await this.listRows()).getByRole('button', { name: /编\s*辑/ });
expect(await edit.count(), '已生效行不应提供编辑').toBe(0);
}
async relateCancel(): Promise<void> {
await this.query();
const total = await this.getTotalCount();
const supplier = await this.cellText(await this.firstRow(), '默认进院供应商');
await this.clickToolbarThenCancel('关联产品');
expect(await this.getTotalCount(), '取消关联后总数不变').toBe(total);
expect(await this.cellText(await this.firstRow(), '默认进院供应商')).toBe(supplier);
}
async voidCancel(): Promise<void> {
await this.query();
const voidBefore = await this.readTabCount('已作废');
const row = await this.checkFirstRow();
const name = await this.cellText(row, '产品名称');
await this.clickButton('作废');
const confirm = this.page.locator('.ant-modal-confirm:visible, .ant-modal:visible').last();
await expect(confirm, '作废应出现确认框').toBeVisible();
await expect(confirm.getByRole('button', { name: /取\s*消/ })).toBeVisible();
await expect(confirm.getByRole('button', { name: /确\s*定/ })).toBeVisible();
await this.click(confirm.getByRole('button', { name: /取\s*消/ }).first(), '取消作废');
await expect(this.page.getByText(name.slice(0, 12)).first(), '取消后该行仍在').toBeVisible();
if (voidBefore !== null) {
expect(await this.readTabCount('已作废'), '已作废计数不变').toBe(voidBefore);
}
}
async openLog(): Promise<void> {
await this.query();
const row = await this.skipIfNoAction('日志', '列表无日志入口');
await this.click(this.rowAction(row, '日志'), '日志');
const layer = this.page.locator('.ant-modal:visible, .ant-drawer:visible, .put-page:visible').last();
await expect(layer, '日志层应打开').toBeVisible();
await this.assertPageHealthy('日志');
await this.leaveWithoutCommit();
}
}
import { expect, type Page } from '@playwright/test';
import { admitData, uniqProductName } from '../../data/admit.data';
import { AdmitSharedPage } from './admit-shared.page';
/** 产品准入申请。新增与作废只取消,不确认保存、导入或作废。 */
export class AdmitProductApplyPage extends AdmitSharedPage {
constructor(page: Page) {
super(page, {
path: admitData.productApplyPath,
pathPart: 'productApply/list',
menu: admitData.menuProductApply,
forbidden: ['ZRlist', 'productOrder/', 'supplyApply/', 'accessKind/'],
});
}
async expectEntered(): Promise<void> {
await this.expectOnPage();
expect(this.page.url()).not.toContain('ZRlist');
for (const name of ['新增产品', 'Excel导入', '生成申请单']) {
await expect(this.button(name).first(), name).toBeVisible();
}
}
async filterByProductName(): Promise<void> {
await this.query();
const name = await this.sampleCell('产品名称');
await this.fillFilter('产品名称', name.slice(0, 40));
await this.query();
await this.expectRowsContain('产品名称', name);
}
async filterByNameAndType(): Promise<void> {
await this.query();
const name = await this.sampleCell('产品名称');
const type = await this.sampleCell('耗材类型');
await this.fillFilter('产品名称', name.slice(0, 40));
await this.chooseSelect('耗材类型', type);
await this.query();
await this.expectRowsContain('产品名称', name);
}
async resetFilters(): Promise<void> {
await this.query();
const name = await this.sampleCell('产品名称');
await this.fillFilter('产品名称', name.slice(0, 20));
await this.reset();
await this.expectInputCleared('产品名称');
await this.expectListOrEmpty();
}
async mockEmpty(): Promise<void> {
await this.fillFilter('产品名称', admitData.mockGoods);
await this.query();
await this.expectMockEmpty();
}
async expectCoreColumns(): Promise<void> {
await this.query();
await this.expectHeaders(['准入单号', '产品编号', '产品名称', '规格型号', '器械注册人', '单位', '操作']);
}
async switchPending(): Promise<void> {
await this.clickTab('待申请');
await expect(this.tab('待申请')).toHaveClass(/ant-tabs-tab-active/);
await this.expectListOrEmpty();
}
async goPage2(): Promise<void> {
await this.query();
await this.goToPage2('产品名称');
}
async jumpPage2(): Promise<void> {
await this.query();
await this.jumpToPage(2);
}
async openAddAndBack(): Promise<void> {
const total = await this.getTotalCount();
await this.clickButton('新增产品');
await expect(this.put(), '新增产品页').toBeVisible();
for (const label of ['产品名称', '器械注册人', '规格型号']) {
await expect(this.put().getByText(label).first(), label).toBeVisible();
}
await this.leaveWithoutCommit();
expect(await this.getTotalCount()).toBe(total);
}
async addCancel(): Promise<void> {
const total = await this.getTotalCount();
const name = uniqProductName();
await this.clickButton('新增产品');
await expect(this.put()).toBeVisible();
await this.fill(this.putInput('产品名称'), name, '填写新产品名称');
await this.leaveWithoutCommit();
await this.fillFilter('产品名称', name);
await this.query();
await this.expectMockEmpty();
await this.reset();
expect(await this.getTotalCount(), '取消后总数不变').toBe(total);
}
async excelCancel(): Promise<void> {
const total = await this.getTotalCount();
await this.clickButton('Excel导入');
const layer = this.page.locator('.ant-modal:visible, .put-page:visible, .ant-drawer:visible').last();
await expect(layer, 'Excel 导入层').toBeVisible();
await this.leaveWithoutCommit();
expect(await this.getTotalCount()).toBe(total);
}
async emptyNameBlocked(): Promise<void> {
const total = await this.getTotalCount();
await this.clickButton('新增产品');
await expect(this.put()).toBeVisible();
await this.fill(this.putInput('产品名称'), '', '产品名称保持空');
await this.saveOnPut();
await this.expectBlockedAndStay();
await this.leaveWithoutCommit();
expect(await this.getTotalCount(), '空名称不应落库').toBe(total);
}
async detailAndBack(): Promise<void> {
await this.query();
const row = await this.firstRow();
const name = await this.cellText(row, '产品名称');
await this.openPutFromRow(row, '详情');
await expect(this.put()).toContainText(name.slice(0, 8));
await this.leaveWithoutCommit();
}
async editBackfill(): Promise<void> {
await this.clickTab('待申请');
const row = await this.skipIfNoAction('编辑', '待申请无编辑');
const name = await this.cellText(row, '产品名称');
await this.openPutFromRow(row, '编辑');
await expect(this.putInput('产品名称')).toHaveValue(name);
await this.leaveWithoutCommit();
}
async editCancel(): Promise<void> {
await this.clickTab('待申请');
const row = await this.skipIfNoAction('编辑', '待申请无编辑');
const name = await this.cellText(row, '产品名称');
await this.openPutFromRow(row, '编辑');
await this.fill(this.putInput('产品名称'), `${name}-取消`, '临时改名');
await this.leaveWithoutCommit();
await this.clickTab('待申请');
const again = await this.skipIfNoAction('编辑', '待申请无编辑');
await this.openPutFromRow(again, '编辑');
await expect(this.putInput('产品名称')).toHaveValue(name);
await this.leaveWithoutCommit();
}
async voidCancel(): Promise<void> {
await this.query();
const voidBefore = await this.readTabCount('已作废');
await this.checkFirstRow();
const name = await this.cellText(await this.firstRow(), '产品名称');
await this.clickButton('作废');
const confirm = this.page.locator('.ant-modal-confirm:visible, .ant-modal:visible').last();
await expect(confirm).toBeVisible();
await this.click(confirm.getByRole('button', { name: /取\s*消/ }).first(), '取消作废');
await expect(this.page.getByText(name.slice(0, 12)).first()).toBeVisible();
if (voidBefore !== null) expect(await this.readTabCount('已作废')).toBe(voidBefore);
}
async passedNoEdit(): Promise<void> {
await this.skipIfTabEmpty('已通过');
expect(await (await this.listRows()).getByRole('button', { name: /编\s*辑/ }).count(), '已通过不应提供编辑').toBe(0);
}
}
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