8/12,预收费用余额汇总

This commit is contained in:
Zy
2026-08-12 14:40:52 +08:00
parent 519df168c6
commit ffa0d1067a
13 changed files with 813 additions and 98 deletions

View File

@@ -22,10 +22,10 @@
</el-select>
</el-form-item>
<el-form-item label="电话" prop="houseNo">
<el-input v-model.trim="queryParams.houseNo" placeholder="请输入房号" />
<el-input v-model.trim="queryParams.houseNo" placeholder="关键字查询" />
</el-form-item>
<el-form-item label="房号" prop="month">
<el-select v-model="queryParams.month" placeholder="请选择">
<el-select v-model="queryParams.month" placeholder="关键字查询">
<el-option v-for="item in MonthList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
@@ -57,7 +57,7 @@
</el-select>
</el-form-item>
<el-form-item label="押金(应收)" prop="month">
<el-select v-model="queryParams.month" placeholder="请选择">
<el-select v-model="queryParams.month" placeholder="区间搜索 1000-10000">
<el-option v-for="item in MonthList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
@@ -67,7 +67,7 @@
</el-select>
</el-form-item>
<el-form-item label="**(应收)" prop="month">
<el-select v-model="queryParams.month" placeholder="请选择">
<el-select v-model="queryParams.month" placeholder="关键字查询">
<el-option v-for="item in MonthList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
@@ -79,7 +79,7 @@
</el-select>
</el-form-item>
<el-form-item label="押金(已收)" prop="month">
<el-select v-model="queryParams.month" placeholder="请选择">
<el-select v-model="queryParams.month" placeholder="区间搜索 1000-10000">
<el-option v-for="item in MonthList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
@@ -89,7 +89,7 @@
</el-select>
</el-form-item>
<el-form-item label="**(已收)" prop="month">
<el-select v-model="queryParams.month" placeholder="请选择">
<el-select v-model="queryParams.month" placeholder="关键字查询">
<el-option v-for="item in MonthList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
@@ -101,7 +101,7 @@
</el-select>
</el-form-item>
<el-form-item label="押金(未收)" prop="month">
<el-select v-model="queryParams.month" placeholder="请选择">
<el-select v-model="queryParams.month" placeholder="区间搜索 1000-10000">
<el-option v-for="item in MonthList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
@@ -111,7 +111,7 @@
</el-select>
</el-form-item>
<el-form-item label="**(未收)" prop="month">
<el-select v-model="queryParams.month" placeholder="请选择">
<el-select v-model="queryParams.month" placeholder="关键字查询">
<el-option v-for="item in MonthList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
@@ -132,7 +132,7 @@
<div v-if="showSearch">
<el-form-item label="">
<el-button type="primary">查询</el-button>
<el-button>重置</el-button>
<el-button @click="resetQuery">重置</el-button>
<div class="arrowBox" style="margin-left: 10px" v-if="showSearch" @click="ChangeShowSearch(false)">
<span>收起</span>
<el-icon style="margin-left: 5px"><ArrowUpBold /></el-icon>
@@ -150,7 +150,7 @@
<div v-if="!showSearch">
<el-form-item label="">
<el-button type="primary">查询</el-button>
<el-button>重置</el-button>
<el-button @click="resetQuery">重置</el-button>
<div class="arrowBox" style="margin-left: 10px" v-if="showSearch" @click="ChangeShowSearch(false)">
<span>收起</span>
<el-icon style="margin-left: 5px"><ArrowUpBold /></el-icon>
@@ -209,16 +209,13 @@
import pagination from '@/components/Pagination/index.vue';
import pageHeader from '@/components/Pageheader/index.vue';
import { getArrearsDetails } from '@/api/system/report/arrears/arrears';
import { listChargeItem } from '@/api/system/SdbChargeItem';
import { getCommunitylistAPI } from '@/api/system/community';
import { OwnerArrearsDetailVo } from '@/api/system/report/arrears/type';
import { getVillageTree } from '@/api/system/house';
import { validator } from '@/utils/Reg';
import { ColumnConfig, exportToExcel } from '@/utils/xlsx';
import { ArrowDownBold, ArrowUpBold } from '@element-plus/icons-vue';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
// ╬╬▐╬╬&╬╬╬╬
const ArrearsDetailList = ref<OwnerArrearsDetailVo[]>([]);
const loading = ref(true);
const showSearch = ref(true);
@@ -380,72 +377,6 @@ const handleExport = () => {
}, 100);
};
const handleExportAll = () => {
loading.value = true;
let reportAllList: OwnerArrearsDetailVo[] = [];
// 移除空字符串字段
getArrearsDetails()
.then((res) => {
reportAllList = res.rows;
total.value = res.total;
reportAllList[reportAllList.length - 1].serialNumber = '合计';
if (reportAllList.length === 0) {
proxy?.$modal.msgWarning('没有可导出的数据');
return;
}
// 显示加载提示
const list = updateDynamicColumns(res.rows);
loading.value = true;
// 使用 setTimeout 让出主线程,避免阻塞UI
setTimeout(() => {
try {
const columns: ColumnConfig[] = [
{ label: '序号', prop: 'serialNumber' },
{ label: '区域', prop: 'area' },
{ label: '房号', prop: 'houseNo' },
{ label: '客户', prop: 'customerName' },
{ label: '联系方式', prop: 'phone' },
{ label: '欠费月数', prop: 'arrearsMonths' },
{ label: '应收账期', prop: 'billPeriod' },
{
label: '欠费项目',
children: [
...list.map((item) => {
return { label: item, prop: `chargeItemAmounts.${item}` };
})
]
}
];
const mergeSpanMethod2 = ({ columnIndex, rowIndex }) => {
if (rowIndex === reportAllList.length - 1) {
const rowspan = 6;
if (columnIndex === 0) {
return { rowspan: 1, colspan: 1 };
}
if (columnIndex === 1) {
return { rowspan: 1, colspan: rowspan };
}
if (columnIndex < rowspan + 1) {
return { rowspan: 0, colspan: 0 };
}
}
// 普通行不合并
return { rowspan: 1, colspan: 1 };
};
exportToExcel(reportAllList, columns, `应收欠费明细表_${new Date().getTime()}`, mergeSpanMethod2);
} catch (error) {
proxy?.$modal.msgError('导出失败,请重试');
console.error('导出错误:', error);
} finally {
loading.value = false;
}
}, 100);
})
.finally(() => {
loading.value = false;
});
};
const mergeSpanMethod = ({ columnIndex, rowIndex }) => {
if (rowIndex === ArrearsDetailList.value.length - 1) {
const rowspan = 6;