From 37e6eef26c7ed68ffb70b53b768462eb9d78cc37 Mon Sep 17 00:00:00 2001 From: wkc <978997012@qq.com> Date: Fri, 20 Mar 2026 11:24:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E5=85=A5=E7=BB=93=E6=9E=9C=E6=80=BB?= =?UTF-8?q?=E8=A7=88=E6=A8=A1=E5=9E=8B=E5=8D=A1=E7=89=87=E7=9C=9F=E5=AE=9E?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/detail/PreliminaryCheck.vue | 10 ++++- .../detail/preliminaryCheck.mock.js | 37 +++++++++++-------- ...eliminary-check-model-data-loading.test.js | 34 +++++++++++++++++ 3 files changed, 64 insertions(+), 17 deletions(-) create mode 100644 ruoyi-ui/tests/unit/preliminary-check-model-data-loading.test.js diff --git a/ruoyi-ui/src/views/ccdiProject/components/detail/PreliminaryCheck.vue b/ruoyi-ui/src/views/ccdiProject/components/detail/PreliminaryCheck.vue index afbe1738..1084d045 100644 --- a/ruoyi-ui/src/views/ccdiProject/components/detail/PreliminaryCheck.vue +++ b/ruoyi-ui/src/views/ccdiProject/components/detail/PreliminaryCheck.vue @@ -30,6 +30,7 @@ import { import { getOverviewDashboard, getOverviewRiskPeople, + getOverviewRiskModelCards, } from "@/api/ccdi/projectOverview"; import OverviewStats from "./OverviewStats"; import RiskPeopleSection from "./RiskPeopleSection"; @@ -102,21 +103,26 @@ export default { this.pageState = "loading"; try { - const [dashboardRes, riskPeopleRes] = await Promise.all([ + const [dashboardRes, riskPeopleRes, riskModelCardsRes] = await Promise.all([ getOverviewDashboard(this.projectId), getOverviewRiskPeople(this.projectId), + getOverviewRiskModelCards(this.projectId), ]); const dashboardData = (dashboardRes && dashboardRes.data) || {}; const riskPeopleData = (riskPeopleRes && riskPeopleRes.data) || {}; + const riskModelCardsData = (riskModelCardsRes && riskModelCardsRes.data) || {}; this.realData = createOverviewLoadedData({ + projectId: this.projectId, dashboardData, riskPeopleData, + riskModelCardsData, }); const hasOverviewData = Boolean( (Array.isArray(dashboardData.stats) && dashboardData.stats.length) || - (Array.isArray(riskPeopleData.overviewList) && riskPeopleData.overviewList.length) + (Array.isArray(riskPeopleData.overviewList) && riskPeopleData.overviewList.length) || + (Array.isArray(riskModelCardsData.cardList) && riskModelCardsData.cardList.length) ); this.pageState = hasOverviewData ? "loaded" : "empty"; diff --git a/ruoyi-ui/src/views/ccdiProject/components/detail/preliminaryCheck.mock.js b/ruoyi-ui/src/views/ccdiProject/components/detail/preliminaryCheck.mock.js index 801ceccf..0ca38925 100644 --- a/ruoyi-ui/src/views/ccdiProject/components/detail/preliminaryCheck.mock.js +++ b/ruoyi-ui/src/views/ccdiProject/components/detail/preliminaryCheck.mock.js @@ -54,20 +54,8 @@ export const mockOverviewData = { { key: "salary", title: "可疑部门产薪异常", count: 32, peopleCount: 6 }, { key: "transfer", title: "频繁转账交易", count: 28, peopleCount: 5 }, ], - filterOptions: { - modelOptions: [ - { label: "大额交易频繁", value: "large" }, - { label: "频繁转账交易", value: "transfer" }, - ], - warningTypeOptions: [ - { label: "高风险", value: "high" }, - { label: "中风险", value: "medium" }, - ], - }, - filterValues: { - model: "large", - warningType: "high", - }, + filterOptions: {}, + filterValues: {}, peopleList: [ { name: "黄明", @@ -147,7 +135,19 @@ function normalizeSummaryStats(stats) { })); } -export function createOverviewLoadedData({ dashboardData, riskPeopleData } = {}) { +function normalizeRiskModelCards(cardList) { + if (!Array.isArray(cardList)) { + return []; + } + return cardList.map((item) => ({ + key: item.modelCode, + title: item.modelName, + count: item.warningCount, + peopleCount: item.peopleCount, + })); +} + +export function createOverviewLoadedData({ projectId, dashboardData, riskPeopleData, riskModelCardsData } = {}) { return { ...mockOverviewData, summary: { @@ -162,6 +162,13 @@ export function createOverviewLoadedData({ dashboardData, riskPeopleData } = {}) ? riskPeopleData.overviewList : [], }, + riskModels: { + ...mockOverviewData.riskModels, + projectId, + cardList: normalizeRiskModelCards(riskModelCardsData && riskModelCardsData.cardList), + peopleList: [], + total: 0, + }, }; } diff --git a/ruoyi-ui/tests/unit/preliminary-check-model-data-loading.test.js b/ruoyi-ui/tests/unit/preliminary-check-model-data-loading.test.js new file mode 100644 index 00000000..3b03bcc1 --- /dev/null +++ b/ruoyi-ui/tests/unit/preliminary-check-model-data-loading.test.js @@ -0,0 +1,34 @@ +const assert = require("assert"); +const fs = require("fs"); +const path = require("path"); + +const preliminaryCheckSource = fs.readFileSync( + path.resolve( + __dirname, + "../../src/views/ccdiProject/components/detail/PreliminaryCheck.vue" + ), + "utf8" +); + +const mockSource = fs.readFileSync( + path.resolve( + __dirname, + "../../src/views/ccdiProject/components/detail/preliminaryCheck.mock.js" + ), + "utf8" +); + +[ + "getOverviewRiskModelCards", + "riskModelCardsRes", + "riskModelCardsData", + "Promise.all", + "pageState === 'loading'", + "pageState === 'empty'", + 'hasOverviewData ? "loaded" : "empty"', +].forEach((token) => assert(preliminaryCheckSource.includes(token), token)); + +[ + "warningTypeOptions", + 'model: "large"', +].forEach((token) => assert(!mockSource.includes(token), token));