version temp
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -86,7 +86,7 @@ function splitDWBG8B4DForTabs(reportData) {
|
||||
}
|
||||
})
|
||||
|
||||
// 逾期风险产品
|
||||
// 逾期风险
|
||||
result.push({
|
||||
data: {
|
||||
apiID: 'DWBG8B4D_OverdueRisk',
|
||||
|
||||
108
src/ui/CIVYZ81NC.vue
Normal file
108
src/ui/CIVYZ81NC.vue
Normal 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>
|
||||
@@ -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/>`
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user