9/2 禅道问题

This commit is contained in:
Zy
2026-09-02 17:32:15 +08:00
parent de4bae3bc1
commit e8564269b0
45 changed files with 1036 additions and 927 deletions

View File

@@ -1,246 +1,242 @@
<template>
<div class="p-2 h-full flex flex-col">
<pageHeader></pageHeader>
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
<div v-show="showSearch" class="mb-[10px]">
<el-card shadow="hover">
<el-form
ref="queryFormRef"
:inline="true"
:model="queryParams"
:rules="formRules"
label-position="right"
label-width="180px"
@submit.prevent="handleQuery"
>
<div>
<el-form-item label="日期" prop="payTime">
<el-date-picker
v-model="payTime"
end-placeholder="结束日期"
format="YYYY-MM-DD"
range-separator="至"
start-placeholder="开始日期"
type="daterange"
value-format="YYYY-MM-DD"
@clear="handleClear()"
@update:model-value="(val: string[]) => handleUpdateLeaseDate(val)"
/>
</el-form-item>
<el-form-item label="户主" prop="residentName">
<el-input v-model.trim="queryParams.residentName" placeholder="请输入户主姓名"></el-input>
</el-form-item>
<el-form-item label="房号" prop="houseName">
<el-input v-model.trim="queryParams.houseName" placeholder="请输入房号"></el-input>
</el-form-item>
<el-form-item label="">
<div v-show="!isShow" class="flex justify-end">
<el-button type="primary" @click="handleQuery">查询</el-button>
<el-button @click="resetQuery">重置</el-button>
<div class="flex items-center cursor-pointer hover:color-blue" style="margin-left: 10px; font-size: 13px" @click="toggleShow">
<span>展开</span>
<el-icon style="margin-left: 5px"><ArrowDownBold /></el-icon>
<div class="flex-1 overflow-auto">
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
<div v-show="showSearch" class="mb-[10px]">
<el-card shadow="hover">
<el-form
ref="queryFormRef"
:inline="true"
:model="queryParams"
:rules="formRules"
label-position="right"
label-width="170px"
@submit.prevent="handleQuery"
>
<div>
<el-form-item label="日期" prop="payTime">
<el-date-picker
v-model="payTime"
end-placeholder="结束日期"
format="YYYY-MM-DD"
range-separator="至"
start-placeholder="开始日期"
type="daterange"
value-format="YYYY-MM-DD"
@clear="handleClear()"
@update:model-value="(val: string[]) => handleUpdateLeaseDate(val)"
/>
</el-form-item>
<el-form-item label="户主" prop="residentName">
<el-input v-model.trim="queryParams.residentName" placeholder="请输入户主姓名"></el-input>
</el-form-item>
<el-form-item label="房号" prop="houseName">
<el-input v-model.trim="queryParams.houseName" placeholder="请输入房号"></el-input>
</el-form-item>
<el-form-item label="">
<div v-show="!isShow" class="flex justify-end">
<el-button type="primary" @click="handleQuery">查询</el-button>
<el-button @click="resetQuery">重置</el-button>
<div class="flex items-center cursor-pointer hover:color-blue" style="margin-left: 10px; font-size: 13px" @click="toggleShow">
<span>展开</span>
<el-icon style="margin-left: 5px"><ArrowDownBold /></el-icon>
</div>
</div>
</el-form-item>
</div>
<div v-show="isShow">
<el-form-item label="现金" prop="cashAmount">
<el-input v-model.trim="queryParams.cashAmount" placeholder="区间搜索 1000-10000"></el-input>
</el-form-item>
<el-form-item label="支付宝" prop="alipayAmount">
<el-input v-model.trim="queryParams.alipayAmount" placeholder="区间搜索 1000-10000"></el-input>
</el-form-item>
<el-form-item label="宜当付" prop="yiDangFuAmount">
<el-input v-model.trim="queryParams.yiDangFuAmount" placeholder="区间搜索 1000-10000"></el-input>
</el-form-item>
<el-form-item label="银联" prop="unionPayAmount">
<el-input v-model.trim="queryParams.unionPayAmount" placeholder="区间搜索 1000-10000"></el-input>
</el-form-item>
<el-form-item label="转账" prop="transferAmount">
<el-input v-model.trim="queryParams.transferAmount" placeholder="区间搜索 1000-10000"></el-input>
</el-form-item>
<el-form-item label="微信" prop="wechatAmount">
<el-input v-model.trim="queryParams.wechatAmount" placeholder="区间搜索 1000-10000"></el-input>
</el-form-item>
<el-form-item label="押金抵顶" prop="depositAmount">
<el-input v-model.trim="queryParams.depositAmount" placeholder="区间搜索 1000-10000"></el-input>
</el-form-item>
<el-form-item label="房产抵顶" prop="propertyOffsetAmount">
<el-input v-model.trim="queryParams.propertyOffsetAmount" placeholder="区间搜索 1000-10000"></el-input>
</el-form-item>
<el-form-item label="减免优惠" prop="discountAmount">
<el-input v-model.trim="queryParams.discountAmount" placeholder="区间搜索 1000-10000"></el-input>
</el-form-item>
</div>
<div v-show="isShow">
<el-form-item label="水费" prop="waterFee">
<el-input v-model.trim="queryParams.waterFee" placeholder="区间搜索 1000-10000"></el-input>
</el-form-item>
<el-form-item label="电费" prop="electricFee">
<el-input v-model.trim="queryParams.electricFee" placeholder="区间搜索 1000-10000"></el-input>
</el-form-item>
<el-form-item label="押金" prop="deposit">
<el-input v-model.trim="queryParams.deposit" placeholder="区间搜索 1000-10000"></el-input>
</el-form-item>
</div>
<div v-show="isShow" class="flex justify-between flex-wrap">
<div v-for="(item, index) in queryParamsList" :key="index">
<el-form-item :label="`${item.chargeTypeName} (金额)`">
<el-input v-model.trim="queryParams.chargeTypeFilters[index].amount" placeholder="区间搜索 1000-10000"></el-input>
</el-form-item>
<el-form-item :label="`${item.chargeTypeName} (开始时间)`">
<el-date-picker
v-model="queryParams.chargeTypeFilters[index].startDate"
clearable
end-placeholder="结束时间"
format="YYYY-MM-DD HH:mm:ss"
range-separator="到"
start-placeholder="开始时间"
type="datetimerange"
value-format="YYYY-MM-DD HH:mm:ss"
@clear="
() => {
queryParams.chargeTypeFilters[index].startDate = '';
queryParams.chargeTypeFilters[index].startDateBegin = '';
queryParams.chargeTypeFilters[index].startDateEnd = '';
}
"
@update:model-value="
(val: string[]) => {
if (val.length === 0) {
return;
}
queryParams.chargeTypeFilters[index].startDateBegin = val[0];
queryParams.chargeTypeFilters[index].startDateEnd = val[1];
}
"
/>
</el-form-item>
<el-form-item :label="`${item.chargeTypeName} (结束时间)`">
<el-date-picker
v-model="queryParams.chargeTypeFilters[index].endDate"
clearable
end-placeholder="结束时间"
format="YYYY-MM-DD HH:mm:ss"
range-separator="到"
start-placeholder="开始时间"
type="datetimerange"
value-format="YYYY-MM-DD HH:mm:ss"
@clear="
() => {
queryParams.chargeTypeFilters[index].endDate = '';
queryParams.chargeTypeFilters[index].endDateBegin = '';
queryParams.chargeTypeFilters[index].endDateEnd = '';
}
"
@update:model-value="
(val: string[]) => {
if (val.length === 0) {
return;
}
queryParams.chargeTypeFilters[index].endDateBegin = val[0];
queryParams.chargeTypeFilters[index].endDateEnd = val[1];
}
"
/>
</el-form-item>
</div>
</el-form-item>
</div>
<div v-show="isShow">
<el-form-item label="现金" prop="cashAmount">
<el-input v-model.trim="queryParams.cashAmount" placeholder="区间搜索 1000-10000"></el-input>
</el-form-item>
<el-form-item label="支付宝" prop="alipayAmount">
<el-input v-model.trim="queryParams.alipayAmount" placeholder="区间搜索 1000-10000"></el-input>
</el-form-item>
<el-form-item label="宜当付" prop="yiDangFuAmount">
<el-input v-model.trim="queryParams.yiDangFuAmount" placeholder="区间搜索 1000-10000"></el-input>
</el-form-item>
<el-form-item label="银联" prop="unionPayAmount">
<el-input v-model.trim="queryParams.unionPayAmount" placeholder="区间搜索 1000-10000"></el-input>
</el-form-item>
<el-form-item label="转账" prop="transferAmount">
<el-input v-model.trim="queryParams.transferAmount" placeholder="区间搜索 1000-10000"></el-input>
</el-form-item>
<el-form-item label="微信" prop="wechatAmount">
<el-input v-model.trim="queryParams.wechatAmount" placeholder="区间搜索 1000-10000"></el-input>
</el-form-item>
<el-form-item label="押金抵顶" prop="depositAmount">
<el-input v-model.trim="queryParams.depositAmount" placeholder="区间搜索 1000-10000"></el-input>
</el-form-item>
<el-form-item label="房产抵顶" prop="propertyOffsetAmount">
<el-input v-model.trim="queryParams.propertyOffsetAmount" placeholder="区间搜索 1000-10000"></el-input>
</el-form-item>
<el-form-item label="减免优惠" prop="discountAmount">
<el-input v-model.trim="queryParams.discountAmount" placeholder="区间搜索 1000-10000"></el-input>
</el-form-item>
</div>
<div v-show="isShow">
<el-form-item label="水费" prop="waterFee">
<el-input v-model.trim="queryParams.waterFee" placeholder="区间搜索 1000-10000"></el-input>
</el-form-item>
<el-form-item label="电费" prop="electricFee">
<el-input v-model.trim="queryParams.electricFee" placeholder="区间搜索 1000-10000"></el-input>
</el-form-item>
<el-form-item label="押金" prop="deposit">
<el-input v-model.trim="queryParams.deposit" placeholder="区间搜索 1000-10000"></el-input>
</el-form-item>
</div>
<div v-show="isShow" class="flex justify-between flex-wrap">
<div v-for="(item, index) in queryParamsList" :key="index">
<el-form-item :label="`${item.chargeTypeName} (金额)`">
<el-input v-model.trim="queryParams.chargeTypeFilters[index].amount" placeholder="区间搜索 1000-10000"></el-input>
</el-form-item>
<el-form-item :label="`${item.chargeTypeName} (开始时间)`">
<el-date-picker
v-model="queryParams.chargeTypeFilters[index].startDate"
clearable
end-placeholder="结束时间"
format="YYYY-MM-DD HH:mm:ss"
range-separator="到"
start-placeholder="开始时间"
type="datetimerange"
value-format="YYYY-MM-DD HH:mm:ss"
@clear="
() => {
queryParams.chargeTypeFilters[index].startDate = '';
queryParams.chargeTypeFilters[index].startDateBegin = '';
queryParams.chargeTypeFilters[index].startDateEnd = '';
}
"
@update:model-value="
(val: string[]) => {
if (val.length === 0) {
return;
}
queryParams.chargeTypeFilters[index].startDateBegin = val[0];
queryParams.chargeTypeFilters[index].startDateEnd = val[1];
}
"
/>
</el-form-item>
<el-form-item :label="`${item.chargeTypeName} (结束时间)`">
<el-date-picker
v-model="queryParams.chargeTypeFilters[index].endDate"
clearable
end-placeholder="结束时间"
format="YYYY-MM-DD HH:mm:ss"
range-separator="到"
start-placeholder="开始时间"
type="datetimerange"
value-format="YYYY-MM-DD HH:mm:ss"
@clear="
() => {
queryParams.chargeTypeFilters[index].endDate = '';
queryParams.chargeTypeFilters[index].endDateBegin = '';
queryParams.chargeTypeFilters[index].endDateEnd = '';
}
"
@update:model-value="
(val: string[]) => {
if (val.length === 0) {
return;
}
queryParams.chargeTypeFilters[index].endDateBegin = val[0];
queryParams.chargeTypeFilters[index].endDateEnd = val[1];
}
"
/>
</el-form-item>
</div>
</div>
<!-- <div v-show="isShow">-->
<!-- <el-form-item label="经办人" prop="handler">-->
<!-- <el-input v-model.trim="queryParams.handler" placeholder="请输入经办人姓名"></el-input>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="备注" prop="remark">-->
<!-- <el-input v-model.trim="queryParams.remark" placeholder="请输入备注"></el-input>-->
<!-- </el-form-item>-->
<!-- </div>-->
<div v-show="isShow" class="flex justify-end">
<el-button type="primary" @click="handleQuery">查询</el-button>
<el-button @click="resetQuery">重置</el-button>
<div class="flex items-center cursor-pointer hover:color-blue" style="margin-left: 10px; font-size: 13px" @click="toggleShow">
<span>收起</span>
<el-icon style="margin-left: 5px"><ArrowUpBold /></el-icon>
<!-- <div v-show="isShow">-->
<!-- <el-form-item label="经办人" prop="handler">-->
<!-- <el-input v-model.trim="queryParams.handler" placeholder="请输入经办人姓名"></el-input>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="备注" prop="remark">-->
<!-- <el-input v-model.trim="queryParams.remark" placeholder="请输入备注"></el-input>-->
<!-- </el-form-item>-->
<!-- </div>-->
<div v-show="isShow" class="flex justify-end">
<el-button type="primary" @click="handleQuery">查询</el-button>
<el-button @click="resetQuery">重置</el-button>
<div class="flex items-center cursor-pointer hover:color-blue" style="margin-left: 10px; font-size: 13px" @click="toggleShow">
<span>收起</span>
<el-icon style="margin-left: 5px"><ArrowUpBold /></el-icon>
</div>
</div>
</div>
</el-form>
</el-card>
</div>
</transition>
<el-card class="flex-1" shadow="never">
<template #header>
<el-row :gutter="10">
<el-col :span="5">
<span> 收费日报 </span>
</el-col>
<el-col :span="18"></el-col>
<el-col :span="1">
</el-form>
</el-card>
</div>
</transition>
<el-card class="el-table-box" shadow="never">
<template #header>
<div class="flex items-center justify-between">
<span>收费日报</span>
<el-button type="primary" @click="handleExport">导出</el-button>
</el-col>
</el-row>
</template>
<el-table v-loading="loading" :data="ArrearsDetailList" :row-class-name="handleRowClass" border>
<el-table-column align="center" fixed="left" label="日期" prop="payTime" width="100" />
<el-table-column align="center" fixed="left" label="房屋信息">
<template #default>
<el-table-column align="center" label="户主" prop="residentName" width="100"></el-table-column>
<el-table-column align="center" label="房号" prop="houseName" width="100"></el-table-column>
</template>
</el-table-column>
<el-table-column align="center" label="支付方式">
<template #default>
<el-table-column align="center" label="现金类" prop="cashAmount">
<template #default>
<el-table-column align="center" label="现金" prop="cashAmount"></el-table-column>
<el-table-column align="center" label="支付宝" prop="alipayAmount"></el-table-column>
<el-table-column align="center" label="宜当付" prop="yiDangFuAmount"></el-table-column>
<el-table-column align="center" label="银联" prop="unionPayAmount"></el-table-column>
<el-table-column align="center" label="转账" prop="transferAmount"></el-table-column>
<el-table-column align="center" label="微信" prop="wechatAmount"></el-table-column>
</template>
</el-table-column>
<el-table-column align="center" label="顶账类" prop="deposit">
<template #default>
<el-table-column align="center" label="押金抵顶" prop="depositAmount"></el-table-column>
<el-table-column align="center" label="房产抵顶" prop="propertyOffsetAmount"></el-table-column>
<el-table-column align="center" label="减免优惠" prop="discountAmount"></el-table-column>
</template>
</el-table-column>
</template>
</el-table-column>
<el-table-column align="center" label="水费" prop="waterFee" />
<el-table-column align="center" label="电费" prop="electricFee" />
<el-table-column align="center" label="押金" prop="deposit" />
<el-table-column align="center" label="收费项目" prop="chargeTypeAmounts">
<template #default>
<el-table-column v-for="(item, index) in rowChargeTypesList" :key="index" :label="item" align="center">
<template #default="scope">
<el-table-column v-if="item !== '卡表' && item !== '其他'" align="center" label="金额">
<template #default="scope">
{{ scope.row.chargeTypeAmounts[item].amount }}
</template>
</el-table-column>
<el-table-column v-if="item !== '卡表' && item !== '其他'" align="center" label="开始时间" width="100">
<template #default="scope">
{{ scope.row.chargeTypeAmounts[item].startDate }}
</template>
</el-table-column>
<el-table-column v-if="item !== '卡表' && item !== '其他'" align="center" label="结束时间" width="100">
<template #default="scope">
{{ scope.row.chargeTypeAmounts[item].endDate }}
</template>
</el-table-column>
<span v-if="item == '卡表' || item == '其他'">{{ scope.row.chargeTypeAmounts[item].amount }}</span>
</template>
</el-table-column>
</template>
</el-table-column>
<!-- <el-table-column label="经办人" align="center" prop="handler" />-->
<!-- <el-table-column show-overflow-tooltip width="250" label="备注" align="center" prop="remark" />-->
</el-table>
<pagination v-show="total > 0" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
</el-card>
</div>
</template>
<el-table v-loading="loading" :data="ArrearsDetailList" :row-class-name="handleRowClass" border>
<el-table-column align="center" fixed="left" label="日期" prop="payTime" width="100" />
<el-table-column align="center" fixed="left" label="房屋信息">
<template #default>
<el-table-column align="center" label="户主" prop="residentName" width="100"></el-table-column>
<el-table-column align="center" label="房号" prop="houseName" width="100"></el-table-column>
</template>
</el-table-column>
<el-table-column align="center" label="支付方式">
<template #default>
<el-table-column align="center" label="现金类" prop="cashAmount">
<template #default>
<el-table-column align="center" label="现金" prop="cashAmount"></el-table-column>
<el-table-column align="center" label="支付宝" prop="alipayAmount"></el-table-column>
<el-table-column align="center" label="宜当付" prop="yiDangFuAmount"></el-table-column>
<el-table-column align="center" label="银联" prop="unionPayAmount"></el-table-column>
<el-table-column align="center" label="转账" prop="transferAmount"></el-table-column>
<el-table-column align="center" label="微信" prop="wechatAmount"></el-table-column>
</template>
</el-table-column>
<el-table-column align="center" label="顶账类" prop="deposit">
<template #default>
<el-table-column align="center" label="押金抵顶" prop="depositAmount"></el-table-column>
<el-table-column align="center" label="房产抵顶" prop="propertyOffsetAmount"></el-table-column>
<el-table-column align="center" label="减免优惠" prop="discountAmount"></el-table-column>
</template>
</el-table-column>
</template>
</el-table-column>
<el-table-column align="center" label="水费" prop="waterFee" />
<el-table-column align="center" label="电费" prop="electricFee" />
<el-table-column align="center" label="押金" prop="deposit" />
<el-table-column align="center" label="收费项目" prop="chargeTypeAmounts">
<template #default>
<el-table-column v-for="(item, index) in rowChargeTypesList" :key="index" :label="item" align="center">
<template #default="scope">
<el-table-column v-if="item !== '卡表' && item !== '其他'" align="center" label="金额">
<template #default="scope">
{{ scope.row.chargeTypeAmounts[item].amount }}
</template>
</el-table-column>
<el-table-column v-if="item !== '卡表' && item !== '其他'" align="center" label="开始时间" width="100">
<template #default="scope">
{{ scope.row.chargeTypeAmounts[item].startDate }}
</template>
</el-table-column>
<el-table-column v-if="item !== '卡表' && item !== '其他'" align="center" label="结束时间" width="100">
<template #default="scope">
{{ scope.row.chargeTypeAmounts[item].endDate }}
</template>
</el-table-column>
<span v-if="item == '卡表' || item == '其他'">{{ scope.row.chargeTypeAmounts[item].amount }}</span>
</template>
</el-table-column>
</template>
</el-table-column>
<!-- <el-table-column label="经办人" align="center" prop="handler" />-->
<!-- <el-table-column show-overflow-tooltip width="250" label="备注" align="center" prop="remark" />-->
</el-table>
<pagination v-show="total > 0" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
</el-card>
</div>
</div>
</template>
@@ -428,7 +424,9 @@ const getList = async () => {
getDailyFeeReportList(search)
.then((res) => {
ArrearsDetailList.value = [...(res.rows ?? [])];
rowChargeTypesList.value = Object.keys(res.rows[0].chargeTypeAmounts) ?? [];
if (res.rows) {
rowChargeTypesList.value = Object.keys(res.rows[0].chargeTypeAmounts) ?? [];
}
total.value = res.total;
})
.finally(() => {
@@ -568,6 +566,9 @@ onMounted(() => {
</script>
<style lang="scss" scoped>
.el-table-box {
height: 800px;
}
.el-table {
height: calc(100% - 80px);
}