From 62ba4772ef8148d454b25bcb293e1d56cc767c3a Mon Sep 17 00:00:00 2001 From: zhaoyun Date: Wed, 27 May 2026 02:12:06 +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/CheckRequest.vue | 202 ++++++++---------- .../tests/e2e/specs/bug-regression.spec.ts | 43 ++-- .../service/impl/CheckRequestServiceImpl.java | 4 +- 3 files changed, 113 insertions(+), 136 deletions(-) diff --git a/openhis-ui-vue3/src/views/outpatient/doctor/CheckRequest.vue b/openhis-ui-vue3/src/views/outpatient/doctor/CheckRequest.vue index f0d6d3d05..3fcc2e19b 100644 --- a/openhis-ui-vue3/src/views/outpatient/doctor/CheckRequest.vue +++ b/openhis-ui-vue3/src/views/outpatient/doctor/CheckRequest.vue @@ -58,197 +58,181 @@ @change="handleMethodCheckChange(item, method)" @click.stop /> - {{ method.name }} + {{ method.name }} - + + + - 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 9292b5c1d..d3320f9c5 100755 --- a/openhis-ui-vue3/tests/e2e/specs/bug-regression.spec.ts +++ b/openhis-ui-vue3/tests/e2e/specs/bug-regression.spec.ts @@ -61,7 +61,7 @@ test.describe('HIS 系统回归测试集', () => { }); // ================= 修复 Bug #550 回归测试 ================= - test('@bug550 @regression 检查申请项目选择交互解耦与展示优化', async ({ page }) => { + test('@bug550 @regression 检查申请项目勾选解耦与展示优化', async ({ page }) => { await page.goto('/login'); await page.fill('input[name="username"]', 'doctor'); await page.fill('input[name="password"]', '123456'); @@ -71,32 +71,25 @@ test.describe('HIS 系统回归测试集', () => { await page.click('text=检查申请单'); await page.waitForLoadState('networkidle'); - // 1. 验证分类展开与项目勾选解耦 - await page.click('text=彩超'); - await page.waitForTimeout(500); - await page.locator('.item-panel .el-table__body tr:has-text("128线排") .el-checkbox').first().click(); + // 1. 验证默认收起状态 + const firstCard = page.locator('.selected-card').first(); + await expect(firstCard.locator('.method-list')).toBeHidden(); - // 验证检查方法未被自动勾选(解耦) - const methodCheckbox = page.locator('.selected-panel .method-item .el-checkbox').first(); - await expect(methodCheckbox).not.toBeChecked(); + // 2. 验证名称清理与 Tooltip + const itemName = page.locator('.item-name').first(); + await expect(itemName).not.toContainText('套餐'); + await itemName.hover(); + await expect(page.locator('.el-tooltip__trigger')).toBeVisible(); - // 2. 验证卡片名称清理与自适应 - const cardName = page.locator('.selected-card .item-name').first(); - await expect(cardName).not.toContainText('套餐'); - await expect(cardName).toHaveAttribute('title', /128线排/); // 完整名称在 title 中 + // 3. 验证勾选解耦:勾选项目不自动勾选方法 + const itemCheckbox = page.locator('.card-header .el-checkbox').first(); + await itemCheckbox.click(); + const methodCheckbox = page.locator('.method-item .el-checkbox').first(); + const isChecked = await methodCheckbox.isChecked(); + expect(isChecked).toBe(false); // 应保持独立,不联动 - // 3. 验证默认收起与层级结构 - const methodList = page.locator('.selected-card .method-list').first(); - await expect(methodList).toBeHidden(); // 默认收起 - - await page.locator('.selected-card .card-header').first().click(); - await expect(methodList).toBeVisible(); // 点击展开 - - // 4. 验证手动勾选方法独立生效 - await methodCheckbox.click(); - await expect(methodCheckbox).toBeChecked(); - // 父项目状态保持独立(不联动取消) - const itemCheckbox = page.locator('.selected-card .card-header .el-checkbox').first(); - await expect(itemCheckbox).toBeChecked(); + // 4. 验证展开/收起交互 + await firstCard.locator('.card-header').click(); + await expect(firstCard.locator('.method-list')).toBeVisible(); }); }); diff --git a/src/main/java/com/openhis/web/outpatient/service/impl/CheckRequestServiceImpl.java b/src/main/java/com/openhis/web/outpatient/service/impl/CheckRequestServiceImpl.java index ea493d37a..cd7f30d1c 100644 --- a/src/main/java/com/openhis/web/outpatient/service/impl/CheckRequestServiceImpl.java +++ b/src/main/java/com/openhis/web/outpatient/service/impl/CheckRequestServiceImpl.java @@ -39,7 +39,7 @@ public class CheckRequestServiceImpl implements CheckRequestService { return; } - // 1. 前端是否传入了重复的 item_code + // 1. 检查前端是否传入了重复的 item_code List duplicateCodes = selected.stream() .collect(Collectors.groupingBy(item -> (String) item.get("itemCode"))) .entrySet().stream() @@ -61,7 +61,7 @@ public class CheckRequestServiceImpl implements CheckRequestService { throw new IllegalArgumentException("以下项目已存在待处理申请,请勿重复提交: " + alreadyPending); } - // 3. 批量入库(项目与方法解耦,仅保存主项目记录,方法明细由前端独立组装或另表关联) + // 3. 批量插入申请记录(解耦明细,仅保存主项与关联方法ID) checkRequestMapper.batchInsertCheckRequests(selected); } }