version temp

This commit is contained in:
2025-10-24 14:39:32 +08:00
parent ff5cb63960
commit c1dd5551f0
30 changed files with 556 additions and 304 deletions

View File

@@ -1,6 +1,6 @@
<template>
<div class="overdue-risk-section card">
<LTitle title="逾期风险产品" class="mb-4" />
<LTitle title="逾期风险综述" class="mb-4" />
<!-- 逾期概览 -->
<div class="overdue-overview mb-4">
@@ -264,7 +264,7 @@
<div class="grid grid-cols-1 md:grid-cols-3 gap-3">
<div class="text-center p-3 rounded-lg" :class="getRiskFlagClass(overdueRiskProduct.lyjlhyFlag)">
<div class="text-sm font-bold">{{ getRiskFlagText(overdueRiskProduct.lyjlhyFlag) }}</div>
<div class="text-xs">逾期风险产品</div>
<div class="text-xs">逾期风险</div>
</div>
<div class="text-center p-3 rounded-lg" :class="getRiskFlagClass(overdueRiskProduct.dkzhktjFlag)">
<div class="text-sm font-bold">{{ getRiskFlagText(overdueRiskProduct.dkzhktjFlag) }}</div>
@@ -278,9 +278,10 @@
</div>
</div>
</div>
<!-- 温馨提示 -->
<LRemark content="逾期风险产品全面分析申请人的逾期情况和还款行为。包括当前逾期状态、逾期时间分布、还款失败/成功统计等关键指标。逾期机构数和逾期金额是重要的风险评估依据还款失败次数和金额反映还款能力。建议关注最近一次成功还款时间连续还款失败可能预示更高风险。数据来源于各金融机构报送更新频率为T+1。" />
<LRemark
content="逾期风险全面分析申请人的逾期情况和还款行为。包括当前逾期状态、逾期时间分布、还款失败/成功统计等关键指标。逾期机构数和逾期金额是重要的风险评估依据还款失败次数和金额反映还款能力。建议关注最近一次成功还款时间连续还款失败可能预示更高风险。数据来源于各金融机构报送更新频率为T+1。" />
</template>
<script setup>

View File

@@ -283,7 +283,7 @@
</div>
<!-- 法院曝光台信息 -->
<div class="risk-module-card" :class="getModuleCardClass('court')">
<!-- <div class="risk-module-card" :class="getModuleCardClass('court')">
<div class="module-header">
<div class="module-icon bg-purple-500">
<svg class="w-5 h-5 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
@@ -328,7 +328,7 @@
<div class="text-xs text-gray-500">该模块未检测到风险</div>
</div>
</div>
</div>
</div> -->
<!-- 借贷评估 -->
<div class="risk-module-card" :class="getModuleCardClass('loan')">
@@ -427,9 +427,10 @@
</div>
</div>
</div>
<!-- 温馨提示 -->
<LRemark content="风险总览以标签化形式展示各类风险模块的详细信息。每个模块都有独立的风险检测机制和评估标准。要素核查验证基础信息的一致性,运营商核验关注手机号状态,公安重点人员核验检查前科记录,逾期风险分析还款表现,司法风险关注涉诉情况,借贷评估分析申请行为,租赁风险评估关注租赁申请。建议重点关注高风险模块的具体风险项目。" />
<LRemark
content="风险总览以标签化形式展示各类风险模块的详细信息。每个模块都有独立的风险检测机制和评估标准。要素核查验证基础信息的一致性,运营商核验关注手机号状态,公安重点人员核验检查前科记录,逾期风险分析还款表现,司法风险关注涉诉情况,借贷评估分析申请行为,租赁风险评估关注租赁申请。建议重点关注高风险模块的具体风险项目。" />
</template>
<script setup>

View File

@@ -1,49 +1,31 @@
<template>
<div class="card shadow-sm rounded-xl overflow-hidden">
<!-- 报告概览 -->
<ReportOverview
:base-info="data.baseInfo"
:check-suggest="data.checkSuggest"
:fraud-score="data.fraudScore"
:credit-score="data.creditScore"
:verify-rule="data.verifyRule"
:fraud-rule="data.fraudRule"
/>
<ReportOverview :base-info="data.baseInfo" :check-suggest="data.checkSuggest" :fraud-score="data.fraudScore"
:credit-score="data.creditScore" :verify-rule="data.verifyRule" :fraud-rule="data.fraudRule" />
<!-- 要素核查详情 -->
<ElementVerificationSection
:element-verification-detail="data.elementVerificationDetail"
/>
<ElementVerificationSection :element-verification-detail="data.elementVerificationDetail" />
<!-- 风险预警 -->
<RiskWarningSection
:risk-warning="data.riskWarning"
/>
<RiskWarningSection :risk-warning="data.riskWarning" />
<!-- 逾期风险产品 -->
<OverdueRiskSection
:overdue-risk-product="data.overdueRiskProduct"
/>
<!-- 逾期风险综述 -->
<OverdueRiskSection :overdue-risk-product="data.overdueRiskProduct" />
<!-- 法院曝光台信息 -->
<MultCourtInfoSection
<!-- 法院曝光台信息 - 暂时隐藏 -->
<!-- <MultCourtInfoSection
:mult-court-info="data.multCourtInfo"
/>
/> -->
<!-- 借贷评估 -->
<LoanEvaluationSection
:loan-evaluation-verification-detail="data.loanEvaluationVerificationDetail"
/>
<LoanEvaluationSection :loan-evaluation-verification-detail="data.loanEvaluationVerificationDetail" />
<!-- 租赁风险评估 -->
<LeasingRiskSection
:leasing-risk-assessment="data.leasingRiskAssessment"
/>
<LeasingRiskSection :leasing-risk-assessment="data.leasingRiskAssessment" />
<!-- 关联风险监督 -->
<RiskSupervisionSection
:risk-supervision="data.riskSupervision"
/>
<RiskSupervisionSection :risk-supervision="data.riskSupervision" />
</div>
</template>

View File

@@ -86,7 +86,7 @@ function splitDWBG8B4DForTabs(reportData) {
}
})
// 逾期风险产品
// 逾期风险
result.push({
data: {
apiID: 'DWBG8B4D_OverdueRisk',

108
src/ui/CIVYZ81NC.vue Normal file
View File

@@ -0,0 +1,108 @@
<script setup>
import LTitle from "@/components/LTitle.vue";
const props = defineProps({
data: {
type: Object,
required: false,
default: () => null,
},
});
console.log("data", props.data);
// 获取实际的数据对象
const actualData = props.data?.data;
// 日期格式化函数,将 2009-04-16 转换为 2009年04月16日
const formatDate = (dateStr) => {
if (!dateStr) return "";
const [year, month, day] = dateStr.split("-");
return `${year}${month}${day}`;
};
// 状态映射,根据 op_type 判断
const statusMap = {
IA: {
text: "已婚",
bgClass: "bg-green-100",
textClass: "text-green-700",
description: "已登记婚姻,家庭幸福美满",
},
IB: {
text: "离异",
bgClass: "bg-red-100",
textClass: "text-red-700",
description: "离异状态,未来生活可期",
},
INR: {
text: "未登记",
bgClass: "bg-yellow-100",
textClass: "text-yellow-700",
description: "未进行民政登记婚姻",
},
};
// 无记录时的状态
const noRecordStatus = {
text: "无相关记录",
bgClass: "bg-gray-200",
textClass: "text-gray-500",
description: "暂无婚姻相关记录",
opDate: null,
};
// 根据 op_type 确定当前状态,默认值为 "无相关记录"
const currentStatus = !actualData
? noRecordStatus
: actualData.op_type
? { ...statusMap[actualData.op_type], opDate: formatDate(actualData.op_date) }
: noRecordStatus;
</script>
<template>
<div class="card">
<div class="status-info flex flex-col items-center">
<div
:class="`status-label rounded-full px-6 py-3 text-center font-bold shadow-md ${currentStatus.bgClass} ${currentStatus.textClass}`">
{{ currentStatus.text }}
</div>
<div v-if="currentStatus.opDate" class="op-date-container mt-4 px-4 py-2 bg-blue-50 rounded-lg border border-blue-200">
<p class="op-date text-sm font-medium text-blue-700">
登记日期{{ currentStatus.opDate }}
</p>
</div>
<p v-html="currentStatus.description" class="status-description mt-3 text-sm text-gray-600"></p>
</div>
</div>
</template>
<style lang="scss" scoped>
.status-info {
text-align: center;
}
.status-label {
font-size: 1.25rem;
padding: 0.75rem 1.5rem;
border-radius: 9999px;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}
.status-description {
color: #4a5568;
margin-top: 0.5rem;
font-weight: 500;
}
.additional-info p {
margin-top: 0.5rem;
}
.op-date-container {
box-shadow: 0 2px 4px rgba(59, 130, 246, 0.1);
}
.op-date-container:hover {
box-shadow: 0 4px 8px rgba(59, 130, 246, 0.15);
}
</style>

View File

@@ -1,7 +1,7 @@
<template>
<div class="bg-white rounded-xl shadow-sm p-6">
<LTitle title="租赁行为" type="purple" />
<div class="mt-4">
<!-- 租赁行为概览 -->
<div class="bg-gradient-to-r from-purple-50 to-pink-50 rounded-lg p-4 mb-4">
@@ -31,14 +31,10 @@
<span class="w-2 h-2 bg-blue-500 rounded-full mr-2"></span>
租赁申请时间分布
</h3>
<!-- 双柱状图申请次数 vs 申请机构数 -->
<div class="mb-4">
<v-chart
class="chart-container"
:option="timeDistributionChartOption"
autoresize
/>
<v-chart class="chart-container" :option="timeDistributionChartOption" autoresize />
</div>
</div>
@@ -50,7 +46,7 @@
<span class="w-2 h-2 bg-red-500 rounded-full mr-2"></span>
近期活动高风险关注期
</h4>
<!-- 近3天 -->
<div class="mb-4">
<h5 class="font-semibold text-gray-700 mb-2 flex items-center">
@@ -66,19 +62,22 @@
</div>
<div class="flex justify-between items-center">
<span class="text-gray-600 text-sm">🏢 申请机构数</span>
<span :class="getActivityColor(rentalBehavior?.rentalApplicationInstitutionsLast3Days)" class="font-semibold">
<span :class="getActivityColor(rentalBehavior?.rentalApplicationInstitutionsLast3Days)"
class="font-semibold">
{{ getInstitutionCount(rentalBehavior?.rentalApplicationInstitutionsLast3Days) }}
</span>
</div>
<div class="flex justify-between items-center">
<span class="text-gray-600 text-sm">🌙 周末申请次数</span>
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast3DaysWeekend)" class="font-semibold">
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast3DaysWeekend)"
class="font-semibold">
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast3DaysWeekend) }}
</span>
</div>
<div class="flex justify-between items-center">
<span class="text-gray-600 text-sm">🌃 夜间申请次数</span>
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast3DaysNight)" class="font-semibold">
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast3DaysNight)"
class="font-semibold">
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast3DaysNight) }}
</span>
</div>
@@ -100,19 +99,22 @@
</div>
<div class="flex justify-between items-center">
<span class="text-gray-600 text-sm">🏢 申请机构数</span>
<span :class="getActivityColor(rentalBehavior?.rentalApplicationInstitutionsLast7Days)" class="font-semibold">
<span :class="getActivityColor(rentalBehavior?.rentalApplicationInstitutionsLast7Days)"
class="font-semibold">
{{ getInstitutionCount(rentalBehavior?.rentalApplicationInstitutionsLast7Days) }}
</span>
</div>
<div class="flex justify-between items-center">
<span class="text-gray-600 text-sm">🌙 周末申请次数</span>
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast7DaysWeekend)" class="font-semibold">
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast7DaysWeekend)"
class="font-semibold">
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast7DaysWeekend) }}
</span>
</div>
<div class="flex justify-between items-center">
<span class="text-gray-600 text-sm">🌃 夜间申请次数</span>
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast7DaysNight)" class="font-semibold">
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast7DaysNight)"
class="font-semibold">
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast7DaysNight) }}
</span>
</div>
@@ -134,19 +136,22 @@
</div>
<div class="flex justify-between items-center">
<span class="text-gray-600 text-sm">🏢 申请机构数</span>
<span :class="getActivityColor(rentalBehavior?.rentalApplicationInstitutionsLast14Days)" class="font-semibold">
<span :class="getActivityColor(rentalBehavior?.rentalApplicationInstitutionsLast14Days)"
class="font-semibold">
{{ getInstitutionCount(rentalBehavior?.rentalApplicationInstitutionsLast14Days) }}
</span>
</div>
<div class="flex justify-between items-center">
<span class="text-gray-600 text-sm">🌙 周末申请次数</span>
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast14DaysWeekend)" class="font-semibold">
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast14DaysWeekend)"
class="font-semibold">
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast14DaysWeekend) }}
</span>
</div>
<div class="flex justify-between items-center">
<span class="text-gray-600 text-sm">🌃 夜间申请次数</span>
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast14DaysNight)" class="font-semibold">
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast14DaysNight)"
class="font-semibold">
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast14DaysNight) }}
</span>
</div>
@@ -168,19 +173,22 @@
</div>
<div class="flex justify-between items-center">
<span class="text-gray-600 text-sm">🏢 申请机构数</span>
<span :class="getActivityColor(rentalBehavior?.rentalApplicationInstitutionsLast1Month)" class="font-semibold">
<span :class="getActivityColor(rentalBehavior?.rentalApplicationInstitutionsLast1Month)"
class="font-semibold">
{{ getInstitutionCount(rentalBehavior?.rentalApplicationInstitutionsLast1Month) }}
</span>
</div>
<div class="flex justify-between items-center">
<span class="text-gray-600 text-sm">🌙 周末申请次数</span>
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast1MonthWeekend)" class="font-semibold">
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast1MonthWeekend)"
class="font-semibold">
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast1MonthWeekend) }}
</span>
</div>
<div class="flex justify-between items-center">
<span class="text-gray-600 text-sm">🌃 夜间申请次数</span>
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast1MonthNight)" class="font-semibold">
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast1MonthNight)"
class="font-semibold">
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast1MonthNight) }}
</span>
</div>
@@ -194,7 +202,7 @@
<span class="w-2 h-2 bg-yellow-500 rounded-full mr-2"></span>
中期租赁活动
</h4>
<!-- 近3个月 -->
<div class="mb-4">
<h5 class="font-semibold text-gray-700 mb-2 flex items-center">
@@ -204,25 +212,29 @@
<div class="grid grid-cols-1 gap-2 bg-white rounded-lg p-3 border">
<div class="flex justify-between items-center">
<span class="text-gray-600 text-sm">📊 申请次数</span>
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast3Months)" class="font-semibold">
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast3Months)"
class="font-semibold">
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast3Months) }}
</span>
</div>
<div class="flex justify-between items-center">
<span class="text-gray-600 text-sm">🏢 申请机构数</span>
<span :class="getActivityColor(rentalBehavior?.rentalApplicationInstitutionsLast3Months)" class="font-semibold">
<span :class="getActivityColor(rentalBehavior?.rentalApplicationInstitutionsLast3Months)"
class="font-semibold">
{{ getInstitutionCount(rentalBehavior?.rentalApplicationInstitutionsLast3Months) }}
</span>
</div>
<div class="flex justify-between items-center">
<span class="text-gray-600 text-sm">🌙 周末申请次数</span>
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast3MonthsWeekend)" class="font-semibold">
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast3MonthsWeekend)"
class="font-semibold">
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast3MonthsWeekend) }}
</span>
</div>
<div class="flex justify-between items-center">
<span class="text-gray-600 text-sm">🌃 夜间申请次数</span>
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast3MonthsNight)" class="font-semibold">
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast3MonthsNight)"
class="font-semibold">
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast3MonthsNight) }}
</span>
</div>
@@ -238,25 +250,29 @@
<div class="grid grid-cols-1 gap-2 bg-white rounded-lg p-3 border">
<div class="flex justify-between items-center">
<span class="text-gray-600 text-sm">📊 申请次数</span>
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast6Months)" class="font-semibold">
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast6Months)"
class="font-semibold">
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast6Months) }}
</span>
</div>
<div class="flex justify-between items-center">
<span class="text-gray-600 text-sm">🏢 申请机构数</span>
<span :class="getActivityColor(rentalBehavior?.rentalApplicationInstitutionsLast6Months)" class="font-semibold">
<span :class="getActivityColor(rentalBehavior?.rentalApplicationInstitutionsLast6Months)"
class="font-semibold">
{{ getInstitutionCount(rentalBehavior?.rentalApplicationInstitutionsLast6Months) }}
</span>
</div>
<div class="flex justify-between items-center">
<span class="text-gray-600 text-sm">🌙 周末申请次数</span>
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast6MonthsWeekend)" class="font-semibold">
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast6MonthsWeekend)"
class="font-semibold">
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast6MonthsWeekend) }}
</span>
</div>
<div class="flex justify-between items-center">
<span class="text-gray-600 text-sm">🌃 夜间申请次数</span>
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast6MonthsNight)" class="font-semibold">
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast6MonthsNight)"
class="font-semibold">
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast6MonthsNight) }}
</span>
</div>
@@ -270,7 +286,7 @@
<span class="w-2 h-2 bg-green-500 rounded-full mr-2"></span>
长期租赁活动
</h4>
<!-- 近12个月 -->
<div>
<h5 class="font-semibold text-gray-700 mb-2 flex items-center">
@@ -280,25 +296,29 @@
<div class="grid grid-cols-1 gap-2 bg-white rounded-lg p-3 border">
<div class="flex justify-between items-center">
<span class="text-gray-600 text-sm">📊 申请次数</span>
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast12Months)" class="font-semibold">
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast12Months)"
class="font-semibold">
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast12Months) }}
</span>
</div>
<div class="flex justify-between items-center">
<span class="text-gray-600 text-sm">🏢 申请机构数</span>
<span :class="getActivityColor(rentalBehavior?.rentalApplicationInstitutionsLast12Months)" class="font-semibold">
<span :class="getActivityColor(rentalBehavior?.rentalApplicationInstitutionsLast12Months)"
class="font-semibold">
{{ getInstitutionCount(rentalBehavior?.rentalApplicationInstitutionsLast12Months) }}
</span>
</div>
<div class="flex justify-between items-center">
<span class="text-gray-600 text-sm">🌙 周末申请次数</span>
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast12MonthsWeekend)" class="font-semibold">
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast12MonthsWeekend)"
class="font-semibold">
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast12MonthsWeekend) }}
</span>
</div>
<div class="flex justify-between items-center">
<span class="text-gray-600 text-sm">🌃 夜间申请次数</span>
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast12MonthsNight)" class="font-semibold">
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast12MonthsNight)"
class="font-semibold">
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast12MonthsNight) }}
</span>
</div>
@@ -312,16 +332,12 @@
<span class="w-2 h-2 bg-amber-500 rounded-full mr-2"></span>
特殊时间段活动分析
</h4>
<!-- 周末 vs 夜间活动对比图 -->
<div class="mb-4">
<v-chart
class="chart-container"
:option="specialTimeChartOption"
autoresize
/>
<v-chart class="chart-container" :option="specialTimeChartOption" autoresize />
</div>
<div class="text-xs text-gray-600 bg-white rounded-lg p-3 border">
<div class="font-semibold mb-1">风险提示</div>
<div> 周末申请可能存在异常行为模式</div>
@@ -395,9 +411,10 @@
</div>
</div>
</div>
<!-- 温馨提示 -->
<LRemark content="租赁行为分析展示申请人在租赁领域的行为模式,包括租赁申请频率、租赁金额分布、租赁期限和还款表现等。数据来源于租赁公司和金融租赁机构。租赁行为可以反映申请人的消费习惯、资金管理能力和信用意识。频繁的租赁申请或大额租赁可能暗示资金紧张,而良好的租赁还款记录则可以提升信用评价。建议关注租赁逾期情况和还款稳定性。" />
<LRemark
content="租赁行为分析展示申请人在租赁领域的行为模式,包括租赁申请频率、租赁金额分布、租赁期限和还款表现等。数据来源于租赁公司和金融租赁机构。租赁行为可以反映申请人的消费习惯、资金管理能力和信用意识。频繁的租赁申请或大额租赁可能暗示资金紧张,而良好的租赁还款记录则可以提升信用评价。建议关注租赁逾期情况和还款稳定性。" />
</template>
<script setup>
@@ -495,7 +512,7 @@ const hasHighFrequencyRisk = computed(() => {
const data3Days = parseApplicationData(rentalBehavior.value?.rentalApplicationCountLast3Days)
const data7Days = parseApplicationData(rentalBehavior.value?.rentalApplicationCountLast7Days)
const data1Month = parseApplicationData(rentalBehavior.value?.rentalApplicationCountLast1Month)
// 3天内超过2次7天内超过5次或1个月内超过10次视为高频
return data3Days.count > 2 || data7Days.count > 5 || data1Month.count > 10
})
@@ -508,22 +525,22 @@ const hasAbnormalTimeActivity = computed(() => {
// 近期高活动时段
const recentHighActivity = computed(() => {
const activities = []
const data3Days = parseApplicationData(rentalBehavior.value?.rentalApplicationCountLast3Days)
const data7Days = parseApplicationData(rentalBehavior.value?.rentalApplicationCountLast7Days)
const data14Days = parseApplicationData(rentalBehavior.value?.rentalApplicationCountLast14Days)
if (data3Days.count > 2) activities.push('近3天')
if (data7Days.count > 5) activities.push('近7天')
if (data14Days.count > 8) activities.push('近14天')
return activities
})
// 获取活动颜色
const getActivityColor = (dataStr) => {
const data = parseApplicationData(dataStr)
if (data.count === 0) return 'text-green-600'
if (data.count <= 2) return 'text-blue-600'
if (data.count <= 5) return 'text-yellow-600'
@@ -534,7 +551,7 @@ const getActivityColor = (dataStr) => {
// 时间分布图表配置
const timeDistributionChartOption = computed(() => {
const periods = ['近3天', '近7天', '近14天', '近1个月', '近3个月', '近6个月', '近12个月']
const countData = [
getApplicationCount(rentalBehavior.value?.rentalApplicationCountLast3Days),
getApplicationCount(rentalBehavior.value?.rentalApplicationCountLast7Days),
@@ -544,7 +561,7 @@ const timeDistributionChartOption = computed(() => {
getApplicationCount(rentalBehavior.value?.rentalApplicationCountLast6Months),
getApplicationCount(rentalBehavior.value?.rentalApplicationCountLast12Months)
]
const institutionData = [
getInstitutionCount(rentalBehavior.value?.rentalApplicationInstitutionsLast3Days),
getInstitutionCount(rentalBehavior.value?.rentalApplicationInstitutionsLast7Days),
@@ -554,14 +571,14 @@ const timeDistributionChartOption = computed(() => {
getInstitutionCount(rentalBehavior.value?.rentalApplicationInstitutionsLast6Months),
getInstitutionCount(rentalBehavior.value?.rentalApplicationInstitutionsLast12Months)
]
return {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
},
formatter: function(params) {
formatter: function (params) {
let result = params[0].name + '<br/>'
params.forEach(item => {
result += `${item.seriesName}: ${item.value}<br/>`
@@ -655,7 +672,7 @@ const timeDistributionChartOption = computed(() => {
// 特殊时间段活动对比图表配置
const specialTimeChartOption = computed(() => {
const periods = ['近3天', '近7天', '近14天', '近1个月', '近3个月', '近6个月', '近12个月']
const weekendData = [
getApplicationCount(rentalBehavior.value?.rentalApplicationCountLast3DaysWeekend),
getApplicationCount(rentalBehavior.value?.rentalApplicationCountLast7DaysWeekend),
@@ -665,7 +682,7 @@ const specialTimeChartOption = computed(() => {
getApplicationCount(rentalBehavior.value?.rentalApplicationCountLast6MonthsWeekend),
getApplicationCount(rentalBehavior.value?.rentalApplicationCountLast12MonthsWeekend)
]
const nightData = [
getApplicationCount(rentalBehavior.value?.rentalApplicationCountLast3DaysNight),
getApplicationCount(rentalBehavior.value?.rentalApplicationCountLast7DaysNight),
@@ -675,14 +692,14 @@ const specialTimeChartOption = computed(() => {
getApplicationCount(rentalBehavior.value?.rentalApplicationCountLast6MonthsNight),
getApplicationCount(rentalBehavior.value?.rentalApplicationCountLast12MonthsNight)
]
return {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
},
formatter: function(params) {
formatter: function (params) {
let result = params[0].name + '<br/>'
params.forEach(item => {
result += `${item.seriesName}: ${item.value} 次<br/>`

View File

@@ -1,74 +1,48 @@
<template>
<div class="card shadow-sm rounded-xl overflow-hidden">
<!-- 基本信息 -->
<BaseInfoSection
:data="{ baseInfo: data.baseInfo }"
/>
<BaseInfoSection :data="{ baseInfo: data.baseInfo }" />
<!-- 身份信息核验 -->
<StandLiveInfoSection
:data="{ standLiveInfo: data.standLiveInfo }"
/>
<StandLiveInfoSection :data="{ standLiveInfo: data.standLiveInfo }" />
<!-- 命中风险标注 -->
<RiskPointSection
:data="{ riskPoint: data.riskPoint }"
/>
<RiskPointSection :data="{ riskPoint: data.riskPoint }" />
<!-- 公安重点人员核验 -->
<SecurityInfoSection
:data="{ securityInfo: data.securityInfo }"
/>
<SecurityInfoSection :data="{ securityInfo: data.securityInfo }" />
<!-- 涉赌涉诈人员核验 -->
<AntiFraudInfoSection
:data="{ antiFraudInfo: data.antiFraudInfo }"
/>
<AntiFraudInfoSection :data="{ antiFraudInfo: data.antiFraudInfo }" />
<!-- 风险名单 -->
<RiskListSection
:data="{ riskList: data.riskList }"
/>
<RiskListSection :data="{ riskList: data.riskList }" />
<!-- 历史借贷行为 -->
<ApplicationStatisticsSection
:data="{ applicationStatistics: data.applicationStatistics }"
/>
<ApplicationStatisticsSection :data="{ applicationStatistics: data.applicationStatistics }" />
<!-- 近24个月放款情况 -->
<LendingStatisticsSection
:data="{ lendingStatistics: data.lendingStatistics }"
/>
<LendingStatisticsSection :data="{ lendingStatistics: data.lendingStatistics }" />
<!-- 履约情况 -->
<PerformanceStatisticsSection
:data="{ performanceStatistics: data.performanceStatistics }"
/>
<PerformanceStatisticsSection :data="{ performanceStatistics: data.performanceStatistics }" />
<!-- 历史逾期记录 -->
<OverdueRecordSection
:data="{ overdueRecord: data.overdueRecord }"
/>
<OverdueRecordSection :data="{ overdueRecord: data.overdueRecord }" />
<!-- 授信详情 -->
<CreditDetailSection
:data="{ creditDetail: data.creditDetail }"
/>
<CreditDetailSection :data="{ creditDetail: data.creditDetail }" />
<!-- 租赁行为 -->
<RentalBehaviorSection
:data="{ rentalBehavior: data.rentalBehavior }"
/>
<RentalBehaviorSection :data="{ rentalBehavior: data.rentalBehavior }" />
<!-- 关联风险监督 -->
<RiskSupervisionSection
:data="{ riskSupervision: data.riskSupervision }"
/>
<RiskSupervisionSection :data="{ riskSupervision: data.riskSupervision }" />
<!-- 法院风险信息 -->
<CourtRiskInfoSection
<!-- <CourtRiskInfoSection
:data="{ judiciaRiskInfos: data.judiciaRiskInfos }"
/>
/> -->
</div>
</template>