新增结果总览一键导出报告

This commit is contained in:
wjj
2026-04-30 16:01:13 +08:00
parent 6f2ea5994a
commit 369c682564
19 changed files with 1256 additions and 0 deletions

View File

@@ -91,3 +91,12 @@ export function getOverviewAbnormalAccountPeople(params) {
}
})
}
export function exportOverviewReport(projectId) {
return request({
url: '/ccdi/project/overview/report/export',
method: 'post',
responseType: 'blob',
params: { projectId }
})
}

View File

@@ -19,6 +19,16 @@
<div class="section-title">风险总览</div>
<div class="section-subtitle">集中展示项目风险统计与命中人员总览</div>
</div>
<el-button
size="mini"
type="primary"
plain
icon="el-icon-download"
:disabled="!projectId"
@click="handleOverviewReportExport"
>
一键导出
</el-button>
</div>
<overview-stats :summary="currentData.summary" />
<risk-people-section
@@ -191,6 +201,18 @@ export default {
riskTags,
};
},
handleOverviewReportExport() {
if (!this.projectId) {
return;
}
this.download(
"ccdi/project/overview/report/export",
{
projectId: this.projectId,
},
`初核结果报告_${this.projectId}_${new Date().getTime()}.pdf`
);
},
async loadOverviewData() {
if (!this.projectId) {
this.realData = this.stateDataMap.empty;
@@ -294,6 +316,10 @@ export default {
}
.section-header {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 16px;
margin-bottom: 18px;
padding-left: 12px;
border-left: 4px solid var(--ccdi-primary);

View File

@@ -16,7 +16,21 @@ const mockSource = fs.readFileSync(
),
"utf8"
);
const preliminaryCheckSource = fs.readFileSync(
path.resolve(
__dirname,
"../../src/views/ccdiProject/components/detail/PreliminaryCheck.vue"
),
"utf8"
);
assert(!overviewSource.includes("section-actions"), "统计区不应继续保留旧操作区壳层");
assert(!mockSource.includes('label: "批量导出"'), "风险总览不应保留批量导出按钮");
assert(!mockSource.includes('label: "切换视图"'), "风险总览不应保留切换视图按钮");
[
"handleOverviewReportExport",
"ccdi/project/overview/report/export",
"初核结果报告_",
"一键导出",
].forEach((token) => assert(preliminaryCheckSource.includes(token), token));

View File

@@ -14,12 +14,14 @@ const source = fs.readFileSync(
"getOverviewRiskModelPeople",
"getOverviewSuspiciousTransactions",
"getOverviewEmployeeCreditNegative",
"exportOverviewReport",
"/ccdi/project/overview/dashboard",
"/ccdi/project/overview/risk-people",
"/ccdi/project/overview/risk-models/cards",
"/ccdi/project/overview/risk-models/people",
"/ccdi/project/overview/suspicious-transactions",
"/ccdi/project/overview/employee-credit-negative",
"/ccdi/project/overview/report/export",
].forEach((token) => assert(source.includes(token), token));
[
@@ -76,6 +78,18 @@ assert(employeeCreditNegativeFn, "应新增员工负面征信接口参数透传
"pageSize: params.pageSize",
].forEach((token) => assert(employeeCreditNegativeFn[0].includes(token), token));
const overviewReportExportFn = source.match(
/export function exportOverviewReport\(projectId\) \{[\s\S]*?params:\s*\{([\s\S]*?)\}\s*\}\s*\)/m
);
assert(overviewReportExportFn, "应新增结果总览PDF导出接口");
[
"method: 'post'",
"responseType: 'blob'",
"projectId",
].forEach((token) => assert(overviewReportExportFn[0].includes(token), token));
["employeeResult", "resultTable", "overview/result"].forEach((token) =>
assert(!source.includes(token), `前端 API 契约不应感知结果表实现:${token}`)
);