fix: #579 (codex)
This commit is contained in:
@@ -62,142 +62,188 @@
|
||||
门诊收费日结单
|
||||
</div>
|
||||
|
||||
<div class="info-grid">
|
||||
<div class="info-item">
|
||||
<span class="label">经办人姓名:</span>
|
||||
<span class="value">{{ userStore.nickName || '全部' }}</span>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<span class="label">科室:</span>
|
||||
<span class="value">{{ userStore.orgName || '-' }}</span>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<span class="label">机构:</span>
|
||||
<span class="value">{{ userStore.hospitalName || '-' }}</span>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<span class="label">时间:</span>
|
||||
<span class="value">{{ queryTime && queryTime.length === 2 ? queryTime[0] + ' ~ ' + queryTime[1] : '-' }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<el-row :gutter="20" class="info-row">
|
||||
<el-col :xs="24" :sm="12" :md="6">
|
||||
<div class="info-cell">
|
||||
<span class="info-label">经办人姓名:</span>
|
||||
<span class="info-value">{{ userStore.nickName || '全部' }}</span>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="12" :md="6">
|
||||
<div class="info-cell">
|
||||
<span class="info-label">科室:</span>
|
||||
<span class="info-value">{{ userStore.orgName || '-' }}</span>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="12" :md="6">
|
||||
<div class="info-cell">
|
||||
<span class="info-label">机构:</span>
|
||||
<span class="info-value">{{ userStore.hospitalName || '-' }}</span>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="12" :md="6">
|
||||
<div class="info-cell">
|
||||
<span class="info-label">时间:</span>
|
||||
<span class="info-value">{{ queryTime && queryTime.length === 2 ? queryTime[0] + ' ~ ' + queryTime[1] : '-' }}</span>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-divider />
|
||||
|
||||
<div class="section-title">
|
||||
收入汇总
|
||||
</div>
|
||||
<div class="data-grid">
|
||||
<div class="data-item">
|
||||
<span class="label">总收入:</span>
|
||||
<span class="value">{{ formatValue(reportValue.cashSum) }}</span>
|
||||
</div>
|
||||
<div class="data-item">
|
||||
<span class="label">现金:</span>
|
||||
<span class="value">{{ formatValue(reportValue.rmbCashSum) }}</span>
|
||||
</div>
|
||||
<div class="data-item">
|
||||
<span class="label">微信:</span>
|
||||
<span class="value">{{ formatValue(reportValue.vxCashSum) }}</span>
|
||||
</div>
|
||||
<div class="data-item">
|
||||
<span class="label">支付宝:</span>
|
||||
<span class="value">{{ formatValue(reportValue.aliCashSum) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section-title">收入汇总</div>
|
||||
<el-row :gutter="16" class="data-row">
|
||||
<el-col :xs="24" :sm="12" :md="6">
|
||||
<div class="data-cell">
|
||||
<span class="data-label">总收入:</span>
|
||||
<span class="data-value">{{ formatValue(reportValue.cashSum) }}</span>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="12" :md="6">
|
||||
<div class="data-cell">
|
||||
<span class="data-label">现金:</span>
|
||||
<span class="data-value">{{ formatValue(reportValue.rmbCashSum) }}</span>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="12" :md="6">
|
||||
<div class="data-cell">
|
||||
<span class="data-label">微信:</span>
|
||||
<span class="data-value">{{ formatValue(reportValue.vxCashSum) }}</span>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="12" :md="6">
|
||||
<div class="data-cell">
|
||||
<span class="data-label">支付宝:</span>
|
||||
<span class="data-value">{{ formatValue(reportValue.aliCashSum) }}</span>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-divider />
|
||||
|
||||
<div class="section-title">
|
||||
医保支付
|
||||
</div>
|
||||
<div class="data-grid">
|
||||
<div class="data-item">
|
||||
<span class="label">统筹支付:</span>
|
||||
<span class="value">{{ formatValue(reportValue.tcSum) }}</span>
|
||||
</div>
|
||||
<div class="data-item">
|
||||
<span class="label">账户支付:</span>
|
||||
<span class="value">{{ formatValue(reportValue.zhSum) }}</span>
|
||||
</div>
|
||||
<div class="data-item">
|
||||
<span class="label">基金支付总额:</span>
|
||||
<span class="value">{{ formatValue(reportValue.fundSum) }}</span>
|
||||
</div>
|
||||
<div class="data-item">
|
||||
<span class="label">医保统筹+账户:</span>
|
||||
<span class="value">{{ formatValue(Number(reportValue.zhSum || 0) + Number(reportValue.fundSum || 0)) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section-title">医保支付</div>
|
||||
<el-row :gutter="16" class="data-row">
|
||||
<el-col :xs="24" :sm="12" :md="6">
|
||||
<div class="data-cell">
|
||||
<span class="data-label">统筹支付:</span>
|
||||
<span class="data-value">{{ formatValue(reportValue.tcSum) }}</span>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="12" :md="6">
|
||||
<div class="data-cell">
|
||||
<span class="data-label">账户支付:</span>
|
||||
<span class="data-value">{{ formatValue(reportValue.zhSum) }}</span>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="12" :md="6">
|
||||
<div class="data-cell">
|
||||
<span class="data-label">基金支付总额:</span>
|
||||
<span class="data-value">{{ formatValue(reportValue.fundSum) }}</span>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="12" :md="6">
|
||||
<div class="data-cell">
|
||||
<span class="data-label">医保统筹+账户:</span>
|
||||
<span class="data-value">{{ formatValue(Number(reportValue.zhSum || 0) + Number(reportValue.fundSum || 0)) }}</span>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-divider />
|
||||
|
||||
<div class="section-title">
|
||||
费用明细
|
||||
</div>
|
||||
<div class="data-grid">
|
||||
<div class="data-item">
|
||||
<span class="label">诊查费:</span>
|
||||
<span class="value">{{ formatValue(reportValue.DIAGNOSTIC_FEE) }}</span>
|
||||
</div>
|
||||
<div class="data-item">
|
||||
<span class="label">检查费:</span>
|
||||
<span class="value">{{ formatValue(reportValue.CHECK_FEE) }}</span>
|
||||
</div>
|
||||
<div class="data-item">
|
||||
<span class="label">化验费:</span>
|
||||
<span class="value">{{ formatValue(reportValue.DIAGNOSTIC_TEST_FEE) }}</span>
|
||||
</div>
|
||||
<div class="data-item">
|
||||
<span class="label">治疗费:</span>
|
||||
<span class="value">{{ formatValue(reportValue.MEDICAL_EXPENSE_FEE) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="data-grid">
|
||||
<div class="data-item">
|
||||
<span class="label">西药费:</span>
|
||||
<span class="value">{{ formatValue(reportValue.WEST_MEDICINE) }}</span>
|
||||
</div>
|
||||
<div class="data-item">
|
||||
<span class="label">中药饮片费:</span>
|
||||
<span class="value">{{ formatValue(reportValue.CHINESE_MEDICINE_SLICES_FEE) }}</span>
|
||||
</div>
|
||||
<div class="data-item">
|
||||
<span class="label">中成药费:</span>
|
||||
<span class="value">{{ formatValue(reportValue.CHINESE_MEDICINE_FEE) }}</span>
|
||||
</div>
|
||||
<div class="data-item">
|
||||
<span class="label">卫生材料费:</span>
|
||||
<span class="value">{{ formatValue(reportValue.SANITARY_MATERIALS_FEE) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="data-grid">
|
||||
<div class="data-item">
|
||||
<span class="label">普通挂号费:</span>
|
||||
<span class="value">{{ formatValue(reportValue.GENERAL_CONSULTATION_FEE) }}</span>
|
||||
</div>
|
||||
<div class="data-item">
|
||||
<span class="label">挂号费:</span>
|
||||
<span class="value">{{ formatValue(reportValue.REGISTRATION_FEE) }}</span>
|
||||
</div>
|
||||
<div class="data-item">
|
||||
<span class="label">其他费用:</span>
|
||||
<span class="value">{{ formatValue(reportValue.OTHER_FEE) }}</span>
|
||||
</div>
|
||||
<div class="data-item">
|
||||
<span class="label">退费金额:</span>
|
||||
<span class="value">{{ formatValue(reportValue.returnFee) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="data-grid data-grid-summary">
|
||||
<div class="data-item">
|
||||
<span class="label">费用总额:</span>
|
||||
<span class="value value-highlight">{{ totalFeeAmount }}</span>
|
||||
</div>
|
||||
<div class="data-item">
|
||||
<span class="label">医保报销:</span>
|
||||
<span class="value value-highlight">{{ insuranceReimbursement }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section-title">费用明细</div>
|
||||
<el-row :gutter="16" class="data-row">
|
||||
<el-col :xs="24" :sm="12" :md="6">
|
||||
<div class="data-cell">
|
||||
<span class="data-label">诊查费:</span>
|
||||
<span class="data-value">{{ formatValue(reportValue.DIAGNOSTIC_FEE) }}</span>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="12" :md="6">
|
||||
<div class="data-cell">
|
||||
<span class="data-label">检查费:</span>
|
||||
<span class="data-value">{{ formatValue(reportValue.CHECK_FEE) }}</span>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="12" :md="6">
|
||||
<div class="data-cell">
|
||||
<span class="data-label">化验费:</span>
|
||||
<span class="data-value">{{ formatValue(reportValue.DIAGNOSTIC_TEST_FEE) }}</span>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="12" :md="6">
|
||||
<div class="data-cell">
|
||||
<span class="data-label">治疗费:</span>
|
||||
<span class="data-value">{{ formatValue(reportValue.MEDICAL_EXPENSE_FEE) }}</span>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="16" class="data-row">
|
||||
<el-col :xs="24" :sm="12" :md="6">
|
||||
<div class="data-cell">
|
||||
<span class="data-label">西药费:</span>
|
||||
<span class="data-value">{{ formatValue(reportValue.WEST_MEDICINE) }}</span>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="12" :md="6">
|
||||
<div class="data-cell">
|
||||
<span class="data-label">中药饮片费:</span>
|
||||
<span class="data-value">{{ formatValue(reportValue.CHINESE_MEDICINE_SLICES_FEE) }}</span>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="12" :md="6">
|
||||
<div class="data-cell">
|
||||
<span class="data-label">中成药费:</span>
|
||||
<span class="data-value">{{ formatValue(reportValue.CHINESE_MEDICINE_FEE) }}</span>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="12" :md="6">
|
||||
<div class="data-cell">
|
||||
<span class="data-label">卫生材料费:</span>
|
||||
<span class="data-value">{{ formatValue(reportValue.SANITARY_MATERIALS_FEE) }}</span>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="16" class="data-row">
|
||||
<el-col :xs="24" :sm="12" :md="6">
|
||||
<div class="data-cell">
|
||||
<span class="data-label">普通挂号费:</span>
|
||||
<span class="data-value">{{ formatValue(reportValue.GENERAL_CONSULTATION_FEE) }}</span>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="12" :md="6">
|
||||
<div class="data-cell">
|
||||
<span class="data-label">挂号费:</span>
|
||||
<span class="data-value">{{ formatValue(reportValue.REGISTRATION_FEE) }}</span>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="12" :md="6">
|
||||
<div class="data-cell">
|
||||
<span class="data-label">其他费用:</span>
|
||||
<span class="data-value">{{ formatValue(reportValue.OTHER_FEE) }}</span>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="12" :md="6">
|
||||
<div class="data-cell">
|
||||
<span class="data-label">退费金额:</span>
|
||||
<span class="data-value">{{ formatValue(reportValue.returnFee) }}</span>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="16" class="data-row summary-row">
|
||||
<el-col :xs="24" :sm="12" :md="6">
|
||||
<div class="data-cell summary-cell">
|
||||
<span class="data-label summary-label">费用总额:</span>
|
||||
<span class="data-value value-highlight">{{ totalFeeAmount }}</span>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="12" :md="6">
|
||||
<div class="data-cell summary-cell">
|
||||
<span class="data-label summary-label">医保报销:</span>
|
||||
<span class="data-value value-highlight">{{ insuranceReimbursement }}</span>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -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 };
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user