门诊完诊审计日志错误:div_log 表中 pool_id 与 slot_id 存值与设计规范不符
400
门诊医生站点击【完诊】后,triage_queue_item 表 status 字段未按规范更新为 30
393
疾病报告管理-报告卡管理:状态为“审核失败”的报卡操作列缺失“审核”按钮
369
【住院管理】进入护理记录模块报错
361
三测单(体温单)住院第一日显示 1970-01-01,未正确获取入院日期
This commit is contained in:
Ranyunqiao
2026-04-21 11:38:05 +08:00
parent 994ffcb8b8
commit 88d9e19cc5
14 changed files with 245 additions and 76 deletions

View File

@@ -329,11 +329,53 @@ function getSignsCharts() {
getVitalSignsInfo(params).then((response) => {
console.log('体温单返回值', response);
if (response.code === 200) {
// data1.grParamBOS.hospDate = data1.grParamBOS.inDate.substring(0, 10)
data1.grParamBOS.hospDate =
response.data.hospDate && response.data.hospDate.length > 10
? response.data.hospDate.substring(0, 10)
: response.data.hospDate;
// 计算最终住院起始日期,多级 fallback
let finalHospDate = null;
// 1. 优先用后端返回的入院日期
if (response.data.hospDate) {
if (typeof response.data.hospDate === 'string' && response.data.hospDate.length > 0) {
let dateStr = String(response.data.hospDate).replace(/\//g, '-');
// 解析年月日补零,得到 YYYY-MM-DD
const parts = dateStr.split(/[ -]/);
if (parts.length >= 3) {
const year = parts[0].padStart(4, '0');
const month = parts[1].padStart(2, '0');
const day = parts[2].padStart(2, '0');
finalHospDate = `${year}-${month}-${day}`;
} else {
finalHospDate = dateStr.substring(0, 10);
}
} else if (response.data.hospDate instanceof Date) {
finalHospDate = new Date(response.data.hospDate).toISOString().substring(0, 10);
}
}
// 2. 如果后端为空,使用从患者列表获取的入院日期
if ((!finalHospDate || finalHospDate === 'null') && data1.grParamBOS.inDate) {
if (typeof data1.grParamBOS.inDate === 'string' && data1.grParamBOS.inDate.length > 0) {
let dateStr = String(data1.grParamBOS.inDate).replace(/\//g, '-');
// 解析年月日补零,得到 YYYY-MM-DD
const parts = dateStr.split(/[ -]/);
if (parts.length >= 3) {
const year = parts[0].padStart(4, '0');
const month = parts[1].padStart(2, '0');
const day = parts[2].padStart(2, '0');
finalHospDate = `${year}-${month}-${day}`;
} else {
finalHospDate = dateStr.substring(0, 10);
}
}
}
// 3. 如果都为空,使用今天日期作为默认值(绝对不会出现 Invalid Date
if (!finalHospDate || finalHospDate === 'null' || finalHospDate === 'undefined' || finalHospDate === '') {
finalHospDate = getCurrentDate();
console.warn('入院日期为空,使用今天日期作为默认值:', finalHospDate);
}
console.log('最终住院起始日期:', finalHospDate);
data1.grParamBOS.hospDate = finalHospDate;
data1.grParamBOS.operaDate = response.data.operaDate;
data1.grParamBOS.outdate = response.data.outdate;
data1.rows = response.data.temperaturePulses.map((item) => ({
@@ -381,9 +423,18 @@ function setTemperatureComp(data) {
if (data !== undefined) {
inputData.value = data;
}
const inDate = inputData.value.grParamBOS.hospDate;
const outdate = inputData.value.grParamBOS.outdate;
const begin = moment(new Date(inDate))
let inDate = inputData.value.grParamBOS.hospDate;
let outdate = inputData.value.grParamBOS.outdate;
// 统一格式化日期:将 / 替换为 -,确保 moment 能正确解析
if (inDate) {
inDate = String(inDate).replace(/\//g, '-').substring(0, 10);
inputData.value.grParamBOS.hospDate = inDate;
}
if (outdate) {
outdate = String(outdate).replace(/\//g, '-').substring(0, 10);
inputData.value.grParamBOS.outdate = outdate;
}
const begin = moment(inDate)
.add(week.value * 7, 'day')
.format('YYYY-MM-DD HH:mm:ss');
inputData.value.grParamBOS.weekNo = week.value;
@@ -442,16 +493,38 @@ function sliceData(data) {
}
// 计算时间差
function dateDiff(start, end) {
let diffTime = start ? moment(new Date()).diff(moment(start.substring(0, 10))) / 1000 : start;
if (end) {
diffTime = moment(end.substring(0, 10)).diff(moment(start.substring(0, 10))) / 1000;
console.log('dateDiff start:', start, 'end:', end);
// 如果开始日期无效,返回 0
if (!start || start === 'null' || start === 'undefined') {
console.log('start is null, return 0');
return 0;
}
// 统一格式化日期:将 / 替换为 -截取前10位
let startStr = String(start).replace(/\//g, '-').substring(0, 10);
const startMoment = moment(startStr);
if (!startMoment.isValid()) {
console.log('start is invalid, return 0');
return 0;
}
let diffTime;
if (end && end !== 'null' && end !== 'undefined') {
let endStr = String(end).replace(/\//g, '-').substring(0, 10);
const endMoment = moment(endStr);
if (!endMoment.isValid()) {
diffTime = moment(new Date()).diff(startMoment) / 1000;
} else {
diffTime = endMoment.diff(startMoment) / 1000;
}
} else {
diffTime = moment(new Date()).diff(startMoment) / 1000;
}
console.log('diffTime:', diffTime);
if (diffTime > 24 * 3600) {
return Math.floor(diffTime / (24 * 3600));
} else if (diffTime > 3600) {
return '0';
return 0;
} else {
return '0';
return 0;
}
}
// 打印体温单 - 使用 hiprint

View File

@@ -67,7 +67,7 @@
</div>
</template>
</div>
<el-drawer v-model="isOpenDraw" :direction="direction" size="100%" :with-header="false">
<el-drawer v-model="isOpenDraw" :direction="direction" size="100%" :with-header="false" :destroy-on-close="false">
<template #default>
<AddAttr ref="attrRef" @onSearcTem="onSearch"></AddAttr>
</template>
@@ -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() {