From 89946bea834a200b7edc9a8fbdbb12f48d7d152a Mon Sep 17 00:00:00 2001
From: pyt <626651354@qq.com>
Date: 星期五, 21 三月 2025 14:39:33 +0800
Subject: [PATCH] Merge branch 'main' of http://120.76.84.145:10101/gitblit/r/H5/chongzhouResettle

---
 src/views/applicationBatchList/detail.vue |  319 ++++++++++++++++++++++++++++++----------------------
 1 files changed, 184 insertions(+), 135 deletions(-)

diff --git a/src/views/applicationBatchList/detail.vue b/src/views/applicationBatchList/detail.vue
index 91dd586..4ba2081 100644
--- a/src/views/applicationBatchList/detail.vue
+++ b/src/views/applicationBatchList/detail.vue
@@ -1,5 +1,5 @@
 <template>
-  <div class="app-container">
+  <div class="app-container" v-loading="loading" element-loading-text="加载中...">
     <!-- 头部信息卡片 -->
     <div class="batch-info">
       <div class="header">
@@ -75,171 +75,123 @@
       <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">
+      <el-table-column prop="demolitionTime" 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>
+          {{ scope.row.demolitionTime }}
         </template>
       </el-table-column>
-      <el-table-column prop="headOrIdCard" label="产主姓名" align="center" width="80">
+      <el-table-column prop="householdHead" 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>
+          {{ scope.row.householdHead }}
         </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>
+          <el-tooltip v-if="scope.row.idCardExistsWarn == 1" placement="top">
+            <div slot="content">{{ "身份证不在安置库" }}</div>
+            <i class="el-icon-warning" style="color: #e6a23c; margin-left: 5px"></i>
+          </el-tooltip>
+          <el-tooltip v-if="scope.row.idCardNoWarn == 1" placement="top">
+            <div slot="content">{{ "身份证重复" }}</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">
+      <el-table-column prop="mobile" 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>
+          {{ scope.row.mobile }}
+        </template>
+      </el-table-column>
+      <el-table-column label="本次安置人数(人)" align="center">
+        <el-table-column prop="currentCollectiveNum" label="集体经济组织成员" align="center" width="120">
+          <template slot-scope="scope">
+            {{ scope.row.currentCollectiveNum }}
+          </template>
+        </el-table-column>
+        <el-table-column prop="currentNoCollectiveNum" label="非集体经济组织成员" align="center" width="120">
+          <template slot-scope="scope">
+            {{ scope.row.currentNoCollectiveNum }}
+          </template>
+        </el-table-column>
+        <el-table-column prop="currentCount" label="合计" align="center" width="60">
+          <template slot-scope="scope">
+            {{ scope.row.currentCount }}
+          </template>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column prop="waitFamilyNames" label="待安置家庭成员姓名" align="center" width="120">
+        <template slot-scope="scope">
+          {{ scope.row.waitFamilyNames }}
+          <el-tooltip v-if="scope.row.waitFamilyNamesWarn" placement="top">
+            <div slot="content">{{ scope.row.waitFamilyNamesWarn }}</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">
+      <el-table-column prop="waitFamilyArea" 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>
+          {{ scope.row.waitFamilyArea }}
+          <el-tooltip v-if="scope.row.waitFamilyAreaWarn" placement="top">
+            <div slot="content">{{ scope.row.waitFamilyAreaWarn }}</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">
+        <el-table-column prop="compensationNewAmount" 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>
+            {{ scope.row.compensationNewAmount }}
           </template>
         </el-table-column>
-        <el-table-column prop="secondPayment" label="二手住房" align="center" width="80">
+        <el-table-column prop="compensationOldAmount" 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>
+            {{ scope.row.compensationOldAmount }}
           </template>
         </el-table-column>
-        <el-table-column prop="totalPayment" label="合计" align="center" width="60">
+        <el-table-column prop="compensationSum" 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>
+            {{ scope.row.compensationSum }}
+            <el-tooltip v-if="scope.row.compensationSumWarn" placement="top">
+              <div slot="content">{{ scope.row.compensationSumWarn }}</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">
+      <el-table-column prop="downPaymentAmount" 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>
+          {{ scope.row.downPaymentAmount }}
         </template>
       </el-table-column>
-      <el-table-column prop="remainingPayment" label="每季度需支付款项(万元)" align="center" width="120">
+      <el-table-column prop="quarterPayAmount" 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">
+          {{ scope.row.quarterPayAmount }}
+          <el-tooltip v-if="scope.row.quarterPayAmountWarn" placement="top">
             <div slot="content">
-              {{ scope.row.errors.remainingPayment }}
+              {{ scope.row.quarterPayAmountWarn }}
             </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">
+      <el-table-column prop="subsidyAmount" 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>
+          {{ scope.row.subsidyAmount }}
+          <el-tooltip v-if="scope.row.subsidyAmountWarn" placement="top">
+            <div slot="content">{{ scope.row.subsidyAmountWarn }}</div>
             <i class="el-icon-warning" style="color: #e6a23c; margin-left: 5px"></i>
           </el-tooltip>
         </template>
@@ -247,25 +199,17 @@
       <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">
+      <el-table-column prop="situation" 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>
+          {{ scope.row.situation }}
         </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 === '待审核'">
+          <template v-if="batchInfo.status == '0'">
             <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>
@@ -279,13 +223,31 @@
         :current-page="queryParams.pageNum" :page-sizes="[10, 20, 30, 50]" :page-size="queryParams.pageSize"
         layout="total, sizes, prev, pager, next, jumper" :total="total" />
     </div>
+
+    <!-- 上传组件 -->
+    <upload-dialog ref="uploadDialog" :info="batchInfo" :visible.sync="uploadDialogVisible"
+      @success="handleUploadSuccess" />
+
+    <!-- 详情弹窗 -->
+    <DetailDialog 
+      :visible.sync="detailDialogVisible"
+      :id="currentId"
+    />
   </div>
 </template>
 
 <script>
-import { geDetailTabletList } from "@/api/application-batch";
+import { geDetailTabletList,delDetail } from "@/api/application-batch";
+import { downLoad, exportExcell } from "@/utils";
+import UploadDialog from "./components/UploadDialog.vue";
+import DetailDialog from './components/DetailDialog.vue'
+
 export default {
   name: "ApplicationBatchDetail",
+  components: {
+    UploadDialog,
+    DetailDialog
+  },
   data() {
     return {
       batchInfo: {
@@ -304,6 +266,8 @@
       },
       // 加载状态
       loading: false,
+      // 上传组件
+      uploadDialogVisible: false,
       // 总条数
       total: 0,
       // 表格数据
@@ -317,6 +281,10 @@
         community: undefined,
         headOrIdCard: undefined,
       },
+      // 详情弹窗
+      detailDialogVisible: false,
+      // 当前记录的ID
+      currentId: "",
     };
   },
   created() {
@@ -332,20 +300,20 @@
     /** 查询列表 */
     getList() {
       this.loading = true;
-      // 这里添加实际的API调用获取数据
-      setTimeout(() => {
-        this.loading = false;
-        geDetailTabletList({
-          ...this.queryParams,
-          applyId: this.batchInfo.id,
-        }).then((res) => {
+      geDetailTabletList({
+        ...this.queryParams,
+        applyId: this.batchInfo.id,
+      })
+        .then((res) => {
           this.tableData = res.data.records;
           this.total = res.data.total;
           this.batchInfo = {
             ...res.data.placementApply,
           };
+        })
+        .finally(() => {
+          this.loading = false;
         });
-      }, 500);
     },
     /** 搜索按钮操作 */
     handleQuery() {
@@ -371,32 +339,75 @@
     /** 新增安置户信息 */
     handleAddHousehold() {
       // 实现新增安置户逻辑
+      this.$router.push({
+        path: "/applicationBatchList/detailInfo",
+        query: {
+          parentId: this.batchInfo.id,
+          type: "add",
+        },
+      });
     },
     /** 下载导入模板 */
     handleDownloadTemplate() {
       // 实现下载模板逻辑
+      downLoad("/placement-apply/download-template", "安置申请表.xlsx");
     },
     /** 批量导入 */
     handleBatchImport() {
       // 实现批量导入逻辑
+      this.uploadDialogVisible = true;
     },
     /** 全部导出 */
-    handleExportAll() {
-      // 实现全部导出逻辑
-      this.$message.success("全部数据导出成功");
+    async handleExportAll() {
+      // 实现全部导出逻辑  /api/placement-apply/problem-export
+      let res = await exportExcell(
+        "安置数据表.xlsx",
+        {...this.queryParams,applyId:this.batchInfo.id},
+        "/placement-apply/exports"
+      );
+      if (res) {
+        this.$message.success("全部数据导出成功");
+      }
     },
     /** 问题数据导出 */
-    handleExportIssueData() {
+    async handleExportIssueData() {
       // 实现问题数据导出逻辑
-      this.$message.success("问题数据导出成功");
+      let res = await exportExcell(
+        "安置数据表.xlsx",
+        {...this.queryParams,applyId:this.batchInfo.id},
+        "/placement-apply/problem-export"
+      );
+      if (res) {
+        this.$message.success("问题数据导出成功");
+      }
     },
     /** 安置户详情 */
     handleHouseholdDetail(row) {
-      // 实现安置户详情查看逻辑
+      if(this.batchInfo.status == '0'){
+        this.$router.push({
+          path: "/applicationBatchList/detailInfo",
+          query: {
+            parentId: this.batchInfo.id,
+            type: "detail",
+            id: row.id,
+          },
+        });
+      }else{
+        this.currentId = row.id;
+        this.detailDialogVisible = true;
+      }
     },
     /** 安置户编辑 */
     handleHouseholdEdit(row) {
       // 实现安置户编辑逻辑
+      this.$router.push({
+        path: "/applicationBatchList/detailInfo",
+        query: {
+          parentId: this.batchInfo.id,
+          type: "edit",
+          id: row.id,
+        },
+      });
     },
     /** 安置户删除 */
     handleHouseholdDelete(row) {
@@ -407,8 +418,12 @@
       })
         .then(() => {
           // 实现删除逻辑
-          this.$message.success("删除成功");
-          this.getList();
+          delDetail({id:row.id}).then(res=>{
+            if(res){
+              this.$message.success("删除成功");
+              this.getList();
+            }
+          })
         })
         .catch(() => { });
     },
@@ -421,6 +436,23 @@
     handleCurrentChange(val) {
       this.queryParams.pageNum = val;
       this.getList();
+    },
+    /** 设置行的className */
+    tableRowClassName({ row }) {
+      console.log(row, "11111111111");
+      if (row.compensationAmountWarn === 1) {
+        return "warning-row";
+      }
+      return "";
+    },
+    /** 上传成功 */
+    handleUploadSuccess() {
+      this.uploadDialogVisible = false;
+      this.getList();
+      this.$message({
+        type: "success",
+        message: "导入成功!",
+      });
     },
   },
 };
@@ -486,4 +518,21 @@
   margin-top: 15px;
   text-align: right;
 }
+
+::v-deep .warning-row {
+  background-color: #faa2a2 !important;
+}
+
+/* ::v-deep .warning-row:hover > td {
+  background-color: #faa2a2 !important;
+}
+
+::v-deep .warning-row .el-button--text {
+  color: #000 !important;
+}
+
+::v-deep .warning-row .el-button--text:hover {
+  color: #000 !important;
+  background-color: #faa2a2 !important;
+} */
 </style>
\ No newline at end of file

--
Gitblit v1.7.1