1.8 KiB
1.8 KiB
Bug #522 分析报告
Bug 描述
[住院护士站-三测单] 体征录入点击保存后缺乏执行反馈且窗口异常自动关闭
涉及文件
- 前端:
openhis-ui-vue3/src/views/inpatientNurse/tprChart/components/addTprDialog.vue - API:
openhis-ui-vue3/src/views/inpatientNurse/tprChart/components/api.js - 父组件:
openhis-ui-vue3/src/views/inpatientNurse/tprChart/index.vue
根因分析
问题1:弹窗异常自动关闭 — 根因
在 addTprDialog.vue 模板中,保存按钮使用了 :disabled="buttonDisabled"(第50行和第108行),但 buttonDisabled 变量在整个 script setup 中从未声明。
在 Vue 3 <script setup> + Composition API 中,模板引用的变量必须在 script 中声明。未声明的变量会触发 ReferenceError,导致组件渲染失败或运行时异常。这个错误会破坏组件的响应式系统,使得 dialogVisible 的响应式绑定失效,从而导致弹窗在保存操作后异常关闭。
问题2:缺乏保存成功反馈 — 连带结果
虽然 confirmCharge() 函数在第1087行已有 proxy.$modal.msgSuccess('保存成功') 的调用,但由于 buttonDisabled 未声明引发的异常,导致代码执行路径被破坏,success 回调中的提示逻辑可能未能正常执行。
修复方案
- 在
addTprDialog.vue的 script setup 中新增buttonDisabledref 声明,初始值为false - 在保存操作中添加 loading 状态:点击保存后将按钮禁用,API 返回后恢复,防止重复提交的同时也保证了响应式状态的一致性
验收标准
- 点击保存后弹窗保持开启状态
- 保存成功后弹出"保存成功"提示
- 左侧体征历史记录列表自动刷新
- 录入区域表单被清空,方便继续录入下一条