From 232577caaa96ce9d696e9f1f81d712ae55c52a0d Mon Sep 17 00:00:00 2001 From: zhaoyun Date: Sun, 24 May 2026 15:07:56 +0800 Subject: [PATCH] fix: #579 (codex) --- .../views/clinicmanagement/dayEnd/index.vue | 418 +++++++++++------- .../outPatientCharge.vue | 45 +- 2 files changed, 268 insertions(+), 195 deletions(-) diff --git a/openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue b/openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue index a9113868..ea05f2ec 100755 --- a/openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue +++ b/openhis-ui-vue3/src/views/clinicmanagement/dayEnd/index.vue @@ -62,142 +62,188 @@ 门诊收费日结单 -
-
- 经办人姓名: - {{ userStore.nickName || '全部' }} -
-
- 科室: - {{ userStore.orgName || '-' }} -
-
- 机构: - {{ userStore.hospitalName || '-' }} -
-
- 时间: - {{ queryTime && queryTime.length === 2 ? queryTime[0] + ' ~ ' + queryTime[1] : '-' }} -
-
+ + +
+ 经办人姓名: + {{ userStore.nickName || '全部' }} +
+
+ +
+ 科室: + {{ userStore.orgName || '-' }} +
+
+ +
+ 机构: + {{ userStore.hospitalName || '-' }} +
+
+ +
+ 时间: + {{ queryTime && queryTime.length === 2 ? queryTime[0] + ' ~ ' + queryTime[1] : '-' }} +
+
+
-
- 收入汇总 -
-
-
- 总收入: - {{ formatValue(reportValue.cashSum) }} -
-
- 现金: - {{ formatValue(reportValue.rmbCashSum) }} -
-
- 微信: - {{ formatValue(reportValue.vxCashSum) }} -
-
- 支付宝: - {{ formatValue(reportValue.aliCashSum) }} -
-
+
收入汇总
+ + +
+ 总收入: + {{ formatValue(reportValue.cashSum) }} +
+
+ +
+ 现金: + {{ formatValue(reportValue.rmbCashSum) }} +
+
+ +
+ 微信: + {{ formatValue(reportValue.vxCashSum) }} +
+
+ +
+ 支付宝: + {{ formatValue(reportValue.aliCashSum) }} +
+
+
-
- 医保支付 -
-
-
- 统筹支付: - {{ formatValue(reportValue.tcSum) }} -
-
- 账户支付: - {{ formatValue(reportValue.zhSum) }} -
-
- 基金支付总额: - {{ formatValue(reportValue.fundSum) }} -
-
- 医保统筹+账户: - {{ formatValue(Number(reportValue.zhSum || 0) + Number(reportValue.fundSum || 0)) }} -
-
+
医保支付
+ + +
+ 统筹支付: + {{ formatValue(reportValue.tcSum) }} +
+
+ +
+ 账户支付: + {{ formatValue(reportValue.zhSum) }} +
+
+ +
+ 基金支付总额: + {{ formatValue(reportValue.fundSum) }} +
+
+ +
+ 医保统筹+账户: + {{ formatValue(Number(reportValue.zhSum || 0) + Number(reportValue.fundSum || 0)) }} +
+
+
-
- 费用明细 -
-
-
- 诊查费: - {{ formatValue(reportValue.DIAGNOSTIC_FEE) }} -
-
- 检查费: - {{ formatValue(reportValue.CHECK_FEE) }} -
-
- 化验费: - {{ formatValue(reportValue.DIAGNOSTIC_TEST_FEE) }} -
-
- 治疗费: - {{ formatValue(reportValue.MEDICAL_EXPENSE_FEE) }} -
-
-
-
- 西药费: - {{ formatValue(reportValue.WEST_MEDICINE) }} -
-
- 中药饮片费: - {{ formatValue(reportValue.CHINESE_MEDICINE_SLICES_FEE) }} -
-
- 中成药费: - {{ formatValue(reportValue.CHINESE_MEDICINE_FEE) }} -
-
- 卫生材料费: - {{ formatValue(reportValue.SANITARY_MATERIALS_FEE) }} -
-
-
-
- 普通挂号费: - {{ formatValue(reportValue.GENERAL_CONSULTATION_FEE) }} -
-
- 挂号费: - {{ formatValue(reportValue.REGISTRATION_FEE) }} -
-
- 其他费用: - {{ formatValue(reportValue.OTHER_FEE) }} -
-
- 退费金额: - {{ formatValue(reportValue.returnFee) }} -
-
-
-
- 费用总额: - {{ totalFeeAmount }} -
-
- 医保报销: - {{ insuranceReimbursement }} -
-
+
费用明细
+ + +
+ 诊查费: + {{ formatValue(reportValue.DIAGNOSTIC_FEE) }} +
+
+ +
+ 检查费: + {{ formatValue(reportValue.CHECK_FEE) }} +
+
+ +
+ 化验费: + {{ formatValue(reportValue.DIAGNOSTIC_TEST_FEE) }} +
+
+ +
+ 治疗费: + {{ formatValue(reportValue.MEDICAL_EXPENSE_FEE) }} +
+
+
+ + +
+ 西药费: + {{ formatValue(reportValue.WEST_MEDICINE) }} +
+
+ +
+ 中药饮片费: + {{ formatValue(reportValue.CHINESE_MEDICINE_SLICES_FEE) }} +
+
+ +
+ 中成药费: + {{ formatValue(reportValue.CHINESE_MEDICINE_FEE) }} +
+
+ +
+ 卫生材料费: + {{ formatValue(reportValue.SANITARY_MATERIALS_FEE) }} +
+
+
+ + +
+ 普通挂号费: + {{ formatValue(reportValue.GENERAL_CONSULTATION_FEE) }} +
+
+ +
+ 挂号费: + {{ formatValue(reportValue.REGISTRATION_FEE) }} +
+
+ +
+ 其他费用: + {{ formatValue(reportValue.OTHER_FEE) }} +
+
+ +
+ 退费金额: + {{ formatValue(reportValue.returnFee) }} +
+
+
+ + +
+ 费用总额: + {{ totalFeeAmount }} +
+
+ +
+ 医保报销: + {{ insuranceReimbursement }} +
+
+
@@ -418,54 +464,60 @@ getPharmacyCabinetLists(); color: #303133; } -.info-grid { - display: grid; - grid-template-columns: repeat(4, 1fr); - gap: 12px 16px; - padding: 8px 0; +.info-row { + padding: 12px 0; } -.data-grid { - display: grid; - grid-template-columns: repeat(4, 1fr); - gap: 10px 16px; - padding: 6px 0; -} - -.data-grid-summary { - margin-top: 12px; - padding-top: 12px; - border-top: 1px dashed #e4e7ed; -} - -.info-item, -.data-item { +.info-cell { display: flex; - align-items: baseline; - line-height: 28px; + align-items: center; + padding: 6px 0; + min-height: 32px; } -.section-title { - font-size: 15px; - font-weight: 600; - color: #409eff; - padding: 12px 0 8px 10px; - margin: 4px 0 0; - border-left: 3px solid #409eff; - background: linear-gradient(90deg, rgba(64, 158, 255, 0.05) 0%, transparent 100%); -} - -.label { +.info-label { color: #909399; font-size: 13px; white-space: nowrap; - min-width: 95px; + min-width: 80px; } -.value { +.info-value { color: #303133; font-size: 14px; font-weight: 500; + flex: 1; +} + +.data-row { + padding: 4px 0; +} + +.data-cell { + display: flex; + align-items: center; + padding: 8px 12px; + margin-bottom: 4px; + background: #fafafa; + border-radius: 4px; + min-height: 40px; +} + +.data-label { + color: #606266; + font-size: 13px; + white-space: nowrap; + min-width: 100px; + text-align: right; + padding-right: 8px; +} + +.data-value { + color: #303133; + font-size: 14px; + font-weight: 500; + flex: 1; + text-align: right; } .value-highlight { @@ -474,6 +526,30 @@ getPharmacyCabinetLists(); font-size: 15px; } +.summary-row { + margin-top: 8px; +} + +.summary-cell { + background: #ecf5ff; + border: 1px solid #d9ecff; +} + +.summary-label { + font-weight: 600; + color: #409eff; +} + +.section-title { + font-size: 15px; + font-weight: 600; + color: #409eff; + padding: 8px 0 8px 12px; + margin: 8px 0 4px; + border-left: 3px solid #409eff; + background: linear-gradient(90deg, rgba(64, 158, 255, 0.05) 0%, transparent 100%); +} + .search-buttons { margin-bottom: 0; } @@ -483,11 +559,27 @@ getPharmacyCabinetLists(); } :deep(.el-divider--horizontal) { - margin: 16px 0; + margin: 12px 0; } .el-form--inline .el-form-item { margin-bottom: 12px; margin-right: 16px; } + +@media (max-width: 768px) { + .data-label { + min-width: 80px; + text-align: left; + padding-right: 4px; + } + + .data-value { + text-align: left; + } + + .info-label { + min-width: 70px; + } +} diff --git a/openhis-ui-vue3/src/views/medicationmanagement/statisticalManagement/outPatientCharge.vue b/openhis-ui-vue3/src/views/medicationmanagement/statisticalManagement/outPatientCharge.vue index 0e708a51..d20ef16f 100755 --- a/openhis-ui-vue3/src/views/medicationmanagement/statisticalManagement/outPatientCharge.vue +++ b/openhis-ui-vue3/src/views/medicationmanagement/statisticalManagement/outPatientCharge.vue @@ -551,7 +551,7 @@ function handleTotalAmount() { // 表格合并行方法(纯函数,不修改数据) const arraySpanMethod = ({ row, column, rowIndex, columnIndex }) => { - // 仅处理科室列(columnIndex === 1)的门诊号合并 + // 合并门诊号列(columnIndex === 1) if (columnIndex === 1) { const spanInfo = rowSpanMap.value[rowIndex]; if (spanInfo) { @@ -694,8 +694,8 @@ function getList(type) { : '0.0000' + (k.quantityUnit_dictText ? k.quantityUnit_dictText : ''); }); - // 处理搜索关键词时的合计 - if (queryParams.value.searchKey) { + // 处理搜索关键词或单页数据 + if (queryParams.value.searchKey || (total.value && total.value <= queryParams.value.pageSize)) { // 先处理小计行和合并信息 purchaseinventoryList.value = processListWithSubtotals(purchaseinventoryList.value); @@ -706,42 +706,24 @@ function getList(type) { }); totalPrice2 = totalPrice2 ? totalPrice2.toFixed(4) : totalPrice2; - purchaseinventoryList.value.push({ departmentName: '合计', totalPrice: totalPrice2 }); - loading.value = false; - return; - } - - // 处理分页数据 - purchaseinventoryList.value.forEach((k) => { - if (total.value && total.value <= queryParams.value.pageSize) { - totalPrice2 += Number(k.totalPrice); - } - }); - - if (total.value <= res.data.size) { - loading.value = false; - } - - // 单页数据合计 - if (total.value && total.value <= queryParams.value.pageSize) { - // 先处理小计行和合并信息 - purchaseinventoryList.value = processListWithSubtotals(purchaseinventoryList.value); - totalPrice2 = totalPrice2 ? totalPrice2.toFixed(4) : totalPrice2; let pageNoAll = total.value / queryParams.value.pageSize; - if (Math.ceil(pageNoAll) == queryParams.value.pageNo) { purchaseinventoryList.value.push({ departmentName: '合计', totalPrice: totalPrice2 }); + rowSpanMap.value[purchaseinventoryList.value.length - 1] = { rowspan: 1, colspan: 1 }; } - } - - // 多页数据处理 - if (total.value && total.value > queryParams.value.pageSize && !queryParams.value.searchKey) { + + loading.value = false; + } else if (total.value && total.value > queryParams.value.pageSize && !queryParams.value.searchKey) { + // 多页数据:先处理当前页数据确保rowSpanMap正确初始化,避免表格格式错乱 + purchaseinventoryList.value = processListWithSubtotals(purchaseinventoryList.value); + loading.value = false; + + // 然后获取全部数据进行完整处理 let queryParamsValue = { ...queryParams.value }; queryParamsValue.pageSize = total.value; queryParamsValue.pageNo = 1; - // 移除空值参数 Object.keys(queryParamsValue).forEach(key => { if (queryParamsValue[key] === undefined || queryParamsValue[key] === null || queryParamsValue[key] === '') { delete queryParamsValue[key]; @@ -762,15 +744,14 @@ function getList(type) { totalPrice2 += Number(k.totalPrice); }); - // 用 processListWithSubtotals 统一处理小计和合并行 purchaseinventoryList.value = processListWithSubtotals(purchaseinventoryListAll.value); totalPrice2 = totalPrice2 ? totalPrice2.toFixed(4) : totalPrice2; - loading.value = false; let pageNoAll = total.value / queryParams.value.pageSize; if (Math.ceil(pageNoAll) == queryParams.value.pageNo) { purchaseinventoryList.value.push({ departmentName: '合计', totalPrice: totalPrice2 }); + rowSpanMap.value[purchaseinventoryList.value.length - 1] = { rowspan: 1, colspan: 1 }; } } });