Compare commits
5 Commits
085d51549e
...
6c89b0ae03
| Author | SHA1 | Date | |
|---|---|---|---|
| 6c89b0ae03 | |||
| 3a3f0c65e3 | |||
| c2ed6e04b0 | |||
| ab9b183b9a | |||
| 8fafa12337 |
@@ -1193,6 +1193,30 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
|
||||
.set(DeviceRequest::getStatusEnum, RequestStatus.PENDING_STOP.getValue())
|
||||
.set(DeviceRequest::getUpdateBy, stopUserName));
|
||||
}
|
||||
|
||||
// 🔧 Bug #782 修复:兜底处理未被以上任何类型过滤器捕获的医嘱
|
||||
// 当批量停嘱包含非标准 adviceType(如 type=31、type=7 等)时,这些医嘱
|
||||
// 不会被药品/诊疗/耗材任一组捕获,导致状态未更新为 PENDING_STOP,造成状态不一致
|
||||
// 将所有未匹配类型的医嘱统一按诊疗请求(ServiceRequest)处理
|
||||
Set<Long> handledIds = new HashSet<>();
|
||||
handledIds.addAll(medicineRequestIds);
|
||||
handledIds.addAll(activityRequestIds);
|
||||
handledIds.addAll(deviceRequestIds);
|
||||
List<Long> fallbackRequestIds = paramList.stream()
|
||||
.map(AdviceBatchOpParam::getRequestId)
|
||||
.filter(Objects::nonNull)
|
||||
.filter(id -> !handledIds.contains(id))
|
||||
.collect(Collectors.toList());
|
||||
if (!fallbackRequestIds.isEmpty()) {
|
||||
log.info("Bug #782 兜底停嘱:处理未匹配类型的医嘱,requestIds: {}, 共{}条",
|
||||
fallbackRequestIds, fallbackRequestIds.size());
|
||||
iServiceRequestService.update(new LambdaUpdateWrapper<ServiceRequest>()
|
||||
.in(ServiceRequest::getId, fallbackRequestIds)
|
||||
.set(ServiceRequest::getOccurrenceEndTime, stopTime)
|
||||
.set(ServiceRequest::getStatusEnum, RequestStatus.PENDING_STOP.getValue())
|
||||
.set(ServiceRequest::getUpdateBy, stopUserName));
|
||||
}
|
||||
|
||||
return R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00004, new Object[]{"医嘱停止"}));
|
||||
|
||||
}
|
||||
|
||||
@@ -81,6 +81,7 @@
|
||||
class="inspection-table"
|
||||
:row-config="{ keyField: 'applicationId', keyField: 'itemId' }"
|
||||
@checkbox-change="handleSelectionChange"
|
||||
@current-change="handleRowClick"
|
||||
@cell-click="handleCellClick"
|
||||
>
|
||||
<vxe-column
|
||||
@@ -2141,32 +2142,15 @@ const handleSave = () => {
|
||||
let hasErrors = false
|
||||
|
||||
// 修复【#406】:保存前尝试从 props 同步患者信息,避免因加载时序导致信息缺失
|
||||
if (props.patientInfo && props.patientInfo.encounterId) {
|
||||
// encounterId 来自 adm_encounter 表,lab_apply 表无此字段,需始终从 props 同步
|
||||
if (!formData.encounterId) {
|
||||
formData.encounterId = props.patientInfo.encounterId || ''
|
||||
}
|
||||
if (!formData.patientName?.trim()) {
|
||||
formData.patientName = props.patientInfo.patientName || ''
|
||||
}
|
||||
if (!formData.medicalrecordNumber?.trim()) {
|
||||
formData.medicalrecordNumber = props.patientInfo.identifierNo || ''
|
||||
}
|
||||
if (!formData.visitNo) {
|
||||
formData.visitNo = props.patientInfo.busNo || ''
|
||||
}
|
||||
if (!formData.patientId) {
|
||||
formData.patientId = props.patientInfo.patientId || ''
|
||||
}
|
||||
if (!formData.applyDepartment) {
|
||||
formData.applyDepartment = props.patientInfo.organizationName || ''
|
||||
}
|
||||
if (!formData.applyDeptCode) {
|
||||
formData.applyDeptCode = props.patientInfo.organizationName || ''
|
||||
}
|
||||
if (!formData.applyOrganizationId) {
|
||||
formData.applyOrganizationId = props.patientInfo.orgId || ''
|
||||
}
|
||||
if ((!formData.patientName?.trim() || !formData.medicalrecordNumber?.trim()) && props.patientInfo && props.patientInfo.encounterId) {
|
||||
formData.patientName = props.patientInfo.patientName || ''
|
||||
formData.medicalrecordNumber = props.patientInfo.identifierNo || ''
|
||||
formData.encounterId = props.patientInfo.encounterId || ''
|
||||
formData.visitNo = props.patientInfo.busNo || ''
|
||||
formData.patientId = props.patientInfo.patientId || ''
|
||||
formData.applyDepartment = props.patientInfo.organizationName || ''
|
||||
formData.applyDeptCode = props.patientInfo.organizationName || ''
|
||||
formData.applyOrganizationId = props.patientInfo.orgId || ''
|
||||
}
|
||||
|
||||
// P0:检查患者信息是否已加载
|
||||
@@ -2473,13 +2457,10 @@ const handleDelete = (row) => {
|
||||
}
|
||||
|
||||
// 单元格点击 - 点击表格行时加载申请单详情
|
||||
const handleCellClick = (params) => {
|
||||
// vxe-table cell-click 事件参数是 { row, column, $event, ... } 对象,需安全提取行数据
|
||||
const row = params.row || params;
|
||||
const column = params.column || params;
|
||||
const handleCellClick = (row, column) => {
|
||||
// 如果点击的是操作列或展开列,不触发数据填充
|
||||
if (column.type === 'expand' || column.type === 'selection' ||
|
||||
column.title === '操作' || column.property === '操作') {
|
||||
if (column.property === '操作' || column.label === '操作' ||
|
||||
column.type === 'expand' || column.type === 'selection') {
|
||||
return;
|
||||
}
|
||||
// 点击表格行时,将该申请单的数据加载到表单中
|
||||
@@ -2489,6 +2470,15 @@ const handleCellClick = (params) => {
|
||||
}
|
||||
}
|
||||
|
||||
// 行点击事件处理
|
||||
const handleRowClick = (currentRow, oldRow) => {
|
||||
// 点击表格行时,将该申请单的数据加载到表单中
|
||||
// 使用 applyNo 判断是否有效,同时检查是否处于删除状态
|
||||
if (currentRow && currentRow.applyNo && !isDeleting.value) {
|
||||
loadApplicationToForm(currentRow);
|
||||
}
|
||||
}
|
||||
|
||||
// 提取公共方法加载申请单到表单
|
||||
const loadApplicationToForm = async (row) => {
|
||||
// 停止申请日期实时更新(加载已保存的申请单)
|
||||
|
||||
@@ -196,6 +196,7 @@
|
||||
v-model="open"
|
||||
:title="title"
|
||||
width="1200px"
|
||||
class="surgery-dialog"
|
||||
:close-on-click-modal="false"
|
||||
@close="cancel"
|
||||
>
|
||||
@@ -1757,13 +1758,13 @@ defineExpose({
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
padding: 10px;
|
||||
|
||||
|
||||
/* 顶部操作栏样式 */
|
||||
.top-operation-bar {
|
||||
height: 60px;
|
||||
align-items: center;
|
||||
margin-bottom: 16px;
|
||||
|
||||
|
||||
.add-button {
|
||||
background-color: #5b8fb9;
|
||||
color: white;
|
||||
@@ -1774,7 +1775,7 @@ defineExpose({
|
||||
box-shadow: 0 4px 8px rgba(91, 143, 185, 0.3);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.refresh-button {
|
||||
background-color: transparent;
|
||||
border: 1px solid #dcdfe6;
|
||||
@@ -1786,14 +1787,14 @@ defineExpose({
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* 表格样式 */
|
||||
.vxe-table {
|
||||
:deep(.cancelled-row) {
|
||||
background-color: #f5f5f5;
|
||||
color: #999;
|
||||
text-decoration: line-through;
|
||||
|
||||
|
||||
:deep(.cell) {
|
||||
opacity: 0.6;
|
||||
}
|
||||
@@ -1801,47 +1802,48 @@ defineExpose({
|
||||
}
|
||||
}
|
||||
|
||||
/* 对话框样式 */
|
||||
.el-dialog {
|
||||
/* Bug #770: Dialog flex 布局 — 防止 footer 按钮遮盖表单字段 */
|
||||
:deep(.surgery-dialog) {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
max-height: 85vh;
|
||||
margin-top: 7.5vh;
|
||||
}
|
||||
|
||||
:deep(.surgery-dialog .el-dialog__header) {
|
||||
flex-shrink: 0;
|
||||
padding: 16px 20px;
|
||||
border-bottom: 1px solid #ebeef5;
|
||||
}
|
||||
|
||||
:deep(.surgery-dialog .el-dialog__body) {
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
overflow-y: auto;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
:deep(.surgery-dialog .el-dialog__footer) {
|
||||
flex-shrink: 0;
|
||||
padding: 12px 20px;
|
||||
border-top: 1px solid #ebeef5;
|
||||
}
|
||||
|
||||
/* 对话框圆角 */
|
||||
:deep(.surgery-dialog .el-dialog) {
|
||||
border-radius: 12px;
|
||||
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
|
||||
}
|
||||
|
||||
.dialog-footer {
|
||||
text-align: center;
|
||||
padding: 20px 0;
|
||||
}
|
||||
|
||||
/* Bug #770: Dialog flex 布局 — 防止 footer 按钮遮盖表单字段 */
|
||||
:deep(.el-dialog) {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
:deep(.el-dialog__header) {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
:deep(.el-dialog__body) {
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
:deep(.el-dialog__footer) {
|
||||
flex-shrink: 0;
|
||||
border-top: 1px solid #ebeef5;
|
||||
}
|
||||
|
||||
/* 响应式:小屏幕下对话框宽度自适应 */
|
||||
@media (max-width: 1200px) {
|
||||
:deep(.el-dialog) {
|
||||
:deep(.surgery-dialog) {
|
||||
width: 95vw !important;
|
||||
margin: 2.5vh auto;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
max-height: 85vh;
|
||||
overflow-y: auto;
|
||||
padding: 20px;
|
||||
padding: 12px 20px 12px;
|
||||
</style>
|
||||
Reference in New Issue
Block a user