董国庆
2025-03-24 4ab195fc124abcefeb82601f8d0124c0ee4713b6
Merge branch 'main' of http://120.76.84.145:10101/gitblit/r/H5/chongzhouResettle
8个文件已修改
1742 ■■■■■ 已修改文件
src/api/placement-details.js 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/placement-batch/addResettle.vue 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/placement-batch/applayPerson.vue 505 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/placement-batch/components/ApprovalDialog.vue 574 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/placement-batch/components/exportMoneyApplay.vue 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/placement-batch/index.vue 71 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/placement-batch/person.vue 239 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/placement-details.js
@@ -34,4 +34,85 @@
      method: 'post',
      data
    })
  }
  }
  //安置批次资金记录删除
  export function deletePlacementBatchMoney(data) {
    return request({
      url: '/placement-batch/asset-del',
      method: 'post',
      data
    })
  }
  //安置批次购房记录删除
  export function deletePlacementBatchHouse(data) {
    return request({
      url: '/placement-batch/household-del',
      method: 'post',
      data
    })
  }
  //安置批次资金记录新增
  export function addPlacementBatchMoney(data) {
    return request({
      url: '/placement-batch/asset-add',
      method: 'post',
      data
    })
  }
  //安置批次资金记录修改
  export function updatePlacementBatchMoney(data) {
    return request({
      url: '/placement-batch/asset-edit',
      method: 'post',
      data
    })
  }
  //安置批次资金记录详情
  export function getPlacementBatchMoneyDetail(data) {
    return request({
      url: '/placement-batch/asset-detail',
      method: 'post',
      data
    })
  }
  //安置批次购房记录新增
  export function addPlacementBatchHouse(data) {
    return request({
      url: '/placement-batch/household-add',
      method: 'post',
      data
    })
  }
  //安置批次购房记录修改
  export function updatePlacementBatchHouse(data) {
    return request({
      url: '/placement-batch/household-edit',
      method: 'post',
      data
    })
  }
  //安置批次购房记录详情
  export function getPlacementBatchHouseDetail(data) {
    return request({
      url: '/placement-batch/household-detail',
      method: 'post',
      data
    })
  }
  //安置批次审核
  export function auditPlacementBatch(data) {
    return request({
      url: '/placement-batch/approve',
      method: 'post',
      data
    })
  }
src/router/index.js
@@ -91,11 +91,36 @@
        path: 'addResettle',
        component: () => import('@/views/placement-batch/addResettle'),
        name: 'AddResettle',
        meta: { title: '新增安置户信息', activeMenu: '/placement-batch/list' }
      }
    ]
  },
  {
    path: '/placement/batch',
    component: Layout,
    hidden: true,
    children: [
      {
        path: 'editResettle',
        component: () => import('@/views/placement-batch/addResettle'),
        name: 'editResettle',
        meta: { title: '编辑安置户信息', activeMenu: '/placement-batch/list' }
      }
    ]
  },
  {
    path: '/placement/batch',
    component: Layout,
    hidden: true,
    children: [
      {
        path: 'resettleDetail',
        component: () => import('@/views/placement-batch/addResettle'),
        name: 'ResettleDetail',
        meta: { title: '安置户信息详情', activeMenu: '/placement-batch/list' }
      }
    ]
  },
  {
    path: '/placement/batch',
    component: Layout,
@@ -109,7 +134,32 @@
      }
    ]
  },
  {
    path: '/placement/batch',
    component: Layout,
    hidden: true,
    children: [
      {
        path: 'editApplayPerson',
        component: () => import('@/views/placement-batch/applayPerson'),
        name: 'EditApplayPerson',
        meta: { title: '编辑安置户申请详情', activeMenu: '/placement-batch/list' }
      }
    ]
  },
  {
    path: '/placement/batch',
    component: Layout,
    hidden: true,
    children: [
      {
        path: 'applayPersonDetail',
        component: () => import('@/views/placement-batch/applayPerson'),
        name: 'applayPersonDetail',
        meta: { title: '安置户申请详情', activeMenu: '/placement-batch/list' }
      }
    ]
  },
  // {
  //   path: '/user',
src/views/placement-batch/addResettle.vue
@@ -7,19 +7,24 @@
                    <el-row :gutter="20">
                        <el-col :span="8">
                            <el-form-item label="拆迁项目名称" prop="projectName">
                                <el-input style="width: 200px;" v-model="form.projectName" placeholder="请输入"
                                <el-input :disabled="$route.query.type == 'detail'" style="width: 200px;" v-model="form.projectName" placeholder="请输入"
                                    clearable />
                            </el-form-item>
                        </el-col>
                        <el-col :span="8">
                            <el-form-item label="所在村(社区)" prop="village">
                                <el-input style="width: 200px;"
                                 v-model="form.village" placeholder="请输入" clearable />
                            <el-form-item label="镇(街道)" prop="street">
                                <el-input :disabled="$route.query.type == 'detail'" style="width: 200px;" v-model="form.street" placeholder="请输入"
                                    clearable />
                            </el-form-item>
                        </el-col>
                        <el-col :span="8">
                            <el-form-item label="户主姓名" prop="householderName">
                                <el-input style="width: 200px;" v-model="form.householderName" placeholder="请输入"
                            <el-form-item label="所在村(社区)" prop="community">
                                <el-input :disabled="$route.query.type == 'detail'" style="width: 200px;" v-model="form.community" placeholder="请输入" clearable />
                            </el-form-item>
                        </el-col>
                        <el-col :span="8">
                            <el-form-item label="户主姓名" prop="householdHead">
                                <el-input :disabled="$route.query.type == 'detail'" style="width: 200px;" v-model="form.householdHead" placeholder="请输入"
                                    clearable />
                            </el-form-item>
                        </el-col>
@@ -28,21 +33,21 @@
                    <el-row :gutter="20">
                        <el-col :span="8">
                            <el-form-item label="户主身份号" prop="idCard">
                                <el-input style="width: 200px;" v-model="form.idCard" placeholder="请输入" clearable />
                                <el-input :disabled="$route.query.type == 'detail'" style="width: 200px;" v-model="form.idCard" placeholder="请输入" clearable />
                            </el-form-item>
                        </el-col>
                        <el-col :span="8">
                            <el-form-item label="应安置人数" prop="familySize">
                                <el-input v-model="form.familySize" :min="1" :controls="false"
                            <el-form-item label="应安置人数" prop="resettledNum">
                                <el-input :disabled="$route.query.type == 'detail'" v-model="form.resettledNum" :controls="false"
                                    controls-position="right" style="width: 200px;">
                                    <template slot="append">人</template>
                                </el-input>
                            </el-form-item>
                        </el-col>
                        <el-col :span="8">
                            <el-form-item label="所有家庭成员应安置面积" prop="totalArea">
                                <el-input style="width: 200px;" v-model="form.totalArea" :controls="false"
                                    :min="0" :precision="2" controls-position="right">
                            <el-form-item label="所有家庭成员应安置面积" prop="resettledArea">
                                <el-input :disabled="$route.query.type == 'detail'" style="width: 200px;" v-model="form.resettledArea" :controls="false"
                                    >
                                    <template slot="append">㎡</template>
                                </el-input>
                            </el-form-item>
@@ -55,17 +60,17 @@
                    <div class="section-title">补偿金额标准</div>
                    <el-row :gutter="20">
                        <el-col :span="12">
                            <el-form-item label="新建商品住房/商业用房/停车位" prop="newBuildingStandard">
                                <el-input v-model="form.newBuildingStandard" :min="0" :controls="false"
                                    :precision="2" controls-position="right" style="width: 200px;">
                            <el-form-item label="新建商品住房/商业用房/停车位" prop="priceNewAmount">
                                <el-input :disabled="$route.query.type == 'detail'" v-model="form.priceNewAmount" :min="0" :controls="false"
                                    style="width: 200px;">
                                    <template slot="append">万元</template>
                                </el-input>
                            </el-form-item>
                        </el-col>
                        <el-col :span="12">
                            <el-form-item label="二手住房" prop="secondHandStandard">
                                <el-input v-model="form.secondHandStandard" :min="0" :controls="false"
                                    :precision="2" controls-position="right" style="width: 200px;">
                            <el-form-item label="二手住房" prop="priceOldAmount">
                                <el-input :disabled="$route.query.type == 'detail'" v-model="form.priceOldAmount" :min="0" :controls="false"
                                    style="width: 200px;">
                                    <template slot="append">万元</template>
                                </el-input>
                            </el-form-item>
@@ -78,25 +83,25 @@
                    <div class="section-title">补偿金额</div>
                    <el-row :gutter="20">
                        <el-col :span="8">
                            <el-form-item label="补偿总金额" prop="totalAmount">
                                <el-input v-model="form.totalAmount" :min="0" :controls="false" :precision="2"
                                    controls-position="right" style="width: 200px;">
                            <el-form-item label="补偿总金额" prop="compensationSumWarn">
                                <el-input :disabled="$route.query.type == 'detail'" v-model="form.compensationSumWarn" :min="0" :controls="false"
                                    style="width: 200px;">
                                    <template slot="append">万元</template>
                                </el-input>
                            </el-form-item>
                        </el-col>
                        <el-col :span="8">
                            <el-form-item label="25%首付款" prop="downPayment">
                                <el-input v-model="form.downPayment" :min="0" :controls="false" :precision="2"
                                    controls-position="right" style="width: 200px;">
                            <el-form-item label="25%首付款" prop="downPaymentAmount">
                                <el-input :disabled="$route.query.type == 'detail'" v-model="form.downPaymentAmount" :min="0" :controls="false"
                                    style="width: 200px;">
                                    <template slot="append">万元</template>
                                </el-input>
                            </el-form-item>
                        </el-col>
                        <el-col :span="8">
                            <el-form-item label="每季度需要支付款项" prop="quarterlyPayment">
                                <el-input v-model="form.quarterlyPayment" :min="0" :controls="false"
                                    :precision="2" controls-position="right" style="width: 200px;">
                            <el-form-item label="每季度需要支付款项" prop="quarterPayAmount">
                                <el-input :disabled="$route.query.type == 'detail'" v-model="form.quarterPayAmount" :min="0" :controls="false"
                                    style="width: 200px;">
                                    <template slot="append">万元</template>
                                </el-input>
                            </el-form-item>
@@ -105,9 +110,9 @@
                    <el-row :gutter="20">
                        <el-col :span="8">
                            <el-form-item label="过渡补贴" prop="transitionalSubsidy">
                                <el-input v-model="form.transitionalSubsidy" :min="0" :controls="false"
                                    :precision="2" controls-position="right" style="width: 200px;">
                            <el-form-item label="过渡补贴" prop="subsidyAmount">
                                <el-input :disabled="$route.query.type == 'detail'" v-model="form.subsidyAmount" :min="0" :controls="false"
                                    style="width: 200px;">
                                    <template slot="append">万元</template>
                                </el-input>
                            </el-form-item>
@@ -116,8 +121,8 @@
                    <el-row>
                        <el-col :span="16">
                            <el-form-item label="备注" prop="remarks">
                                <el-input v-model="form.remarks" type="textarea" :rows="3" placeholder="请输入备注信息" />
                            <el-form-item label="备注" prop="remark">
                                <el-input :disabled="$route.query.type == 'detail'" v-model="form.remark" type="textarea" :rows="3" placeholder="请输入备注信息" />
                            </el-form-item>
                        </el-col>
                    </el-row>
@@ -125,7 +130,8 @@
                <!-- 按钮区域 -->
                <div class="form-footer">
                    <el-button type="primary" size="small" @click="submitForm">提交</el-button>
                    <el-button type="primary" v-if="$route.query.type != 'detail'" size="small" @click="submitForm">提交</el-button>
                    <el-button type="primary" v-if="$route.query.type == 'detail'" size="small" @click="$router.back()">返回</el-button>
                </div>
            </el-form>
        </el-card>
@@ -133,79 +139,82 @@
</template>
<script>
import { addPlacementBatchMoney,getPlacementBatchMoneyDetail,updatePlacementBatchMoney  } from '@/api/placement-details'
export default {
    name: 'AddResettle',
    data() {
        return {
            // 表单数据
            form: {
                projectName: '',
                village: '',
                householderName: '',
                idCard: '',
                familySize: 1,
                totalArea: 0,
                newBuildingStandard: 0,
                secondHandStandard: 0,
                totalAmount: 0,
                downPayment: 0,
                quarterlyPayment: 0,
                transitionalSubsidy: 0,
                remarks: ''
                projectName: '', // 拆迁项目名称
                street: '', // 镇(街道)
                community: '', // 所在村(社区)
                householdHead: '', // 户主姓名
                idCard: '', // 户主身份号
                resettledNum: 1, // 应安置人数
                resettledArea: 0, // 所有家庭成员应安置面积
                priceNewAmount: 0, // 新建商品住房/商业用房/停车位
                priceOldAmount: 0, // 二手住房
                compensationSumWarn: 0, // 补偿总金额
                downPaymentAmount: 0, // 25%首付款
                quarterPayAmount: 0, // 每季度需要支付款项
                subsidyAmount: 0, // 过渡补贴
                remark: '' // 备注
            },
            // 表单校验规则
            rules: {
                projectName: [
                    { required: true, message: '请输入镇街项目名称', trigger: 'blur' }
                    { required: true, message: '请输入拆迁项目名称', trigger: 'blur' }
                ],
                village: [
                street: [
                    { required: true, message: '请输入镇(街道)', trigger: 'blur' }
                ],
                community: [
                    { required: true, message: '请输入所在村(社区)', trigger: 'blur' }
                ],
                householderName: [
                householdHead: [
                    { required: true, message: '请输入户主姓名', trigger: 'blur' }
                ],
                idCard: [
                    { required: true, message: '请输入户主身份号', trigger: 'blur' },
                    { pattern: /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/, message: '请输入正确的身份证号', trigger: 'blur' }
                ],
                newBuildingStandard: [
                    { required: true, message: '请输入新建商品住房/商业用房/停车位', trigger: 'blur' },
                    { type: 'number', message: '请输入正确的数字', trigger: 'blur' }
                ],
                secondHandStandard: [
                    { required: true, message: '请输入二手住房', trigger: 'blur' },
                    { type: 'number', message: '请输入正确的数字', trigger: 'blur' }
                ],
                transitionalSubsidy: [
                    { required: true, message: '请输入过渡补贴', trigger: 'blur' },
                    { type: 'number', message: '请输入正确的数字', trigger: 'blur' }
                ],
                downPayment: [
                    { required: true, message: '请输入25%首付款', trigger: 'blur' },
                    { type: 'number', message: '请输入正确的数字', trigger: 'blur' }
                ],
                quarterlyPayment: [
                    { required: true, message: '请输入每季度需要支付款项', trigger: 'blur' },
                    { type: 'number', message: '请输入正确的数字', trigger: 'blur' }
                ],
                transitionalSubsidy: [
                    { required: true, message: '请输入过渡补贴', trigger: 'blur' },
                    { type: 'number', message: '请输入正确的数字', trigger: 'blur' }
                ],
                familySize: [
                resettledNum: [
                    { required: true, message: '请输入应安置人数', trigger: 'blur' },
                    { type: 'number', message: '请输入正确的数字', trigger: 'blur' }
                ],
                totalArea: [
                resettledArea: [
                    { required: true, message: '请输入所有家庭成员应安置面积', trigger: 'blur' },
                    { type: 'number', message: '请输入正确的数字', trigger: 'blur' }
                ],
                totalAmount: [
                priceNewAmount: [
                    { required: true, message: '请输入新建商品住房/商业用房/停车位', trigger: 'blur' },
                ],
                priceOldAmount: [
                    { required: true, message: '请输入二手住房', trigger: 'blur' },
                ],
                compensationSumWarn: [
                    { required: true, message: '请输入补偿总金额', trigger: 'blur' },
                    { type: 'number', message: '请输入正确的数字', trigger: 'blur' }
                ]
                ],
                downPaymentAmount: [
                    { required: true, message: '请输入25%首付款', trigger: 'blur' },
                ],
                quarterPayAmount: [
                    { required: true, message: '请输入每季度需要支付款项', trigger: 'blur' },
                ],
                subsidyAmount: [
                    { required: true, message: '请输入过渡补贴', trigger: 'blur' },
                ],
            }
        }
    },
    mounted() {
        if (this.$route.query.moneyId) {
            getPlacementBatchMoneyDetail({ id: this.$route.query.moneyId }).then(res => {
                if (res.code === 200) {
                    this.form = res.data
                }
            })
        } else {
            this.resetForm()
        }
    },
    methods: {
@@ -214,7 +223,21 @@
            this.$refs.form.validate(valid => {
                if (valid) {
                    // TODO: 调用接口提交数据
                    this.$message.success('提交成功')
                    if (this.$route.query.moneyId) {
                        updatePlacementBatchMoney({ ...this.form, placementBatchId: this.$route.query.id,id: this.$route.query.moneyId }).then(res => {
                            if (res.code === 200) {
                                this.$message.success('编辑成功')
                                this.$router.back()
                            }
                        })
                    } else {
                        addPlacementBatchMoney({ ...this.form, placementBatchId: Number(this.$route.query.id) }).then(res => {
                            if (res.code === 200) {
                                this.$message.success('提交成功')
                                this.$router.back()
                            }
                        })
                    }
                } else {
                    return false
                }
src/views/placement-batch/applayPerson.vue
@@ -5,41 +5,41 @@
        <!-- 基本信息 -->
        <el-row :gutter="20">
          <el-col :span="6">
            <el-form-item label="镇(街道)" prop="town" required>
              <el-input v-model="form.town" placeholder="请输入" clearable style="width: 250px;" />
            <el-form-item label="镇(街道)" prop="street" required>
              <el-input :disabled="$route.query.type === 'detail'" v-model="form.street" placeholder="请输入" clearable style="width:180px;" />
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="所在村(社区)" prop="village" required>
              <el-input v-model="form.village" placeholder="请输入" clearable style="width: 250px;" />
            <el-form-item label="所在村(社区)" prop="community" required>
              <el-input :disabled="$route.query.type === 'detail'" v-model="form.community" placeholder="请输入" clearable style="width:180px;" />
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="拆迁项目名称" prop="projectName" required>
              <el-input v-model="form.projectName" placeholder="请输入" clearable style="width: 250px;" />
              <el-input :disabled="$route.query.type === 'detail'" v-model="form.projectName" placeholder="请输入" clearable style="width:180px;" />
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="拆迁时间" prop="demolitionTime">
                <el-date-picker v-model="form.demolitionTime" type="date" placeholder="请选择拆迁时间" style="width: 250px;" />
              <el-date-picker :disabled="$route.query.type === 'detail'" v-model="form.demolitionTime" type="date" placeholder="请选择拆迁时间" style="width:180px;" />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="20">
          <el-col :span="6">
            <el-form-item label="户主姓名" prop="householderName" required>
              <el-input v-model="form.householderName" placeholder="请输入" clearable style="width: 250px;" />
            <el-form-item label="户主姓名" prop="householdHead" required>
              <el-input :disabled="$route.query.type === 'detail'" v-model="form.householdHead" placeholder="请输入" clearable style="width:180px;" />
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="户主身份号" prop="idCard" required>
              <el-input v-model="form.idCard" placeholder="请输入" clearable style="width: 250px;" />
              <el-input :disabled="$route.query.type === 'detail'" v-model="form.idCard" placeholder="请输入" clearable style="width:180px;" />
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="联系电话" prop="phone" required>
              <el-input v-model="form.phone" placeholder="请输入" clearable style="width: 250px;" />
            <el-form-item label="联系电话" prop="mobile" required>
              <el-input :disabled="$route.query.type === 'detail'" v-model="form.mobile" placeholder="请输入" clearable style="width:180px;" />
            </el-form-item>
          </el-col>
        </el-row>
@@ -48,28 +48,28 @@
        <div class="section-title">本次安置人数</div>
        <el-row :gutter="20">
          <el-col :span="8">
            <el-form-item label="集体经济组织成员" prop="collectiveMember" required>
            <el-form-item label="集体经济组织成员" prop="currentCollectiveNum" required>
              <div class="input-with-unit">
                <el-input v-model="form.collectiveMember" placeholder="请输入" clearable style="width: 250px;" >
                    <template slot="append">人</template>
                <el-input :disabled="$route.query.type === 'detail'" v-model="form.currentCollectiveNum" placeholder="请输入" clearable style="width: 250px;">
                  <template slot="append">人</template>
                </el-input>
              </div>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="非集体经济组织成员" prop="nonCollectiveMember" required>
            <el-form-item label="非集体经济组织成员" prop="currentNoCollectiveNum" required>
              <div class="input-with-unit">
                <el-input v-model="form.nonCollectiveMember" placeholder="请输入" clearable style="width: 250px;" >
                    <template slot="append">人</template>
                <el-input :disabled="$route.query.type === 'detail'" v-model="form.currentNoCollectiveNum" placeholder="请输入" clearable style="width: 250px;">
                  <template slot="append">人</template>
                </el-input>
              </div>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="合计" prop="totalMember">
            <el-form-item label="合计" prop="currentCount">
              <div class="input-with-unit">
                <el-input v-model="form.totalMember" placeholder="自动计算" disabled style="width: 250px;" >
                    <template slot="append">人</template>
                <el-input :disabled="$route.query.type === 'detail'" v-model="form.currentCount" placeholder="自动计算" disabled style="width: 250px;">
                  <template slot="append">人</template>
                </el-input>
              </div>
            </el-form-item>
@@ -78,15 +78,15 @@
        <el-row :gutter="20">
          <el-col :span="8">
            <el-form-item label="待安置家庭成员姓名" prop="familyMembers" required>
              <el-input v-model="form.familyMembers" placeholder="请输入" clearable style="width: 250px;" />
            <el-form-item label="待安置家庭成员姓名" prop="waitFamilyNames" required>
              <el-input :disabled="$route.query.type === 'detail'" v-model="form.waitFamilyNames" placeholder="请输入" clearable style="width: 250px;" />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="待安置人员应安置面积合计" label-width="215px" prop="totalSettlementArea" required>
            <el-form-item label="待安置人员应安置面积合计" label-width="215px" prop="waitFamilyArea" required>
              <div class="input-with-unit">
                <el-input v-model="form.totalSettlementArea" placeholder="请输入" clearable style="width: 250px;" >
                    <template slot="append">㎡</template>
                <el-input :disabled="$route.query.type === 'detail'" v-model="form.waitFamilyArea" placeholder="请输入" clearable style="width: 250px;">
                  <template slot="append">㎡</template>
                </el-input>
              </div>
            </el-form-item>
@@ -97,28 +97,28 @@
        <div class="section-title">补偿金额</div>
        <el-row :gutter="20">
          <el-col :span="8">
            <el-form-item label="新建商品住房/商业用房/停车位" label-width="215px" prop="newBuildingAmount" required>
            <el-form-item label="新建商品住房/商业用房/停车位" label-width="215px" prop="compensationNewAmount" required>
              <div class="input-with-unit">
                <el-input v-model="form.newBuildingAmount" placeholder="请输入" clearable style="width: 250px;" >
                    <template slot="append">万元</template>
                <el-input :disabled="$route.query.type === 'detail'" v-model="form.compensationNewAmount" placeholder="请输入" clearable style="width: 250px;">
                  <template slot="append">万元</template>
                </el-input>
              </div>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="二手住房"  label-width="215px" prop="secondHandAmount" required>
            <el-form-item label="二手住房" label-width="215px" prop="compensationOldAmount" required>
              <div class="input-with-unit">
                <el-input v-model="form.secondHandAmount" placeholder="请输入" clearable style="width: 250px;" >
                    <template slot="append">万元</template>
                <el-input :disabled="$route.query.type === 'detail'" v-model="form.compensationOldAmount" placeholder="请输入" clearable style="width: 250px;">
                  <template slot="append">万元</template>
                </el-input>
              </div>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="合计"  label-width="215px" prop="totalAmount">
            <el-form-item label="合计" label-width="215px" prop="compensationSum">
              <div class="input-with-unit">
                <el-input v-model="form.totalAmount" placeholder="自动计算" disabled style="width: 250px;" >
                    <template slot="append">万元</template>
                <el-input :disabled="$route.query.type === 'detail'" v-model="form.compensationSum" placeholder="自动计算" disabled style="width: 250px;">
                  <template slot="append">万元</template>
                </el-input>
              </div>
            </el-form-item>
@@ -127,28 +127,28 @@
        <el-row :gutter="20">
          <el-col :span="8">
            <el-form-item label="25%首付款"  label-width="215px" prop="downPayment" required>
            <el-form-item label="25%首付款" label-width="215px" prop="downPaymentAmount" required>
              <div class="input-with-unit">
                <el-input v-model="form.downPayment" placeholder="请输入" clearable style="width: 250px;" >
                    <template slot="append">万元</template>
                <el-input :disabled="$route.query.type === 'detail'" v-model="form.downPaymentAmount" placeholder="请输入" clearable style="width: 250px;">
                  <template slot="append">万元</template>
                </el-input>
              </div>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="每季度需支付款项"  label-width="215px" prop="quarterlyPayment" required>
            <el-form-item label="每季度需支付款项" label-width="215px" prop="quarterPayAmount" required>
              <div class="input-with-unit">
                <el-input v-model="form.quarterlyPayment" placeholder="请输入" clearable style="width: 250px;" >
                    <template slot="append">万元</template>
                <el-input :disabled="$route.query.type === 'detail'" v-model="form.quarterPayAmount" placeholder="请输入" clearable style="width: 250px;">
                  <template slot="append">万元</template>
                </el-input>
              </div>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="过渡补贴"  label-width="215px" prop="transitionalSubsidy" required>
            <el-form-item label="过渡补贴" label-width="215px" prop="subsidyAmount" required>
              <div class="input-with-unit">
                <el-input v-model="form.transitionalSubsidy" placeholder="请输入" clearable style="width: 250px;" >
                    <template slot="append">万元</template>
                <el-input :disabled="$route.query.type === 'detail'" v-model="form.subsidyAmount" placeholder="请输入" clearable style="width: 250px;">
                  <template slot="append">万元</template>
                </el-input>
              </div>
            </el-form-item>
@@ -157,28 +157,18 @@
        <el-row>
          <el-col :span="24">
            <el-form-item label="备注"  label-width="215px" prop="remarks">
              <el-input
                type="textarea"
                v-model="form.remarks"
                placeholder="请输入备注信息"
                :rows="3"
                style="width: 100%;"
              />
            <el-form-item label="备注" label-width="215px" prop="remark">
              <el-input :disabled="$route.query.type === 'detail'" type="textarea" v-model="form.remark" placeholder="请输入备注信息" :rows="3" style="width: 100%;" />
            </el-form-item>
          </el-col>
        </el-row>
        <!-- 领证发放时间 -->
        <!-- 凭证发放时间 -->
        <el-row>
          <el-col :span="8">
            <el-form-item label="领证发放时间"  label-width="215px" prop="certificateTime" required>
              <el-date-picker
                v-model="form.certificateTime"
                type="date"
                placeholder="请选择领证发放时间"
                style="width: 250px;"
              />
            <el-form-item label="凭证发放时间" label-width="215px" prop="certificateTime" required>
              <el-date-picker :disabled="$route.query.type === 'detail'" v-model="form.certificateTime" type="date" placeholder="请选择凭证发放时间"
                style="width: 250px;" />
            </el-form-item>
          </el-col>
        </el-row>
@@ -187,20 +177,15 @@
        <div class="section-title">购房信息</div>
        <el-row :gutter="20">
          <el-col :span="8">
            <el-form-item label="购房时间" prop="purchaseTime" required>
              <el-date-picker
                v-model="form.purchaseTime"
                type="date"
                placeholder="请选择购房时间"
                style="width: 250px;"
              />
            <el-form-item label="购房时间" prop="buyTime" required>
              <el-date-picker :disabled="$route.query.type === 'detail'" v-model="form.buyTime" type="date" placeholder="请选择购房时间" style="width: 250px;" />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="成交金额" prop="dealAmount" required>
              <div class="input-with-unit">
                <el-input v-model="form.dealAmount" placeholder="请输入" clearable style="width: 250px;" >
                    <template slot="append">万元</template>
                <el-input :disabled="$route.query.type === 'detail'" v-model="form.dealAmount" placeholder="请输入" clearable style="width: 250px;">
                  <template slot="append">万元</template>
                </el-input>
              </div>
            </el-form-item>
@@ -209,24 +194,24 @@
        <el-row :gutter="20">
          <el-col :span="8">
            <el-form-item label="楼盘名称" prop="newBuildingName" required>
              <el-input v-model="form.newBuildingName" placeholder="请输入" clearable style="width: 250px;" />
            <el-form-item label="新建商品住房: 楼盘名称" prop="newHousingName" required>
              <el-input :disabled="$route.query.type === 'detail'" v-model="form.newHousingName" placeholder="请输入" clearable style="width: 250px;" />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="面积" prop="newBuildingArea" required>
            <el-form-item label="面积" prop="newHousingArea" required>
              <div class="input-with-unit">
                <el-input v-model="form.newBuildingArea" placeholder="请输入" clearable style="width: 250px;" >
                    <template slot="append">㎡</template>
                <el-input :disabled="$route.query.type === 'detail'" v-model="form.newHousingArea" placeholder="请输入" clearable style="width: 250px;">
                  <template slot="append">㎡</template>
                </el-input>
              </div>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="套数" prop="newBuildingCount" required>
            <el-form-item label="套数" prop="newHousingNum" required>
              <div class="input-with-unit">
                <el-input v-model="form.newBuildingCount" placeholder="请输入" clearable style="width: 250px;" >
                    <template slot="append">套</template>
                <el-input :disabled="$route.query.type === 'detail'" v-model="form.newHousingNum" placeholder="请输入" clearable style="width: 250px;">
                  <template slot="append">套</template>
                </el-input>
              </div>
            </el-form-item>
@@ -235,24 +220,24 @@
        <el-row :gutter="20">
          <el-col :span="8">
            <el-form-item label="小区名称" prop="secondHandName" required>
              <el-input v-model="form.secondHandName" placeholder="请输入" clearable style="width: 250px;" />
            <el-form-item label="二手住房: 小区名称" prop="oldHousingName" required>
              <el-input :disabled="$route.query.type === 'detail'" v-model="form.oldHousingName" placeholder="请输入" clearable style="width: 250px;" />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="面积" prop="secondHandArea" required>
            <el-form-item label="面积" prop="oldHousingArea" required>
              <div class="input-with-unit">
                <el-input v-model="form.secondHandArea" placeholder="请输入" clearable style="width: 250px;" >
                    <template slot="append">㎡</template>
                <el-input :disabled="$route.query.type === 'detail'" v-model="form.oldHousingArea" placeholder="请输入" clearable style="width: 250px;">
                  <template slot="append">㎡</template>
                </el-input>
              </div>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="套数" prop="secondHandCount" required>
            <el-form-item label="套数" prop="oldHousingNum" required>
              <div class="input-with-unit">
                <el-input v-model="form.secondHandCount" placeholder="请输入" clearable style="width: 160px;" >
                    <template slot="append">套</template>
                <el-input :disabled="$route.query.type === 'detail'" v-model="form.oldHousingNum" placeholder="请输入" clearable style="width: 160px;">
                  <template slot="append">套</template>
                </el-input>
              </div>
            </el-form-item>
@@ -261,33 +246,33 @@
        <el-row :gutter="20">
          <el-col :span="8">
            <el-form-item label="新建商业用房" prop="newCommercialName" required>
              <el-input v-model="form.newCommercialName" placeholder="请输入" clearable style="width: 250px;" />
            <el-form-item label="新建商业用房: 楼盘名称" prop="buildHousingName" required>
              <el-input :disabled="$route.query.type === 'detail'" v-model="form.buildHousingName" placeholder="请输入" clearable style="width: 250px;" />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="金额" prop="newCommercialAmount" required>
            <el-form-item label="金额" prop="buildHousingAmount" required>
              <div class="input-with-unit">
                <el-input v-model="form.newCommercialAmount" placeholder="请输入" clearable style="width: 250px;" >
                    <template slot="append">万元</template>
                <el-input :disabled="$route.query.type === 'detail'" v-model="form.buildHousingAmount" placeholder="请输入" clearable style="width: 250px;">
                  <template slot="append">万元</template>
                </el-input>
              </div>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="面积" prop="newCommercialArea" required>
            <el-form-item label="面积" prop="buildHousingArea" required>
              <div class="input-with-unit">
                <el-input v-model="form.newCommercialArea" placeholder="请输入" clearable style="width: 250px;" >
                    <template slot="append">㎡</template>
                <el-input :disabled="$route.query.type === 'detail'" v-model="form.buildHousingArea" placeholder="请输入" clearable style="width: 250px;">
                  <template slot="append">㎡</template>
                </el-input>
              </div>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="套数" prop="newCommercialCount" required>
            <el-form-item label="套数" prop="buildHousingNum" required>
              <div class="input-with-unit">
                <el-input v-model="form.newCommercialCount" placeholder="请输入" clearable style="width: 250px;" >
                    <template slot="append">套</template>
                <el-input :disabled="$route.query.type === 'detail'" v-model="form.buildHousingNum" placeholder="请输入" clearable style="width: 250px;">
                  <template slot="append">套</template>
                </el-input>
              </div>
            </el-form-item>
@@ -296,24 +281,24 @@
        <el-row :gutter="20">
          <el-col :span="8">
            <el-form-item label="新建停车位" prop="newParkingName" required>
              <el-input v-model="form.newParkingName" placeholder="请输入" clearable style="width: 250px;" />
            <el-form-item label="新建停车位: 楼盘名称" prop="newStopName" required>
              <el-input :disabled="$route.query.type === 'detail'" v-model="form.newStopName" placeholder="请输入" clearable style="width: 250px;" />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="金额" prop="newParkingAmount" required>
            <el-form-item label="金额" prop="newStopArea" required>
              <div class="input-with-unit">
                <el-input v-model="form.newParkingAmount" placeholder="请输入" clearable style="width: 250px;" >
                    <template slot="append">万元</template>
                <el-input :disabled="$route.query.type === 'detail'" v-model="form.newStopArea" placeholder="请输入" clearable style="width: 250px;">
                  <template slot="append">万元</template>
                </el-input>
              </div>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="个数" prop="newParkingCount" required>
            <el-form-item label="个数" prop="newStopNum" required>
              <div class="input-with-unit">
                <el-input v-model="form.newParkingCount" placeholder="请输入" clearable style="width: 250px;" >
                    <template slot="append">套</template>
                <el-input :disabled="$route.query.type === 'detail'" v-model="form.newStopNum" placeholder="请输入" clearable style="width: 250px;">
                  <template slot="append">套</template>
                </el-input>
              </div>
            </el-form-item>
@@ -324,75 +309,41 @@
        <div class="section-title">补偿款支付</div>
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="自主购房协议签订时间" prop="agreementSignTime" required>
              <el-date-picker
                v-model="form.agreementSignTime"
                type="date"
                placeholder="请选择时间"
                style="width: 250px;"
              />
            <el-form-item label="自主购房协议签订时间" prop="signTime" required>
              <el-date-picker :disabled="$route.query.type === 'detail'" v-model="form.signTime" type="date" placeholder="请选择时间" style="width: 250px;" />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="25%补偿款及过渡补贴支付时间" label-width="220px" prop="downPaymentTime" required>
              <el-date-picker
                v-model="form.downPaymentTime"
                type="date"
                placeholder="请选择时间"
                style="width: 250px;"
              />
            <el-form-item label="25%补偿款及过渡补贴支付时间" label-width="220px" prop="compensationPayTime" required>
              <el-date-picker :disabled="$route.query.type === 'detail'" v-model="form.compensationPayTime" type="date" placeholder="请选择时间"
                style="width: 250px;" />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="20">
          <el-col :span="24">
            <el-form-item label="剩余款项支付时间:" prop="remainingPaymentTime">
            <el-form-item label="剩余款项支付时间:" prop="remainingTime1">
              <el-row :gutter="20">
                <el-col :span="4">
                  <div class="payment-label">第一年</div>
                  <el-date-picker
                    v-model="form.firstYearPayment"
                    type="date"
                    placeholder="请选择时间"
                    style="width: 200px;"
                  />
                  <el-date-picker :disabled="$route.query.type === 'detail'" v-model="form.remainingTime1" type="date" placeholder="请选择时间" style="width: 200px;" />
                </el-col>
                <el-col :span="4">
                  <div class="payment-label">第二年</div>
                  <el-date-picker
                    v-model="form.secondYearPayment"
                    type="date"
                    placeholder="请选择时间"
                    style="width: 200px;"
                  />
                  <el-date-picker :disabled="$route.query.type === 'detail'" v-model="form.remainingTime2" type="date" placeholder="请选择时间" style="width: 200px;" />
                </el-col>
                <el-col :span="4">
                  <div class="payment-label">第三年</div>
                  <el-date-picker
                    v-model="form.thirdYearPayment"
                    type="date"
                    placeholder="请选择时间"
                    style="width: 200px;"
                  />
                  <el-date-picker :disabled="$route.query.type === 'detail'" v-model="form.remainingTime3" type="date" placeholder="请选择时间" style="width: 200px;" />
                </el-col>
                <el-col :span="4">
                  <div class="payment-label">第四年</div>
                  <el-date-picker
                    v-model="form.fourthYearPayment"
                    type="date"
                    placeholder="请选择时间"
                    style="width: 200px;"
                  />
                  <el-date-picker :disabled="$route.query.type === 'detail'" v-model="form.remainingTime4" type="date" placeholder="请选择时间" style="width: 200px;" />
                </el-col>
                <el-col :span="4">
                  <div class="payment-label">第五年</div>
                  <el-date-picker
                    v-model="form.fifthYearPayment"
                    type="date"
                    placeholder="请选择时间"
                    style="width: 200px;"
                  />
                  <el-date-picker :disabled="$route.query.type === 'detail'" v-model="form.remainingTime5" type="date" placeholder="请选择时间" style="width: 200px;" />
                </el-col>
              </el-row>
            </el-form-item>
@@ -401,7 +352,8 @@
        <!-- 按钮区域 -->
        <div class="form-footer">
          <el-button type="primary" @click="submitForm">提交</el-button>
          <el-button v-if="$route.query.type !== 'detail'" type="primary" @click="submitForm">提交</el-button>
          <el-button v-else @click="$router.back()">返回</el-button>
        </div>
      </el-form>
    </el-card>
@@ -409,133 +361,198 @@
</template>
<script>
import { addPlacementBatchHouse, updatePlacementBatchHouse, getPlacementBatchHouseDetail } from '@/api/placement-details'
export default {
  name: 'ApplayPerson',
  data() {
    return {
      form: {
        town: '',
        village: '',
        street: '',
        community: '',
        projectName: '',
        demolitionTime: '',
        householderName: '',
        householdHead: '',
        idCard: '',
        phone: '',
        collectiveMember: '',
        nonCollectiveMember: '',
        totalMember: '',
        familyMembers: '',
        totalSettlementArea: '',
        newBuildingAmount: '',
        secondHandAmount: '',
        totalAmount: '',
        downPayment: '',
        quarterlyPayment: '',
        transitionalSubsidy: '',
        remarks: '',
        mobile: '',
        currentCollectiveNum: '',
        currentNoCollectiveNum: '',
        currentCount: '',
        waitFamilyNames: '',
        waitFamilyArea: '',
        compensationNewAmount: '',
        compensationOldAmount: '',
        compensationSum: '',
        downPaymentAmount: '',
        quarterPayAmount: '',
        subsidyAmount: '',
        remark: '',
        certificateTime: '',
        purchaseTime: '',
        buyTime: '',
        dealAmount: '',
        newBuildingName: '',
        newBuildingArea: '',
        newBuildingCount: '',
        secondHandName: '',
        secondHandArea: '',
        secondHandCount: '',
        newCommercialName: '',
        newCommercialAmount: '',
        newCommercialArea: '',
        newCommercialCount: '',
        newParkingName: '',
        newParkingAmount: '',
        newParkingCount: '',
        agreementSignTime: '',
        downPaymentTime: '',
        firstYearPayment: '',
        secondYearPayment: '',
        thirdYearPayment: '',
        fourthYearPayment: '',
        fifthYearPayment: '',
        newHousingName: '',
        newHousingArea: '',
        newHousingNum: '',
        oldHousingName: '',
        oldHousingArea: '',
        oldHousingNum: '',
        buildHousingName: '',
        buildHousingAmount: '',
        buildHousingArea: '',
        buildHousingNum: '',
        newStopName: '',
        newStopArea: '',
        newStopNum: '',
        signTime: '',
        compensationPayTime: '',
        remainingTime1: '',
        remainingTime2: '',
        remainingTime3: '',
        remainingTime4: '',
        remainingTime5: ''
      },
      rules: {
        town: [{ required: true, message: '请输入镇(街道)', trigger: 'blur' }],
        village: [{ required: true, message: '请输入所在村(社区)', trigger: 'blur' }],
        street: [{ required: true, message: '请输入镇(街道)', trigger: 'blur' }],
        community: [{ required: true, message: '请输入所在村(社区)', trigger: 'blur' }],
        projectName: [{ required: true, message: '请输入拆迁项目名称', trigger: 'blur' }],
        householderName: [{ required: true, message: '请输入户主姓名', trigger: 'blur' }],
        demolitionTime: [{ required: true, message: '请选择拆迁时间', trigger: 'change' }],
        householdHead: [{ required: true, message: '请输入户主姓名', trigger: 'blur' }],
        idCard: [
          { required: true, message: '请输入户主身份号', trigger: 'blur' },
          { pattern: /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/, message: '请输入正确的身份证号', trigger: 'blur' }
        ],
        phone: [
        mobile: [
          { required: true, message: '请输入联系电话', trigger: 'blur' },
          { pattern: /^1[3-9]\d{9}$/, message: '请输入正确的手机号码', trigger: 'blur' }
        ],
        collectiveMember: [{ required: true, message: '请输入集体经济组织成员人数', trigger: 'blur' }],
        nonCollectiveMember: [{ required: true, message: '请输入非集体经济组织成员人数', trigger: 'blur' }],
        familyMembers: [{ required: true, message: '请输入待安置家庭成员姓名', trigger: 'blur' }],
        totalSettlementArea: [{ required: true, message: '请输入待安置人员应安置面积合计', trigger: 'blur' }],
        newBuildingAmount: [{ required: true, message: '请输入新建商品住房/商业用房/停车位金额', trigger: 'blur' }],
        secondHandAmount: [{ required: true, message: '请输入二手住房金额', trigger: 'blur' }],
        downPayment: [{ required: true, message: '请输入25%首付款', trigger: 'blur' }],
        quarterlyPayment: [{ required: true, message: '请输入每季度需支付款项', trigger: 'blur' }],
        transitionalSubsidy: [{ required: true, message: '请输入过渡补贴', trigger: 'blur' }],
        certificateTime: [{ required: true, message: '请选择领证发放时间', trigger: 'change' }],
        purchaseTime: [{ required: true, message: '请选择购房时间', trigger: 'change' }],
        dealAmount: [{ required: true, message: '请输入成交金额', trigger: 'blur' }],
        newBuildingName: [{ required: true, message: '请输入楼盘名称', trigger: 'blur' }],
        newBuildingArea: [{ required: true, message: '请输入面积', trigger: 'blur' }],
        newBuildingCount: [{ required: true, message: '请输入套数', trigger: 'blur' }],
        secondHandName: [{ required: true, message: '请输入小区名称', trigger: 'blur' }],
        secondHandArea: [{ required: true, message: '请输入面积', trigger: 'blur' }],
        secondHandCount: [{ required: true, message: '请输入套数', trigger: 'blur' }],
        newCommercialName: [{ required: true, message: '请输入新建商业用房名称', trigger: 'blur' }],
        newCommercialAmount: [{ required: true, message: '请输入金额', trigger: 'blur' }],
        newCommercialArea: [{ required: true, message: '请输入面积', trigger: 'blur' }],
        newCommercialCount: [{ required: true, message: '请输入套数', trigger: 'blur' }],
        newParkingName: [{ required: true, message: '请输入新建停车位名称', trigger: 'blur' }],
        newParkingAmount: [{ required: true, message: '请输入金额', trigger: 'blur' }],
        newParkingCount: [{ required: true, message: '请输入个数', trigger: 'blur' }],
        agreementSignTime: [{ required: true, message: '请选择自主购房协议签订时间', trigger: 'change' }],
        downPaymentTime: [{ required: true, message: '请选择25%补偿款及过渡补贴支付时间', trigger: 'change' }],
        currentCollectiveNum: [
          { required: true, message: '请输入集体经济组织成员人数', trigger: 'blur' },
          // { type: 'number', message: '请输入正确的数字', trigger: 'blur' }
        ],
        currentNoCollectiveNum: [
          { required: true, message: '请输入非集体经济组织成员人数', trigger: 'blur' },
          // { type: 'number', message: '请输入正确的数字', trigger: 'blur' }
        ],
        waitFamilyNames: [{ required: true, message: '请输入待安置家庭成员姓名', trigger: 'blur' }],
        waitFamilyArea: [
          { required: true, message: '请输入待安置人员应安置面积合计', trigger: 'blur' },
          // { type: 'number', message: '请输入正确的数字', trigger: 'blur' }
        ],
        compensationNewAmount: [
          { required: true, message: '请输入新建商品住房/商业用房/停车位金额', trigger: 'blur' },
          // { type: 'number', message: '请输入正确的数字', trigger: 'blur' }
        ],
        compensationOldAmount: [
          { required: true, message: '请输入二手住房金额', trigger: 'blur' },
          // { type: 'number', message: '请输入正确的数字', trigger: 'blur' }
        ],
        downPaymentAmount: [
          { required: true, message: '请输入25%首付款', trigger: 'blur' },
          // { type: 'number', message: '请输入正确的数字', trigger: 'blur' }
        ],
        quarterPayAmount: [
          { required: true, message: '请输入每季度需支付款项', trigger: 'blur' },
          // { type: 'number', message: '请输入正确的数字', trigger: 'blur' }
        ],
        subsidyAmount: [
          { required: true, message: '请输入过渡补贴', trigger: 'blur' },
          // { type: 'number', message: '请输入正确的数字', trigger: 'blur' }
        ],
        certificateTime: [{ required: true, message: '请选择凭证发放时间', trigger: 'change' }],
        buyTime: [{ required: true, message: '请选择购房时间', trigger: 'change' }],
        dealAmount: [
          { required: true, message: '请输入成交金额', trigger: 'blur' },
          // { type: 'number', message: '请输入正确的数字', trigger: 'blur' }
        ],
        newHousingName: [{ required: true, message: '请输入新建商品住房楼盘名称', trigger: 'blur' }],
        newHousingArea: [
          { required: true, message: '请输入新建商品住房面积', trigger: 'blur' },
          // { type: 'number', message: '请输入正确的数字', trigger: 'blur' }
        ],
        newHousingNum: [
          { required: true, message: '请输入新建商品住房套数', trigger: 'blur' },
          // { type: 'number', message: '请输入正确的数字', trigger: 'blur' }
        ],
        oldHousingName: [{ required: true, message: '请输入二手住房小区名称', trigger: 'blur' }],
        oldHousingArea: [
          { required: true, message: '请输入二手住房面积', trigger: 'blur' },
          // { type: 'number', message: '请输入正确的数字', trigger: 'blur' }
        ],
        oldHousingNum: [
          { required: true, message: '请输入二手住房套数', trigger: 'blur' },
          // { type: 'number', message: '请输入正确的数字', trigger: 'blur' }
        ],
        buildHousingName: [{ required: true, message: '请输入新建商业用房楼盘名称', trigger: 'blur' }],
        buildHousingAmount: [
          { required: true, message: '请输入新建商业用房金额', trigger: 'blur' },
          // { type: 'number', message: '请输入正确的数字', trigger: 'blur' }
        ],
        buildHousingArea: [
          { required: true, message: '请输入新建商业用房面积', trigger: 'blur' },
          // { type: 'number', message: '请输入正确的数字', trigger: 'blur' }
        ],
        buildHousingNum: [
          { required: true, message: '请输入新建商业用房套数', trigger: 'blur' },
          // { type: 'number', message: '请输入正确的数字', trigger: 'blur' }
        ],
        newStopName: [{ required: true, message: '请输入新建停车位楼盘名称', trigger: 'blur' }],
        newStopArea: [
          { required: true, message: '请输入新建停车位金额', trigger: 'blur' },
          // { type: 'number', message: '请输入正确的数字', trigger: 'blur' }
        ],
        newStopNum: [
          { required: true, message: '请输入新建停车位个数', trigger: 'blur' },
          // { type: 'number', message: '请输入正确的数字', trigger: 'blur' }
        ],
        signTime: [{ required: true, message: '请选择自主购房协议签订时间', trigger: 'change' }],
        compensationPayTime: [{ required: true, message: '请选择25%补偿款及过渡补贴支付时间', trigger: 'change' }]
      }
    }
  },
  watch: {
    // 监听集体和非集体成员人数,自动计算总人数
    'form.collectiveMember': {
    'form.currentCollectiveNum': {
      handler(val) {
        this.calculateTotalMember()
      }
    },
    'form.nonCollectiveMember': {
    'form.currentNoCollectiveNum': {
      handler(val) {
        this.calculateTotalMember()
      }
    },
    // 监听新建和二手房金额,自动计算总金额
    'form.newBuildingAmount': {
    'form.compensationNewAmount': {
      handler(val) {
        this.calculateTotalAmount()
      }
    },
    'form.secondHandAmount': {
    'form.compensationOldAmount': {
      handler(val) {
        this.calculateTotalAmount()
      }
    }
  },
  mounted(){
    if(this.$route.query.houseId){
      getPlacementBatchHouseDetail({id:this.$route.query.houseId}).then(res => {
        this.form = res.data
      })
    }else{
      this.resetForm()
    }
  },
  methods: {
    // 计算总人数
    calculateTotalMember() {
      const collective = parseFloat(this.form.collectiveMember) || 0
      const nonCollective = parseFloat(this.form.nonCollectiveMember) || 0
      this.form.totalMember = collective + nonCollective
      const collective = parseFloat(this.form.currentCollectiveNum) || 0
      const nonCollective = parseFloat(this.form.currentNoCollectiveNum) || 0
      this.form.currentCount = collective + nonCollective
    },
    // 计算总金额
    calculateTotalAmount() {
      const newBuilding = parseFloat(this.form.newBuildingAmount) || 0
      const secondHand = parseFloat(this.form.secondHandAmount) || 0
      this.form.totalAmount = newBuilding + secondHand
      const newBuilding = parseFloat(this.form.compensationNewAmount) || 0
      const secondHand = parseFloat(this.form.compensationOldAmount) || 0
      this.form.compensationSum = newBuilding + secondHand
    },
    // 处理文件上传
    handleClickUpload() {
@@ -544,15 +561,15 @@
      fileInput.type = 'file'
      // 设置接受的文件类型
      fileInput.accept = '.jpg,.jpeg,.png,.pdf,.doc,.docx'
      // 监听文件选择事件
      fileInput.addEventListener('change', (event) => {
        const file = event.target.files[0]
        if (!file) return
        // 创建FileReader实例
        const reader = new FileReader()
        // 读取完成后的处理
        reader.onload = (e) => {
          // 获取二进制数据
@@ -563,11 +580,11 @@
          // 这里可以将binaryData存储到组件的data中或进行其他处理
          // this.fileData = binaryData
        }
        // 读取文件为二进制数据
        reader.readAsArrayBuffer(file)
      })
      // 触发文件选择
      fileInput.click()
    },
@@ -576,7 +593,27 @@
      this.$refs.form.validate(valid => {
        if (valid) {
          // TODO: 调用接口提交数据
          this.$message.success('提交成功')
          if(this.$route.query.houseId){
            // 修改
            updatePlacementBatchHouse({...this.form,placementBatchId:this.$route.query.id,id:this.$route.query.houseId}).then(res => {
              if(res.code === 200){
                this.$message.success('修改成功')
                this.$router.back()
              }else{
                this.$message.error(res.message)
              }
            })
          }else{
            // 新增
            addPlacementBatchHouse({...this.form,placementBatchId:this.$route.query.id}).then(res => {
              if(res.code === 200){
                this.$message.success('提交成功')
                this.$router.back()
              }else{
                this.$message.error(res.message)
              }
            })
          }
        }
      })
    },
@@ -611,7 +648,7 @@
.input-with-unit {
  display: inline-flex;
  align-items: center;
  .unit {
    margin-left: 8px;
    color: #606266;
src/views/placement-batch/components/ApprovalDialog.vue
@@ -1,202 +1,233 @@
<template>
  <el-dialog :title="type === 'audit' ? '审批安置户申请信息' : '安置户申请信息'" :visible.sync="dialogVisible" width="80%"
    :close-on-click-modal="false" :append-to-body="true">
  <el-dialog :title="type === 'audit' ? '审批安置户申请信息' : '安置户申请信息'" @open="openDialog" :visible.sync="dialogVisible"
    width="80%" :close-on-click-modal="false" :append-to-body="true">
    <!-- Tab切换区域 -->
    <div class="tab-container">
      <el-tabs v-model="activeTab" type="card" @tab-click="handleTabClick">
        <el-tab-pane label="资金表" name="1"></el-tab-pane>
        <el-tab-pane label="购房信息表" name="2"></el-tab-pane>
      </el-tabs>
    </div>
    <div class="approval-content">
      <!-- 左侧表格区域 -->
      <div class="table-container">
        <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="town" 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>
                <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="village" 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>
                <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="owner" 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>
                <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">
        <div v-if="activeTab == '1'">
          <!-- 表格区域 -->
          <el-table v-loading="loading" :data="tableData" border style="width: 100%" max-height="300px"  :row-class-name="tableRowClassName">
            <el-table-column type="index" label="序号" width="50" align="center" />
            <el-table-column prop="street" label="镇(街道)" min-width="120" align="center" />
            <el-table-column prop="projectName" label="拆迁项目名称" min-width="180" align="center" />
            <el-table-column prop="community" label="所在村(社区)" min-width="120" align="center" />
            <el-table-column prop="householdHead" label="户主姓名" min-width="100" align="center">
              <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>
                <span>{{ scope.row.householdHead }} <el-tooltip v-if="scope.row.householdHeadWarn == 1" class="item"
                    effect="dark" content="用户信息未通过安置申请" placement="top">
                    <i class="el-icon-warning-outline"></i>
                  </el-tooltip></span>
              </template>
            </el-table-column>
            <el-table-column prop="idCard" label="身份证号" min-width="180" align="center">
              <template slot-scope="scope">
                {{ scope.row.idCard || '-' }} <el-tooltip v-if="scope.row.idCardWarn == 1" class="item" effect="dark"
                  content="身份信息不存在于待安置人员库" placement="top">
                  <i class="el-icon-warning-outline"></i>
                </el-tooltip>
              </template>
            </el-table-column>
            <el-table-column prop="additionalPeople" label="非集体经济组织成员" align="center" width="120">
            <el-table-column prop="resettledNum" label="应安置人数(人)" min-width="140" align="center" />
            <el-table-column label="所有家庭人员应安置面积(㎡)" prop="resettledArea" min-width="160" align="center">
              <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>
                <span>{{ scope.row.resettledArea }} <el-tooltip v-if="scope.row.waitFamilyAreaWarn == 1" class="item"
                    effect="dark" content="应补偿面积数据异常" placement="top">
                    <i class="el-icon-warning-outline"></i>
                  </el-tooltip></span>
              </template>
            </el-table-column>
            <el-table-column label="补偿单位标准(万元)" min-width="160" align="center">
              <el-table-column prop="priceNewAmount" label="新建商品住房、商业用房、停车位" min-width="160" align="center">
                <template slot-scope="scope">
                  <span>{{ scope.row.priceNewAmount }} <el-tooltip v-if="scope.row.priceAmountWarn == 1" class="item"
                      effect="dark" content="补充标准数据异常" placement="top">
                      <i class="el-icon-warning-outline"></i>
                    </el-tooltip></span>
                </template>
              </el-table-column>
              <el-table-column prop="priceOldAmount" label="二手住房" min-width="150" align="center">
                <template slot-scope="scope">
                  <span>{{ scope.row.priceOldAmount }} <el-tooltip v-if="scope.row.twoPriceWarn == 1" class="item"
                      effect="dark" content="检测到多个购房情况请人工核对" placement="top">
                      <i class="el-icon-warning-outline"></i>
                    </el-tooltip></span>
                </template>
              </el-table-column>
            </el-table-column>
            <el-table-column prop="compensationAmount" label="补偿资金总额(万元)" min-width="160" align="center">
              <template slot-scope="scope">
                <span>{{ scope.row.compensationAmount }} <el-tooltip v-if="scope.row.compensationSumWarn == 1"
                    class="item" effect="dark" content="补偿总金额数据异常" placement="top">
                    <i class="el-icon-warning-outline"></i>
                  </el-tooltip></span>
              </template>
            </el-table-column>
            <el-table-column prop="downPaymentAmount" label="25%首付款(㎡)" min-width="150" align="center" />
            <el-table-column prop="quarterPayAmount" v-if="activeTab == '1'" label="每季度需支付款项(万元)" min-width="180"
              align="center">
              <template slot-scope="scope">
                <span>{{ scope.row.quarterPayAmount }} <el-tooltip v-if="scope.row.quarterPayAmountWarn == 1"
                    class="item" effect="dark" content="季度款金额数据异常" placement="top">
                    <i class="el-icon-warning-outline"></i>
                  </el-tooltip></span>
              </template>
            </el-table-column>
            <el-table-column prop="subsidyAmount" label="过渡补贴(万元)" min-width="180" align="center">
              <template slot-scope="scope">
                <span>{{ scope.row.subsidyAmount }} <el-tooltip v-if="scope.row.subsidyAmount == 1" class="item"
                    effect="dark" content="过渡补贴金额数据异常" placement="top">
                    <i class="el-icon-warning-outline"></i>
                  </el-tooltip></span>
              </template>
            </el-table-column>
          </el-table>
        </div>
        <div v-else>
          <!-- 购房信息表格 -->
          <el-table v-loading="loading" :data="tableData" border style="width: 100%" max-height="300px"
            :row-class-name="tableRowClassName1">
            <el-table-column type="index" label="序号" width="50" align="center" />
            <el-table-column prop="street" label="镇(街道)" min-width="100" align="center" />
            <el-table-column prop="projectName" label="拆迁项目名称" min-width="100" align="center" />
            <el-table-column prop="community" label="所在村(社区)" min-width="100" align="center" />
            <el-table-column prop="demolitionTime" label="拆迁时间" min-width="100" align="center" />
            <el-table-column prop="householdHead" label="户主姓名" min-width="100" align="center">
              <template slot-scope="scope">
                <span>{{ scope.row.householdHead }} <el-tooltip v-if="scope.row.householdHeadWarn == 1" class="item"
                    effect="dark" content="户主信息不存在于待安置人员库" placement="top">
                    <i class="el-icon-warning-outline"></i>
                  </el-tooltip></span>
              </template>
            </el-table-column>
            <el-table-column prop="idCard" label="身份证号" min-width="180" align="center">
              <template slot-scope="scope">
                {{ scope.row.idCard || '-' }} <el-tooltip v-if="scope.row.idCardWarn == 1" class="item" effect="dark"
                  content="身份信息不存在于待安置人员库" placement="top">
                  <i class="el-icon-warning-outline"></i>
                </el-tooltip>
              </template>
            </el-table-column>
            <el-table-column prop="totalPeople" label="合计" align="center" width="60">
            <el-table-column prop="mobile" label="联系电话" min-width="100" align="center">
              <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>
                {{ scope.row.mobile || '-' }}
              </template>
            </el-table-column>
            <el-table-column label="本次安置人数(人)" min-width="100" align="center">
              <el-table-column prop="currentCollectiveNum" label="集体经济组织成员" min-width="100" align="center">
                <template slot-scope="scope">
                  {{ scope.row.currentCollectiveNum || '-' }}
                </template>
              </el-table-column>
              <el-table-column prop="currentNoCollectiveNum" label="非集体经济组织成员" min-width="100" align="center" >
                <template slot-scope="scope">
                  {{ scope.row.currentNoCollectiveNum || '-' }}
                </template>
              </el-table-column>
              <el-table-column prop="currentCount" label="合计" min-width="100" align="center" />
            </el-table-column>
            <el-table-column prop="waitFamilyNames" label="待安置家庭成员姓名" min-width="100" align="center">
              <template slot-scope="scope">
                {{ scope.row.waitFamilyNames || '-' }} <el-tooltip v-if="scope.row.waitFamilyNamesWarn == 1"
                  class="item" effect="dark" content="身份信息存在重复数据" placement="top">
                  <i class="el-icon-warning-outline"></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">
            <el-table-column prop="waitFamilyArea" label="待安置人员应安置面积合计(㎡)" min-width="100" align="center">
              <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>
                <span>{{ scope.row.waitFamilyArea }} <el-tooltip v-if="scope.row.waitFamilyAreaWarn == 1" class="item"
                    effect="dark" content="应补偿面积数据异常" placement="top">
                    <i class="el-icon-warning-outline"></i>
                  </el-tooltip></span>
              </template>
            </el-table-column>
            <el-table-column prop="secondPayment" label="二手住房" align="center" width="80">
            <el-table-column label="补偿金额(万元)" min-width="100" align="center">
              <el-table-column prop="compensationNewAmount" label="新建商品住房、商业用房、停车位" min-width="100" align="center">
                <template slot-scope="scope">
                  <span>{{ scope.row.compensationNewAmount }} <el-tooltip v-if="scope.row.compensationAmountWarn == 1"
                      class="item" effect="dark" content="检测到多个购房情况请人工核对" placement="top">
                      <i class="el-icon-warning-outline"></i>
                    </el-tooltip></span>
                </template>
              </el-table-column>
              <el-table-column prop="compensationOldAmount" label="二手住房" min-width="100" align="center" />
              <el-table-column prop="compensationSum" label="合计" min-width="100" align="center">
                <template slot-scope="scope">
                  <span>{{ scope.row.compensationSum }} <el-tooltip v-if="scope.row.compensationSumWarn == 1"
                      class="item" effect="dark" content="补偿总金额数据异常" placement="top">
                      <i class="el-icon-warning-outline"></i>
                    </el-tooltip></span>
                </template>
              </el-table-column>
            </el-table-column>
            <el-table-column prop="downPaymentAmount" label="25%首付款(万元)" min-width="100" align="center" />
            <el-table-column prop="quarterPayAmount" v-if="activeTab == '2'" label="每季度需支付款项(万元)" min-width="100"
              align="center">
              <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>
                <span>{{ scope.row.quarterPayAmount }} <el-tooltip v-if="scope.row.quarterPayAmountWarn == 1"
                    class="item" effect="dark" content="季度款金额数据异常" placement="top">
                    <i class="el-icon-warning-outline"></i>
                  </el-tooltip></span>
              </template>
            </el-table-column>
            <el-table-column prop="totalPayment" label="合计" align="center" width="60">
            <el-table-column prop="subsidyAmount" label="过渡补贴(万元)" min-width="100" align="center">
              <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>
                <span>{{ scope.row.subsidyAmount }} <el-tooltip v-if="scope.row.subsidyAmount == 1" class="item"
                    effect="dark" content="过渡补贴金额数据异常" placement="top">
                    <i class="el-icon-warning-outline"></i>
                  </el-tooltip></span>
              </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>
            <el-table-column prop="remark" label="备注" min-width="100" align="center" />
            <el-table-column prop="certificateTime" label="凭证发放时间" min-width="100" align="center" />
            <el-table-column prop="buyTime" label="购房时间" min-width="100" align="center" />
            <el-table-column prop="dealAmount" label="成交金额(万元)" min-width="100" align="center" />
            <el-table-column label="新建商品住房" min-width="100" align="center">
              <el-table-column prop="newHousingName" label="楼盘名称" min-width="100" align="center" />
              <el-table-column prop="newHousingArea" label="面积(㎡)" min-width="100" align="center">
                <template slot-scope="scope">
                  <span>{{ scope.row.newHousingArea }} <el-tooltip v-if="scope.row.areaWarn == 1" class="item"
                      effect="dark" content="面积数据异常" placement="top">
                      <i class="el-icon-warning-outline"></i>
                    </el-tooltip></span>
                </template>
              </el-table-column>
              <el-table-column prop="newHousingNum" label="套数(套)" min-width="100" align="center" />
            </el-table-column>
            <el-table-column label="二手住房" min-width="100" align="center">
              <el-table-column prop="oldHousingName" label="小区名称" min-width="100" align="center" />
              <el-table-column prop="householdHead" label="面积(㎡)" min-width="100" align="center" />
              <el-table-column prop="householdHead" label="套数(套)" min-width="100" align="center" />
            </el-table-column>
            <el-table-column prop="householdHead" label="新建商业用房" min-width="100" align="center">
              <el-table-column prop="householdHead" label="楼盘名称" min-width="100" align="center" />
              <el-table-column prop="oldHousingArea" label="面积(㎡)" min-width="100" align="center" />
              <el-table-column prop="oldHousingNum" label="套数(套)" min-width="100" align="center" />
            </el-table-column>
            <el-table-column label="新建停车位" min-width="100" align="center">
              <el-table-column prop="newStopName" label="楼盘名称" min-width="100" align="center" />
              <el-table-column prop="newStopArea" label="金额(万元)" min-width="100" align="center" />
              <el-table-column prop="newStopNum" label="个数(个)" min-width="100" align="center" />
            </el-table-column>
            <el-table-column prop="signTime" label="自主购房协议签订时间" min-width="100" align="center" />
            <el-table-column prop="compensationPayTime" label="25%补偿款及过渡补贴支付时间" min-width="100" align="center" />
            <el-table-column label="剩余款项支付时间" min-width="100" align="center">
              <el-table-column prop="remainingTime1" label="第一年" min-width="100" align="center" />
              <el-table-column prop="remainingTime2" label="第二年" min-width="100" align="center" />
              <el-table-column prop="remainingTime3" label="第三年" min-width="100" align="center" />
              <el-table-column prop="remainingTime4" label="第四年" min-width="100" align="center" />
              <el-table-column prop="remainingTime5" label="第四年" min-width="100" align="center" />
            </el-table-column>
          </el-table>
        </div>
      </div>
      <!-- 右侧审核信息 -->
@@ -211,12 +242,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">{{ detailData.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">{{ detailData.createTime || '-' }}</div>
                  </div>
                </div>
              </div>
@@ -240,12 +271,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">{{ detailData.createUser || '-' }}</div>
                  </div>
                  <div class="approval-time-info">
                    <div class="approval-time-title">提交时间:</div>
                    <div class="approval-time">{{ submitTime }}</div>
                    <div class="approval-time">{{ detailData.createTime || '-' }}</div>
                  </div>
                </div>
              </div>
@@ -259,11 +290,11 @@
                <div class="info-line">
                  <div class="approver-info">
                    <div class="approver-title">审核人:</div>
                    <div class="approver-name">{{ auditorName }}</div>
                    <div class="approver-name">{{ detailData.approveName || '-' }}</div>
                  </div>
                  <div class="approval-time-info">
                    <div class="approval-time-title">审核时间:</div>
                    <div class="approval-time">{{ auditTime }}</div>
                    <div class="approval-time">{{ detailData.approveTime || '-' }}</div>
                  </div>
                </div>
              </div>
@@ -274,27 +305,27 @@
    </div>
    <!-- 警告信息 -->
    <div class="warning-info" v-if="hasWarning && type === 'audit'">
    <!-- <div class="warning-info" v-if="hasWarning && type === 'audit'">
      <div class="warning-text">
        注意: 系统检测到该申请表中存在异常数据,请仔细核实!
      </div>
    </div>
    </div> -->
    <!-- 审核结果区域 -->
    <div class="audit-section">
      <div class="audit-result" v-if="type === 'audit'">
      <div class="audit-result">
        <div class="result-title">审核结果</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 :disabled="type === 'detail'" v-model="form.status">
            <el-radio label="1">通过</el-radio>
            <el-radio label="2">驳回</el-radio>
          </el-radio-group>
        </div>
      </div>
      <div class="audit-comment">
        <div class="comment-title">审批意见</div>
        <el-input type="textarea" :rows="4" placeholder="请输入审批意见" v-model="form.auditComment"
        <el-input type="textarea" :rows="4" placeholder="请输入审批意见" v-model="form.reason"
          :disabled="type === 'detail'"></el-input>
      </div>
    </div>
@@ -308,6 +339,7 @@
</template>
<script>
import { getPlacementBatchDetail } from '@/api/placement-details'
export default {
  name: "ApprovalDialog",
  props: {
@@ -326,124 +358,32 @@
      type: Object,
      default: () => ({}),
    },
    placementBatchId: {
      type: Number,
      default: "",
    },
  },
  data() {
    return {
      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', ''
      activeTab: "1",
      detailData: {},
      loading: false,
      form: {
        auditResult: "pass",
        auditComment: "",
        status: "pass",
        reason: "",
      },
      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,
        },
      ],
      queryParams: {
        pageNum: 1,
        pageSize: 1000000,
      },
      tableData: [],
    };
  },
  watch: {
    visible(val) {
      this.dialogVisible = val;
@@ -455,12 +395,36 @@
      handler(newVal) {
        if (newVal && Object.keys(newVal).length > 0) {
          // 如果有传入数据,可以在这里处理
        }
      },
      immediate: true,
    },
  },
  methods: {
    openDialog() {
      this.getList()
    },
    /** 查询列表 */
    getList() {
      this.loading = true
      // TODO: 调用接口获取数据
      getPlacementBatchDetail({ ...this.queryParams, placementBatchId: this.placementBatchId, type: this.activeTab,}).then(res => {
        if (res.code == 200) {
          this.tableData = this.activeTab == '1' ? res.data.assetList : res.data.householdList
          this.detailData = res.data.placementBatch
          this.total = res.data.total
          res.data.placementBatch.status = res.data.placementBatch.status.toString()
          this.form = res.data.placementBatch
          this.loading = false
        }
      })
    },
    /** Tab切换操作 */
    handleTabClick(tab) {
      this.activeTab = tab.name
      this.getList()
    },
    tableRowClassName({ row, rowIndex }) {
      if (row.hasError) {
        return "error-row";
@@ -468,22 +432,22 @@
      return "";
    },
    cancelAudit() {
      this.dialogVisible = false;
      this.$emit('close')
      this.resetForm();
    },
    submitAudit() {
      // 提交审核
      this.$emit("audit-submit", {
        result: this.form.auditResult,
        comment: this.form.auditComment,
        status: this.form.status,
        reason: this.form.reason,
        id: this.placementBatchId,
      });
      this.dialogVisible = false;
      this.resetForm();
    },
    resetForm() {
      this.form = {
        auditResult: "pass",
        auditComment: "",
        status: "pass",
        reason: "",
      };
    },
  },
src/views/placement-batch/components/exportMoneyApplay.vue
@@ -1,13 +1,14 @@
<template>
  <el-dialog title="导入人员购房资金申请" :visible.sync="visible" width="600px" :close-on-click-modal="false" append-to-body>
  <el-dialog :title="title" :visible.sync="visible" width="600px" @open="open" @close=""
    :close-on-click-modal="false" append-to-body>
    <el-form ref="form" :model="form" :rules="rules" label-width="120px">
      <el-form-item label="批次号" prop="batchNumber">
        <el-input v-model="form.batchNumber" placeholder="请输入" clearable></el-input>
        <el-input :disabled="batchNumber" v-model="form.batchNumber" placeholder="请输入" clearable></el-input>
      </el-form-item>
      <div>
        <el-form-item label="导入资金表" prop="assetFile">
        <el-form-item label="导入资金表" prop="assetFile" v-if="type != 2">
          <el-upload class="upload-container" action="#" drag :auto-upload="false" accept=".xlsx,.xls"
            :on-change="handlehouseholdFileChangePrice"  :limit="1">
            :on-change="handlehouseholdFileChangePrice" :limit="1">
            <div class="upload-area">
              <i class="el-icon-folder"></i>
              <div class="upload-text">点击或将文件文件拖拽到这里上传</div>
@@ -19,7 +20,7 @@
          </el-upload>
        </el-form-item>
        <el-form-item label="导入购房表" prop="householdFile">
        <el-form-item label="导入购房表" prop="householdFile" v-if="type != 1">
          <el-upload class="upload-container" action="#" drag :auto-upload="false" accept=".xlsx,.xls"
            :on-change="handlehouseholdFileChange" :limit="1">
            <div class="upload-area">
@@ -48,6 +49,18 @@
    visible: {
      type: Boolean,
      default: false
    },
    type: {
      type: Number,
      default: 3
    },
    title: {
      type: String,
      default: '导入自主购房安置资金申请'
    },
    batchNumber: {
      type: String,
      default: ''
    }
  },
  data() {
@@ -73,6 +86,9 @@
    }
  },
  methods: {
    open() {
      this.form.batchNumber = JSON.parse(JSON.stringify(this.batchNumber))
    },
    handlehouseholdFileChange(file, fileList) {
      this.form.householdFile = file.raw
      this.$refs.form.validateField('householdFile')
@@ -102,7 +118,7 @@
      this.$refs.form.validate(valid => {
        if (valid) {
          this.loading = true
            this.$emit('importPrice', this.form)
          this.$emit('importPrice', this.form)
          setTimeout(() => {
            this.loading = false
            this.resetForm()
@@ -128,6 +144,7 @@
  width: 100%;
  height: unset !important;
}
.upload-container {
  .upload-area {
    width: 100%;
src/views/placement-batch/index.vue
@@ -22,9 +22,9 @@
    <!-- 功能按钮区域 -->
    <div class="button-container">
      <el-button type="primary" size="small" @click="handleImportAll">新增资金批次</el-button>
      <el-button type="success" size="small" @click="handleExportTemplate">下载资金导入模版</el-button>
      <el-button type="success" size="small" @click="handleImportTemplate">下载购房信息表导入模版</el-button>
      <el-button type="primary" size="small" v-permission="['placement-batch/add']" @click="handleImportAll">新增资金批次</el-button>
      <el-button type="success" size="small" v-permission="['placement-batch/downLoad']" @click="handleExportTemplate">下载资金导入模版</el-button>
      <el-button type="success" size="small" v-permission="['placement-batch/down']" @click="handleImportTemplate">下载购房信息表导入模版</el-button>
    </div>
    <!-- 表格区域 -->
@@ -50,21 +50,25 @@
      </el-table-column>
      <el-table-column label="操作" align="center" width="200">
        <template slot-scope="scope">
          <el-button size="mini" type="text" @click="handleView(scope.row)">详情</el-button>
          <el-button size="mini" type="text" @click="handleView(scope.row)">查看</el-button>
          <el-button size="mini" type="text" @click="handleApproval(scope.row)">审核</el-button>
          <el-button size="mini" type="text" @click="handleDelete(scope.row)">删除</el-button>
          <el-button size="mini" v-permission="['placement-batch/detail']" v-if="scope.row.status != '0'" type="text" @click="handleView(scope.row)">详情</el-button>
          <el-button size="mini" v-permission="['placement-batch/view']" type="text" @click="handleViewDetail(scope.row)">查看</el-button>
          <el-button size="mini" v-permission="['placement-batch/approval']"  v-if="scope.row.status == '0'" type="text" @click="handleApproval(scope.row)">审核</el-button>
          <el-button size="mini" v-permission="['placement-batch/del']" v-if="scope.row.status == '1'" type="text" @click="handleDelete(scope.row)">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
    <!-- 分页区域 -->
    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
      @pagination="getList" />
    <div class="pagination-container">
      <el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange"
        :current-page="queryParams.pageNum" :page-sizes="[10, 20, 30, 40]" :page-size="queryParams.pageSize"
        layout="total, sizes, prev, pager, next, jumper" :total="total">
      </el-pagination>
      </div>
    <export-money-applay :visible.sync="dialogVisible" @importPrice="importPrice" />
    <approval-dialog :visible.sync="approvalDialogVisible" />
  </div>
      <export-money-applay :visible.sync="dialogVisible"  @importPrice="importPrice" @close="dialogVisible = false" />
      <approval-dialog :visible.sync="approvalDialogVisible" :type="type" @audit-submit="auditSubmit"  :placementBatchId="placementBatchId" @close="approvalDialogVisible = false" />
    </div>
</template>
<script>
@@ -74,7 +78,8 @@
import {
  getPlacementBatchList,
  deletePlacementBatch,
  importPlacementBatch
  importPlacementBatch,
  auditPlacementBatch
} from '@/api/placement-details'
export default {
@@ -95,6 +100,10 @@
      total: 0,
      // 表格数据
      tableData: [],
      // 安置批次id
      placementBatchId: 0,
      // 审核类型
      type: 'audit',
      // 查询参数
      queryParams: {
        pageNum: 1,
@@ -135,6 +144,17 @@
      }
      this.getList()
    },
    /** 分页 */
    handleSizeChange(size) {
      this.queryParams.pageSize = size
      this.getList()
    },
    /** 分页 */
    handleCurrentChange(page) {
      this.queryParams.pageNum = page
      this.getList()
    },
    /** 导入资金批次 */
    handleImportAll() {
      // TODO: 实现导出逻辑
@@ -152,7 +172,6 @@
    },
    /** 导入资金批次 */
    importPrice(form) {
      console.log('//////////////', form)
      let formData = new FormData()
      formData.append('assetFile', form.assetFile)
      formData.append('householdFile', form.householdFile)
@@ -168,11 +187,33 @@
    /** 查看详情按钮操作 */
    handleView(row) {
      // TODO: 实现查看详情逻辑
      this.$router.push('/placement/batch/personnel?id=' + row.id)
      this.type = 'detail'
      this.placementBatchId = row.id
      this.approvalDialogVisible = true
    },
    /** 查看详情按钮操作 */
    handleViewDetail(row) {
      // TODO: 实现查看详情逻辑
     this.$router.push(`/placement/batch/personnel?id=${row.id}`)
    },
    /** 审核按钮操作 */
    handleApproval(row) {
      // TODO: 实现编辑逻辑
      this.type = 'audit'
      this.placementBatchId = row.id
      this.approvalDialogVisible = true
    },
    /** 审核提交 */
    auditSubmit(data) {
      // TODO: 实现审核提交逻辑
      auditPlacementBatch(data).then(res => {
        if (res.code == 200) {
          this.$message.success('审核成功')
          this.placementBatchId = 0
          this.approvalDialogVisible = false
          this.getList()
        }
      })
    },
    /** 删除按钮操作 */
    handleDelete(row) {
src/views/placement-batch/person.vue
@@ -62,7 +62,7 @@
    <!-- 功能按钮区域 -->
    <div class="button-container">
      <el-button type="primary" size="small" @click="handleExport">新增安置户记录</el-button>
      <el-button type="primary" size="small" @click="handleAdd">新增安置户记录</el-button>
      <el-button type="success" size="small" @click="handleDownloadTemplate">下载导入模板</el-button>
      <el-button type="primary" size="small" @click="handleImport">批量导入</el-button>
      <el-button type="danger" size="small" @click="handleExportSelected">问题数据导出</el-button>
@@ -84,7 +84,14 @@
              </el-tooltip></span>
          </template>
        </el-table-column>
        <el-table-column prop="idCard" label="身份证号" min-width="180" align="center" />
        <el-table-column prop="idCard" label="身份证号" min-width="180" align="center">
          <template slot-scope="scope">
            {{ scope.row.idCard || '-' }} <el-tooltip v-if="scope.row.idCardWarn == 1" class="item" effect="dark"
              content="身份信息不存在于待安置人员库" placement="top">
              <i class="el-icon-warning-outline"></i>
            </el-tooltip>
          </template>
        </el-table-column>
        <el-table-column prop="resettledNum" label="应安置人数(人)" min-width="140" align="center" />
        <el-table-column label="所有家庭人员应安置面积(㎡)" prop="resettledArea" min-width="160" align="center">
          <template slot-scope="scope">
@@ -97,15 +104,22 @@
        <el-table-column label="补偿单位标准(万元)" min-width="160" align="center">
          <el-table-column prop="priceNewAmount" label="新建商品住房、商业用房、停车位" min-width="160" align="center">
            <template slot-scope="scope">
              <span>{{ scope.row.priceNewAmount }} <el-tooltip v-if="scope.row.priceNewAmountWarn == 1" class="item"
              <span>{{ scope.row.priceNewAmount }} <el-tooltip v-if="scope.row.priceAmountWarn == 1" class="item"
                  effect="dark" content="补充标准数据异常" placement="top">
                  <i class="el-icon-warning-outline"></i>
                </el-tooltip></span>
            </template>
          </el-table-column>
          <el-table-column prop="priceOldAmount" label="二手住房" min-width="150" align="center" />
          <el-table-column prop="priceOldAmount" label="二手住房" min-width="150" align="center">
            <template slot-scope="scope">
              <span>{{ scope.row.priceOldAmount }} <el-tooltip v-if="scope.row.twoPriceWarn == 1" class="item"
                  effect="dark" content="检测到多个购房情况请人工核对" placement="top">
                  <i class="el-icon-warning-outline"></i>
                </el-tooltip></span>
            </template>
          </el-table-column>
        </el-table-column>
        <el-table-column prop="compensationAmount" label="补偿资金总额(万元)" min-width="160" align="center" >
        <el-table-column prop="compensationAmount" label="补偿资金总额(万元)" min-width="160" align="center">
          <template slot-scope="scope">
            <span>{{ scope.row.compensationAmount }} <el-tooltip v-if="scope.row.compensationSumWarn == 1" class="item"
                effect="dark" content="补偿总金额数据异常" placement="top">
@@ -115,15 +129,22 @@
        </el-table-column>
        <el-table-column prop="downPaymentAmount" label="25%首付款(㎡)" min-width="150" align="center" />
        <el-table-column prop="quarterPayAmount" v-if="activeTab == 'fullReport'" label="每季度需支付款项(万元)" min-width="180"
          align="center" >
          align="center">
          <template slot-scope="scope">
            <span>{{ scope.row.quarterPayAmount }} <el-tooltip v-if="scope.row.quarterPayAmountWarn == 1" class="item"
                effect="dark" content="季度款数据异常" placement="top">
                effect="dark" content="季度款金额数据异常" placement="top">
                <i class="el-icon-warning-outline"></i>
              </el-tooltip></span>
          </template>
        </el-table-column>
        <el-table-column prop="subsidyAmount" label="过渡补贴(万元)" min-width="180" align="center" />
        <el-table-column prop="subsidyAmount" label="过渡补贴(万元)" min-width="180" align="center">
          <template slot-scope="scope">
            <span>{{ scope.row.subsidyAmount }} <el-tooltip v-if="scope.row.subsidyAmount == 1" class="item"
                effect="dark" content="过渡补贴金额数据异常" placement="top">
                <i class="el-icon-warning-outline"></i>
              </el-tooltip></span>
          </template>
        </el-table-column>
        <el-table-column label="操作" prop="operation" fixed="right" width="180" align="center">
          <template slot-scope="scope" v-if="activeTab == 'fullReport'">
            <el-button type="text" size="small" @click="handleView(scope.row)">详情</el-button>
@@ -134,8 +155,12 @@
      </el-table>
      <!-- 分页区域 -->
      <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
        @pagination="getList" />
      <div class="pagination-container">
        <el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange"
          :current-page="queryParams.pageNum" :page-sizes="[10, 20, 30, 40]" :page-size="queryParams.pageSize"
          layout="total, sizes, prev, pager, next, jumper" :total="total">
        </el-pagination>
      </div>
    </div>
    <div v-else>
      <!-- 购房信息表格 -->
@@ -146,33 +171,103 @@
        <el-table-column prop="community" label="所在村(社区)" min-width="100" align="center" />
        <el-table-column prop="demolitionTime" label="拆迁时间" min-width="100" align="center" />
        <el-table-column prop="householdHead" label="户主姓名" min-width="100" align="center">
          <template slot-scope="scope">
            <span>{{ scope.row.householdHead }} <el-tooltip v-if="scope.row.householdHeadWarn == 1" class="item"
                effect="dark" content="户主信息不存在于待安置人员库" placement="top">
                <i class="el-icon-warning-outline"></i>
              </el-tooltip></span>
          </template>
        </el-table-column>
        <el-table-column prop="idCard" label="身份证号" min-width="180" align="center" />
        <el-table-column prop="mobile" label="联系电话" min-width="100" align="center" />
        <el-table-column prop="idCard" label="身份证号" min-width="180" align="center">
          <template slot-scope="scope">
            {{ scope.row.idCard || '-' }} <el-tooltip v-if="scope.row.idCardWarn == 1" class="item" effect="dark"
              content="身份信息不存在于待安置人员库" placement="top">
              <i class="el-icon-warning-outline"></i>
            </el-tooltip>
          </template>
        </el-table-column>
        <el-table-column prop="mobile" label="联系电话" min-width="100" align="center">
          <template slot-scope="scope">
            {{ scope.row.mobile || '-' }}
          </template>
        </el-table-column>
        <el-table-column label="本次安置人数(人)" min-width="100" align="center">
          <el-table-column prop="currentCollectiveNum" label="集体经济组织成员" min-width="100" align="center" />
          <el-table-column prop="currentCollectiveNum" label="集体经济组织成员" min-width="100" align="center">
            <template slot-scope="scope">
              {{ scope.row.currentCollectiveNum || '-' }}
            </template>
          </el-table-column>
          <el-table-column prop="currentNoCollectiveNum" label="非集体经济组织成员" min-width="100" align="center" />
          <el-table-column prop="currentCount" label="合计" min-width="100" align="center" />
        </el-table-column>
        <el-table-column prop="waitFamilyNames" label="待安置家庭成员姓名" min-width="100" align="center" />
        <el-table-column prop="waitFamilyArea" label="待安置人员应安置面积合计(㎡)" min-width="100" align="center" />
        <el-table-column prop="waitFamilyNames" label="待安置家庭成员姓名" min-width="100" align="center">
          <template slot-scope="scope">
            {{ scope.row.waitFamilyNames || '-' }} <el-tooltip v-if="scope.row.waitFamilyNamesWarn == 1" class="item"
              effect="dark" content="身份信息存在重复数据" placement="top">
              <i class="el-icon-warning-outline"></i>
            </el-tooltip>
          </template>
        </el-table-column>
        <el-table-column prop="waitFamilyArea" label="待安置人员应安置面积合计(㎡)" min-width="100" align="center">
          <template slot-scope="scope">
            <span>{{ scope.row.waitFamilyArea }} <el-tooltip v-if="scope.row.waitFamilyAreaWarn == 1" class="item"
                effect="dark" content="应补偿面积数据异常" placement="top">
                <i class="el-icon-warning-outline"></i>
              </el-tooltip></span>
          </template>
        </el-table-column>
        <el-table-column label="补偿金额(万元)" min-width="100" align="center">
          <el-table-column prop="compensationNewAmount" label="新建商品住房、商业用房、停车位" min-width="100" align="center" />
          <el-table-column prop="compensationNewAmount" label="新建商品住房、商业用房、停车位" min-width="100" align="center">
            <template slot-scope="scope">
              <span>{{ scope.row.compensationNewAmount }} <el-tooltip v-if="scope.row.compensationAmountWarn == 1"
                  class="item" effect="dark" content="检测到多个购房情况请人工核对" placement="top">
                  <i class="el-icon-warning-outline"></i>
                </el-tooltip></span>
            </template>
          </el-table-column>
          <el-table-column prop="compensationOldAmount" label="二手住房" min-width="100" align="center" />
          <el-table-column prop="compensationSum" label="合计" min-width="100" align="center" />
          <el-table-column prop="compensationSum" label="合计" min-width="100" align="center">
            <template slot-scope="scope">
              <span>{{ scope.row.compensationSum }} <el-tooltip v-if="scope.row.compensationSumWarn == 1" class="item"
                  effect="dark" content="补偿总金额数据异常" placement="top">
                  <i class="el-icon-warning-outline"></i>
                </el-tooltip></span>
            </template>
          </el-table-column>
        </el-table-column>
        <el-table-column prop="downPaymentAmount" label="25%首付款(万元)" min-width="100" align="center" />
        <el-table-column prop="quarterPayAmount" v-if="activeTab == 'houseInfo'" label="每季度需支付款项(万元)" min-width="100"
          align="center" />
        <el-table-column prop="subsidyAmount" label="过渡补贴(万元)" min-width="100" align="center" />
          align="center">
          <template slot-scope="scope">
            <span>{{ scope.row.quarterPayAmount }} <el-tooltip v-if="scope.row.quarterPayAmountWarn == 1" class="item"
                effect="dark" content="季度款金额数据异常" placement="top">
                <i class="el-icon-warning-outline"></i>
              </el-tooltip></span>
          </template>
        </el-table-column>
        <el-table-column prop="subsidyAmount" label="过渡补贴(万元)" min-width="100" align="center">
          <template slot-scope="scope">
            <span>{{ scope.row.subsidyAmount }} <el-tooltip v-if="scope.row.subsidyAmount == 1" class="item"
                effect="dark" content="过渡补贴金额数据异常" placement="top">
                <i class="el-icon-warning-outline"></i>
              </el-tooltip></span>
          </template>
        </el-table-column>
        <el-table-column prop="remark" label="备注" min-width="100" align="center" />
        <el-table-column prop="certificateTime" label="凭证发放时间" min-width="100" align="center" />
        <el-table-column prop="buyTime" label="购房时间" min-width="100" align="center" />
        <el-table-column prop="dealAmount" label="成交金额(万元)" min-width="100" align="center" />
        <el-table-column label="新建商品住房" min-width="100" align="center">
          <el-table-column prop="newHousingName" label="楼盘名称" min-width="100" align="center" />
          <el-table-column prop="newHousingArea" label="面积(㎡)" min-width="100" align="center" />
          <el-table-column prop="newHousingArea" label="面积(㎡)" min-width="100" align="center">
            <template slot-scope="scope">
              <span>{{ scope.row.newHousingArea }} <el-tooltip v-if="scope.row.areaWarn == 1" class="item" effect="dark"
                  content="面积数据异常" placement="top">
                  <i class="el-icon-warning-outline"></i>
                </el-tooltip></span>
            </template>
          </el-table-column>
          <el-table-column prop="newHousingNum" label="套数(套)" min-width="100" align="center" />
        </el-table-column>
        <el-table-column label="二手住房" min-width="100" align="center">
@@ -208,25 +303,41 @@
        </el-table-column>
      </el-table>
      <!-- 分页区域 -->
      <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
        @pagination="getHouseList" />
      <div class="pagination-container">
        <el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange"
          :current-page="queryParams.pageNum" :page-sizes="[10, 20, 30, 40]" :page-size="queryParams.pageSize"
          layout="total, sizes, prev, pager, next, jumper" :total="total">
        </el-pagination>
      </div>
    </div>
    <!-- :title="activeTab == 'fullReport' ? '导入资金表' : '导入购房信息表'" -->
    <export-money-applay @close="dialogVisible = false" :visible.sync="dialogVisible"
      :batchNumber="detailData.batchNumber" @importPrice="importPrice" :type="activeTab == 'fullReport' ? 1 : 2" />
  </div>
</template>
<script>
import { getPlacementBatchDetail } from '@/api/placement-details'
import { downLoad,exportExcell } from '@/utils'
import {
  getPlacementBatchDetail,
  deletePlacementBatchMoney,
  deletePlacementBatchHouse,
  importPlacementBatch
} from '@/api/placement-details'
import ExportMoneyApplay from './components/exportMoneyApplay.vue'
import { downLoad, exportExcell } from '@/utils'
export default {
  name: 'PlacementPerson',
  components: {},
  components: {
    ExportMoneyApplay
  },
  data() {
    return {
      // 遮罩层
      loading: false,
      // 选中数组
      selectedRows: [],
      // 弹窗
      dialogVisible: false,
      // 非单个禁用
      single: true,
      // 非多个禁用
@@ -291,16 +402,41 @@
      this.getList()
    },
    tableRowClassName({ row, rowIndex }) {
      if (row.householdHeadWarn == 1 || row.waitFamilyAreaWarn == 1 || row.compensationSumWarn == 1 || row.quarterPayAmountWarn == 1) {
      if (row.compensationSumWarn == 1 || row.householdHeadWarn == 1 || row.idCardWarn == 1 || row.priceAmountWarn == 1 || row.quarterPayAmountWarn == 1 || row.subsidyAmountWarn == 1 || row.twoPriceWarn == 1 || row.waitFamilyAreaWarn == 1) {
        return 'warning-row'
      }
      return ''
    },
    tableRowClassName1({ row, rowIndex }) {
      if (row.areaWarn == 1 || row.compensationSumWarn == 1 || row.idCardWarn == 1 || row.waitFamilyNamesWarn == 1) {
      if (row.areaWarn == 1 || row.compensationAmountWarn == 1 || row.compensationSumWarn == 1 || row.householdHeadWarn == 1 || row.idCardWarn == 1 || row.waitFamilyAreaWarn == 1 || row.waitFamilyNamesWarn == 1 || row.subsidyAmountWarn == 1 || row.quarterPayAmountWarn == 1) {
        return 'warning-row'
      }
      return ''
    },
    importPrice(form) {
      let formData = new FormData()
      formData.append('assetFile', form.assetFile)
      formData.append('householdFile', form.householdFile)
      formData.append('batchNumber', form.batchNumber)
      formData.append('id', this.$route.query.id)
      importPlacementBatch(formData).then(res => {
        if (res.code == 200) {
          this.$message.success('导入成功')
          this.dialogVisible = false
          this.getList()
        }
      })
    },
    /** 分页 */
    handleSizeChange(size) {
      this.queryParams.pageSize = size
      this.getList()
    },
    /** 分页 */
    handleCurrentChange(page) {
      this.queryParams.pageNum = page
      this.getList()
    },
    /** 重置按钮操作 */
    handleReset() {
@@ -337,6 +473,11 @@
    /** 新增按钮操作 */
    handleAdd() {
      // TODO: 实现新增逻辑
      if (this.activeTab == 'fullReport') {
        this.$router.push('/placement/batch/addResettle?id=' + this.$route.query.id)
      } else {
        this.$router.push('/placement/batch/applayPerson?id=' + this.$route.query.id)
      }
    },
    /** 导出操作 */
    handleExport() {
@@ -350,27 +491,61 @@
    /** 导入操作 */
    handleImport() {
      // TODO: 实现导入逻辑
      this.dialogVisible = true
    },
    /** 导出选中记录 */
    handleExportSelected() {
      // TODO: 实现导出选中记录逻辑
      exportExcell(`placement-batch/problem-export`,{
      exportExcell(`${this.activeTab == 'fullReport' ? '资金问题数据' : '购房信息问题数据'}.xlsx`, {
        ...this.queryParams,
        placementBatchId: this.$route.query.id,
        type: this.activeTab == 'fullReport' ? 1 : 2
      }, `${this.activeTab == 'fullReport' ? '资金问题数据' : '购房信息问题数据'}.xlsx`)
      }, `/placement-batch/problem-export`)
    },
    /** 查看详情按钮操作 */
    handleView(row) {
      // TODO: 实现查看详情逻辑
      if (this.activeTab == 'fullReport') {
        this.$router.push('/placement/batch/resettleDetail?id=' + this.$route.query.id + '&type=detail' + '&moneyId=' + row.id)
      } else {
        this.$router.push('/placement/batch/applayPersonDetail?id=' + this.$route.query.id + '&type=detail' + '&houseId=' + row.id)
      }
    },
    /** 编辑按钮操作 */
    handleEdit(row) {
      // TODO: 实现编辑逻辑
      if (this.activeTab == 'fullReport') {
        this.$router.push('/placement/batch/editResettle?id=' + this.$route.query.id + '&type=edit' + '&moneyId=' + row.id)
      } else {
        this.$router.push('/placement/batch/editApplayPerson?id=' + this.$route.query.id + '&type=edit' + '&houseId=' + row.id)
      }
    },
    /** 删除按钮操作 */
    handleDelete(row) {
      // TODO: 实现删除逻辑
      this.$confirm('确定删除该条资金记录吗?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        if (this.activeTab == 'fullReport') {
          deletePlacementBatchMoney({ id: row.id }).then(res => {
            if (res.code == 200) {
              this.$message.success('删除成功')
              this.getList()
            }
          })
        } else {
          deletePlacementBatchHouse({ id: row.id }).then(res => {
            if (res.code == 200) {
              this.$message.success('删除成功')
              this.getList()
            }
          })
        }
      })
    },
    /** 获取购房信息列表 */
    getHouseList() {