完成审计报告生成功能页面

This commit is contained in:
2026-03-10 22:51:53 +08:00
parent 92a6a32868
commit 65235ec961
11 changed files with 2732 additions and 283 deletions

View File

@@ -513,7 +513,7 @@
</a-drawer>
</template>
<script lang="ts" setup>
import { ref, reactive, watch, onMounted, onUnmounted, computed } from 'vue';
import { ref, reactive, watch, onMounted, onUnmounted, computed, nextTick } from 'vue';
import { Form, message, Modal, TableProps } from 'ant-design-vue';
import { assignObject } from 'ele-admin-pro';
import { copyText } from '@/utils/common';
@@ -608,7 +608,8 @@
caseIndex: '',
projectName: '',
auditedTarget: '',
auditMatter: ''
auditMatter: '',
auditMatterType: '' // 审计事项类型编码code
});
const evidenceSelectedRows = ref<any[]>([]);
@@ -750,25 +751,63 @@
fileModal.value.open(tableInfo.tableKey);
};
/**
* 根据表格类型获取审计事项类型编码
*/
const getAuditMatterTypeByTable = (tableValue: string): string => {
// 根据 AuditMatterTypeEnum 枚举映射
const mapping: Record<string, string> = {
'eightReg': 'eightReg', // 八项规定
'expense': 'expense', // 决策支出表
'leaderList': 'leaderList', // 领导班子名单
'strategyAudit': 'strategyAudit', // 单位发展战略执行
'decisionTable': 'decisionTable', // 重大经济决策调查表
'tripleOne': 'tripleOne', // 三重一大
'target': 'target', // 目标责任制完成情况表
'budgetExecution': 'budgetExecution', // 预算执行情况审计
'budgetManage': 'budgetManage', // 预算管理审计
'assets': 'assets', // 国有资产管理审计
'investmentSituation': 'investmentSituation', // 重大投资情况
'internalControl': 'internalControl', // 内部控制测试表
'personnel': 'personnel', // 人员编制管理审计
'partyConduct': 'partyConduct', // 党风廉政建设责任制审计
'history': 'history' // 历史审计问题整改
};
return mapping[tableValue] || tableValue;
};
/* 打开取证单预览弹窗 */
const openEvidenceModal = (sectionIndex: number) => {
const section: any = navigationItems.value[sectionIndex];
const tableInfo = getTableInfo(sectionIndex);
evidenceBaseInfo.caseIndex =
(form as any).caseIndex || props.data?.caseIndex || '';
evidenceBaseInfo.projectName = form.name || props.data?.name || '';
evidenceBaseInfo.auditedTarget =
(form as any).nickname || (props.data as any)?.nickname || '';
const baseMatter = section?.title || section?.name || '';
const tableTitle = tableInfo?.currentTable?.title || '';
// 设置审计事项类型(根据当前表格类型)- 使用 code 而不是 value
const auditMatterTypeCode = getAuditMatterTypeByTable(tableInfo?.currentTable?.value);
console.log('openEvidenceModal - tableValue:', tableInfo?.currentTable?.value);
console.log('openEvidenceModal - auditMatterTypeCode:', auditMatterTypeCode);
// 逐个字段赋值确保响应式更新
evidenceBaseInfo.caseIndex = (form as any).caseIndex || props.data?.caseIndex || '';
evidenceBaseInfo.projectName = form.name || props.data?.name || '';
evidenceBaseInfo.auditedTarget = (form as any).nickname || (props.data as any)?.nickname || '';
evidenceBaseInfo.auditMatter = tableTitle
? `${baseMatter ? `${baseMatter} - ` : ''}${tableTitle}`
: baseMatter;
evidenceBaseInfo.auditMatterType = auditMatterTypeCode; // 关键:设置审计事项类型编码
console.log('openEvidenceModal - evidenceBaseInfo:', evidenceBaseInfo);
console.log('openEvidenceModal - evidenceBaseInfo.auditMatterType:', evidenceBaseInfo.auditMatterType);
evidenceSelectedRows.value = selectedRowsMap[sectionIndex] || [];
evidenceModalVisible.value = true;
// 关键:使用 nextTick 确保响应式更新完成后再打开弹窗
nextTick(() => {
console.log('nextTick - evidenceBaseInfo.auditMatterType:', evidenceBaseInfo.auditMatterType);
evidenceModalVisible.value = true;
});
};
/* 保存表格生成数据 */
@@ -1060,6 +1099,12 @@
section?.title ||
section?.name ||
'';
// 关键:设置审计事项类型编码(根据当前表格类型)
const auditMatterTypeCode = getAuditMatterTypeByTable(currentTable.value);
console.log('generateEvidence - tableValue:', currentTable.value);
console.log('generateEvidence - auditMatterTypeCode:', auditMatterTypeCode);
evidenceBaseInfo.auditMatterType = auditMatterTypeCode;
// 将生成的取证单数据作为选中的行数据传入,包含所有字段
const evidenceData = {
@@ -1097,7 +1142,12 @@
};
evidenceSelectedRows.value = [evidenceData];
evidenceModalVisible.value = true;
// 关键:使用 nextTick 确保响应式更新完成后再打开弹窗
nextTick(() => {
console.log('generateEvidence nextTick - evidenceBaseInfo.auditMatterType:', evidenceBaseInfo.auditMatterType);
evidenceModalVisible.value = true;
});
} else {
throw new Error(
apiResult.data?.error || apiResult.message || '生成取证单失败'