Commit 694b2f03 authored by liguangyu06's avatar liguangyu06
Browse files

新增科室管理与接口管理自动化资产,并同步加固基础管理用例与 PO。

SKIP_GIT_GATE=1:批量资产入库,本地暂不重跑相关 Playwright 门禁凭证。
parent 01540e6e
# Auto-generated from iface-his-price-elements.json
# Source: http://spdtest.cmic.com.cn:8080/spd/basic/interface/interface/priceCompare
# Scanned: 2026-11-03T01:55:41.143Z
# Page: 基础设置 > 接口管理 > HIS价对照查询
# Note: filter dropdown was opened during scan
page: iface-his-price
module: spd-basic
url: http://spdtest.cmic.com.cn:8080/spd/basic/interface/interface/priceCompare
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_e68ea5e58fa3e697a5e5bf97:
description: "接口日志"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "接口日志"
playwright: "page.getByRole('menuitem', { name: '接口日志' })"
menu_el_e68ea8e98081e789a9e4bbb7:
description: "推送物价"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "推送物价"
playwright: "page.getByRole('menuitem', { name: '推送物价' })"
menu_el_e694b6e8b4b9e9a1b9e79baee5afb9e7a081:
description: "收费项目对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "收费项目对码"
playwright: "page.getByRole('menuitem', { name: '收费项目对码' })"
menu_el_e5a496e59bb4e4baa7e59381e58f98e69bb4:
description: "外围产品变更"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "外围产品变更"
playwright: "page.getByRole('menuitem', { name: '外围产品变更' })"
menu_el_484953e4bbb7e5afb9e785a7e69fa5e8afa2:
description: "HIS价对照查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS价对照查询"
playwright: "page.getByRole('menuitem', { name: 'HIS价对照查询' })"
menu_el_e5a496e983a8e58f98e69bb4e6988ee7bb86e4bfa1e681afe69fa5e8afa2:
description: "外部变更明细信息查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "外部变更明细信息查询"
playwright: "page.getByRole('menuitem', { name: '外部变更明细信息查询' })"
menu_el_e58cbbe4bf9de4bfa1e681afe6a0b8e5afb9:
description: "医保信息核对"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "医保信息核对"
playwright: "page.getByRole('menuitem', { name: '医保信息核对' })"
menu_el_e58e82e59586e5afb9e7a081:
description: "厂商对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "厂商对码"
playwright: "page.getByRole('menuitem', { name: '厂商对码' })"
menu_el_e4bba3e4b8bae7a791e5aea4e8afb7e9a286efbc88e5b7b2e7a1aee8aea4efbc89:
description: "代为科室请领(已确认)"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "代为科室请领(已确认)"
playwright: "page.getByRole('menuitem', { name: '代为科室请领(已确认)' })"
menu_el_e4bba3e4ba8ce7baa7e7a791e5aea4e8afb7e9a286e4baa7e59381:
description: "代二级科室请领产品"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "代二级科室请领产品"
playwright: "page.getByRole('menuitem', { name: '代二级科室请领产品' })"
menu_el_484953e4baa7e59381e4bfa1e681afe58f98e69bb4:
description: "HIS产品信息变更"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS产品信息变更"
playwright: "page.getByRole('menuitem', { name: 'HIS产品信息变更' })"
menu_el_484953e7a791e5aea4e69fa5e8afa2:
description: "HIS科室查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS科室查询"
playwright: "page.getByRole('menuitem', { name: 'HIS科室查询' })"
menu_el_484953e4babae59198e69fa5e8afa2:
description: "HIS人员查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS人员查询"
playwright: "page.getByRole('menuitem', { name: 'HIS人员查询' })"
menu_el_484953e694b6e8b4b9e9a1b9e4b88ee4baa7e59381e5afb9e785a7e585b3e7b3bbe69fa5e8afa2:
description: "HIS收费项与产品对照关系查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS收费项与产品对照关系查询"
playwright: "page.getByRole('menuitem', { name: 'HIS收费项与产品对照关系查询' })"
menu_el_e999a2e58cbae5afb9e7a081:
description: "院区对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "院区对码"
playwright: "page.getByRole('menuitem', { name: '院区对码' })"
menu_el_e4bd8ee580bce8aea1e8b4b9e68ea5e58fa3e69fa5e8afa2:
description: "低值计费接口查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "低值计费接口查询"
playwright: "page.getByRole('menuitem', { name: '低值计费接口查询' })"
menu_el_e699bae883bde69f9ce4b88ee5ba93e58cbae5afb9e7a081:
description: "智能柜与库区对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "智能柜与库区对码"
playwright: "page.getByRole('menuitem', { name: '智能柜与库区对码' })"
menu_el_e789a9e8b584e5ad97e585b8e68ea8e98081e8aeb0e5bd95:
description: "物资字典推送记录"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "物资字典推送记录"
playwright: "page.getByRole('menuitem', { name: '物资字典推送记录' })"
menu_el_e5b9b3e58fb0e4baa7e59381e4bbb7e6a0bce5b7aee5bc82e69fa5e8afa2:
description: "平台产品价格差异查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "平台产品价格差异查询"
playwright: "page.getByRole('menuitem', { name: '平台产品价格差异查询' })"
menu_el_e8afb7e9a286e58d95e68ea5e58fa3e69fa5e8afa2:
description: "请领单接口查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "请领单接口查询"
playwright: "page.getByRole('menuitem', { name: '请领单接口查询' })"
menu_el_e68ea5e58fa3e695b0e68daee7bbb4e68aa4:
description: "接口数据维护"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "接口数据维护"
playwright: "page.getByRole('menuitem', { name: '接口数据维护' })"
el_484953e4bbb7e5afb9e785a7e69fa5e8afa2:
description: "HIS价对照查询"
element_type: tab
section: "main::main"
strategy: text
value: "HIS价对照查询"
playwright: "page.getByText('HIS价对照查询')"
tab_el_484953e4bbb7e5afb9e785a7e69fa5e8afa2:
description: "HIS价对照查询"
element_type: div
section: "main::main"
strategy: id
value: "rc-tabs-0-tab-/basic/interface/interface/priceCompare"
playwright: "page.locator('#rc-tabs-0-tab-/basic/interface/interface/priceCompare')"
el_e789a9e69699e5908de7a7b0Input:
description: "请输入产品ID/名称/简拼"
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')"
manufacturer:
description: "请输入"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_goodsMfrsName"
playwright: "page.locator('#table_search_form_goodsMfrsName')"
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_e4bb85e69fa5e79c8be4bbb7e6a0bce5b7aee5bc82e6988ee7bb86Btn:
description: "仅查看价格差异明细"
element_type: switch
section: "main::main"
strategy: role
role: switch
name: "仅查看价格差异明细"
playwright: "page.getByRole('switch', { name: '仅查看价格差异明细' })"
exportBtn:
description: "导 出"
element_type: button
section: "main::main"
strategy: role
role: button
name: "导 出"
playwright: "page.getByRole('button', { name: '导 出' })"
consumableTypeSelect:
description: "请选择"
element_type: select
section: "main::main"
strategy: label_text
value: "耗材类型"
playwright: "page.getByText('耗材类型', { exact: true })"
el_e694b6e8b4b9e9a1b9e79baeInput:
description: "请输入收费项目编号/名称"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_jfCode"
playwright: "page.locator('#table_search_form_jfCode')"
collapseFilterBtn:
description: "收起"
element_type: button
section: "main::main"
strategy: role
role: button
name: "收起"
playwright: "page.getByRole('button', { name: '收起' })"
purchaseMode:
description: "耗材类型"
element_type: search
section: "main::main"
strategy: id
value: "table_search_form_purModes"
playwright: "page.locator('#table_search_form_purModes')"
# --- main::pagination ---
pagination_el_e585b1373830e69da13132333435e280a2e280a2e280a231363530e69da12fe9a1b5e8b7b3e887b3e9a1b5:
description: "共 780 条12345•••1650 条/页跳至页"
element_type: ul
section: "main::pagination"
strategy: text
value: "共 780 条12345•••1650 条/页跳至页"
playwright: "page.getByText('共 780 条12345•••1650 条/页跳至页')"
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_16:
description: "16"
element_type: pagination_item
section: "main::pagination"
strategy: text
value: "16"
playwright: "page.getByText('16')"
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 条/页')"
# Auto-generated from iface-insurance-elements.json
# Source: http://spdtest.cmic.com.cn:8080/spd/basic/interface/scjs/yc/ybGoodsCheck
# Scanned: 2026-11-03T01:50:10.833Z
# Page: 基础设置 > 接口管理 > 医保信息核对
# Note: filter dropdown was opened during scan
page: iface-insurance
module: spd-basic
url: http://spdtest.cmic.com.cn:8080/spd/basic/interface/scjs/yc/ybGoodsCheck
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_e68ea5e58fa3e697a5e5bf97:
description: "接口日志"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "接口日志"
playwright: "page.getByRole('menuitem', { name: '接口日志' })"
menu_el_e68ea8e98081e789a9e4bbb7:
description: "推送物价"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "推送物价"
playwright: "page.getByRole('menuitem', { name: '推送物价' })"
menu_el_e694b6e8b4b9e9a1b9e79baee5afb9e7a081:
description: "收费项目对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "收费项目对码"
playwright: "page.getByRole('menuitem', { name: '收费项目对码' })"
menu_el_e5a496e59bb4e4baa7e59381e58f98e69bb4:
description: "外围产品变更"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "外围产品变更"
playwright: "page.getByRole('menuitem', { name: '外围产品变更' })"
menu_el_484953e4bbb7e5afb9e785a7e69fa5e8afa2:
description: "HIS价对照查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS价对照查询"
playwright: "page.getByRole('menuitem', { name: 'HIS价对照查询' })"
menu_el_e5a496e983a8e58f98e69bb4e6988ee7bb86e4bfa1e681afe69fa5e8afa2:
description: "外部变更明细信息查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "外部变更明细信息查询"
playwright: "page.getByRole('menuitem', { name: '外部变更明细信息查询' })"
menu_el_e58cbbe4bf9de4bfa1e681afe6a0b8e5afb9:
description: "医保信息核对"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "医保信息核对"
playwright: "page.getByRole('menuitem', { name: '医保信息核对' })"
menu_el_e58e82e59586e5afb9e7a081:
description: "厂商对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "厂商对码"
playwright: "page.getByRole('menuitem', { name: '厂商对码' })"
menu_el_e4bba3e4b8bae7a791e5aea4e8afb7e9a286efbc88e5b7b2e7a1aee8aea4efbc89:
description: "代为科室请领(已确认)"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "代为科室请领(已确认)"
playwright: "page.getByRole('menuitem', { name: '代为科室请领(已确认)' })"
menu_el_e4bba3e4ba8ce7baa7e7a791e5aea4e8afb7e9a286e4baa7e59381:
description: "代二级科室请领产品"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "代二级科室请领产品"
playwright: "page.getByRole('menuitem', { name: '代二级科室请领产品' })"
menu_el_484953e4baa7e59381e4bfa1e681afe58f98e69bb4:
description: "HIS产品信息变更"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS产品信息变更"
playwright: "page.getByRole('menuitem', { name: 'HIS产品信息变更' })"
menu_el_484953e7a791e5aea4e69fa5e8afa2:
description: "HIS科室查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS科室查询"
playwright: "page.getByRole('menuitem', { name: 'HIS科室查询' })"
menu_el_484953e4babae59198e69fa5e8afa2:
description: "HIS人员查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS人员查询"
playwright: "page.getByRole('menuitem', { name: 'HIS人员查询' })"
menu_el_484953e694b6e8b4b9e9a1b9e4b88ee4baa7e59381e5afb9e785a7e585b3e7b3bbe69fa5e8afa2:
description: "HIS收费项与产品对照关系查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS收费项与产品对照关系查询"
playwright: "page.getByRole('menuitem', { name: 'HIS收费项与产品对照关系查询' })"
menu_el_e999a2e58cbae5afb9e7a081:
description: "院区对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "院区对码"
playwright: "page.getByRole('menuitem', { name: '院区对码' })"
menu_el_e4bd8ee580bce8aea1e8b4b9e68ea5e58fa3e69fa5e8afa2:
description: "低值计费接口查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "低值计费接口查询"
playwright: "page.getByRole('menuitem', { name: '低值计费接口查询' })"
menu_el_e699bae883bde69f9ce4b88ee5ba93e58cbae5afb9e7a081:
description: "智能柜与库区对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "智能柜与库区对码"
playwright: "page.getByRole('menuitem', { name: '智能柜与库区对码' })"
menu_el_e789a9e8b584e5ad97e585b8e68ea8e98081e8aeb0e5bd95:
description: "物资字典推送记录"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "物资字典推送记录"
playwright: "page.getByRole('menuitem', { name: '物资字典推送记录' })"
menu_el_e5b9b3e58fb0e4baa7e59381e4bbb7e6a0bce5b7aee5bc82e69fa5e8afa2:
description: "平台产品价格差异查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "平台产品价格差异查询"
playwright: "page.getByRole('menuitem', { name: '平台产品价格差异查询' })"
menu_el_e8afb7e9a286e58d95e68ea5e58fa3e69fa5e8afa2:
description: "请领单接口查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "请领单接口查询"
playwright: "page.getByRole('menuitem', { name: '请领单接口查询' })"
menu_el_e68ea5e58fa3e695b0e68daee7bbb4e68aa4:
description: "接口数据维护"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "接口数据维护"
playwright: "page.getByRole('menuitem', { name: '接口数据维护' })"
el_e58cbbe4bf9de4bfa1e681afe6a0b8e5afb9:
description: "医保信息核对"
element_type: tab
section: "main::main"
strategy: text
value: "医保信息核对"
playwright: "page.getByText('医保信息核对')"
tab_el_e58cbbe4bf9de4bfa1e681afe6a0b8e5afb9:
description: "医保信息核对"
element_type: div
section: "main::main"
strategy: id
value: "rc-tabs-0-tab-/basic/interface/scjs/yc/ybGoodsCheck"
playwright: "page.locator('#rc-tabs-0-tab-/basic/interface/scjs/yc/ybGoodsCheck')"
# --- scjsIframe::main ---
el_e696b0e5bbbae697b6e997b4DateRange:
description: "新建时间"
element_type: datepicker
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: label_text
value: "新建时间"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('新建时间', { exact: true })"
dateRange:
description: "开始日期"
element_type: text
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: id
value: "table_search_form_dateValue"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('#table_search_form_dateValue')"
el_e696b0e5bbbae697b6e997b4Input:
description: "结束日期"
element_type: text
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: placeholder
value: "结束日期"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByPlaceholder('结束日期')"
productNameInput:
description: "请输入"
element_type: text
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: id
value: "table_search_form_goodsName"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('#table_search_form_goodsName')"
el_e8a784e6a0bcInput:
description: "请输入"
element_type: text
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: id
value: "table_search_form_packageSpec"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('#table_search_form_packageSpec')"
searchBtn:
description: "查询"
element_type: button
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: role
role: button
name: "查询"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByRole('button', { name: '查询' })"
resetBtn:
description: "重置"
element_type: button
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: role
role: button
name: "重置"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByRole('button', { name: '重置' })"
expandFilterBtn:
description: "展开"
element_type: button
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: role
role: button
name: "展开"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByRole('button', { name: '展开' })"
el_e585a8e983a8:
description: "全部"
element_type: tab
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: text
value: "全部"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('全部')"
el_e68890e58a9f:
description: "成功"
element_type: tab
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: text
value: "成功"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('成功')"
el_e5a4b1e8b4a5:
description: "失败"
element_type: tab
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: text
value: "失败"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('失败')"
el_e5be85e6a0b8e9aa8c:
description: "待核验"
element_type: tab
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: text
value: "待核验"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('待核验')"
el_e9809ae8bf87Btn:
description: "通过"
element_type: button
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: role
role: button
name: "通过"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByRole('button', { name: '通过' })"
detailBtn:
description: "详情"
element_type: button
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: role
role: button
name: "详情"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByRole('button', { name: '详情' })"
el_e59e8be58fb7Input:
description: "请输入"
element_type: text
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: id
value: "table_search_form_materialModel"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('#table_search_form_materialModel')"
el_e7949fe4baa7e4bc81e4b89aInput:
description: "请输入"
element_type: text
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: id
value: "table_search_form_manufactName"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('#table_search_form_manufactName')"
el_3237e4bd8de58cbbe4bf9de7bc96e7a081Input:
description: "请输入"
element_type: text
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: id
value: "table_search_form_insuranceCode"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('#table_search_form_insuranceCode')"
el_e5bc82e5b8b8e7b1bbe59e8bSelect:
description: "请选择"
element_type: select
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: label_text
value: "异常类型"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('异常类型', { exact: true })"
el_e5bc82e5b8b8e7b1bbe59e8bInput:
description: "异常类型"
element_type: search
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: id
value: "table_search_form_limitItmeError"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('#table_search_form_limitItmeError')"
collapseFilterBtn:
description: "收起"
element_type: button
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: role
role: button
name: "收起"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByRole('button', { name: '收起' })"
# --- scjsIframe::pagination ---
pagination_el_e585b131303233e69da1313233343536323030e69da12fe9a1b5e8b7b3e887b3e9a1b5:
description: "共 1023 条123456200 条/页跳至页"
element_type: ul
section: "scjsIframe::pagination"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: text
value: "共 1023 条123456200 条/页跳至页"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('共 1023 条123456200 条/页跳至页')"
pagination_prevPageBtn:
description: "上一页"
element_type: li
section: "scjsIframe::pagination"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: text
value: "上一页"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('上一页')"
pagination_page_1:
description: "1"
element_type: pagination_item
section: "scjsIframe::pagination"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: css
value: ".ant-pagination-item-active"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('.ant-pagination-item-active')"
pagination_page_2:
description: "2"
element_type: pagination_item
section: "scjsIframe::pagination"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: text
value: "2"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('2')"
pagination_page_3:
description: "3"
element_type: pagination_item
section: "scjsIframe::pagination"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: text
value: "3"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('3')"
pagination_page_4:
description: "4"
element_type: pagination_item
section: "scjsIframe::pagination"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: text
value: "4"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('4')"
pagination_page_5:
description: "5"
element_type: pagination_item
section: "scjsIframe::pagination"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: text
value: "5"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('5')"
pagination_page_6:
description: "6"
element_type: pagination_item
section: "scjsIframe::pagination"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: text
value: "6"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('6')"
pagination_nextPageBtn:
description: "下一页"
element_type: li
section: "scjsIframe::pagination"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: text
value: "下一页"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('下一页')"
pagination_pageSizeSelect:
description: "200 条/页"
element_type: select
section: "scjsIframe::pagination"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: text
value: "200 条/页"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('200 条/页')"
# Auto-generated from iface-low-billing-elements.json
# Source: http://spdtest.cmic.com.cn:8080/spd/basic/interface/interface/lowBillingSearch
# Scanned: 2026-11-03T01:35:37.361Z
# Page: 基础设置 > 接口管理 > 低值计费接口查询
# Note: filter dropdown was opened during scan
page: iface-low-billing
module: spd-basic
url: http://spdtest.cmic.com.cn:8080/spd/basic/interface/interface/lowBillingSearch
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_e68ea5e58fa3e697a5e5bf97:
description: "接口日志"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "接口日志"
playwright: "page.getByRole('menuitem', { name: '接口日志' })"
menu_el_e68ea8e98081e789a9e4bbb7:
description: "推送物价"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "推送物价"
playwright: "page.getByRole('menuitem', { name: '推送物价' })"
menu_el_e694b6e8b4b9e9a1b9e79baee5afb9e7a081:
description: "收费项目对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "收费项目对码"
playwright: "page.getByRole('menuitem', { name: '收费项目对码' })"
menu_el_e5a496e59bb4e4baa7e59381e58f98e69bb4:
description: "外围产品变更"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "外围产品变更"
playwright: "page.getByRole('menuitem', { name: '外围产品变更' })"
menu_el_484953e4bbb7e5afb9e785a7e69fa5e8afa2:
description: "HIS价对照查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS价对照查询"
playwright: "page.getByRole('menuitem', { name: 'HIS价对照查询' })"
menu_el_e5a496e983a8e58f98e69bb4e6988ee7bb86e4bfa1e681afe69fa5e8afa2:
description: "外部变更明细信息查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "外部变更明细信息查询"
playwright: "page.getByRole('menuitem', { name: '外部变更明细信息查询' })"
menu_el_e58cbbe4bf9de4bfa1e681afe6a0b8e5afb9:
description: "医保信息核对"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "医保信息核对"
playwright: "page.getByRole('menuitem', { name: '医保信息核对' })"
menu_el_e58e82e59586e5afb9e7a081:
description: "厂商对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "厂商对码"
playwright: "page.getByRole('menuitem', { name: '厂商对码' })"
menu_el_e4bba3e4b8bae7a791e5aea4e8afb7e9a286efbc88e5b7b2e7a1aee8aea4efbc89:
description: "代为科室请领(已确认)"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "代为科室请领(已确认)"
playwright: "page.getByRole('menuitem', { name: '代为科室请领(已确认)' })"
menu_el_e4bba3e4ba8ce7baa7e7a791e5aea4e8afb7e9a286e4baa7e59381:
description: "代二级科室请领产品"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "代二级科室请领产品"
playwright: "page.getByRole('menuitem', { name: '代二级科室请领产品' })"
menu_el_484953e4baa7e59381e4bfa1e681afe58f98e69bb4:
description: "HIS产品信息变更"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS产品信息变更"
playwright: "page.getByRole('menuitem', { name: 'HIS产品信息变更' })"
menu_el_484953e7a791e5aea4e69fa5e8afa2:
description: "HIS科室查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS科室查询"
playwright: "page.getByRole('menuitem', { name: 'HIS科室查询' })"
menu_el_484953e4babae59198e69fa5e8afa2:
description: "HIS人员查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS人员查询"
playwright: "page.getByRole('menuitem', { name: 'HIS人员查询' })"
menu_el_484953e694b6e8b4b9e9a1b9e4b88ee4baa7e59381e5afb9e785a7e585b3e7b3bbe69fa5e8afa2:
description: "HIS收费项与产品对照关系查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS收费项与产品对照关系查询"
playwright: "page.getByRole('menuitem', { name: 'HIS收费项与产品对照关系查询' })"
menu_el_e999a2e58cbae5afb9e7a081:
description: "院区对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "院区对码"
playwright: "page.getByRole('menuitem', { name: '院区对码' })"
menu_el_e4bd8ee580bce8aea1e8b4b9e68ea5e58fa3e69fa5e8afa2:
description: "低值计费接口查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "低值计费接口查询"
playwright: "page.getByRole('menuitem', { name: '低值计费接口查询' })"
menu_el_e699bae883bde69f9ce4b88ee5ba93e58cbae5afb9e7a081:
description: "智能柜与库区对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "智能柜与库区对码"
playwright: "page.getByRole('menuitem', { name: '智能柜与库区对码' })"
menu_el_e789a9e8b584e5ad97e585b8e68ea8e98081e8aeb0e5bd95:
description: "物资字典推送记录"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "物资字典推送记录"
playwright: "page.getByRole('menuitem', { name: '物资字典推送记录' })"
menu_el_e5b9b3e58fb0e4baa7e59381e4bbb7e6a0bce5b7aee5bc82e69fa5e8afa2:
description: "平台产品价格差异查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "平台产品价格差异查询"
playwright: "page.getByRole('menuitem', { name: '平台产品价格差异查询' })"
menu_el_e8afb7e9a286e58d95e68ea5e58fa3e69fa5e8afa2:
description: "请领单接口查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "请领单接口查询"
playwright: "page.getByRole('menuitem', { name: '请领单接口查询' })"
menu_el_e68ea5e58fa3e695b0e68daee7bbb4e68aa4:
description: "接口数据维护"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "接口数据维护"
playwright: "page.getByRole('menuitem', { name: '接口数据维护' })"
el_e4bd8ee580bce8aea1e8b4b9e68ea5e58fa3e69fa5e8afa2:
description: "低值计费接口查询"
element_type: tab
section: "main::main"
strategy: text
value: "低值计费接口查询"
playwright: "page.getByText('低值计费接口查询')"
tab_el_e4bd8ee580bce8aea1e8b4b9e68ea5e58fa3e69fa5e8afa2:
description: "低值计费接口查询"
element_type: div
section: "main::main"
strategy: id
value: "rc-tabs-0-tab-/basic/interface/interface/lowBillingSearch"
playwright: "page.locator('#rc-tabs-0-tab-/basic/interface/interface/lowBillingSearch')"
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('结束日期')"
el_e8aea1e8b4b9e78ab6e68081Select:
description: "请选择"
element_type: select
section: "main::main"
strategy: label_text
value: "计费状态"
playwright: "page.getByText('计费状态', { exact: true })"
el_e8aea1e8b4b9e78ab6e68081Input:
description: "计费状态"
element_type: search
section: "main::main"
strategy: id
value: "table_search_form_jfStatus"
playwright: "page.locator('#table_search_form_jfStatus')"
el_e997a8e8af8a2fe4bd8fe999a2e58fb7Input:
description: "请输入"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_patientInMzId"
playwright: "page.locator('#table_search_form_patientInMzId')"
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: '展开' })"
exportBtn:
description: "导 出"
element_type: button
section: "main::main"
strategy: role
role: button
name: "导 出"
playwright: "page.getByRole('button', { name: '导 出' })"
el_e694b6e8b4b9e7b1bbe59e8bSelect:
description: "请选择"
element_type: select
section: "main::main"
strategy: label_text
value: "收费类型"
playwright: "page.getByText('收费类型', { exact: true })"
el_e694b6e8b4b9e7b1bbe59e8bInput:
description: "收费类型"
element_type: search
section: "main::main"
strategy: id
value: "table_search_form_fyArea"
playwright: "page.locator('#table_search_form_fyArea')"
el_e8b4b9e794a8e7b1bbe59e8bSelect:
description: "请选择"
element_type: select
section: "main::main"
strategy: label_text
value: "费用类型"
playwright: "page.getByText('费用类型', { exact: true })"
el_e8b4b9e794a8e7b1bbe59e8bInput:
description: "费用类型"
element_type: search
section: "main::main"
strategy: id
value: "table_search_form_fyType"
playwright: "page.locator('#table_search_form_fyType')"
el_e682a3e88085e5a793e5908dInput:
description: "请输入"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_cname"
playwright: "page.locator('#table_search_form_cname')"
el_e6898be69cafe58cbbe7949fInput:
description: "请输入"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_operationDoctor"
playwright: "page.locator('#table_search_form_operationDoctor')"
el_e69cafe5898de8af8ae696ade5908de7a7b0Input:
description: "请输入"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_diagnosis"
playwright: "page.locator('#table_search_form_diagnosis')"
el_e6898be69cafe697b6e997b4DateRange:
description: "手术时间"
element_type: datepicker
section: "main::main"
strategy: label_text
value: "手术时间"
playwright: "page.getByText('手术时间', { exact: true })"
el_e6898be69cafe697b6e997b4Input:
description: "开始日期"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_dateValuess"
playwright: "page.locator('#table_search_form_dateValuess')"
el_e6898be69cafe697b6e997b4Input_2:
description: "结束日期"
element_type: text
section: "main::main"
strategy: placeholder
value: "结束日期"
playwright: "page.getByPlaceholder('结束日期')"
el_e8aea1e8b4b9e697b6e997b4DateRange:
description: "计费时间"
element_type: datepicker
section: "main::main"
strategy: label_text
value: "计费时间"
playwright: "page.getByText('计费时间', { exact: true })"
el_e8aea1e8b4b9e697b6e997b4Input:
description: "开始日期"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_dateValuejf"
playwright: "page.locator('#table_search_form_dateValuejf')"
el_e8aea1e8b4b9e697b6e997b4Input_2:
description: "结束日期"
element_type: text
section: "main::main"
strategy: placeholder
value: "结束日期"
playwright: "page.getByPlaceholder('结束日期')"
el_e789a9e4bbb7e5908de7a7b0Input:
description: "请输入"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_wjName"
playwright: "page.locator('#table_search_form_wjName')"
collapseFilterBtn:
description: "收起"
element_type: button
section: "main::main"
strategy: role
role: button
name: "收起"
playwright: "page.getByRole('button', { name: '收起' })"
# Auto-generated from iface-mat-push-elements.json
# Source: http://spdtest.cmic.com.cn:8080/spd/basic/interface/scjs/yc/pushGoods
# Scanned: 2026-11-03T01:43:22.102Z
# Page: 基础设置 > 接口管理 > 物资字典推送记录
# Note: filter dropdown was opened during scan
page: iface-mat-push
module: spd-basic
url: http://spdtest.cmic.com.cn:8080/spd/basic/interface/scjs/yc/pushGoods
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_e68ea5e58fa3e697a5e5bf97:
description: "接口日志"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "接口日志"
playwright: "page.getByRole('menuitem', { name: '接口日志' })"
menu_el_e68ea8e98081e789a9e4bbb7:
description: "推送物价"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "推送物价"
playwright: "page.getByRole('menuitem', { name: '推送物价' })"
menu_el_e694b6e8b4b9e9a1b9e79baee5afb9e7a081:
description: "收费项目对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "收费项目对码"
playwright: "page.getByRole('menuitem', { name: '收费项目对码' })"
menu_el_e5a496e59bb4e4baa7e59381e58f98e69bb4:
description: "外围产品变更"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "外围产品变更"
playwright: "page.getByRole('menuitem', { name: '外围产品变更' })"
menu_el_484953e4bbb7e5afb9e785a7e69fa5e8afa2:
description: "HIS价对照查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS价对照查询"
playwright: "page.getByRole('menuitem', { name: 'HIS价对照查询' })"
menu_el_e5a496e983a8e58f98e69bb4e6988ee7bb86e4bfa1e681afe69fa5e8afa2:
description: "外部变更明细信息查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "外部变更明细信息查询"
playwright: "page.getByRole('menuitem', { name: '外部变更明细信息查询' })"
menu_el_e58cbbe4bf9de4bfa1e681afe6a0b8e5afb9:
description: "医保信息核对"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "医保信息核对"
playwright: "page.getByRole('menuitem', { name: '医保信息核对' })"
menu_el_e58e82e59586e5afb9e7a081:
description: "厂商对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "厂商对码"
playwright: "page.getByRole('menuitem', { name: '厂商对码' })"
menu_el_e4bba3e4b8bae7a791e5aea4e8afb7e9a286efbc88e5b7b2e7a1aee8aea4efbc89:
description: "代为科室请领(已确认)"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "代为科室请领(已确认)"
playwright: "page.getByRole('menuitem', { name: '代为科室请领(已确认)' })"
menu_el_e4bba3e4ba8ce7baa7e7a791e5aea4e8afb7e9a286e4baa7e59381:
description: "代二级科室请领产品"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "代二级科室请领产品"
playwright: "page.getByRole('menuitem', { name: '代二级科室请领产品' })"
menu_el_484953e4baa7e59381e4bfa1e681afe58f98e69bb4:
description: "HIS产品信息变更"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS产品信息变更"
playwright: "page.getByRole('menuitem', { name: 'HIS产品信息变更' })"
menu_el_484953e7a791e5aea4e69fa5e8afa2:
description: "HIS科室查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS科室查询"
playwright: "page.getByRole('menuitem', { name: 'HIS科室查询' })"
menu_el_484953e4babae59198e69fa5e8afa2:
description: "HIS人员查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS人员查询"
playwright: "page.getByRole('menuitem', { name: 'HIS人员查询' })"
menu_el_484953e694b6e8b4b9e9a1b9e4b88ee4baa7e59381e5afb9e785a7e585b3e7b3bbe69fa5e8afa2:
description: "HIS收费项与产品对照关系查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS收费项与产品对照关系查询"
playwright: "page.getByRole('menuitem', { name: 'HIS收费项与产品对照关系查询' })"
menu_el_e999a2e58cbae5afb9e7a081:
description: "院区对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "院区对码"
playwright: "page.getByRole('menuitem', { name: '院区对码' })"
menu_el_e4bd8ee580bce8aea1e8b4b9e68ea5e58fa3e69fa5e8afa2:
description: "低值计费接口查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "低值计费接口查询"
playwright: "page.getByRole('menuitem', { name: '低值计费接口查询' })"
menu_el_e699bae883bde69f9ce4b88ee5ba93e58cbae5afb9e7a081:
description: "智能柜与库区对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "智能柜与库区对码"
playwright: "page.getByRole('menuitem', { name: '智能柜与库区对码' })"
menu_el_e789a9e8b584e5ad97e585b8e68ea8e98081e8aeb0e5bd95:
description: "物资字典推送记录"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "物资字典推送记录"
playwright: "page.getByRole('menuitem', { name: '物资字典推送记录' })"
menu_el_e5b9b3e58fb0e4baa7e59381e4bbb7e6a0bce5b7aee5bc82e69fa5e8afa2:
description: "平台产品价格差异查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "平台产品价格差异查询"
playwright: "page.getByRole('menuitem', { name: '平台产品价格差异查询' })"
menu_el_e8afb7e9a286e58d95e68ea5e58fa3e69fa5e8afa2:
description: "请领单接口查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "请领单接口查询"
playwright: "page.getByRole('menuitem', { name: '请领单接口查询' })"
menu_el_e68ea5e58fa3e695b0e68daee7bbb4e68aa4:
description: "接口数据维护"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "接口数据维护"
playwright: "page.getByRole('menuitem', { name: '接口数据维护' })"
el_e789a9e8b584e5ad97e585b8e68ea8e98081e8aeb0e5bd95:
description: "物资字典推送记录"
element_type: tab
section: "main::main"
strategy: text
value: "物资字典推送记录"
playwright: "page.getByText('物资字典推送记录')"
tab_el_e789a9e8b584e5ad97e585b8e68ea8e98081e8aeb0e5bd95:
description: "物资字典推送记录"
element_type: div
section: "main::main"
strategy: id
value: "rc-tabs-0-tab-/basic/interface/scjs/yc/pushGoods"
playwright: "page.locator('#rc-tabs-0-tab-/basic/interface/scjs/yc/pushGoods')"
# --- scjsIframe::main ---
el_e789a9e69699e5908de7a7b0Input:
description: "请输入"
element_type: text
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: id
value: "table_search_form_goodsName"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('#table_search_form_goodsName')"
specModel:
description: "请输入"
element_type: text
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: id
value: "table_search_form_goodsSpec"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('#table_search_form_goodsSpec')"
el_e59e8be58fb7Input:
description: "请输入"
element_type: text
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: id
value: "table_search_form_goodsModel"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('#table_search_form_goodsModel')"
searchBtn:
description: "查询"
element_type: button
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: role
role: button
name: "查询"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByRole('button', { name: '查询' })"
resetBtn:
description: "重置"
element_type: button
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: role
role: button
name: "重置"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByRole('button', { name: '重置' })"
expandFilterBtn:
description: "展开"
element_type: button
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: role
role: button
name: "展开"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByRole('button', { name: '展开' })"
exportBtn:
description: "导出"
element_type: button
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: role
role: button
name: "导出"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByRole('button', { name: '导出' })"
detailBtn:
description: "详情"
element_type: button
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: role
role: button
name: "详情"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByRole('button', { name: '详情' })"
el_e68ea8e98081e697a5e69c9fDateRange:
description: "推送日期"
element_type: datepicker
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: label_text
value: "推送日期"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('推送日期', { exact: true })"
el_e68ea8e98081e697a5e69c9fInput:
description: "开始日期"
element_type: text
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: id
value: "table_search_form_queryCreateTime"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('#table_search_form_queryCreateTime')"
el_e68ea8e98081e697a5e69c9fInput_2:
description: "结束日期"
element_type: text
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: placeholder
value: "结束日期"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByPlaceholder('结束日期')"
el_e69c9be6b5b7e6b3a8e5868ce8af81e58fb7Input:
description: "请输入"
element_type: text
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: id
value: "table_search_form_reg_no"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('#table_search_form_reg_no')"
chargeableSelect:
description: "请选择"
element_type: select
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: label_text
value: "是否收费"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('是否收费', { exact: true })"
chargeableInput:
description: "是否收费"
element_type: search
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: id
value: "table_search_form_chargeable"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('#table_search_form_chargeable')"
manufacturerInput:
description: "请输入"
element_type: text
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: id
value: "table_search_form_manufact_name"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('#table_search_form_manufact_name')"
el_e794b3e8afb7e6938de4bd9ce6a087e8af86Select:
description: "请选择"
element_type: select
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: label_text
value: "申请操作标识"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('申请操作标识', { exact: true })"
el_e794b3e8afb7e6938de4bd9ce6a087e8af86Input:
description: "申请操作标识"
element_type: search
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: id
value: "table_search_form_operation_flag"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('#table_search_form_operation_flag')"
el_e698afe590a6e58f91e98081e789a9e4bbb7Select:
description: "请选择"
element_type: select
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: label_text
value: "是否发送物价"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('是否发送物价', { exact: true })"
el_e698afe590a6e58f91e98081e789a9e4bbb7Input:
description: "是否发送物价"
element_type: search
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: id
value: "table_search_form_is_send_W"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('#table_search_form_is_send_W')"
el_3237e4bd8de58cbbe4bf9de7bc96e7a081Input:
description: "请输入"
element_type: text
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: id
value: "table_search_form_miTwentysevenCode"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('#table_search_form_miTwentysevenCode')"
collapseFilterBtn:
description: "收起"
element_type: button
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: role
role: button
name: "收起"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByRole('button', { name: '收起' })"
# --- scjsIframe::pagination ---
pagination_detail:
description: "共 2 条1200 条/页"
element_type: ul
section: "scjsIframe::pagination"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: label_text
value: "详情"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('详情', { exact: true })"
pagination_prevPageBtn:
description: "上一页"
element_type: li
section: "scjsIframe::pagination"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: label_text
value: "详情"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('详情', { exact: true })"
pagination_detailBtn:
description: "详情"
element_type: button
section: "scjsIframe::pagination"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: label_text
value: "详情"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('详情', { exact: true })"
pagination_page_1:
description: "1"
element_type: pagination_item
section: "scjsIframe::pagination"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: css
value: ".ant-pagination-item-active"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('.ant-pagination-item-active')"
pagination_nextPageBtn:
description: "下一页"
element_type: li
section: "scjsIframe::pagination"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: label_text
value: "详情"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('详情', { exact: true })"
pagination_detailBtn_2:
description: "详情"
element_type: button
section: "scjsIframe::pagination"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: label_text
value: "详情"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('详情', { exact: true })"
pagination_pageSizeSelect:
description: "200 条/页"
element_type: select
section: "scjsIframe::pagination"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: label_text
value: "详情"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('详情', { exact: true })"
# Auto-generated from iface-peripheral-elements.json
# Source: http://spdtest.cmic.com.cn:8080/spd/basic/interface/interface/peripheralProductChanges
# Scanned: 2026-11-03T01:50:38.809Z
# Page: 基础设置 > 接口管理 > 外围产品变更
# Note: filter dropdown was opened during scan
page: iface-peripheral
module: spd-basic
url: http://spdtest.cmic.com.cn:8080/spd/basic/interface/interface/peripheralProductChanges
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_e68ea5e58fa3e697a5e5bf97:
description: "接口日志"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "接口日志"
playwright: "page.getByRole('menuitem', { name: '接口日志' })"
menu_el_e68ea8e98081e789a9e4bbb7:
description: "推送物价"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "推送物价"
playwright: "page.getByRole('menuitem', { name: '推送物价' })"
menu_el_e694b6e8b4b9e9a1b9e79baee5afb9e7a081:
description: "收费项目对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "收费项目对码"
playwright: "page.getByRole('menuitem', { name: '收费项目对码' })"
menu_el_e5a496e59bb4e4baa7e59381e58f98e69bb4:
description: "外围产品变更"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "外围产品变更"
playwright: "page.getByRole('menuitem', { name: '外围产品变更' })"
menu_el_484953e4bbb7e5afb9e785a7e69fa5e8afa2:
description: "HIS价对照查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS价对照查询"
playwright: "page.getByRole('menuitem', { name: 'HIS价对照查询' })"
menu_el_e5a496e983a8e58f98e69bb4e6988ee7bb86e4bfa1e681afe69fa5e8afa2:
description: "外部变更明细信息查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "外部变更明细信息查询"
playwright: "page.getByRole('menuitem', { name: '外部变更明细信息查询' })"
menu_el_e58cbbe4bf9de4bfa1e681afe6a0b8e5afb9:
description: "医保信息核对"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "医保信息核对"
playwright: "page.getByRole('menuitem', { name: '医保信息核对' })"
menu_el_e58e82e59586e5afb9e7a081:
description: "厂商对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "厂商对码"
playwright: "page.getByRole('menuitem', { name: '厂商对码' })"
menu_el_e4bba3e4b8bae7a791e5aea4e8afb7e9a286efbc88e5b7b2e7a1aee8aea4efbc89:
description: "代为科室请领(已确认)"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "代为科室请领(已确认)"
playwright: "page.getByRole('menuitem', { name: '代为科室请领(已确认)' })"
menu_el_e4bba3e4ba8ce7baa7e7a791e5aea4e8afb7e9a286e4baa7e59381:
description: "代二级科室请领产品"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "代二级科室请领产品"
playwright: "page.getByRole('menuitem', { name: '代二级科室请领产品' })"
menu_el_484953e4baa7e59381e4bfa1e681afe58f98e69bb4:
description: "HIS产品信息变更"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS产品信息变更"
playwright: "page.getByRole('menuitem', { name: 'HIS产品信息变更' })"
menu_el_484953e7a791e5aea4e69fa5e8afa2:
description: "HIS科室查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS科室查询"
playwright: "page.getByRole('menuitem', { name: 'HIS科室查询' })"
menu_el_484953e4babae59198e69fa5e8afa2:
description: "HIS人员查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS人员查询"
playwright: "page.getByRole('menuitem', { name: 'HIS人员查询' })"
menu_el_484953e694b6e8b4b9e9a1b9e4b88ee4baa7e59381e5afb9e785a7e585b3e7b3bbe69fa5e8afa2:
description: "HIS收费项与产品对照关系查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS收费项与产品对照关系查询"
playwright: "page.getByRole('menuitem', { name: 'HIS收费项与产品对照关系查询' })"
menu_el_e999a2e58cbae5afb9e7a081:
description: "院区对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "院区对码"
playwright: "page.getByRole('menuitem', { name: '院区对码' })"
menu_el_e4bd8ee580bce8aea1e8b4b9e68ea5e58fa3e69fa5e8afa2:
description: "低值计费接口查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "低值计费接口查询"
playwright: "page.getByRole('menuitem', { name: '低值计费接口查询' })"
menu_el_e699bae883bde69f9ce4b88ee5ba93e58cbae5afb9e7a081:
description: "智能柜与库区对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "智能柜与库区对码"
playwright: "page.getByRole('menuitem', { name: '智能柜与库区对码' })"
menu_el_e789a9e8b584e5ad97e585b8e68ea8e98081e8aeb0e5bd95:
description: "物资字典推送记录"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "物资字典推送记录"
playwright: "page.getByRole('menuitem', { name: '物资字典推送记录' })"
menu_el_e5b9b3e58fb0e4baa7e59381e4bbb7e6a0bce5b7aee5bc82e69fa5e8afa2:
description: "平台产品价格差异查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "平台产品价格差异查询"
playwright: "page.getByRole('menuitem', { name: '平台产品价格差异查询' })"
menu_el_e8afb7e9a286e58d95e68ea5e58fa3e69fa5e8afa2:
description: "请领单接口查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "请领单接口查询"
playwright: "page.getByRole('menuitem', { name: '请领单接口查询' })"
menu_el_e68ea5e58fa3e695b0e68daee7bbb4e68aa4:
description: "接口数据维护"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "接口数据维护"
playwright: "page.getByRole('menuitem', { name: '接口数据维护' })"
el_e5a496e59bb4e4baa7e59381e58f98e69bb4:
description: "外围产品变更"
element_type: tab
section: "main::main"
strategy: text
value: "外围产品变更"
playwright: "page.getByText('外围产品变更')"
tab_el_e5a496e59bb4e4baa7e59381e58f98e69bb4:
description: "外围产品变更"
element_type: div
section: "main::main"
strategy: id
value: "rc-tabs-0-tab-/basic/interface/interface/peripheralProductChanges"
playwright: "page.locator('#rc-tabs-0-tab-/basic/interface/interface/peripheralProductChanges')"
productCodeInput:
description: "物资编码/名称"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_goodsCode"
playwright: "page.locator('#table_search_form_goodsCode')"
specModel:
description: "规格/型号"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_goodsSpec"
playwright: "page.locator('#table_search_form_goodsSpec')"
manufacturer:
description: "器械注册人"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_goodsMfrsName"
playwright: "page.locator('#table_search_form_goodsMfrsName')"
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_e585a8e983a8283729:
description: "全部(7)"
element_type: tab
section: "main::main"
strategy: text
value: "全部(7)"
playwright: "page.getByText('全部(7)')"
el_e69caae5a484e79086283029:
description: "未处理(0)"
element_type: tab
section: "main::main"
strategy: text
value: "未处理(0)"
playwright: "page.getByText('未处理(0)')"
el_e7949fe68890e5a4b1e8b4a5283029:
description: "生成失败(0)"
element_type: tab
section: "main::main"
strategy: text
value: "生成失败(0)"
playwright: "page.getByText('生成失败(0)')"
el_e697a0e99c80e5a484e79086283129:
description: "无需处理(1)"
element_type: tab
section: "main::main"
strategy: text
value: "无需处理(1)"
playwright: "page.getByText('无需处理(1)')"
el_e58f98e69bb4e4b8ad283129:
description: "变更中(1)"
element_type: tab
section: "main::main"
strategy: text
value: "变更中(1)"
playwright: "page.getByText('变更中(1)')"
el_e58f98e69bb4e5a4b1e8b4a5283029:
description: "变更失败(0)"
element_type: tab
section: "main::main"
strategy: text
value: "变更失败(0)"
playwright: "page.getByText('变更失败(0)')"
el_e58f98e69bb4e5ae8ce68890283529:
description: "变更完成(5)"
element_type: tab
section: "main::main"
strategy: text
value: "变更完成(5)"
playwright: "page.getByText('变更完成(5)')"
el_e689b9e9878fe7949fe68890Btn:
description: "批量生成"
element_type: button
section: "main::main"
strategy: role
role: button
name: "批量生成"
playwright: "page.getByRole('button', { name: '批量生成' })"
el_e5afbce587bae58f98e69bb4e6988ee7bb86Btn:
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: '导 出' })"
detailBtn:
description: "详情"
element_type: button
section: "main::main"
strategy: role
role: button
name: "详情"
playwright: "page.getByRole('button', { name: '详情' })"
supplierName:
description: "销售商(自定义)"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_provName"
playwright: "page.locator('#table_search_form_provName')"
dimensionSupplierInput:
description: "供应商"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_subProvName"
playwright: "page.locator('#table_search_form_subProvName')"
el_e8b584e4baa7e7bc96e58fb7Input:
description: "请输入"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_hrp"
playwright: "page.locator('#table_search_form_hrp')"
el_e69bb4e696b0e697b6e997b4DateRange:
description: "更新时间"
element_type: datepicker
section: "main::main"
strategy: label_text
value: "更新时间"
playwright: "page.getByText('更新时间', { exact: true })"
el_e69bb4e696b0e697b6e997b4Input:
description: "开始时间"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_rangeTime"
playwright: "page.locator('#table_search_form_rangeTime')"
el_e69bb4e696b0e697b6e997b4Input_2:
description: "截止时间"
element_type: text
section: "main::main"
strategy: placeholder
value: "截止时间"
playwright: "page.getByPlaceholder('截止时间')"
el_e5a484e79086e4babaSelect:
description: "制单人"
element_type: select
section: "main::main"
strategy: label_text
value: "处理人"
playwright: "page.getByText('处理人', { exact: true })"
el_e5a484e79086e697b6e997b4DateRange:
description: "处理时间"
element_type: datepicker
section: "main::main"
strategy: label_text
value: "处理时间"
playwright: "page.getByText('处理时间', { exact: true })"
el_e5a484e79086e697b6e997b4Input:
description: "开始时间"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_handleRangeTime"
playwright: "page.locator('#table_search_form_handleRangeTime')"
el_e5a484e79086e697b6e997b4Input_2:
description: "截止时间"
element_type: text
section: "main::main"
strategy: placeholder
value: "截止时间"
playwright: "page.getByPlaceholder('截止时间')"
el_e698afe590a6e585b3e994aee4bfa1e681afe58f98e69bb4Select:
description: "请选择"
element_type: select
section: "main::main"
strategy: label_text
value: "是否关键信息变更"
playwright: "page.getByText('是否关键信息变更', { exact: true })"
el_e698afe590a6e585b3e994aee4bfa1e681afe58f98e69bb4Input:
description: "是否关键信息变更"
element_type: search
section: "main::main"
strategy: id
value: "table_search_form_keyFlag"
playwright: "page.locator('#table_search_form_keyFlag')"
collapseFilterBtn:
description: "收起"
element_type: button
section: "main::main"
strategy: role
role: button
name: "收起"
playwright: "page.getByRole('button', { name: '收起' })"
el_e5a484e79086e4babaInput:
description: "处理人"
element_type: search
section: "main::main"
strategy: id
value: "table_search_form_operatorUserList"
playwright: "page.locator('#table_search_form_operatorUserList')"
# --- main::pagination ---
pagination_el_e585b137e69da1313530e69da12fe9a1b5:
description: "共 7 条150 条/页"
element_type: ul
section: "main::pagination"
strategy: text
value: "共 7 条150 条/页"
playwright: "page.getByText('共 7 条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 条/页')"
# Auto-generated from iface-platform-diff-elements.json
# Source: http://spdtest.cmic.com.cn:8080/spd/basic/interface/interface/platformPriceCompare
# Scanned: 2026-11-03T01:51:21.344Z
# Page: 基础设置 > 接口管理 > 平台产品价格差异查询
# Note: filter dropdown was opened during scan
page: iface-platform-diff
module: spd-basic
url: http://spdtest.cmic.com.cn:8080/spd/basic/interface/interface/platformPriceCompare
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_e68ea5e58fa3e697a5e5bf97:
description: "接口日志"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "接口日志"
playwright: "page.getByRole('menuitem', { name: '接口日志' })"
menu_el_e68ea8e98081e789a9e4bbb7:
description: "推送物价"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "推送物价"
playwright: "page.getByRole('menuitem', { name: '推送物价' })"
menu_el_e694b6e8b4b9e9a1b9e79baee5afb9e7a081:
description: "收费项目对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "收费项目对码"
playwright: "page.getByRole('menuitem', { name: '收费项目对码' })"
menu_el_e5a496e59bb4e4baa7e59381e58f98e69bb4:
description: "外围产品变更"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "外围产品变更"
playwright: "page.getByRole('menuitem', { name: '外围产品变更' })"
menu_el_484953e4bbb7e5afb9e785a7e69fa5e8afa2:
description: "HIS价对照查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS价对照查询"
playwright: "page.getByRole('menuitem', { name: 'HIS价对照查询' })"
menu_el_e5a496e983a8e58f98e69bb4e6988ee7bb86e4bfa1e681afe69fa5e8afa2:
description: "外部变更明细信息查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "外部变更明细信息查询"
playwright: "page.getByRole('menuitem', { name: '外部变更明细信息查询' })"
menu_el_e58cbbe4bf9de4bfa1e681afe6a0b8e5afb9:
description: "医保信息核对"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "医保信息核对"
playwright: "page.getByRole('menuitem', { name: '医保信息核对' })"
menu_el_e58e82e59586e5afb9e7a081:
description: "厂商对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "厂商对码"
playwright: "page.getByRole('menuitem', { name: '厂商对码' })"
menu_el_e4bba3e4b8bae7a791e5aea4e8afb7e9a286efbc88e5b7b2e7a1aee8aea4efbc89:
description: "代为科室请领(已确认)"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "代为科室请领(已确认)"
playwright: "page.getByRole('menuitem', { name: '代为科室请领(已确认)' })"
menu_el_e4bba3e4ba8ce7baa7e7a791e5aea4e8afb7e9a286e4baa7e59381:
description: "代二级科室请领产品"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "代二级科室请领产品"
playwright: "page.getByRole('menuitem', { name: '代二级科室请领产品' })"
menu_el_484953e4baa7e59381e4bfa1e681afe58f98e69bb4:
description: "HIS产品信息变更"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS产品信息变更"
playwright: "page.getByRole('menuitem', { name: 'HIS产品信息变更' })"
menu_el_484953e7a791e5aea4e69fa5e8afa2:
description: "HIS科室查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS科室查询"
playwright: "page.getByRole('menuitem', { name: 'HIS科室查询' })"
menu_el_484953e4babae59198e69fa5e8afa2:
description: "HIS人员查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS人员查询"
playwright: "page.getByRole('menuitem', { name: 'HIS人员查询' })"
menu_el_484953e694b6e8b4b9e9a1b9e4b88ee4baa7e59381e5afb9e785a7e585b3e7b3bbe69fa5e8afa2:
description: "HIS收费项与产品对照关系查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS收费项与产品对照关系查询"
playwright: "page.getByRole('menuitem', { name: 'HIS收费项与产品对照关系查询' })"
menu_el_e999a2e58cbae5afb9e7a081:
description: "院区对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "院区对码"
playwright: "page.getByRole('menuitem', { name: '院区对码' })"
menu_el_e4bd8ee580bce8aea1e8b4b9e68ea5e58fa3e69fa5e8afa2:
description: "低值计费接口查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "低值计费接口查询"
playwright: "page.getByRole('menuitem', { name: '低值计费接口查询' })"
menu_el_e699bae883bde69f9ce4b88ee5ba93e58cbae5afb9e7a081:
description: "智能柜与库区对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "智能柜与库区对码"
playwright: "page.getByRole('menuitem', { name: '智能柜与库区对码' })"
menu_el_e789a9e8b584e5ad97e585b8e68ea8e98081e8aeb0e5bd95:
description: "物资字典推送记录"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "物资字典推送记录"
playwright: "page.getByRole('menuitem', { name: '物资字典推送记录' })"
menu_el_e5b9b3e58fb0e4baa7e59381e4bbb7e6a0bce5b7aee5bc82e69fa5e8afa2:
description: "平台产品价格差异查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "平台产品价格差异查询"
playwright: "page.getByRole('menuitem', { name: '平台产品价格差异查询' })"
menu_el_e8afb7e9a286e58d95e68ea5e58fa3e69fa5e8afa2:
description: "请领单接口查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "请领单接口查询"
playwright: "page.getByRole('menuitem', { name: '请领单接口查询' })"
menu_el_e68ea5e58fa3e695b0e68daee7bbb4e68aa4:
description: "接口数据维护"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "接口数据维护"
playwright: "page.getByRole('menuitem', { name: '接口数据维护' })"
el_e5b9b3e58fb0e4baa7e59381e4bbb7e6a0bce5b7aee5bc82e69fa5e8afa2:
description: "平台产品价格差异查询"
element_type: tab
section: "main::main"
strategy: text
value: "平台产品价格差异查询"
playwright: "page.getByText('平台产品价格差异查询')"
tab_el_e5b9b3e58fb0e4baa7e59381e4bbb7e6a0bce5b7aee5bc82e69fa5e8afa2:
description: "平台产品价格差异查询"
element_type: div
section: "main::main"
strategy: id
value: "rc-tabs-0-tab-/basic/interface/interface/platformPriceCompare"
playwright: "page.locator('#rc-tabs-0-tab-/basic/interface/interface/platformPriceCompare')"
el_e5b9b3e58fb0Select:
description: "请选择"
element_type: select
section: "main::main"
strategy: label_text
value: "平台"
playwright: "page.getByText('平台', { exact: true })"
el_e5b9b3e58fb0Input:
description: "平台"
element_type: search
section: "main::main"
strategy: id
value: "table_search_form_thirdPlatformId"
playwright: "page.locator('#table_search_form_thirdPlatformId')"
el_e4baa7e59381e7bc96e7a081e5908de7a7b0Input:
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')"
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: '展开' })"
exportBtn:
description: "导 出"
element_type: button
section: "main::main"
strategy: role
role: button
name: "导 出"
playwright: "page.getByRole('button', { name: '导 出' })"
el_e9bb98e8aea4e99480e594aee5958628e887aae5ae9ae4b98929Select:
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')"
el_e9bb98e8aea4e4be9be5ba94e59586Select:
description: "请选择"
element_type: select
section: "main::main"
strategy: label_text
value: "默认供应商"
playwright: "page.getByText('默认供应商', { exact: true })"
el_e9bb98e8aea4e4be9be5ba94e59586Input:
description: "默认供应商"
element_type: search
section: "main::main"
strategy: id
value: "table_search_form_subProvId"
playwright: "page.locator('#table_search_form_subProvId')"
el_e5b7aee5bc82e7b1bbe59e8bSelect:
description: "请选择"
element_type: select
section: "main::main"
strategy: label_text
value: "差异类型"
playwright: "page.getByText('差异类型', { exact: true })"
manufacturer:
description: "请输入"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_goodsMfrsName"
playwright: "page.locator('#table_search_form_goodsMfrsName')"
collapseFilterBtn:
description: "收起"
element_type: button
section: "main::main"
strategy: role
role: button
name: "收起"
playwright: "page.getByRole('button', { name: '收起' })"
# --- main::pagination ---
pagination_el_535044e5ad97e585b8e4bbb7:
description: "共 30 条150 条/页"
element_type: ul
section: "main::pagination"
strategy: label_text
value: "SPD字典价"
playwright: "page.getByText('SPD字典价', { exact: true })"
pagination_prevPageBtn:
description: "上一页"
element_type: li
section: "main::pagination"
strategy: label_text
value: "SPD字典价"
playwright: "page.getByText('SPD字典价', { exact: true })"
pagination_el_535044e5ad97e585b8e4bbb7Btn:
description: "SPD字典价"
element_type: button
section: "main::pagination"
strategy: label_text
value: "SPD字典价"
playwright: "page.getByText('SPD字典价', { 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: "SPD字典价"
playwright: "page.getByText('SPD字典价', { exact: true })"
pagination_pageSizeSelect:
description: "50 条/页"
element_type: select
section: "main::pagination"
strategy: label_text
value: "SPD字典价"
playwright: "page.getByText('SPD字典价', { exact: true })"
# Auto-generated from iface-push-price-elements.json
# Source: http://spdtest.cmic.com.cn:8080/spd/basic/interface/scjs/yc/priceverification
# Scanned: 2026-11-03T01:54:11.188Z
# Page: 基础设置 > 接口管理 > 推送物价
# Note: filter dropdown was opened during scan
page: iface-push-price
module: spd-basic
url: http://spdtest.cmic.com.cn:8080/spd/basic/interface/scjs/yc/priceverification
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_e68ea5e58fa3e697a5e5bf97:
description: "接口日志"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "接口日志"
playwright: "page.getByRole('menuitem', { name: '接口日志' })"
menu_el_e68ea8e98081e789a9e4bbb7:
description: "推送物价"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "推送物价"
playwright: "page.getByRole('menuitem', { name: '推送物价' })"
menu_el_e694b6e8b4b9e9a1b9e79baee5afb9e7a081:
description: "收费项目对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "收费项目对码"
playwright: "page.getByRole('menuitem', { name: '收费项目对码' })"
menu_el_e5a496e59bb4e4baa7e59381e58f98e69bb4:
description: "外围产品变更"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "外围产品变更"
playwright: "page.getByRole('menuitem', { name: '外围产品变更' })"
menu_el_484953e4bbb7e5afb9e785a7e69fa5e8afa2:
description: "HIS价对照查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS价对照查询"
playwright: "page.getByRole('menuitem', { name: 'HIS价对照查询' })"
menu_el_e5a496e983a8e58f98e69bb4e6988ee7bb86e4bfa1e681afe69fa5e8afa2:
description: "外部变更明细信息查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "外部变更明细信息查询"
playwright: "page.getByRole('menuitem', { name: '外部变更明细信息查询' })"
menu_el_e58cbbe4bf9de4bfa1e681afe6a0b8e5afb9:
description: "医保信息核对"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "医保信息核对"
playwright: "page.getByRole('menuitem', { name: '医保信息核对' })"
menu_el_e58e82e59586e5afb9e7a081:
description: "厂商对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "厂商对码"
playwright: "page.getByRole('menuitem', { name: '厂商对码' })"
menu_el_e4bba3e4b8bae7a791e5aea4e8afb7e9a286efbc88e5b7b2e7a1aee8aea4efbc89:
description: "代为科室请领(已确认)"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "代为科室请领(已确认)"
playwright: "page.getByRole('menuitem', { name: '代为科室请领(已确认)' })"
menu_el_e4bba3e4ba8ce7baa7e7a791e5aea4e8afb7e9a286e4baa7e59381:
description: "代二级科室请领产品"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "代二级科室请领产品"
playwright: "page.getByRole('menuitem', { name: '代二级科室请领产品' })"
menu_el_484953e4baa7e59381e4bfa1e681afe58f98e69bb4:
description: "HIS产品信息变更"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS产品信息变更"
playwright: "page.getByRole('menuitem', { name: 'HIS产品信息变更' })"
menu_el_484953e7a791e5aea4e69fa5e8afa2:
description: "HIS科室查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS科室查询"
playwright: "page.getByRole('menuitem', { name: 'HIS科室查询' })"
menu_el_484953e4babae59198e69fa5e8afa2:
description: "HIS人员查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS人员查询"
playwright: "page.getByRole('menuitem', { name: 'HIS人员查询' })"
menu_el_484953e694b6e8b4b9e9a1b9e4b88ee4baa7e59381e5afb9e785a7e585b3e7b3bbe69fa5e8afa2:
description: "HIS收费项与产品对照关系查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS收费项与产品对照关系查询"
playwright: "page.getByRole('menuitem', { name: 'HIS收费项与产品对照关系查询' })"
menu_el_e999a2e58cbae5afb9e7a081:
description: "院区对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "院区对码"
playwright: "page.getByRole('menuitem', { name: '院区对码' })"
menu_el_e4bd8ee580bce8aea1e8b4b9e68ea5e58fa3e69fa5e8afa2:
description: "低值计费接口查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "低值计费接口查询"
playwright: "page.getByRole('menuitem', { name: '低值计费接口查询' })"
menu_el_e699bae883bde69f9ce4b88ee5ba93e58cbae5afb9e7a081:
description: "智能柜与库区对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "智能柜与库区对码"
playwright: "page.getByRole('menuitem', { name: '智能柜与库区对码' })"
menu_el_e789a9e8b584e5ad97e585b8e68ea8e98081e8aeb0e5bd95:
description: "物资字典推送记录"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "物资字典推送记录"
playwright: "page.getByRole('menuitem', { name: '物资字典推送记录' })"
menu_el_e5b9b3e58fb0e4baa7e59381e4bbb7e6a0bce5b7aee5bc82e69fa5e8afa2:
description: "平台产品价格差异查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "平台产品价格差异查询"
playwright: "page.getByRole('menuitem', { name: '平台产品价格差异查询' })"
menu_el_e8afb7e9a286e58d95e68ea5e58fa3e69fa5e8afa2:
description: "请领单接口查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "请领单接口查询"
playwright: "page.getByRole('menuitem', { name: '请领单接口查询' })"
menu_el_e68ea5e58fa3e695b0e68daee7bbb4e68aa4:
description: "接口数据维护"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "接口数据维护"
playwright: "page.getByRole('menuitem', { name: '接口数据维护' })"
el_e68ea8e98081e789a9e4bbb7:
description: "推送物价"
element_type: tab
section: "main::main"
strategy: text
value: "推送物价"
playwright: "page.getByText('推送物价')"
tab_el_e68ea8e98081e789a9e4bbb7:
description: "推送物价"
element_type: div
section: "main::main"
strategy: id
value: "rc-tabs-0-tab-/basic/interface/scjs/yc/priceverification"
playwright: "page.locator('#rc-tabs-0-tab-/basic/interface/scjs/yc/priceverification')"
# --- scjsIframe::main ---
el_535044e696b0e5bbbae697a5e69c9fDateRange:
description: "SPD新建日期"
element_type: datepicker
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: label_text
value: "SPD新建日期"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('SPD新建日期', { exact: true })"
el_535044e696b0e5bbbae697a5e69c9fInput:
description: "开始日期"
element_type: text
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: id
value: "table_search_form_queryCreateTime"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('#table_search_form_queryCreateTime')"
el_535044e696b0e5bbbae697a5e69c9fInput_2:
description: "结束日期"
element_type: text
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: placeholder
value: "结束日期"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByPlaceholder('结束日期')"
el_e789a9e69699e5908de7a7b0Input:
description: "请输入"
element_type: text
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: id
value: "table_search_form_goodsName"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('#table_search_form_goodsName')"
el_e8a784e6a0bcInput:
description: "请输入"
element_type: text
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: id
value: "table_search_form_regCertSpec"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('#table_search_form_regCertSpec')"
searchBtn:
description: "查询"
element_type: button
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: role
role: button
name: "查询"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByRole('button', { name: '查询' })"
resetBtn:
description: "重置"
element_type: button
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: role
role: button
name: "重置"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByRole('button', { name: '重置' })"
expandFilterBtn:
description: "展开"
element_type: button
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: role
role: button
name: "展开"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByRole('button', { name: '展开' })"
el_e585a8e983a8:
description: "全部"
element_type: tab
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: text
value: "全部"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('全部')"
el_e5be85e68ea8e98081:
description: "待推送"
element_type: tab
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: text
value: "待推送"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('待推送')"
el_e68ea8e98081e68890e58a9f:
description: "推送成功"
element_type: tab
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: text
value: "推送成功"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('推送成功')"
el_e68ea8e98081e5a4b1e8b4a5:
description: "推送失败"
element_type: tab
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: text
value: "推送失败"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('推送失败')"
el_e4b88de5a484e79086:
description: "不处理"
element_type: tab
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: text
value: "不处理"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('不处理')"
el_e68ea8e98081Btn:
description: "推送"
element_type: button
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: role
role: button
name: "推送"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByRole('button', { name: '推送' })"
el_e4b88de5a484e79086Btn:
description: "不处理"
element_type: button
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: role
role: button
name: "不处理"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByRole('button', { name: '不处理' })"
el_e59e8be58fb7Input:
description: "请输入"
element_type: text
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: id
value: "table_search_form_regCertModel"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('#table_search_form_regCertModel')"
manufacturer:
description: "请输入"
element_type: text
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: id
value: "table_search_form_goodsMfrsName"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('#table_search_form_goodsMfrsName')"
el_3237e4bd8de58cbbe4bf9de7bc96e7a081Input:
description: "请输入"
element_type: text
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: id
value: "table_search_form_miTwentysevenCode"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('#table_search_form_miTwentysevenCode')"
el_e7b1bbe59e8bSelect:
description: "请选择"
element_type: select
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: label_text
value: "类型"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('类型', { exact: true })"
el_e7b1bbe59e8bInput:
description: "类型"
element_type: search
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: id
value: "table_search_form_type"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('#table_search_form_type')"
el_484953e5aea1e6a0b8e7bb93e69e9cSelect:
description: "请选择"
element_type: select
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: label_text
value: "HIS审核结果"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('HIS审核结果', { exact: true })"
el_484953e5aea1e6a0b8e7bb93e69e9cInput:
description: "HIS审核结果"
element_type: search
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: id
value: "table_search_form_hisResult"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('#table_search_form_hisResult')"
collapseFilterBtn:
description: "收起"
element_type: button
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: role
role: button
name: "收起"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByRole('button', { name: '收起' })"
# Auto-generated from iface-req-query-elements.json
# Source: http://spdtest.cmic.com.cn:8080/spd/basic/interface/scjs/yc/deptBuy
# Scanned: 2026-11-03T01:45:50.901Z
# Page: 基础设置 > 接口管理 > 请领单接口查询
# Note: filter dropdown was opened during scan
page: iface-req-query
module: spd-basic
url: http://spdtest.cmic.com.cn:8080/spd/basic/interface/scjs/yc/deptBuy
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_e68ea5e58fa3e697a5e5bf97:
description: "接口日志"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "接口日志"
playwright: "page.getByRole('menuitem', { name: '接口日志' })"
menu_el_e68ea8e98081e789a9e4bbb7:
description: "推送物价"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "推送物价"
playwright: "page.getByRole('menuitem', { name: '推送物价' })"
menu_el_e694b6e8b4b9e9a1b9e79baee5afb9e7a081:
description: "收费项目对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "收费项目对码"
playwright: "page.getByRole('menuitem', { name: '收费项目对码' })"
menu_el_e5a496e59bb4e4baa7e59381e58f98e69bb4:
description: "外围产品变更"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "外围产品变更"
playwright: "page.getByRole('menuitem', { name: '外围产品变更' })"
menu_el_484953e4bbb7e5afb9e785a7e69fa5e8afa2:
description: "HIS价对照查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS价对照查询"
playwright: "page.getByRole('menuitem', { name: 'HIS价对照查询' })"
menu_el_e5a496e983a8e58f98e69bb4e6988ee7bb86e4bfa1e681afe69fa5e8afa2:
description: "外部变更明细信息查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "外部变更明细信息查询"
playwright: "page.getByRole('menuitem', { name: '外部变更明细信息查询' })"
menu_el_e58cbbe4bf9de4bfa1e681afe6a0b8e5afb9:
description: "医保信息核对"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "医保信息核对"
playwright: "page.getByRole('menuitem', { name: '医保信息核对' })"
menu_el_e58e82e59586e5afb9e7a081:
description: "厂商对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "厂商对码"
playwright: "page.getByRole('menuitem', { name: '厂商对码' })"
menu_el_e4bba3e4b8bae7a791e5aea4e8afb7e9a286efbc88e5b7b2e7a1aee8aea4efbc89:
description: "代为科室请领(已确认)"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "代为科室请领(已确认)"
playwright: "page.getByRole('menuitem', { name: '代为科室请领(已确认)' })"
menu_el_e4bba3e4ba8ce7baa7e7a791e5aea4e8afb7e9a286e4baa7e59381:
description: "代二级科室请领产品"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "代二级科室请领产品"
playwright: "page.getByRole('menuitem', { name: '代二级科室请领产品' })"
menu_el_484953e4baa7e59381e4bfa1e681afe58f98e69bb4:
description: "HIS产品信息变更"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS产品信息变更"
playwright: "page.getByRole('menuitem', { name: 'HIS产品信息变更' })"
menu_el_484953e7a791e5aea4e69fa5e8afa2:
description: "HIS科室查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS科室查询"
playwright: "page.getByRole('menuitem', { name: 'HIS科室查询' })"
menu_el_484953e4babae59198e69fa5e8afa2:
description: "HIS人员查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS人员查询"
playwright: "page.getByRole('menuitem', { name: 'HIS人员查询' })"
menu_el_484953e694b6e8b4b9e9a1b9e4b88ee4baa7e59381e5afb9e785a7e585b3e7b3bbe69fa5e8afa2:
description: "HIS收费项与产品对照关系查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS收费项与产品对照关系查询"
playwright: "page.getByRole('menuitem', { name: 'HIS收费项与产品对照关系查询' })"
menu_el_e999a2e58cbae5afb9e7a081:
description: "院区对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "院区对码"
playwright: "page.getByRole('menuitem', { name: '院区对码' })"
menu_el_e4bd8ee580bce8aea1e8b4b9e68ea5e58fa3e69fa5e8afa2:
description: "低值计费接口查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "低值计费接口查询"
playwright: "page.getByRole('menuitem', { name: '低值计费接口查询' })"
menu_el_e699bae883bde69f9ce4b88ee5ba93e58cbae5afb9e7a081:
description: "智能柜与库区对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "智能柜与库区对码"
playwright: "page.getByRole('menuitem', { name: '智能柜与库区对码' })"
menu_el_e789a9e8b584e5ad97e585b8e68ea8e98081e8aeb0e5bd95:
description: "物资字典推送记录"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "物资字典推送记录"
playwright: "page.getByRole('menuitem', { name: '物资字典推送记录' })"
menu_el_e5b9b3e58fb0e4baa7e59381e4bbb7e6a0bce5b7aee5bc82e69fa5e8afa2:
description: "平台产品价格差异查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "平台产品价格差异查询"
playwright: "page.getByRole('menuitem', { name: '平台产品价格差异查询' })"
menu_el_e8afb7e9a286e58d95e68ea5e58fa3e69fa5e8afa2:
description: "请领单接口查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "请领单接口查询"
playwright: "page.getByRole('menuitem', { name: '请领单接口查询' })"
menu_el_e68ea5e58fa3e695b0e68daee7bbb4e68aa4:
description: "接口数据维护"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "接口数据维护"
playwright: "page.getByRole('menuitem', { name: '接口数据维护' })"
el_e8afb7e9a286e58d95e68ea5e58fa3e69fa5e8afa2:
description: "请领单接口查询"
element_type: tab
section: "main::main"
strategy: text
value: "请领单接口查询"
playwright: "page.getByText('请领单接口查询')"
tab_el_e8afb7e9a286e58d95e68ea5e58fa3e69fa5e8afa2:
description: "请领单接口查询"
element_type: div
section: "main::main"
strategy: id
value: "rc-tabs-0-tab-/basic/interface/scjs/yc/deptBuy"
playwright: "page.locator('#rc-tabs-0-tab-/basic/interface/scjs/yc/deptBuy')"
# --- scjsIframe::main ---
el_e8afb7e9a286e58d95e58fb7Input:
description: "请输入"
element_type: text
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: id
value: "table_search_form_buyOrderNo"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('#table_search_form_buyOrderNo')"
el_e7acace4b889e696b9e8aea2e58d95e58fb7Input:
description: "请输入"
element_type: text
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: id
value: "table_search_form_thirdOrderNo"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('#table_search_form_thirdOrderNo')"
el_e7acace4b889e696b9e6988ee7bb864944Input:
description: "请输入"
element_type: text
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: id
value: "table_search_form_thirdDetailId"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('#table_search_form_thirdDetailId')"
searchBtn:
description: "查询"
element_type: button
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: role
role: button
name: "查询"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByRole('button', { name: '查询' })"
resetBtn:
description: "重置"
element_type: button
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: role
role: button
name: "重置"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByRole('button', { name: '重置' })"
expandFilterBtn:
description: "展开"
element_type: button
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: role
role: button
name: "展开"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByRole('button', { name: '展开' })"
exportBtn:
description: "导出"
element_type: button
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: role
role: button
name: "导出"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByRole('button', { name: '导出' })"
detailBtn:
description: "详情"
element_type: button
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: role
role: button
name: "详情"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByRole('button', { name: '详情' })"
el_e7a791e5aea4e7bc96e7a081Input:
description: "请输入"
element_type: text
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: id
value: "table_search_form_deptCode"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('#table_search_form_deptCode')"
operatorInput:
description: "请输入"
element_type: text
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: id
value: "table_search_form_createUser"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('#table_search_form_createUser')"
el_e68ea8e98081e697b6e997b4DateRange:
description: "推送时间"
element_type: datepicker
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: label_text
value: "推送时间"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('推送时间', { exact: true })"
el_e68ea8e98081e697b6e997b4Input:
description: "开始日期"
element_type: text
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: id
value: "table_search_form_queryCreateTime"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('#table_search_form_queryCreateTime')"
el_e68ea8e98081e697b6e997b4Input_2:
description: "结束日期"
element_type: text
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: placeholder
value: "结束日期"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByPlaceholder('结束日期')"
collapseFilterBtn:
description: "收起"
element_type: button
section: "scjsIframe::main"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: role
role: button
name: "收起"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByRole('button', { name: '收起' })"
# --- scjsIframe::pagination ---
pagination_detail:
description: "共 67 条1200 条/页"
element_type: ul
section: "scjsIframe::pagination"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: label_text
value: "详情"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('详情', { exact: true })"
pagination_prevPageBtn:
description: "上一页"
element_type: li
section: "scjsIframe::pagination"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: label_text
value: "详情"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('详情', { exact: true })"
pagination_detailBtn:
description: "详情"
element_type: button
section: "scjsIframe::pagination"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: label_text
value: "详情"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('详情', { exact: true })"
pagination_page_1:
description: "1"
element_type: pagination_item
section: "scjsIframe::pagination"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: css
value: ".ant-pagination-item-active"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').locator('.ant-pagination-item-active')"
pagination_nextPageBtn:
description: "下一页"
element_type: li
section: "scjsIframe::pagination"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: label_text
value: "详情"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('详情', { exact: true })"
pagination_detailBtn_2:
description: "详情"
element_type: button
section: "scjsIframe::pagination"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: label_text
value: "详情"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('详情', { exact: true })"
pagination_pageSizeSelect:
description: "200 条/页"
element_type: select
section: "scjsIframe::pagination"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: label_text
value: "详情"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('详情', { exact: true })"
pagination_detail_2:
description: "共 67 条1200 条/页10020020 条/页50 条/页100 条/页200 条/页"
element_type: ul
section: "scjsIframe::pagination"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: label_text
value: "详情"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('详情', { exact: true })"
pagination_pageSizeSelect_2:
description: "200 条/页10020020 条/页50 条/页100 条/页200 条/页"
element_type: select
section: "scjsIframe::pagination"
frame: "scjsIframe"
frame_selector: iframe[src*="scjs"]
strategy: label_text
value: "详情"
playwright: "page.frameLocator('iframe[src*=\"scjs\"]').getByText('详情', { exact: true })"
# Auto-generated from iface-subdept-req-elements.json
# Source: http://spdtest.cmic.com.cn:8080/spd/basic/interface/deptBusiness/checkBuy
# Scanned: 2026-11-03T01:13:56.227Z
# Page: 基础设置 > 接口管理 > 代二级科室请领产品
# Note: filter dropdown was opened during scan
page: iface-subdept-req
module: spd-basic
url: http://spdtest.cmic.com.cn:8080/spd/basic/interface/deptBusiness/checkBuy
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_e68ea5e58fa3e697a5e5bf97:
description: "接口日志"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "接口日志"
playwright: "page.getByRole('menuitem', { name: '接口日志' })"
menu_el_e68ea8e98081e789a9e4bbb7:
description: "推送物价"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "推送物价"
playwright: "page.getByRole('menuitem', { name: '推送物价' })"
menu_el_e694b6e8b4b9e9a1b9e79baee5afb9e7a081:
description: "收费项目对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "收费项目对码"
playwright: "page.getByRole('menuitem', { name: '收费项目对码' })"
menu_el_e5a496e59bb4e4baa7e59381e58f98e69bb4:
description: "外围产品变更"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "外围产品变更"
playwright: "page.getByRole('menuitem', { name: '外围产品变更' })"
menu_el_484953e4bbb7e5afb9e785a7e69fa5e8afa2:
description: "HIS价对照查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS价对照查询"
playwright: "page.getByRole('menuitem', { name: 'HIS价对照查询' })"
menu_el_e5a496e983a8e58f98e69bb4e6988ee7bb86e4bfa1e681afe69fa5e8afa2:
description: "外部变更明细信息查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "外部变更明细信息查询"
playwright: "page.getByRole('menuitem', { name: '外部变更明细信息查询' })"
menu_el_e58cbbe4bf9de4bfa1e681afe6a0b8e5afb9:
description: "医保信息核对"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "医保信息核对"
playwright: "page.getByRole('menuitem', { name: '医保信息核对' })"
menu_el_e58e82e59586e5afb9e7a081:
description: "厂商对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "厂商对码"
playwright: "page.getByRole('menuitem', { name: '厂商对码' })"
menu_el_e4bba3e4b8bae7a791e5aea4e8afb7e9a286efbc88e5b7b2e7a1aee8aea4efbc89:
description: "代为科室请领(已确认)"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "代为科室请领(已确认)"
playwright: "page.getByRole('menuitem', { name: '代为科室请领(已确认)' })"
menu_el_e4bba3e4ba8ce7baa7e7a791e5aea4e8afb7e9a286e4baa7e59381:
description: "代二级科室请领产品"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "代二级科室请领产品"
playwright: "page.getByRole('menuitem', { name: '代二级科室请领产品' })"
menu_el_484953e4baa7e59381e4bfa1e681afe58f98e69bb4:
description: "HIS产品信息变更"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS产品信息变更"
playwright: "page.getByRole('menuitem', { name: 'HIS产品信息变更' })"
menu_el_484953e7a791e5aea4e69fa5e8afa2:
description: "HIS科室查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS科室查询"
playwright: "page.getByRole('menuitem', { name: 'HIS科室查询' })"
menu_el_484953e4babae59198e69fa5e8afa2:
description: "HIS人员查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS人员查询"
playwright: "page.getByRole('menuitem', { name: 'HIS人员查询' })"
menu_el_484953e694b6e8b4b9e9a1b9e4b88ee4baa7e59381e5afb9e785a7e585b3e7b3bbe69fa5e8afa2:
description: "HIS收费项与产品对照关系查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS收费项与产品对照关系查询"
playwright: "page.getByRole('menuitem', { name: 'HIS收费项与产品对照关系查询' })"
menu_el_e999a2e58cbae5afb9e7a081:
description: "院区对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "院区对码"
playwright: "page.getByRole('menuitem', { name: '院区对码' })"
menu_el_e4bd8ee580bce8aea1e8b4b9e68ea5e58fa3e69fa5e8afa2:
description: "低值计费接口查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "低值计费接口查询"
playwright: "page.getByRole('menuitem', { name: '低值计费接口查询' })"
menu_el_e699bae883bde69f9ce4b88ee5ba93e58cbae5afb9e7a081:
description: "智能柜与库区对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "智能柜与库区对码"
playwright: "page.getByRole('menuitem', { name: '智能柜与库区对码' })"
menu_el_e789a9e8b584e5ad97e585b8e68ea8e98081e8aeb0e5bd95:
description: "物资字典推送记录"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "物资字典推送记录"
playwright: "page.getByRole('menuitem', { name: '物资字典推送记录' })"
menu_el_e5b9b3e58fb0e4baa7e59381e4bbb7e6a0bce5b7aee5bc82e69fa5e8afa2:
description: "平台产品价格差异查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "平台产品价格差异查询"
playwright: "page.getByRole('menuitem', { name: '平台产品价格差异查询' })"
menu_el_e8afb7e9a286e58d95e68ea5e58fa3e69fa5e8afa2:
description: "请领单接口查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "请领单接口查询"
playwright: "page.getByRole('menuitem', { name: '请领单接口查询' })"
menu_el_e68ea5e58fa3e695b0e68daee7bbb4e68aa4:
description: "接口数据维护"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "接口数据维护"
playwright: "page.getByRole('menuitem', { name: '接口数据维护' })"
el_e4bba3e4ba8ce7baa7e7a791e5aea4e8afb7e9a286e4baa7e59381:
description: "代二级科室请领产品"
element_type: tab
section: "main::main"
strategy: text
value: "代二级科室请领产品"
playwright: "page.getByText('代二级科室请领产品')"
tab_el_e4bba3e4ba8ce7baa7e7a791e5aea4e8afb7e9a286e4baa7e59381:
description: "代二级科室请领产品"
element_type: div
section: "main::main"
strategy: id
value: "rc-tabs-0-tab-/basic/interface/deptBusiness/checkBuy"
playwright: "page.locator('#rc-tabs-0-tab-/basic/interface/deptBusiness/checkBuy')"
el_e6a8a1e69dbfSelect:
description: "请选择"
element_type: select
section: "main::main"
strategy: label_text
value: "模板"
playwright: "page.getByText('模板', { exact: true })"
el_e6a8a1e69dbfInput:
description: "模板"
element_type: search
section: "main::main"
strategy: id
value: "table_search_form_tempName"
playwright: "page.locator('#table_search_form_tempName')"
el_e4ba8ce7baa7e7a791e5aea4Input:
description: "请输入二级科室编号/名称"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_ename"
playwright: "page.locator('#table_search_form_ename')"
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: '重 置' })"
el_e58aa0e585a5e3808be3808bBtn:
description: "加入》》"
element_type: button
section: "main::main"
strategy: role
role: button
name: "加入》》"
playwright: "page.getByRole('button', { name: '加入》》' })"
el_e3808ae3808ae7a7bbe999a4Btn:
description: "《《移除"
element_type: button
section: "main::main"
strategy: role
role: button
name: "《《移除"
playwright: "page.getByRole('button', { name: '《《移除' })"
el_e8a1a5e588b0e4b88ae99990Select:
description: "补到上限"
element_type: select
section: "main::main"
strategy: text
value: "补到上限"
playwright: "page.getByText('补到上限')"
el_e5bc80e5a78be7949fe68890Btn:
description: "开始生成"
element_type: button
section: "main::main"
strategy: role
role: button
name: "开始生成"
playwright: "page.getByRole('button', { name: '开始生成' })"
el_e4bf9de5ad98e6a8a1e78988Btn:
description: "保存模版"
element_type: button
section: "main::main"
strategy: role
role: button
name: "保存模版"
playwright: "page.getByRole('button', { name: '保存模版' })"
# --- main::pagination ---
pagination_el_e585b13233e69da1313530e69da12fe9a1b5:
description: "共 23 条150 条/页"
element_type: ul
section: "main::pagination"
strategy: text
value: "共 23 条150 条/页"
playwright: "page.getByText('共 23 条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 条/页')"
# Auto-generated from iface-vendor-code-elements.json
# Source: http://spdtest.cmic.com.cn:8080/spd/basic/interface/interface/companyCode
# Scanned: 2026-11-03T01:50:26.439Z
# Page: 基础设置 > 接口管理 > 厂商对码
# Note: filter dropdown was opened during scan
page: iface-vendor-code
module: spd-basic
url: http://spdtest.cmic.com.cn:8080/spd/basic/interface/interface/companyCode
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_e68ea5e58fa3e697a5e5bf97:
description: "接口日志"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "接口日志"
playwright: "page.getByRole('menuitem', { name: '接口日志' })"
menu_el_e68ea8e98081e789a9e4bbb7:
description: "推送物价"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "推送物价"
playwright: "page.getByRole('menuitem', { name: '推送物价' })"
menu_el_e694b6e8b4b9e9a1b9e79baee5afb9e7a081:
description: "收费项目对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "收费项目对码"
playwright: "page.getByRole('menuitem', { name: '收费项目对码' })"
menu_el_e5a496e59bb4e4baa7e59381e58f98e69bb4:
description: "外围产品变更"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "外围产品变更"
playwright: "page.getByRole('menuitem', { name: '外围产品变更' })"
menu_el_484953e4bbb7e5afb9e785a7e69fa5e8afa2:
description: "HIS价对照查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS价对照查询"
playwright: "page.getByRole('menuitem', { name: 'HIS价对照查询' })"
menu_el_e5a496e983a8e58f98e69bb4e6988ee7bb86e4bfa1e681afe69fa5e8afa2:
description: "外部变更明细信息查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "外部变更明细信息查询"
playwright: "page.getByRole('menuitem', { name: '外部变更明细信息查询' })"
menu_el_e58cbbe4bf9de4bfa1e681afe6a0b8e5afb9:
description: "医保信息核对"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "医保信息核对"
playwright: "page.getByRole('menuitem', { name: '医保信息核对' })"
menu_el_e58e82e59586e5afb9e7a081:
description: "厂商对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "厂商对码"
playwright: "page.getByRole('menuitem', { name: '厂商对码' })"
menu_el_e4bba3e4b8bae7a791e5aea4e8afb7e9a286efbc88e5b7b2e7a1aee8aea4efbc89:
description: "代为科室请领(已确认)"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "代为科室请领(已确认)"
playwright: "page.getByRole('menuitem', { name: '代为科室请领(已确认)' })"
menu_el_e4bba3e4ba8ce7baa7e7a791e5aea4e8afb7e9a286e4baa7e59381:
description: "代二级科室请领产品"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "代二级科室请领产品"
playwright: "page.getByRole('menuitem', { name: '代二级科室请领产品' })"
menu_el_484953e4baa7e59381e4bfa1e681afe58f98e69bb4:
description: "HIS产品信息变更"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS产品信息变更"
playwright: "page.getByRole('menuitem', { name: 'HIS产品信息变更' })"
menu_el_484953e7a791e5aea4e69fa5e8afa2:
description: "HIS科室查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS科室查询"
playwright: "page.getByRole('menuitem', { name: 'HIS科室查询' })"
menu_el_484953e4babae59198e69fa5e8afa2:
description: "HIS人员查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS人员查询"
playwright: "page.getByRole('menuitem', { name: 'HIS人员查询' })"
menu_el_484953e694b6e8b4b9e9a1b9e4b88ee4baa7e59381e5afb9e785a7e585b3e7b3bbe69fa5e8afa2:
description: "HIS收费项与产品对照关系查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "HIS收费项与产品对照关系查询"
playwright: "page.getByRole('menuitem', { name: 'HIS收费项与产品对照关系查询' })"
menu_el_e999a2e58cbae5afb9e7a081:
description: "院区对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "院区对码"
playwright: "page.getByRole('menuitem', { name: '院区对码' })"
menu_el_e4bd8ee580bce8aea1e8b4b9e68ea5e58fa3e69fa5e8afa2:
description: "低值计费接口查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "低值计费接口查询"
playwright: "page.getByRole('menuitem', { name: '低值计费接口查询' })"
menu_el_e699bae883bde69f9ce4b88ee5ba93e58cbae5afb9e7a081:
description: "智能柜与库区对码"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "智能柜与库区对码"
playwright: "page.getByRole('menuitem', { name: '智能柜与库区对码' })"
menu_el_e789a9e8b584e5ad97e585b8e68ea8e98081e8aeb0e5bd95:
description: "物资字典推送记录"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "物资字典推送记录"
playwright: "page.getByRole('menuitem', { name: '物资字典推送记录' })"
menu_el_e5b9b3e58fb0e4baa7e59381e4bbb7e6a0bce5b7aee5bc82e69fa5e8afa2:
description: "平台产品价格差异查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "平台产品价格差异查询"
playwright: "page.getByRole('menuitem', { name: '平台产品价格差异查询' })"
menu_el_e8afb7e9a286e58d95e68ea5e58fa3e69fa5e8afa2:
description: "请领单接口查询"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "请领单接口查询"
playwright: "page.getByRole('menuitem', { name: '请领单接口查询' })"
menu_el_e68ea5e58fa3e695b0e68daee7bbb4e68aa4:
description: "接口数据维护"
element_type: li
section: "main::main"
strategy: role
role: menuitem
name: "接口数据维护"
playwright: "page.getByRole('menuitem', { name: '接口数据维护' })"
el_e58e82e59586e5afb9e7a081:
description: "厂商对码"
element_type: tab
section: "main::main"
strategy: text
value: "厂商对码"
playwright: "page.getByText('厂商对码')"
tab_el_e58e82e59586e5afb9e7a081:
description: "厂商对码"
element_type: div
section: "main::main"
strategy: id
value: "rc-tabs-0-tab-/basic/interface/interface/companyCode"
playwright: "page.locator('#rc-tabs-0-tab-/basic/interface/interface/companyCode')"
el_e58e82e59586e7bc96e58fb7Input:
description: "请输入厂商名称/编号"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_companyCode"
playwright: "page.locator('#table_search_form_companyCode')"
el_e7acace4b889e696b9e7b3bbe7bb9fe58e82e59586e7bc96e58fb7Input:
description: "请输入第三方系统厂商名称/编号"
element_type: text
section: "main::main"
strategy: id
value: "table_search_form_thirdCompanyCode"
playwright: "page.locator('#table_search_form_thirdCompanyCode')"
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_e6898be58aa8e696b0e5a29eBtn:
description: "手动新增"
element_type: button
section: "main::main"
strategy: role
role: button
name: "手动新增"
playwright: "page.getByRole('button', { name: '手动新增' })"
el_e698afe590a6e5afb9e7a081Select:
description: "请选择"
element_type: select
section: "main::main"
strategy: label_text
value: "是否对码"
playwright: "page.getByText('是否对码', { exact: true })"
el_e698afe590a6e5afb9e7a081Input:
description: "是否对码"
element_type: search
section: "main::main"
strategy: id
value: "table_search_form_bindFlag"
playwright: "page.locator('#table_search_form_bindFlag')"
collapseFilterBtn:
description: "收起"
element_type: button
section: "main::main"
strategy: role
role: button
name: "收起"
playwright: "page.getByRole('button', { name: '收起' })"
# --- main::pagination ---
pagination_el_e58e82e59586e7bc96e58fb7:
description: "共 1125 条12345•••2350 条/页跳至页"
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_e58e82e59586e7bc96e58fb7Btn:
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_page_2:
description: "2"
element_type: pagination_item
section: "main::pagination"
strategy: label_text
value: "厂商编号"
playwright: "page.getByText('厂商编号', { exact: true })"
pagination_page_3:
description: "3"
element_type: pagination_item
section: "main::pagination"
strategy: label_text
value: "厂商编号"
playwright: "page.getByText('厂商编号', { exact: true })"
pagination_page_4:
description: "4"
element_type: pagination_item
section: "main::pagination"
strategy: label_text
value: "厂商编号"
playwright: "page.getByText('厂商编号', { exact: true })"
pagination_page_5:
description: "5"
element_type: pagination_item
section: "main::pagination"
strategy: label_text
value: "厂商编号"
playwright: "page.getByText('厂商编号', { exact: true })"
pagination_el_e58e82e59586e7bc96e58fb7_2:
description: "向后 5 页"
element_type: li
section: "main::pagination"
strategy: label_text
value: "厂商编号"
playwright: "page.getByText('厂商编号', { exact: true })"
pagination_page_23:
description: "23"
element_type: pagination_item
section: "main::pagination"
strategy: label_text
value: "厂商编号"
playwright: "page.getByText('厂商编号', { exact: true })"
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_el_e58e82e59586e7bc96e58fb7Input:
description: "厂商编号"
element_type: text
section: "main::pagination"
strategy: label_text
value: "厂商编号"
playwright: "page.getByText('厂商编号', { exact: true })"
# --- main::modal:手动新增 ---
el_e5afb9e68ea5e7b3bbe7bb9fSelect:
description: "对接系统"
element_type: select
section: "main::modal:手动新增"
strategy: label_text
value: "对接系统"
playwright: "page.getByText('对接系统', { exact: true })"
el_e7acace4b889e696b9e7b3bbe7bb9fe58e82e59586e7bc96e58fb7Input_2:
description: "请输入"
element_type: text
section: "main::modal:手动新增"
strategy: id
value: "basic_thirdCompanyCode"
playwright: "page.locator('#basic_thirdCompanyCode')"
el_e7acace4b889e696b9e7b3bbe7bb9fe58e82e59586e5908de7a7b0Input:
description: "请输入"
element_type: text
section: "main::modal:手动新增"
strategy: id
value: "basic_thirdCompanyName"
playwright: "page.locator('#basic_thirdCompanyName')"
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: '确 定' })"
......@@ -82,6 +82,25 @@
"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:scan-deptm": "node scripts/scan-deptm-batch.mjs",
"discover:scan-iface": "node scripts/scan-iface-batch.mjs",
"discover:yaml-from-json-deptm": "node scripts/json-to-locator-yaml.mjs --all-deptm",
"discover:yaml-from-json-iface": "node scripts/json-to-locator-yaml.mjs --all-iface",
"generate:testpoints-deptm": "python3 scripts/generate-deptm-testpoints.py",
"generate:testpoints-iface": "python3 scripts/generate-iface-testpoints.py",
"generate:md-iface": "python3 scripts/generate-iface-md.py",
"generate:md-csv-iface": "python3 scripts/generate-iface-md.py",
"generate:playwright-iface": "python3 scripts/generate-iface-playwright.py",
"test:iface:all": "playwright test tests/spd/iface-*.spec.ts --project=chromium",
"test:iface:smoke": "playwright test tests/spd/iface-his-price.spec.ts tests/spd/iface-insurance.spec.ts --project=chromium --grep @smoke --workers=1",
"test:iface-his-price:all": "playwright test tests/spd/iface-his-price.spec.ts --project=chromium",
"generate:md-deptm": "python3 scripts/generate-deptm-md.py",
"generate:md-csv-deptm": "python3 scripts/generate-deptm-md.py",
"generate:playwright-deptm": "python3 scripts/generate-deptm-playwright.py",
"assert:deptm-csv-spec": "node scripts/assert-deptm-csv-spec-sync.mjs",
"test:deptm:smoke": "playwright test tests/spd/deptm-register.spec.ts tests/spd/deptm-lab-machine.spec.ts --project=chromium --grep @smoke --workers=1",
"test:deptm:all": "playwright test tests/spd/deptm-*.spec.ts --project=chromium --workers=1",
"test:deptm-lab-machine:all": "playwright test tests/spd/deptm-lab-machine.spec.ts --project=chromium --workers=1",
"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",
......@@ -102,6 +121,8 @@
"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:basic-modules-csv-spec": "node scripts/assert-wh-flow-csv-spec-sync.mjs && node scripts/assert-surgery-csv-spec-sync.mjs && node scripts/assert-user-csv-spec-sync.mjs && node scripts/assert-basic-csv-spec-sync.mjs",
"generate:md-csv-basic-modules": "python3 scripts/generate-basic-modules-md-from-csv.py",
"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",
......
......@@ -13,54 +13,13 @@ export class AdmitMaterialListPage extends AdmitSharedPage {
menu: admitData.menuMaterialList,
forbidden: ['supplyApply/', 'accessKind/', 'productApply/'],
});
this.columnSettingsToggleCandidates = admitData.materialListColumnSettingsToggleCandidates;
}
async ready(): Promise<void> {
await this.expectOnPage();
}
async filterByOrderOrFallback(): Promise<void> {
await this.query();
const orderNo = await this.sampleMaterialOrderNo();
if (!orderNo) {
await this.guardedSkip('首行无可用准入单号样本');
return;
}
await this.ensureFiltersExpanded();
for (const label of ['准入单号', '单号']) {
const input = this.textInput(label);
if (await input.isVisible().catch(() => false)) {
await this.fillFilter(label, orderNo.slice(0, 40));
await this.query();
await this.expectRowsContainKeyword(orderNo);
return;
}
}
const row = await this.firstRow();
const pairs: Array<{ column: string; filters: string[] }> = [
{ column: '注册证号', filters: ['注册证号'] },
{ column: this.listNameColumn, filters: [...admitData.listNameColumnAliases] },
{ column: '器械注册人', filters: ['器械注册人'] },
{ column: '进院供应商', filters: ['供应商', '销售商'] },
];
for (const pair of pairs) {
const value = (await this.tryCell(row, pair.column)).trim();
if (!value || value === '--' || value === '-') continue;
for (const filter of pair.filters) {
const input = this.textInput(filter);
if (await input.isVisible().catch(() => false)) {
await this.fillFilter(filter, value.slice(0, 40));
await this.query();
await this.expectRowsContain(pair.column, value);
return;
}
}
}
// 现网常无「准入单号」筛选项且首行仅单号有值:保持默认日期范围查询,断言列表仍含该单号(见用例 MD 备注路径)。
await this.query();
await this.expectRowsContainKeyword(orderNo);
}
async resetFilters(): Promise<void> {
await this.query();
const filled = await this.fillFirstVisibleFilter();
......@@ -102,12 +61,16 @@ export class AdmitMaterialListPage extends AdmitSharedPage {
await this.leaveWithoutCommit();
}
async detailCountMatches(): Promise<void> {
async detailOrderMatches(): Promise<void> {
await this.query();
const row = await this.firstRow();
const countText = (await this.cellText(row, '产品条数')).replace(/\s/g, '');
const orderNo = (await this.cellText(row, '准入单号')).replace(/\s/g, '');
if (!orderNo || orderNo === '--' || orderNo === '-') {
await this.guardedSkip('首行无可用准入单号');
return;
}
await this.openPutFromRow(row, '详情');
await expect(this.put()).toContainText(countText);
await expect(this.put(), '详情页应展示列表准入单号').toContainText(orderNo);
await this.leaveWithoutCommit();
}
......
import { expect, type Page } from '@playwright/test';
import { normalizeSampleCellValue } from '../../core/table-data-column.util';
import { admitData } from '../../data/admit.data';
import { AdmitSharedPage } from './admit-shared.page';
......@@ -12,29 +13,14 @@ export class AdmitMaterialPage extends AdmitSharedPage {
menu: admitData.menuMaterial,
forbidden: ['productOrder/', 'supplyApply/', 'accessKind/'],
});
this.sortColumns = admitData.materialSortColumns;
this.columnSettingsToggleCandidates = admitData.materialColumnSettingsToggleCandidates;
}
async ready(): Promise<void> {
await this.expectOnPage();
}
async filterByProductName(): Promise<void> {
await this.query();
const name = await this.sampleCell(this.listNameColumn);
await this.fillProductNameFilter(name.slice(0, 40));
await this.query();
await this.expectRowsContain(this.listNameColumn, name);
}
async filterByGoodsType(): Promise<void> {
await this.query();
await this.ensureFiltersExpanded();
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(this.listNameColumn);
......@@ -55,10 +41,127 @@ export class AdmitMaterialPage extends AdmitSharedPage {
await this.expectListOrEmpty();
}
async collapseKeepsName(): Promise<void> {
private filterKeyword(raw: string, max = 40): string {
const text = raw.replace(/\s/g, '');
if (text.length <= max) return raw.trim();
return raw.trim().slice(0, max);
}
private async fillFilterIfVisible(labels: string[], value: string): Promise<boolean> {
const keyword = this.filterKeyword(value);
if (!keyword || keyword === '--' || keyword === '-') return false;
await this.ensureFiltersExpanded();
const scope = await this.queryScope();
for (const label of labels) {
for (const candidate of this.filterLabelCandidates(label)) {
const input = await this.firstVisibleFilterInput(candidate, scope);
if (input) {
await this.fill(input, keyword, `填写${candidate}`);
return true;
}
}
}
return false;
}
private async fillCreateDateRangeFromRow(dayText: string): Promise<void> {
const day = dayText.replace(/\s.*/, '').trim().slice(0, 10);
if (!/^\d{4}-\d{2}-\d{2}$/.test(day)) {
await this.skipWhenDataInsufficient('首行新增日期无效,无法组合日期筛选');
}
await this.ensureFiltersExpanded();
const scope = await this.queryScope();
const item = await this.resolveFilterItem(scope, '新增日期');
if (!item) {
await this.skipWhenDataInsufficient('筛选区无「新增日期」');
return;
}
const inputs = item.locator('input');
if ((await inputs.count()) >= 2) {
await this.fill(inputs.nth(0), day, '新增日期起');
await this.fill(inputs.nth(1), day, '新增日期止');
await this.waitSettle(200);
return;
}
await this.fillDateRange(scope, item, '新增日期');
}
/** CSV ADMIT-MAT-004:首行七项组合查询。 */
async filterCombination(): Promise<void> {
await this.query();
const name = await this.sampleCell(this.listNameColumn);
await this.collapseKeeps(this.listNameColumn, name.slice(0, 20));
const rows = await this.listRows();
const rowCount = await rows.count();
if (rowCount === 0) await this.skipWhenDataInsufficient('列表无数据,无法组合查询');
type Sample = {
createDate: string;
supplier: string;
consumableType: string;
productName: string;
spec: string;
certNo: string;
registrant: string;
};
let sample: Sample | null = null;
const supplierColumns = ['销售商(自定义)', '默认进院供应商', '进院供应商', '销售商'];
for (let i = 0; i < Math.min(rowCount, 10); i += 1) {
const row = rows.nth(i);
const productName = normalizeSampleCellValue(await this.tryCell(row, this.listNameColumn));
const consumableType = normalizeSampleCellValue(await this.tryCell(row, '耗材类型'));
if (productName.replace(/\s/g, '').length < 2 || consumableType.replace(/\s/g, '').length < 2) continue;
let supplier = '';
for (const col of supplierColumns) {
supplier = normalizeSampleCellValue(await this.tryCell(row, col));
if (supplier.replace(/\s/g, '').length >= 2) break;
}
const spec = normalizeSampleCellValue(await this.tryCell(row, '规格型号'));
const certNo = normalizeSampleCellValue(await this.tryCell(row, '注册证号'));
const registrant = normalizeSampleCellValue(await this.tryCell(row, '器械注册人'));
const createDate = normalizeSampleCellValue(await this.tryCell(row, '新增日期'));
if (createDate.replace(/\s/g, '').length < 8) continue;
sample = { createDate, supplier, consumableType, productName, spec, certNo, registrant };
break;
}
if (!sample) {
await this.skipWhenDataInsufficient('未找到含新增日期与物料名称/耗材类型的完整首行样本');
return;
}
const rowSample = sample;
await this.reset();
await this.fillCreateDateRangeFromRow(rowSample.createDate);
const supplierLabels = ['销售商(自定义)', '销售商(自定义)名称', '销售商', '进院供应商'];
if (rowSample.supplier) {
const ok = await this.fillFilterIfVisible(supplierLabels, rowSample.supplier);
if (!ok) await this.skipWhenDataInsufficient('筛选区无销售商(自定义)输入框');
}
await this.chooseSelect('耗材类型', rowSample.consumableType);
await this.page.keyboard.press('Escape').catch(() => undefined);
const nameKey = this.filterKeyword(
rowSample.productName.replace(/\s/g, '').length >= 4 ? rowSample.productName.slice(0, 12) : rowSample.productName,
40,
);
await this.fillProductNameFilter(nameKey);
if (rowSample.spec) await this.fillFilterIfVisible(['规格型号'], rowSample.spec);
if (rowSample.certNo) await this.fillFilterIfVisible(['注册证号'], rowSample.certNo);
if (rowSample.registrant) await this.fillFilterIfVisible(['器械注册人'], rowSample.registrant);
await this.query();
if ((await (await this.listRows()).count()) === 0) {
await this.skipWhenDataInsufficient('七项组合查询无匹配结果');
}
await this.expectRowsContain(this.listNameColumn, nameKey);
await this.expectRowsContain('耗材类型', rowSample.consumableType);
if (rowSample.spec) await this.expectRowsContain('规格型号', rowSample.spec);
if (rowSample.certNo) await this.expectRowsContain('注册证号', rowSample.certNo);
if (rowSample.registrant) await this.expectRowsContain('器械注册人', rowSample.registrant);
if (rowSample.supplier) {
try {
await this.expectRowsContain('默认进院供应商', rowSample.supplier);
} catch {
await this.expectRowsContain('销售商(自定义)', rowSample.supplier);
}
}
}
async mockEmptyName() {
......
import { expect, type Page } from '@playwright/test';
import { normalizeSampleCellValue } from '../../core/table-data-column.util';
import { admitData, uniqProductName } from '../../data/admit.data';
import { AdmitSharedPage } from './admit-shared.page';
......@@ -12,28 +13,135 @@ export class AdmitProductApplyPage extends AdmitSharedPage {
menu: admitData.menuProductApply,
forbidden: ['ZRlist', 'productOrder/', 'supplyApply/', 'accessKind/'],
});
this.sortColumns = admitData.productApplySortColumns;
this.columnSettingsToggleCandidates = admitData.productApplyColumnSettingsToggleCandidates;
}
async ready(): Promise<void> {
await this.expectOnPage();
}
async filterByProductName(): Promise<void> {
await this.query();
const name = await this.sampleCell(this.listNameColumn);
await this.fillProductNameFilter(name.slice(0, 40));
await this.query();
await this.expectRowsContain(this.listNameColumn, name);
private filterKeyword(raw: string, max = 40): string {
const text = raw.replace(/\s/g, '');
if (text.length <= max) return raw.trim();
return raw.trim().slice(0, max);
}
private async fillFilterIfVisible(labels: string[], value: string): Promise<boolean> {
const keyword = this.filterKeyword(value);
if (!keyword || keyword === '--' || keyword === '-') return false;
await this.ensureFiltersExpanded();
const scope = await this.queryScope();
for (const label of labels) {
for (const candidate of this.filterLabelCandidates(label)) {
const input = await this.firstVisibleFilterInput(candidate, scope);
if (input) {
await this.fill(input, keyword, `填写${candidate}`);
return true;
}
}
}
return false;
}
private async fillCreateDateRangeFromRow(dayText: string): Promise<void> {
const day = dayText.replace(/\s.*/, '').trim().slice(0, 10);
if (!/^\d{4}-\d{2}-\d{2}$/.test(day)) {
await this.skipWhenDataInsufficient('首行新增日期无效,无法组合日期筛选');
}
await this.ensureFiltersExpanded();
const scope = await this.queryScope();
const item = await this.resolveFilterItem(scope, '新增日期');
if (!item) {
await this.skipWhenDataInsufficient('筛选区无「新增日期」');
return;
}
const inputs = item.locator('input');
if ((await inputs.count()) >= 2) {
await this.fill(inputs.nth(0), day, '新增日期起');
await this.fill(inputs.nth(1), day, '新增日期止');
await this.waitSettle(200);
return;
}
await this.fillDateRange(scope, item, '新增日期');
}
async filterByNameAndType(): Promise<void> {
/** CSV ADMIT-PAP-002:首行七项组合查询。 */
async filterCombination(): Promise<void> {
await this.query();
const name = await this.sampleCell(this.listNameColumn);
const type = await this.sampleCell('耗材类型');
await this.fillProductNameFilter(name.slice(0, 40));
await this.chooseSelect('耗材类型', type);
const rows = await this.listRows();
const rowCount = await rows.count();
if (rowCount === 0) await this.skipWhenDataInsufficient('列表无数据,无法组合查询');
type Sample = {
createDate: string;
supplier: string;
consumableType: string;
productName: string;
spec: string;
certNo: string;
registrant: string;
};
let sample: Sample | null = null;
const supplierColumns = ['销售商(自定义)', '默认进院供应商', '进院供应商', '销售商'];
for (let i = 0; i < Math.min(rowCount, 10); i += 1) {
const row = rows.nth(i);
const productName = normalizeSampleCellValue(await this.tryCell(row, this.listNameColumn));
const consumableType = normalizeSampleCellValue(await this.tryCell(row, '耗材类型'));
if (productName.replace(/\s/g, '').length < 2 || consumableType.replace(/\s/g, '').length < 2) continue;
let supplier = '';
for (const col of supplierColumns) {
supplier = normalizeSampleCellValue(await this.tryCell(row, col));
if (supplier.replace(/\s/g, '').length >= 2) break;
}
const spec = normalizeSampleCellValue(await this.tryCell(row, '规格型号'));
const certNo = normalizeSampleCellValue(await this.tryCell(row, '注册证号'));
const registrant = normalizeSampleCellValue(await this.tryCell(row, '器械注册人'));
const createDate = normalizeSampleCellValue(await this.tryCell(row, '新增日期'));
if (createDate.replace(/\s/g, '').length < 8) continue;
sample = { createDate, supplier, consumableType, productName, spec, certNo, registrant };
break;
}
if (!sample) {
await this.skipWhenDataInsufficient('未找到含新增日期与物料名称/耗材类型的完整首行样本');
return;
}
const rowSample = sample;
await this.reset();
await this.fillCreateDateRangeFromRow(rowSample.createDate);
const supplierLabels = ['销售商(自定义)', '销售商(自定义)名称', '销售商', '进院供应商'];
if (rowSample.supplier) {
const ok = await this.fillFilterIfVisible(supplierLabels, rowSample.supplier);
if (!ok) await this.skipWhenDataInsufficient('筛选区无销售商(自定义)输入框');
}
await this.chooseSelect('耗材类型', rowSample.consumableType);
await this.page.keyboard.press('Escape').catch(() => undefined);
const nameKey = this.filterKeyword(
rowSample.productName.replace(/\s/g, '').length >= 4 ? rowSample.productName.slice(0, 12) : rowSample.productName,
40,
);
await this.fillProductNameFilter(nameKey);
if (rowSample.spec) await this.fillFilterIfVisible(['规格型号'], rowSample.spec);
if (rowSample.certNo) await this.fillFilterIfVisible(['注册证号'], rowSample.certNo);
if (rowSample.registrant) await this.fillFilterIfVisible(['器械注册人'], rowSample.registrant);
await this.query();
await this.expectRowsContain(this.listNameColumn, name);
if ((await (await this.listRows()).count()) === 0) {
await this.skipWhenDataInsufficient('七项组合查询无匹配结果');
}
await this.expectRowsContain(this.listNameColumn, nameKey);
await this.expectRowsContain('耗材类型', rowSample.consumableType);
if (rowSample.spec) await this.expectRowsContain('规格型号', rowSample.spec);
if (rowSample.certNo) await this.expectRowsContain('注册证号', rowSample.certNo);
if (rowSample.registrant) await this.expectRowsContain('器械注册人', rowSample.registrant);
if (rowSample.supplier) {
try {
await this.expectRowsContain('默认进院供应商', rowSample.supplier);
} catch {
await this.expectRowsContain('销售商(自定义)', rowSample.supplier);
}
}
}
async resetFilters(): Promise<void> {
......
......@@ -13,6 +13,7 @@ export class AdmitProductListPage extends AdmitSharedPage {
menu: admitData.menuProductList,
forbidden: ['zrlist', 'productApply/', 'supplyApply/', 'accessKind/'],
});
this.columnSettingsToggleCandidates = admitData.productListColumnSettingsToggleCandidates;
}
async ready(): Promise<void> {
......
......@@ -13,7 +13,14 @@ import {
resolveColumnIndexFromLabels,
} from '../../core/table-data-column.util';
import { skipIfInsufficientForPage2 } from './helpers/pagination-page2.helper';
import {
clickPageSizeDropdownOption,
pageSizeLabelsEqual,
parsePageSizeFromLabel,
skipIfInsufficientForPageSizeChange,
} from './helpers/pagination-pagesize.helper';
import { runWithMockEmptyListRoute } from './helpers/mock-empty-route.helper';
import { SpdProTableListControls } from './helpers/spd-protable-list.controls';
export type AdmitMeta = {
path: string;
......@@ -31,6 +38,9 @@ export class AdmitSharedPage extends BasePage {
readonly locators: AdmitSharedLocators;
/** 列表列名(现网「物料名称」)。 */
protected readonly listNameColumn = admitData.listNameColumn;
protected sortColumns: readonly string[] = [];
protected columnSettingsToggleCandidates: readonly string[] = [];
private proTableList?: SpdProTableListControls;
constructor(
page: Page,
......@@ -422,6 +432,27 @@ export class AdmitSharedPage extends BasePage {
return rows.first();
}
/** 当前 Tab 列表行前复选框均不可勾选(禁用或无可用 input)。 */
async expectNoCheckableRows(sample = 30): Promise<void> {
const rows = await this.listRows();
const count = await rows.count();
if (count === 0) {
await this.skipWhenDataInsufficient('当前 Tab 无数据,无法校验复选框不可勾选');
}
const limit = Math.min(count, sample);
for (let i = 0; i < limit; i += 1) {
const row = rows.nth(i);
const wrapper = row.locator('.ant-checkbox-wrapper').first();
if ((await wrapper.count()) === 0) continue;
const cls = ((await wrapper.getAttribute('class')) ?? '').toLowerCase();
if (cls.includes('disabled')) continue;
const input = wrapper.locator('input.ant-checkbox-input');
if ((await input.count()) === 0) continue;
const enabled = !(await input.isDisabled().catch(() => true));
expect(enabled, `第 ${i + 1} 行复选框应不可勾选`).toBe(false);
}
}
/** 列表快照供用例层断言(不在此 expect)。 */
async snapshotList(): Promise<{ rows: number; total: number; emptyVisible: boolean }> {
await this.waitForTableReady();
......@@ -466,6 +497,9 @@ export class AdmitSharedPage extends BasePage {
async expectRowsContain(header: string, keyword: string): Promise<void> {
const needle = keyword.replace(/\s/g, '').slice(0, 12);
if (needle.length < 2) {
await this.skipWhenDataInsufficient(`筛选关键字过短(「${needle}」),无法校验列表`);
}
const rows = await this.listRows();
const count = await rows.count();
expect(count, `「${header}」查询应有结果`).toBeGreaterThan(0);
......@@ -508,10 +542,19 @@ export class AdmitSharedPage extends BasePage {
async sampleCell(header: string): Promise<string> {
const rows = await this.listRows();
const count = Math.min(await rows.count(), 8);
let fallback = '';
for (let i = 0; i < count; i += 1) {
const text = normalizeSampleCellValue(await this.tryCell(rows.nth(i), header));
if (text) return text;
if (!text) continue;
const compact = text.replace(/\s/g, '');
// 跳过序号列误采(纯数字/过短),避免筛「1」命中无关行
if (/^\d{1,3}$/.test(compact) || compact.length < 2) {
fallback = fallback || text;
continue;
}
return text;
}
if (fallback.replace(/\s/g, '').length >= 2) return fallback;
await this.skipWhenDataInsufficient(`首屏「${header}」为空`);
return '';
}
......@@ -851,4 +894,71 @@ export class AdmitSharedPage extends BasePage {
}
await this.click(this.button('提交', this.put()).first(), '提交');
}
pageSizeChanger(): Locator {
return this.page.locator('.ant-pagination-options-size-changer').first();
}
async pageSizeChangerText(): Promise<string> {
return ((await this.pageSizeChanger().innerText().catch(() => '')) ?? '').replace(/\s+/g, ' ');
}
async changePageSizeTo(toLabel: string): Promise<void> {
const changer = this.pageSizeChanger();
if (!(await changer.isVisible().catch(() => false))) {
await this.skipWhenDataInsufficient('当前页面无每页条数切换');
}
const targetSize = Number((toLabel.match(/\d+/) ?? ['20'])[0]);
const current = await this.pageSizeChangerText();
if (pageSizeLabelsEqual(current, targetSize)) {
return;
}
await this.assertBeforeBusinessAction('切换每页条数');
await this.click(changer, '打开每页条数');
await clickPageSizeDropdownOption(this.page, targetSize, (loc, step) => this.click(loc, step));
await this.waitForTableReady();
const after = await this.pageSizeChangerText();
if (!pageSizeLabelsEqual(after, targetSize)) {
throw new Error(`切换每页条数未生效:期望 ${targetSize} 条/页,当前「${after}」`);
}
}
async switchToPageSizeTwenty(): Promise<{ total: number; rowsBefore: number; rowsAfter: number }> {
await skipIfInsufficientForPageSizeChange({
ensureHealthyBeforeSkip: (reason) => this.ensureHealthyBeforeSkip(reason),
waitForTableReady: () => this.waitForTableReady(),
getDataRowCount: () => this.getDataRowCount(),
});
const total = await this.getTotalCount();
const rowsBefore = await this.getDataRowCount();
const sizeNum = 20;
if (total > sizeNum && rowsBefore <= sizeNum) {
await this.skipWhenDataInsufficient('当前页可见行数已不大于 20,无法验证切换 20 条/页');
}
await this.changePageSizeTo(admitData.paginationPageSizeTo);
const rowsAfter = await this.getDataRowCount();
return { total, rowsBefore, rowsAfter };
}
private listControls(): SpdProTableListControls {
if (!this.proTableList) {
this.proTableList = new SpdProTableListControls({
listScope: () => this.page,
columnSettingsToggleCandidates: this.columnSettingsToggleCandidates,
sortColumns: this.sortColumns,
clickQuery: () => this.query(),
skipWhen: (reason) => this.skipWhenDataInsufficient(reason),
click: (loc, label) => this.click(loc, label),
});
}
return this.proTableList;
}
async executeColumnSettingsToggleRestoreTest(): Promise<void> {
await this.listControls().executeColumnSettingsToggleRestoreTest();
}
async expectColumnSortAscDesc(columnName: string): Promise<void> {
await this.listControls().expectColumnSortAscDesc(columnName);
}
}
import { expect, test, type Page } from '@playwright/test';
import { admitData } from '../../data/admit.data';
import { executeExportReport } from './helpers/export-report.helper';
import { AdmitSupplyPage } from './admit-supply.page';
/**
* 供货目录申请 · 供货目录申请明细查询。
* 与供货目录申请同一 URL,通过顶部 Tab 切换;筛选区与列独立,不复用申请页的筛选行为与列设置候选。
*/
export class AdmitSupplyDetailPage extends AdmitSupplyPage {
constructor(page: Page) {
super(page);
this.columnSettingsToggleCandidates = admitData.supplyDetailColumnSettingsToggleCandidates;
}
async switchToDetailTab(): Promise<number | null> {
const total = await this.clickTabAndMatchCount(admitData.supplyDetailTab);
await this.expectTabActive(admitData.supplyDetailTab);
return total;
}
expectOnSupplyUrl(): void {
expect(this.page.url(), '应停留在供货目录申请页').toContain('supplyApply/list');
expect(this.page.url(), 'storageState 失效回到登录页').not.toMatch(/\/login/);
}
/** 明细 Tab 就绪:URL 仍为供货目录申请、Tab 高亮、型号列可见。 */
async expectDetailTabReady(): Promise<void> {
await this.switchToDetailTab();
this.expectOnSupplyUrl();
const collapse = this.button('收起').first();
if (!(await collapse.isVisible().catch(() => false))) {
const expand = this.button('展开').first();
if (await expand.isVisible().catch(() => false)) await this.click(expand, '展开明细筛选区');
}
const headers = await this.headerTexts();
if (headers.length > 0) {
const joined = headers.join('');
expect(joined, '明细列表应含申请单号列').toContain('申请单号');
expect(joined, '明细列表应含物料名称列').toContain('物料名称');
}
}
/** 只读明细 Tab 首行的申请单号与计划生效时间,供组合查询取样本。 */
async readSampleRow(): Promise<{ order: string; planDate: string }> {
await this.switchToDetailTab();
const row = await this.firstRow();
return {
order: (await this.tryCell(row, '申请单号')).replace(/\s/g, ''),
planDate: (await this.tryCell(row, '计划生效时间')).trim(),
};
}
/** 物料名称、生产厂家、计划生效日期、申请单号组合查询(日期取样本行当天)。 */
async filterDetailCombination(): Promise<{ applied: string[]; missing: string[] }> {
await this.expectDetailTabReady();
const sample = await this.readSampleRow();
const day = toDay(sample.planDate);
const scope = await this.queryScope();
const result = await this.applyFilterCombination(
[
{ label: '物料名称', aliases: [...admitData.listNameColumnAliases], kind: 'text', value: '管' },
{ label: '生产厂家', kind: 'text', value: '医疗' },
{ label: '计划生效日期', aliases: ['计划生效时间'], kind: 'dateRange', value: day ?? undefined },
{ label: '申请单号', kind: 'text', value: sample.order || admitData.mockOrder },
],
{ scope, skipMissing: false },
);
await this.waitForTableReady();
return result;
}
async resetFilters(): Promise<void> {
await this.expectDetailTabReady();
const orderInput = this.textInput('申请单号');
const hasOrderInput = await orderInput.isVisible().catch(() => false);
if (hasOrderInput) {
await this.fill(orderInput, '样', '填写申请单号');
} else {
await this.fillFilter('生产厂家', '样');
}
await this.reset();
if (hasOrderInput) await this.expectInputCleared('申请单号');
else await this.expectInputCleared('生产厂家');
await this.expectListOrEmpty();
}
/** 明细筛选区展开 / 收起:收起后额外字段隐藏,再展开已填值仍在。 */
async collapseKeepsValues(): Promise<void> {
await this.expectDetailTabReady();
const collapse = this.button('收起').first();
if (!(await collapse.isVisible().catch(() => false))) {
await this.skipWhenDataInsufficient('明细筛选区无展开/收起');
return;
}
const label = (await this.textInput('申请单号').isVisible().catch(() => false)) ? '申请单号' : '生产厂家';
const value = 'AUTO-SUP';
await this.fillFilter(label, value);
await this.click(collapse, '收起明细筛选区');
await expect(this.textInput(label), '收起后筛选字段应隐藏').toBeHidden();
const expand = this.button('展开').first();
await expect(expand, '展开按钮').toBeVisible();
await this.click(expand, '再次展开明细筛选区');
await expect(this.textInput(label), '再展开后已填值应保留').toHaveValue(value);
}
async mockEmpty() {
return this.runMockEmptyQuery(admitData.mockOrder, async () => {
await this.expectDetailTabReady();
if (await this.textInput('申请单号').isVisible().catch(() => false)) {
await this.fillFilter('申请单号', admitData.mockOrder);
} else {
await this.fillProductNameFilter(admitData.mockGoods);
}
await this.query();
});
}
async coreHeaders(): Promise<string[]> {
await this.switchToDetailTab();
const collapse = this.button('收起').first();
if (await collapse.isVisible().catch(() => false)) {
await this.click(collapse, '收起筛选区');
}
await this.query();
return this.headerTexts();
}
/** 先查询(至少 1 条)再导出,不校验文件内容。 */
async exportAfterQuery(): Promise<void> {
test.setTimeout(120_000);
await this.switchToDetailTab();
await this.query();
if ((await this.getDataRowCount()) === 0) {
await this.skipWhenDataInsufficient('明细查询当前条件无数据,无法校验导出');
}
const exportBtn = this.button('导出').first();
if (!(await exportBtn.isVisible().catch(() => false))) {
await this.skipWhenDataInsufficient('明细查询无导出按钮');
}
await executeExportReport({
page: this.page,
prepareBusinessAction: () => this.assertBeforeBusinessAction('导出'),
clickExport: () => this.click(exportBtn, '点击导出'),
responseWaitMs: 22_000,
allowSuccessWithoutNetwork: true,
assertHealthy: async () => {
await this.waitSpinGone();
expect(await this.page.locator('.ant-message-error').count(), '导出后无错误提示').toBe(0);
},
});
this.expectOnSupplyUrl();
}
/** 横滚后断言表头列数与数据列数一致(明细列宽超出视口)。 */
async horizontalScrollAligned(): Promise<void> {
await this.switchToDetailTab();
await this.query();
if ((await this.getDataRowCount()) === 0) {
await this.skipWhenDataInsufficient('明细查询无数据,无法校验横滚');
}
const body = this.page.locator('.ant-table-body, .ant-table-content').first();
if (!(await body.isVisible().catch(() => false))) {
await this.skipWhenDataInsufficient('明细列表无横向滚动容器');
}
const overflow = await body.evaluate((el) => el.scrollWidth > el.clientWidth + 4).catch(() => false);
if (!overflow) {
await this.skipWhenDataInsufficient('明细列未超出视口,横滚不适用');
}
await body.evaluate((el) => {
el.scrollLeft = el.scrollWidth;
});
await this.waitSettle(300);
const scrolled = await body.evaluate((el) => el.scrollLeft).catch(() => 0);
expect(scrolled, '远侧列应可滚入视口').toBeGreaterThan(0);
const headers = await this.headerTexts();
expect(headers.length, '表头列数应大于 0').toBeGreaterThan(0);
const row = await this.firstRow();
const firstCell = row.locator('td').first();
const box = await firstCell.boundingBox().catch(() => null);
expect(box, '数据格应可见').toBeTruthy();
}
}
function toDay(value: string): string | null {
const matched = value.match(/(\d{4})[-/](\d{1,2})[-/](\d{1,2})/);
if (!matched) return null;
return `${matched[1]}-${matched[2].padStart(2, '0')}-${matched[3].padStart(2, '0')}`;
}
......@@ -12,6 +12,7 @@ export class AdmitSupplyPage extends AdmitSharedPage {
menu: admitData.menuSupply,
forbidden: ['productApply/', 'productOrder/', 'accessKind/'],
});
this.columnSettingsToggleCandidates = admitData.supplyColumnSettingsToggleCandidates;
}
async ready(): Promise<void> {
......@@ -34,9 +35,19 @@ export class AdmitSupplyPage extends AdmitSharedPage {
async resetFilters(): Promise<void> {
await this.query();
const supplier = await this.sampleCell('进院供应商');
await this.chooseSelect('进院供应商', supplier);
let clearedLabel: string | undefined;
if (await this.textInput('变更单号').isVisible().catch(() => false)) {
await this.fillFilter('变更单号', '样');
clearedLabel = '变更单号';
} else if (await this.textInput('物料名称').isVisible().catch(() => false)) {
await this.fillFilter('物料名称', '样');
clearedLabel = '物料名称';
} else {
const supplier = await this.sampleCell('进院供应商');
await this.chooseSelect('进院供应商', supplier);
}
await this.reset();
if (clearedLabel) await this.expectInputCleared(clearedLabel);
await this.expectListOrEmpty();
}
......@@ -81,17 +92,6 @@ export class AdmitSupplyPage extends AdmitSharedPage {
await expect(this.page.getByText(remark)).toHaveCount(0);
}
async switchModeWithoutSubmit(): Promise<void> {
const total = await this.getTotalCount();
await this.clickButton('新增');
await this.selectFirstOption('业务模式', this.put());
const no = this.put().getByText('否', { exact: true }).first();
if (await no.isVisible().catch(() => false)) await this.click(no, '切换是否默认');
else await this.selectFirstOption('是否默认', this.put());
await this.leaveWithoutCommit();
expect(await this.getTotalCount()).toBe(total);
}
async editBackfill(): Promise<void> {
await this.clickTab('待提交');
const row = await this.skipIfNoAction('编辑', '待提交无编辑');
......@@ -141,6 +141,31 @@ export class AdmitSupplyPage extends AdmitSharedPage {
await this.expectNeedsSelection('批量提交');
}
/** 非「待提交」Tab 有数据时行前复选框不可勾选;「待提交」Tab 可勾选。 */
async onlyPendingTabRowCheckboxCheckable(): Promise<void> {
await this.query();
const nonPendingTabs = ['已通过', '审批中', '已驳回', '全部'] as const;
let verifiedNonPending = false;
for (const tab of nonPendingTabs) {
const marked = await this.readTabCount(tab);
if (marked === 0) continue;
await this.clickTab(tab);
await this.waitForTableReady();
if ((await this.getDataRowCount()) === 0) continue;
await this.expectNoCheckableRows();
verifiedNonPending = true;
break;
}
if (!verifiedNonPending) {
await this.skipWhenDataInsufficient('无非待提交 Tab 数据,无法对比复选框禁用');
}
await this.clickTab('待提交');
await this.skipIfTabEmpty('待提交');
await this.clearChecks();
await this.checkFirstRow();
await this.clearChecks();
}
async batchCancel(): Promise<void> {
await this.skipIfTabEmpty('待提交');
const row = await this.checkFirstRow();
......@@ -164,6 +189,22 @@ export class AdmitSupplyPage extends AdmitSharedPage {
await this.leaveWithoutCommit();
}
async detailSupplierMatchesList(): Promise<void> {
await this.query();
const row = await this.skipIfNoAction('详情', '列表无详情入口');
const hospital = (await this.cellText(row, '进院供应商')).trim();
const secondary = (await this.cellText(row, '二级供应商')).trim();
await this.openPutFromRow(row, '详情');
const hNeedle = hospital.slice(0, Math.min(8, hospital.length));
expect(hNeedle.length, '进院供应商为空').toBeGreaterThan(0);
await expect(this.put(), '详情进院供应商').toContainText(hNeedle);
if (secondary) {
const sNeedle = secondary.slice(0, Math.min(8, secondary.length));
await expect(this.put(), '详情二级供应商').toContainText(sNeedle);
}
await this.leaveWithoutCommit();
}
/** 组合查询:一次性填满筛选区全部字段后查询(字段以现网搜索条为准)。 */
async filterCombination(): Promise<void> {
const scope = await this.queryScope();
......
......@@ -12,20 +12,13 @@ export class AdmitTaskPage extends AdmitSharedPage {
menu: admitData.menuTask,
forbidden: ['productApply/', 'productOrder/', 'supplyApply/'],
});
this.sortColumns = admitData.taskSortColumns;
}
async ready(): Promise<void> {
await this.expectOnPage();
}
async filterByProductName(): Promise<void> {
await this.query();
const name = await this.sampleCell(this.listNameColumn);
await this.fillProductNameFilter(name.slice(0, 40));
await this.query();
await this.expectRowsContain(this.listNameColumn, name);
}
async switchTabs(): Promise<void> {
await this.clickTabAndMatchCount('待分类');
await this.clickTabAndMatchCount('已分类');
......
......@@ -10,6 +10,7 @@ export class BasicBranchPage extends BasicHospitalSharedPage {
constructor(page: Page) {
super(page);
this.locators = new BasicBranchLocators(page);
this.columnSettingsToggleCandidates = basicHospitalData.branchColumnSettingsToggleCandidates;
}
async open(): Promise<void> {
......
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