收口结果总览风险人员区块
This commit is contained in:
@@ -15,11 +15,3 @@ export function getOverviewRiskPeople(projectId) {
|
||||
params: { projectId }
|
||||
})
|
||||
}
|
||||
|
||||
export function getOverviewTopRiskPeople(projectId) {
|
||||
return request({
|
||||
url: '/ccdi/project/overview/top-risk-people',
|
||||
method: 'get',
|
||||
params: { projectId }
|
||||
})
|
||||
}
|
||||
|
||||
@@ -30,7 +30,6 @@ import {
|
||||
import {
|
||||
getOverviewDashboard,
|
||||
getOverviewRiskPeople,
|
||||
getOverviewTopRiskPeople,
|
||||
} from "@/api/ccdi/projectOverview";
|
||||
import OverviewStats from "./OverviewStats";
|
||||
import RiskPeopleSection from "./RiskPeopleSection";
|
||||
@@ -103,25 +102,21 @@ export default {
|
||||
|
||||
this.pageState = "loading";
|
||||
try {
|
||||
const [dashboardRes, riskPeopleRes, topRiskPeopleRes] = await Promise.all([
|
||||
const [dashboardRes, riskPeopleRes] = await Promise.all([
|
||||
getOverviewDashboard(this.projectId),
|
||||
getOverviewRiskPeople(this.projectId),
|
||||
getOverviewTopRiskPeople(this.projectId),
|
||||
]);
|
||||
const dashboardData = (dashboardRes && dashboardRes.data) || {};
|
||||
const riskPeopleData = (riskPeopleRes && riskPeopleRes.data) || {};
|
||||
const topRiskPeopleData = (topRiskPeopleRes && topRiskPeopleRes.data) || {};
|
||||
|
||||
this.realData = createOverviewLoadedData({
|
||||
dashboardData,
|
||||
riskPeopleData,
|
||||
topRiskPeopleData,
|
||||
});
|
||||
|
||||
const hasOverviewData = Boolean(
|
||||
(Array.isArray(dashboardData.stats) && dashboardData.stats.length) ||
|
||||
(Array.isArray(riskPeopleData.overviewList) && riskPeopleData.overviewList.length) ||
|
||||
(Array.isArray(topRiskPeopleData.topRiskList) && topRiskPeopleData.topRiskList.length)
|
||||
(Array.isArray(riskPeopleData.overviewList) && riskPeopleData.overviewList.length)
|
||||
);
|
||||
|
||||
this.pageState = hasOverviewData ? "loaded" : "empty";
|
||||
|
||||
@@ -16,37 +16,15 @@
|
||||
<el-table-column prop="idNo" label="身份证号" min-width="180" />
|
||||
<el-table-column prop="department" label="所属部门" min-width="140" />
|
||||
<el-table-column prop="riskCount" label="疑似违规数" min-width="100" />
|
||||
<el-table-column prop="riskPoint" label="核心异常点" min-width="220" />
|
||||
<el-table-column label="操作" width="100" align="right">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" size="mini">{{ scope.row.actionLabel || "查看详情" }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
|
||||
<div class="block">
|
||||
<div class="block-header">
|
||||
<div>
|
||||
<div class="block-title">中高风险人员TOP10</div>
|
||||
<div class="block-subtitle">按风险等级和命中数量聚焦重点对象</div>
|
||||
</div>
|
||||
<el-button size="mini" type="text">导出</el-button>
|
||||
</div>
|
||||
|
||||
<el-table :data="sectionData.topRiskList || []" class="people-table">
|
||||
<el-table-column type="index" label="排名" width="60" />
|
||||
<el-table-column prop="name" label="姓名" min-width="100" />
|
||||
<el-table-column prop="idNo" label="身份证号" min-width="180" />
|
||||
<el-table-column prop="department" label="所属部门" min-width="140" />
|
||||
<el-table-column prop="riskLevel" label="风险等级" min-width="100">
|
||||
<el-table-column prop="riskLevel" label="风险等级" min-width="110">
|
||||
<template slot-scope="scope">
|
||||
<el-tag size="mini" :type="scope.row.riskLevelType" effect="plain">
|
||||
{{ scope.row.riskLevel }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="modelCount" label="命中模型数" min-width="100" />
|
||||
<el-table-column prop="modelCount" label="命中模型数" min-width="110" />
|
||||
<el-table-column prop="riskPoint" label="核心异常点" min-width="220" />
|
||||
<el-table-column label="操作" width="100" align="right">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" size="mini">{{ scope.row.actionLabel || "查看详情" }}</el-button>
|
||||
@@ -82,10 +60,6 @@ export default {
|
||||
box-shadow: 0 8px 24px rgba(15, 23, 42, 0.06);
|
||||
}
|
||||
|
||||
.block + .block {
|
||||
margin-top: 24px;
|
||||
}
|
||||
|
||||
.block-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
||||
@@ -18,6 +18,9 @@ export const mockOverviewData = {
|
||||
idNo: "331081199003230321",
|
||||
department: "信息二部",
|
||||
riskCount: 5,
|
||||
riskLevel: "高风险",
|
||||
riskLevelType: "danger",
|
||||
modelCount: 3,
|
||||
riskPoint: "跨地域转账频繁交易",
|
||||
actionLabel: "查看详情",
|
||||
},
|
||||
@@ -26,6 +29,9 @@ export const mockOverviewData = {
|
||||
idNo: "331081199003231077",
|
||||
department: "办公室",
|
||||
riskCount: 2,
|
||||
riskLevel: "中风险",
|
||||
riskLevelType: "warning",
|
||||
modelCount: 2,
|
||||
riskPoint: "多工资转入频繁交易",
|
||||
actionLabel: "查看详情",
|
||||
},
|
||||
@@ -34,30 +40,13 @@ export const mockOverviewData = {
|
||||
idNo: "331081199003231099",
|
||||
department: "信息五部",
|
||||
riskCount: 2,
|
||||
riskLevel: "低风险",
|
||||
riskLevelType: "info",
|
||||
modelCount: 1,
|
||||
riskPoint: "频繁小额转账",
|
||||
actionLabel: "查看详情",
|
||||
},
|
||||
],
|
||||
topRiskList: [
|
||||
{
|
||||
name: "张三",
|
||||
idNo: "331081199003231021",
|
||||
department: "信贷部",
|
||||
riskLevel: "高风险",
|
||||
riskLevelType: "danger",
|
||||
modelCount: 8,
|
||||
actionLabel: "查看详情",
|
||||
},
|
||||
{
|
||||
name: "李四",
|
||||
idNo: "331081199003230321",
|
||||
department: "信息二部",
|
||||
riskLevel: "中风险",
|
||||
riskLevelType: "warning",
|
||||
modelCount: 6,
|
||||
actionLabel: "查看详情",
|
||||
},
|
||||
],
|
||||
},
|
||||
riskModels: {
|
||||
cardList: [
|
||||
@@ -158,7 +147,7 @@ function normalizeSummaryStats(stats) {
|
||||
}));
|
||||
}
|
||||
|
||||
export function createOverviewLoadedData({ dashboardData, riskPeopleData, topRiskPeopleData } = {}) {
|
||||
export function createOverviewLoadedData({ dashboardData, riskPeopleData } = {}) {
|
||||
return {
|
||||
...mockOverviewData,
|
||||
summary: {
|
||||
@@ -172,9 +161,6 @@ export function createOverviewLoadedData({ dashboardData, riskPeopleData, topRis
|
||||
overviewList: Array.isArray(riskPeopleData && riskPeopleData.overviewList)
|
||||
? riskPeopleData.overviewList
|
||||
: [],
|
||||
topRiskList: Array.isArray(topRiskPeopleData && topRiskPeopleData.topRiskList)
|
||||
? topRiskPeopleData.topRiskList
|
||||
: [],
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -191,7 +177,6 @@ export const mockOverviewStateData = {
|
||||
},
|
||||
riskPeople: {
|
||||
overviewList: [],
|
||||
topRiskList: [],
|
||||
},
|
||||
riskModels: {
|
||||
...mockOverviewData.riskModels,
|
||||
|
||||
@@ -10,7 +10,10 @@ const source = fs.readFileSync(
|
||||
[
|
||||
"getOverviewDashboard",
|
||||
"getOverviewRiskPeople",
|
||||
"getOverviewTopRiskPeople",
|
||||
"loadOverviewData",
|
||||
"Promise.all",
|
||||
].forEach((token) => assert(source.includes(token), token));
|
||||
|
||||
assert(!source.includes("getOverviewTopRiskPeople"), "页面不应再依赖TOP10接口");
|
||||
assert(!source.includes("topRiskPeopleRes"), "页面不应再处理TOP10响应");
|
||||
assert(!source.includes("topRiskPeopleData"), "页面不应再处理TOP10数据");
|
||||
|
||||
@@ -9,12 +9,13 @@ const source = fs.readFileSync(
|
||||
|
||||
[
|
||||
"sectionData.overviewList",
|
||||
"sectionData.topRiskList",
|
||||
"riskCount",
|
||||
"riskPoint",
|
||||
"modelCount",
|
||||
"riskLevelType",
|
||||
].forEach((token) => assert(source.includes(token), token));
|
||||
|
||||
assert(!source.includes("sectionData.topRiskList"), "不应再绑定TOP10列表");
|
||||
|
||||
assert(!source.includes("scope.row.riskLevelType || 'danger'"), "riskLevelType fallback");
|
||||
assert(source.includes('scope.row.actionLabel || "查看详情"'), "actionLabel fallback");
|
||||
|
||||
@@ -25,7 +25,8 @@ const people = fs.readFileSync(
|
||||
);
|
||||
|
||||
["风险仪表盘", "overview-stats"].forEach((token) => assert(stats.includes(token), token));
|
||||
["风险人员总览", "中高风险人员TOP10", "查看详情"].forEach((token) =>
|
||||
["风险人员总览", "风险等级", "命中模型数", "查看详情"].forEach((token) =>
|
||||
assert(people.includes(token), token)
|
||||
);
|
||||
assert(!people.includes("中高风险人员TOP10"), "不应保留TOP10区块");
|
||||
assert(entry.includes("risk-people-section"), "入口应挂载风险人员区");
|
||||
|
||||
@@ -10,8 +10,11 @@ const source = fs.readFileSync(
|
||||
[
|
||||
"getOverviewDashboard",
|
||||
"getOverviewRiskPeople",
|
||||
"getOverviewTopRiskPeople",
|
||||
"/ccdi/project/overview/dashboard",
|
||||
"/ccdi/project/overview/risk-people",
|
||||
"/ccdi/project/overview/top-risk-people",
|
||||
].forEach((token) => assert(source.includes(token), token));
|
||||
|
||||
[
|
||||
"getOverviewTopRiskPeople",
|
||||
"/ccdi/project/overview/top-risk-people",
|
||||
].forEach((token) => assert(!source.includes(token), token));
|
||||
|
||||
Reference in New Issue
Block a user