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