diff --git a/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V2026.0622.01__fix_order_closed_loop_permissions.sql b/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V2026.0622.01__fix_order_closed_loop_permissions.sql new file mode 100644 index 000000000..8695632e4 --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V2026.0622.01__fix_order_closed_loop_permissions.sql @@ -0,0 +1,23 @@ +-- V106__fix_order_closed_loop_permissions.sql +-- 修复医嘱闭环模块权限,将 sys_menu 表中的权限标识更新为与后端 OrderClosedLoopController 一致的权限,并授权给相关角色 + +-- 1. 更新已有的“执行追踪”和“闭环统计”菜单的权限标识,与后端控制器的 @PreAuthorize 权限一致 +UPDATE sys_menu SET perms = 'inpatient:orderclosedloop:list' WHERE menu_id IN (20112, 20113); + +-- 2. 添加按钮级权限:“编辑/执行/催办”权限 +INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, menu_type, visible, status, perms, icon, create_by, create_time, remark) +VALUES +(20114, '医嘱执行编辑', 20112, 1, '', '', 'F', '0', '0', 'inpatient:orderclosedloop:edit', '#', 'admin', CURRENT_TIMESTAMP, '医嘱闭环-执行追踪编辑按钮权限'), +(20115, '闭环统计催办', 20113, 1, '', '', 'F', '0', '0', 'inpatient:orderclosedloop:edit', '#', 'admin', CURRENT_TIMESTAMP, '医嘱闭环-闭环统计催办按钮权限') +ON CONFLICT (menu_id) DO NOTHING; + +-- 3. 为“医生”、“护士”、“管理员”相关角色授予这些新引入的权限按钮 +INSERT INTO sys_role_menu (role_id, menu_id) +SELECT r.role_id, m.menu_id +FROM sys_role r +CROSS JOIN sys_menu m +WHERE r.role_name IN ('超级管理员', '管理员', 'admin', '医生', 'doctor', '门诊医生', '住院医生', '护士', 'nurse', '信息科管理员', '可用页面管理员') + AND m.menu_id IN (20114, 20115) + AND NOT EXISTS ( + SELECT 1 FROM sys_role_menu rm WHERE rm.role_id = r.role_id AND rm.menu_id = m.menu_id + ); diff --git a/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V2026.0622.02__grant_closed_loop_menu_to_roles.sql b/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V2026.0622.02__grant_closed_loop_menu_to_roles.sql new file mode 100644 index 000000000..20530d09f --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V2026.0622.02__grant_closed_loop_menu_to_roles.sql @@ -0,0 +1,35 @@ +-- V2026.0622.02__grant_closed_loop_menu_to_roles.sql +-- 修复 V2026.0622.01 的遗漏:将"执行追踪"(20112)和"闭环统计"(20113)菜单本身 +-- 以及按钮权限(20114, 20115)一起授予相关角色。 +-- 原脚本只给角色授予了 20114/20115 按钮,漏掉了 20112/20113 父菜单, +-- 导致 inpatient:orderclosedloop:list 权限无法加载到用户权限集合中。 + +-- 1. 将菜单 20112(执行追踪)、20113(闭环统计)、20114(医嘱执行编辑)、20115(闭环统计催办) 一起授权给相关角色 +INSERT INTO sys_role_menu (role_id, menu_id) +SELECT r.role_id, m.menu_id +FROM sys_role r +CROSS JOIN sys_menu m +WHERE r.role_name IN ( + '超级管理员', '管理员', 'admin', + '医生', 'doctor', '门诊医生', '住院医生', + '护士', 'nurse', + '信息科管理员', '可用页面管理员' + ) + AND m.menu_id IN (20112, 20113, 20114, 20115) + AND NOT EXISTS ( + SELECT 1 FROM sys_role_menu rm + WHERE rm.role_id = r.role_id AND rm.menu_id = m.menu_id + ); + +-- 2. 兜底:对于 role_key 包含 doctor/nurse/admin 的角色也进行授权, +-- 防止某些角色 role_name 为中文自定义名称(如"内科医生")但 role_key 仍匹配的情况 +INSERT INTO sys_role_menu (role_id, menu_id) +SELECT r.role_id, m.menu_id +FROM sys_role r +CROSS JOIN sys_menu m +WHERE (r.role_key LIKE '%doctor%' OR r.role_key LIKE '%nurse%' OR r.role_key = 'admin') + AND m.menu_id IN (20112, 20113, 20114, 20115) + AND NOT EXISTS ( + SELECT 1 FROM sys_role_menu rm + WHERE rm.role_id = r.role_id AND rm.menu_id = m.menu_id + ); diff --git a/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V20260622__fix_order_closed_loop_permissions.sql b/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V20260622__fix_order_closed_loop_permissions.sql new file mode 100644 index 000000000..5d5285879 --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V20260622__fix_order_closed_loop_permissions.sql @@ -0,0 +1,34 @@ +-- 修复医嘱闭环模块权限 +-- 1. 将 sys_menu 权限标识更新为与后端 OrderClosedLoopController 一致 +-- 2. 新增按钮级权限菜单 +-- 3. 为相关角色授予全部闭环菜单权限 + +-- 1. 修正"执行追踪"和"闭环统计"菜单的权限标识 +UPDATE sys_menu SET perms = 'inpatient:orderclosedloop:list' WHERE menu_id IN (20112, 20113); + +-- 2. 添加按钮级权限 +INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, menu_type, visible, status, perms, icon, create_by, create_time, remark) +VALUES +(20114, '医嘱执行编辑', 20112, 1, '', '', 'F', '0', '0', 'inpatient:orderclosedloop:edit', '#', 'admin', CURRENT_TIMESTAMP, '医嘱闭环-执行追踪编辑按钮权限'), +(20115, '闭环统计催办', 20113, 1, '', '', 'F', '0', '0', 'inpatient:orderclosedloop:edit', '#', 'admin', CURRENT_TIMESTAMP, '医嘱闭环-闭环统计催办按钮权限') +ON CONFLICT (menu_id) DO NOTHING; + +-- 3. 为相关角色授予闭环模块全部菜单(20112-20115) +INSERT INTO sys_role_menu (role_id, menu_id) +SELECT r.role_id, m.menu_id +FROM sys_role r +CROSS JOIN (SELECT unnest(ARRAY[20112, 20113, 20114, 20115]) AS menu_id) m +WHERE r.role_name IN ('超级管理员', '管理员', 'admin', '医生', 'doctor', '门诊医生', '住院医生', '护士', 'nurse', '信息科管理员', '可用页面管理员') + AND NOT EXISTS ( + SELECT 1 FROM sys_role_menu rm WHERE rm.role_id = r.role_id AND rm.menu_id = m.menu_id + ); + +-- 4. 兜底:按 role_key 模糊匹配(覆盖自定义中文角色名) +INSERT INTO sys_role_menu (role_id, menu_id) +SELECT r.role_id, m.menu_id +FROM sys_role r +CROSS JOIN (SELECT unnest(ARRAY[20112, 20113, 20114, 20115]) AS menu_id) m +WHERE (r.role_key LIKE '%doctor%' OR r.role_key LIKE '%nurse%' OR r.role_key = 'admin') + AND NOT EXISTS ( + SELECT 1 FROM sys_role_menu rm WHERE rm.role_id = r.role_id AND rm.menu_id = m.menu_id + ); diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/emr/mapper/EmrQualityScoreDataMapper.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/emr/mapper/EmrQualityScoreDataMapper.java new file mode 100644 index 000000000..5a2ad18e2 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/emr/mapper/EmrQualityScoreDataMapper.java @@ -0,0 +1,14 @@ +package com.healthlink.his.emr.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.healthlink.his.emr.domain.EmrQualityScore; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@Mapper +public interface EmrQualityScoreDataMapper extends BaseMapper { + + List selectByEncounterId(@Param("encounterId") Long encounterId); +} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/resources/mapper/emr/EmrQualityScoreDataMapper.xml b/healthlink-his-server/healthlink-his-domain/src/main/resources/mapper/emr/EmrQualityScoreDataMapper.xml new file mode 100644 index 000000000..6e99c3ca0 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/resources/mapper/emr/EmrQualityScoreDataMapper.xml @@ -0,0 +1,13 @@ + + + + + + + diff --git a/healthlink-his-ui/src/views/medicationmanagement/statisticalManagement/statisticalManagent.js b/healthlink-his-ui/src/views/medicationmanagement/statisticalManagement/statisticalManagent.js index 176dea1fd..3e16c713c 100755 --- a/healthlink-his-ui/src/views/medicationmanagement/statisticalManagement/statisticalManagent.js +++ b/healthlink-his-ui/src/views/medicationmanagement/statisticalManagement/statisticalManagent.js @@ -76,19 +76,21 @@ export function getDispensaryList() { // 停供 export function stopSupply(busNo) { + const ids = Array.isArray(busNo) ? busNo : [busNo]; return request({ url: '/inventory-manage/product/stop-supply', method: 'put', - data: busNo, + data: ids, }); } // 取消停供 export function cancelSupply(busNo) { + const ids = Array.isArray(busNo) ? busNo : [busNo]; return request({ url: '/inventory-manage/product/cancel-supply', method: 'put', - data: busNo, + data: ids, }); }