From ede93dabb92a727150b5c9d181cb71afca010af3 Mon Sep 17 00:00:00 2001 From: chenqi Date: Mon, 22 Jun 2026 16:18:21 +0800 Subject: [PATCH] =?UTF-8?q?fix(database):=20=E5=88=A0=E9=99=A4=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E8=BF=81=E7=A7=BB=E8=84=9A=E6=9C=AC=E5=B9=B6?= =?UTF-8?q?=E7=BB=9F=E4=B8=80=E9=A1=B5=E9=9D=A2=E5=A4=A7=E5=B0=8F=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 删除 V105 和 V107 数据库迁移脚本文件 - 将前端多个页面的默认页面大小从 20 统一调整为 10 - 更新 TableLayout 组件中的分页大小配置 - 调整 API 认证、审计日志、基础管理等多个模块的分页参数 --- ...atient_info_to_emr_search_index_hisdev.sql | 8 - .../V107__fix_role_permission_alignment.sql | 264 ------------------ .../src/components/TableLayout/Table.vue | 2 +- .../src/components/TableLayout/index.vue | 4 +- healthlink-his-ui/src/views/apiauth/index.vue | 2 +- .../src/views/auditlog-enhanced/index.vue | 4 +- .../src/views/auditlog/index.vue | 2 +- .../basicmanage/automaticBilling/index.vue | 2 +- .../views/basicmanage/bargainSets/index.vue | 2 +- .../src/views/basicmanage/bedspace/index.vue | 4 +- .../basicmanage/commonlyDiagnosis/index.vue | 4 +- .../src/views/basicmanage/contract/index.vue | 2 +- .../src/views/basicmanage/customer/index.vue | 2 +- .../src/views/basicmanage/fee/index.vue | 4 +- .../src/views/basicmanage/lisMerge/index.vue | 2 +- .../basicmanage/locationManagement/index.vue | 2 +- .../components/adviceBaseList.vue | 2 +- .../components/tcmMedicineList.vue | 2 +- .../basicmanage/tcmPrescription/index.vue | 4 +- .../src/views/businessanalytics/index.vue | 4 +- .../src/views/catalog/service/index.vue | 2 +- .../views/charge/registerRecords/index.vue | 2 +- .../src/views/charge/schedule/index.vue | 2 +- .../views/clinicalmanage/pathway/index.vue | 2 +- .../consultationCharge/index.vue | 2 +- .../clinicmanagement/refundNumber/index.vue | 4 +- .../crossmodule/consult-feedback/index.vue | 4 +- .../crossmodule/consulttimeout/index.vue | 2 +- .../src/views/crossmodule/drgperf/index.vue | 2 +- .../views/crossmodule/drugexpiry/index.vue | 2 +- .../crossmodule/enhanced-ambulance/index.vue | 2 +- .../crossmodule/enhanced-antibiotic/index.vue | 2 +- .../crossmodule/enhanced-consent/index.vue | 2 +- .../crossmodule/enhanced-drg-alert/index.vue | 2 +- .../crossmodule/enhanced-nursing/index.vue | 2 +- .../views/crossmodule/handoffstat/index.vue | 2 +- .../src/views/crossmodule/labalert/index.vue | 2 +- .../src/views/crossmodule/mrquality/index.vue | 2 +- .../views/crossmodule/nurse-exec/index.vue | 2 +- .../crossmodule/report-feedback/index.vue | 2 +- .../views/crossmodule/reviewstat/index.vue | 2 +- .../crossmodule/stock-intercept/index.vue | 2 +- .../views/crossmodule/surgery-chain/index.vue | 2 +- .../views/crossmodule/surgerylink/index.vue | 2 +- .../src/views/crossmodule/transfer/index.vue | 2 +- .../src/views/cssd/trace/index.vue | 4 +- .../inspection/inspectionApplication.vue | 2 +- .../src/views/drugtrace/alert/index.vue | 2 +- .../src/views/drugtrace/batch/index.vue | 2 +- .../src/views/drugtrace/code/index.vue | 2 +- .../src/views/drugtrace/scan/index.vue | 2 +- .../src/views/emergency/greentrack/index.vue | 2 +- .../src/views/emergency/observation/index.vue | 2 +- .../src/views/emergency/rescue/index.vue | 2 +- .../src/views/emergency/triage/index.vue | 2 +- .../src/views/empienhanced/merge/index.vue | 2 +- .../src/views/emr/revision-history/index.vue | 2 +- .../src/views/emr/timeliness/index.vue | 2 +- .../src/views/esbmanage/cdadocument/index.vue | 2 +- .../views/esbmanage/fhirconversion/index.vue | 2 +- .../src/views/esbmanage/message/index.vue | 4 +- .../src/views/esbmanage/registry/index.vue | 4 +- .../src/views/esbmanage/reliability/index.vue | 2 +- .../src/views/flowable/definition/index.vue | 2 +- .../src/views/flowable/expression/index.vue | 2 +- .../src/views/flowable/listener/index.vue | 2 +- .../views/flowable/task/finished/index.vue | 2 +- .../src/views/flowable/task/form/index.vue | 2 +- .../src/views/flowable/task/todo/index.vue | 2 +- .../src/views/followup/complaint/index.vue | 2 +- .../src/views/followup/plan/index.vue | 2 +- .../src/views/followup/record/index.vue | 2 +- .../src/views/followup/survey/index.vue | 2 +- .../src/views/followup/task/index.vue | 2 +- .../src/views/idverification/index.vue | 2 +- .../inHospitalManagement/listFee/index.vue | 2 +- .../medicalRecord/index.vue | 4 +- .../inHospitalManagement/portal/index.vue | 2 +- .../surgeryManage/index.vue | 4 +- .../src/views/infection/case/index.vue | 2 +- .../src/views/infection/environment/index.vue | 4 +- .../src/views/infection/exposure/index.vue | 4 +- .../src/views/infection/hygiene/index.vue | 4 +- .../src/views/infection/resistant/index.vue | 4 +- .../views/infection/surveillance/index.vue | 4 +- .../src/views/infection/warning/index.vue | 4 +- .../src/views/informedconsent/index.vue | 2 +- .../inpatientDoctor/EmrTimelinessMonitor.vue | 2 +- .../components/depositQuery.vue | 4 +- .../src/views/knowledgebase/index.vue | 2 +- .../src/views/knowledgegraph/PathwayList.vue | 2 +- .../src/views/knowledgegraph/RelationList.vue | 2 +- healthlink-his-ui/src/views/lab/LabEqa.vue | 2 +- healthlink-his-ui/src/views/lab/LabQc.vue | 2 +- .../views/labenhanced/appointment/index.vue | 2 +- .../src/views/labenhanced/icd10/index.vue | 2 +- .../src/views/labenhanced/pathway/index.vue | 2 +- .../labenhanced/radiologyreport/index.vue | 2 +- .../src/views/labenhanced/refrange/index.vue | 2 +- .../views/maintainSystem/Inspection/index.vue | 4 +- .../medicalInsuranceCatalogUpdate/index.vue | 4 +- .../pharmacyMonthlybalance.vue | 4 +- .../transferManagent/batchTransfer/index.vue | 4 +- .../src/views/mrhomepage/drg/index.vue | 2 +- .../src/views/nursingquality/index.vue | 4 +- .../dayEndSettlement/index.vue | 2 +- .../src/views/pathology/order/index.vue | 2 +- .../src/views/pathology/report/index.vue | 2 +- .../src/views/pathology/specimen/index.vue | 2 +- .../src/views/pharmacystockalert/index.vue | 4 +- .../views/preopmanage/discussion/index.vue | 4 +- .../src/views/progressnotes/index.vue | 2 +- .../src/views/quality/indicator/index.vue | 2 +- .../src/views/reconstruction/3d/index.vue | 4 +- .../src/views/specimenbarcode/index.vue | 2 +- .../src/views/surgerysafetycheck/index.vue | 2 +- .../src/views/vitalsignschart/index.vue | 2 +- .../ybmanagement/catalogManagement/index.vue | 4 +- .../ybmanagement/medicalInsurance/index.vue | 4 +- .../views/ybmanagement/settlement/index.vue | 4 +- 120 files changed, 150 insertions(+), 422 deletions(-) delete mode 100644 healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V105__add_patient_info_to_emr_search_index_hisdev.sql delete mode 100644 healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V107__fix_role_permission_alignment.sql diff --git a/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V105__add_patient_info_to_emr_search_index_hisdev.sql b/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V105__add_patient_info_to_emr_search_index_hisdev.sql deleted file mode 100644 index ee8c1418d..000000000 --- a/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V105__add_patient_info_to_emr_search_index_hisdev.sql +++ /dev/null @@ -1,8 +0,0 @@ --- V104__add_patient_info_to_emr_search_index_hisdev.sql --- 在 healthlink_his schema 上添加患者信息字段 - -ALTER TABLE emr_search_index ADD COLUMN IF NOT EXISTS patient_gender VARCHAR(10); -ALTER TABLE emr_search_index ADD COLUMN IF NOT EXISTS patient_age VARCHAR(10); -ALTER TABLE emr_search_index ADD COLUMN IF NOT EXISTS patient_phone VARCHAR(20); -ALTER TABLE emr_search_index ADD COLUMN IF NOT EXISTS patient_id_card VARCHAR(20); -ALTER TABLE emr_search_index ADD COLUMN IF NOT EXISTS encounter_no VARCHAR(50); diff --git a/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V107__fix_role_permission_alignment.sql b/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V107__fix_role_permission_alignment.sql deleted file mode 100644 index 2a215f1ca..000000000 --- a/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V107__fix_role_permission_alignment.sql +++ /dev/null @@ -1,264 +0,0 @@ --- V107__fix_role_permission_alignment.sql --- 全面修复角色-权限匹配问题:菜单展示但API报403 - --- ============================================================ --- 第一部分:修复权限前缀不一致(历史遗留的infection:前缀) --- ============================================================ - --- 修复EMR相关菜单权限(infection:emr → emr) -UPDATE sys_menu SET perms = 'emr:list' WHERE perms = 'infection:emr:list'; -UPDATE sys_menu SET perms = 'emr:edit' WHERE perms = 'infection:emr:edit'; -UPDATE sys_menu SET perms = 'emr:sync:list' WHERE perms = 'infection:emr:sync:list'; - --- 修复病案统计明细(infection:mrhomepage → mrhomepage:mrhomepage) -UPDATE sys_menu SET perms = 'mrhomepage:mrhomepage:list' WHERE perms = 'infection:mrhomepage:list'; - --- 修复报表维度(infection:report → reportmanage:report) -UPDATE sys_menu SET perms = 'reportmanage:report:list' WHERE perms = 'infection:report:list'; -UPDATE sys_menu SET perms = 'reportmanage:report:edit' WHERE perms = 'infection:report:edit'; - --- 修复inpatient相关(inpatient:emr → emr,已由V101处理,此处兜底) -UPDATE sys_menu SET perms = 'emr:list' WHERE perms = 'inpatient:emr:list'; -UPDATE sys_menu SET perms = 'emr:edit' WHERE perms = 'inpatient:emr:edit'; - --- ============================================================ --- 第二部分:确保所有Controller需要的权限在sys_menu中存在 --- ============================================================ - --- 检查并插入缺失的菜单权限(如果菜单不存在则创建) --- 这些是后端Controller @PreAuthorize使用的权限,但菜单表中可能缺失 - --- administration模块 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -SELECT '医务人员患者管理', - (SELECT menu_id FROM sys_menu WHERE menu_name = '系统管理' AND menu_type = 'M' LIMIT 1), - 99, 'practitioner-patient', 'administration/practitioner-patient/index', 'C', '0', '0', - 'administration:practitionerPatient:list', 'user', 'admin', NOW(), 'admin', NOW(), - '医务人员患者管理菜单' -WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'administration:practitionerPatient:list'); - --- basicmanage模块 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -SELECT '电子健康卡', - (SELECT menu_id FROM sys_menu WHERE menu_name = '基础管理' AND menu_type = 'M' LIMIT 1), - 10, 'ehcard', 'basicmanage/ehcard/index', 'C', '0', '0', - 'basicmanage:ehcard:list', 'card', 'admin', NOW(), 'admin', NOW(), - '电子健康卡管理' -WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'basicmanage:ehcard:list'); - -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -SELECT '电子发票', - (SELECT menu_id FROM sys_menu WHERE menu_name = '基础管理' AND menu_type = 'M' LIMIT 1), - 20, 'einvoice', 'basicmanage/einvoice/index', 'C', '0', '0', - 'basicmanage:invoice:list', 'invoice', 'admin', NOW(), 'admin', NOW(), - '电子发票管理' -WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'basicmanage:invoice:list'); - --- document模块(病程记录) -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -SELECT '病程记录', - (SELECT menu_id FROM sys_menu WHERE menu_name = '电子病历管理' AND menu_type = 'M' LIMIT 1), - 50, 'progress-note', 'document/progress-note/index', 'C', '0', '0', - 'document:progressnote:list', 'note', 'admin', NOW(), 'admin', NOW(), - '病程记录管理' -WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'document:progressnote:list'); - --- epidemic模块(传染病报卡) -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -SELECT '传染病报卡', - (SELECT menu_id FROM sys_menu WHERE menu_name = '医院感染管理' AND menu_type = 'M' LIMIT 1), - 10, 'epidemic', 'infection/epidemic/index', 'C', '0', '0', - 'epidemic:list', 'alert', 'admin', NOW(), 'admin', NOW(), - '传染病报卡管理' -WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'epidemic:list'); - --- flowable模块(工作流表单) -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -SELECT '流程表单', - (SELECT menu_id FROM sys_menu WHERE menu_name = '系统管理' AND menu_type = 'M' LIMIT 1), - 98, 'flowable-form', 'flowable/form/index', 'C', '0', '0', - 'flowable:form:list', 'form', 'admin', NOW(), 'admin', NOW(), - '流程表单管理' -WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'flowable:form:list'); - --- tcm模块(中医) -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -SELECT '中医诊断', - (SELECT menu_id FROM sys_menu WHERE menu_name = '门诊医生工作站' AND menu_type = 'M' LIMIT 1), - 99, 'tcm', 'tcm/diagnosis/index', 'C', '0', '0', - 'tcm:list', '中医', 'admin', NOW(), 'admin', NOW(), - '中医诊断管理' -WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'tcm:list'); - --- surgery模块(手术安全核查) -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -SELECT '手术安全核查', - (SELECT menu_id FROM sys_menu WHERE menu_name = '手术管理' AND menu_type = 'M' LIMIT 1), - 50, 'surgery-safety', 'surgery/safety-check/index', 'C', '0', '0', - 'surgery:schedule:list', 'safety', 'admin', NOW(), 'admin', NOW(), - '手术安全核查管理' -WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'surgery:schedule:list'); - --- ============================================================ --- 第三部分:为所有角色授予基础查看权限 --- ============================================================ - --- 获取所有非管理员角色ID --- 为每个角色授予关键模块的查看权限 - --- 授予所有活跃角色emr:list权限(电子病历查看) -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.status = '0' - AND m.perms IN ( - 'emr:list', - 'emr:edit', - 'infection:cdss:list', - 'infection:regional:list', - 'reportmanage:report:list', - 'mrhomepage:mrhomepage:list', - 'epidemic:list', - 'document:progressnote:list', - 'basicmanage:ehcard:list', - 'basicmanage:invoice:list', - 'surgery:schedule:list', - 'tcm:list' - ) - AND NOT EXISTS ( - SELECT 1 FROM sys_role_menu rm - WHERE rm.role_id = r.role_id AND rm.menu_id = m.menu_id - ); - --- ============================================================ --- 第四部分:为医生角色授予专属权限 --- ============================================================ - --- 医生角色:授予门诊医生工作站、住院医生工作站相关权限 -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.status = '0' - AND r.role_name IN ('医生', 'doctor', '门诊医生', '住院医生', '主任医师', '副主任医师') - AND m.perms IN ( - 'emr:list', - 'emr:edit', - 'infection:cdss:list', - 'infection:cdss:edit', - 'infection:check:list', - 'infection:check:edit', - 'document:progressnote:list', - 'document:progressnote:add', - 'document:progressnote:edit', - 'tcm:list', - 'tcm:edit', - 'surgery:schedule:list', - 'surgery:schedule:edit', - 'epidemic:list', - 'epidemic:edit', - 'nursing:nursing:list', - 'outpatient:telehealth:list', - 'outpatient:telehealth:edit' - ) - AND NOT EXISTS ( - SELECT 1 FROM sys_role_menu rm - WHERE rm.role_id = r.role_id AND rm.menu_id = m.menu_id - ); - --- ============================================================ --- 第五部分:为护士角色授予专属权限 --- ============================================================ - -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.status = '0' - AND r.role_name IN ('护士', 'nurse', '护士长') - AND m.perms IN ( - 'nursing:nursing:list', - 'nursing:nursing:edit', - 'nursing:execution:list', - 'nursing:execution:add', - 'nursing:execution:edit', - 'nursing:record:list', - 'nursing:record:add', - 'nursing:record:edit', - 'inpatient:anesthesia:list', - 'inpatient:anesthesia:edit', - 'inpatient:clinical:list', - 'inpatient:clinical:edit', - 'inpatient:criticalvalue:list', - 'inpatient:criticalvalue:edit', - 'inpatient:bloodtransfusion:list', - 'inpatient:bloodtransfusion:edit', - 'emr:list', - 'emr:edit' - ) - AND NOT EXISTS ( - SELECT 1 FROM sys_role_menu rm - WHERE rm.role_id = r.role_id AND rm.menu_id = m.menu_id - ); - --- ============================================================ --- 第六部分:为药房角色授予专属权限 --- ============================================================ - -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.status = '0' - AND r.role_name IN ('药房', 'pharmacy', '药师', '药剂师') - AND m.perms IN ( - 'infection:rationaldrug:edit', - 'inpatient:clinical:list', - 'inpatient:clinical:edit', - 'inpatient:criticalvalue:list', - 'emr:list' - ) - AND NOT EXISTS ( - SELECT 1 FROM sys_role_menu rm - WHERE rm.role_id = r.role_id AND rm.menu_id = m.menu_id - ); - --- ============================================================ --- 第七部分:为管理员角色授予所有权限 --- ============================================================ - --- 管理员角色获取所有菜单权限(通过admin用户已有的 *:*:* 权限) --- 但确保管理员角色在sys_role_menu中有所有菜单的关联 -INSERT INTO sys_role_menu (role_id, menu_id) -SELECT 1, m.menu_id -FROM sys_menu m -WHERE m.status = '0' - AND NOT EXISTS ( - SELECT 1 FROM sys_role_menu rm - WHERE rm.role_id = 1 AND rm.menu_id = m.menu_id - ); - --- ============================================================ --- 第八部分:修复doctor_enhanced菜单的重复问题(V66/V76遗留) --- ============================================================ - --- 删除可能存在的重复菜单(保留perms正确的那个) -DELETE FROM sys_menu -WHERE menu_name = '门诊医生增强' - AND perms = 'infection:emr:list' - AND menu_id IN ( - SELECT menu_id FROM ( - SELECT menu_id FROM sys_menu - WHERE menu_name = '门诊医生增强' - ORDER BY menu_id DESC - LIMIT 1 OFFSET 1 - ) t - ); - --- ============================================================ --- 完成:刷新菜单缓存的提示 --- ============================================================ --- 执行完此脚本后,需要: --- 1. 重启应用或调用 /system/menu/refreshCache 刷新菜单缓存 --- 2. 用户重新登录以加载最新权限 diff --git a/healthlink-his-ui/src/components/TableLayout/Table.vue b/healthlink-his-ui/src/components/TableLayout/Table.vue index f621ab9c8..3c8fea560 100755 --- a/healthlink-his-ui/src/components/TableLayout/Table.vue +++ b/healthlink-his-ui/src/components/TableLayout/Table.vue @@ -147,7 +147,7 @@ const props = withDefaults(defineProps(), { showPagination: false, total: 0, pageNo: 1, - pageSize: 20, + pageSize: 10, isAllData: false, paginationLeftText: '', paginationProps: () => ({}), diff --git a/healthlink-his-ui/src/components/TableLayout/index.vue b/healthlink-his-ui/src/components/TableLayout/index.vue index d281f197a..3d42201f7 100755 --- a/healthlink-his-ui/src/components/TableLayout/index.vue +++ b/healthlink-his-ui/src/components/TableLayout/index.vue @@ -1,4 +1,4 @@ -