From 88d9e19cc5df2579543292438949d99c285e8d2c Mon Sep 17 00:00:00 2001 From: Ranyunqiao <2499115710@qq.com> Date: Tue, 21 Apr 2026 11:38:05 +0800 Subject: [PATCH] =?UTF-8?q?401=20=E9=97=A8=E8=AF=8A=E5=AE=8C=E8=AF=8A?= =?UTF-8?q?=E5=AE=A1=E8=AE=A1=E6=97=A5=E5=BF=97=E9=94=99=E8=AF=AF=EF=BC=9A?= =?UTF-8?q?div=5Flog=20=E8=A1=A8=E4=B8=AD=20pool=5Fid=20=E4=B8=8E=20slot?= =?UTF-8?q?=5Fid=20=E5=AD=98=E5=80=BC=E4=B8=8E=E8=AE=BE=E8=AE=A1=E8=A7=84?= =?UTF-8?q?=E8=8C=83=E4=B8=8D=E7=AC=A6=20400=20=E9=97=A8=E8=AF=8A=E5=8C=BB?= =?UTF-8?q?=E7=94=9F=E7=AB=99=E7=82=B9=E5=87=BB=E3=80=90=E5=AE=8C=E8=AF=8A?= =?UTF-8?q?=E3=80=91=E5=90=8E=EF=BC=8Ctriage=5Fqueue=5Fitem=20=E8=A1=A8=20?= =?UTF-8?q?status=20=E5=AD=97=E6=AE=B5=E6=9C=AA=E6=8C=89=E8=A7=84=E8=8C=83?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=B8=BA=2030=20393=20=E7=96=BE=E7=97=85?= =?UTF-8?q?=E6=8A=A5=E5=91=8A=E7=AE=A1=E7=90=86-=E6=8A=A5=E5=91=8A?= =?UTF-8?q?=E5=8D=A1=E7=AE=A1=E7=90=86=EF=BC=9A=E7=8A=B6=E6=80=81=E4=B8=BA?= =?UTF-8?q?=E2=80=9C=E5=AE=A1=E6=A0=B8=E5=A4=B1=E8=B4=A5=E2=80=9D=E7=9A=84?= =?UTF-8?q?=E6=8A=A5=E5=8D=A1=E6=93=8D=E4=BD=9C=E5=88=97=E7=BC=BA=E5=A4=B1?= =?UTF-8?q?=E2=80=9C=E5=AE=A1=E6=A0=B8=E2=80=9D=E6=8C=89=E9=92=AE=20369=20?= =?UTF-8?q?=E3=80=90=E4=BD=8F=E9=99=A2=E7=AE=A1=E7=90=86=E3=80=91=E8=BF=9B?= =?UTF-8?q?=E5=85=A5=E6=8A=A4=E7=90=86=E8=AE=B0=E5=BD=95=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E6=8A=A5=E9=94=99=20361=20=E4=B8=89=E6=B5=8B=E5=8D=95=EF=BC=88?= =?UTF-8?q?=E4=BD=93=E6=B8=A9=E5=8D=95=EF=BC=89=E4=BD=8F=E9=99=A2=E7=AC=AC?= =?UTF-8?q?=E4=B8=80=E6=97=A5=E6=98=BE=E7=A4=BA=201970-01-01=EF=BC=8C?= =?UTF-8?q?=E6=9C=AA=E6=AD=A3=E7=A1=AE=E8=8E=B7=E5=8F=96=E5=85=A5=E9=99=A2?= =?UTF-8?q?=E6=97=A5=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/CurrentDayEncounterDto.java | 12 +++ .../impl/DoctorStationMainAppServiceImpl.java | 25 +++-- .../impl/VitalSignsAppServiceImpl.java | 16 ++- .../impl/PaymentRecServiceImpl.java | 38 ++++++- .../impl/TriageQueueAppServiceImpl.java | 28 +++--- .../dto/CallNumberDisplayResp.java | 2 +- .../dto/TriageQueueEncounterItem.java | 4 + .../OutpatientRegistrationAppMapper.xml | 10 +- .../domain/TriageQueueItem.java | 10 +- .../nurseStation/temperatureSheet/config.js | 35 ++++--- .../ReportManagement/index.vue | 14 +-- .../views/inpatientNurse/tprChart/index.vue | 99 ++++++++++++++++--- .../tprsheet/components/details.vue | 15 +-- .../triageandqueuemanage/cardiology/index.vue | 13 ++- 14 files changed, 245 insertions(+), 76 deletions(-) diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/chargemanage/dto/CurrentDayEncounterDto.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/chargemanage/dto/CurrentDayEncounterDto.java index 62236dd8..3ceab8b6 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/chargemanage/dto/CurrentDayEncounterDto.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/chargemanage/dto/CurrentDayEncounterDto.java @@ -153,4 +153,16 @@ public class CurrentDayEncounterDto { */ private Boolean isFromAppointment; + /** + * 号源槽位ID(关联 adm_schedule_slot.id) + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long slotId; + + /** + * 号源池ID(关联 adm_schedule_pool.id) + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long poolId; + } diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationMainAppServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationMainAppServiceImpl.java index 353d75a3..23efeb7b 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationMainAppServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationMainAppServiceImpl.java @@ -188,7 +188,7 @@ public class DoctorStationMainAppServiceImpl implements IDoctorStationMainAppSer encounterParticipant.setCreateTime(new Date()); iEncounterParticipantService.save(encounterParticipant); - // 更新 triage_queue_item 队列记录状态为 CALLING + // 更新 triage_queue_item 队列记录状态为 IN_CLINIC(诊中) try { TriageQueueItem queueItem = triageQueueItemService.getOne( new LambdaQueryWrapper() @@ -197,10 +197,10 @@ public class DoctorStationMainAppServiceImpl implements IDoctorStationMainAppSer .eq(TriageQueueItem::getDeleteFlag, "0") ); if (queueItem != null) { - queueItem.setStatus("CALLING"); + queueItem.setStatus(20); // 20=IN_CLINIC(诊中),患者进入诊室接诊 queueItem.setUpdateTime(LocalDateTime.now().truncatedTo(ChronoUnit.SECONDS)); triageQueueItemService.updateById(queueItem); - log.info("接诊时更新队列状态为CALLING,encounterId={}, queueItemId={}", encounterId, queueItem.getId()); + log.info("接诊时更新队列状态为IN_CLINIC(诊中),encounterId={}, queueItemId={}", encounterId, queueItem.getId()); } else { log.warn("接诊时未找到队列记录,encounterId={}", encounterId); } @@ -263,10 +263,13 @@ public class DoctorStationMainAppServiceImpl implements IDoctorStationMainAppSer ); // 如果队列项存在,检查状态并更新 - if (queueItem != null && "CALLING".equals(queueItem.getStatus())) { + // 允许从 CALLING(10) 或 IN_CLINIC(20) 完成就诊 + if (queueItem != null && + (Integer.valueOf(10).equals(queueItem.getStatus()) || + Integer.valueOf(20).equals(queueItem.getStatus()))) { // 更新队列状态为已完成 java.time.LocalDateTime nowLocal = java.time.LocalDateTime.now().truncatedTo(ChronoUnit.SECONDS); - queueItem.setStatus("COMPLETED"); + queueItem.setStatus(30); // 30=COMPLETED(已完成) queueItem.setUpdateTime(nowLocal); triageQueueItemService.updateById(queueItem); @@ -275,13 +278,15 @@ public class DoctorStationMainAppServiceImpl implements IDoctorStationMainAppSer Long userId = SecurityUtils.getLoginUser().getUserId(); String divLogSql = "INSERT INTO hisdev.div_log " + "(pool_id, slot_id, queue_no, op_user_id, action, create_time) " - + "VALUES (?, ?, ?, ?, 'COMPLETE', NOW()::timestamp(0))"; + + "VALUES (?, ?, ?, ?, 30, NOW()::timestamp(0))"; + // action=30 表示 COMPLETED(已完成),与 triage_queue_item.status 数字编码保持一致 + // 0=WAITING, 10=CALLING, 20=IN_CLINIC, 30=COMPLETED, 40=SKIPPED, 50=REFUNDED, 60=FOLLOW jdbcTemplate.update(divLogSql, - queueItem.getOrganizationId(), // pool_id: 候选池ID(科室) - queueItem.getPractitionerId(), // slot_id: 槽位ID(医生) - queueItem.getQueueOrder(), // queue_no: 队列号 - userId); // op_user_id: 操作用户ID + queueItem.getPoolId(), // pool_id: 号源池ID(来自 adm_schedule_pool.id) + queueItem.getSlotId(), // slot_id: 号源槽位ID(来自 adm_schedule_slot.id) + queueItem.getQueueOrder(), // queue_no: 队列序号 + userId); // op_user_id: 操作用户ID } catch (Exception e) { log.error("写入div_log审计日志失败", e); // 审计日志失败不影响主流程 diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/inpatientmanage/appservice/impl/VitalSignsAppServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/inpatientmanage/appservice/impl/VitalSignsAppServiceImpl.java index 5c1711b7..bd7b83b4 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/inpatientmanage/appservice/impl/VitalSignsAppServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/inpatientmanage/appservice/impl/VitalSignsAppServiceImpl.java @@ -73,9 +73,21 @@ public class VitalSignsAppServiceImpl implements IVitalSignsAppService { VitalSignsMedicalRecordDto medicalRecord = new VitalSignsMedicalRecordDto(); - // 处理日期 + // 处理出院日期 if (!vitalSignsInfoPage.getRecords().isEmpty()) { - medicalRecord.setHospDate(vitalSignsInfoPage.getRecords().get(0).getRecordingDate()); + // 从第一条记录获取出院日期(如果存在) + Date dischargeDate = vitalSignsInfoPage.getRecords().get(0).getDischargeDate(); + if (dischargeDate != null) { + medicalRecord.setOutdate(TimeUtils.dateToDateString(dischargeDate)); + } + } + + // 处理住院日期:优先使用第一条记录中的入院日期,如果没有则保持 null 让前端 fallback + if (!vitalSignsInfoPage.getRecords().isEmpty()) { + Date admissionDate = vitalSignsInfoPage.getRecords().get(0).getAdmissionDate(); + if (admissionDate != null) { + medicalRecord.setHospDate(admissionDate); + } } // 处理生命体征数据 diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/paymentmanage/appservice/impl/PaymentRecServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/paymentmanage/appservice/impl/PaymentRecServiceImpl.java index 71de68d9..8c6ebe39 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/paymentmanage/appservice/impl/PaymentRecServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/paymentmanage/appservice/impl/PaymentRecServiceImpl.java @@ -57,6 +57,10 @@ import com.openhis.web.paymentmanage.mapper.PaymentMapper; import com.openhis.web.personalization.dto.ActivityDeviceDto; import com.openhis.triageandqueuemanage.domain.TriageQueueItem; import com.openhis.triageandqueuemanage.service.TriageQueueItemService; +import com.openhis.appointmentmanage.domain.ScheduleSlot; +import com.openhis.appointmentmanage.mapper.ScheduleSlotMapper; +import com.openhis.clinical.domain.Order; +import com.openhis.clinical.service.IOrderService; import com.openhis.workflow.domain.ServiceRequest; import com.openhis.workflow.service.IDeviceDispenseService; import com.openhis.workflow.service.IDeviceRequestService; @@ -70,6 +74,7 @@ import com.openhis.yb.service.IClinicSettleService; import com.openhis.yb.service.IInpatientSettleService; import com.openhis.yb.service.IRegService; import com.openhis.yb.service.YbManager; +import com.openhis.web.triageandqueuemanage.appservice.impl.TriageQueueAppServiceImpl; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.poi.util.StringUtil; @@ -186,6 +191,10 @@ public class PaymentRecServiceImpl implements IPaymentRecService { private YbManager ybManager; @Autowired private RedisCache redisCache; + @Autowired + private IOrderService iOrderService; + @Autowired + private ScheduleSlotMapper scheduleSlotMapper; /** * 【门诊预结算】 @@ -1985,6 +1994,31 @@ public class PaymentRecServiceImpl implements IPaymentRecService { } // 创建队列项 + // 尝试获取预约订单的 slot_id 和 pool_id + Long queuePoolId = null; + Long queueSlotId = null; + try { + // 查询患者当天的待签到预约订单(status = 1 或 2 表示已预约或已取号) + Order order = iOrderService.getOne( + new LambdaQueryWrapper() + .eq(Order::getPatientId, encounter.getPatientId()) + .in(Order::getStatus, 1, 2) // 1=BOOKED 已预约, 2=CHECKED_IN 已取号 + .eq(Order::getDeleteFlag, "0") + .orderByDesc(Order::getCreateTime) + .last("LIMIT 1") + ); + if (order != null && order.getSlotId() != null) { + queueSlotId = order.getSlotId(); + // 通过 slot_id 获取 pool_id + ScheduleSlot slot = scheduleSlotMapper.selectById(queueSlotId); + if (slot != null) { + queuePoolId = slot.getPoolId(); + } + logger.info("挂号时找到预约订单,slotId={}, poolId={}, encounterId={}", queueSlotId, queuePoolId, encounterId); + } + } catch (Exception e) { + logger.warn("查询预约订单失败,不影响挂号流程,encounterId={}", encounterId, e); + } TriageQueueItem queueItem = new TriageQueueItem() .setTenantId(tenantId) .setQueueDate(queueDate) @@ -1997,7 +2031,9 @@ public class PaymentRecServiceImpl implements IPaymentRecService { .setPractitionerId(queuePractitionerId) .setPractitionerName(practitionerName) .setRoomNo(null) - .setStatus("WAITING") + .setPoolId(queuePoolId) + .setSlotId(queueSlotId) + .setStatus(TriageQueueAppServiceImpl.STATUS_WAITING) // 0=WAITING(等待中) .setQueueOrder(maxOrder + 1) .setDeleteFlag("0") .setCreateTime(LocalDateTime.now().truncatedTo(ChronoUnit.SECONDS)) diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/triageandqueuemanage/appservice/impl/TriageQueueAppServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/triageandqueuemanage/appservice/impl/TriageQueueAppServiceImpl.java index 448d9702..30cbfed6 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/triageandqueuemanage/appservice/impl/TriageQueueAppServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/triageandqueuemanage/appservice/impl/TriageQueueAppServiceImpl.java @@ -5,16 +5,12 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.core.common.core.domain.R; import com.core.common.utils.SecurityUtils; -import com.openhis.triageandqueuemanage.domain.TriageQueueItem; import com.openhis.triageandqueuemanage.domain.TriageCandidateExclusion; -import com.openhis.triageandqueuemanage.service.TriageQueueItemService; +import com.openhis.triageandqueuemanage.domain.TriageQueueItem; import com.openhis.triageandqueuemanage.service.TriageCandidateExclusionService; +import com.openhis.triageandqueuemanage.service.TriageQueueItemService; import com.openhis.web.triageandqueuemanage.appservice.TriageQueueAppService; -import com.openhis.web.triageandqueuemanage.dto.CallNumberDisplayResp; -import com.openhis.web.triageandqueuemanage.dto.TriageQueueActionReq; -import com.openhis.web.triageandqueuemanage.dto.TriageQueueAddReq; -import com.openhis.web.triageandqueuemanage.dto.TriageQueueAdjustReq; -import com.openhis.web.triageandqueuemanage.dto.TriageQueueEncounterItem; +import com.openhis.web.triageandqueuemanage.dto.*; import com.openhis.web.triageandqueuemanage.sse.CallNumberSseManager; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -28,10 +24,18 @@ import java.util.stream.Collectors; @Service public class TriageQueueAppServiceImpl implements TriageQueueAppService { - private static final String STATUS_WAITING = "WAITING"; - private static final String STATUS_CALLING = "CALLING"; - private static final String STATUS_SKIPPED = "SKIPPED"; - private static final String STATUS_COMPLETED = "COMPLETED"; + /** + * 分诊队列状态常量(数字编码) + * 0=WAITING(等待中), 10=CALLING(呼叫中), 20=IN_CLINIC(诊中), + * 30=COMPLETED(已完成), 40=SKIPPED(已跳过), 50=REFUNDED(已退费), 60=FOLLOW(已随访) + */ + public static final Integer STATUS_WAITING = 0; + public static final Integer STATUS_CALLING = 10; + public static final Integer STATUS_IN_CLINIC = 20; + public static final Integer STATUS_COMPLETED = 30; + public static final Integer STATUS_SKIPPED = 40; + public static final Integer STATUS_REFUNDED = 50; + public static final Integer STATUS_FOLLOW = 60; @Resource private TriageQueueItemService triageQueueItemService; @@ -127,6 +131,8 @@ public class TriageQueueAppServiceImpl implements TriageQueueAppService { .setPractitionerName(it.getPractitionerName()) .setPractitionerId(it.getPractitionerId()) // ✅ 新增字段(可选) .setRoomNo(it.getRoomNo()) // ✅ 新增字段(可选) + .setPoolId(it.getPoolId()) // ✅ 号源池ID(用于div_log审计) + .setSlotId(it.getSlotId()) // ✅ 号源槽位ID(用于div_log审计) .setStatus(STATUS_WAITING) .setQueueOrder(++maxOrder) .setDeleteFlag("0") diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/triageandqueuemanage/dto/CallNumberDisplayResp.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/triageandqueuemanage/dto/CallNumberDisplayResp.java index 2fc0efef..e7f07279 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/triageandqueuemanage/dto/CallNumberDisplayResp.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/triageandqueuemanage/dto/CallNumberDisplayResp.java @@ -59,7 +59,7 @@ public class CallNumberDisplayResp { /** 患者姓名(脱敏) */ private String name; /** 状态:CALLING=就诊中,WAITING=等待 */ - private String status; + private Integer status; /** 排队号 */ private Integer queueOrder; } diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/triageandqueuemanage/dto/TriageQueueEncounterItem.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/triageandqueuemanage/dto/TriageQueueEncounterItem.java index baf0222e..2902662d 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/triageandqueuemanage/dto/TriageQueueEncounterItem.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/triageandqueuemanage/dto/TriageQueueEncounterItem.java @@ -15,6 +15,10 @@ public class TriageQueueEncounterItem { private Long practitionerId; /** 诊室号(可选) */ private String roomNo; + /** 号源池ID(关联 adm_schedule_pool.id,用于 div_log 审计日志) */ + private Long poolId; + /** 号源槽位ID(关联 adm_schedule_slot.id,用于 div_log 审计日志) */ + private Long slotId; } diff --git a/openhis-server-new/openhis-application/src/main/resources/mapper/chargemanage/OutpatientRegistrationAppMapper.xml b/openhis-server-new/openhis-application/src/main/resources/mapper/chargemanage/OutpatientRegistrationAppMapper.xml index 311345e3..2612a744 100644 --- a/openhis-server-new/openhis-application/src/main/resources/mapper/chargemanage/OutpatientRegistrationAppMapper.xml +++ b/openhis-server-new/openhis-application/src/main/resources/mapper/chargemanage/OutpatientRegistrationAppMapper.xml @@ -68,7 +68,9 @@ T9.picture_url AS pictureUrl, T9.birth_date AS birthDate, COALESCE(T9.identifier_no, T9.patient_bus_no, '') AS identifierNo, - COALESCE(T9.order_id IS NOT NULL, false) AS isFromAppointment + COALESCE(T9.order_id IS NOT NULL, false) AS isFromAppointment, + T9.slot_id AS slotId, + T9.pool_id AS poolId from ( SELECT T1.tenant_id AS tenant_id, T1.id AS encounter_id, @@ -95,8 +97,12 @@ T8.birth_date AS birth_date, T8.bus_no AS patient_bus_no, T18.identifier_no AS identifier_no, - T1.order_id AS order_id + T1.order_id AS order_id, + om.slot_id AS slot_id, + ss.pool_id AS pool_id FROM adm_encounter AS T1 + LEFT JOIN order_main AS om ON T1.order_id = om.id AND om.delete_flag = '0' + LEFT JOIN adm_schedule_slot AS ss ON om.slot_id = ss.id AND ss.delete_flag = '0' LEFT JOIN adm_organization AS T2 ON T1.organization_id = T2.ID AND T2.delete_flag = '0' LEFT JOIN adm_healthcare_service AS T3 ON T1.service_type_id = T3.ID AND T3.delete_flag = '0' LEFT JOIN ( diff --git a/openhis-server-new/openhis-domain/src/main/java/com/openhis/triageandqueuemanage/domain/TriageQueueItem.java b/openhis-server-new/openhis-domain/src/main/java/com/openhis/triageandqueuemanage/domain/TriageQueueItem.java index 575707b0..c5d27414 100644 --- a/openhis-server-new/openhis-domain/src/main/java/com/openhis/triageandqueuemanage/domain/TriageQueueItem.java +++ b/openhis-server-new/openhis-domain/src/main/java/com/openhis/triageandqueuemanage/domain/TriageQueueItem.java @@ -31,9 +31,15 @@ public class TriageQueueItem { private String practitionerName; // 医生姓名 private Long practitionerId; // 医生ID(新增字段) private String roomNo; // 诊室号(新增字段) + private Long poolId; // 号源池ID (关联 adm_schedule_pool.id) + private Long slotId; // 号源槽位ID (关联 adm_schedule_slot.id) - /** WAITING / CALLING / SKIPPED / COMPLETED */ - private String status; + /** + * 分诊队列状态 + * 0=WAITING(等待中), 10=CALLING(呼叫中), 20=IN_CLINIC(诊中), + * 30=COMPLETED(已完成), 40=SKIPPED(已跳过), 50=REFUNDED(已退费), 60=FOLLOW(已随访) + */ + private Integer status; private Integer queueOrder; //“排队序号”,也就是患者在当前科室、当天队列里的 顺序号(从 1 开始递增)。 private LocalDateTime createTime; diff --git a/openhis-ui-vue3/src/action/nurseStation/temperatureSheet/config.js b/openhis-ui-vue3/src/action/nurseStation/temperatureSheet/config.js index 4582e754..ddd6eb12 100644 --- a/openhis-ui-vue3/src/action/nurseStation/temperatureSheet/config.js +++ b/openhis-ui-vue3/src/action/nurseStation/temperatureSheet/config.js @@ -18,34 +18,33 @@ export const TOP_KEYS = [ const timeNew = new Date((tieml / 1000 + 86400) * 1000); const todayDate = dayjs(timeNew).format('YYYY-MM-DD'); const endDate = dayjs(outdate).format('YYYY-MM-DD'); - const startDate = dayjs(hospDate).format('YYYY-MM-DD'); - let eachTime = dayjs(beginDate).add(i, 'day').format('YYYY-MM-DD'); + let eachDate = dayjs(beginDate).add(i, 'day'); + const eachTime = eachDate.format('YYYY-MM-DD'); if (eachTime === endDate || eachTime === todayDate) { dateClosed.stopTime = true; } - if ((startDate === eachTime && i === 0) || dayjs(eachTime).format('MM-DD') === '01-01') { - eachTime = dayjs(eachTime).format('YYYY年MM月DD日'); - } else if (i === 0 || dayjs(eachTime).format('DD') === '01') { - eachTime = dayjs(eachTime).format('MM月DD日'); - } else { - eachTime = dayjs(eachTime).format('DD日'); - } - return dateClosed.stopTime ? eachTime : ''; + // 统一补零格式:月份和日期都始终两位补零 + const month = eachDate.format('MM'); // 月份始终两位补零 + const date = eachDate.format('DD'); // 日期始终两位补零 + // 每月1号显示 MM月DD日,其他日期只显示 DD日 + return `${month}月${date}日`; }, }, { name: '住院日数', getValue: (i, renderData) => { const { beginDate, hospDays, outdate = '', dateClosed } = renderData.infoData; - const tieml = new Date(); - const timeNew = new Date((tieml / 1000 + 86400) * 1000); - const todayDate = dayjs(timeNew).format('YYYY-MM-DD'); - const endDate = dayjs(outdate).add(1, 'day').format('YYYY-MM-DD'); - const eachTime = dayjs(beginDate).add(i, 'day').format('YYYY-MM-DD'); - if (eachTime === endDate || todayDate === eachTime) { - dateClosed.stopNumber = false; + const beginDayjs = dayjs(beginDate); + let num = ''; + // 只要 beginDate 有效,每一天都计算显示住院日数 + if (beginDayjs.isValid()) { + if (hospDays !== undefined && hospDays !== null) { + num = hospDays + i + 1; + } else { + // hospDays 不存在时,从入院开始直接计算 + num = i + 1; + } } - const num = dateClosed.stopNumber ? hospDays + i + 1 : ''; let hosNum = ''; if (num !== '') { hosNum = '第' + '\xa0\xa0\xa0' + num + '\xa0\xa0\xa0' + '日'; diff --git a/openhis-ui-vue3/src/views/diseaseReportManagement/ReportManagement/index.vue b/openhis-ui-vue3/src/views/diseaseReportManagement/ReportManagement/index.vue index 1e40fca7..b472fb76 100644 --- a/openhis-ui-vue3/src/views/diseaseReportManagement/ReportManagement/index.vue +++ b/openhis-ui-vue3/src/views/diseaseReportManagement/ReportManagement/index.vue @@ -215,7 +215,7 @@ - + @@ -576,16 +576,19 @@ function setTemperatureComp(data) { init(sliceData(inputData.value)); } function dateDiff(start, end) { - let diffTime = start ? moment(new Date()).diff(moment(start.substring(0, 10))) / 1000 : start; + if (!start) { + return 0; + } + const startStr = start.substring(0, 10); + let diffTime = start ? moment(new Date()).diff(moment(startStr)) / 1000 : 0; if (end) { - diffTime = moment(end.substring(0, 10)).diff(moment(start.substring(0, 10))) / 1000; + const endStr = end.substring(0, 10); + diffTime = moment(endStr).diff(moment(startStr)) / 1000; } if (diffTime > 24 * 3600) { return Math.floor(diffTime / (24 * 3600)); - } else if (diffTime > 3600) { - return '0'; } else { - return '0'; + return 0; } } function getCurrentDate() { diff --git a/openhis-ui-vue3/src/views/triageandqueuemanage/cardiology/index.vue b/openhis-ui-vue3/src/views/triageandqueuemanage/cardiology/index.vue index 1dc1bc3e..2da23115 100644 --- a/openhis-ui-vue3/src/views/triageandqueuemanage/cardiology/index.vue +++ b/openhis-ui-vue3/src/views/triageandqueuemanage/cardiology/index.vue @@ -817,7 +817,10 @@ const loadDataFromApi = async () => { doctor: item.practitionerName ?? '-', // 当前接口返回的是 practitionerUserId,保存为 practitionerId 供入队使用 practitionerId: item.practitionerUserId ?? null, - matchingRule: '-' // 这里先不做智能规则匹配 + matchingRule: '-', // 这里先不做智能规则匹配 + // 号源池和槽位信息(用于分诊队列) + poolId: item.poolId ?? null, + slotId: item.slotId ?? null })) console.log('【心内科】候选池已加载', originalCandidatePoolList.value.length, '条今天的数据') } else { @@ -1035,7 +1038,9 @@ const handleAddToQueue = async () => { healthcareName: c.appointmentType, practitionerName: c.doctor, practitionerId: c.practitionerId ?? null, - roomNo: c.roomNo ?? c.room ?? null + roomNo: c.roomNo ?? c.room ?? null, + poolId: c.poolId ?? null, + slotId: c.slotId ?? null }) }) @@ -1150,7 +1155,9 @@ const handleAddAllToQueue = async () => { healthcareName: c.appointmentType, practitionerName: c.doctor, practitionerId: c.practitionerId ?? null, - roomNo: c.roomNo ?? c.room ?? null + roomNo: c.roomNo ?? c.room ?? null, + poolId: c.poolId ?? null, + slotId: c.slotId ?? null }) })