Fix Bug #487: 【临床医嘱】诊疗类医嘱签发后,列表状态未实时刷新为"已签发"
根因分析:诊疗类(活动)医嘱签发时,后端handService()的批量状态更新 未区分签发/保存场景,导致statusEnum字段在签发时可能未被正确更新为 ACTIVE(2);前端依赖后端刷新,缺乏乐观更新机制。 修复方案: - 前端:签发成功后立即将saveList中对应医嘱的statusEnum设为2(乐观更新), 再执行getListInfo从后端刷新 - 后端:handService()中分离签发/保存的批量更新逻辑,签发时显式设置 statusEnum=ACTIVE、authoredTime和signCode,并添加日志 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -710,11 +710,21 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
|
|||||||
|
|
||||||
// 批量更新诊疗医嘱状态(使用 update 确保状态字段必定更新)
|
// 批量更新诊疗医嘱状态(使用 update 确保状态字段必定更新)
|
||||||
if (!processedRequestIds.isEmpty()) {
|
if (!processedRequestIds.isEmpty()) {
|
||||||
iServiceRequestService.update(null,
|
// 🔧 Bug #487 修复:签发时额外设置 authoredTime,确保签发时间被记录
|
||||||
new LambdaUpdateWrapper<ServiceRequest>()
|
if (is_sign) {
|
||||||
.set(ServiceRequest::getStatusEnum,
|
iServiceRequestService.update(null,
|
||||||
is_save ? RequestStatus.DRAFT.getValue() : RequestStatus.ACTIVE.getValue())
|
new LambdaUpdateWrapper<ServiceRequest>()
|
||||||
.in(ServiceRequest::getId, processedRequestIds));
|
.set(ServiceRequest::getStatusEnum, RequestStatus.ACTIVE.getValue())
|
||||||
|
.set(ServiceRequest::getAuthoredTime, authoredTime)
|
||||||
|
.set(ServiceRequest::getSignCode, signCode)
|
||||||
|
.in(ServiceRequest::getId, processedRequestIds));
|
||||||
|
log.info("签发诊疗医嘱成功,requestIds: {}, signCode: {}", processedRequestIds, signCode);
|
||||||
|
} else {
|
||||||
|
iServiceRequestService.update(null,
|
||||||
|
new LambdaUpdateWrapper<ServiceRequest>()
|
||||||
|
.set(ServiceRequest::getStatusEnum, RequestStatus.DRAFT.getValue())
|
||||||
|
.in(ServiceRequest::getId, processedRequestIds));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1241,6 +1241,13 @@ function handleSave() {
|
|||||||
if (res.code === 200) {
|
if (res.code === 200) {
|
||||||
proxy.$modal.msgSuccess('签发成功');
|
proxy.$modal.msgSuccess('签发成功');
|
||||||
isSaving.value = false;
|
isSaving.value = false;
|
||||||
|
// 乐观更新:立即将已签发医嘱的状态设为"已签发",确保列表实时刷新
|
||||||
|
saveList.forEach((item) => {
|
||||||
|
const row = prescriptionList.value.find((r) => r.requestId && r.requestId === item.requestId);
|
||||||
|
if (row) {
|
||||||
|
row.statusEnum = 2;
|
||||||
|
}
|
||||||
|
});
|
||||||
getListInfo(false);
|
getListInfo(false);
|
||||||
bindMethod.value = {};
|
bindMethod.value = {};
|
||||||
nextId.value = 1;
|
nextId.value = 1;
|
||||||
|
|||||||
Reference in New Issue
Block a user