打印工作量表单

This commit is contained in:
Euni4U 2025-04-25 16:34:26 +08:00
parent 20d91d0fc9
commit fe1065a11b
4 changed files with 33 additions and 21 deletions

View File

@ -102,7 +102,7 @@
@click.stop="resetPatientStatus(patient)"
class="reset-status-btn"
>
</el-button>
</div>
</div>

View File

@ -55,7 +55,7 @@
<el-table-column label="糖尿病" align="center" prop="diaflag" min-width="80" />
<el-table-column label="精神病" align="center" prop="smiflag" min-width="80" />
<el-table-column label="肺结核" align="center" prop="pulflag" min-width="80" />
<el-table-column label="总数" align="center" prop="sum" min-width="80" />
<el-table-column label="总数" align="center" prop="sum" min-width="80" />
</el-table-column>
</el-table>
</ContentWrap>

View File

@ -57,6 +57,14 @@ export function preparePrintData(data, timeRange) {
// 将树形结构展平为表格结构
const flattenedData = [];
// 用于计算合计的变量
let totalOldmanflag = 0;
let totalHtnflag = 0;
let totalDiaflag = 0;
let totalSmiflag = 0;
let totalPulflag = 0;
let totalSum = 0;
// 处理每个卫生院及其下属的行政村
data.forEach(org => {
if (!org || typeof org !== 'object') return; // 跳过无效数据
@ -64,23 +72,6 @@ export function preparePrintData(data, timeRange) {
// 确保orgname存在
const orgname = org.orgname || '未知卫生院';
// 计算该卫生院下的行政村数量
const villageCount = org.children ? org.children.length : 0;
// 添加卫生院汇总行
flattenedData.push({
orgname: orgname,
districtname: '汇总',
oldmanflag: org.oldmanflag || 0,
htnflag: org.htnflag || 0,
diaflag: org.diaflag || 0,
smiflag: org.smiflag || 0,
pulflag: org.pulflag || 0,
sum: org.sum || 0,
rowspan: villageCount + 1, // 包括汇总行
isFirstRow: true
});
// 添加该卫生院下的所有行政村
if (org.children && Array.isArray(org.children) && org.children.length > 0) {
// 先对子项进行排序,保持数据一致性
@ -89,8 +80,16 @@ export function preparePrintData(data, timeRange) {
.sort((a, b) => (b.sum || 0) - (a.sum || 0));
sortedChildren.forEach((village, index) => {
// 累加各项数据
totalOldmanflag += village.oldmanflag || 0;
totalHtnflag += village.htnflag || 0;
totalDiaflag += village.diaflag || 0;
totalSmiflag += village.smiflag || 0;
totalPulflag += village.pulflag || 0;
totalSum += village.sum || 0;
flattenedData.push({
orgname: '', // 空字符串,不显示卫生院名称
orgname: index === 0 ? orgname : '', // 只在第一行显示卫生院名称
districtname: village.districtname || '未知行政村',
oldmanflag: village.oldmanflag || 0,
htnflag: village.htnflag || 0,
@ -104,6 +103,19 @@ export function preparePrintData(data, timeRange) {
}
});
// 添加合计行
flattenedData.push({
orgname: '合计',
districtname: '',
oldmanflag: totalOldmanflag,
htnflag: totalHtnflag,
diaflag: totalDiaflag,
smiflag: totalSmiflag,
pulflag: totalPulflag,
sum: totalSum,
isTotal: true
});
console.log('处理后的打印数据:', flattenedData);
return {

View File

@ -204,7 +204,7 @@ export default {
},
{
width: 40,
title: "<b>总数</b>",
title: "<b>总数</b>",
field: "sum",
checked: true,
columnId: "sum",