# Bug #759 诸葛亮分析报告 > **文档类型**: Bug分析 > **分析时间**: 2026-06-12 14:36:23 > **分析模型**: mimo-v2.5 (LLM深度分析) --- ## 基本信息 - **Bug #**: 759 - **标题**: 【门诊医生工作站】电子处方点击新增处方,报卡在100%卡出屏幕且诊断等下拉框无数据回显 - **模块**: 门诊医生工作站 - **提出人**: 王栩坤 --- I now have a thorough understanding of both issues. Let me output the analysis. --- ### 一、Bug 理解 用户在门诊医生工作站点击"新增处方"时遇到两个问题:**报卡(处方弹窗)宽度超出屏幕**,在 100% 缩放下内容溢出无法完整显示;**诊断和慢病诊断下拉框没有数据**,无法选择。 ### 二、根因分析 #### 问题1:弹窗宽度超出屏幕 - **文件**:`healthlink-his-ui/src/views/doctorstation/components/eprescriptiondialog.vue:3` - **根因**:`el-dialog` 的 `width="1840px"` 是固定像素值。在 100% 缩放的标准 1920px 屏幕上,减去浏览器边框和滚动条后,弹窗右侧内容会超出视口。在 1440px 等更小的屏幕上问题更严重。 - 弹窗内部使用了多个 `` 并排布局(诊断字段在第二行第三个 col),进一步放大了宽度需求。 #### 问题2:诊断下拉框无数据 - **文件**:`healthlink-his-ui/src/views/doctorstation/components/eprescriptiondialog.vue:713-720` - **根因**:诊断下拉框使用 `remote` + `:remote-method="getInit"` 模式,`getInit` 函数有条件守卫 `if(searchKey)` ——只有用户输入关键词后才调用 API。弹窗打开时(`open()` 函数)**从未调用 `getInit` 初始化选项列表**,导致 `diagnosisListOption` 为空。 - 对比父组件 `prescriptionlist.vue`:它的诊断下拉使用 `diagnosisList`(由 `getDiagnosisInfo()` → `getEncounterDiagnosis()` 直接填充),所以有数据。但 `eprescriptiondialog` 用了不同的变量 `diagnosisListOption`,需要通过 `getDiagnosisListEle` API 搜索填充。 #### 问题3:慢病诊断下拉无数据(附加分析) - **文件**:`healthlink-his-ui/src/views/doctorstation/components/eprescriptiondialog.vue`(`getChronicDisease` 调用) - **根因**:`getChronicDisease` 调用后端 `/yb-request/getConditionDefinition`(`YbController.java:159`),该接口要求: 1. 医保系统(YB)已连接 2. 患者有医保信息(`InfoPerson` 不为空) 3. 患者有当前有效的慢性病记录(日期在 `begndate` ~ `enddate` 范围内) - 如果患者未参保或医保未连接,后端直接抛 `ServiceException`,前端 catch 后 `speDiagnosisList` 为空。这是**业务约束**而非代码 bug,但前端缺少无数据时的友好提示。 ### 三、修复方案 #### 修复1:弹窗宽度改为响应式 **文件**:`healthlink-his-ui/src/views/doctorstation/components/eprescriptiondialog.vue:3` ```diff - + ``` 同时添加样式限制最大宽度,防止超大屏幕上过宽: ```diff