From a944d1d90465386b8c47913c3f0945e759b1910a Mon Sep 17 00:00:00 2001
From: 董国庆 <364620639@qq.com>
Date: 星期五, 21 三月 2025 14:25:51 +0800
Subject: [PATCH] 安置申请表调试

---
 src/views/applicationBatchList/components/ApprovalDialog.vue |  519 ++++++++++++++++++++++++++++++--------------------------
 1 files changed, 278 insertions(+), 241 deletions(-)

diff --git a/src/views/applicationBatchList/components/ApprovalDialog.vue b/src/views/applicationBatchList/components/ApprovalDialog.vue
index d44afd1..4c0da69 100644
--- a/src/views/applicationBatchList/components/ApprovalDialog.vue
+++ b/src/views/applicationBatchList/components/ApprovalDialog.vue
@@ -4,13 +4,23 @@
     <div class="approval-content">
       <!-- 左侧表格区域 -->
       <div class="table-container">
-        <el-table :data="tableData" border style="width: 100%" :row-class-name="tableRowClassName">
+        <el-table 
+          v-loading="loading"
+          element-loading-text="加载中..."
+          element-loading-spinner="el-icon-loading"
+          element-loading-background="rgba(255, 255, 255, 0.8)"
+          :data="tableData" 
+          border 
+          style="width: 100%" 
+          :row-class-name="tableRowClassName"
+          height="400"
+        >
           <el-table-column type="index" label="序号" width="50" align="center" />
-          <el-table-column prop="town" label="镇(街道)" align="center" width="80">
+          <el-table-column prop="street" label="镇(街道)" align="center" width="80">
             <template slot-scope="scope">
-              {{ scope.row.town }}
-              <el-tooltip v-if="scope.row.errors && scope.row.errors.town" placement="top">
-                <div slot="content">{{ scope.row.errors.town }}</div>
+              {{ scope.row.street }}
+              <el-tooltip v-if="scope.row.streetWarn" placement="top">
+                <div slot="content">{{ scope.row.streetWarn }}</div>
                 <i class="el-icon-warning" style="color: #e6a23c; margin-left: 5px"></i>
               </el-tooltip>
             </template>
@@ -18,35 +28,35 @@
           <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>
+              <el-tooltip v-if="scope.row.projectNameWarn" placement="top">
+                <div slot="content">{{ scope.row.projectNameWarn }}</div>
                 <i class="el-icon-warning" style="color: #e6a23c; margin-left: 5px"></i>
               </el-tooltip>
             </template>
           </el-table-column>
-          <el-table-column prop="village" label="所在村(社区)" align="center" width="100">
+          <el-table-column prop="community" label="所在村(社区)" align="center" width="100">
             <template slot-scope="scope">
-              {{ scope.row.village }}
-              <el-tooltip v-if="scope.row.errors && scope.row.errors.village" placement="top">
-                <div slot="content">{{ scope.row.errors.village }}</div>
+              {{ scope.row.community }}
+              <el-tooltip v-if="scope.row.communityWarn" placement="top">
+                <div slot="content">{{ scope.row.communityWarn }}</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>
+              {{ scope.row.demolitionTime }}
+              <el-tooltip v-if="scope.row.demolitionTimeWarn" placement="top">
+                <div slot="content">{{ scope.row.demolitionTimeWarn }}</div>
                 <i class="el-icon-warning" style="color: #e6a23c; margin-left: 5px"></i>
               </el-tooltip>
             </template>
           </el-table-column>
-          <el-table-column prop="owner" label="产主姓名" align="center" width="80">
+          <el-table-column prop="householdHead" label="户主名称" align="center" width="80">
             <template slot-scope="scope">
-              {{ scope.row.owner }}
-              <el-tooltip v-if="scope.row.errors && scope.row.errors.owner" placement="top">
-                <div slot="content">{{ scope.row.errors.owner }}</div>
+              {{ scope.row.householdHead }}
+              <el-tooltip v-if="scope.row.householdHeadWarn" placement="top">
+                <div slot="content">{{ scope.row.householdHeadWarn }}</div>
                 <i class="el-icon-warning" style="color: #e6a23c; margin-left: 5px"></i>
               </el-tooltip>
             </template>
@@ -54,126 +64,124 @@
           <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 }}
+              <el-tooltip v-if="scope.row.mobileWarn" placement="top">
+                <div slot="content">{{ scope.row.mobileWarn }}</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">
+          <el-table-column label="本次安置人数(人)" align="center">
+            <el-table-column prop="currentCollectiveNum" 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>
+                {{ scope.row.currentCollectiveNum }}
+                <el-tooltip v-if="scope.row.currentCollectiveNumWarn" placement="top">
+                  <div slot="content">{{ scope.row.currentCollectiveNumWarn }}</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">
+            <el-table-column prop="currentNoCollectiveNum" 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>
+                {{ scope.row.currentNoCollectiveNum }}
+                <el-tooltip v-if="scope.row.currentNoCollectiveNumWarn" placement="top">
+                  <div slot="content">{{ scope.row.currentNoCollectiveNumWarn }}</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">
+            <el-table-column prop="currentCount" 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>
+                {{ scope.row.currentCount }}
+                <el-tooltip v-if="scope.row.currentCountWarn" placement="top">
+                  <div slot="content">{{ scope.row.currentCountWarn }}</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="waitFamilyNames" 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>
+              {{ 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 prop="area" label="待安置人员应安置面积合计(㎡)" align="center" width="120">
+          <el-table-column prop="waitFamilyArea" 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>
+                {{ scope.row.compensationNewAmount }}
+                <el-tooltip v-if="scope.row.compensationNewAmountWarn" placement="top">
+                  <div slot="content">{{ scope.row.compensationNewAmountWarn }}</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">
+            <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>
+                {{ scope.row.compensationOldAmount }}
+                <el-tooltip v-if="scope.row.compensationOldAmountWarn" placement="top">
+                  <div slot="content">{{ scope.row.compensationOldAmountWarn }}</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">
+            <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>
+              {{ scope.row.downPaymentAmount }}
+              <el-tooltip v-if="scope.row.downPaymentAmountWarn" placement="top">
+                <div slot="content">{{ scope.row.downPaymentAmountWarn }}</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">
+          <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">
-                <div slot="content">
-                  {{ scope.row.errors.remainingPayment }}
-                </div>
+              {{ scope.row.quarterPayAmount }}
+              <el-tooltip v-if="scope.row.quarterPayAmountWarn" placement="top">
+                <div slot="content">{{ 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>
@@ -181,17 +189,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>
+              <el-tooltip v-if="scope.row.remarkWarn" placement="top">
+                <div slot="content">{{ scope.row.remarkWarn }}</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>
+              {{ scope.row.situation }}
+              <el-tooltip v-if="scope.row.situationWarn" placement="top">
+                <div slot="content">{{ scope.row.situationWarn }}</div>
                 <i class="el-icon-warning" style="color: #e6a23c; margin-left: 5px"></i>
               </el-tooltip>
             </template>
@@ -211,12 +219,12 @@
               <div class="timeline-content info-box">
                 <div class="info-line">
                   <div class="approver-info">
-                    <div class="approver-title">审批人:</div>
-                    <div class="approver-name">{{ approver }}</div>
+                    <div class="approver-title">提交人:</div>
+                    <div class="approver-name">{{ approvalInfo.createUser }}</div>
                   </div>
                   <div class="approval-time-info">
-                    <div class="approval-time-title">审批时间:</div>
-                    <div class="approval-time">{{ approvalTime }}</div>
+                    <div class="approval-time-title">提交时间:</div>
+                    <div class="approval-time">{{ approvalInfo.createTime }}</div>
                   </div>
                 </div>
               </div>
@@ -240,12 +248,12 @@
               <div class="timeline-content info-box">
                 <div class="info-line">
                   <div class="approver-info">
-                    <div class="approver-title">经办人:</div>
-                    <div class="approver-name">{{ operatorName }}</div>
+                    <div class="approver-title">提交人:</div>
+                    <div class="approver-name">{{ approvalInfo.createUser }}</div>
                   </div>
                   <div class="approval-time-info">
                     <div class="approval-time-title">提交时间:</div>
-                    <div class="approval-time">{{ submitTime }}</div>
+                    <div class="approval-time">{{ approvalInfo.createTime }}</div>
                   </div>
                 </div>
               </div>
@@ -259,11 +267,11 @@
                 <div class="info-line">
                   <div class="approver-info">
                     <div class="approver-title">审核人:</div>
-                    <div class="approver-name">{{ auditorName }}</div>
+                    <div class="approver-name">{{ approvalInfo.approveName }}</div>
                   </div>
                   <div class="approval-time-info">
                     <div class="approval-time-title">审核时间:</div>
-                    <div class="approval-time">{{ auditTime }}</div>
+                    <div class="approval-time">{{ approvalInfo.approveTime }}</div>
                   </div>
                 </div>
               </div>
@@ -282,20 +290,33 @@
 
     <!-- 审核结果区域 -->
     <div class="audit-section">
-      <div class="audit-result" v-if="type === 'audit'">
-        <div class="result-title">审核结果</div>
+      <div class="audit-result">
+        <div class="result-label">审核结果</div>
         <div class="result-options">
-          <el-radio-group v-model="form.auditResult">
-            <el-radio label="pass">通过</el-radio>
-            <el-radio label="reject">驳回</el-radio>
-          </el-radio-group>
+          <el-button-group>
+            <el-button 
+              :disabled="type === 'detail'"
+              :type="form.auditResult === '通过' ? 'primary' : ''" 
+              @click="form.auditResult = '通过'"
+            >通过</el-button>
+            <el-button 
+              :disabled="type === 'detail'"
+              :type="form.auditResult === '驳回' ? 'primary' : ''" 
+              @click="form.auditResult = '驳回'"
+            >驳回</el-button>
+          </el-button-group>
         </div>
       </div>
 
       <div class="audit-comment">
-        <div class="comment-title">审批意见</div>
-        <el-input type="textarea" :rows="4" placeholder="请输入审批意见" v-model="form.auditComment"
-          :disabled="type === 'detail'"></el-input>
+        <div class="comment-label">审批意见</div>
+        <el-input 
+          type="textarea" 
+          :rows="4" 
+          placeholder="请输入审批意见" 
+          v-model="form.auditComment"
+          :disabled="type === 'detail'"
+        ></el-input>
       </div>
     </div>
 
@@ -308,6 +329,7 @@
 </template>
 
 <script>
+import { geDetailTabletList,approve } from "@/api/application-batch"
 export default {
   name: "ApprovalDialog",
   props: {
@@ -322,148 +344,73 @@
         return ["audit", "detail"].indexOf(value) !== -1;
       },
     },
-    rowData: {
-      type: Object,
-      default: () => ({}),
-    },
+    id: {
+      type: [Number],
+      required: true,
+      default: 0
+    }
   },
   data() {
     return {
+      loading: false,
       dialogVisible: false,
-      hasWarning: true,
-      approver: "李四",
-      approvalTime: "2025-1-17 09:35:24",
-      operatorName: "张三",
-      submitTime: "2025-1-17 09:35:24",
-      auditorName: "王五",
-      auditTime: "2025-1-17 09:35:24",
-      approvalStatus: "", // 'passed', 'rejected', ''
+      hasWarning: false,
+      tableData: [],
       form: {
-        auditResult: "pass",
+        auditResult: "通过",
         auditComment: "",
       },
-      tableData: [
-        {
-          town: "松花社区",
-          projectName: "李家窑水库工程征地拆迁",
-          village: "松花社区",
-          time: "",
-          owner: "陈向荣",
-          idCard: "220102198512345678",
-          contact: "",
-          resettlementPeople: 1,
-          additionalPeople: 2,
-          totalPeople: 3,
-          houseName: "陈向荣、李辉",
-          ownerName: "",
-          area: "160",
-          totalCompensation: "54",
-          firstPayment: "10",
-          secondPayment: "46",
-          totalPayment: "30",
-          monthlyPayment: "38",
-          remainingPayment: "69",
-          totalPaid: "",
-          hasError: false,
-        },
-        {
-          town: "松花社区",
-          projectName: "李家窑水库工程征地拆迁",
-          village: "松花社区",
-          time: "",
-          owner: "席娟",
-          idCard: "330105197803120987",
-          contact: "",
-          resettlementPeople: 1,
-          additionalPeople: 1,
-          totalPeople: 2,
-          houseName: "周吉彬",
-          ownerName: "",
-          area: "215",
-          totalCompensation: "43",
-          firstPayment: "14",
-          secondPayment: "2",
-          totalPayment: "81",
-          monthlyPayment: "41",
-          remainingPayment: "17",
-          totalPaid: "",
-          hasError: true,
-          errors: {
-            idCard: "身份证号不合法",
-            totalPayment: "金额计算异常",
-          },
-        },
-        {
-          town: "清泉村",
-          projectName:
-            "成都绿道二环线生态区公园工程(含川师)征地拆迁及前期公示",
-          village: "清泉村",
-          time: "",
-          owner: "周忠心",
-          idCard: "440203199000999876",
-          contact: "",
-          resettlementPeople: 1,
-          additionalPeople: 1,
-          totalPeople: 2,
-          houseName: "周忠心、杨春云",
-          ownerName: "",
-          area: "103",
-          totalCompensation: "88",
-          firstPayment: "42",
-          secondPayment: "14",
-          totalPayment: "61",
-          monthlyPayment: "35",
-          remainingPayment: "26",
-          totalPaid: "",
-          hasError: false,
-        },
-        {
-          town: "清泉村",
-          projectName:
-            "成都绿道二环线生态区公园工程(含川师)征地拆迁及前期公示",
-          village: "清泉村",
-          time: "",
-          owner: "李辉",
-          idCard: "440203199000999876",
-          contact: "",
-          resettlementPeople: 2,
-          additionalPeople: 1,
-          totalPeople: 3,
-          houseName: "王强",
-          ownerName: "",
-          area: "302",
-          totalCompensation: "49",
-          firstPayment: "28",
-          secondPayment: "10",
-          totalPayment: "56",
-          monthlyPayment: "29",
-          remainingPayment: "4",
-          totalPaid: "",
-          hasError: false,
-        },
-      ],
+      // 审批信息
+      approvalInfo: {
+        approver: "",
+        approvalTime: "",
+        operatorName: "",
+        submitTime: "",
+        auditorName: "",
+        auditTime: ""
+      }
     };
   },
   watch: {
     visible(val) {
       this.dialogVisible = val;
+      if (val) {
+        this.getTableData();
+      }
     },
     dialogVisible(val) {
       this.$emit("update:visible", val);
-    },
-    rowData: {
-      handler(newVal) {
-        if (newVal && Object.keys(newVal).length > 0) {
-          // 如果有传入数据,可以在这里处理
-        }
-      },
-      immediate: true,
-    },
+    }
   },
   methods: {
-    tableRowClassName({ row, rowIndex }) {
+    async getTableData() {
+      this.loading = true;
+      try {
+        const res = await geDetailTabletList({
+          applyId: this.id,
+          pageNum: 1,
+          pageSize: 999
+        });
+        if (res.code === 200) {
+          this.tableData = res.data.records.map(item => ({
+            ...item,
+            hasError: Object.keys(item).some(key => key.endsWith('Warn') && item[key])
+          }));
+          this.hasWarning = this.tableData.some(item => item.hasError);
+          this.approvalInfo = {...res.data.placementApply};
+          this.form.auditResult = this.approvalInfo.status === 1 ? '通过' : '驳回';
+          this.form.auditComment = this.approvalInfo.reason;
+        }
+      } catch (error) {
+        console.error('获取表格数据失败:', error);
+        this.$message.error('获取数据失败,请稍后重试');
+      } finally {
+        this.loading = false;
+      }
+    },
+    tableRowClassName({ row }) {
       if (row.hasError) {
-        return "error-row";
+        return "warning-row";
       }
       return "";
     },
@@ -471,18 +418,36 @@
       this.dialogVisible = false;
       this.resetForm();
     },
-    submitAudit() {
-      // 提交审核
-      this.$emit("audit-submit", {
-        result: this.form.auditResult,
-        comment: this.form.auditComment,
-      });
-      this.dialogVisible = false;
-      this.resetForm();
+    async submitAudit() {
+      if (!this.form.auditComment.trim()) {
+        this.$message.warning("请输入审批意见");
+        return;
+      }
+      
+      const params = {
+        applyId: Number(this.id),  // 确保是数字类型
+        reason: this.form.auditComment.trim(),
+        status: Number(this.form.auditResult === '通过' ? 1 : 2)  // 确保是数字类型
+      };
+      
+      try {
+        const res = await approve(params);
+        if (res.code === 200) {
+          this.$message.success("审批成功");
+          this.$emit("refresh");
+          this.dialogVisible = false;
+          this.resetForm();
+        } else {
+          this.$message.error(res.msg || "审批失败");
+        }
+      } catch (error) {
+        console.error('审批失败:', error);
+        this.$message.error(error?.response?.data?.message || "审批失败");
+      }
     },
     resetForm() {
       this.form = {
-        auditResult: "pass",
+        auditResult: "通过",
         auditComment: "",
       };
     },
@@ -499,7 +464,8 @@
 .table-container {
   flex: 1;
   margin-right: 20px;
-  overflow-x: auto;
+  overflow: hidden;
+  position: relative;
 }
 
 .approval-info {
@@ -594,26 +560,97 @@
 
 .audit-section {
   margin-top: 20px;
+  padding: 0 20px;
+  display: flex;
+  /* align-items: center; */
+  width: 100%;
+  margin-top: 20px;
 }
 
 .audit-result {
-  margin-bottom: 15px;
+  margin-bottom: 20px;
+  display: flex;
+  /* align-items: center; */
 }
 
-.result-title,
-.comment-title {
-  font-weight: bold;
-  margin-bottom: 10px;
+.result-label,
+.comment-label {
+  font-size: 14px;
+  color: #606266;
+  margin-right: 15px;
+  min-width: 70px;
+}
+
+.result-options {
+  flex: 1;
+}
+
+.result-options .el-button {
+  width: 80px;
+}
+
+.audit-comment {
+  display: flex;
+  align-items: flex-start;
+  flex:1;
+  padding-left: 60px;
+}
+
+.audit-comment .el-textarea {
+  flex: 1;
+}
+
+.el-button-group {
+  display: inline-block;
+}
+
+.el-button-group .el-button {
+  margin-right: 0;
+}
+
+.el-button-group .el-button:first-child {
+  border-right: 1px solid #DCDFE6;
 }
 
 .dialog-footer {
   text-align: right;
 }
+
+/* 自定义滚动条样式 */
+.el-table {
+  max-height: 400px;
+}
+
+.el-table__body-wrapper::-webkit-scrollbar {
+  width: 8px;
+  height: 8px;
+}
+
+.el-table__body-wrapper::-webkit-scrollbar-thumb {
+  background-color: #dcdfe6;
+  border-radius: 4px;
+}
+
+.el-table__body-wrapper::-webkit-scrollbar-track {
+  background-color: #f5f7fa;
+}
+
+/* loading样式优化 */
+::v-deep .el-loading-spinner .el-icon-loading {
+  font-size: 30px;
+  color: #409EFF;
+}
+
+::v-deep .el-loading-spinner .el-loading-text {
+  font-size: 14px;
+  margin-top: 8px;
+  color: #409EFF;
+}
 </style>
 
 <style>
 /* 全局样式 */
-.error-row {
-  background-color: #ffecec !important;
+.warning-row {
+  background-color: #faa2a2 !important;
 }
 </style>
\ No newline at end of file

--
Gitblit v1.7.1