From 5b029270cf70190941b660e07a3707e84f2e73fd Mon Sep 17 00:00:00 2001 From: Ranyunqiao <2499115710@qq.com> Date: Sat, 9 May 2026 09:36:24 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9C=80=E6=B1=82111?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/NursingRecordAppServiceImpl.java | 14 +- .../inpatientmanage/dto/NursingPageDto.java | 3 +- .../dto/NursingSearchParam.java | 3 + .../NursingRecordAppMapper.xml | 63 +- .../components/addNursingRecordDialog.vue | 801 +++++++++------- .../components/nursingCodeReference.vue | 73 ++ .../inpatientNurse/nursingRecord/index.vue | 865 ++++++++++++++---- 7 files changed, 1301 insertions(+), 521 deletions(-) create mode 100644 openhis-ui-vue3/src/views/inpatientNurse/nursingRecord/components/nursingCodeReference.vue diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/inpatientmanage/appservice/impl/NursingRecordAppServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/inpatientmanage/appservice/impl/NursingRecordAppServiceImpl.java index e4e6b804..347f36b1 100755 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/inpatientmanage/appservice/impl/NursingRecordAppServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/inpatientmanage/appservice/impl/NursingRecordAppServiceImpl.java @@ -75,11 +75,19 @@ public class NursingRecordAppServiceImpl implements INursingRecordAppService { public R getPatientInfoPage(NursingSearchParam nursingSearchParam, String searchKey, Integer pageNo, Integer pageSize, HttpServletRequest request) { - // 构建查询条件 - QueryWrapper queryWrapper = HisQueryUtils.buildQueryWrapper(nursingSearchParam, searchKey, - new HashSet<>(Arrays.asList(CommonConstants.FieldName.PatientName, CommonConstants.FieldName.PatientBusNo)), + // 构建查询条件(租户ID) + QueryWrapper queryWrapper = HisQueryUtils.buildQueryWrapper(nursingSearchParam, null, null, request); + // 搜索条件:姓名、病历号、床位号(全部放入一个 and() 块,避免 AND 重复) + if (searchKey != null && !searchKey.isEmpty()) { + queryWrapper.and(wrapper -> { + wrapper.or().like("T5.patient_name", searchKey); + wrapper.or().like("T5.patient_bus_no", searchKey); + wrapper.or().like("T5.bed_location_name", searchKey); + }); + } + // 分页查询,查询患者信息 IPage NursingInfoPage = nursingRecordAppMapper.getPatientPage(new Page<>(pageNo, pageSize), EncounterClass.IMP.getValue(), LocationForm.BED.getValue(), LocationForm.WARD.getValue(), diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/inpatientmanage/dto/NursingPageDto.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/inpatientmanage/dto/NursingPageDto.java index ceb35413..48d87bf9 100755 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/inpatientmanage/dto/NursingPageDto.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/inpatientmanage/dto/NursingPageDto.java @@ -62,7 +62,8 @@ public class NursingPageDto { @JsonSerialize(using = ToStringSerializer.class) @Dict(dictTable = "adm_location", dictCode = "id", dictText = "name") private Long bedLocationId; - private String bedLocationId_dictText; + /** 床位号名称(用于搜索) */ + private String bedLocationName; /** 病区 */ @JsonSerialize(using = ToStringSerializer.class) diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/inpatientmanage/dto/NursingSearchParam.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/inpatientmanage/dto/NursingSearchParam.java index 9235f0e1..5c1dbcb1 100755 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/inpatientmanage/dto/NursingSearchParam.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/inpatientmanage/dto/NursingSearchParam.java @@ -17,6 +17,9 @@ public class NursingSearchParam { /** 床位号 */ private Long bedLocationId; + /** 床位名称(用于模糊搜索) */ + private String bedLocationName; + /** 科室ID */ private Long orgId; diff --git a/openhis-server-new/openhis-application/src/main/resources/mapper/inpatientmanage/NursingRecordAppMapper.xml b/openhis-server-new/openhis-application/src/main/resources/mapper/inpatientmanage/NursingRecordAppMapper.xml index b0bfcd12..c36a03f6 100755 --- a/openhis-server-new/openhis-application/src/main/resources/mapper/inpatientmanage/NursingRecordAppMapper.xml +++ b/openhis-server-new/openhis-application/src/main/resources/mapper/inpatientmanage/NursingRecordAppMapper.xml @@ -15,7 +15,8 @@ T5.admissionDate, T5.wardAdmissionDate, T5.ward_location_id, - T5.bed_location_id + T5.bed_location_id, + T5.bed_location_name FROM (SELECT T1.tenant_id, T1.id AS patient_id, --患者ID T1.name AS patient_name, --患者姓名 @@ -27,7 +28,8 @@ T2.start_time AS admissionDate, --入院日期 T3.ward_admission_date AS wardAdmissionDate, --入科日期 T3.location_id AS ward_location_id, --病区 - T4.location_id AS bed_location_id --床号 + T4.location_id AS bed_location_id, --床号 + T4L.name AS bed_location_name --床位号名称(用于搜索) FROM adm_patient AS T1 INNER JOIN adm_encounter AS T2 ON T2.patient_id = T1.id @@ -55,13 +57,32 @@ ) ranked WHERE rn = 1) AS T3 ON T3.encounter_id = T2.ID - LEFT JOIN adm_encounter_location AS T4 + LEFT JOIN (SELECT encounter_id, + location_id, + form_enum, + delete_flag + FROM (SELECT encounter_id, + location_id, + form_enum, + delete_flag, + ROW_NUMBER() OVER (PARTITION BY encounter_id + ORDER BY + CASE + WHEN update_time IS NULL THEN create_time + ELSE update_time + END DESC) AS rn + FROM adm_encounter_location + WHERE form_enum = #{bed} + AND status_enum = #{active} + AND delete_flag = '0' + ) ranked + WHERE rn = 1) AS T4 ON T4.encounter_id = T2.ID - AND T4.form_enum = #{bed} - AND T4.status_enum = #{active} - AND T4.delete_flag = '0' - WHERE T1.delete_flag = '0' - ORDER BY T4.location_id ASC) AS T5 + LEFT JOIN adm_location AS T4L + ON T4L.id = T4.location_id + AND T4L.delete_flag = '0' + WHERE T1.delete_flag = '0' + ORDER BY T4.location_id ASC) AS T5 ${ew.customSqlSegment} @@ -121,11 +142,27 @@ ) ranked WHERE rn = 1) AS T3 ON T3.encounter_id = T2.ID - LEFT JOIN adm_encounter_location AS T4 + LEFT JOIN (SELECT encounter_id, + location_id, + form_enum, + delete_flag + FROM (SELECT encounter_id, + location_id, + form_enum, + delete_flag, + ROW_NUMBER() OVER (PARTITION BY encounter_id + ORDER BY + CASE + WHEN update_time IS NULL THEN create_time + ELSE update_time + END DESC) AS rn + FROM adm_encounter_location + WHERE form_enum = #{bed} + AND status_enum = #{active} + AND delete_flag = '0' + ) ranked + WHERE rn = 1) AS T4 ON T4.encounter_id = T2.ID - AND T4.form_enum = #{bed} - AND T4.status_enum = #{active} - AND T4.delete_flag = '0' LEFT JOIN doc_emr AS T5 ON T5.patient_id = T1.id AND T5.encounter_id = T2.ID @@ -166,4 +203,4 @@ ${ew.customSqlSegment} - \ No newline at end of file + diff --git a/openhis-ui-vue3/src/views/inpatientNurse/nursingRecord/components/addNursingRecordDialog.vue b/openhis-ui-vue3/src/views/inpatientNurse/nursingRecord/components/addNursingRecordDialog.vue index ce0b5620..b618db21 100755 --- a/openhis-ui-vue3/src/views/inpatientNurse/nursingRecord/components/addNursingRecordDialog.vue +++ b/openhis-ui-vue3/src/views/inpatientNurse/nursingRecord/components/addNursingRecordDialog.vue @@ -1,183 +1,295 @@ \ No newline at end of file + diff --git a/openhis-ui-vue3/src/views/inpatientNurse/nursingRecord/components/nursingCodeReference.vue b/openhis-ui-vue3/src/views/inpatientNurse/nursingRecord/components/nursingCodeReference.vue new file mode 100644 index 00000000..7b600fcd --- /dev/null +++ b/openhis-ui-vue3/src/views/inpatientNurse/nursingRecord/components/nursingCodeReference.vue @@ -0,0 +1,73 @@ + + + + + diff --git a/openhis-ui-vue3/src/views/inpatientNurse/nursingRecord/index.vue b/openhis-ui-vue3/src/views/inpatientNurse/nursingRecord/index.vue index 0e9f86bd..4f8e0b58 100755 --- a/openhis-ui-vue3/src/views/inpatientNurse/nursingRecord/index.vue +++ b/openhis-ui-vue3/src/views/inpatientNurse/nursingRecord/index.vue @@ -1,107 +1,189 @@ \ No newline at end of file + +.card-divider { + height: 1px; + border-top: 1px dashed #e4e7ed; + margin: 8px 0; +} + +.card-bottom { + .patient-info-row { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 4px; + } + + .patient-name { + font-size: 14px; + font-weight: 600; + color: #303133; + } + + .gender-age-tag { + font-size: 11px; + padding: 2px 8px; + border: 1px solid #409eff; + border-radius: 10px; + color: #409eff; + } + + .patient-no { + font-size: 12px; + color: #909399; + } +} + +.empty-tip { + text-align: center; + padding: 20px; + color: #909399; + font-size: 14px; +} + +.record-panel { + flex: 1; + background: white; + border-radius: 8px; + padding: 16px; + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1); + display: flex; + flex-direction: column; +} + +.patient-info-bar { + display: flex; + flex-wrap: wrap; + gap: 16px 24px; + padding: 12px 16px; + background: linear-gradient(135deg, #ecf5ff 0%, #f0f9ff 100%); + border-radius: 6px; + margin-bottom: 12px; + border: 1px solid #d9ecff; +} + +.info-item { + display: flex; + align-items: center; + .label { + color: #606266; + font-size: 13px; + } + .value { + color: #303133; + font-weight: 500; + font-size: 13px; + } +} + +.operation-bar { + display: flex; + gap: 10px; + margin-bottom: 12px; +} + +.batch-operation-bar { + display: flex; + align-items: center; + gap: 16px; + padding: 10px 16px; + background: #fef0f0; + border-radius: 4px; + margin-top: 12px; + color: #f56c6c; +} + +:deep(.el-table) { + border-radius: 6px; + overflow: hidden; +} + +:deep(.el-table th) { + background-color: #f5f7fa !important; + color: #606266; + font-weight: 600; +} + +:deep(.el-pagination) { + margin-top: 12px; +} +