新增项目证据库一期功能

This commit is contained in:
wjj
2026-04-21 16:46:47 +08:00
parent d4ac165723
commit addea20fa1
26 changed files with 1489 additions and 13 deletions

View File

@@ -283,10 +283,23 @@
:visible.sync="detailVisible"
append-to-body
custom-class="detail-dialog"
title="流水详情"
width="980px"
@close="closeDetailDialog"
>
<template slot="title">
<div class="detail-dialog-title">
<span>流水详情</span>
<el-button
class="evidence-corner-btn"
size="mini"
plain
:disabled="detailLoading || !buildFlowEvidenceFingerprint(detailData)"
@click="handleAddEvidence"
>
加入证据库
</el-button>
</div>
</template>
<div v-loading="detailLoading" class="detail-dialog-body">
<div class="detail-overview-grid">
<div class="detail-field">
@@ -394,6 +407,7 @@ import {
getBankStatementOptions,
getBankStatementDetail,
} from "@/api/ccdiProjectBankStatement";
import { buildFlowEvidenceFingerprint, buildFlowEvidenceSnapshot } from "@/utils/ccdiEvidence";
const TAB_MAP = {
all: "all",
@@ -518,6 +532,7 @@ export default {
},
},
methods: {
buildFlowEvidenceFingerprint,
async getList() {
this.syncProjectId();
if (!this.queryParams.projectId) {
@@ -638,6 +653,29 @@ export default {
this.detailLoading = false;
this.detailData = createEmptyDetailData();
},
handleAddEvidence() {
const detail = this.detailData || {};
const sourceRecordId = buildFlowEvidenceFingerprint(detail);
const amountText = this.formatSignedAmount(detail.displayAmount);
const counterparty = this.formatCounterpartyName(detail);
const hitTagText = Array.isArray(detail.hitTags) && detail.hitTags.length
? `,命中${detail.hitTags.map((tag) => tag.ruleName).filter(Boolean).join("、")}标签`
: "";
this.$emit("evidence-confirm", {
evidenceType: "FLOW",
relatedPersonName: this.resolveFlowRelatedPerson(detail),
relatedPersonId: detail.cretNo || "",
evidenceTitle: `${this.resolveFlowRelatedPerson(detail)} / ${this.formatField(detail.leAccountNo)}`,
evidenceSummary: `${this.formatField(detail.trxDate)}${this.resolveFlowRelatedPerson(detail)}账户与${counterparty}发生交易,金额${amountText}${hitTagText}`,
sourceType: "BANK_STATEMENT",
sourceRecordId,
sourcePage: "流水详情",
snapshotJson: JSON.stringify(buildFlowEvidenceSnapshot(detail)),
});
},
resolveFlowRelatedPerson(detail) {
return this.formatField(detail.leAccountName) === "-" ? "关联人员" : this.formatField(detail.leAccountName);
},
handleExport() {
if (this.total === 0) {
return;
@@ -751,6 +789,26 @@ export default {
gap: 12px;
}
.detail-dialog-title {
display: inline-flex;
align-items: center;
gap: 10px;
}
.evidence-corner-btn {
padding: 4px 9px;
font-size: 12px;
color: #5b7fb8;
border-color: #d6e4f7;
background: #f8fbff;
&:hover {
color: #2474e8;
border-color: #9fc3ff;
background: #edf5ff;
}
}
.shell-sidebar,
.shell-main {
border: 1px solid #ebeef5;