Files
template-10561/src/views/pwl/pwlProject/components/data/tableCommon.ts

324 lines
13 KiB
TypeScript

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) }
],
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 (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,
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 || '待检查',
workPaperIndex: parseWorkPaperIndex(item.workPaperIndex),
...item
})),
// 其他类型的映射...
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
};