chore(config): 添加项目配置文件和隐私协议

- 新增 .editorconfig 文件统一代码风格配置
- 新增 .env 环境变量配置文件
- 添加开发和生产环境的环境变量配置
- 配置 ESLint 忽略规则文件
- 设置代码检查配置文件 .eslintrc.js
- 添加 Git 忽略文件规则
- 创建 Prettier 格式化忽略规则
- 添加隐私政策和服务协议HTML文件
- 实现访问密钥编辑组件基础结构
This commit is contained in:
2026-02-07 16:33:13 +08:00
commit 92a6a32868
1384 changed files with 224513 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
export default [
{
title: '序号',
dataIndex: 'index',
key: 'index',
width: 80,
align: 'center'
},
{
title: '重大经济决策事项',
dataIndex: 'name',
key: 'name'
},
{
title: '会议时间',
dataIndex: 'content',
key: 'content',
width: 120
},
{
title: '决策事项金额',
dataIndex: 'amount',
key: 'amount',
width: 120
},
{
title: '程序程序',
dataIndex: 'progress',
key: 'progress',
width: 300
},
{
title: '执行情况(是/否)',
dataIndex: 'done',
key: 'done'
},
{
title: '执行效果(是否实现决策目标)',
children: [
{
title: '好',
dataIndex: 'goods'
},
{
title: '一般',
dataIndex: 'normal'
},
{
title: '差',
dataIndex: 'bad'
}
]
}
];

View File

@@ -0,0 +1,85 @@
// 导入Vue相关依赖
import { ref } from 'vue';
// 当前章节的ref
const currentSection = ref(0);
// 滚动到指定章节
export const scrollToSection = (index: number) => {
const element = document.getElementById(`section-${index}`);
if (element) {
element.scrollIntoView({
behavior: 'smooth',
block: 'start'
});
}
};
// 获取滚动容器
export const getScrollContainer = () => {
const drawer = document.querySelector('.ant-drawer-body');
return drawer || document.querySelector('.ant-modal-body') || document.documentElement;
};
// 监听滚动位置更新当前章节
export const handleScroll = () => {
const scrollContainer = getScrollContainer();
if (!scrollContainer) return;
const containerScrollTop = scrollContainer.scrollTop || document.documentElement.scrollTop;
// 获取所有章节元素
const sections = Array.from(document.querySelectorAll('.audit-section'));
for (let i = sections.length - 1; i >= 0; i--) {
const section = sections[i];
const sectionTop = section.offsetTop;
if (sectionTop - 100 <= containerScrollTop) {
currentSection.value = i;
break;
}
}
};
// 检查章节是否有内容
export const hasContent = (section: any) => {
if (!section) return false;
if (section.mode === 'table') {
return section.data && section.data.length > 0;
} else if (section.textareaList) {
return section.textareaList.some(textarea => textarea.content && textarea.content.trim());
} else {
return !!section.content?.trim();
}
};
// 构建导出数据
export const buildExportData = () => {
// 这里根据实际情况构建数据
// 由于navigationItems现在是函数返回的ref需要先获取值
const items = navigationItems ? navigationItems.value : [];
const exportData: any = {
companyName: form?.name || '',
auditTime: form?.expirationTime || ''
};
// 收集所有表格数据
items.forEach((item, index) => {
if (item.mode === 'table' && item.data && item.data.length > 0) {
const currentTable = item.tableOptions[item.currentTableIndex];
if (currentTable) {
exportData[`table${index + 1}_${currentTable.value}`] = item.data;
}
} else if (item.content) {
exportData[`content${index + 1}`] = item.content;
}
});
return exportData;
};
// 导出currentSection以便其他文件使用
export { currentSection };

View File

@@ -0,0 +1,48 @@
import { ref } from 'vue';
import { getTableConfig } from './tableCommon';
const navigationItems = ref([]);
// 初始化导航项
export function initNavigationItems() {
navigationItems.value = Array.from({ length: 11 }, (_, index) => {
const config = getTableConfig(index);
return {
number: getChineseNumber(index + 1),
name: `审计内容${index + 1}`,
title: config?.title || `审计内容${index + 1}`,
description: '点击"AI生成"按钮让AI为您生成该部分内容或直接在下方编辑',
generating: false,
suggestion: '',
mode: 'table',
showFileSelect: true, // 所有项都显示文件选择
data: [],
extraData: [],
currentTableIndex: 0, // 当前选中的表格索引
columns: null,
extraTableTitle: config?.extraTableTitle || null,
extraColumns: config?.extraColumns || [],
tableOptions: config?.options || [],
count: index + 1,
tableType: config?.type || `auditContent${index + 1}`,
content: '',
rows: 8
};
});
return navigationItems;
}
// 获取中文数字
function getChineseNumber(num) {
const chineseNumbers = ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一'];
return chineseNumbers[num - 1] || num;
}
// 导出初始化的导航项
export default function useNavigationItems() {
if (navigationItems.value.length === 0) {
initNavigationItems();
}
return navigationItems;
}

View File

@@ -0,0 +1,81 @@
// 党风廉政建设责任制表格列
export const partyConductColumns = [
{
title: '大类',
dataIndex: 'category',
key: 'category',
align: 'center',
width: 120,
customCell: (_, index) => {
if (index === 0) return { rowSpan: 37 };
else if (index === 37) return { rowSpan: 3 };
else if (index === 40) return { rowSpan: 3 };
return { rowSpan: 0 };
}
},
{
title: '子类',
dataIndex: 'subCategory',
key: 'subCategory',
align: 'center',
width: 120,
customCell: (_, index) => {
if (index === 0) return { rowSpan: 17 };
else if (index === 17) return { rowSpan: 8 };
else if (index === 25) return { rowSpan: 8 };
else if (index === 33) return { rowSpan: 4 };
else if (index === 37) return { rowSpan: 3 };
else if (index === 40) return { rowSpan: 3 };
return { rowSpan: 0 };
}
},
{
title: '小类',
dataIndex: 'detailCategory',
key: 'detailCategory',
align: 'center',
width: 120,
customCell: (_, index) => {
if ([4, 17, 22, 25, 26, 27, 28, 29, 32, 33, 34, 37, 38, 39, 42].includes(index))
return { rowSpan: 1 };
else if ([18, 20, 23, 30, 35, 40].includes(index)) return { rowSpan: 2 };
if (index === 0) return { rowSpan: 4 };
else if (index === 5) return { rowSpan: 4 };
else if (index === 9) return { rowSpan: 5 };
else if (index === 14) return { rowSpan: 3 };
return { rowSpan: 0 };
}
},
{
title: '内容',
dataIndex: 'content',
key: 'content',
align: 'center',
width: 200
},
{
title: '执行情况',
dataIndex: 'executionStatus',
key: 'executionStatus',
align: 'center',
width: 300
},
{
title: '工作底稿索引',
dataIndex: 'workPaperIndex',
key: 'workPaperIndex',
align: 'center',
width: 200,
// ellipsis: true
},
// {
// title: '操作',
// key: 'action',
// align: 'center',
// width: 100
// }
];
export default {
partyConductColumns
};

View File

@@ -0,0 +1,94 @@
// 历史审计问题整改表格列
export const auditHistoryColumns = [
{
title: '序号',
dataIndex: 'index',
key: 'index',
width: 80,
align: 'center'
},
{
title: '审计年度',
dataIndex: 'auditYear',
key: 'auditYear',
align: 'center',
width: 100
},
{
title: '审计类型',
dataIndex: 'auditType',
key: 'auditType',
align: 'center',
width: 120
},
{
title: '审计发现的问题',
dataIndex: 'problemFound',
key: 'problemFound',
align: 'center',
width: 250,
// ellipsis: true
},
{
title: '整改要求',
dataIndex: 'rectificationRequirement',
key: 'rectificationRequirement',
align: 'center',
width: 200,
// ellipsis: true
},
{
title: '整改措施',
dataIndex: 'rectificationMeasures',
key: 'rectificationMeasures',
align: 'center',
width: 200,
// ellipsis: true
},
{
title: '整改完成情况',
dataIndex: 'rectificationStatus',
key: 'rectificationStatus',
align: 'center',
width: 120
},
{
title: '整改完成时间',
dataIndex: 'completionDate',
key: 'completionDate',
align: 'center',
width: 120
},
{
title: '整改责任人',
dataIndex: 'responsiblePerson',
key: 'responsiblePerson',
align: 'center',
width: 120
},
{
title: '备注',
dataIndex: 'remark',
key: 'remark',
align: 'center',
width: 150
},
{
title: '工作底稿索引',
dataIndex: 'workPaperIndex',
key: 'workPaperIndex',
align: 'center',
width: 200,
// ellipsis: true
},
// {
// title: '操作',
// key: 'action',
// align: 'center',
// width: 100
// }
];
export default {
auditHistoryColumns
};

View File

@@ -0,0 +1,446 @@
// 创建测试结果渲染函数
export function createTestResultRender() {
return ({ text }) => {
if (text === '通过') return '<span style="color: #52c41a">通过</span>';
if (text === '不通过') return '<span style="color: #ff4d4f">不通过</span>';
return text || '待检查';
};
}
// 贯彻决策部署表格列
export const default1Columns = [
{
title: '序号',
dataIndex: 'index',
key: 'index',
width: 80,
align: 'center'
},
{
title: '单位名称',
dataIndex: 'unitName',
key: 'unitName',
align: 'center'
},
{
title: '规格',
dataIndex: 'specification',
key: 'specification',
align: 'center'
},
{
title: '经费来源',
dataIndex: 'fundSource',
key: 'fundSource',
align: 'center'
},
{
title: '编制数额',
dataIndex: 'establishmentNum',
key: 'establishmentNum',
align: 'center'
},
{
title: '编制数额',
align: 'center',
children: [
{
title: '其他编制',
dataIndex: 'otherEstablishment',
key: 'otherEstablishment',
align: 'center'
},
{
title: '事业编制',
dataIndex: 'institutionEstablishment',
key: 'institutionEstablishment',
align: 'center'
}
]
},
{
title: '实用人员',
align: 'center',
children: [
{
title: '参公人数',
dataIndex: 'publicServantNum',
key: 'publicServantNum',
align: 'center'
},
{
title: '聘用人数',
dataIndex: 'employedNum',
key: 'employedNum',
align: 'center'
}
]
},
{
title: '领导职数',
align: 'center',
children: [
{
title: '处级',
align: 'center',
children: [
{
title: '核定数',
dataIndex: 'departmentApproved',
key: 'departmentApproved',
align: 'center'
},
{
title: '实有数',
dataIndex: 'departmentActual',
key: 'departmentActual',
align: 'center'
}
]
},
{
title: '科级',
align: 'center',
children: [
{
title: '核定数',
dataIndex: 'sectionApproved',
key: 'sectionApproved',
align: 'center'
},
{
title: '实有数',
dataIndex: 'sectionActual',
key: 'sectionActual',
align: 'center'
}
]
},
{
title: '股级',
align: 'center',
children: [
{
title: '核定数',
dataIndex: 'teamApproved',
key: 'teamApproved',
align: 'center'
},
{
title: '实有数',
dataIndex: 'teamActual',
key: 'teamActual',
align: 'center'
}
]
}
]
},
{
title: '参公单位非领导职数',
align: 'center',
children: [
{
title: '处级',
align: 'center',
children: [
{
title: '核定数',
dataIndex: 'nonLeaderDeptApproved',
key: 'nonLeaderDeptApproved',
align: 'center'
},
{
title: '实有数',
dataIndex: 'nonLeaderDeptActual',
key: 'nonLeaderDeptActual',
align: 'center'
}
]
},
{
title: '科级',
align: 'center',
children: [
{
title: '核定数',
dataIndex: 'nonLeaderSectionApproved',
key: 'nonLeaderSectionApproved',
align: 'center'
},
{
title: '实有数',
dataIndex: 'nonLeaderSectionActual',
key: 'nonLeaderSectionActual',
align: 'center'
}
]
},
{
title: '股级',
align: 'center',
children: [
{
title: '核定数',
dataIndex: 'nonLeaderTeamApproved',
key: 'nonLeaderTeamApproved',
align: 'center'
},
{
title: '实有数',
dataIndex: 'nonLeaderTeamActual',
key: 'nonLeaderTeamActual',
align: 'center'
}
]
}
]
},
{
title: '岗位设置',
align: 'center',
children: [
{
title: '管理岗位',
dataIndex: 'managementPosition',
key: 'managementPosition',
align: 'center'
},
{
title: '专业技术岗位',
dataIndex: 'technicalPosition',
key: 'technicalPosition',
align: 'center'
},
{
title: '工勤技能岗位',
dataIndex: 'workerPosition',
key: 'workerPosition',
align: 'center'
}
]
},
{
title: '工作底稿索引',
dataIndex: 'workPaperIndex',
key: 'workPaperIndex',
align: 'center',
width: 200,
ellipsis: true
},
{
title: '操作',
key: 'action',
align: 'center',
width: 100
}
];
// 领导班子名单列
export const leaderListColumns = [
{
title: '单位',
dataIndex: 'unit',
key: 'unit',
align: 'center',
width: 120
},
{
title: '姓名',
dataIndex: 'name',
key: 'name',
align: 'center',
width: 100
},
{
title: '部门',
dataIndex: 'department',
key: 'department',
align: 'center',
width: 120
},
{
title: '职务',
align: 'center',
children: [
{
title: '党内',
dataIndex: 'partyPosition',
key: 'partyPosition',
align: 'center',
width: 100
},
{
title: '行政',
dataIndex: 'adminPosition',
key: 'adminPosition',
align: 'center',
width: 120
}
]
},
{
title: '任职期间',
dataIndex: 'tenurePeriod',
key: 'tenurePeriod',
align: 'center',
width: 150
},
{
title: '主要工作责任',
dataIndex: 'mainResponsibilities',
key: 'mainResponsibilities',
align: 'center',
width: 200
},
{
title: '备注',
dataIndex: 'remark',
key: 'remark',
align: 'center',
width: 120
},
{
title: '工作底稿索引',
dataIndex: 'workPaperIndex',
key: 'workPaperIndex',
align: 'center',
width: 200,
ellipsis: true
},
{
title: '操作',
key: 'action',
align: 'center',
width: 100
}
];
// 决策支出表列
export const expenseColumns = [
{
title: '支出类型',
dataIndex: 'expenseType',
key: 'expenseType',
align: 'center',
width: 120
},
{
title: '年份',
dataIndex: 'year',
key: 'year',
align: 'center',
width: 100
},
{
title: '决算报表数(元)',
dataIndex: 'finalStatementAmount',
key: 'finalStatementAmount',
align: 'center',
width: 150
},
{
title: '年初预算数(元)',
dataIndex: 'initialBudgetAmount',
key: 'initialBudgetAmount',
align: 'center',
width: 150
},
{
title: '增减情况(%',
dataIndex: 'changePercentage',
key: 'changePercentage',
align: 'center',
width: 120
},
{
title: '占年初预算比例(%',
dataIndex: 'budgetRatio',
key: 'budgetRatio',
align: 'center',
width: 120
},
{
title: '备注',
dataIndex: 'remark',
key: 'remark',
align: 'center',
width: 150
},
{
title: '数据来源',
dataIndex: 'dataSource',
key: 'dataSource',
align: 'center',
width: 180
},
{
title: '工作底稿索引',
dataIndex: 'workPaperIndex',
key: 'workPaperIndex',
align: 'center',
width: 200,
ellipsis: true
},
{
title: '操作',
key: 'action',
align: 'center',
width: 100
}
];
// 八项规定表格列
export const eightRegColumns = [
{
title: '审计内容',
dataIndex: 'title',
key: 'title',
align: 'center',
width: 120
},
{
title: '审计内容',
dataIndex: 'content',
key: 'content',
align: 'center',
width: 200
},
{
title: '检查的证据及测试内容',
dataIndex: 'testContent',
key: 'testContent',
align: 'center',
width: 300
},
{
title: '测试结果',
dataIndex: 'result',
key: 'result',
align: 'center',
width: 100,
customRender: createTestResultRender()
},
{
title: '工作底稿索引',
dataIndex: 'workPaperIndex',
key: 'workPaperIndex',
align: 'center',
width: 200,
ellipsis: true
},
// {
// title: '操作',
// key: 'action',
// align: 'center',
// width: 140
// }
];
export default {
default1Columns,
leaderListColumns,
expenseColumns,
eightRegColumns,
createTestResultRender
};

View File

@@ -0,0 +1,62 @@
// 创建测试结果渲染函数
export function createTestResultRender() {
return ({ text }) => {
if (text === '通过') return '<span style="color: #52c41a">通过</span>';
if (text === '不通过') return '<span style="color: #ff4d4f">不通过</span>';
return text || '待检查';
};
}
// 审计内容2表格列
export const strategyAuditColumns = [
{
title: '序号',
dataIndex: 'index',
key: 'index',
width: 60,
align: 'center'
},
{
title: '审计内容',
dataIndex: 'auditContent',
key: 'auditContent',
width: 150,
align: 'center',
// ellipsis: true
},
{
title: '检查的证据及测试内容',
dataIndex: 'checkEvidence',
key: 'checkEvidence',
width: 350,
align: 'center',
// ellipsis: true
},
{
title: '测试结果',
dataIndex: 'testResult',
key: 'testResult',
width: 100,
align: 'center',
customRender: createTestResultRender()
},
{
title: '工作底稿索引',
dataIndex: 'workPaperIndex',
key: 'workPaperIndex',
width: 200,
align: 'center',
// ellipsis: true
},
// {
// title: '操作',
// key: 'action',
// width: 100,
// align: 'center'
// }
];
export default {
strategyAuditColumns,
createTestResultRender
};

View File

@@ -0,0 +1,140 @@
import { createTestResultRender } from './table2Columns';
// 三重一大表格列
export const tripleOneColumns = [
{
title: '',
dataIndex: 'category',
key: 'category',
width: 120,
align: 'center'
},
{
title: '政策内容',
dataIndex: 'policyContent',
key: 'policyContent',
align: 'center'
},
{
title: '集团制度',
dataIndex: 'groupSystem',
key: 'groupSystem',
align: 'center'
},
{
title: '公司制度',
dataIndex: 'companyFormulation',
key: 'companyFormulation',
align: 'center'
},
{
title: '公司执行情况',
dataIndex: 'checkEvidence',
key: 'checkEvidence',
align: 'center'
},
{
title: '执行结果',
dataIndex: 'testResult',
key: 'testResult',
align: 'center',
width: 80,
customRender: createTestResultRender()
},
{
title: '工作底稿索引',
dataIndex: 'workPaperIndex',
key: 'workPaperIndex',
align: 'center',
width: 200,
ellipsis: true
},
{
title: '操作',
key: 'action',
align: 'center',
width: 100
}
];
// 重大经济决策表格列
export const decisionTableColumns = [
{
title: '序号',
dataIndex: 'index',
key: 'index',
width: 80,
align: 'center'
},
{
title: '重大经济决策事项',
dataIndex: 'decisionItem',
key: 'decisionItem',
width: 200,
align: 'center'
},
{
title: '会议时间',
dataIndex: 'meetingTime',
key: 'meetingTime',
align: 'center',
width: 120
},
{
title: '决策事项金额',
dataIndex: 'decisionAmount',
key: 'decisionAmount',
width: 120,
align: 'center'
},
{
title: '程序',
dataIndex: 'procedure',
key: 'procedure',
align: 'center'
},
{
title: '执行情况(是/否)',
dataIndex: 'executionStatus',
key: 'executionStatus',
width: 80,
align: 'center'
},
{
title: '执行效果(是否实现决策目标)',
children: [
{
title: '好',
dataIndex: 'goods',
key: 'goods',
width: 60,
align: 'center'
},
{
title: '一般',
dataIndex: 'normal',
key: 'normal',
width: 60,
align: 'center'
},
{
title: '差',
dataIndex: 'bad',
key: 'bad',
width: 60,
align: 'center'
}
]
},
// {
// title: '操作',
// key: 'action',
// align: 'center',
// width: 140
// }
];
export default {
tripleOneColumns,
decisionTableColumns
};

View File

@@ -0,0 +1,87 @@
export const columns0 = [
{
title: '序号',
dataIndex: 'index',
key: 'index',
width: 80,
align: 'center'
},
{
title: '年度',
dataIndex: 'year',
key: 'year',
align: 'center',
width: 120
},
{
title: '上级主管部门下达目标责任制',
align: 'center',
children: [
{
title: '下达文件',
dataIndex: 'superiorFile',
key: 'superiorFile',
align: 'center',
width: 200
},
{
title: '完成情况',
dataIndex: 'superiorCompletion',
key: 'superiorCompletion',
align: 'center',
width: 120
},
{
title: '未完成原因',
dataIndex: 'superiorReason',
key: 'superiorReason',
align: 'center',
width: 200
},
]
},
{
title: '单位自定下达目标责任制',
align: 'center',
children: [
{
title: '计划文件',
dataIndex: 'selfPlan',
key: 'selfPlan',
align: 'center',
width: 200
},
{
title: '完成情况',
dataIndex: 'selfCompletion',
key: 'selfCompletion',
align: 'center',
width: 120
},
{
title: '未完成原因',
dataIndex: 'selfReason',
key: 'selfReason',
align: 'center',
width: 200
},
]
},
{
title: '备注',
dataIndex: 'remark',
key: 'remark',
align: 'center',
width: 200
},
{
title: '工作底稿索引',
dataIndex: 'workPaperIndex',
key: 'workPaperIndex',
align: 'center',
width: 200,
ellipsis: true
}
];
export default { columns0 };

View File

@@ -0,0 +1,178 @@
export const budgetManageColumns = [
{
title: '预算科目名称',
dataIndex: 'budgetSubject',
key: 'budgetSubject',
align: 'center',
width: 150
},
{
title: '指标来源',
dataIndex: 'indicatorSource',
key: 'indicatorSource',
align: 'center',
width: 120
},
{
title: '合计',
dataIndex: 'total',
key: 'total',
align: 'center',
width: 100
},
{
title: '上年结余',
dataIndex: 'lastYearBalance',
key: 'lastYearBalance',
align: 'center',
width: 100
},
{
title: '年初部门预算',
dataIndex: 'initialBudget',
key: 'initialBudget',
align: 'center',
width: 120
},
{
title: '追加(减)预算',
dataIndex: 'additionalBudget',
key: 'additionalBudget',
align: 'center',
width: 120
},
{
title: '指标运用',
align: 'center',
children: [
{
title: '合计',
dataIndex: 'indicatorUseTotal',
key: 'indicatorUseTotal',
align: 'center',
width: 80
},
{
title: '拨款小计',
dataIndex: 'appropriationSubtotal',
key: 'appropriationSubtotal',
align: 'center',
width: 100
},
{
title: '拨款',
dataIndex: 'appropriation',
key: 'appropriation',
align: 'center',
width: 80
},
{
title: '工资统发',
dataIndex: 'salaryPayment',
key: 'salaryPayment',
align: 'center',
width: 100
},
{
title: '政府采购',
dataIndex: 'govProcurement',
key: 'govProcurement',
align: 'center',
width: 100
}
]
},
{
title: '指标结余',
dataIndex: 'indicatorBalance',
key: 'indicatorBalance',
align: 'center',
width: 100
},
{
title: '工作底稿索引',
dataIndex: 'workPaperIndex',
key: 'workPaperIndex',
align: 'center',
width: 200,
ellipsis: true
},
{
title: '操作',
key: 'action',
align: 'center',
width: 100
}
];
// 预算执行情况列
export const budgetExecutionColumns = [
{
title: '项目',
dataIndex: 'project',
key: 'project',
align: 'center',
width: 150
},
{
title: '上年结转',
dataIndex: 'lastYearCarryOver',
key: 'lastYearCarryOver',
align: 'center',
width: 100
},
{
title: '本年预算小计',
dataIndex: 'currentYearBudgetTotal',
key: 'currentYearBudgetTotal',
align: 'center',
width: 120
},
{
title: '年初批复预算数',
dataIndex: 'initialApprovedBudget',
key: 'initialApprovedBudget',
align: 'center',
width: 120
},
{
title: '追加预算数',
dataIndex: 'additionalBudgetAmount',
key: 'additionalBudgetAmount',
align: 'center',
width: 100
},
{
title: '实际拨款数',
dataIndex: 'actualAppropriation',
key: 'actualAppropriation',
align: 'center',
width: 120
},
{
title: '指标结余',
dataIndex: 'indicatorBalance',
key: 'indicatorBalance',
align: 'center',
width: 100
},
{
title: '工作底稿索引',
dataIndex: 'workPaperIndex',
key: 'workPaperIndex',
align: 'center',
width: 200,
ellipsis: true
},
// {
// title: '操作',
// key: 'action',
// align: 'center',
// width: 100
// }
];
export default {
budgetManageColumns,
budgetExecutionColumns
};

View File

@@ -0,0 +1,118 @@
export const stateAssetsManageColumns = [
{
title: '序号',
dataIndex: 'index',
key: 'index',
width: 60,
align: 'center'
},
{
title: '国有资产名称',
dataIndex: 'assetName',
key: 'assetName',
align: 'center',
width: 120
},
{
title: '取得方式',
dataIndex: 'acquisitionMethod',
key: 'acquisitionMethod',
align: 'center',
width: 100
},
{
title: '资产价值',
dataIndex: 'assetValue',
key: 'assetValue',
align: 'center',
width: 100
},
{
title: '资产地址',
dataIndex: 'assetAddress',
key: 'assetAddress',
align: 'center',
width: 150
},
{
title: '面积',
dataIndex: 'area',
key: 'area',
align: 'center',
width: 80
},
{
title: '承租方',
dataIndex: 'tenant',
key: 'tenant',
align: 'center',
width: 100
},
{
title: '合同金额',
dataIndex: 'contractAmount',
key: 'contractAmount',
align: 'center',
width: 100
},
{
title: '租赁起止时间',
dataIndex: 'leasePeriod',
key: 'leasePeriod',
align: 'center',
width: 150
},
{
title: '租金缴纳时间',
dataIndex: 'rentPaymentTime',
key: 'rentPaymentTime',
align: 'center',
width: 120
},
{
title: '是否上平台',
dataIndex: 'platformLease',
key: 'platformLease',
align: 'center',
width: 100
},
{
title: '审批文件',
dataIndex: 'approvalDoc',
key: 'approvalDoc',
align: 'center',
width: 150
},
{
title: '纳入预算',
dataIndex: 'inBudget',
key: 'inBudget',
align: 'center',
width: 80
},
{
title: '备注',
dataIndex: 'remark',
key: 'remark',
align: 'center',
width: 150
},
{
title: '工作底稿索引',
dataIndex: 'workPaperIndex',
key: 'workPaperIndex',
align: 'center',
width: 200,
ellipsis: true
},
// {
// title: '操作',
// key: 'action',
// align: 'center',
// width: 100
// }
];
export default {
stateAssetsManageColumns
};

View File

@@ -0,0 +1,55 @@
import { createTestResultRender } from './table2Columns';
// 重大投资情况审计表格列
export const investmentSituationColumns = [
{
title: '',
dataIndex: 'category',
key: 'category',
width: 150,
align: 'center',
},
{
title: '审计内容',
dataIndex: 'auditContent',
key: 'auditContent',
align: 'center',
width: 300,
// ellipsis: true
},
{
title: '检查的证据及测试内容',
dataIndex: 'checkEvidence',
key: 'checkEvidence',
align: 'center',
width: 400,
// ellipsis: true
},
{
title: '测试结果',
dataIndex: 'testResult',
key: 'testResult',
align: 'center',
width: 100,
customRender: createTestResultRender()
},
{
title: '工作底稿索引',
dataIndex: 'workPaperIndex',
key: 'workPaperIndex',
align: 'center',
width: 200,
// ellipsis: true
},
// {
// title: '操作',
// key: 'action',
// align: 'center',
// width: 100
// }
];
// 删除不再需要的单独列配置
export default {
investmentSituationColumns
};

View File

@@ -0,0 +1,83 @@
import { createTestResultRender } from './table2Columns';
// 内部控制测试表格列
export const internalControlTestColumns = [
{
title: '序号',
dataIndex: 'index',
key: 'index',
width: 80,
align: 'center'
},
{
title: '控制环节',
dataIndex: 'controlLink',
key: 'controlLink',
align: 'center',
width: 150
},
{
title: '控制要求',
dataIndex: 'controlRequirement',
key: 'controlRequirement',
align: 'center',
width: 200
},
{
title: '控制活动描述',
dataIndex: 'controlActivity',
key: 'controlActivity',
align: 'center',
width: 300,
// ellipsis: true
},
{
title: '控制职责岗位',
dataIndex: 'controlPosition',
key: 'controlPosition',
align: 'center',
width: 150
},
{
title: '测试步骤',
dataIndex: 'testSteps',
key: 'testSteps',
align: 'center',
width: 250,
// ellipsis: true
},
{
title: '测试结果',
dataIndex: 'testResult',
key: 'testResult',
align: 'center',
width: 100,
customRender: createTestResultRender()
},
{
title: '检查证据',
dataIndex: 'checkEvidence',
key: 'checkEvidence',
align: 'center',
width: 250,
// ellipsis: true
},
{
title: '工作底稿索引',
dataIndex: 'workPaperIndex',
key: 'workPaperIndex',
align: 'center',
width: 200,
// ellipsis: true
},
// {
// title: '操作',
// key: 'action',
// align: 'center',
// width: 100
// }
];
export default {
internalControlTestColumns
};

View File

@@ -0,0 +1,55 @@
export const personnelEstablishmentColumns = [
{
title: '序号',
dataIndex: 'index',
key: 'index',
width: 80,
align: 'center'
},
{
title: '审计内容',
dataIndex: 'auditContent',
key: 'auditContent',
align: 'center',
width: 200,
},
{
title: '审计目标',
dataIndex: 'auditTarget',
key: 'auditTarget',
align: 'center',
width: 250,
},
{
title: '审计证据',
dataIndex: 'auditEvidence',
key: 'auditEvidence',
align: 'center',
width: 300,
},
{
title: '生成结果',
dataIndex: 'generationResult',
key: 'generationResult',
align: 'center',
width: 300,
},
{
title: '工作底稿索引',
dataIndex: 'workPaperIndex',
key: 'workPaperIndex',
align: 'center',
width: 200,
},
// {
// title: '操作',
// key: 'action',
// align: 'center',
// width: 100
// }
];
export default {
personnelEstablishmentColumns
};

View File

@@ -0,0 +1,60 @@
export const benefitEstablishmentColumns = [
{
title: '序号',
dataIndex: 'index',
key: 'index',
width: 80,
align: 'center'
},
{
title: '凭证号',
dataIndex: 'voucher',
key: 'voucher',
align: 'center'
},
{
title: '支出日期',
dataIndex: 'expenditureDate',
key: 'expenditureDate',
align: 'center'
},
{
title: '用途',
dataIndex: 'usage',
key: 'usage',
align: 'center'
},
{
title: '收款方',
dataIndex: 'payee',
key: 'payee',
align: 'center'
},
{
title: '金额(元)',
dataIndex: 'amount',
key: 'amount',
align: 'center'
},
{
title: '归属部门/人员',
dataIndex: 'belongTo',
key: 'belongTo',
align: 'center'
},
{
title: '款项性质说明',
dataIndex: 'natureDesc',
key: 'natureDesc',
align: 'center'
},
{
title: '违规说明',
dataIndex: 'violationDesc',
key: 'violationDesc',
align: 'center'
}
];
export default benefitEstablishmentColumns;

View File

@@ -0,0 +1,482 @@
import table9ExtraColumns from './table9ExtraColumns';
export const tableConfigs = {
// 审计内容1表格配置
auditContent1: {
type: 'auditContent1',
title: '贯彻决策部署情况',
options: [
// { title: '贯彻决策部署', value: 'default1', columns: () => import('./table1Columns').then(m => m.default1Columns) },
{
title: '领导班子名单',
value: 'leaderList',
columns: () =>
import('./table1Columns').then((m) => m.leaderListColumns)
},
{
title: '决策支出表',
value: 'expense',
columns: () => import('./table1Columns').then((m) => m.expenseColumns)
},
{
title: '八项规定',
value: 'eightReg',
columns: () => import('./table1Columns').then((m) => m.eightRegColumns)
}
],
// 接口映射
interfaceMap: {
default1: '/api/ai/auditContent1/generateDefault1Table',
leaderList: '/api/ai/auditContent1/generateLeaderListTable',
expense: '/api/ai/auditContent1/generateExpenseTable',
eightReg: '/api/ai/auditContent1/generateEightRegTable'
}
},
// 审计内容2表格配置
auditContent2: {
type: 'auditContent2',
title: '单位发展战略执行',
options: [
{
title: '单位发展战略执行',
value: 'strategyAudit',
columns: () =>
import('./table2Columns').then((m) => m.strategyAuditColumns)
}
],
interfaceMap: {
strategyAudit: '/api/ai/auditContent2/generateStrategyAuditTable'
}
},
// 审计内容3表格配置
auditContent3: {
type: 'auditContent3',
title: '重大经济决策调查',
options: [
{
title: '重大经济决策调查表',
value: 'decisionTable',
columns: () =>
import('./table3Columns').then((m) => m.decisionTableColumns)
},
{
title: '三重一大',
value: 'tripleOne',
columns: () => import('./table3Columns').then((m) => m.tripleOneColumns)
}
],
interfaceMap: {
tripleOne: '/api/ai/auditContent3/generateTripleOneTable',
decisionTable: '/api/ai/auditContent3/generateDecisionTable'
}
},
// 审计内容4表格配置
auditContent4: {
type: 'auditContent4',
title: '目标完成情况',
options: [
{
title: '目标责任完成情况表',
value: 'target',
columns: () => import('./table4Columns').then((m) => m.columns0)
}
],
interfaceMap: {
target: '/api/ai/auditContent4/generateTargetTable'
}
},
// 审计内容5表格配置
auditContent5: {
type: 'auditContent5',
title: '财务管理情况',
options: [
{
title: '预算管理审计',
value: 'budgetManage',
columns: () =>
import('./table5Columns').then((m) => m.budgetManageColumns)
},
{
title: '预算执行情况审计',
value: 'budgetExecution',
columns: () =>
import('./table5Columns').then((m) => m.budgetExecutionColumns)
}
],
interfaceMap: {
budgetManage: '/api/ai/auditContent5/generateBudgetManageTable',
budgetExecution: '/api/ai/auditContent5/generateBudgetExecutionTable'
}
},
// 审计内容6表格配置
auditContent6: {
type: 'auditContent6',
title: '国资管理情况',
options: [
{
title: '国有资产管理审计',
value: 'assets',
columns: () =>
import('./table6Columns').then((m) => m.stateAssetsManageColumns)
}
],
interfaceMap: {
assets: '/api/ai/auditContent6/generateAssetsTable'
}
},
auditContent7: {
type: 'auditContent7',
title: '重大投资情况',
options: [
{
title: '重大投资情况审计',
value: 'investmentSituation',
columns: () =>
import('./table7Columns').then((m) => m.investmentSituationColumns)
}
],
interfaceMap: {
investmentSituation:
'/api/ai/auditContent7/generateInvestmentSituationTable'
}
},
auditContent8: {
type: 'auditContent8',
title: '治理结构与内部控制',
options: [
{
title: '内部控制测试',
value: 'internalControl',
columns: () =>
import('./table8Columns').then((m) => m.internalControlTestColumns)
}
],
interfaceMap: {
internalControl: '/api/ai/auditContent8/generateInternalControlTable'
}
},
auditContent9: {
type: 'auditContent9',
title: '人员编制管理',
options: [
{
title: '人员编制管理审计',
value: 'personnel',
columns: () =>
import('./table9Columns').then((m) => m.personnelEstablishmentColumns)
}
],
extraTableTitle: '福利费超范围支出明细清单',
extraColumns: table9ExtraColumns,
interfaceMap: {
personnel: '/api/ai/auditContent9/generatePersonnelTable'
}
},
auditContent10: {
type: 'auditContent10',
title: '廉政情况',
options: [
{
title: '党风廉政建设责任制审计',
value: 'partyConduct',
columns: () =>
import('./table10Columns').then((m) => m.partyConductColumns)
}
],
interfaceMap: {
partyConduct: '/api/ai/auditContent10/generatePartyConductTable'
}
},
auditContent11: {
type: 'auditContent11',
title: '历史审计问题整改',
options: [
{
title: '历史审计问题整改',
value: 'history',
columns: () =>
import('./table11Columns').then((m) => m.auditHistoryColumns)
}
],
interfaceMap: {
history: '/api/ai/auditContent11/generateHistoryTable'
}
}
};
// 获取表格配置
export function getTableConfig(sectionIndex: number) {
const configKeys = Object.keys(tableConfigs);
if (sectionIndex >= 0 && sectionIndex < configKeys.length) {
return tableConfigs[configKeys[sectionIndex]];
}
return null;
}
// 获取所有表格配置
export function getAllTableConfigs() {
return tableConfigs;
}
// 通过接口名称查找表格配置
export function findTableConfigByInterface(interfaceName: string) {
for (const [key, config] of Object.entries(tableConfigs)) {
for (const [tableValue, tableInterface] of Object.entries(
config.interfaceMap || {}
)) {
if (tableInterface === interfaceName) {
return {
sectionType: key,
tableValue,
config
};
}
}
}
return null;
}
// 解析workPaperIndex字符串为对象数组
function parseWorkPaperIndex(workPaperIndex) {
if (!workPaperIndex || !Array.isArray(workPaperIndex)) return [];
return workPaperIndex.map((item) => {
if (item && typeof item === 'object') {
return {
fileId: item.fileId || item.file_id || '',
fileName: item.fileName || item.file_name || '',
fileUrl: item.fileUrl || item.url || ''
};
}
if (typeof item === 'string') {
const parts = item.split('||');
if (parts.length >= 3) {
return {
fileId: parts[0] || '',
fileName: parts[1] || '',
fileUrl: parts[2] || ''
};
}
}
// 兼容旧格式
return {
fileId: '',
fileName: typeof item === 'string' ? item : '',
fileUrl: ''
};
});
}
// 通用数据映射函数
export function createDataMapper(type: string) {
const mappers = {
default1: (data) =>
data.map((item, index) => ({
key: index,
index: index + 1,
...item,
workPaperIndex: parseWorkPaperIndex(item.workPaperIndex)
})),
leaderList: (data) =>
data.map((item, index) => ({
key: index,
...item,
workPaperIndex: parseWorkPaperIndex(item.workPaperIndex)
})),
expense: (data) =>
data.map((item, index) => ({
key: index,
...item,
finalStatementAmount: formatAmount(item.finalStatementAmount),
initialBudgetAmount: formatAmount(item.initialBudgetAmount),
workPaperIndex: parseWorkPaperIndex(item.workPaperIndex)
})),
eightReg: (data) =>
data.map((item, index) => ({
key: index,
...item,
workPaperIndex: parseWorkPaperIndex(item.workPaperIndex)
})),
strategyAudit: (data) =>
data.map((item, index) => ({
key: index,
index: index + 1,
...item,
workPaperIndex: parseWorkPaperIndex(item.workPaperIndex)
})),
tripleOne: (data) =>
data.map((item, index) => ({
key: index,
...item,
workPaperIndex: parseWorkPaperIndex(item.workPaperIndex)
})),
decisionTable: (data) =>
data.map((item, index) => ({
key: index,
index: index + 1,
goods: item.executionEffect?.good || item.goods || '否',
normal: item.executionEffect?.normal || item.normal || '否',
bad: item.executionEffect?.bad || item.bad || '否',
...item,
workPaperIndex: parseWorkPaperIndex(item.workPaperIndex)
})),
budgetManage: (data) =>
data.map((item, index) => ({
key: index,
index: index + 1,
...item,
budgetSubject: item.budgetSubject || '-',
indicatorSource: item.indicatorSource,
total: formatAmount(item.indicatorSourceTotal),
lastYearBalance: formatAmount(item.indicatorSourceLastYearBalance),
initialBudget: formatAmount(item.indicatorSourceInitialBudget),
additionalBudget: formatAmount(item.indicatorSourceAdditionalBudget),
indicatorUseTotal: formatAmount(item.indicatorUseTotal),
appropriationSubtotal: formatAmount(
item.indicatorUseAppropriationSubtotal
),
appropriation: formatAmount(item.indicatorUseAppropriation),
salaryPayment: formatAmount(item.indicatorUseSalaryPayment),
govProcurement: formatAmount(item.indicatorUseGovProcurement),
indicatorBalance: formatAmount(item.indicatorBalance),
workPaperIndex: parseWorkPaperIndex(item.workPaperIndex)
})),
investmentSituation: (data) =>
data.map((item, index) => ({
key: index,
index: index + 1,
category: item.category || '未分类',
auditContent: item.auditContent || item.content || '',
checkEvidence: item.checkEvidence || item.evidence || '',
testResult: item.testResult || '待检查',
...item,
workPaperIndex: parseWorkPaperIndex(item.workPaperIndex)
})),
personnel: (data) => {
const mainData = data.map((item, index) => {
const { ext, ...rest } = item;
return {
key: index,
index: item.index || index + 1,
...rest,
workPaperIndex: parseWorkPaperIndex(item.workPaperIndex)
};
});
const extraData = data.reduce((acc, item) => {
if (item.ext && Array.isArray(item.ext)) {
return [...acc, ...item.ext];
}
return acc;
}, []);
return {
mainData: mainData,
extraData: extraData.map((item, idx) => ({
key: idx,
...item,
index: item.index || idx + 1
}))
};
},
// 其他类型的映射...
default: (data) =>
data.map((item, index) => ({
key: index,
index: index + 1,
...item,
workPaperIndex: parseWorkPaperIndex(item.workPaperIndex)
}))
};
return mappers[type] || mappers.default;
}
// 格式化金额
function formatAmount(amount) {
if (!amount) return '0.00';
if (typeof amount === 'string' && amount.includes(',')) return amount;
const num = parseFloat(amount);
return isNaN(num)
? '0.00'
: num.toLocaleString('zh-CN', {
minimumFractionDigits: 2,
maximumFractionDigits: 2
});
}
// 生成接口映射
export const apiMethodMap = {
// 审计内容1
default1: {
generate: 'generateDefault1Table',
export: 'exportDefault1Table'
},
leaderList: {
generate: 'generateLeaderListTable',
export: 'exportLeaderListTable'
},
expense: { generate: 'generateExpenseTable', export: 'exportExpenseTable' },
eightReg: {
generate: 'generateEightRegTable',
export: 'exportEightRegTable'
},
// 审计内容2
strategyAudit: {
generate: 'generateStrategyAuditTable',
export: 'exportStrategyAuditTable'
},
// 审计内容3
tripleOne: {
generate: 'generateTripleOneTable',
export: 'exportTripleOneTable'
},
decisionTable: {
generate: 'generateDecisionTable',
export: 'exportDecisionTable'
},
// 审计内容4
target: { generate: 'generateTargetTable', export: 'exportTargetTable' },
// 审计内容5
budgetManage: {
generate: 'generateBudgetManageTable',
export: 'exportBudgetManageTable'
},
budgetExecution: {
generate: 'generateBudgetExecutionTable',
export: 'exportBudgetExecutionTable'
},
// 审计内容6
assets: { generate: 'generateAssetsTable', export: 'exportAssetsTable' },
// 审计内容7
investmentSituation: {
generate: 'generateInvestmentSituationTable',
export: 'exportInvestmentSituationTable'
},
// 审计内容8
internalControl: {
generate: 'generateInternalControlTable',
export: 'exportInternalControlTable'
},
// 审计内容9
personnel: {
generate: 'generatePersonnelTable',
export: 'exportPersonnelTable'
},
// 审计内容10
partyConduct: {
generate: 'generatePartyConductTable',
export: 'exportPartyConductTable'
},
// 审计内容11
history: { generate: 'generateHistoryTable', export: 'exportHistoryTable' },
// 默认
default: { generate: 'generateDefaultTable', export: 'exportDefaultTable' }
};
export default {
tableConfigs,
getTableConfig,
getAllTableConfigs,
findTableConfigByInterface,
createDataMapper,
apiMethodMap
};