补充结果总览异常标签模型归属与联动着色

This commit is contained in:
wkc
2026-03-23 14:08:47 +08:00
parent c23aef0ea0
commit c440427715
19 changed files with 401 additions and 25 deletions

View File

@@ -14,8 +14,14 @@
<div v-else class="preliminary-check-page">
<overview-stats :summary="currentData.summary" />
<risk-people-section :section-data="currentData.riskPeople" />
<risk-model-section :section-data="currentData.riskModels" />
<risk-people-section
:section-data="currentData.riskPeople"
:selected-model-codes="selectedModelCodes"
/>
<risk-model-section
:section-data="currentData.riskModels"
@selection-change="handleRiskModelSelectionChange"
/>
<risk-detail-section :section-data="currentData.riskDetails" />
</div>
</div>
@@ -62,6 +68,7 @@ export default {
data() {
return {
pageState: "loading",
selectedModelCodes: [],
mockData: mockOverviewData,
stateDataMap: mockOverviewStateData,
realData: mockOverviewData,
@@ -83,6 +90,7 @@ export default {
}
this.realData = this.stateDataMap.empty;
this.pageState = "empty";
this.selectedModelCodes = [];
},
},
created() {
@@ -94,14 +102,19 @@ export default {
this.pageState = "empty";
},
methods: {
handleRiskModelSelectionChange(modelCodes) {
this.selectedModelCodes = Array.isArray(modelCodes) ? [...modelCodes] : [];
},
async loadOverviewData() {
if (!this.projectId) {
this.realData = this.stateDataMap.empty;
this.pageState = "empty";
this.selectedModelCodes = [];
return;
}
this.pageState = "loading";
this.selectedModelCodes = [];
try {
const [dashboardRes, riskPeopleRes, riskModelCardsRes] = await Promise.all([
getOverviewDashboard(this.projectId),
@@ -129,6 +142,7 @@ export default {
} catch (error) {
this.realData = this.stateDataMap.empty;
this.pageState = "empty";
this.selectedModelCodes = [];
console.error("加载结果总览失败", error);
}
},

View File

@@ -113,7 +113,7 @@
:key="`${scope.row.staffCode || scope.row.idNo || index}-tag-${index}`"
size="mini"
effect="plain"
:type="mapRiskLevelToTagType(tag.riskLevel)"
:type="resolveModelTagType(tag)"
>
{{ tag.ruleName }}
</el-tag>
@@ -232,6 +232,8 @@ export default {
projectId: {
immediate: true,
handler() {
this.selectedModelCodes = [];
this.$emit("selection-change", this.selectedModelCodes);
this.pageNum = 1;
this.fetchPeopleList();
},
@@ -250,6 +252,7 @@ export default {
} else {
this.selectedModelCodes = [...this.selectedModelCodes, modelCode];
}
this.$emit("selection-change", this.selectedModelCodes);
this.pageNum = 1;
this.fetchPeopleList({ syncCardLoading: true });
},
@@ -263,6 +266,7 @@ export default {
},
resetQuery() {
this.selectedModelCodes = [];
this.$emit("selection-change", this.selectedModelCodes);
this.matchMode = "ANY";
this.keyword = "";
this.deptId = undefined;
@@ -290,15 +294,14 @@ export default {
}
return modelNames.join("、");
},
mapRiskLevelToTagType(riskLevel) {
const level = String(riskLevel || "").toUpperCase();
if (level === "HIGH") {
resolveModelTagType(tag) {
if (!this.selectedModelCodes.length) {
return "";
}
if (this.selectedModelCodes.includes(tag.modelCode)) {
return "danger";
}
if (level === "MEDIUM") {
return "warning";
}
return "info";
return "";
},
async loadDeptOptions() {
this.deptLoading = true;

View File

@@ -16,6 +16,9 @@ const source = fs.readFileSync(
"异常标签",
"hitTagList",
"ruleName",
"tag.modelCode",
'this.$emit("selection-change", this.selectedModelCodes)',
':type="resolveModelTagType(tag)"',
].forEach((token) => assert(source.includes(token), token));
[

View File

@@ -38,6 +38,11 @@ const mockSource = fs.readFileSync(
["currentData.summary", "currentData.riskPeople"].forEach((token) =>
assert(entry.includes(token), token)
);
[
':selected-model-codes="selectedModelCodes"',
'@selection-change="handleRiskModelSelectionChange"',
"selectedModelCodes: []",
].forEach((token) => assert(entry.includes(token), token));
["风险人员总览", "风险等级", "命中模型数", "查看详情"].forEach((token) =>
assert(people.includes(token), token)
);