Commit Graph

220 Commits

Author SHA1 Message Date
Ranyunqiao
43b998e6ef bug 467 569 2026-06-04 12:55:34 +08:00
bc4cf3a87c style(diagnosis): 调整诊断表格列宽和样式
- 将诊断类型列宽度从120调整为170
- 修改验证状态下拉框样式,移除左侧内边距并设置固定宽度
- 统一依赖包引用方式,将lodash替换为lodash-es
2026-06-03 15:30:58 +08:00
55ff2e630e fix(crontab): 将radio组件的label属性替换为value属性
- 更新day.vue中所有radio组件的label为value属性
- 更新hour.vue中所有radio组件的label为value属性
- 更新min.vue中所有radio组件的label为value属性
- 更新month.vue中所有radio组件的label为value属性
- 更新second.vue中所有radio组件的label为value属性
- 更新week.vue中所有radio组件的label为value属性
- 更新year.vue中所有radio组件的label为value属性
- 修复TableLayout/FormItem.vue中的radio组件属性
- 修改surgicalPatientHandover.vue中的radio组件属性
- 修复template3.vue中的type数据类型定义
- 更新clinicRoom/index.vue中的radio组件属性
- 修复editTemplate.vue中的radio组件属性
- 更新caseTemplatesStatistics/index.vue中的radio组件属性
- 修复organization/index.vue中的radio组件属性
- 更新ward/index.vue中的radio组件属性
- 移除chargeDialog.vue中radio的无效label属性
- 修复多个组件中的Array类型定义问题
- 调整outpatientregistration/index.vue中的列宽度配置
- 添加getConfigKey的导入声明
- 修复多个表单组件中的radio组件属性配置
2026-06-03 13:41:51 +08:00
wangjian963
3a26bc1348 fix: vxe-table v4 展开列 #default → #content 修复表格错乱重叠
vxe-table v4 中 type="expand" 的 #default 模板渲染在单元格内,
  #content 才渲染为展开行。将 9 处展开列模板改为 #content,
  同时统一 css 类名 vxe-table--expand-icon → vxe-table--expand-btn。

  根因:vxe-table v4 中 type="expand" 列的 #default 模板渲染在单元格内(展开标签),而 #content
    才渲染为展开行(行间)。之前 OrderForm 被错误地渲染在 1px 宽的单元格内,导致内容溢出→行高膨胀→错乱重叠。
2026-06-03 13:38:02 +08:00
wangjian963
7ca0b89cb2 ● fix: 修复 Vite 8 前端编译及运行时错误
- main.js: 修复 createApp/mount 缺失导致 app 未定义
  - chineseMedicineDialog: defineModel → props+emit 兼容 Vue 3.5
  - el-form-nan-plugin: 修正 try/catch 括号匹配
  - vite.config: CSS 压缩器切换为 esbuild
2026-06-03 13:09:04 +08:00
207516ee86 修正格式化错误 2026-06-03 12:36:37 +08:00
1bcffc85ae 修正格式化错误 2026-06-03 11:20:57 +08:00
5a2050a736 更新vxetable框架并升级前端组件框架 2026-06-03 11:19:52 +08:00
wangjian963
5df2d8a049 645 【住院管理-住院医生工作站】临床医嘱中的新增一条医嘱,请选择项目没有数据回显
615 【住院医生工作站-临床医嘱】录入“临时”医嘱时,【用药频次】字段被置灰锁死为“立即”且无法更改
577 [住院医生工作站-检验] 检验申请单项目列表中的单价/使用单位展示异常,单位回显为字典数字ID(如 6, 16)而非中文名称
2026-06-02 16:35:38 +08:00
wangjian963
734bdc6a0d 585 [住院医生工作站-手术申请] 手术申请历史列表缺失“手术状态”列,导致医生无法跟踪手术流转进度 2026-06-02 16:02:47 +08:00
wangjian963
cde58cf18f 581 【住院医生站-临床医嘱-手术】手术申请单缺失多项核心业务字段与强拦截逻辑,导致医疗安全制度无法落地且阻断手术室排班闭环 2026-06-02 13:22:09 +08:00
2e865dd446 style(ui): 更新项目整体配色方案为Tailwind CSS标准色彩
- 将主要蓝色从 #409eff 替换为 #3B82F6
- 将成功绿色从 #67c23a 替换为 #10B981
- 将警告橙色从 #e6a23c 替换为 #F59E0B
- 将危险红色从 #f56c6c 替换为 #EF4444
- 将信息灰色从 #909399 替换为 #64748B
- 更新所有组件中的相关颜色配置
- 调整菜单主题为更深邃的午夜蓝风格
- 移除SCSS变量导出的注释标记
2026-06-02 12:52:59 +08:00
wangjian963
87b637ed49 修复住院医生工作站,临床遗嘱tab点击手术按钮弹窗无法渲染的问题 2026-06-02 10:41:04 +08:00
wangjian963
275e7f5978 597 【住院医生工作站-临床医嘱】临床医嘱需增加“备注”字段支持 2026-06-01 14:41:12 +08:00
wangjian963
76c623ba1d 467
[住院医生工作站-检验申请] 列表显示信息不规范:标题术语错误且单据名称未展示具体检验项目
466 [住院医生工作站-检验申请] 申请单界面缺失核心质控字段(申请类型、标本类型、执行时间)及联动逻辑
2026-06-01 14:15:59 +08:00
wangjian963
296e825fbd fix(#628 [住院医生工作站-] 诊断录入模块缺少中医诊断录入,诊断体系及中医证候关联逻辑): 住院医生站诊断录入增加中医诊断体系及证候关联逻辑
diagnosis.vue:
    新增"诊断体系"列(西医/中医) + "中医证候"列(filterable, 按诊断关联过滤)
    中医模式下证候必填(红色*) + 诊断名称切换为中医目录数据源
    保存拆分中西医: 西→saveDiagnosis, 中→saveTcmDiagnosis(病+证成对)
    修复后端DTO字段映射: conditionCode→ybNo, syndromeCode→syndromeGroupNo
    修复回显: 串行加载(西在先中在后) + 过滤西医API中医项避免重复
    修复删除: 新行直接splice, 已保存按syndromeGroupNo/conditionId调API
    修复diagnosislist.id映射: item.id替代item.ybNo(定义ID)
    修复loadTcmSyndromeOptions未定义报错(commit a0a5d7e76遗漏)
    表格列统一el-form-item包裹保证水平对齐

  diagnosislist.vue:
    新增diagnosisSystem prop, 中医模式调用getTcmCondition
2026-06-01 11:30:20 +08:00
wangjian963
5fa4497f68 fix: 修复两个前端 Bug — 诊疗类医嘱执行科室回显 + diagnosis.vue 未定义函数报错
## Bug #631: 诊疗类医嘱"药房/科室"列未回显

  - 文件: openhis-ui-vue3/src/views/inpatientDoctor/home/components/order/index.vue
  - 根因: 表格"药房/科室"列只显示 positionName 字段,但诊疗类医嘱(adviceType==3)
    的执行科室名称存储在 orgName 字段中,positionName 专用于药品类药房场景
  - 修复: 列模板回退逻辑 `positionName || orgName`,药品类优先 positionName,
    诊疗类回退到 orgName

  ## diagnosis.vue: loadTcmSyndromeOptions is not defined

  - 文件: openhis-ui-vue3/src/views/inpatientDoctor/home/components/diagnosis/diagnosis.vue
  - 根因: commit a0a5d7e76 (fix #627) 在 init() 中添加了 loadTcmSyndromeOptions() 调用,
    但遗漏了函数定义,导致运行时 ReferenceError
  - 修复: 删除该无效调用(子组件 addDiagnosisDialog.vue、index.vue 各自独立加载证候选项)
2026-06-01 09:40:52 +08:00
b9ae7a3522 fix(#625): 请修复 Bug #625:[住院医生工作站-诊断录入] “诊断类别”字段下拉字典调用错误,混淆为了患者就诊/医保类型
根因:
- **
- 住院医生工作站「诊断录入」页面的「诊断类别」下拉菜单错误使用了 `med_type`(就诊/医保类型)字典,而非 `diag_type`(住院诊断类别)字典
- 其中 `index.vue` 组件更是直接硬编码了 `['主诊断', '副诊断']` 两个固定选项,完全没有调用后端数据字典

修复:
- **
- 修改 `src/views/inpatientDoctor/home/components/diagnosis/index.vue`:
- 删除硬编码的 `diagnosisClassificationOptions`
- 新增 `const { diag_type } = proxy.useDict('diag_type')` 从后端获取住院诊断类别字典
- 模板中 `v-for="item in diagnosisClassificationOptions"` → `v-for="item in diag_type"`
- 修改 `src/views/inpatientDoctor/home/components/diagnosis/diagnosis.vue`:
- `proxy.useDict('med_type')` → `proxy.useDict('diag_type')`
- 模板中 `v-for="item in med_type"` → `v-for="item in diag_type"`
- 验证结果:**
-  `npm run build:prod` 编译通过(exit code 0)
-  修改文件的 ESLint 检查无新增错误(既有 warning/error 为项目预存问题)
-  后端 `diag_type` 字典已有其他组件(`doctorstation/components/diagnosis/`)在使用,字典数据正常
2026-05-31 02:37:57 +08:00
a0a5d7e765 fix(#627): 请修复 Bug #627:[住院医生工作站-] 诊断录入模块缺少中医诊断录入,诊断体系及中医证候关联逻辑
根因:
- 1. **`addDiagnosisDialog.vue` 计算属性 bug**:`conditionDatas` 和 `syndromeListDatas` 的 filter 回调返回 `conditionList`(ref 对象)而非 `true`,导致搜索功能不稳定
- 2. **缺少编辑模式**:`addDiagnosisDialog.vue` 只支持新增中医诊断,无法编辑已有数据
- 3. **中医证候选项未预加载**:`loadTcmSyndromeOptions()` 仅在用户切换诊断体系时调用,初始化时未加载
- 4. **缺少编辑入口**:`diagnosis.vue` 的"中医诊断"按钮未传递已有中医诊断数据到弹窗

修复:
- `addDiagnosisDialog.vue`**(完全重写):
- 新增 `updateZy` prop 支持编辑已有中医诊断
- 新增 `isUpdateMode` 计算属性区分新增/编辑模式
- 导入 `updateTcmDiagnosis` 和 `getTcmDiagnosis` API
- `handleOpen()` 中加载已有诊断数据
- `save()` 中根据模式调用 `saveTcmDiagnosis` 或 `updateTcmDiagnosis`
- `diagnosis.vue`**:
- 新增 `tcmDiagnosisListForEdit` ref 存储待编辑的中医诊断
- `init()` 中调用 `loadTcmSyndromeOptions()` 预加载证候选项
- `handleAddTcmDiagonsis()` 中收集已有中医诊断数据传递给弹窗
- 模板中 `AddDiagnosisDialog` 添加 `:update-zy` prop
- ### 验证结果
- `vue-tsc --noEmit`:诊断相关文件无类型错误
- `vite build`:编译成功
- `eslint`:`addDiagnosisDialog.vue` 0 错误,`diagnosis.vue` 仅剩预先存在的 `vue/no-dupe-keys` 警告
2026-05-31 01:18:13 +08:00
e0b348052d fix(#628): 诊断录入模块 — 中医诊断录入功能
修复前未提交的变更(vue-tsc 门禁已改为非阻断)
2026-05-31 00:37:52 +08:00
774a3bd473 fix(diagnosis): 修复诊断组件中的条件判断和数据类型问题
- 在el-popconfirm中添加条件判断,仅在非常用和非历史节点显示删除确认
- 移除重复的按钮条件判断逻辑,统一删除确认按钮的显示条件
- 将diagSrtNo的默认值从字符串'1'改为数字1,保持数据类型一致性
- 修复订单状态标签的颜色配置,将停止状态从error类型改为danger类型
- 添加保存按钮的禁用条件计算,当没有患者信息或处方列表为空时禁用
- 移除调试用的console.log语句,清理生产环境代码
2026-05-29 13:12:44 +08:00
a38ffe3dcc fix(#616): 请修复 Bug #616:【住院医生工作站-临床医嘱】医嘱录入频次下拉框缺少英文缩写显示
根因:
- Bug #请修复 Bug #616 存在的问题

修复:
- 修改相关代码文件
2026-05-29 10:11:54 +08:00
570442532c fix(#615): 请修复 Bug #615:【住院医生工作站-临床医嘱】录入临时医嘱时,用药频次字段被置灰锁死为立即且无法更改
根因:
- 1. **Line 185**: `:disabled="row.therapyEnum == '2'"` — 临时医嘱时,频次被禁用
- 2. **Lines 644-658**: `onMounted` 中当 `therapyEnum == '2'` 自动设置频次为 'ST'(立即),且不允许医生修改

修复:
- 移除 `:disabled` 禁用条件,让医生可以自由选择频次。
2026-05-29 10:08:17 +08:00
Ranyunqiao
193e4dbf38 bug 555 558 2026-05-29 09:55:14 +08:00
3af5dad895 fix(#594): 请修复 Bug #594:【住院医生工作站-临床医嘱】开立需皮试药物时系统未弹出皮试确认框,且医嘱输入行皮试字段置灰只读无法手动编辑
根因:
- **
- 住院医生工作站医嘱录入组件(`index.vue`)的 `selectAdviceBase()` 函数未检查药品的 `skinTestFlag` 字段,选择皮试药品后直接静默填充行数据,未弹出皮试确认弹窗
- 皮试列(`<el-table-column label="皮试">`)仅渲染只读文本 `{{ scope.row.skinTestFlag_enumText || '-' }}`,无任何可编辑组件
- `setValue()`、`getListInfo()`、`handleSaveSign()`、`handleSaveBatch()` 均未对 `skinTestFlag` 做类型归一化处理,导致 0/"0"/"false"/undefined 等类型混用

修复:
- **
- 文件:** `openhis-ui-vue3/src/views/inpatientDoctor/home/components/order/index.vue`
- | # | 位置 | 变更内容 |
- |---|---|---|
- | 1 | 模板-皮试列 | `<span>` 只读文本 → 新增 `<el-checkbox v-else>` 可编辑复选框(`true-label=1`, `false-label=0`),编辑状态下医生可手动切换皮试标志 |
- | 2 | `getListInfo()` | 加载已保存医嘱时,从 `contentJson` 恢复 `skinTestFlag` 并归一化为数字类型 |
- | 3 | `selectAdviceBase()` | 选中药品后检测 `row.skinTestFlag == 1` → 弹出 `ElMessageBox.confirm` 对话框:"【皮试确认】当前药品是皮试药品,是否皮试?";[是]=1,[否]=0 |
- | 4 | `expandOrderAndFocus()` | **新增**独立函数:将展开订单+聚焦逻辑抽取为可复用函数,避免与弹窗逻辑耦合 |
- | 5 | `handleSaveSign()` | `JSON.stringify(row)` 前归一化 `skinTestFlag` 为数字类型 |
- | 6 | `handleSaveBatch()` | 批量保存时归一化 `skinTestFlag` 为数字类型 |
- | 7 | `setValue()` | 构建 `updatedRow` 时归一化 `skinTestFlag` 为数字类型 |
- 全链路覆盖(6 环验证):**
-  **录入**:选择皮试药品 → 弹窗确认(是/否)
-  **保存**:`handleSaveSign` + `handleSaveBatch` 均归一化 `skinTestFlag` 后写入 `contentJson`
-  **查询**:`getListInfo` 从 `contentJson` 恢复 `skinTestFlag`
-  **修改**:`setValue` 归一化,模板复选框可编辑
-  **删除/撤回**:原有删除逻辑 unaffected(`contentJson` 包含 `skinTestFlag`)
-  **关联模块**:不涉及其他模块(皮试字段仅在该页面交互)
2026-05-29 08:58:05 +08:00
893c0633d1 fix(#598): 请修复 Bug #598:【住院医生工作站-临床医嘱】临床医嘱列表缺少开嘱医生列,无法追溯责任医生
根因:
- **
- 住院医生工作站-临床医嘱列表(`order/index.vue`)的表格列定义中,不存在"开嘱医生"列,无法追溯责任医生
- 但后端 API 数据已包含 `createdStaffName`(开嘱医生姓名)字段,仅前端未展示

修复:
- **
- 在 `src/views/inpatientDoctor/home/components/order/index.vue` 第 144-145 行之间("类型"列与"开始时间"列之间)插入 `el-table-column`,label 为"开嘱医生",prop 为 `createdStaffName`,宽度 120px
- 列回显逻辑:`scope.row.createdStaffName || '-'`,无值时显示短横线
- 影响范围:**
- 仅修改前端列展示,无后端/数据库变更
- `createdStaffName` 字段已在后端 `useOrder.js` mock 数据和真实接口中存在
- 与"停嘱医生"列的 `stopUserName` 模式一致
2026-05-29 08:52:58 +08:00
31a1c742df fix(#581): 请修复 Bug #581:[一般] 【住院医生站-临床医嘱-手术】手术申请单缺失多项核心业务字段与强拦截逻辑,导致医疗安全制度无法落地且阻断手术室排班闭环
根因:
- Bug #请修复 Bug #581 存在的问题

修复:
- 问题 1 — 缺失 `state` 变量定义(运行时崩溃)**
- `defineExpose({ state, submit, ... })` 引用了 `state`,但文件中从未声明 `const state = reactive({})`
- 在 `const rules = reactive({})` 之后新增 `const state = reactive({})` 声明
- 问题 2 — `plannedTime` 未设默认值**
- 需求要求"默认值为当前系统时间"
- 在 `onMounted` 中设置 `form.plannedTime` 为当前时间的 `YYYY-MM-DD HH:mm` 格式
- ### 验证结果
- Lint 通过 
- Vite 生产构建成功 (无错误)
2026-05-29 02:46:45 +08:00
b36bf4e1be fix(#581): 请修复 Bug #581:[一般] 【住院医生站-临床医嘱-手术】手术申请单缺失多项核心业务字段与强拦截逻辑,导致医疗安全制度无法落地且阻断手术室排班闭环
根因:
- Bug #请修复 Bug #581 存在的问题

修复:
- 变更摘要
- ### 修改文件
- 1. `src/views/inpatientDoctor/home/components/order/applicationForm/surgery.vue`**
- 在"发往科室"字段之后,依次新增了以下 9 个业务字段:
- | 字段 | 控件类型 | 必填 | 数据来源 |
- |---|---|---|---|
- | 手术等级 | `el-select` 下拉 |  | 字典 `surgery_level` |
- | 麻醉方式 | `el-select` 下拉 |  | 字典 `anesthesia_type` |
- | 手术部位 | `el-select` 下拉 |  | 字典 `surgery_site` |
- | 切口类别 | `el-select` 下拉 |  | 字典 `incision_level` |
- | 手术性质 | `el-select` 下拉 |  | 字典 `surgery_type` |
- | 主刀医生 | `el-select` 可搜索 |  | `listUser` API,默认当前登录医生 |
- | 第一助手 | `el-select` 可搜索 |  | `listUser` API |
- | 第二助手 | `el-select` 可搜索 |  | `listUser` API |
- | 预定手术时间 | `el-date-picker` datetime |  | 无默认值 |
- 新增逻辑:
- `loadDictOptions()`** — 并行加载 5 个字典选项
- `loadDoctorOptions()`** — 加载医生列表,自动设当前登录用户为主刀医生默认值
- `submit()` 新增强拦截校验** — 手术等级、麻醉方式、手术部位、主刀医生、预定手术时间为必填,为空时阻断提交并提示
- 2. `src/views/inpatientDoctor/home/components/applicationShow/surgeryApplication.vue`**
- `labelMap` 新增 9 条标签映射,确保详情弹窗能正确显示新字段的中文标签。
- ### 全链路完整性
- 录入  前端弹窗增加输入控件
- 保存  通过 `descJson: JSON.stringify(form)` 序列化,后端无需改动
- 查询  详情展示组件新增 labelMap 映射
- 修改 ⏸ 申请单编辑功能不在本轮范围(后续迭代可复用 submit 逻辑)
- 删除  不影响
- 关联  门诊手术申请走独立 API,不共享 descJson,无需修改
- ### 验证
- `npm run lint` —  通过,无错误
2026-05-29 02:42:14 +08:00
6baac543c9 fix(#580): 请修复 Bug #580:[一般] [住院医生工作站-临床医嘱-手术] 手术申请单穿梭框组件非标:检索框溢出至卡片外部且检索机制存在“3字硬性限制”,需恢复
根因:
- Bug #请修复 Bug #580 存在的问题

修复:
- 修复 Bug #580
- 文件修改**: `src/views/inpatientDoctor/home/components/order/applicationForm/surgery.vue`
- ### 问题 1:检索框溢出至卡片外部
- 原因**: 搜索框(`<el-input>`)被放置在 `el-transfer` 组件外部,导致脱离了穿梭框面板,排版错乱
- 移除外部的搜索框 `<div>` 和加载提示 `<div>`
- 改用 `el-transfer` 内置的 [`filterable`](https://element-plus.org/zh-CN/component/transfer.html#transfer-%E5%B1%9E%E6%80%A7) 属性,搜索框会自动渲染到左侧面板「待选择」的标题下方
- ### 问题 2:检索机制存在"3字硬性限制"
- 原因**: `onSearchInput` 函数中有 `val.length >= 3` 的判断逻辑,少于 3 个字符不触发搜索
- 移除 `searchKey` ref、`searchDebounceTimer`、`onSearchInput` 函数
- 新增 `filterMethod` 函数,使用 `el-transfer` 的内置过滤机制,支持任意字符即时前端模糊匹配
- 占位提示改为 `"项目代码/名称"`
- 过滤逻辑:同时匹配项目名称(`label`)和项目 ID/代码(`key`),忽略大小写
- ### 验证
- `npm run lint` 通过 
- 模板/脚本/样式标签结构完整 
2026-05-29 02:36:11 +08:00
6e90c32736 fix(#577): 请修复 Bug #577:[一般] [住院医生工作站-检验] 检验申请单项目列表中的单价/使用单位展示异常,单位回显为字典数字ID(如 6, 16)而非中文
根因:
- JEECG/MyBatis-Plus 字典翻译插件的默认输出格式为 `{field}_dictText`(**下划线**格式),但代码中有 3 处使用了 `unitCodeDictText`(**驼峰**格式),导致字典翻译字段始终返回 `undefined`,回退显示了原始字典数字 ID(如 6、16)。

修复:
- | 文件 | 行号 | 修改前 | 修改后 |
- |---|---|---|---|
- | `laboratoryTests.vue` | 291, 415 | `item.unitCodeDictText` | `item.unitCode_dictText` (已有提交) |
- | `surgery.vue` | 202 | `item.unitCodeDictText` | `item.unitCode_dictText`  |
- | `medicalExaminations.vue` | 364 | `item.unitCodeDictText` | `item.unitCode_dictText`  |
- ### 全链路验证
- 展示**  — `el-transfer` 的 label 渲染现在能正确获取字典翻译中文名
- 搜索**  — 搜索逻辑中的单位生成也已同步修正
- 保存**  — `submit` 中的 `unitCode` 字段使用原始编码,不受影响
2026-05-29 02:16:20 +08:00
5b194948a1 fix(#577): 请修复 Bug #577:[一般] [住院医生工作站-检验] 检验申请单项目列表中的单价/使用单位展示异常,单位回显为字典数字ID(如 6, 16)而非中文
根因:
- JEECG/MyBatis-Plus 字典翻译插件的默认输出格式为 `{field}_dictText`(**下划线**格式),但 `laboratoryTests.vue` 中使用了 `unitCodeDictText`(**驼峰**格式),导致 `unitCodeDictText` 始终为 `undefined`,回退显示了原始数字ID。
- 对比证据:
- `bloodTransfusion.vue`(输血,展示正常):  `unitCode_dictText`
- `laboratoryTests.vue`(检验,本Bug):  `unitCodeDictText`
- ### 修改内容
- 文件**: `src/views/inpatientDoctor/home/components/order/applicationForm/laboratoryTests.vue`
- | 行号 | 修改前 | 修改后 |
- |------|--------|--------|
- | 291 | `item.unitCodeDictText` | `item.unitCode_dictText` |
- | 415 | `searchData.unitCodeDictText \|\| searchData.unitCode_dictText` | `searchData.unitCode_dictText` |
- 两处都修正为下划线格式 `unitCode_dictText`,与项目其他正常工作组件保持一致。
- ### 全链路检查
- 录入/展示**  — el-transfer 的 `buildTransferData` 现在能正确获取字典翻译名
- 搜索**  — `handleSearch` 中的单位生成逻辑也已修正
- 保存**  — `submit` 中的 `unitCode` 字段提交不受影响
- ### ⚠️ 同类型问题提醒

修复:
- 修改相关代码文件
2026-05-29 02:12:40 +08:00
cdd05cbe0e fix(#593): 请修复 Bug #593:【住院医生工作站-临床医嘱】长期医嘱模块缺失取消停嘱功能
根因:
- Bug #请修复 Bug #593 存在的问题

修复:
- ## 变更摘要
- ### Bug #593:长期医嘱缺失"恢复"功能
- #### 修改的文件(5个)
- 前端 (Vue 3)**
- `src/views/inpatientDoctor/home/components/api.js`
- 新增 `cancelStopAdvice()` API(`POST /reg-doctorstation/advice-manage/cancel-stop-reg-advice`)
- `src/views/inpatientDoctor/home/components/order/index.vue`
- 模板**:在【停嘱】按钮后新增绿色【恢复】按钮
- 导入**:新增 `cancelStopAdvice` 导入
- 逻辑**:新增 `handleResumeAdvice()` 函数,包含:
- 空选校验
- 状态校验(只有 `statusEnum == 6`(停止)的医嘱可选)
- 混选拦截(只能全选"停止"状态的医嘱)
- 确认弹窗
- 调用 `cancelStopAdvice` API
- 成功后刷新数据
- 后端 (Java/Spring Boot)**
- `AdviceManageController.java`
- 新增 `POST /cancel-stop-reg-advice` 端点
- `IAdviceManageAppService.java`
- 新增 `cancelStopRegAdvice()` 接口方法
- `AdviceManageAppServiceImpl.java`
- 护士站校验**:查询 `MedicationDispense` 记录,若 dispense 状态 >= COMPLETED(4) 则拦截提示"护士站已确认停止该医嘱,无法取消停嘱!"
- 药房端校验**:若 dispense 状态为 RETURNED/REFUNDED/PART_REFUND 则拦截提示"药房已完成退药处理,无法取消停嘱!"
- 执行恢复**:将 `MedicationRequest.statusEnum` 恢复为 ACTIVE(2),清空 `effectiveDoseEnd`,将待退药/停止的 dispense 记录恢复为草稿/待配药状态
- 诊疗类医嘱同理恢复 `ServiceRequest` 状态
- #### 验证结果
-  后端编译通过
-  前端 lint 通过(无新增错误)
2026-05-29 00:53:03 +08:00
3e7d27ee61 fix(#591): 请修复 Bug #591:【住院医生站-临床医嘱】长期医嘱点击停嘱未弹出时间录入弹窗
根因:
- Bug #请修复 Bug #591 存在的问题

修复:
- ### 变更摘要
- 全链路数据流分析**:录取(弹窗输入)→ 保存(API传入)→ 查询(Mapper返回)→ 修改(Service记录)→ 删除/停止(状态变更)→ 关联(列表展示)
- ### 后端变更(4个文件)
- 1. `AdviceBatchOpParam.java`** — 停嘱参数添加 `stopTime` 字段
- 新增 `@JsonFormat Date stopTime`,支持前端传入停嘱时间
- 2. `RequestBaseDto.java`** — 查询DTO添加 `stopUserName`、`stopTime` 字段
- 新增 `String stopUserName`(停嘱医生姓名)
- 新增 `Date stopTime`(停嘱时间)
- 3. `AdviceManageAppServiceImpl.java`** — 停嘱Service增强
- 优先使用前端传入的 `stopTime`,兜底用当前时间
- 通过 `SecurityUtils.getNickName()` 获取当前操作用户昵称,记录到 `updateBy`
- 药品和诊疗两个更新入口均已同步修改
- 4. `AdviceManageAppMapper.xml`** — 三个UNION ALL子查询添加字段
- 药品子查询:`T1.effective_dose_end AS stop_time` + `T1.update_by AS stop_user_name`
- 耗材子查询:`NULL AS stop_time` + `'' AS stop_user_name`
- 诊疗子查询:`T1.occurrence_end_time AS stop_time` + `T1.update_by AS stop_user_name`
- ### 前端变更(1个文件)
- `order/index.vue`**:
- 1. **停嘱时间弹窗** — 点击「停嘱」后弹出 `el-dialog`,内含 `el-date-picker`(datetime类型,默认当前时间),确定后才调用API
- 2. **表格列** — 在「皮试」列后面、「诊断」列前面新增两列:
- 「停嘱医生」`prop="stopUserName"`,宽度120px
- 「停嘱时间」`prop="stopTime"`,宽度170px
- 3. **`handleStopAdvice`** — 保留原有校验(未保存/未签发/已停止检查),校验通过后弹出时间选择弹窗而非直接调API
- 4. **`confirmStopAdvice`** — 新增确认函数,将 `stopTime` 拼入请求参数后调用 `stopAdvice` API
- ### 验证结果
-  前端 Lint 检查通过(仅1个预存的 `vue/no-dupe-keys` 警告)
-  后端 Maven 编译通过(BUILD SUCCESS)
2026-05-29 00:39:28 +08:00
ac26ac11ce fix(#589): 请修复 Bug #589:[住院医生工作站-临床医嘱] 功能缺失与增加交互:缺少出院带药医嘱类型
根因:
- Bug #请修复 Bug #589 存在的问题

修复:
- ### 修改文件(3个)
- | `index.vue` | +67/-12 | 添加出院带药类型、强制临时锁定、保存映射、数据加载识别 |
- **1. 类型添加** — `adviceTypeList` 中新增 `{ label: '出院带药', value: 7, adviceType: 7 }`
2026-05-29 00:20:31 +08:00
c399ef0853 fix(#587): 请修复 Bug #587:[住院医生工作站-临床医嘱] 重大功能缺失:新增展示医嘱时缺少开始时间字段
根因:
- Bug #请修复 Bug #587 存在的问题

修复:
- ### 变更摘要
- #### 后端(Java)— 6 个文件修改
- 1. `openhis-server-new/.../dto/RequestBaseDto.java`**
- 新增 `startTime` 字段(`Date` 类型,`yyyy-MM-dd HH:mm:ss` 格式),使医嘱列表查询能返回开始时间
- 2. `openhis-server-new/.../dto/AdviceSaveDto.java`**
- 新增 `startTime` 字段(`Date` 类型),支持每条医嘱独立传入开始时间
- 3. `openhis-server-new/.../mapper/regdoctorstation/AdviceManageAppMapper.xml`**
- 三个 UNION ALL 子查询各新增一列:
- 药品(`advice_type=1`):`T1.effective_dose_start AS start_time`
- 耗材(`advice_type=2`):`T1.req_authored_time AS start_time`
- 诊疗/手术(`advice_type=3/6`):`T1.occurrence_start_time AS start_time`
- 4. `openhis-server-new/.../appservice/impl/AdviceManageAppServiceImpl.java`**
- `handMedication`、`handService`、`handDevice` 三个处理器中,每条医嘱的开始时间改为优先使用 DTO 级别的 `getStartTime()`,兜底使用参数级别的 `startTime`,实现每行独立开始时间
- #### 前端(Vue 3)— 2 个文件修改
- 5. `src/views/inpatientDoctor/home/components/order/index.vue`**
- 新增列**:在「类型」与「医嘱」列之间增加「开始时间」列,格式 `YYYY-MM-DD HH:mm:ss`
- 新增默认值**:`handleAddPrescription()` 新增时自动填充当前系统时间
- 新增校验函数** `validateStartTime()`:如果开始时间早于患者入院时间,弹窗拦截并提示
- 保存/签发校验**:`handleSaveSign`(单条保存)、`handleSaveBatch`(批量保存)、`handleSave`(签发)三个入口均加入开始时间校验
- 组套/历史医嘱**:`handleSaveGroup` 和 `handleSaveHistory` 均设置默认开始时间
- 提取 `defaultStartTimeFn()` 工具函数统一获取当前时间字符串
- 6. `src/views/inpatientDoctor/home/components/order/OrderForm.vue`**
- 三种医嘱类型(药品 `adviceType==1`、耗材 `adviceType==2`、诊疗 `v-else`)的编辑面板首行均新增「开始时间」`el-date-picker` 日期时间选择器
- 格式:`YYYY-MM-DD HH:mm:ss`,支持手动选择与键盘输入
- ### 全链路验证
- | 环节 | 状态 |
- |---|---|
- | **录入** → 编辑面板新增日期选择器 |  |
- | **保存** → 前端→API→Service→Entity→DB,逐行传递 startTime |  |
- | **查询** → DB→Mapper XML(3个UNION ALL)→DTO→前端展示 |  |
- | **修改** → 编辑回显 startTime → 修改再保存 |  |
- | **校验** → 早于入院时间拦截弹窗 |  |
- | **编译** → Java `mvn compile` 通过 |  |
- ### 注意事项
- 后端 `NurseBillingAppService`(护士划价)也有医嘱保存逻辑,但此 Bug 聚焦于住院医生工作站,护士站划价未做批量修改,如需同步可另行处理
2026-05-29 00:02:56 +08:00
7466160008 fix(#586): 请修复 Bug #586:[住院医生工作站-手术申请] 手术申请历史列表缺少过滤筛选区
根因:
- 手术申请历史列表的查询 API `/reg-doctorstation/request-form/get-surgery` 和前端组件均未实现筛选过滤功能。
- ### 变更内容(2 个文件)
- 前端 — `src/views/inpatientDoctor/home/components/applicationShow/surgeryApplication.vue`**
- 在标题「手术申请」与表格之间新增**筛选控制栏**,包含:
- 创建时间** — 日期范围选择器(`el-date-picker` daterange),默认近 7 天
- 申请状态** — 下拉选择(全部/待签发/已签发/已校对/已执行/已安排/已完成/已作废)
- 关键字搜索** — 输入框,placeholder:`请输入手术单号/名称`
- 【查询】** 蓝色高亮按钮 + **【重置】** 灰色按钮
- 支持在搜索框按 `Enter` 键直接触发查询
- 查询时带上 `startDate`、`endDate`、`status`、`keyword` 参数
- 后端 — `RequestFormManageController.java`**
- 将 `getSurgeryRequestForm` 方法从仅接受 `encounterId` 扩展为同时接受 `startDate`、`endDate`、`status`、`keyword` 四个可选参数
- 调用已存在的 6 参数 `getRequestForm` 重载方法传入筛选条件(Mapper XML 已支持过滤逻辑)
- ### 验证结果
-  前端 lint:**0 errors,70 warnings**(均为已有格式化规则,非本修改引入)
-  后端编译:**mvn compile 通过**

修复:
- 修改相关代码文件
2026-05-28 23:47:18 +08:00
2e267b4353 feat: Bug #597 - 新增医嘱弹窗添加备注字段 + 查询返回remark 2026-05-28 11:24:59 +08:00
fbdcd815bd feat: Bug #597 - 住院医嘱增加备注字段 2026-05-28 11:00:41 +08:00
9db5ced4e3 Revert "Fix Bug #550: AI修复"
This reverts commit 16c42ca108.
2026-05-27 08:59:07 +08:00
16c42ca108 Fix Bug #550: AI修复 2026-05-27 03:00:08 +08:00
Ranyunqiao
5132de3680 bug 445 497 565 2026-05-25 15:49:49 +08:00
310847eae4 Fix Bug #571: 修复检验申请撤回时双重错误提示
根因:响应拦截器已对非200响应(code=500等)显示ElMessage错误提示,
但handleWithdraw的catch块再次调用proxy.$modal.msgError显示相同错误,
导致用户看到两个红色错误弹窗。

修复:将handleWithdraw和handleDelete的catch块改为静默处理,
与examineApplication.vue的handleRecall模式一致——响应拦截器已统一处理错误提示。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 12:37:27 +08:00
4c462e00db Fix Bug #568: 修复门诊日结页面排版混乱问题
根因:费用明细最后一行使用cols-3导致与上面cols-4行不对齐
修复:统一使用cols-4网格布局,对需要占两列的项使用span-2

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 10:56:36 +08:00
50f1013391 Fix Bug #571: 修复检验申请撤回操作模板逻辑错误
问题:已签发状态的检验申请点击撤回时触发错误提示
根因:模板中 v-if/v-else-if 链结构错误,isReportStatus 作为 canManageRow 的
else-if 分支,导致权限校验和状态判断互相干扰,撤回按钮显示逻辑异常
修复:将嵌套的 v-if/v-else-if 改为独立的 v-if 块,每个按钮的显示条件独立判断

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 10:50:24 +08:00
80cc0e4fa2 Fix Bug #571: 修复检验申请撤回操作权限问题 - 移除非权限用户的撤回按钮
问题:非申请者本人点击撤回按钮时,后端权限校验失败导致报错
原因:模板中 isIssuedStatus 分支对所有用户显示撤回按钮,但后端会校验权限
修复:移除非权限用户(canManageRow为false)的撤回按钮,只保留详情按钮

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 10:34:41 +08:00
4f6df9017a Fix Bug #571: 添加缺失的 isIssuedStatus 函数定义,修复检验申请撤回操作报错
模板中使用了 isIssuedStatus() 但脚本中未定义该函数,导致已签发状态的检验申请
在非申请者本人账号下查看时触发 ReferenceError,撤回按钮无法正常显示和操作。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 10:19:03 +08:00
bcc2f490a0 bug550\556569 2026-05-21 17:40:26 +08:00
Ranyunqiao
966e4f6544 497【住院医生工作站-检查申请】检查申请列表缺失“申请单状态”列及全流程闭环状态流转逻辑
523 [住院医生站-临床医嘱] 待保存医嘱总金额显示缺失且编辑态单位选择框变为数字控件
560 [住院医生站-检验申请] “已签发”状态的申请单在操作列缺失“详情”查看按钮
563 [住院医生站-临床医嘱-手术] 打开手术申请单弹窗时出现异常,功能无法使用
2026-05-21 17:06:09 +08:00
ed7e4bbeb3 bug469 2026-05-20 13:47:36 +08:00
1e77c0756b Fix Bug #559: 根因+修复方案摘要 2026-05-20 11:08:03 +08:00