fix(报告): 测试计划报告导出,表格列按报告详情配置

--bug=1046788 --user=白奇 计划报告-场景明细未按设置展示字段导出数据 https://www.tapd.cn/55049933/s/1582353
This commit is contained in:
baiqi 2024-09-20 16:18:32 +08:00 committed by Craftsman
parent fbe3ef3490
commit 44ffc18b86
2 changed files with 55 additions and 10 deletions

View File

@ -92,6 +92,7 @@ export default async function exportPDF(
styles: {
font: 'AlibabaPuHuiTi-3-55-Regular',
},
pageBreak: 'avoid',
rowPageBreak: 'avoid',
margin: { top: 16, left: 16, right: 16, bottom: 16 },
tableWidth: PDF_WIDTH,

View File

@ -162,6 +162,7 @@
} from '@/config/testPlan';
import exportPDF, { PAGE_PDF_WIDTH_RATIO, PdfTableConfig } from '@/hooks/useExportPDF';
import { useI18n } from '@/hooks/useI18n';
import useTableStore from '@/hooks/useTableStore';
import { addCommasToNumber, characterLimit } from '@/utils';
import { BatchApiParams } from '@/models/common';
@ -173,6 +174,7 @@
ReportMetricsItemModel,
StatusListType,
} from '@/models/testPlan/testPlanReport';
import { TableKeyEnum } from '@/enums/tableEnum';
import { ReportCardTypeEnum } from '@/enums/testPlanReportEnum';
import { defaultGroupConfig, defaultSingleConfig, iconTypeStatus } from './component/reportConfig';
@ -401,7 +403,7 @@
const isDefaultLayout = ref<boolean>(false);
/** 缺陷明细 */
const bugColumns: MsTableColumn = [
const bugDefaultColumns: MsTableColumn = [
{
title: 'ID',
dataIndex: 'num',
@ -484,7 +486,7 @@
},
];
const caseColumns = computed(() => {
const caseDefaultColumns = computed(() => {
if (isGroup.value) {
return [...staticColumns, ...testPlanNameColumns, ...lastStaticColumns];
}
@ -520,7 +522,7 @@
},
];
const apiColumns = computed(() => {
const apiDefaultColumns = computed(() => {
if (isGroup.value) {
return [
...apiStaticColumns,
@ -649,6 +651,47 @@
);
}
const tableStore = useTableStore();
const keyMap: Record<string, any> = {
GROUP: {
[ReportCardTypeEnum.API_CASE_DETAIL]: TableKeyEnum.TEST_PLAN_REPORT_API_TABLE_GROUP,
[ReportCardTypeEnum.SCENARIO_CASE_DETAIL]: TableKeyEnum.TEST_PLAN_REPORT_SCENARIO_TABLE_GROUP,
[ReportCardTypeEnum.BUG_DETAIL]: TableKeyEnum.TEST_PLAN_REPORT_BUG_TABLE_DETAIL_GROUP,
[ReportCardTypeEnum.FUNCTIONAL_DETAIL]: TableKeyEnum.TEST_PLAN_REPORT_FUNCTIONAL_TABLE_GROUP,
},
TEST_PLAN: {
[ReportCardTypeEnum.API_CASE_DETAIL]: TableKeyEnum.TEST_PLAN_REPORT_API_TABLE,
[ReportCardTypeEnum.SCENARIO_CASE_DETAIL]: TableKeyEnum.TEST_PLAN_REPORT_SCENARIO_TABLE,
[ReportCardTypeEnum.BUG_DETAIL]: TableKeyEnum.TEST_PLAN_REPORT_BUG_TABLE_DETAIL,
[ReportCardTypeEnum.FUNCTIONAL_DETAIL]: TableKeyEnum.TEST_PLAN_REPORT_FUNCTIONAL_TABLE,
},
};
function getTableKey(type: ReportCardTypeEnum) {
if (isGroup.value) {
return keyMap.GROUP[type];
}
return keyMap.TEST_PLAN[type];
}
async function initTablesColumns() {
const bugColumns = await tableStore.getShowInTableColumns(getTableKey(ReportCardTypeEnum.BUG_DETAIL));
const functionalCaseColumns = await tableStore.getShowInTableColumns(
getTableKey(ReportCardTypeEnum.FUNCTIONAL_DETAIL)
);
const apiColumns = await tableStore.getShowInTableColumns(getTableKey(ReportCardTypeEnum.API_CASE_DETAIL));
const scenarioColumns = await tableStore.getShowInTableColumns(
getTableKey(ReportCardTypeEnum.SCENARIO_CASE_DETAIL)
);
return {
apiColumns: apiColumns || apiDefaultColumns,
scenarioColumns: scenarioColumns || apiDefaultColumns,
bugColumns: bugColumns || bugDefaultColumns,
functionalCaseColumns: functionalCaseColumns || caseDefaultColumns,
};
}
async function realExportPdf(name: string) {
const tableArr: PdfTableConfig[] = [];
if (!isDefaultLayout.value) {
@ -709,6 +752,7 @@
pageRequest.push(initScenarioList());
}
await Promise.all(pageRequest);
const { apiColumns, scenarioColumns, bugColumns, functionalCaseColumns } = await initTablesColumns();
if (fullBugList.value.length > 0) {
tableArr.push({
tableId: 'bug',
@ -734,9 +778,9 @@
executeResult: { cellWidth: 110 / PAGE_PDF_WIDTH_RATIO },
testPlanName: { cellWidth: 240 / PAGE_PDF_WIDTH_RATIO },
priority: { cellWidth: 110 / PAGE_PDF_WIDTH_RATIO },
moduleName: { cellWidth: 200 / PAGE_PDF_WIDTH_RATIO },
moduleName: { cellWidth: 180 / PAGE_PDF_WIDTH_RATIO },
executeUser: { cellWidth: 100 / PAGE_PDF_WIDTH_RATIO },
relationCaseCount: { cellWidth: 90 / PAGE_PDF_WIDTH_RATIO },
relationCaseCount: { cellWidth: 110 / PAGE_PDF_WIDTH_RATIO },
};
if (!isGroup.value) {
delete columnStyles.testPlanName;
@ -745,7 +789,7 @@
tableArr.push({
tableId: 'case',
columnStyles,
columns: caseColumns.value.map((item) => ({
columns: functionalCaseColumns.map((item) => ({
...item,
title: t(item.title as string),
dataKey: item.dataIndex,
@ -763,9 +807,9 @@
executeResult: { cellWidth: 110 / PAGE_PDF_WIDTH_RATIO },
testPlanName: { cellWidth: 230 / PAGE_PDF_WIDTH_RATIO },
priority: { cellWidth: 80 / PAGE_PDF_WIDTH_RATIO },
moduleName: { cellWidth: 170 / PAGE_PDF_WIDTH_RATIO },
moduleName: { cellWidth: 160 / PAGE_PDF_WIDTH_RATIO },
executeUser: { cellWidth: 120 / PAGE_PDF_WIDTH_RATIO },
bugCount: { cellWidth: 90 / PAGE_PDF_WIDTH_RATIO },
bugCount: { cellWidth: 100 / PAGE_PDF_WIDTH_RATIO },
};
if (!isGroup.value) {
delete apiColumnStyles.testPlanName;
@ -775,7 +819,7 @@
tableArr.push({
tableId: 'apiCase',
columnStyles: apiColumnStyles,
columns: apiColumns.value.map((item) => ({
columns: apiColumns.map((item) => ({
...item,
title: t(item.title as string),
dataKey: item.dataIndex,
@ -791,7 +835,7 @@
tableArr.push({
tableId: 'scenario',
columnStyles: apiColumnStyles,
columns: apiColumns.value.map((item) => ({
columns: scenarioColumns.map((item) => ({
...item,
title: t(item.title as string),
dataKey: item.dataIndex,