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