This commit is contained in:
Mrx
2026-02-14 13:31:25 +08:00
parent 2ba4e75f45
commit 08469ce4dd
5 changed files with 557 additions and 14 deletions

View File

@@ -28,15 +28,15 @@
<!-- 基础SEO信息 -->
<title>
全能查官网_综合风险排查工具_个人与企业背景核验平台
全能查官网_个人婚姻状态报告_综合风险排查工具箱
</title>
<meta
name="description"
content="全能查是您的掌上风控工具箱平台基于合规数据,提供个人风险预警、职场入职自查及黑名单筛查服务无需繁琐流程,客观中立,一键生成报告,助您快速识别生活中的潜在隐患"
content="全能查是您的掌上风控工具箱平台基于合规数据提供个人婚姻状态分析、职场背调及黑名单筛查服务无需繁琐流程客观中立一键生成包含婚姻涉诉历史与家庭风险的综合报告助您快速识别潜在隐患"
/>
<meta
name="keywords"
content="大数据风险报告查询、大数据风险评估、大数据分析报告、个人大数据风险查询、小微企业风险、贷前风险背调、代理管理平台、免费开通代理、风险管控平台、信用风险分析、企业风险报告、贷前信用审核、失信人名单查询、被执行人信息、信用黑名单查询"
content="全能查,婚姻状态核实,风险排查工具,个人风险预警,第三方背调,商业信用评估"
/>
<meta name="author" content="全能查" />
<meta name="robots" content="index, follow" />
@@ -48,11 +48,11 @@
<meta property="og:url" content="https://www.zhinengcha.cn/" />
<meta
property="og:title"
content="全能查官网_综合风险排查工具_个人与企业背景核验平台"
content="全能查官网_个人婚姻状态报告_综合风险排查工具箱"
/>
<meta
property="og:description"
content="全能查是您的掌上风控工具箱平台基于合规数据,提供个人风险预警、职场入职自查及黑名单筛查服务无需繁琐流程,客观中立,一键生成报告,助您快速识别生活中的潜在隐患"
content="全能查是您的掌上风控工具箱平台基于合规数据提供个人婚姻状态分析、职场背调及黑名单筛查服务无需繁琐流程客观中立一键生成包含婚姻涉诉历史与家庭风险的综合报告助您快速识别潜在隐患"
/>
<meta property="og:site_name" content="全能查" />
<meta property="og:locale" content="zh_CN" />
@@ -62,11 +62,11 @@
<meta property="twitter:url" content="https://www.zhinengcha.cn/" />
<meta
property="twitter:title"
content="全能查官网_综合风险排查工具_个人与企业背景核验平台"
content="全能查官网_个人婚姻状态报告_综合风险排查工具箱"
/>
<meta
property="twitter:description"
content="全能查是您的掌上风控工具箱平台基于合规数据,提供个人风险预警、职场入职自查及黑名单筛查服务无需繁琐流程,客观中立,一键生成报告,助您快速识别生活中的潜在隐患"
content="全能查是您的掌上风控工具箱平台基于合规数据提供个人婚姻状态分析、职场背调及黑名单筛查服务无需繁琐流程客观中立一键生成包含婚姻涉诉历史与家庭风险的综合报告助您快速识别潜在隐患"
/>
<!-- 其他重要meta标签 -->

View File

@@ -1,5 +1,5 @@
{
"name": "全能查官网_综合风险排查工具_个人与企业背景核验平台",
"name": "全能查官网_个人婚姻状态报告_综合风险排查工具箱",
"short_name": "全能查",
"description": "专业大数据风险报告查询与代理平台,支持个人信用查询、小微企业风控、贷前风险背调等多场景报告应用",
"start_url": "/",

View File

@@ -269,6 +269,12 @@ const featureMap = {
name: "违约失信",
component: defineAsyncComponent(() => import("@/ui/CFLXG3D56.vue")),
},
IVYZ0S0D:{
name: "劳动仲裁信息查询(个人版)",
component: defineAsyncComponent(() => import("@/ui/CIVYZ0S0D.vue")),
remark: '劳动仲裁信息查询(个人版)用于查询个人在劳动仲裁方面的信息,包括劳动仲裁案件数量、劳动仲裁案件类型、劳动仲裁案件结果等。',
},
FLXG0V4B: {
name: "司法涉诉",
@@ -673,12 +679,15 @@ const featureRiskLevels = {
'QCXG7A2B': 10, // 名下车辆
'JRZQ09J8': 10, // 收入评估
'JRZQ3C9R': 10, // 支付行为指数
'IVYZ0S0D': 10, // 个人仲裁信息
// 🔵 低风险类 - 权重 3-5
'IVYZ5733': 4, // 婚姻状态
'IVYZ9A2B': 4, // 学历信息
'IVYZ3P9M': 4, // 学历信息查询(实时版)
// 📊 复合报告类 - 按子模块动态计算
'DWBG8B4D': 0, // 谛听多维报告(由子模块计算)
'DWBG6A2C': 0, // 司南报告(由子模块计算)

View File

@@ -6,11 +6,11 @@ export function useSEO() {
// 默认SEO信息
const defaultSEO = {
title: "全能查官网_综合风险排查工具_个人与企业背景核验平台",
title: "全能查官网_个人婚姻状态报告_综合风险排查工具箱",
description:
"全能查是您的掌上风控工具箱平台基于合规数据,提供个人风险预警、职场入职自查及黑名单筛查服务无需繁琐流程,客观中立,一键生成报告,助您快速识别生活中的潜在隐患",
"全能查是您的掌上风控工具箱平台基于合规数据提供个人婚姻状态分析、职场背调及黑名单筛查服务无需繁琐流程客观中立一键生成包含婚姻涉诉历史与家庭风险的综合报告助您快速识别潜在隐患",
keywords:
"大数据风险报告查询、大数据风险评估、大数据分析报告、个人大数据风险查询、小微企业风险、贷前风险背调、代理管理平台、免费开通代理、风险管控平台、信用风险分析、企业风险报告、贷前信用审核、失信人名单查询、被执行人信息、信用黑名单查询",
"全能查,婚姻状态核实,风险排查工具,个人风险预警,第三方背调,商业信用评估",
url: "https://www.zhinengcha.cn",
};
@@ -153,11 +153,59 @@ export function useSEO() {
const updateSEOByRoute = () => {
const routeConfigs = {
"/": {
title: "全能查官网_综合风险排查工具_个人与企业背景核验平台",
title: "全能查官网_个人婚姻状态报告_综合风险排查工具箱",
description:
"全能查是您的掌上风控工具箱平台基于合规数据,提供个人风险预警、职场入职自查及黑名单筛查服务无需繁琐流程,客观中立,一键生成报告,助您快速识别生活中的潜在隐患",
"全能查是您的掌上风控工具箱平台基于合规数据提供个人婚姻状态分析、职场背调及黑名单筛查服务无需繁琐流程客观中立一键生成包含婚姻涉诉历史与家庭风险的综合报告助您快速识别潜在隐患",
keywords:
"大数据风险报告查询、大数据风险评估、大数据分析报告、个人大数据风险查询、小微企业风险、贷前风险背调、代理管理平台、免费开通代理、风险管控平台、信用风险分析、企业风险报告、贷前信用审核、失信人名单查询、被执行人信息、信用黑名单查询",
"全能查,婚姻状态核实,风险排查工具,个人风险预警,第三方背调,商业信用评估",
},
"/agent/system-guide": {
title: "全能查合作政策指南_合作伙伴权益与结算说明_官方文档",
description:
"全能查官方合作体系说明文档。详细解读合作伙伴的等级权益、服务费结算标准及晋升机制。致力于构建公平、透明的商业合作生态,助力合作伙伴快速上手业务。",
keywords: "合作伙伴政策,服务费结算,渠道等级说明,业务操作指南,代理系统后台",
},
// 个人查询
'/inquire/riskassessment': {
title: '个人综合风险分析_履约能力画像_多维数据检测_全能查',
description: '全能查个人风险报告为您提供全方位的信用健康度参考。基于公开数据深度解析综合风险指数、司法关联风险、历史履约趋势及潜在的负面标签。数据客观中立,帮助用户建立良好的个人履约记录管理意识。',
keywords: '个人风险检测,履约能力分析,综合风险指数,信用健康度,个人数据画像'
},
// 企业查询
'/inquire/companyinfo': {
title: '企业工商信用画像_经营异常与商业风险透视_全能查',
description: '全能查企业版深度透视商业真相。聚合工商、司法及税务公开数据,核验企业经营异常名录、行政处罚、法律诉讼及股权穿透信息。全方位评估合作伙伴的商业健康度,规避合同违约风险。',
keywords: '企业信用评估,工商背景核验,商业风险评估,公司经营异常,合作方背景核实'
},
// 贷前风险
'/inquire/preloanbackgroundcheck': {
title: '综合履约评分检测_多平台履约记录分析_个人财务履约报告_天远助手',
description: '天远助手提供专业的个人履约健康度体检服务。基于多维大数据分析,检测您的综合评分波动、历史履约记录及潜在的风险标签。本服务旨在帮助用户优化个人数据画像,提升信用管理意识,不提供任何信贷金融服务。',
keywords: '综合评分检测,多重履约压力分析,履约能力评估,综合评分优化,个人数据画像'
},
// 婚恋风险
'/inquire/marriage': {
title: '婚前综合背景了解_情感安全风险评估_家庭履约分析_全能查',
description: '全能查婚恋风险报告基于合法公开数据,辅助评估对象的婚前背景。核心核验司法涉诉记录、失信被执行历史、多重履约能力及不良社会标签。拒绝情感盲区,用数据守护您的家庭与财产安全。',
keywords: '婚前背景报告,恋爱对象风险,情感安全评估,司法记录核验,家庭风险防范'
},
// 入职背调
'/inquire/backgroundcheck': {
title: '职场背景核验报告_候选人职业风险与竞业核验_全能查',
description: '全能查为企业提供专业的入职背调服务。一键筛查候选人的学历背景、涉及的商业利益冲突、劳动仲裁记录及社会不良风险。数据实时合规,降低企业用工试错成本,提升招聘决策效率。',
keywords: '员工入职背调,职业背景核实,竞业限制评估,职场信用报告,候选人风险筛查'
},
// 家政风险
'/inquire/homeservice': {
title: '家政人员背景核实_保姆月嫂司法安全评估_全能查',
description: '全能查针对家庭用工场景,提供客观的家政人员背景核验服务。重点核验身份信息、司法涉诉记录及失信历史。辅助雇主识别高危人员,让居家养老育儿更安心。',
keywords: '保姆背景核验,家政风险筛查,月嫂司法记录,雇佣安全评估,家政人员核验'
},
'/inquire/consumerFinanceReport': {
title: '个人履约能力评估_经济风险与收支压力参考_全能查',
description: '全能查履约报告基于大数据算法,提供个人经济稳定性的客观分析。多维度检测综合履约分、经济关联风险及潜在的资金压力指数。本服务仅提供大数据层面的风险参考,助您优化财务管理。',
keywords: '履约能力评估,经济风险指数,综合评分波动,资金压力分析,财务健康度'
},
"/agent": {
title: "全能查代理 - 免费开通代理权限 | 大数据风险报告代理",
@@ -191,6 +239,11 @@ export function useSEO() {
"全能查客服中心,提供在线客服支持、技术咨询、问题反馈等服务,确保用户获得及时有效的帮助。",
keywords: "客服中心, 在线客服, 技术支持, 问题反馈, 全能查客服",
},
"/promote": {
title: "全能查合伙人计划_风控平台系统招商_渠道合作平台_全能查",
description:"全能查开放全国渠道合作,提供零门槛的风险评估系统接入服务。一键开通独立后台,支持婚恋、职场、家政及商业风控等多场景报告推广。正规项目,结算透明,赋能流量方实现合规商业价值。",
keywords:"风控系统代理,风险评估平台招商,平台渠道合作,企业服务创业,全能查合伙人",
},
};
const currentPath = route?.path || "/";

481
src/ui/CIVYZ0S0D.vue Normal file
View File

@@ -0,0 +1,481 @@
<script setup lang="ts">
import { computed } from 'vue';
// 接收父组件传入的 props
const props = defineProps({
data: Object,
params: Object,
});
// 定义组件名称,用于在控制台输出调试信息
const componentName = 'IVYZ0S0D';
// 将 props.data 赋值给 reportData 变量
let reportData: any = props.data || {};
// 如果 reportData 不为空,则将其赋值给变量
if (reportData) {
console.log(`${componentName} 组件接收到的数据:`, reportData);
} else {
console.log(`${componentName} 组件未接收到数据`);
}
// 获取状态描述文本
const getStatusText = (value: number) => {
if (value === 1) return '未命中';
if (value === 2) return '命中';
return '未知';
};
// 获取通知函状态描述文本
const getNoticeLetterStatusText = (value: number) => {
if (value === 1) return '未命中';
if (value === 2) return '命中';
return '未知';
};
// 获取通知函期间描述文本
const getNoticeLetterPeriodText = (period: number) => {
const periodMap: Record<number, string> = {
0: '没有被发送通知函',
1: '近2年内',
2: '2-4年',
3: '5年以上'
};
return periodMap[period] || '未知期间';
};
// 获取背景颜色
const getBackgroundColor = (value: number) => {
if (value === 1) return '#e8f5e8'; // 浅绿色
if (value === 2) return '#ffe8e8'; // 浅红色
return '#f5f5f5'; // 默认灰色
};
// 获取边框颜色
const getBorderColor = (value: number) => {
if (value === 1) return '#4caf50'; // 绿色边框
if (value === 2) return '#f44336'; // 红色边框
return '#ccc'; // 默认灰色边框
};
// 判断是否应该隐藏该条目(如果是带时间范围的"未命中"
const shouldHideItem = (itemText: string) => {
// 检查是否包含时间范围关键词并且结果是"未命中"
const timeRangeKeywords = ['近2年', '近3年', '近4年', '近5年', '2-4年', '5年以上'];
const isTimeRangeItem = timeRangeKeywords.some(keyword => itemText.includes(keyword));
const isNoRisk = itemText.includes('未命中');
// 如果是时间范围项目且结果是"未命中",则隐藏
return isTimeRangeItem && isNoRisk;
};
// 获取风险类型数组 - 所有模块都显示
const riskTypes = computed(() => {
const risks: {title: string, value: number, details: string | string[], bgColor: string, borderColor: string}[] = [];
// 总体风险
if (reportData.risk_flag !== undefined) {
risks.push({
title: '总体风险',
value: reportData.risk_flag,
details: getStatusText(reportData.risk_flag),
bgColor: getBackgroundColor(reportData.risk_flag),
borderColor: getBorderColor(reportData.risk_flag)
});
}
// 失信风险
if (reportData.dishonesty && reportData.dishonesty.dishonesty !== undefined) {
risks.push({
title: '失信风险',
value: reportData.dishonesty.dishonesty,
details: getStatusText(reportData.dishonesty.dishonesty),
bgColor: getBackgroundColor(reportData.dishonesty.dishonesty),
borderColor: getBorderColor(reportData.dishonesty.dishonesty)
});
}
// 高消费限制风险
if (reportData.high_consumption && reportData.high_consumption.high_consumption !== undefined) {
risks.push({
title: '高消费限制风险',
value: reportData.high_consumption.high_consumption,
details: getStatusText(reportData.high_consumption.high_consumption),
bgColor: getBackgroundColor(reportData.high_consumption.high_consumption),
borderColor: getBorderColor(reportData.high_consumption.high_consumption)
});
}
// 劳动争议风险
if (reportData.labor_disputes) {
let details: string[] = [];
if (reportData.labor_disputes.labor_disputes !== undefined) {
details.push(`当前: ${getStatusText(reportData.labor_disputes.labor_disputes)}`);
}
if (reportData.labor_disputes.labor_disputes_3y !== undefined) {
const detail = `近3年: ${getStatusText(reportData.labor_disputes.labor_disputes_3y)}`;
if (!shouldHideItem(detail)) {
details.push(detail);
}
}
if (reportData.labor_disputes.labor_disputes_5y !== undefined) {
const detail = `近5年: ${getStatusText(reportData.labor_disputes.labor_disputes_5y)}`;
if (!shouldHideItem(detail)) {
details.push(detail);
}
}
if (reportData.labor_disputes.labor_contract !== undefined) {
details.push(`劳动合同: ${getStatusText(reportData.labor_disputes.labor_contract)}`);
}
if (reportData.labor_disputes.labor_relation !== undefined) {
details.push(`劳动关系: ${getStatusText(reportData.labor_disputes.labor_relation)}`);
}
if (reportData.labor_disputes.labor_relation_3y !== undefined) {
const detail = `近3年劳动关系: ${getStatusText(reportData.labor_disputes.labor_relation_3y)}`;
if (!shouldHideItem(detail)) {
details.push(detail);
}
}
if (reportData.labor_disputes.labor_relation_5y !== undefined) {
const detail = `近5年劳动关系: ${getStatusText(reportData.labor_disputes.labor_relation_5y)}`;
if (!shouldHideItem(detail)) {
details.push(detail);
}
}
if (details.length > 0) {
risks.push({
title: '劳动争议风险',
value: Math.max(...Object.values(reportData.labor_disputes).filter(v => typeof v === 'number')),
details: details,
bgColor: getBackgroundColor(Math.max(...Object.values(reportData.labor_disputes).filter(v => typeof v === 'number'))),
borderColor: getBorderColor(Math.max(...Object.values(reportData.labor_disputes).filter(v => typeof v === 'number')))
});
}
}
// 社会保险纠纷风险
if (reportData.social_insurance) {
let details: string[] = [];
if (reportData.social_insurance.social_insurance !== undefined) {
details.push(`社保纠纷: ${getStatusText(reportData.social_insurance.social_insurance)}`);
}
if (reportData.social_insurance.pension !== undefined) {
details.push(`养老纠纷: ${getStatusText(reportData.social_insurance.pension)}`);
}
if (reportData.social_insurance.pension_3y !== undefined) {
const detail = `近3年养老: ${getStatusText(reportData.social_insurance.pension_3y)}`;
if (!shouldHideItem(detail)) {
details.push(detail);
}
}
if (reportData.social_insurance.pension_5y !== undefined) {
const detail = `近5年养老: ${getStatusText(reportData.social_insurance.pension_5y)}`;
if (!shouldHideItem(detail)) {
details.push(detail);
}
}
if (reportData.social_insurance.injury_insurance !== undefined) {
details.push(`工伤纠纷: ${getStatusText(reportData.social_insurance.injury_insurance)}`);
}
if (reportData.social_insurance.injury_insurance_3y !== undefined) {
const detail = `近3年工伤: ${getStatusText(reportData.social_insurance.injury_insurance_3y)}`;
if (!shouldHideItem(detail)) {
details.push(detail);
}
}
if (reportData.social_insurance.injury_insurance_5y !== undefined) {
const detail = `近5年工伤: ${getStatusText(reportData.social_insurance.injury_insurance_5y)}`;
if (!shouldHideItem(detail)) {
details.push(detail);
}
}
if (reportData.social_insurance.unemployment_insurance !== undefined) {
details.push(`失业纠纷: ${getStatusText(reportData.social_insurance.unemployment_insurance)}`);
}
if (reportData.social_insurance.unemployment_insurance_3y !== undefined) {
const detail = `近3年失业: ${getStatusText(reportData.social_insurance.unemployment_insurance_3y)}`;
if (!shouldHideItem(detail)) {
details.push(detail);
}
}
if (reportData.social_insurance.unemployment_insurance_5y !== undefined) {
const detail = `近5年失业: ${getStatusText(reportData.social_insurance.unemployment_insurance_5y)}`;
if (!shouldHideItem(detail)) {
details.push(detail);
}
}
if (reportData.social_insurance.medical_insurance !== undefined) {
details.push(`医疗纠纷: ${getStatusText(reportData.social_insurance.medical_insurance)}`);
}
if (reportData.social_insurance.medical_insurance_3y !== undefined) {
const detail = `近3年医疗: ${getStatusText(reportData.social_insurance.medical_insurance_3y)}`;
if (!shouldHideItem(detail)) {
details.push(detail);
}
}
if (reportData.social_insurance.medical_insurance_5y !== undefined) {
const detail = `近5年医疗: ${getStatusText(reportData.social_insurance.medical_insurance_5y)}`;
if (!shouldHideItem(detail)) {
details.push(detail);
}
}
if (reportData.social_insurance.maternity_insurance !== undefined) {
details.push(`生育纠纷: ${getStatusText(reportData.social_insurance.maternity_insurance)}`);
}
if (reportData.social_insurance.maternity_insurance_3y !== undefined) {
const detail = `近3年生育: ${getStatusText(reportData.social_insurance.maternity_insurance_3y)}`;
if (!shouldHideItem(detail)) {
details.push(detail);
}
}
if (reportData.social_insurance.maternity_insurance_5y !== undefined) {
const detail = `近5年生育: ${getStatusText(reportData.social_insurance.maternity_insurance_5y)}`;
if (!shouldHideItem(detail)) {
details.push(detail);
}
}
if (details.length > 0) {
risks.push({
title: '社会保险纠纷风险',
value: Math.max(...Object.values(reportData.social_insurance).filter(v => typeof v === 'number')),
details: details,
bgColor: getBackgroundColor(Math.max(...Object.values(reportData.social_insurance).filter(v => typeof v === 'number'))),
borderColor: getBorderColor(Math.max(...Object.values(reportData.social_insurance).filter(v => typeof v === 'number')))
});
}
}
// 福利待遇纠纷
if (reportData.welfare_disputes && reportData.welfare_disputes.welfare !== undefined) {
risks.push({
title: '福利待遇纠纷',
value: reportData.welfare_disputes.welfare,
details: getStatusText(reportData.welfare_disputes.welfare),
bgColor: getBackgroundColor(reportData.welfare_disputes.welfare),
borderColor: getBorderColor(reportData.welfare_disputes.welfare)
});
}
// 人事争议类纠纷
if (reportData.personnel_disputes) {
let details: string[] = [];
if (reportData.personnel_disputes.personnel_dispute !== undefined) {
details.push(`人事争议: ${getStatusText(reportData.personnel_disputes.personnel_dispute)}`);
}
if (reportData.personnel_disputes.resignation_dispute !== undefined) {
details.push(`辞职争议: ${getStatusText(reportData.personnel_disputes.resignation_dispute)}`);
}
if (reportData.personnel_disputes.resignation_dispute_3y !== undefined) {
const detail = `近3年辞职: ${getStatusText(reportData.personnel_disputes.resignation_dispute_3y)}`;
if (!shouldHideItem(detail)) {
details.push(detail);
}
}
if (reportData.personnel_disputes.resignation_dispute_5y !== undefined) {
const detail = `近5年辞职: ${getStatusText(reportData.personnel_disputes.resignation_dispute_5y)}`;
if (!shouldHideItem(detail)) {
details.push(detail);
}
}
if (reportData.personnel_disputes.dismissal_dispute !== undefined) {
details.push(`辞退争议: ${getStatusText(reportData.personnel_disputes.dismissal_dispute)}`);
}
if (reportData.personnel_disputes.dismissal_dispute_3y !== undefined) {
const detail = `近3年辞退: ${getStatusText(reportData.personnel_disputes.dismissal_dispute_3y)}`;
if (!shouldHideItem(detail)) {
details.push(detail);
}
}
if (reportData.personnel_disputes.dismissal_dispute_5y !== undefined) {
const detail = `近5年辞退: ${getStatusText(reportData.personnel_disputes.dismissal_dispute_5y)}`;
if (!shouldHideItem(detail)) {
details.push(detail);
}
}
if (details.length > 0) {
risks.push({
title: '人事争议类纠纷',
value: Math.max(...Object.values(reportData.personnel_disputes).filter(v => typeof v === 'number')),
details: details,
bgColor: getBackgroundColor(Math.max(...Object.values(reportData.personnel_disputes).filter(v => typeof v === 'number'))),
borderColor: getBorderColor(Math.max(...Object.values(reportData.personnel_disputes).filter(v => typeof v === 'number')))
});
}
}
// 仲裁相关案件
if (reportData.arbitration) {
let details: string[] = [];
if (reportData.arbitration.arbitration_confirmation !== undefined) {
details.push(`仲裁确认: ${getStatusText(reportData.arbitration.arbitration_confirmation)}`);
}
if (reportData.arbitration.arbitration_confirmation_3y !== undefined) {
const detail = `近3年仲裁确认: ${getStatusText(reportData.arbitration.arbitration_confirmation_3y)}`;
if (!shouldHideItem(detail)) {
details.push(detail);
}
}
if (reportData.arbitration.arbitration_confirmation_5y !== undefined) {
const detail = `近5年仲裁确认: ${getStatusText(reportData.arbitration.arbitration_confirmation_5y)}`;
if (!shouldHideItem(detail)) {
details.push(detail);
}
}
if (reportData.arbitration.arbitration_revocation !== undefined) {
details.push(`仲裁撤销: ${getStatusText(reportData.arbitration.arbitration_revocation)}`);
}
if (reportData.arbitration.arbitration_revocation_3y !== undefined) {
const detail = `近3年仲裁撤销: ${getStatusText(reportData.arbitration.arbitration_revocation_3y)}`;
if (!shouldHideItem(detail)) {
details.push(detail);
}
}
if (reportData.arbitration.arbitration_revocation_5y !== undefined) {
const detail = `近5年仲裁撤销: ${getStatusText(reportData.arbitration.arbitration_revocation_5y)}`;
if (!shouldHideItem(detail)) {
details.push(detail);
}
}
if (details.length > 0) {
risks.push({
title: '仲裁相关案件',
value: Math.max(...Object.values(reportData.arbitration).filter(v => typeof v === 'number')),
details: details,
bgColor: getBackgroundColor(Math.max(...Object.values(reportData.arbitration).filter(v => typeof v === 'number'))),
borderColor: getBorderColor(Math.max(...Object.values(reportData.arbitration).filter(v => typeof v === 'number')))
});
}
}
// 通知函触达
if (reportData.notice_letter && reportData.notice_letter.notice_letter !== undefined) {
let statusText = getNoticeLetterStatusText(reportData.notice_letter.notice_letter);
let periodText = '';
if (reportData.notice_letter.notice_letter_period !== undefined) {
periodText = `期间: ${getNoticeLetterPeriodText(reportData.notice_letter.notice_letter_period)}`;
}
const detailParts = [`状态: ${statusText}`];
if (periodText) {
detailParts.push(periodText);
}
risks.push({
title: '通知函触达',
value: reportData.notice_letter.notice_letter,
details: detailParts,
bgColor: getBackgroundColor(reportData.notice_letter.notice_letter),
borderColor: getBorderColor(reportData.notice_letter.notice_letter)
});
}
return risks;
});
// 检查是否至少有一个数据类别有内容
const hasAnyData = computed(() => {
return riskTypes.value.length > 0;
});
</script>
<template>
<div class="ivyz0s0d-container">
<!-- 风险卡片网格 -->
<div v-if="hasAnyData" class="risk-cards-grid">
<div
v-for="(risk, index) in riskTypes"
:key="index"
class="risk-card"
:style="{ backgroundColor: risk.bgColor, borderLeft: `4px solid ${risk.borderColor}` }"
>
<div class="risk-card__content">
<h4 class="risk-card__title">{{ risk.title }}</h4>
<div class="risk-card__status">
<!-- details 是字符串时显示单行 -->
<p v-if="typeof risk.details === 'string'" class="risk-detail-item">{{ risk.details }}</p>
<!-- details 是数组时每项占一行 -->
<p
v-else
v-for="(detail, idx) in risk.details"
:key="idx"
class="risk-detail-item"
>{{ detail }}</p>
</div>
</div>
</div>
</div>
<!-- 无数据提示 -->
<div v-if="!hasAnyData" class="no-data">
<p>暂无相关风险数据</p>
</div>
</div>
</template>
<style scoped>
.ivyz0s0d-container {
padding: 20px;
font-family: Arial, sans-serif;
}
.risk-cards-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
gap: 15px;
margin-bottom: 20px;
}
.risk-card {
border: 1px solid #e0e0e0;
border-radius: 8px;
padding: 15px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.risk-card:hover {
transform: translateY(-2px);
box-shadow: 0 4px 8px rgba(0,0,0,0.15);
}
.risk-card__content {
display: flex;
flex-direction: column;
}
.risk-card__title {
margin: 0 0 8px 0;
font-size: 16px;
font-weight: bold;
color: #333;
}
.risk-card__status {
margin: 0;
font-size: 14px;
color: #666;
}
.risk-detail-item {
margin: 0 0 4px 0;
line-height: 1.4;
}
.risk-detail-item:last-child {
margin-bottom: 0;
}
.no-data {
text-align: center;
color: #999;
font-style: italic;
padding: 20px;
}
</style>