<template>
|
<div class="app-container">
|
<!-- 头部信息卡片 -->
|
<div class="batch-info">
|
<div class="header">
|
<div class="batch-title">批次号:{{ batchInfo.batchNumber }}</div>
|
<div class="back-btn">
|
<el-button
|
type="primary"
|
size="small"
|
icon="el-icon-back"
|
@click="goBack"
|
>返回</el-button
|
>
|
</div>
|
</div>
|
<div class="info-cards">
|
<el-card class="box-card">
|
<div class="card-title">{{ batchInfo.personNum }}</div>
|
<div class="card-desc">申请总人数</div>
|
</el-card>
|
<el-card class="box-card">
|
<div class="card-title">{{ batchInfo.totalAmount }} 万元</div>
|
<div class="card-desc">申请总金额</div>
|
</el-card>
|
<el-card class="box-card">
|
<div class="card-title">{{ batchInfo.waitFamilyArea }}㎡</div>
|
<div class="card-desc">应安置总面积</div>
|
</el-card>
|
</div>
|
</div>
|
|
<!-- 搜索表单 -->
|
<el-form :inline="true" :model="queryParams" class="search-form">
|
<el-form-item label="镇街">
|
<el-input
|
v-model="queryParams.street"
|
placeholder="请输入"
|
clearable
|
size="small"
|
/>
|
</el-form-item>
|
<el-form-item label="拆迁项目">
|
<el-input
|
v-model="queryParams.projectName"
|
placeholder="请输入"
|
clearable
|
size="small"
|
/>
|
</el-form-item>
|
<el-form-item label="所在村(社区)">
|
<el-input
|
v-model="queryParams.community"
|
placeholder="请输入"
|
clearable
|
size="small"
|
/>
|
</el-form-item>
|
<el-form-item label="户主姓名/身份证号">
|
<el-input
|
v-model="queryParams.headOrIdCard"
|
placeholder="请输入"
|
clearable
|
size="small"
|
/>
|
</el-form-item>
|
<el-form-item>
|
<el-button
|
type="primary"
|
icon="el-icon-search"
|
size="small"
|
@click="handleQuery"
|
>查询</el-button
|
>
|
<el-button icon="el-icon-refresh" size="small" @click="resetQuery"
|
>重置</el-button
|
>
|
</el-form-item>
|
</el-form>
|
|
<!-- 操作按钮区域 -->
|
<el-row :gutter="10" class="mb8" v-if="batchInfo.status == '0'">
|
<el-col :span="1.5">
|
<el-button type="primary" size="small" @click="handleAddHousehold"
|
>新增安置户信息</el-button
|
>
|
</el-col>
|
<el-col :span="1.5">
|
<el-button type="success" size="small" @click="handleDownloadTemplate"
|
>下载导入模板</el-button
|
>
|
</el-col>
|
<el-col :span="1.5">
|
<el-button type="warning" size="small" @click="handleBatchImport"
|
>批量导入</el-button
|
>
|
</el-col>
|
<el-col :span="1.5">
|
<el-button type="danger" size="small" @click="handleExportIssueData"
|
>问题数据导出</el-button
|
>
|
</el-col>
|
</el-row>
|
|
<el-row :gutter="10" class="mb8" v-else>
|
<el-col :span="1.5">
|
<el-button type="primary" size="small" @click="handleExportAll"
|
>全部导出为Excel</el-button
|
>
|
</el-col>
|
<el-col :span="1.5">
|
<el-button type="danger" size="small" @click="handleExportIssueData"
|
>问题数据导出</el-button
|
>
|
</el-col>
|
</el-row>
|
|
<!-- 表格区域 -->
|
<el-table
|
:data="tableData"
|
border
|
style="width: 100%"
|
:row-class-name="tableRowClassName"
|
>
|
<el-table-column type="index" label="序号" width="50" align="center" />
|
<el-table-column
|
prop="street"
|
label="镇(街道)"
|
align="center"
|
width="80"
|
>
|
<template slot-scope="scope">
|
{{ scope.row.street }}
|
<el-tooltip
|
v-if="scope.row.errors && scope.row.errors.street"
|
placement="top"
|
>
|
<div slot="content">{{ scope.row.errors.street }}</div>
|
<i
|
class="el-icon-warning"
|
style="color: #e6a23c; margin-left: 5px"
|
></i>
|
</el-tooltip>
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="projectName"
|
label="拆迁项目名称"
|
align="center"
|
width="150"
|
>
|
<template slot-scope="scope">
|
{{ scope.row.projectName }}
|
<el-tooltip
|
v-if="scope.row.errors && scope.row.errors.projectName"
|
placement="top"
|
>
|
<div slot="content">{{ scope.row.errors.projectName }}</div>
|
<i
|
class="el-icon-warning"
|
style="color: #e6a23c; margin-left: 5px"
|
></i>
|
</el-tooltip>
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="community"
|
label="所在村(社区)"
|
align="center"
|
width="100"
|
>
|
<template slot-scope="scope">
|
{{ scope.row.community }}
|
<el-tooltip
|
v-if="scope.row.errors && scope.row.errors.community"
|
placement="top"
|
>
|
<div slot="content">{{ scope.row.errors.community }}</div>
|
<i
|
class="el-icon-warning"
|
style="color: #e6a23c; margin-left: 5px"
|
></i>
|
</el-tooltip>
|
</template>
|
</el-table-column>
|
<el-table-column prop="time" label="拆迁时间" align="center" width="100">
|
<template slot-scope="scope">
|
{{ scope.row.time }}
|
<el-tooltip
|
v-if="scope.row.errors && scope.row.errors.time"
|
placement="top"
|
>
|
<div slot="content">{{ scope.row.errors.time }}</div>
|
<i
|
class="el-icon-warning"
|
style="color: #e6a23c; margin-left: 5px"
|
></i>
|
</el-tooltip>
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="headOrIdCard"
|
label="产主姓名"
|
align="center"
|
width="80"
|
>
|
<template slot-scope="scope">
|
{{ scope.row.headOrIdCard }}
|
<el-tooltip
|
v-if="scope.row.errors && scope.row.errors.headOrIdCard"
|
placement="top"
|
>
|
<div slot="content">{{ scope.row.errors.headOrIdCard }}</div>
|
<i
|
class="el-icon-warning"
|
style="color: #e6a23c; margin-left: 5px"
|
></i>
|
</el-tooltip>
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="idCard"
|
label="身份证号"
|
align="center"
|
width="180"
|
>
|
<template slot-scope="scope">
|
{{ scope.row.idCard }}
|
<el-tooltip
|
v-if="scope.row.errors && scope.row.errors.idCard"
|
placement="top"
|
>
|
<div slot="content">{{ scope.row.errors.idCard }}</div>
|
<i
|
class="el-icon-warning"
|
style="color: #e6a23c; margin-left: 5px"
|
></i>
|
</el-tooltip>
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="contact"
|
label="联系电话"
|
align="center"
|
width="120"
|
>
|
<template slot-scope="scope">
|
{{ scope.row.contact }}
|
<el-tooltip
|
v-if="scope.row.errors && scope.row.errors.contact"
|
placement="top"
|
>
|
<div slot="content">{{ scope.row.errors.contact }}</div>
|
<i
|
class="el-icon-warning"
|
style="color: #e6a23c; margin-left: 5px"
|
></i>
|
</el-tooltip>
|
</template>
|
</el-table-column>
|
<el-table-column label="家庭安置人数(人)" align="center">
|
<el-table-column
|
prop="resettlementPeople"
|
label="集体经济组织成员"
|
align="center"
|
width="120"
|
>
|
<template slot-scope="scope">
|
{{ scope.row.resettlementPeople }}
|
<el-tooltip
|
v-if="scope.row.errors && scope.row.errors.resettlementPeople"
|
placement="top"
|
>
|
<div slot="content">
|
{{ scope.row.errors.resettlementPeople }}
|
</div>
|
<i
|
class="el-icon-warning"
|
style="color: #e6a23c; margin-left: 5px"
|
></i>
|
</el-tooltip>
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="additionalPeople"
|
label="非集体经济组织成员"
|
align="center"
|
width="120"
|
>
|
<template slot-scope="scope">
|
{{ scope.row.additionalPeople }}
|
<el-tooltip
|
v-if="scope.row.errors && scope.row.errors.additionalPeople"
|
placement="top"
|
>
|
<div slot="content">
|
{{ scope.row.errors.additionalPeople }}
|
</div>
|
<i
|
class="el-icon-warning"
|
style="color: #e6a23c; margin-left: 5px"
|
></i>
|
</el-tooltip>
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="totalPeople"
|
label="合计"
|
align="center"
|
width="60"
|
>
|
<template slot-scope="scope">
|
{{ scope.row.totalPeople }}
|
<el-tooltip
|
v-if="scope.row.errors && scope.row.errors.totalPeople"
|
placement="top"
|
>
|
<div slot="content">{{ scope.row.errors.totalPeople }}</div>
|
<i
|
class="el-icon-warning"
|
style="color: #e6a23c; margin-left: 5px"
|
></i>
|
</el-tooltip>
|
</template>
|
</el-table-column>
|
</el-table-column>
|
<el-table-column
|
prop="houseName"
|
label="待安置家庭成员姓名"
|
align="center"
|
width="120"
|
>
|
<template slot-scope="scope">
|
{{ scope.row.houseName }}
|
<el-tooltip
|
v-if="scope.row.errors && scope.row.errors.houseName"
|
placement="top"
|
>
|
<div slot="content">{{ scope.row.errors.houseName }}</div>
|
<i
|
class="el-icon-warning"
|
style="color: #e6a23c; margin-left: 5px"
|
></i>
|
</el-tooltip>
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="area"
|
label="待安置人员应安置面积合计(㎡)"
|
align="center"
|
width="120"
|
>
|
<template slot-scope="scope">
|
{{ scope.row.area }}
|
<el-tooltip
|
v-if="scope.row.errors && scope.row.errors.area"
|
placement="top"
|
>
|
<div slot="content">{{ scope.row.errors.area }}</div>
|
<i
|
class="el-icon-warning"
|
style="color: #e6a23c; margin-left: 5px"
|
></i>
|
</el-tooltip>
|
</template>
|
</el-table-column>
|
<el-table-column label="补偿金额(万元)" align="center">
|
<el-table-column
|
prop="firstPayment"
|
label="新建商品住房、商业用房、停车位"
|
align="center"
|
width="100"
|
>
|
<template slot-scope="scope">
|
{{ scope.row.firstPayment }}
|
<el-tooltip
|
v-if="scope.row.errors && scope.row.errors.firstPayment"
|
placement="top"
|
>
|
<div slot="content">{{ scope.row.errors.firstPayment }}</div>
|
<i
|
class="el-icon-warning"
|
style="color: #e6a23c; margin-left: 5px"
|
></i>
|
</el-tooltip>
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="secondPayment"
|
label="二手住房"
|
align="center"
|
width="80"
|
>
|
<template slot-scope="scope">
|
{{ scope.row.secondPayment }}
|
<el-tooltip
|
v-if="scope.row.errors && scope.row.errors.secondPayment"
|
placement="top"
|
>
|
<div slot="content">{{ scope.row.errors.secondPayment }}</div>
|
<i
|
class="el-icon-warning"
|
style="color: #e6a23c; margin-left: 5px"
|
></i>
|
</el-tooltip>
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="totalPayment"
|
label="合计"
|
align="center"
|
width="60"
|
>
|
<template slot-scope="scope">
|
{{ scope.row.totalPayment }}
|
<el-tooltip
|
v-if="scope.row.errors && scope.row.errors.totalPayment"
|
placement="top"
|
>
|
<div slot="content">{{ scope.row.errors.totalPayment }}</div>
|
<i
|
class="el-icon-warning"
|
style="color: #e6a23c; margin-left: 5px"
|
></i>
|
</el-tooltip>
|
</template>
|
</el-table-column>
|
</el-table-column>
|
<el-table-column
|
prop="monthlyPayment"
|
label="25%首付款(万元)"
|
align="center"
|
width="130"
|
>
|
<template slot-scope="scope">
|
{{ scope.row.monthlyPayment }}
|
<el-tooltip
|
v-if="scope.row.errors && scope.row.errors.monthlyPayment"
|
placement="top"
|
>
|
<div slot="content">{{ scope.row.errors.monthlyPayment }}</div>
|
<i
|
class="el-icon-warning"
|
style="color: #e6a23c; margin-left: 5px"
|
></i>
|
</el-tooltip>
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="remainingPayment"
|
label="每季度需支付款项(万元)"
|
align="center"
|
width="120"
|
>
|
<template slot-scope="scope">
|
{{ scope.row.remainingPayment }}
|
<el-tooltip
|
v-if="scope.row.errors && scope.row.errors.remainingPayment"
|
placement="top"
|
>
|
<div slot="content">
|
{{ scope.row.errors.remainingPayment }}
|
</div>
|
<i
|
class="el-icon-warning"
|
style="color: #e6a23c; margin-left: 5px"
|
></i>
|
</el-tooltip>
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="totalPaid"
|
label="过渡补贴(万元)"
|
align="center"
|
width="60"
|
>
|
<template slot-scope="scope">
|
{{ scope.row.totalPaid }}
|
<el-tooltip
|
v-if="scope.row.errors && scope.row.errors.totalPaid"
|
placement="top"
|
>
|
<div slot="content">{{ scope.row.errors.totalPaid }}</div>
|
<i
|
class="el-icon-warning"
|
style="color: #e6a23c; margin-left: 5px"
|
></i>
|
</el-tooltip>
|
</template>
|
</el-table-column>
|
<el-table-column prop="remark" label="备注" align="center" width="60">
|
<template slot-scope="scope">
|
{{ scope.row.remark }}
|
<el-tooltip
|
v-if="scope.row.errors && scope.row.errors.remark"
|
placement="top"
|
>
|
<div slot="content">{{ scope.row.errors.remark }}</div>
|
<i
|
class="el-icon-warning"
|
style="color: #e6a23c; margin-left: 5px"
|
></i>
|
</el-tooltip>
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="difference"
|
label="购房差异情况"
|
align="center"
|
width="60"
|
>
|
<template slot-scope="scope">
|
{{ scope.row.difference }}
|
<el-tooltip
|
v-if="scope.row.errors && scope.row.errors.difference"
|
placement="top"
|
>
|
<div slot="content">{{ scope.row.errors.difference }}</div>
|
<i
|
class="el-icon-warning"
|
style="color: #e6a23c; margin-left: 5px"
|
></i>
|
</el-tooltip>
|
</template>
|
</el-table-column>
|
<el-table-column label="操作" align="center" width="150" fixed="right">
|
<template slot-scope="scope">
|
<el-button
|
size="mini"
|
type="text"
|
@click="handleHouseholdDetail(scope.row)"
|
>详情</el-button
|
>
|
<template v-if="status === '待审核'">
|
<el-button
|
size="mini"
|
type="text"
|
@click="handleHouseholdEdit(scope.row)"
|
>编辑</el-button
|
>
|
<el-button
|
size="mini"
|
type="text"
|
@click="handleHouseholdDelete(scope.row)"
|
>删除</el-button
|
>
|
</template>
|
</template>
|
</el-table-column>
|
</el-table>
|
|
<!-- 分页 -->
|
<div class="pagination-container">
|
<el-pagination
|
background
|
@size-change="handleSizeChange"
|
@current-change="handleCurrentChange"
|
:current-page="queryParams.pageNum"
|
:page-sizes="[10, 20, 30, 50]"
|
:page-size="queryParams.pageSize"
|
layout="total, sizes, prev, pager, next, jumper"
|
:total="total"
|
/>
|
</div>
|
</div>
|
</template>
|
|
<script>
|
import { geDetailTabletList } from "@/api/application-batch";
|
export default {
|
name: "ApplicationBatchDetail",
|
data() {
|
return {
|
batchInfo: {
|
// 批次id
|
id: "",
|
// 批次号
|
batchNumber: "",
|
// 批次状态
|
status: "",
|
// 安置总户数
|
waitFamilyArea: "",
|
// 安置总人数
|
personNum: "",
|
// 补偿资金总额
|
totalAmount: "",
|
},
|
// 加载状态
|
loading: false,
|
// 总条数
|
total: 0,
|
// 表格数据
|
tableData: [],
|
// 查询参数
|
queryParams: {
|
pageNum: 1,
|
pageSize: 10,
|
street: undefined,
|
projectName: undefined,
|
community: undefined,
|
headOrIdCard: undefined,
|
},
|
};
|
},
|
created() {
|
// 从路由获取批次号和状态
|
const { id } = this.$route.query;
|
this.batchInfo = {
|
...this.batchInfo,
|
id: id || "",
|
};
|
this.getList();
|
},
|
methods: {
|
/** 查询列表 */
|
getList() {
|
this.loading = true;
|
// 这里添加实际的API调用获取数据
|
setTimeout(() => {
|
this.loading = false;
|
geDetailTabletList({
|
...this.queryParams,
|
applyId: this.batchInfo.id,
|
}).then((res) => {
|
this.tableData = res.data.records;
|
this.total = res.data.total;
|
this.batchInfo = {
|
...res.data.placementApply,
|
};
|
});
|
}, 500);
|
},
|
/** 搜索按钮操作 */
|
handleQuery() {
|
this.queryParams.pageNum = 1;
|
this.getList();
|
},
|
/** 重置按钮操作 */
|
resetQuery() {
|
this.queryParams = {
|
pageNum: 1,
|
pageSize: 10,
|
street: undefined,
|
projectName: undefined,
|
community: undefined,
|
headOrIdCard: undefined,
|
};
|
this.getList();
|
},
|
/** 返回按钮操作 */
|
goBack() {
|
this.$router.go(-1);
|
},
|
/** 新增安置户信息 */
|
handleAddHousehold() {
|
// 实现新增安置户逻辑
|
},
|
/** 下载导入模板 */
|
handleDownloadTemplate() {
|
// 实现下载模板逻辑
|
},
|
/** 批量导入 */
|
handleBatchImport() {
|
// 实现批量导入逻辑
|
},
|
/** 全部导出 */
|
handleExportAll() {
|
// 实现全部导出逻辑
|
this.$message.success("全部数据导出成功");
|
},
|
/** 问题数据导出 */
|
handleExportIssueData() {
|
// 实现问题数据导出逻辑
|
this.$message.success("问题数据导出成功");
|
},
|
/** 安置户详情 */
|
handleHouseholdDetail(row) {
|
// 实现安置户详情查看逻辑
|
},
|
/** 安置户编辑 */
|
handleHouseholdEdit(row) {
|
// 实现安置户编辑逻辑
|
},
|
/** 安置户删除 */
|
handleHouseholdDelete(row) {
|
this.$confirm("确认删除该安置户信息吗?", "警告", {
|
confirmButtonText: "确定",
|
cancelButtonText: "取消",
|
type: "warning",
|
})
|
.then(() => {
|
// 实现删除逻辑
|
this.$message.success("删除成功");
|
this.getList();
|
})
|
.catch(() => {});
|
},
|
/** 每页显示条数变化 */
|
handleSizeChange(val) {
|
this.queryParams.pageSize = val;
|
this.getList();
|
},
|
/** 当前页变化 */
|
handleCurrentChange(val) {
|
this.queryParams.pageNum = val;
|
this.getList();
|
},
|
},
|
};
|
</script>
|
|
<style scoped>
|
.app-container {
|
padding: 20px;
|
}
|
|
.batch-info {
|
margin-bottom: 20px;
|
}
|
|
.header {
|
display: flex;
|
justify-content: space-between;
|
align-items: center;
|
margin-bottom: 15px;
|
}
|
|
.batch-title {
|
font-size: 18px;
|
font-weight: bold;
|
}
|
|
.info-cards {
|
display: flex;
|
justify-content: space-between;
|
margin-bottom: 20px;
|
}
|
|
.box-card {
|
width: 32%;
|
background-color: #6f82fb;
|
color: white;
|
text-align: center;
|
border-radius: 5px;
|
}
|
|
.card-title {
|
font-size: 22px;
|
margin: 10px 0;
|
}
|
|
.card-desc {
|
font-size: 14px;
|
margin-bottom: 10px;
|
}
|
|
.search-form {
|
margin-bottom: 20px;
|
background-color: #fff;
|
padding: 20px;
|
border-radius: 4px;
|
}
|
|
.mb8 {
|
margin-bottom: 15px;
|
}
|
|
.pagination-container {
|
margin-top: 15px;
|
text-align: right;
|
}
|
</style>
|