From 8ed60807f9fb33cb0134393ee34ad132c1a763b9 Mon Sep 17 00:00:00 2001 From: kx_guo Date: Wed, 9 Sep 2026 17:23:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8C=89=E7=B1=BB=E5=9E=8B=E5=BD=92=E5=B9=B6?= =?UTF-8?q?=E6=8A=A5=E5=91=8A=E9=A1=B5=E9=9D=A2=E8=BF=BD=E5=8A=A0=E5=86=85?= =?UTF-8?q?=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/ReportPage.vue | 152 ++++++++++++++++++++++++--------------- 1 file changed, 96 insertions(+), 56 deletions(-) diff --git a/src/pages/ReportPage.vue b/src/pages/ReportPage.vue index b11bd7b..0f52aa7 100644 --- a/src/pages/ReportPage.vue +++ b/src/pages/ReportPage.vue @@ -34,6 +34,48 @@ const reportCards = computed( })); }, ); +const reportData = computed(() => { + const cards = reportCards.value; + const unique = (items: T[], key: (item: T) => string) => { + const seen = new Set(); + return items.filter((item) => { + const value = key(item); + if (seen.has(value)) return false; + seen.add(value); + return true; + }); + }; + const standards = unique( + [ + ...(report.value?.standardJudgment ?? []), + ...cards.flatMap((card) => card.standards ?? []), + ], + (item) => `${item.category}|${item.riskPoint}|${item.rule}|${item.status}`, + ); + const similarCases = unique( + [ + ...(report.value?.similarCases ?? []), + ...cards.flatMap((card) => card.similarCases ?? []), + ], + (item) => `${item.caseId}|${item.date}|${item.product}|${item.problem ?? item.description}|${item.solution}`, + ); + const suggestions = unique( + [ + ...(report.value?.aiSuggestions ?? []), + ...cards.flatMap((card) => card.suggestions ?? []), + ], + (item) => item, + ); + return { + cards, + supplierCards: cards.filter((card) => card.type === "supplier"), + materialCards: cards.filter((card) => card.type === "material"), + solutionCards: cards.filter((card) => card.type === "solution"), + standards, + similarCases, + suggestions, + }; +}); const dimensionRows = computed(() => { if (!report.value) return []; if (report.value.dimensionScores?.length) { @@ -208,7 +250,7 @@ function dimensionConclusion(item: { -