体检小结内容拓展页

This commit is contained in:
Euni4U 2025-03-25 15:10:46 +08:00
parent cacda9c0df
commit 68e72a07a8

View File

@ -1145,6 +1145,28 @@
<!-- 添加页码 --> <!-- 添加页码 -->
<div class="page-number">第7页</div> <div class="page-number">第7页</div>
</div> </div>
<!-- 尿常规续页 -->
<div class="report-item" id="urine-page-2" style="width: 800px;height: 1123px;margin:0 auto;position: relative; display: none;">
<div class="report-title">
<div style="display: flex; justify-content: space-between; align-items: center;">
<span></span>
<span>填充值</span>
</div>
</div>
<div class="summary-section">
<h2 class="summary-title">尿常规检查报告</h2>
<div class="paragraph-group">
<p id="urine-content-2" class="summary-content">
<!-- 第二页尿常规小结内容 -->
</p>
</div>
</div>
<div class="report-footer">
<p class="report-footer-text">定期体检,尊享健康</p>
</div>
<!-- 添加页码 -->
<div class="page-number">第8页</div>
</div>
<!-- 生化检查报告 --> <!-- 生化检查报告 -->
<div class="report-item"> <div class="report-item">
@ -1182,6 +1204,29 @@
<div class="page-number">第8页</div> <div class="page-number">第8页</div>
</div> </div>
<!-- 生化检查报告续页 -->
<div class="report-item" id="biochemistry-page-2" style="width: 800px;height: 1123px;margin:0 auto;position: relative; display: none;">
<div class="report-title">
<div style="display: flex; justify-content: space-between; align-items: center;">
<span></span>
<span>填充值</span>
</div>
</div>
<div class="summary-section">
<h2 class="summary-title">生化检查报告</h2>
<div class="paragraph-group">
<p id="biochemistry-content-2" class="summary-content">
<!-- 第二页生化小结内容 -->
</p>
</div>
</div>
<div class="report-footer">
<p class="report-footer-text">定期体检,尊享健康</p>
</div>
<!-- 添加页码 -->
<div class="page-number">第9页</div>
</div>
<!-- 血常规检查报告 --> <!-- 血常规检查报告 -->
<div class="report-item"> <div class="report-item">
<div class="report-title"> <div class="report-title">
@ -1218,6 +1263,29 @@
<div class="page-number">第9页</div> <div class="page-number">第9页</div>
</div> </div>
<!-- 血常规检查报告续页 -->
<div class="report-item" id="blood-page-2" style="width: 800px;height: 1123px;margin:0 auto;position: relative; display: none;">
<div class="report-title">
<div style="display: flex; justify-content: space-between; align-items: center;">
<span></span>
<span>填充值</span>
</div>
</div>
<div class="summary-section">
<h2 class="summary-title">血常规检查报告</h2>
<div class="paragraph-group">
<p id="blood-content-2" class="summary-content">
<!-- 第二页血常规小结内容 -->
</p>
</div>
</div>
<div class="report-footer">
<p class="report-footer-text">定期体检,尊享健康</p>
</div>
<!-- 添加页码 -->
<div class="page-number">第10页</div>
</div>
<!-- 心电图检查报告 --> <!-- 心电图检查报告 -->
<div class="report-item"> <div class="report-item">
<div class="report-title"> <div class="report-title">
@ -1549,14 +1617,289 @@
}); });
} }
// 处理尿常规内容分页
function handleUrinePagination(urineText) {
if (!urineText || urineText === '--') {
// 如果没有尿常规内容,隐藏第二页
document.getElementById('urine-page-2').style.display = 'none';
document.getElementById('urine-summary-content').textContent = '--';
// 更新页码
updatePageNumbers();
return;
}
// 创建临时元素测量内容高度
const testElement = document.createElement('div');
testElement.className = 'summary-content';
testElement.style.position = 'absolute';
testElement.style.visibility = 'hidden';
testElement.style.width = document.getElementById('urine-summary-content').offsetWidth + 'px';
testElement.style.whiteSpace = 'pre-line';
testElement.textContent = urineText;
document.body.appendChild(testElement);
// 获取尿常规内容区域的可用高度
const availableHeight = 250; // 大约可用高度,根据实际情况调整
if (testElement.offsetHeight <= availableHeight) {
// 内容不超过一页,隐藏第二页
document.getElementById('urine-summary-content').textContent = urineText;
document.getElementById('urine-page-2').style.display = 'none';
// 更新页码
updatePageNumbers();
} else {
// 内容超过一页,需要分割
// 计算每个字符占用的平均高度
const avgCharHeight = testElement.offsetHeight / urineText.length;
// 计算第一页可容纳的字符数
const firstPageChars = Math.floor(availableHeight / avgCharHeight);
// 分割文本
let firstPageText = urineText.substring(0, firstPageChars);
let secondPageText = urineText.substring(firstPageChars);
// 尝试在更合适的位置分割,如句号或逗号
const breakPoints = ['。', '', '', '\n'];
for (let i = 30; i > 0; i--) {
const checkPos = firstPageChars - i;
if (checkPos <= 0) continue;
const char = urineText.charAt(checkPos);
if (breakPoints.includes(char)) {
firstPageText = urineText.substring(0, checkPos + 1);
secondPageText = urineText.substring(checkPos + 1);
break;
}
}
// 更新内容并显示第二页
document.getElementById('urine-summary-content').textContent = firstPageText;
document.getElementById('urine-content-2').textContent = secondPageText;
document.getElementById('urine-page-2').style.display = 'block';
// 更新页码
updatePageNumbers();
}
// 移除测试元素
document.body.removeChild(testElement);
}
// 修改updatePageNumbers函数以考虑尿常规续页
function updatePageNumbers() {
// 获取所有页码元素
const pageNumbers = document.querySelectorAll('.page-number');
const summaryPage2Visible = document.getElementById('summary-page-2').style.display !== 'none';
// 计算实际总页数
let totalPages = document.querySelectorAll('.report-item').length;
if (!summaryPage2Visible) {
totalPages--; // 如果汇总第二页不显示,减少总页数
}
// 从第1页开始计数
let pageIndex = 1;
pageNumbers.forEach((element) => {
// 更新页码文本
element.textContent = `第${pageIndex}页 共${totalPages}页`;
pageIndex++;
// 如果第二页汇总不显示,并且这是第四页的页码元素(即原本应该是汇总第二页),则跳过该元素
if (!summaryPage2Visible && element.closest('#summary-page-2')) {
// 不增加pageIndex因为这一页不会显示
pageIndex--;
}
});
}
// 处理生化检查报告内容分页
function handleBiochemistryPagination(biochemistryText) {
if (!biochemistryText || biochemistryText === '--') {
// 如果没有生化内容,隐藏第二页
document.getElementById('biochemistry-page-2').style.display = 'none';
document.getElementById('biochemistry-summary-content').textContent = '--';
// 更新页码
updatePageNumbers();
return;
}
// 创建临时元素测量内容高度
const testElement = document.createElement('div');
testElement.className = 'summary-content';
testElement.style.position = 'absolute';
testElement.style.visibility = 'hidden';
testElement.style.width = document.getElementById('biochemistry-summary-content').offsetWidth + 'px';
testElement.style.whiteSpace = 'pre-line';
testElement.textContent = biochemistryText;
document.body.appendChild(testElement);
// 获取生化内容区域的可用高度
const availableHeight = 250; // 可用高度,与尿常规相同
if (testElement.offsetHeight <= availableHeight) {
// 内容不超过一页,隐藏第二页
document.getElementById('biochemistry-summary-content').textContent = biochemistryText;
document.getElementById('biochemistry-page-2').style.display = 'none';
// 更新页码
updatePageNumbers();
} else {
// 内容超过一页,需要分割
// 计算每个字符占用的平均高度
const avgCharHeight = testElement.offsetHeight / biochemistryText.length;
// 计算第一页可容纳的字符数
const firstPageChars = Math.floor(availableHeight / avgCharHeight);
// 分割文本
let firstPageText = biochemistryText.substring(0, firstPageChars);
let secondPageText = biochemistryText.substring(firstPageChars);
// 尝试在更合适的位置分割,如句号或逗号
const breakPoints = ['。', '', '', '\n'];
for (let i = 30; i > 0; i--) {
const checkPos = firstPageChars - i;
if (checkPos <= 0) continue;
const char = biochemistryText.charAt(checkPos);
if (breakPoints.includes(char)) {
firstPageText = biochemistryText.substring(0, checkPos + 1);
secondPageText = biochemistryText.substring(checkPos + 1);
break;
}
}
// 更新内容并显示第二页
document.getElementById('biochemistry-summary-content').textContent = firstPageText;
document.getElementById('biochemistry-content-2').textContent = secondPageText;
document.getElementById('biochemistry-page-2').style.display = 'block';
// 更新页码
updatePageNumbers();
}
// 移除测试元素
document.body.removeChild(testElement);
}
// 处理血常规检查报告内容分页
function handleBloodPagination(bloodText) {
if (!bloodText || bloodText === '--') {
// 如果没有血常规内容,隐藏第二页
document.getElementById('blood-page-2').style.display = 'none';
document.getElementById('blood-summary-content').textContent = '--';
// 更新页码
updatePageNumbers();
return;
}
// 创建临时元素测量内容高度
const testElement = document.createElement('div');
testElement.className = 'summary-content';
testElement.style.position = 'absolute';
testElement.style.visibility = 'hidden';
testElement.style.width = document.getElementById('blood-summary-content').offsetWidth + 'px';
testElement.style.whiteSpace = 'pre-line';
testElement.textContent = bloodText;
document.body.appendChild(testElement);
// 获取血常规内容区域的可用高度
const availableHeight = 250; // 可用高度,与尿常规相同
if (testElement.offsetHeight <= availableHeight) {
// 内容不超过一页,隐藏第二页
document.getElementById('blood-summary-content').textContent = bloodText;
document.getElementById('blood-page-2').style.display = 'none';
// 更新页码
updatePageNumbers();
} else {
// 内容超过一页,需要分割
// 计算每个字符占用的平均高度
const avgCharHeight = testElement.offsetHeight / bloodText.length;
// 计算第一页可容纳的字符数
const firstPageChars = Math.floor(availableHeight / avgCharHeight);
// 分割文本
let firstPageText = bloodText.substring(0, firstPageChars);
let secondPageText = bloodText.substring(firstPageChars);
// 尝试在更合适的位置分割,如句号或逗号
const breakPoints = ['。', '', '', '\n'];
for (let i = 30; i > 0; i--) {
const checkPos = firstPageChars - i;
if (checkPos <= 0) continue;
const char = bloodText.charAt(checkPos);
if (breakPoints.includes(char)) {
firstPageText = bloodText.substring(0, checkPos + 1);
secondPageText = bloodText.substring(checkPos + 1);
break;
}
}
// 更新内容并显示第二页
document.getElementById('blood-summary-content').textContent = firstPageText;
document.getElementById('blood-content-2').textContent = secondPageText;
document.getElementById('blood-page-2').style.display = 'block';
// 更新页码
updatePageNumbers();
}
// 移除测试元素
document.body.removeChild(testElement);
}
// 更新updatePageNumbers函数以考虑所有续页
function updatePageNumbers() {
// 获取所有页码元素
const pageNumbers = document.querySelectorAll('.page-number');
const summaryPage2Visible = document.getElementById('summary-page-2').style.display !== 'none';
const urinePage2Visible = document.getElementById('urine-page-2').style.display !== 'none';
const biochemistryPage2Visible = document.getElementById('biochemistry-page-2').style.display !== 'none';
const bloodPage2Visible = document.getElementById('blood-page-2').style.display !== 'none';
// 计算实际总页数
let totalPages = document.querySelectorAll('.report-item').length;
if (!summaryPage2Visible) totalPages--;
if (!urinePage2Visible) totalPages--;
if (!biochemistryPage2Visible) totalPages--;
if (!bloodPage2Visible) totalPages--;
// 从第1页开始计数
let pageIndex = 1;
pageNumbers.forEach((element) => {
// 更新页码文本
element.textContent = `第${pageIndex}页 共${totalPages}页`;
pageIndex++;
// 如果对应的报告第二页不显示且这是该报告第二页的页码元素则不增加pageIndex
if ((!summaryPage2Visible && element.closest('#summary-page-2')) ||
(!urinePage2Visible && element.closest('#urine-page-2')) ||
(!biochemistryPage2Visible && element.closest('#biochemistry-page-2')) ||
(!bloodPage2Visible && element.closest('#blood-page-2'))) {
pageIndex--;
}
});
}
// 页面加载完成后执行 // 页面加载完成后执行
document.addEventListener('DOMContentLoaded', () => { document.addEventListener('DOMContentLoaded', () => {
// 现有代码... // 现有代码...
// 等待数据填充后处理汇总分页 // 等待数据填充后处理分页
setTimeout(() => { setTimeout(() => {
const summaryText = document.getElementById('summary-content-1').textContent; const summaryText = document.getElementById('summary-content-1').textContent;
handleSummaryPagination(summaryText); handleSummaryPagination(summaryText);
const urineText = document.getElementById('urine-summary-content').textContent;
handleUrinePagination(urineText);
const biochemistryText = document.getElementById('biochemistry-summary-content').textContent;
handleBiochemistryPagination(biochemistryText);
const bloodText = document.getElementById('blood-summary-content').textContent;
handleBloodPagination(bloodText);
}, 2000); }, 2000);
}); });
</script> </script>