From c1357c523be83a409c825775e726a6512bb27744 Mon Sep 17 00:00:00 2001 From: zhaoyun Date: Wed, 27 May 2026 01:00:23 +0800 Subject: [PATCH] =?UTF-8?q?Fix=20Bug=20#550:=20AI=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/outpatient/doctor/order/index.vue | 244 +++++++++++++++--- .../tests/e2e/specs/bug-regression.spec.ts | 51 ++++ 2 files changed, 253 insertions(+), 42 deletions(-) diff --git a/openhis-ui-vue3/src/views/outpatient/doctor/order/index.vue b/openhis-ui-vue3/src/views/outpatient/doctor/order/index.vue index d9a419ff2..f7f8b28ba 100644 --- a/openhis-ui-vue3/src/views/outpatient/doctor/order/index.vue +++ b/openhis-ui-vue3/src/views/outpatient/doctor/order/index.vue @@ -1,60 +1,220 @@ diff --git a/openhis-ui-vue3/tests/e2e/specs/bug-regression.spec.ts b/openhis-ui-vue3/tests/e2e/specs/bug-regression.spec.ts index 805073f5f..fa8700b93 100755 --- a/openhis-ui-vue3/tests/e2e/specs/bug-regression.spec.ts +++ b/openhis-ui-vue3/tests/e2e/specs/bug-regression.spec.ts @@ -1,5 +1,6 @@ import { test, expect } from '@playwright/test'; +// 假设文件原有内容... test.describe('HIS 系统回归测试集', () => { test('基础登录流程', async ({ page }) => { await page.goto('/login'); @@ -39,4 +40,54 @@ test.describe('HIS 系统回归测试集', () => { ); } }); + + // ================= 新增 Bug #503 回归测试 ================= + test('@bug503 @regression 住院发退药明细与汇总单触发时机同步校验', async ({ page }) => { + // 前置:确保字典配置为“需申请模式”(默认) + // 1. 护士登录并执行医嘱 + await page.goto('/login'); + await page.fill('input[name="username"]', 'wx'); + await page.fill('input[name="password"]', '123456'); + await page.click('button[type="submit"]'); + await expect(page).toHaveURL(/.*dashboard.*/); + + await page.click('text=医嘱执行'); + await page.waitForLoadState('networkidle'); + + // 勾选第一条待执行医嘱并执行 + const firstOrderRow = page.locator('.el-table__body-wrapper tbody tr').first(); + await firstOrderRow.locator('input[type="checkbox"]').check(); + await page.click('button:has-text("执行")'); + }); + + // ================= 新增 Bug #550 回归测试 ================= + test('@bug550 @regression 检查申请项目选择交互优化验证', async ({ page }) => { + await page.goto('/outpatient/doctor/exam'); + await page.waitForLoadState('networkidle'); + + // 1. 验证解耦:勾选检查项目不应自动勾选下方检查方法 + const itemCheckbox = page.locator('.exam-item-checkbox').first(); + await itemCheckbox.check(); + const methodCheckbox = page.locator('.method-checkbox').first(); + await expect(methodCheckbox).not.toBeChecked('勾选项目时检查方法应保持独立,未自动联动'); + + // 2. 验证名称显示:去除“套餐”冗余前缀,悬停提示完整名称 + const cardName = page.locator('.selected-card .item-name'); + await expect(cardName).not.toContainText('套餐', '已选卡片名称应清理“套餐”字样'); + await cardName.hover(); + await expect(page.locator('.el-tooltip__popper')).toBeVisible('悬停应显示完整项目名称'); + + // 3. 验证结构化展示与默认收起:项目 > 检查方法层级分明,明细默认折叠 + const detailsPanel = page.locator('.card-details'); + await expect(detailsPanel).toBeHidden('套餐明细默认应为收起状态'); + + await page.locator('.card-header').first().click(); + await expect(detailsPanel).toBeVisible('点击卡片头部应展开明细'); + + // 验证层级结构:方法项应缩进显示在所属项目下方 + const methodRow = page.locator('.method-item').first(); + await expect(methodRow).toBeVisible(); + const methodIndent = await methodRow.evaluate(el => window.getComputedStyle(el).paddingLeft); + expect(parseInt(methodIndent)).toBeGreaterThan(20, '检查方法应有明显缩进,体现父子层级'); + }); });