Compare commits

..

13 Commits

Author SHA1 Message Date
Mrx
73fff791dc Merge branch 'main' of http://1.117.67.95:3000/team/tydata-webview-v2 2026-03-02 12:42:24 +08:00
Mrx
15e2c24be1 f 2026-03-02 12:42:20 +08:00
bd639ba66c f 2026-03-01 16:41:12 +08:00
a6517f1ea1 add ivyz0s0d 2026-03-01 13:39:13 +08:00
Mrx
a5d9de5736 f 2026-02-28 12:29:15 +08:00
Mrx
b2da12f3ed add seo 2026-02-28 12:00:02 +08:00
Mrx
9937097d7c add 2026-02-27 12:07:16 +08:00
Mrx
2df104acea f 2026-02-25 17:49:30 +08:00
Mrx
02fdc45879 up 2026-02-14 16:20:25 +08:00
Mrx
f0206916be up seo 2026-02-14 11:14:09 +08:00
Mrx
de69a9d58c f 2026-02-13 18:32:41 +08:00
684601ffe8 Merge branch 'main' of http://1.117.67.95:3000/team/tydata-webview-v2 2026-02-11 15:05:42 +08:00
9bb7c4ddae f 2026-02-11 15:02:56 +08:00
46 changed files with 3504 additions and 174 deletions

View File

@@ -14,15 +14,15 @@
<!-- 基础SEO信息 -->
<title>
天远数据|大数据风险报告查询与代理平台,支持个人和企业多场景风控应用
天远数据_背调报告代理加盟_个人风控系统搭建_合规数据服务平台
</title>
<meta
name="description"
content="天远数据,专业大数据风险报告查询与代理平台,支持个人信用查询、小微企业风控、贷前风险背调等多场景报告应用,免费开通代理权限,助力高效识别信用与风险。"
content="天远数据提供低成本的风控系统搭建服务。一键开通独立代理后台,支持自定义品牌与报告价格。平台基于公开合法数据,支持一键生成综合素质报告。诚邀行业合作伙伴,共享数字化风控红利,助力流量合规变现。"
/>
<meta
name="keywords"
content="大数据风险报告查询、大数据风险评估、大数据分析报告、个人大数据风险查询、小微企业风险、贷前风险背调、代理管理平台、免费开通代理、风险管控平台、信用风险分析、企业风险报告、贷前信用审核、失信人名单查询、被执行人信息、信用黑名单查询"
content="天远数据,职场背调,风险核验报告,家政背景核验,第三方背调,企业风控服务,数据报告分销"
/>
<meta name="author" content="天远数据" />
<meta name="robots" content="index, follow" />
@@ -31,17 +31,17 @@
<!-- Open Graph / Facebook -->
<meta property="og:type" content="website" />
<meta property="og:url" content="https://www.zhinengcha.cn/" />
<meta property="og:title" content="天远数据|大数据风险报告查询与代理平台,支持个人和企业多场景风控应用" />
<meta property="og:description" content="天远数据,专业大数据风险报告查询与代理平台,支持个人信用查询、小微企业风控、贷前风险背调等多场景报告应用,免费开通代理权限,助力高效识别信用与风险。" />
<meta property="og:url" content="https://www.tianyuandb.com/" />
<meta property="og:title" content="天远数据_背调报告代理加盟_个人风控系统搭建_合规数据服务平台" />
<meta property="og:description" content="天远数据提供低成本的风控系统搭建服务。一键开通独立代理后台,支持自定义品牌与报告价格。平台基于公开合法数据,支持一键生成综合素质报告。诚邀行业合作伙伴,共享数字化风控红利,助力流量合规变现。" />
<meta property="og:site_name" content="天远数据" />
<meta property="og:locale" content="zh_CN" />
<!-- Twitter -->
<meta property="twitter:card" content="summary" />
<meta property="twitter:url" content="https://www.zhinengcha.cn/" />
<meta property="twitter:title" content="天远数据|大数据风险报告查询与代理平台,支持个人和企业多场景风控应用" />
<meta property="twitter:description" content="天远数据,专业大数据风险报告查询与代理平台,支持个人信用查询、小微企业风控、贷前风险背调等多场景报告应用,免费开通代理权限,助力高效识别信用与风险。" />
<meta property="twitter:url" content="https://www.tianyuandb.com/" />
<meta property="twitter:title" content="天远数据_背调报告代理加盟_个人风控系统搭建_合规数据服务平台" />
<meta property="twitter:description" content="天远数据提供低成本的风控系统搭建服务。一键开通独立代理后台,支持自定义品牌与报告价格。平台基于公开合法数据,支持一键生成综合素质报告。诚邀行业合作伙伴,共享数字化风控红利,助力流量合规变现。" />
<!-- 其他重要meta标签 -->
<meta name="theme-color" content="#3498db" />
@@ -57,11 +57,11 @@
"@context": "https://schema.org",
"@type": "WebSite",
"name": "天远数据",
"url": "https://www.zhinengcha.cn/",
"url": "https://www.tianyuandb.com/",
"description": "专业大数据风险报告查询与代理平台,支持个人信用查询、小微企业风控、贷前风险背调等多场景报告应用",
"potentialAction": {
"@type": "SearchAction",
"target": "https://www.zhinengcha.cn/search?q={search_term_string}",
"target": "https://www.tianyuandb.com/search?q={search_term_string}",
"query-input": "required name=search_term_string"
}
}
@@ -72,7 +72,7 @@
"@context": "https://schema.org",
"@type": "Organization",
"name": "天远数据",
"url": "https://www.zhinengcha.cn/",
"url": "https://www.tianyuandb.com/",
"description": "专业大数据风险报告查询与代理平台,支持个人和企业多场景风控应用"
}
</script>
@@ -84,9 +84,9 @@
</script>
<!-- 预加载关键资源 -->
<link rel="preconnect" href="https://www.zhinengcha.cn">
<link rel="preconnect" href="https://www.tianyuandb.com">
<link rel="preconnect" href="https://res.wx.qq.com">
<link rel="dns-prefetch" href="https://www.zhinengcha.cn">
<link rel="dns-prefetch" href="https://www.tianyuandb.com">
<link rel="dns-prefetch" href="https://res.wx.qq.com">
<style>
@@ -181,6 +181,14 @@
<div class="loading-text">加载中</div>
</div>
<div id="app"></div>
<div id="captcha-element"></div>
<script>
window.AliyunCaptchaConfig = { region: "cn", prefix: "12zxnj" };
</script>
<script
type="text/javascript"
src="https://o.alicdn.com/captcha-frontend/aliyunCaptcha/AliyunCaptcha.js"
></script>
<script type="module" src="/src/main.js"></script>
</body>

View File

@@ -44,7 +44,7 @@ Disallow: /js/
Disallow: /css/
# 网站地图
Sitemap: https://www.zhinengcha.cn/sitemap.xml
Sitemap: https://www.tianyuandb.com/sitemap.xml
# 爬取延迟(毫秒)
Crawl-delay: 1

View File

@@ -0,0 +1,80 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>邀请合作伙伴_发展代理享收益_推广返利计划_天远数据</title>
<meta name="description" content="天远数据推出合伙人邀请奖励机制。邀请好友注册成为合作伙伴,每单不仅可获得推广收益,还可叠加合作伙伴活跃奖励及定价差额收益。打造专属推广团队,实现收益持续增长。">
<meta name="keywords" content="渠道合作伙伴,商业收益管理,流量合规变现,业务推广系统,代理后台">
<meta property="og:title" content="邀请合作伙伴_发展代理享收益_推广返利计划_天远数据">
<meta property="og:description" content="天远数据推出合伙人邀请奖励机制。邀请好友注册成为合作伙伴,每单不仅可获得推广收益,还可叠加合作伙伴活跃奖励及定价差额收益。打造专属推广团队,实现收益持续增长。">
<meta property="og:url" content="https://www.tianyuandb.com/agent/invitation">
<meta property="og:type" content="website">
<meta property="og:site_name" content="天远数据">
<meta property="og:locale" content="zh_CN">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="邀请合作伙伴_发展代理享收益_推广返利计划_天远数据">
<meta name="twitter:description" content="天远数据推出合伙人邀请奖励机制。邀请好友注册成为合作伙伴,每单不仅可获得推广收益,还可叠加合作伙伴活跃奖励及定价差额收益。打造专属推广团队,实现收益持续增长。">
<meta name="twitter:url" content="https://www.tianyuandb.com/agent/invitation">
<link rel="canonical" href="https://www.tianyuandb.com/agent/invitation">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebPage",
"name": "邀请合作伙伴_发展代理享收益_推广返利计划_天远数据",
"description": "天远数据推出合伙人邀请奖励机制。邀请好友注册成为合作伙伴,每单不仅可获得推广收益,还可叠加合作伙伴活跃奖励及定价差额收益。打造专属推广团队,实现收益持续增长。",
"url": "https://www.tianyuandb.com/agent/invitation",
"mainEntity": {
"@type": "Organization",
"name": "天远数据",
"url": "https://www.tianyuandb.com/",
"description": "专业大数据风险报告查询与代理平台,支持个人和企业多场景风控应用"
}
}
</script>
<meta name="robots" content="index, follow">
<meta name="googlebot" content="index, follow">
<meta name="baiduspider" content="index, follow">
<style>
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; margin: 0; padding: 0; line-height: 1.6; }
.seo-content { max-width: 1200px; margin: 0 auto; padding: 20px; }
h1 { color: #333; }
p { color: #666; }
.redirect-notice { background: #fff3cd; border: 1px solid #ffc107; color: #856404; padding: 10px; margin: 20px 0; border-radius: 4px; }
</style>
</head>
<body>
<div class="seo-content">
<h1>邀请合作伙伴_发展代理享收益_推广返利计划_天远数据</h1>
<div class="redirect-notice">
<p>正在跳转到完整版网站...</p>
<p>如果浏览器没有自动跳转,请 <a href="https://www.tianyuandb.com/agent/invitation">点击这里</a></p>
</div>
<p>天远数据推出合伙人邀请奖励机制。邀请好友注册成为合作伙伴,每单不仅可获得推广收益,还可叠加合作伙伴活跃奖励及定价差额收益。打造专属推广团队,实现收益持续增长。</p>
<section>
<h2>关于天远数据</h2>
<p>天远数据提供背调报告代理加盟与个人风控系统搭建,合规数据服务平台。支持职场背调、家政背景核验、企业风控服务与数据报告分销。</p>
</section>
<section>
<h2>核心服务</h2>
<ul>
<li>个人综合风险报告与履约评分</li>
<li>企业信用风险评估与工商核查</li>
<li>综合履约评分与贷前风险检测</li>
<li>婚恋对象背景了解与婚前风险评估</li>
<li>入职背景核验与职场信用排查</li>
<li>家政人员背景核实与用工安全评估</li>
</ul>
</section>
</div>
</body>
</html>

View File

@@ -0,0 +1,80 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>生成推广码_自定义价格_0成本代理查价系统_天远数据</title>
<meta name="description" content="天远数据推广中心支持代理自主设置报告价格。在此选择报告类型,自定义客户查询价,0成本生成专属推广链接或二维码。差价即为利润,实现个人风险报告的私域流量变现。">
<meta name="keywords" content="推广码生成,自定义查价系统,代理收益工具,代理推广链接,流量变现平台,天远数据推广">
<meta property="og:title" content="生成推广码_自定义价格_0成本代理查价系统_天远数据">
<meta property="og:description" content="天远数据推广中心支持代理自主设置报告价格。在此选择报告类型,自定义客户查询价,0成本生成专属推广链接或二维码。差价即为利润,实现个人风险报告的私域流量变现。">
<meta property="og:url" content="https://www.tianyuandb.com/agent/promote">
<meta property="og:type" content="website">
<meta property="og:site_name" content="天远数据">
<meta property="og:locale" content="zh_CN">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="生成推广码_自定义价格_0成本代理查价系统_天远数据">
<meta name="twitter:description" content="天远数据推广中心支持代理自主设置报告价格。在此选择报告类型,自定义客户查询价,0成本生成专属推广链接或二维码。差价即为利润,实现个人风险报告的私域流量变现。">
<meta name="twitter:url" content="https://www.tianyuandb.com/agent/promote">
<link rel="canonical" href="https://www.tianyuandb.com/agent/promote">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebPage",
"name": "生成推广码_自定义价格_0成本代理查价系统_天远数据",
"description": "天远数据推广中心支持代理自主设置报告价格。在此选择报告类型,自定义客户查询价,0成本生成专属推广链接或二维码。差价即为利润,实现个人风险报告的私域流量变现。",
"url": "https://www.tianyuandb.com/agent/promote",
"mainEntity": {
"@type": "Organization",
"name": "天远数据",
"url": "https://www.tianyuandb.com/",
"description": "专业大数据风险报告查询与代理平台,支持个人和企业多场景风控应用"
}
}
</script>
<meta name="robots" content="index, follow">
<meta name="googlebot" content="index, follow">
<meta name="baiduspider" content="index, follow">
<style>
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; margin: 0; padding: 0; line-height: 1.6; }
.seo-content { max-width: 1200px; margin: 0 auto; padding: 20px; }
h1 { color: #333; }
p { color: #666; }
.redirect-notice { background: #fff3cd; border: 1px solid #ffc107; color: #856404; padding: 10px; margin: 20px 0; border-radius: 4px; }
</style>
</head>
<body>
<div class="seo-content">
<h1>生成推广码_自定义价格_0成本代理查价系统_天远数据</h1>
<div class="redirect-notice">
<p>正在跳转到完整版网站...</p>
<p>如果浏览器没有自动跳转,请 <a href="https://www.tianyuandb.com/agent/promote">点击这里</a></p>
</div>
<p>天远数据推广中心支持代理自主设置报告价格。在此选择报告类型,自定义客户查询价,0成本生成专属推广链接或二维码。差价即为利润,实现个人风险报告的私域流量变现。</p>
<section>
<h2>关于天远数据</h2>
<p>天远数据提供背调报告代理加盟与个人风控系统搭建,合规数据服务平台。支持职场背调、家政背景核验、企业风控服务与数据报告分销。</p>
</section>
<section>
<h2>核心服务</h2>
<ul>
<li>个人综合风险报告与履约评分</li>
<li>企业信用风险评估与工商核查</li>
<li>综合履约评分与贷前风险检测</li>
<li>婚恋对象背景了解与婚前风险评估</li>
<li>入职背景核验与职场信用排查</li>
<li>家政人员背景核实与用工安全评估</li>
</ul>
</section>
</div>
</body>
</html>

View File

@@ -0,0 +1,80 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>天远数据代理 - 免费开通代理权限 | 大数据风险报告代理</title>
<meta name="description" content="天远数据代理平台,免费开通代理权限,享受大数据风险报告查询服务代理收益。专业的大数据风险报告、婚姻查询、个人信用评估等服务的代理合作。">
<meta name="keywords" content="天远数据代理, 免费代理, 大数据风险报告代理, 代理权限, 代理收益">
<meta property="og:title" content="天远数据代理 - 免费开通代理权限 | 大数据风险报告代理">
<meta property="og:description" content="天远数据代理平台,免费开通代理权限,享受大数据风险报告查询服务代理收益。专业的大数据风险报告、婚姻查询、个人信用评估等服务的代理合作。">
<meta property="og:url" content="https://www.tianyuandb.com/agent">
<meta property="og:type" content="website">
<meta property="og:site_name" content="天远数据">
<meta property="og:locale" content="zh_CN">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="天远数据代理 - 免费开通代理权限 | 大数据风险报告代理">
<meta name="twitter:description" content="天远数据代理平台,免费开通代理权限,享受大数据风险报告查询服务代理收益。专业的大数据风险报告、婚姻查询、个人信用评估等服务的代理合作。">
<meta name="twitter:url" content="https://www.tianyuandb.com/agent">
<link rel="canonical" href="https://www.tianyuandb.com/agent">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebPage",
"name": "天远数据代理 - 免费开通代理权限 | 大数据风险报告代理",
"description": "天远数据代理平台,免费开通代理权限,享受大数据风险报告查询服务代理收益。专业的大数据风险报告、婚姻查询、个人信用评估等服务的代理合作。",
"url": "https://www.tianyuandb.com/agent",
"mainEntity": {
"@type": "Organization",
"name": "天远数据",
"url": "https://www.tianyuandb.com/",
"description": "专业大数据风险报告查询与代理平台,支持个人和企业多场景风控应用"
}
}
</script>
<meta name="robots" content="index, follow">
<meta name="googlebot" content="index, follow">
<meta name="baiduspider" content="index, follow">
<style>
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; margin: 0; padding: 0; line-height: 1.6; }
.seo-content { max-width: 1200px; margin: 0 auto; padding: 20px; }
h1 { color: #333; }
p { color: #666; }
.redirect-notice { background: #fff3cd; border: 1px solid #ffc107; color: #856404; padding: 10px; margin: 20px 0; border-radius: 4px; }
</style>
</head>
<body>
<div class="seo-content">
<h1>天远数据代理 - 免费开通代理权限 | 大数据风险报告代理</h1>
<div class="redirect-notice">
<p>正在跳转到完整版网站...</p>
<p>如果浏览器没有自动跳转,请 <a href="https://www.tianyuandb.com/agent">点击这里</a></p>
</div>
<p>天远数据代理平台,免费开通代理权限,享受大数据风险报告查询服务代理收益。专业的大数据风险报告、婚姻查询、个人信用评估等服务的代理合作。</p>
<section>
<h2>关于天远数据</h2>
<p>天远数据提供背调报告代理加盟与个人风控系统搭建,合规数据服务平台。支持职场背调、家政背景核验、企业风控服务与数据报告分销。</p>
</section>
<section>
<h2>核心服务</h2>
<ul>
<li>个人综合风险报告与履约评分</li>
<li>企业信用风险评估与工商核查</li>
<li>综合履约评分与贷前风险检测</li>
<li>婚恋对象背景了解与婚前风险评估</li>
<li>入职背景核验与职场信用排查</li>
<li>家政人员背景核实与用工安全评估</li>
</ul>
</section>
</div>
</body>
</html>

View File

@@ -0,0 +1,80 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>示例报告 - 天远数据报告展示 | 大数据风险报告样例</title>
<meta name="description" content="天远数据示例报告展示,包含大数据风险报告、婚姻状况查询、个人信用评估等服务的报告样例,让用户了解报告内容和格式。">
<meta name="keywords" content="示例报告, 报告展示, 报告样例, 大数据风险报告, 婚姻查询报告">
<meta property="og:title" content="示例报告 - 天远数据报告展示 | 大数据风险报告样例">
<meta property="og:description" content="天远数据示例报告展示,包含大数据风险报告、婚姻状况查询、个人信用评估等服务的报告样例,让用户了解报告内容和格式。">
<meta property="og:url" content="https://www.tianyuandb.com/example">
<meta property="og:type" content="website">
<meta property="og:site_name" content="天远数据">
<meta property="og:locale" content="zh_CN">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="示例报告 - 天远数据报告展示 | 大数据风险报告样例">
<meta name="twitter:description" content="天远数据示例报告展示,包含大数据风险报告、婚姻状况查询、个人信用评估等服务的报告样例,让用户了解报告内容和格式。">
<meta name="twitter:url" content="https://www.tianyuandb.com/example">
<link rel="canonical" href="https://www.tianyuandb.com/example">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebPage",
"name": "示例报告 - 天远数据报告展示 | 大数据风险报告样例",
"description": "天远数据示例报告展示,包含大数据风险报告、婚姻状况查询、个人信用评估等服务的报告样例,让用户了解报告内容和格式。",
"url": "https://www.tianyuandb.com/example",
"mainEntity": {
"@type": "Organization",
"name": "天远数据",
"url": "https://www.tianyuandb.com/",
"description": "专业大数据风险报告查询与代理平台,支持个人和企业多场景风控应用"
}
}
</script>
<meta name="robots" content="index, follow">
<meta name="googlebot" content="index, follow">
<meta name="baiduspider" content="index, follow">
<style>
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; margin: 0; padding: 0; line-height: 1.6; }
.seo-content { max-width: 1200px; margin: 0 auto; padding: 20px; }
h1 { color: #333; }
p { color: #666; }
.redirect-notice { background: #fff3cd; border: 1px solid #ffc107; color: #856404; padding: 10px; margin: 20px 0; border-radius: 4px; }
</style>
</head>
<body>
<div class="seo-content">
<h1>示例报告 - 天远数据报告展示 | 大数据风险报告样例</h1>
<div class="redirect-notice">
<p>正在跳转到完整版网站...</p>
<p>如果浏览器没有自动跳转,请 <a href="https://www.tianyuandb.com/example">点击这里</a></p>
</div>
<p>天远数据示例报告展示,包含大数据风险报告、婚姻状况查询、个人信用评估等服务的报告样例,让用户了解报告内容和格式。</p>
<section>
<h2>关于天远数据</h2>
<p>天远数据提供背调报告代理加盟与个人风控系统搭建,合规数据服务平台。支持职场背调、家政背景核验、企业风控服务与数据报告分销。</p>
</section>
<section>
<h2>核心服务</h2>
<ul>
<li>个人综合风险报告与履约评分</li>
<li>企业信用风险评估与工商核查</li>
<li>综合履约评分与贷前风险检测</li>
<li>婚恋对象背景了解与婚前风险评估</li>
<li>入职背景核验与职场信用排查</li>
<li>家政人员背景核实与用工安全评估</li>
</ul>
</section>
</div>
</body>
</html>

View File

@@ -0,0 +1,80 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>使用指南 - 天远数据操作教程 | 功能说明</title>
<meta name="description" content="天远数据详细使用指南,包含各功能模块的操作教程、功能说明、注意事项等,让用户快速上手使用。">
<meta name="keywords" content="使用指南, 操作教程, 功能说明, 快速上手, 天远数据教程">
<meta property="og:title" content="使用指南 - 天远数据操作教程 | 功能说明">
<meta property="og:description" content="天远数据详细使用指南,包含各功能模块的操作教程、功能说明、注意事项等,让用户快速上手使用。">
<meta property="og:url" content="https://www.tianyuandb.com/help/guide">
<meta property="og:type" content="website">
<meta property="og:site_name" content="天远数据">
<meta property="og:locale" content="zh_CN">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="使用指南 - 天远数据操作教程 | 功能说明">
<meta name="twitter:description" content="天远数据详细使用指南,包含各功能模块的操作教程、功能说明、注意事项等,让用户快速上手使用。">
<meta name="twitter:url" content="https://www.tianyuandb.com/help/guide">
<link rel="canonical" href="https://www.tianyuandb.com/help/guide">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebPage",
"name": "使用指南 - 天远数据操作教程 | 功能说明",
"description": "天远数据详细使用指南,包含各功能模块的操作教程、功能说明、注意事项等,让用户快速上手使用。",
"url": "https://www.tianyuandb.com/help/guide",
"mainEntity": {
"@type": "Organization",
"name": "天远数据",
"url": "https://www.tianyuandb.com/",
"description": "专业大数据风险报告查询与代理平台,支持个人和企业多场景风控应用"
}
}
</script>
<meta name="robots" content="index, follow">
<meta name="googlebot" content="index, follow">
<meta name="baiduspider" content="index, follow">
<style>
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; margin: 0; padding: 0; line-height: 1.6; }
.seo-content { max-width: 1200px; margin: 0 auto; padding: 20px; }
h1 { color: #333; }
p { color: #666; }
.redirect-notice { background: #fff3cd; border: 1px solid #ffc107; color: #856404; padding: 10px; margin: 20px 0; border-radius: 4px; }
</style>
</head>
<body>
<div class="seo-content">
<h1>使用指南 - 天远数据操作教程 | 功能说明</h1>
<div class="redirect-notice">
<p>正在跳转到完整版网站...</p>
<p>如果浏览器没有自动跳转,请 <a href="https://www.tianyuandb.com/help/guide">点击这里</a></p>
</div>
<p>天远数据详细使用指南,包含各功能模块的操作教程、功能说明、注意事项等,让用户快速上手使用。</p>
<section>
<h2>关于天远数据</h2>
<p>天远数据提供背调报告代理加盟与个人风控系统搭建,合规数据服务平台。支持职场背调、家政背景核验、企业风控服务与数据报告分销。</p>
</section>
<section>
<h2>核心服务</h2>
<ul>
<li>个人综合风险报告与履约评分</li>
<li>企业信用风险评估与工商核查</li>
<li>综合履约评分与贷前风险检测</li>
<li>婚恋对象背景了解与婚前风险评估</li>
<li>入职背景核验与职场信用排查</li>
<li>家政人员背景核实与用工安全评估</li>
</ul>
</section>
</div>
</body>
</html>

View File

@@ -0,0 +1,80 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>天远数据帮助中心_代理操作指南_推广收益计算常见问题</title>
<meta name="description" content="天远数据帮助中心提供全方位的代理操作指引。包含如何成为代理、推广报告生成教程、收益与成本计算规则及推广效率提升方案。">
<meta name="keywords" content="天远数据教程,代理新手指南,推广收益计算,报告推广">
<meta property="og:title" content="天远数据帮助中心_代理操作指南_推广收益计算常见问题">
<meta property="og:description" content="天远数据帮助中心提供全方位的代理操作指引。包含如何成为代理、推广报告生成教程、收益与成本计算规则及推广效率提升方案。">
<meta property="og:url" content="https://www.tianyuandb.com/help">
<meta property="og:type" content="website">
<meta property="og:site_name" content="天远数据">
<meta property="og:locale" content="zh_CN">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="天远数据帮助中心_代理操作指南_推广收益计算常见问题">
<meta name="twitter:description" content="天远数据帮助中心提供全方位的代理操作指引。包含如何成为代理、推广报告生成教程、收益与成本计算规则及推广效率提升方案。">
<meta name="twitter:url" content="https://www.tianyuandb.com/help">
<link rel="canonical" href="https://www.tianyuandb.com/help">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebPage",
"name": "天远数据帮助中心_代理操作指南_推广收益计算常见问题",
"description": "天远数据帮助中心提供全方位的代理操作指引。包含如何成为代理、推广报告生成教程、收益与成本计算规则及推广效率提升方案。",
"url": "https://www.tianyuandb.com/help",
"mainEntity": {
"@type": "Organization",
"name": "天远数据",
"url": "https://www.tianyuandb.com/",
"description": "专业大数据风险报告查询与代理平台,支持个人和企业多场景风控应用"
}
}
</script>
<meta name="robots" content="index, follow">
<meta name="googlebot" content="index, follow">
<meta name="baiduspider" content="index, follow">
<style>
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; margin: 0; padding: 0; line-height: 1.6; }
.seo-content { max-width: 1200px; margin: 0 auto; padding: 20px; }
h1 { color: #333; }
p { color: #666; }
.redirect-notice { background: #fff3cd; border: 1px solid #ffc107; color: #856404; padding: 10px; margin: 20px 0; border-radius: 4px; }
</style>
</head>
<body>
<div class="seo-content">
<h1>天远数据帮助中心_代理操作指南_推广收益计算常见问题</h1>
<div class="redirect-notice">
<p>正在跳转到完整版网站...</p>
<p>如果浏览器没有自动跳转,请 <a href="https://www.tianyuandb.com/help">点击这里</a></p>
</div>
<p>天远数据帮助中心提供全方位的代理操作指引。包含如何成为代理、推广报告生成教程、收益与成本计算规则及推广效率提升方案。</p>
<section>
<h2>关于天远数据</h2>
<p>天远数据提供背调报告代理加盟与个人风控系统搭建,合规数据服务平台。支持职场背调、家政背景核验、企业风控服务与数据报告分销。</p>
</section>
<section>
<h2>核心服务</h2>
<ul>
<li>个人综合风险报告与履约评分</li>
<li>企业信用风险评估与工商核查</li>
<li>综合履约评分与贷前风险检测</li>
<li>婚恋对象背景了解与婚前风险评估</li>
<li>入职背景核验与职场信用排查</li>
<li>家政人员背景核实与用工安全评估</li>
</ul>
</section>
</div>
</body>
</html>

View File

@@ -0,0 +1,80 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>我的报告_历史查询记录_天远数据</title>
<meta name="description" content="天远数据用户个人中心,查看及下载历史查询报告。">
<meta name="keywords" content="我的报告,历史记录,天远数据">
<meta property="og:title" content="我的报告_历史查询记录_天远数据">
<meta property="og:description" content="天远数据用户个人中心,查看及下载历史查询报告。">
<meta property="og:url" content="https://www.tianyuandb.com/historyQuery">
<meta property="og:type" content="website">
<meta property="og:site_name" content="天远数据">
<meta property="og:locale" content="zh_CN">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="我的报告_历史查询记录_天远数据">
<meta name="twitter:description" content="天远数据用户个人中心,查看及下载历史查询报告。">
<meta name="twitter:url" content="https://www.tianyuandb.com/historyQuery">
<link rel="canonical" href="https://www.tianyuandb.com/historyQuery">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebPage",
"name": "我的报告_历史查询记录_天远数据",
"description": "天远数据用户个人中心,查看及下载历史查询报告。",
"url": "https://www.tianyuandb.com/historyQuery",
"mainEntity": {
"@type": "Organization",
"name": "天远数据",
"url": "https://www.tianyuandb.com/",
"description": "专业大数据风险报告查询与代理平台,支持个人和企业多场景风控应用"
}
}
</script>
<meta name="robots" content="index, follow">
<meta name="googlebot" content="index, follow">
<meta name="baiduspider" content="index, follow">
<style>
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; margin: 0; padding: 0; line-height: 1.6; }
.seo-content { max-width: 1200px; margin: 0 auto; padding: 20px; }
h1 { color: #333; }
p { color: #666; }
.redirect-notice { background: #fff3cd; border: 1px solid #ffc107; color: #856404; padding: 10px; margin: 20px 0; border-radius: 4px; }
</style>
</head>
<body>
<div class="seo-content">
<h1>我的报告_历史查询记录_天远数据</h1>
<div class="redirect-notice">
<p>正在跳转到完整版网站...</p>
<p>如果浏览器没有自动跳转,请 <a href="https://www.tianyuandb.com/historyQuery">点击这里</a></p>
</div>
<p>天远数据用户个人中心,查看及下载历史查询报告。</p>
<section>
<h2>关于天远数据</h2>
<p>天远数据提供背调报告代理加盟与个人风控系统搭建,合规数据服务平台。支持职场背调、家政背景核验、企业风控服务与数据报告分销。</p>
</section>
<section>
<h2>核心服务</h2>
<ul>
<li>个人综合风险报告与履约评分</li>
<li>企业信用风险评估与工商核查</li>
<li>综合履约评分与贷前风险检测</li>
<li>婚恋对象背景了解与婚前风险评估</li>
<li>入职背景核验与职场信用排查</li>
<li>家政人员背景核实与用工安全评估</li>
</ul>
</section>
</div>
</body>
</html>

View File

@@ -0,0 +1,80 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>天远数据_背调报告代理加盟_个人风控系统搭建_合规数据服务平台</title>
<meta name="description" content="天远数据提供低成本的风控系统搭建服务。一键开通独立代理后台,支持自定义品牌与报告价格。平台基于公开合法数据,支持一键生成综合素质报告。诚邀行业合作伙伴,共享数字化风控红利,助力流量合规变现。">
<meta name="keywords" content="天远数据,职场背调,风险核验报告,家政背景核验,第三方背调,企业风控服务,数据报告分销">
<meta property="og:title" content="天远数据_背调报告代理加盟_个人风控系统搭建_合规数据服务平台">
<meta property="og:description" content="天远数据提供低成本的风控系统搭建服务。一键开通独立代理后台,支持自定义品牌与报告价格。平台基于公开合法数据,支持一键生成综合素质报告。诚邀行业合作伙伴,共享数字化风控红利,助力流量合规变现。">
<meta property="og:url" content="https://www.tianyuandb.com">
<meta property="og:type" content="website">
<meta property="og:site_name" content="天远数据">
<meta property="og:locale" content="zh_CN">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="天远数据_背调报告代理加盟_个人风控系统搭建_合规数据服务平台">
<meta name="twitter:description" content="天远数据提供低成本的风控系统搭建服务。一键开通独立代理后台,支持自定义品牌与报告价格。平台基于公开合法数据,支持一键生成综合素质报告。诚邀行业合作伙伴,共享数字化风控红利,助力流量合规变现。">
<meta name="twitter:url" content="https://www.tianyuandb.com">
<link rel="canonical" href="https://www.tianyuandb.com">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebPage",
"name": "天远数据_背调报告代理加盟_个人风控系统搭建_合规数据服务平台",
"description": "天远数据提供低成本的风控系统搭建服务。一键开通独立代理后台,支持自定义品牌与报告价格。平台基于公开合法数据,支持一键生成综合素质报告。诚邀行业合作伙伴,共享数字化风控红利,助力流量合规变现。",
"url": "https://www.tianyuandb.com",
"mainEntity": {
"@type": "Organization",
"name": "天远数据",
"url": "https://www.tianyuandb.com/",
"description": "专业大数据风险报告查询与代理平台,支持个人和企业多场景风控应用"
}
}
</script>
<meta name="robots" content="index, follow">
<meta name="googlebot" content="index, follow">
<meta name="baiduspider" content="index, follow">
<style>
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; margin: 0; padding: 0; line-height: 1.6; }
.seo-content { max-width: 1200px; margin: 0 auto; padding: 20px; }
h1 { color: #333; }
p { color: #666; }
.redirect-notice { background: #fff3cd; border: 1px solid #ffc107; color: #856404; padding: 10px; margin: 20px 0; border-radius: 4px; }
</style>
</head>
<body>
<div class="seo-content">
<h1>天远数据_背调报告代理加盟_个人风控系统搭建_合规数据服务平台</h1>
<div class="redirect-notice">
<p>正在跳转到完整版网站...</p>
<p>如果浏览器没有自动跳转,请 <a href="https://www.tianyuandb.com">点击这里</a></p>
</div>
<p>天远数据提供低成本的风控系统搭建服务。一键开通独立代理后台,支持自定义品牌与报告价格。平台基于公开合法数据,支持一键生成综合素质报告。诚邀行业合作伙伴,共享数字化风控红利,助力流量合规变现。</p>
<section>
<h2>关于天远数据</h2>
<p>天远数据提供背调报告代理加盟与个人风控系统搭建,合规数据服务平台。支持职场背调、家政背景核验、企业风控服务与数据报告分销。</p>
</section>
<section>
<h2>核心服务</h2>
<ul>
<li>个人综合风险报告与履约评分</li>
<li>企业信用风险评估与工商核查</li>
<li>综合履约评分与贷前风险检测</li>
<li>婚恋对象背景了解与婚前风险评估</li>
<li>入职背景核验与职场信用排查</li>
<li>家政人员背景核实与用工安全评估</li>
</ul>
</section>
</div>
</body>
</html>

View File

@@ -0,0 +1,80 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>入职背景核验_候选人履历核验_职场信用与竞业排查_天远数据</title>
<meta name="description" content="天远数据职场风险报告助力企业构建防御体系。基于司法级大数据,一键筛查候选人司法涉诉记录、学历信息、商业利益冲突、历史违约记录及不良社会风险。官方数据,客观预警入职风险,辅助HR高效决策。">
<meta name="keywords" content="入职风险评估,候选人背景核验,简历真伪辨别,竞业限制核验,职场信用报告,员工风险预警">
<meta property="og:title" content="入职背景核验_候选人履历核验_职场信用与竞业排查_天远数据">
<meta property="og:description" content="天远数据职场风险报告助力企业构建防御体系。基于司法级大数据,一键筛查候选人司法涉诉记录、学历信息、商业利益冲突、历史违约记录及不良社会风险。官方数据,客观预警入职风险,辅助HR高效决策。">
<meta property="og:url" content="https://www.tianyuandb.com/inquire/backgroundcheck">
<meta property="og:type" content="website">
<meta property="og:site_name" content="天远数据">
<meta property="og:locale" content="zh_CN">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="入职背景核验_候选人履历核验_职场信用与竞业排查_天远数据">
<meta name="twitter:description" content="天远数据职场风险报告助力企业构建防御体系。基于司法级大数据,一键筛查候选人司法涉诉记录、学历信息、商业利益冲突、历史违约记录及不良社会风险。官方数据,客观预警入职风险,辅助HR高效决策。">
<meta name="twitter:url" content="https://www.tianyuandb.com/inquire/backgroundcheck">
<link rel="canonical" href="https://www.tianyuandb.com/inquire/backgroundcheck">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebPage",
"name": "入职背景核验_候选人履历核验_职场信用与竞业排查_天远数据",
"description": "天远数据职场风险报告助力企业构建防御体系。基于司法级大数据,一键筛查候选人司法涉诉记录、学历信息、商业利益冲突、历史违约记录及不良社会风险。官方数据,客观预警入职风险,辅助HR高效决策。",
"url": "https://www.tianyuandb.com/inquire/backgroundcheck",
"mainEntity": {
"@type": "Organization",
"name": "天远数据",
"url": "https://www.tianyuandb.com/",
"description": "专业大数据风险报告查询与代理平台,支持个人和企业多场景风控应用"
}
}
</script>
<meta name="robots" content="index, follow">
<meta name="googlebot" content="index, follow">
<meta name="baiduspider" content="index, follow">
<style>
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; margin: 0; padding: 0; line-height: 1.6; }
.seo-content { max-width: 1200px; margin: 0 auto; padding: 20px; }
h1 { color: #333; }
p { color: #666; }
.redirect-notice { background: #fff3cd; border: 1px solid #ffc107; color: #856404; padding: 10px; margin: 20px 0; border-radius: 4px; }
</style>
</head>
<body>
<div class="seo-content">
<h1>入职背景核验_候选人履历核验_职场信用与竞业排查_天远数据</h1>
<div class="redirect-notice">
<p>正在跳转到完整版网站...</p>
<p>如果浏览器没有自动跳转,请 <a href="https://www.tianyuandb.com/inquire/backgroundcheck">点击这里</a></p>
</div>
<p>天远数据职场风险报告助力企业构建防御体系。基于司法级大数据,一键筛查候选人司法涉诉记录、学历信息、商业利益冲突、历史违约记录及不良社会风险。官方数据,客观预警入职风险,辅助HR高效决策。</p>
<section>
<h2>关于天远数据</h2>
<p>天远数据提供背调报告代理加盟与个人风控系统搭建,合规数据服务平台。支持职场背调、家政背景核验、企业风控服务与数据报告分销。</p>
</section>
<section>
<h2>核心服务</h2>
<ul>
<li>个人综合风险报告与履约评分</li>
<li>企业信用风险评估与工商核查</li>
<li>综合履约评分与贷前风险检测</li>
<li>婚恋对象背景了解与婚前风险评估</li>
<li>入职背景核验与职场信用排查</li>
<li>家政人员背景核实与用工安全评估</li>
</ul>
</section>
</div>
</body>
</html>

View File

@@ -0,0 +1,80 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>企业信用风险评估_工商经营异常与司法诉讼核查_天远数据</title>
<meta name="description" content="天远数据提供全维度的企业商业画像。基于官方公示数据,核验目标企业的工商变更、经营异常名录、行政处罚、投融资背景及关联风险。深度评估商业履约能力,透视合作方真实状况,规避合同陷阱。">
<meta name="keywords" content="企业信用画像,公司经营风险,工商异常名录,企业履约评估,商业背景核验">
<meta property="og:title" content="企业信用风险评估_工商经营异常与司法诉讼核查_天远数据">
<meta property="og:description" content="天远数据提供全维度的企业商业画像。基于官方公示数据,核验目标企业的工商变更、经营异常名录、行政处罚、投融资背景及关联风险。深度评估商业履约能力,透视合作方真实状况,规避合同陷阱。">
<meta property="og:url" content="https://www.tianyuandb.com/inquire/companyinfo">
<meta property="og:type" content="website">
<meta property="og:site_name" content="天远数据">
<meta property="og:locale" content="zh_CN">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="企业信用风险评估_工商经营异常与司法诉讼核查_天远数据">
<meta name="twitter:description" content="天远数据提供全维度的企业商业画像。基于官方公示数据,核验目标企业的工商变更、经营异常名录、行政处罚、投融资背景及关联风险。深度评估商业履约能力,透视合作方真实状况,规避合同陷阱。">
<meta name="twitter:url" content="https://www.tianyuandb.com/inquire/companyinfo">
<link rel="canonical" href="https://www.tianyuandb.com/inquire/companyinfo">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebPage",
"name": "企业信用风险评估_工商经营异常与司法诉讼核查_天远数据",
"description": "天远数据提供全维度的企业商业画像。基于官方公示数据,核验目标企业的工商变更、经营异常名录、行政处罚、投融资背景及关联风险。深度评估商业履约能力,透视合作方真实状况,规避合同陷阱。",
"url": "https://www.tianyuandb.com/inquire/companyinfo",
"mainEntity": {
"@type": "Organization",
"name": "天远数据",
"url": "https://www.tianyuandb.com/",
"description": "专业大数据风险报告查询与代理平台,支持个人和企业多场景风控应用"
}
}
</script>
<meta name="robots" content="index, follow">
<meta name="googlebot" content="index, follow">
<meta name="baiduspider" content="index, follow">
<style>
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; margin: 0; padding: 0; line-height: 1.6; }
.seo-content { max-width: 1200px; margin: 0 auto; padding: 20px; }
h1 { color: #333; }
p { color: #666; }
.redirect-notice { background: #fff3cd; border: 1px solid #ffc107; color: #856404; padding: 10px; margin: 20px 0; border-radius: 4px; }
</style>
</head>
<body>
<div class="seo-content">
<h1>企业信用风险评估_工商经营异常与司法诉讼核查_天远数据</h1>
<div class="redirect-notice">
<p>正在跳转到完整版网站...</p>
<p>如果浏览器没有自动跳转,请 <a href="https://www.tianyuandb.com/inquire/companyinfo">点击这里</a></p>
</div>
<p>天远数据提供全维度的企业商业画像。基于官方公示数据,核验目标企业的工商变更、经营异常名录、行政处罚、投融资背景及关联风险。深度评估商业履约能力,透视合作方真实状况,规避合同陷阱。</p>
<section>
<h2>关于天远数据</h2>
<p>天远数据提供背调报告代理加盟与个人风控系统搭建,合规数据服务平台。支持职场背调、家政背景核验、企业风控服务与数据报告分销。</p>
</section>
<section>
<h2>核心服务</h2>
<ul>
<li>个人综合风险报告与履约评分</li>
<li>企业信用风险评估与工商核查</li>
<li>综合履约评分与贷前风险检测</li>
<li>婚恋对象背景了解与婚前风险评估</li>
<li>入职背景核验与职场信用排查</li>
<li>家政人员背景核实与用工安全评估</li>
</ul>
</section>
</div>
</body>
</html>

View File

@@ -0,0 +1,80 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>家政人员背景核实_保姆月嫂司法风险筛查_用工安全评估_天远数据</title>
<meta name="description" content="天远数据家政风险报告,为家庭用人安全把关。通过合法大数据,快速筛查家政人员的司法诉讼、失信被执行记录及社会不良风险标签。有效识别潜在隐患,预防雇佣纠纷,让您找保姆、请月嫂更放心。">
<meta name="keywords" content="保姆背景核验,月嫂风险筛查,家政人员核验,育儿嫂背景核实,雇佣风险防范">
<meta property="og:title" content="家政人员背景核实_保姆月嫂司法风险筛查_用工安全评估_天远数据">
<meta property="og:description" content="天远数据家政风险报告,为家庭用人安全把关。通过合法大数据,快速筛查家政人员的司法诉讼、失信被执行记录及社会不良风险标签。有效识别潜在隐患,预防雇佣纠纷,让您找保姆、请月嫂更放心。">
<meta property="og:url" content="https://www.tianyuandb.com/inquire/homeservice">
<meta property="og:type" content="website">
<meta property="og:site_name" content="天远数据">
<meta property="og:locale" content="zh_CN">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="家政人员背景核实_保姆月嫂司法风险筛查_用工安全评估_天远数据">
<meta name="twitter:description" content="天远数据家政风险报告,为家庭用人安全把关。通过合法大数据,快速筛查家政人员的司法诉讼、失信被执行记录及社会不良风险标签。有效识别潜在隐患,预防雇佣纠纷,让您找保姆、请月嫂更放心。">
<meta name="twitter:url" content="https://www.tianyuandb.com/inquire/homeservice">
<link rel="canonical" href="https://www.tianyuandb.com/inquire/homeservice">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebPage",
"name": "家政人员背景核实_保姆月嫂司法风险筛查_用工安全评估_天远数据",
"description": "天远数据家政风险报告,为家庭用人安全把关。通过合法大数据,快速筛查家政人员的司法诉讼、失信被执行记录及社会不良风险标签。有效识别潜在隐患,预防雇佣纠纷,让您找保姆、请月嫂更放心。",
"url": "https://www.tianyuandb.com/inquire/homeservice",
"mainEntity": {
"@type": "Organization",
"name": "天远数据",
"url": "https://www.tianyuandb.com/",
"description": "专业大数据风险报告查询与代理平台,支持个人和企业多场景风控应用"
}
}
</script>
<meta name="robots" content="index, follow">
<meta name="googlebot" content="index, follow">
<meta name="baiduspider" content="index, follow">
<style>
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; margin: 0; padding: 0; line-height: 1.6; }
.seo-content { max-width: 1200px; margin: 0 auto; padding: 20px; }
h1 { color: #333; }
p { color: #666; }
.redirect-notice { background: #fff3cd; border: 1px solid #ffc107; color: #856404; padding: 10px; margin: 20px 0; border-radius: 4px; }
</style>
</head>
<body>
<div class="seo-content">
<h1>家政人员背景核实_保姆月嫂司法风险筛查_用工安全评估_天远数据</h1>
<div class="redirect-notice">
<p>正在跳转到完整版网站...</p>
<p>如果浏览器没有自动跳转,请 <a href="https://www.tianyuandb.com/inquire/homeservice">点击这里</a></p>
</div>
<p>天远数据家政风险报告,为家庭用人安全把关。通过合法大数据,快速筛查家政人员的司法诉讼、失信被执行记录及社会不良风险标签。有效识别潜在隐患,预防雇佣纠纷,让您找保姆、请月嫂更放心。</p>
<section>
<h2>关于天远数据</h2>
<p>天远数据提供背调报告代理加盟与个人风控系统搭建,合规数据服务平台。支持职场背调、家政背景核验、企业风控服务与数据报告分销。</p>
</section>
<section>
<h2>核心服务</h2>
<ul>
<li>个人综合风险报告与履约评分</li>
<li>企业信用风险评估与工商核查</li>
<li>综合履约评分与贷前风险检测</li>
<li>婚恋对象背景了解与婚前风险评估</li>
<li>入职背景核验与职场信用排查</li>
<li>家政人员背景核实与用工安全评估</li>
</ul>
</section>
</div>
</body>
</html>

View File

@@ -0,0 +1,80 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>婚恋对象背景了解_司法诉讼与不良记录筛查_婚前风险评估_天远数据</title>
<meta name="description" content="天远数据提供专业的婚恋风险评估工具。基于合法的公开司法数据,深度排查法律诉讼记录、失信被执行信息及潜在的履约风险。数据来源合规,仅供个人防范参考,拒绝隐私泄露,为幸福保驾护航。">
<meta name="keywords" content="婚恋背景核验,婚前风险了解,司法记录核验,个人履约风险,背景核实">
<meta property="og:title" content="婚恋对象背景了解_司法诉讼与不良记录筛查_婚前风险评估_天远数据">
<meta property="og:description" content="天远数据提供专业的婚恋风险评估工具。基于合法的公开司法数据,深度排查法律诉讼记录、失信被执行信息及潜在的履约风险。数据来源合规,仅供个人防范参考,拒绝隐私泄露,为幸福保驾护航。">
<meta property="og:url" content="https://www.tianyuandb.com/inquire/marriage">
<meta property="og:type" content="website">
<meta property="og:site_name" content="天远数据">
<meta property="og:locale" content="zh_CN">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="婚恋对象背景了解_司法诉讼与不良记录筛查_婚前风险评估_天远数据">
<meta name="twitter:description" content="天远数据提供专业的婚恋风险评估工具。基于合法的公开司法数据,深度排查法律诉讼记录、失信被执行信息及潜在的履约风险。数据来源合规,仅供个人防范参考,拒绝隐私泄露,为幸福保驾护航。">
<meta name="twitter:url" content="https://www.tianyuandb.com/inquire/marriage">
<link rel="canonical" href="https://www.tianyuandb.com/inquire/marriage">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebPage",
"name": "婚恋对象背景了解_司法诉讼与不良记录筛查_婚前风险评估_天远数据",
"description": "天远数据提供专业的婚恋风险评估工具。基于合法的公开司法数据,深度排查法律诉讼记录、失信被执行信息及潜在的履约风险。数据来源合规,仅供个人防范参考,拒绝隐私泄露,为幸福保驾护航。",
"url": "https://www.tianyuandb.com/inquire/marriage",
"mainEntity": {
"@type": "Organization",
"name": "天远数据",
"url": "https://www.tianyuandb.com/",
"description": "专业大数据风险报告查询与代理平台,支持个人和企业多场景风控应用"
}
}
</script>
<meta name="robots" content="index, follow">
<meta name="googlebot" content="index, follow">
<meta name="baiduspider" content="index, follow">
<style>
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; margin: 0; padding: 0; line-height: 1.6; }
.seo-content { max-width: 1200px; margin: 0 auto; padding: 20px; }
h1 { color: #333; }
p { color: #666; }
.redirect-notice { background: #fff3cd; border: 1px solid #ffc107; color: #856404; padding: 10px; margin: 20px 0; border-radius: 4px; }
</style>
</head>
<body>
<div class="seo-content">
<h1>婚恋对象背景了解_司法诉讼与不良记录筛查_婚前风险评估_天远数据</h1>
<div class="redirect-notice">
<p>正在跳转到完整版网站...</p>
<p>如果浏览器没有自动跳转,请 <a href="https://www.tianyuandb.com/inquire/marriage">点击这里</a></p>
</div>
<p>天远数据提供专业的婚恋风险评估工具。基于合法的公开司法数据,深度排查法律诉讼记录、失信被执行信息及潜在的履约风险。数据来源合规,仅供个人防范参考,拒绝隐私泄露,为幸福保驾护航。</p>
<section>
<h2>关于天远数据</h2>
<p>天远数据提供背调报告代理加盟与个人风控系统搭建,合规数据服务平台。支持职场背调、家政背景核验、企业风控服务与数据报告分销。</p>
</section>
<section>
<h2>核心服务</h2>
<ul>
<li>个人综合风险报告与履约评分</li>
<li>企业信用风险评估与工商核查</li>
<li>综合履约评分与贷前风险检测</li>
<li>婚恋对象背景了解与婚前风险评估</li>
<li>入职背景核验与职场信用排查</li>
<li>家政人员背景核实与用工安全评估</li>
</ul>
</section>
</div>
</body>
</html>

View File

@@ -0,0 +1,80 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>个人综合风险报告_个人履约评分_多维数据检测_天远数据</title>
<meta name="description" content="天远数据提供个人全维信用画像扫描。一键检测司法涉诉记录、历史履约情况、号码状态异常检测及个人消费等级。数据同步权威行业系统,采用银行级加密技术,保障信息安全,助您全面了解自身信用状况。">
<meta name="keywords" content="个人风险评估,信用状况评估,综合履约能力,司法风险自查,风险标签检测">
<meta property="og:title" content="个人综合风险报告_个人履约评分_多维数据检测_天远数据">
<meta property="og:description" content="天远数据提供个人全维信用画像扫描。一键检测司法涉诉记录、历史履约情况、号码状态异常检测及个人消费等级。数据同步权威行业系统,采用银行级加密技术,保障信息安全,助您全面了解自身信用状况。">
<meta property="og:url" content="https://www.tianyuandb.com/inquire/personalData">
<meta property="og:type" content="website">
<meta property="og:site_name" content="天远数据">
<meta property="og:locale" content="zh_CN">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="个人综合风险报告_个人履约评分_多维数据检测_天远数据">
<meta name="twitter:description" content="天远数据提供个人全维信用画像扫描。一键检测司法涉诉记录、历史履约情况、号码状态异常检测及个人消费等级。数据同步权威行业系统,采用银行级加密技术,保障信息安全,助您全面了解自身信用状况。">
<meta name="twitter:url" content="https://www.tianyuandb.com/inquire/personalData">
<link rel="canonical" href="https://www.tianyuandb.com/inquire/personalData">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebPage",
"name": "个人综合风险报告_个人履约评分_多维数据检测_天远数据",
"description": "天远数据提供个人全维信用画像扫描。一键检测司法涉诉记录、历史履约情况、号码状态异常检测及个人消费等级。数据同步权威行业系统,采用银行级加密技术,保障信息安全,助您全面了解自身信用状况。",
"url": "https://www.tianyuandb.com/inquire/personalData",
"mainEntity": {
"@type": "Organization",
"name": "天远数据",
"url": "https://www.tianyuandb.com/",
"description": "专业大数据风险报告查询与代理平台,支持个人和企业多场景风控应用"
}
}
</script>
<meta name="robots" content="index, follow">
<meta name="googlebot" content="index, follow">
<meta name="baiduspider" content="index, follow">
<style>
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; margin: 0; padding: 0; line-height: 1.6; }
.seo-content { max-width: 1200px; margin: 0 auto; padding: 20px; }
h1 { color: #333; }
p { color: #666; }
.redirect-notice { background: #fff3cd; border: 1px solid #ffc107; color: #856404; padding: 10px; margin: 20px 0; border-radius: 4px; }
</style>
</head>
<body>
<div class="seo-content">
<h1>个人综合风险报告_个人履约评分_多维数据检测_天远数据</h1>
<div class="redirect-notice">
<p>正在跳转到完整版网站...</p>
<p>如果浏览器没有自动跳转,请 <a href="https://www.tianyuandb.com/inquire/personalData">点击这里</a></p>
</div>
<p>天远数据提供个人全维信用画像扫描。一键检测司法涉诉记录、历史履约情况、号码状态异常检测及个人消费等级。数据同步权威行业系统,采用银行级加密技术,保障信息安全,助您全面了解自身信用状况。</p>
<section>
<h2>关于天远数据</h2>
<p>天远数据提供背调报告代理加盟与个人风控系统搭建,合规数据服务平台。支持职场背调、家政背景核验、企业风控服务与数据报告分销。</p>
</section>
<section>
<h2>核心服务</h2>
<ul>
<li>个人综合风险报告与履约评分</li>
<li>企业信用风险评估与工商核查</li>
<li>综合履约评分与贷前风险检测</li>
<li>婚恋对象背景了解与婚前风险评估</li>
<li>入职背景核验与职场信用排查</li>
<li>家政人员背景核实与用工安全评估</li>
</ul>
</section>
</div>
</body>
</html>

View File

@@ -0,0 +1,80 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>综合履约评分检测_多平台履约记录分析_个人财务履约报告_天远数据</title>
<meta name="description" content="天远数据提供专业的个人履约健康度体检服务。基于多维大数据分析,检测您的综合评分波动、历史履约记录及潜在的风险标签。本服务旨在帮助用户优化个人数据画像,提升信用管理意识,不提供任何信贷金融服务。">
<meta name="keywords" content="综合评分检测,多重履约压力分析,履约能力评估,综合评分优化,个人数据画像">
<meta property="og:title" content="综合履约评分检测_多平台履约记录分析_个人财务履约报告_天远数据">
<meta property="og:description" content="天远数据提供专业的个人履约健康度体检服务。基于多维大数据分析,检测您的综合评分波动、历史履约记录及潜在的风险标签。本服务旨在帮助用户优化个人数据画像,提升信用管理意识,不提供任何信贷金融服务。">
<meta property="og:url" content="https://www.tianyuandb.com/inquire/preloanbackgroundcheck">
<meta property="og:type" content="website">
<meta property="og:site_name" content="天远数据">
<meta property="og:locale" content="zh_CN">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="综合履约评分检测_多平台履约记录分析_个人财务履约报告_天远数据">
<meta name="twitter:description" content="天远数据提供专业的个人履约健康度体检服务。基于多维大数据分析,检测您的综合评分波动、历史履约记录及潜在的风险标签。本服务旨在帮助用户优化个人数据画像,提升信用管理意识,不提供任何信贷金融服务。">
<meta name="twitter:url" content="https://www.tianyuandb.com/inquire/preloanbackgroundcheck">
<link rel="canonical" href="https://www.tianyuandb.com/inquire/preloanbackgroundcheck">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebPage",
"name": "综合履约评分检测_多平台履约记录分析_个人财务履约报告_天远数据",
"description": "天远数据提供专业的个人履约健康度体检服务。基于多维大数据分析,检测您的综合评分波动、历史履约记录及潜在的风险标签。本服务旨在帮助用户优化个人数据画像,提升信用管理意识,不提供任何信贷金融服务。",
"url": "https://www.tianyuandb.com/inquire/preloanbackgroundcheck",
"mainEntity": {
"@type": "Organization",
"name": "天远数据",
"url": "https://www.tianyuandb.com/",
"description": "专业大数据风险报告查询与代理平台,支持个人和企业多场景风控应用"
}
}
</script>
<meta name="robots" content="index, follow">
<meta name="googlebot" content="index, follow">
<meta name="baiduspider" content="index, follow">
<style>
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; margin: 0; padding: 0; line-height: 1.6; }
.seo-content { max-width: 1200px; margin: 0 auto; padding: 20px; }
h1 { color: #333; }
p { color: #666; }
.redirect-notice { background: #fff3cd; border: 1px solid #ffc107; color: #856404; padding: 10px; margin: 20px 0; border-radius: 4px; }
</style>
</head>
<body>
<div class="seo-content">
<h1>综合履约评分检测_多平台履约记录分析_个人财务履约报告_天远数据</h1>
<div class="redirect-notice">
<p>正在跳转到完整版网站...</p>
<p>如果浏览器没有自动跳转,请 <a href="https://www.tianyuandb.com/inquire/preloanbackgroundcheck">点击这里</a></p>
</div>
<p>天远数据提供专业的个人履约健康度体检服务。基于多维大数据分析,检测您的综合评分波动、历史履约记录及潜在的风险标签。本服务旨在帮助用户优化个人数据画像,提升信用管理意识,不提供任何信贷金融服务。</p>
<section>
<h2>关于天远数据</h2>
<p>天远数据提供背调报告代理加盟与个人风控系统搭建,合规数据服务平台。支持职场背调、家政背景核验、企业风控服务与数据报告分销。</p>
</section>
<section>
<h2>核心服务</h2>
<ul>
<li>个人综合风险报告与履约评分</li>
<li>企业信用风险评估与工商核查</li>
<li>综合履约评分与贷前风险检测</li>
<li>婚恋对象背景了解与婚前风险评估</li>
<li>入职背景核验与职场信用排查</li>
<li>家政人员背景核实与用工安全评估</li>
</ul>
</section>
</div>
</body>
</html>

View File

@@ -0,0 +1,80 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>客服中心 - 天远数据在线客服 | 技术支持</title>
<meta name="description" content="天远数据客服中心,提供在线客服支持、技术咨询、问题反馈等服务,确保用户获得及时有效的帮助。">
<meta name="keywords" content="客服中心, 在线客服, 技术支持, 问题反馈, 天远数据客服">
<meta property="og:title" content="客服中心 - 天远数据在线客服 | 技术支持">
<meta property="og:description" content="天远数据客服中心,提供在线客服支持、技术咨询、问题反馈等服务,确保用户获得及时有效的帮助。">
<meta property="og:url" content="https://www.tianyuandb.com/service">
<meta property="og:type" content="website">
<meta property="og:site_name" content="天远数据">
<meta property="og:locale" content="zh_CN">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="客服中心 - 天远数据在线客服 | 技术支持">
<meta name="twitter:description" content="天远数据客服中心,提供在线客服支持、技术咨询、问题反馈等服务,确保用户获得及时有效的帮助。">
<meta name="twitter:url" content="https://www.tianyuandb.com/service">
<link rel="canonical" href="https://www.tianyuandb.com/service">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebPage",
"name": "客服中心 - 天远数据在线客服 | 技术支持",
"description": "天远数据客服中心,提供在线客服支持、技术咨询、问题反馈等服务,确保用户获得及时有效的帮助。",
"url": "https://www.tianyuandb.com/service",
"mainEntity": {
"@type": "Organization",
"name": "天远数据",
"url": "https://www.tianyuandb.com/",
"description": "专业大数据风险报告查询与代理平台,支持个人和企业多场景风控应用"
}
}
</script>
<meta name="robots" content="index, follow">
<meta name="googlebot" content="index, follow">
<meta name="baiduspider" content="index, follow">
<style>
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; margin: 0; padding: 0; line-height: 1.6; }
.seo-content { max-width: 1200px; margin: 0 auto; padding: 20px; }
h1 { color: #333; }
p { color: #666; }
.redirect-notice { background: #fff3cd; border: 1px solid #ffc107; color: #856404; padding: 10px; margin: 20px 0; border-radius: 4px; }
</style>
</head>
<body>
<div class="seo-content">
<h1>客服中心 - 天远数据在线客服 | 技术支持</h1>
<div class="redirect-notice">
<p>正在跳转到完整版网站...</p>
<p>如果浏览器没有自动跳转,请 <a href="https://www.tianyuandb.com/service">点击这里</a></p>
</div>
<p>天远数据客服中心,提供在线客服支持、技术咨询、问题反馈等服务,确保用户获得及时有效的帮助。</p>
<section>
<h2>关于天远数据</h2>
<p>天远数据提供背调报告代理加盟与个人风控系统搭建,合规数据服务平台。支持职场背调、家政背景核验、企业风控服务与数据报告分销。</p>
</section>
<section>
<h2>核心服务</h2>
<ul>
<li>个人综合风险报告与履约评分</li>
<li>企业信用风险评估与工商核查</li>
<li>综合履约评分与贷前风险检测</li>
<li>婚恋对象背景了解与婚前风险评估</li>
<li>入职背景核验与职场信用排查</li>
<li>家政人员背景核实与用工安全评估</li>
</ul>
</section>
</div>
</body>
</html>

View File

@@ -1,5 +1,5 @@
{
"name": "天远数据|大数据风险报告查询与代理平台,支持个人和企业多场景风控应用",
"name": "天远数据_背调报告代理加盟_个人风控系统搭建_合规数据服务平台",
"short_name": "天远数据",
"description": "专业大数据风险报告查询与代理平台,支持个人信用查询、小微企业风控、贷前风险背调等多场景报告应用",
"start_url": "/",

View File

@@ -1,67 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://www.zhinengcha.cn/</loc>
<loc>https://www.tianyuandb.com/</loc>
<lastmod>2025-08-01</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://www.zhinengcha.cn/agent</loc>
<loc>https://www.tianyuandb.com/agent</loc>
<lastmod>2025-08-01</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.zhinengcha.cn/help</loc>
<loc>https://www.tianyuandb.com/help</loc>
<lastmod>2025-08-01</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://www.zhinengcha.cn/help/guide</loc>
<loc>https://www.tianyuandb.com/help/guide</loc>
<lastmod>2025-08-01</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.zhinengcha.cn/example</loc>
<loc>https://www.tianyuandb.com/example</loc>
<lastmod>2025-08-01</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.zhinengcha.cn/service</loc>
<loc>https://www.tianyuandb.com/service</loc>
<lastmod>2025-08-01</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.zhinengcha.cn/privacyPolicy</loc>
<loc>https://www.tianyuandb.com/privacyPolicy</loc>
<lastmod>2025-08-01</lastmod>
<changefreq>yearly</changefreq>
<priority>0.3</priority>
</url>
<url>
<loc>https://www.zhinengcha.cn/userAgreement</loc>
<loc>https://www.tianyuandb.com/userAgreement</loc>
<lastmod>2025-08-01</lastmod>
<changefreq>yearly</changefreq>
<priority>0.3</priority>
</url>
<url>
<loc>https://www.zhinengcha.cn/agentManageAgreement</loc>
<loc>https://www.tianyuandb.com/agentManageAgreement</loc>
<lastmod>2025-08-01</lastmod>
<changefreq>yearly</changefreq>
<priority>0.3</priority>
</url>
<url>
<loc>https://www.zhinengcha.cn/agentSerivceAgreement</loc>
<loc>https://www.tianyuandb.com/agentSerivceAgreement</loc>
<lastmod>2025-08-01</lastmod>
<changefreq>yearly</changefreq>
<priority>0.3</priority>
</url>
<url>
<loc>https://www.zhinengcha.cn/authorization</loc>
<loc>https://www.tianyuandb.com/authorization</loc>
<lastmod>2025-08-01</lastmod>
<changefreq>yearly</changefreq>
<priority>0.3</priority>

View File

@@ -592,7 +592,7 @@ watch([reportData, componentRiskScores], () => {
</div>
<div>
<a class="text-blue-500" href="https://beian.miit.gov.cn">
琼ICP备2024048057-2
琼ICP备2024038584-13
</a>
</div>
</div>

170
server/crawler-detector.js Normal file
View File

@@ -0,0 +1,170 @@
/**
* 爬虫检测模块
* 用于识别搜索引擎爬虫和社交媒体爬虫
*/
class CrawlerDetector {
constructor() {
// 常见搜索引擎爬虫User-Agent列表
this.crawlerPatterns = [
// 百度爬虫
'baiduspider',
'baiduspider-mobile',
'baiduspider-image',
'baiduspider-video',
'baiduspider-news',
'baiduboxapp',
// Google爬虫
'googlebot',
'googlebot-image',
'googlebot-news',
'googlebot-mobile',
'googlebot-video',
'google-web-snippet',
// 360搜索
'360spider',
'soha-agent',
'haosouspider',
// 搜狗搜索
'sogou spider',
'sogou news spider',
'sogou orion spider',
'sogou-blog',
// 必应
'bingbot',
'msnbot',
// 雅虎
'slurp',
// 搜搜
'sosospider',
'sosoimagespider',
// 有道
'youdaobot',
'yodaobot',
// 头条搜索
'bytedance-spider',
'toutiaospider',
// 社交媒体爬虫
'facebookexternalhit',
'facebookcatalog',
'twitterbot',
'linkedinbot',
'whatsapp',
'telegrambot',
'viber',
'line',
// 其他常见爬虫
'applebot',
'semrushbot',
'ahrefsbot',
'mj12bot',
'dotbot',
'crawler',
'spider',
'bot'
]
// 需要检测的头部字段
this.crawlerHeaders = ['x-bot', 'x-crawler', 'x-forwarded-for']
}
/**
* 检测请求是否来自爬虫
* @param {Object} req - HTTP请求对象
* @returns {Boolean} 是否为爬虫
*/
isCrawler(req) {
const userAgent = req.headers['user-agent']?.toLowerCase() || ''
const headers = req.headers
// 1. 通过User-Agent检测
if (this.checkUserAgent(userAgent)) {
console.log(`[CrawlerDetector] 检测到爬虫 UA: ${userAgent}`)
return true
}
// 2. 通过特定头部检测
if (this.checkHeaders(headers)) {
console.log(`[CrawlerDetector] 检测到爬虫 Headers`)
return true
}
// 3. 通过IP地址检测可选
// if (this.checkIP(req.connection.remoteAddress)) {
// return true
// }
return false
}
/**
* 检查User-Agent
* @param {String} userAgent
* @returns {Boolean}
*/
checkUserAgent(userAgent) {
if (!userAgent) return false
return this.crawlerPatterns.some(pattern => {
return userAgent.includes(pattern.toLowerCase())
})
}
/**
* 检查请求头
* @param {Object} headers
* @returns {Boolean}
*/
checkHeaders(headers) {
for (const header of this.crawlerHeaders) {
const headerValue = headers[header]?.toLowerCase()
if (headerValue && (headerValue.includes('bot') || headerValue.includes('crawler'))) {
return true
}
}
return false
}
/**
* 检查IP地址是否为已知爬虫IP
* @param {String} ip
* @returns {Boolean}
*/
checkIP(ip) {
// 这里可以添加已知爬虫IP段的检测
// 需要定期更新爬虫IP列表
return false
}
/**
* 获取爬虫类型
* @param {String} userAgent
* @returns {String} 爬虫类型
*/
getCrawlerType(userAgent) {
const ua = userAgent.toLowerCase()
if (ua.includes('baiduspider')) return 'baidu'
if (ua.includes('googlebot')) return 'google'
if (ua.includes('bingbot') || ua.includes('msnbot')) return 'bing'
if (ua.includes('360spider')) return '360'
if (ua.includes('sogou spider')) return 'sogou'
if (ua.includes('facebookexternalhit')) return 'facebook'
if (ua.includes('twitterbot')) return 'twitter'
if (ua.includes('linkedinbot')) return 'linkedin'
return 'unknown'
}
}
module.exports = CrawlerDetector

View File

@@ -0,0 +1,245 @@
/**
* SEO模板生成器
* 根据 useSEO.js 的页面配置自动生成静态 HTML 模板,供爬虫访问时返回
* 配置与 src/composables/useSEO.js 保持一致
*
* 多站点:通过环境变量 SEO_BASE_URL 指定 canonical/og:url 域名后生成
* 例SEO_BASE_URL=https://www.tianyuandb.com node generate-seo-templates.cjs
*/
const fs = require('fs')
const path = require('path')
const BASE_URL = process.env.SEO_BASE_URL || 'https://www.tianyuandb.com'
// 页面 SEO 配置(与 useSEO.js 的 routeConfigs 保持一致)
const pageSEOConfigs = {
'index.html': {
title: '天远数据_背调报告代理加盟_个人风控系统搭建_合规数据服务平台',
description: '天远数据提供低成本的风控系统搭建服务。一键开通独立代理后台,支持自定义品牌与报告价格。平台基于公开合法数据,支持一键生成综合素质报告。诚邀行业合作伙伴,共享数字化风控红利,助力流量合规变现。',
keywords: '天远数据,职场背调,风险核验报告,家政背景核验,第三方背调,企业风控服务,数据报告分销',
url: BASE_URL
},
'historyQuery.html': {
title: '我的报告_历史查询记录_天远数据',
description: '天远数据用户个人中心,查看及下载历史查询报告。',
keywords: '我的报告,历史记录,天远数据',
url: `${BASE_URL}/historyQuery`
},
'inquire-personalData.html': {
title: '个人综合风险报告_个人履约评分_多维数据检测_天远数据',
description: '天远数据提供个人全维信用画像扫描。一键检测司法涉诉记录、历史履约情况、号码状态异常检测及个人消费等级。数据同步权威行业系统,采用银行级加密技术,保障信息安全,助您全面了解自身信用状况。',
keywords: '个人风险评估,信用状况评估,综合履约能力,司法风险自查,风险标签检测',
url: `${BASE_URL}/inquire/personalData`
},
'inquire-companyinfo.html': {
title: '企业信用风险评估_工商经营异常与司法诉讼核查_天远数据',
description: '天远数据提供全维度的企业商业画像。基于官方公示数据,核验目标企业的工商变更、经营异常名录、行政处罚、投融资背景及关联风险。深度评估商业履约能力,透视合作方真实状况,规避合同陷阱。',
keywords: '企业信用画像,公司经营风险,工商异常名录,企业履约评估,商业背景核验',
url: `${BASE_URL}/inquire/companyinfo`
},
'inquire-preloanbackgroundcheck.html': {
title: '综合履约评分检测_多平台履约记录分析_个人财务履约报告_天远数据',
description: '天远数据提供专业的个人履约健康度体检服务。基于多维大数据分析,检测您的综合评分波动、历史履约记录及潜在的风险标签。本服务旨在帮助用户优化个人数据画像,提升信用管理意识,不提供任何信贷金融服务。',
keywords: '综合评分检测,多重履约压力分析,履约能力评估,综合评分优化,个人数据画像',
url: `${BASE_URL}/inquire/preloanbackgroundcheck`
},
'inquire-marriage.html': {
title: '婚恋对象背景了解_司法诉讼与不良记录筛查_婚前风险评估_天远数据',
description: '天远数据提供专业的婚恋风险评估工具。基于合法的公开司法数据,深度排查法律诉讼记录、失信被执行信息及潜在的履约风险。数据来源合规,仅供个人防范参考,拒绝隐私泄露,为幸福保驾护航。',
keywords: '婚恋背景核验,婚前风险了解,司法记录核验,个人履约风险,背景核实',
url: `${BASE_URL}/inquire/marriage`
},
'inquire-backgroundcheck.html': {
title: '入职背景核验_候选人履历核验_职场信用与竞业排查_天远数据',
description: '天远数据职场风险报告助力企业构建防御体系。基于司法级大数据,一键筛查候选人司法涉诉记录、学历信息、商业利益冲突、历史违约记录及不良社会风险。官方数据,客观预警入职风险,辅助HR高效决策。',
keywords: '入职风险评估,候选人背景核验,简历真伪辨别,竞业限制核验,职场信用报告,员工风险预警',
url: `${BASE_URL}/inquire/backgroundcheck`
},
'inquire-homeservice.html': {
title: '家政人员背景核实_保姆月嫂司法风险筛查_用工安全评估_天远数据',
description: '天远数据家政风险报告,为家庭用人安全把关。通过合法大数据,快速筛查家政人员的司法诉讼、失信被执行记录及社会不良风险标签。有效识别潜在隐患,预防雇佣纠纷,让您找保姆、请月嫂更放心。',
keywords: '保姆背景核验,月嫂风险筛查,家政人员核验,育儿嫂背景核实,雇佣风险防范',
url: `${BASE_URL}/inquire/homeservice`
},
'agent.html': {
title: '天远数据代理 - 免费开通代理权限 | 大数据风险报告代理',
description: '天远数据代理平台,免费开通代理权限,享受大数据风险报告查询服务代理收益。专业的大数据风险报告、婚姻查询、个人信用评估等服务的代理合作。',
keywords: '天远数据代理, 免费代理, 大数据风险报告代理, 代理权限, 代理收益',
url: `${BASE_URL}/agent`
},
'agent-promote.html': {
title: '生成推广码_自定义价格_0成本代理查价系统_天远数据',
description: '天远数据推广中心支持代理自主设置报告价格。在此选择报告类型,自定义客户查询价,0成本生成专属推广链接或二维码。差价即为利润,实现个人风险报告的私域流量变现。',
keywords: '推广码生成,自定义查价系统,代理收益工具,代理推广链接,流量变现平台,天远数据推广',
url: `${BASE_URL}/agent/promote`
},
'agent-invitation.html': {
title: '邀请合作伙伴_发展代理享收益_推广返利计划_天远数据',
description: '天远数据推出合伙人邀请奖励机制。邀请好友注册成为合作伙伴,每单不仅可获得推广收益,还可叠加合作伙伴活跃奖励及定价差额收益。打造专属推广团队,实现收益持续增长。',
keywords: '渠道合作伙伴,商业收益管理,流量合规变现,业务推广系统,代理后台',
url: `${BASE_URL}/agent/invitation`
},
'help.html': {
title: '天远数据帮助中心_代理操作指南_推广收益计算常见问题',
description: '天远数据帮助中心提供全方位的代理操作指引。包含如何成为代理、推广报告生成教程、收益与成本计算规则及推广效率提升方案。',
keywords: '天远数据教程,代理新手指南,推广收益计算,报告推广',
url: `${BASE_URL}/help`
},
'help-guide.html': {
title: '使用指南 - 天远数据操作教程 | 功能说明',
description: '天远数据详细使用指南,包含各功能模块的操作教程、功能说明、注意事项等,让用户快速上手使用。',
keywords: '使用指南, 操作教程, 功能说明, 快速上手, 天远数据教程',
url: `${BASE_URL}/help/guide`
},
'example.html': {
title: '示例报告 - 天远数据报告展示 | 大数据风险报告样例',
description: '天远数据示例报告展示,包含大数据风险报告、婚姻状况查询、个人信用评估等服务的报告样例,让用户了解报告内容和格式。',
keywords: '示例报告, 报告展示, 报告样例, 大数据风险报告, 婚姻查询报告',
url: `${BASE_URL}/example`
},
'service.html': {
title: '客服中心 - 天远数据在线客服 | 技术支持',
description: '天远数据客服中心,提供在线客服支持、技术咨询、问题反馈等服务,确保用户获得及时有效的帮助。',
keywords: '客服中心, 在线客服, 技术支持, 问题反馈, 天远数据客服',
url: `${BASE_URL}/service`
}
}
/**
* 规范化文案:统一为中文标点,避免乱码
*/
function normalizeText(str) {
if (typeof str !== 'string') return str
return str
.replace(/\uFFFD/g, '')
.replace(/。/g, '。')
.replace(/、/g, '、')
}
/**
* 转义 HTML 属性值
*/
function escapeAttr(str) {
if (typeof str !== 'string') return ''
return str
.replace(/&/g, '&amp;')
.replace(/"/g, '&quot;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
}
/**
* 生成单页 HTML 模板
*/
function generateHTMLTemplate(config) {
const title = normalizeText(config.title)
const description = normalizeText(config.description)
const keywords = normalizeText(config.keywords)
const structuredData = {
'@context': 'https://schema.org',
'@type': 'WebPage',
name: title,
description: description,
url: config.url,
mainEntity: {
'@type': 'Organization',
name: '天远数据',
url: 'https://www.tianyuandb.com/',
description: '专业大数据风险报告查询与代理平台,支持个人和企业多场景风控应用'
}
}
return `<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>${escapeAttr(title)}</title>
<meta name="description" content="${escapeAttr(description)}">
<meta name="keywords" content="${escapeAttr(keywords)}">
<meta property="og:title" content="${escapeAttr(title)}">
<meta property="og:description" content="${escapeAttr(description)}">
<meta property="og:url" content="${escapeAttr(config.url)}">
<meta property="og:type" content="website">
<meta property="og:site_name" content="天远数据">
<meta property="og:locale" content="zh_CN">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="${escapeAttr(title)}">
<meta name="twitter:description" content="${escapeAttr(description)}">
<meta name="twitter:url" content="${escapeAttr(config.url)}">
<link rel="canonical" href="${escapeAttr(config.url)}">
<script type="application/ld+json">
${JSON.stringify(structuredData, null, 8)}
</script>
<meta name="robots" content="index, follow">
<meta name="googlebot" content="index, follow">
<meta name="baiduspider" content="index, follow">
<style>
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; margin: 0; padding: 0; line-height: 1.6; }
.seo-content { max-width: 1200px; margin: 0 auto; padding: 20px; }
h1 { color: #333; }
p { color: #666; }
.redirect-notice { background: #fff3cd; border: 1px solid #ffc107; color: #856404; padding: 10px; margin: 20px 0; border-radius: 4px; }
</style>
</head>
<body>
<div class="seo-content">
<h1>${escapeAttr(title)}</h1>
<div class="redirect-notice">
<p>正在跳转到完整版网站...</p>
<p>如果浏览器没有自动跳转,请 <a href="${escapeAttr(config.url)}">点击这里</a></p>
</div>
<p>${escapeAttr(description)}</p>
<section>
<h2>关于天远数据</h2>
<p>天远数据提供背调报告代理加盟与个人风控系统搭建,合规数据服务平台。支持职场背调、家政背景核验、企业风控服务与数据报告分销。</p>
</section>
<section>
<h2>核心服务</h2>
<ul>
<li>个人综合风险报告与履约评分</li>
<li>企业信用风险评估与工商核查</li>
<li>综合履约评分与贷前风险检测</li>
<li>婚恋对象背景了解与婚前风险评估</li>
<li>入职背景核验与职场信用排查</li>
<li>家政人员背景核实与用工安全评估</li>
</ul>
</section>
</div>
</body>
</html>`
}
function main() {
const outputDir = path.join(__dirname, '../public/seo-templates')
if (!fs.existsSync(outputDir)) {
fs.mkdirSync(outputDir, { recursive: true })
console.log(`✓ 创建模板目录: ${outputDir}`)
}
let successCount = 0
Object.entries(pageSEOConfigs).forEach(([filename, config]) => {
const htmlContent = generateHTMLTemplate(config)
const filePath = path.join(outputDir, filename)
fs.writeFileSync(filePath, htmlContent, 'utf-8')
console.log(`✓ 生成模板: ${filename}`)
successCount++
})
console.log(`\n✓ 成功生成 ${successCount} 个 SEO 模板文件`)
console.log(`📁 模板目录: ${outputDir}`)
console.log(`💡 配置与 useSEO.js 一致,当前域名: ${BASE_URL}`)
}
main()

179
server/middleware.js Normal file
View File

@@ -0,0 +1,179 @@
/**
* SEO中间件
* 用于在Node.js服务器中检测爬虫并返回静态HTML
*/
const fs = require('fs')
const path = require('path')
const CrawlerDetector = require('./crawler-detector')
class SEOMiddleware {
constructor(options = {}) {
this.detector = new CrawlerDetector()
this.templateDir = options.templateDir || path.join(__dirname, '../public/seo-templates')
this.defaultTemplate = options.defaultTemplate || 'index.html'
this.fallbackToSPA = options.fallbackToSPA !== false
this.debug = options.debug || false
// 路由到模板的映射(与 useSEO.js 及 generate-seo-templates.cjs 保持一致;子路径放前面以优先精确匹配)
this.routeTemplateMap = {
'/': 'index.html',
'/historyQuery': 'historyQuery.html',
'/agent/promote': 'agent-promote.html',
'/agent/invitation': 'agent-invitation.html',
'/agent': 'agent.html',
'/help/guide': 'help-guide.html',
'/help': 'help.html',
'/example': 'example.html',
'/service': 'service.html',
'/inquire/personalData': 'inquire-personalData.html',
'/inquire/companyinfo': 'inquire-companyinfo.html',
'/inquire/preloanbackgroundcheck': 'inquire-preloanbackgroundcheck.html',
'/inquire/marriage': 'inquire-marriage.html',
'/inquire/backgroundcheck': 'inquire-backgroundcheck.html',
'/inquire/homeservice': 'inquire-homeservice.html'
}
// 初始化模板缓存
this.templateCache = new Map()
this.cacheTemplates()
}
/**
* 缓存所有模板文件
*/
cacheTemplates() {
try {
if (!fs.existsSync(this.templateDir)) {
console.warn(`[SEOMiddleware] 模板目录不存在: ${this.templateDir}`)
return
}
const files = fs.readdirSync(this.templateDir)
files.forEach(file => {
const filePath = path.join(this.templateDir, file)
if (fs.statSync(filePath).isFile()) {
this.templateCache.set(file, fs.readFileSync(filePath, 'utf-8'))
if (this.debug) {
console.log(`[SEOMiddleware] 已缓存模板: ${file}`)
}
}
})
console.log(`[SEOMiddleware] 已缓存 ${this.templateCache.size} 个模板文件`)
} catch (error) {
console.error('[SEOMiddleware] 缓存模板失败:', error)
}
}
/**
* 获取对应的模板文件名
* @param {String} path - 请求路径
* @returns {String} 模板文件名
*/
getTemplatePath(requestPath) {
// 完全匹配
if (this.routeTemplateMap[requestPath]) {
return this.routeTemplateMap[requestPath]
}
// 模糊匹配(处理动态路由)
const matchedKey = Object.keys(this.routeTemplateMap).find(route => {
return requestPath.startsWith(route)
})
return matchedKey ? this.routeTemplateMap[matchedKey] : this.defaultTemplate
}
/**
* 获取模板内容
* @param {String} templateName - 模板文件名
* @returns {String|null} 模板内容
*/
getTemplate(templateName) {
// 首先尝试缓存
let content = this.templateCache.get(templateName)
// 如果缓存中没有,尝试从磁盘读取
if (!content) {
try {
const filePath = path.join(this.templateDir, templateName)
if (fs.existsSync(filePath)) {
content = fs.readFileSync(filePath, 'utf-8')
this.templateCache.set(templateName, content)
}
} catch (error) {
console.error(`[SEOMiddleware] 读取模板失败: ${templateName}`, error)
}
}
return content || null
}
/**
* Express中间件
*/
express() {
return (req, res, next) => {
// 检测是否为爬虫
if (this.detector.isCrawler(req)) {
const templateName = this.getTemplatePath(req.path)
const template = this.getTemplate(templateName)
if (template) {
// 设置响应头
res.setHeader('Content-Type', 'text/html; charset=utf-8')
res.setHeader('X-SEOMiddleware', 'prerendered')
// 返回静态HTML
if (this.debug) {
console.log(`[SEOMiddleware] 返回SEO模板: ${templateName} for ${req.path}`)
}
return res.send(template)
}
}
// 不是爬虫或模板不存在继续处理SPA
next()
}
}
/**
* Koa中间件
*/
koa() {
return async (ctx, next) => {
// 检测是否为爬虫
if (this.detector.isCrawler(ctx.req)) {
const templateName = this.getTemplatePath(ctx.path)
const template = this.getTemplate(templateName)
if (template) {
ctx.type = 'text/html; charset=utf-8'
ctx.set('X-SEOMiddleware', 'prerendered')
if (this.debug) {
console.log(`[SEOMiddleware] 返回SEO模板: ${templateName} for ${ctx.path}`)
}
ctx.body = template
return
}
}
await next()
}
}
/**
* 重新加载模板缓存
*/
reloadCache() {
this.templateCache.clear()
this.cacheTemplates()
console.log('[SEOMiddleware] 模板缓存已重新加载')
}
}
module.exports = SEOMiddleware

27
server/package.json Normal file
View File

@@ -0,0 +1,27 @@
{
"name": "tydata-seo-server",
"version": "1.0.0",
"description": "SPA SEO 优化 - 爬虫检测与静态 HTML 回退,与 useSEO.js 同步",
"main": "server-example-express.js",
"scripts": {
"start": "node server-example-express.js",
"dev": "node server-example-express.js",
"generate": "node generate-seo-templates.cjs",
"test": "node test-seo.js",
"test:crawler": "node test-crawler-detection.js"
},
"keywords": [
"seo",
"crawler",
"spa",
"prerender"
],
"license": "MIT",
"dependencies": {
"express": "^4.18.2",
"compression": "^1.7.4"
},
"devDependencies": {
"nodemon": "^3.0.1"
}
}

View File

@@ -117,6 +117,7 @@ declare global {
const useActiveElement: typeof import('@vueuse/core')['useActiveElement']
const useAgent: typeof import('./composables/useAgent.js')['useAgent']
const useAgentStore: typeof import('./stores/agentStore.js')['useAgentStore']
const useAliyunCaptcha: typeof import('./composables/useAliyunCaptcha.js')['default']
const useAnimate: typeof import('@vueuse/core')['useAnimate']
const useApiFetch: typeof import('./composables/useApiFetch.js')['default']
const useArrayDifference: typeof import('@vueuse/core')['useArrayDifference']

View File

@@ -122,6 +122,7 @@ const router = useRouter();
const show = defineModel("show");
import { useCascaderAreaData } from "@vant/area-data";
import { showToast } from "vant"; // 引入 showToast 方法
import { useAliyunCaptcha } from "@/composables/useAliyunCaptcha";
const emit = defineEmits(); // 确保 emit 可以正确使用
const props = defineProps({
ancestor: {
@@ -158,6 +159,8 @@ const isPhoneNumberValid = computed(() => {
return /^1[3-9]\d{9}$/.test(form.value.mobile);
});
const { runWithCaptcha } = useAliyunCaptcha();
const getSmsCode = async () => {
if (!form.value.mobile) {
showToast({ message: "请输入手机号" });
@@ -170,21 +173,21 @@ const getSmsCode = async () => {
}
loadingSms.value = true;
const { data, error } = await useApiFetch("auth/sendSms")
.post({ mobile: form.value.mobile, actionType: "agentApply" })
.json();
loadingSms.value = false;
if (data.value && !error.value) {
if (data.value.code === 200) {
showToast({ message: "获取成功" });
startCountdown(); // 启动倒计时
} else {
showToast(data.value.msg);
await runWithCaptcha(
(captchaVerifyParam) =>
useApiFetch("auth/sendSms")
.post({ mobile: form.value.mobile, actionType: "agentApply", captchaVerifyParam })
.json(),
(res) => {
loadingSms.value = false;
if (res.code === 200) {
showToast({ message: "获取成功" });
startCountdown();
} else {
showToast(res.msg);
}
}
}
);
};
let timer = null;

View File

@@ -259,6 +259,11 @@ const featureMap = {
import("@/ui/CJRZQ8203.vue")
),
},
IVYZ0S0D: {
name: "劳动仲裁信息",
component: defineAsyncComponent(() => import("@/ui/IVYZ0S0D.vue")),
remark: '劳动仲裁信息展示被查询人在失信限高、劳动争议、社会保险、福利待遇、人事争议、仲裁流程及通知函触达等方面的风险信息。',
},
FLXG3D56: {
name: "违约失信",
component: defineAsyncComponent(() => import("@/ui/CFLXG3D56.vue")),
@@ -372,10 +377,10 @@ const featureMap = {
name: "逾期风险综述",
component: defineAsyncComponent(() => import("@/ui/CDWBG8B4D/components/OverdueRiskSection.vue")),
},
// DWBG8B4D_CourtInfo: {
// name: "法院曝光台信息",
// component: defineAsyncComponent(() => import("@/ui/CDWBG8B4D/components/MultCourtInfoSection.vue")),
// },
DWBG8B4D_CourtInfo: {
name: "法院曝光台信息",
component: defineAsyncComponent(() => import("@/ui/CDWBG8B4D/components/MultCourtInfoSection.vue")),
},
DWBG8B4D_LoanEvaluation: {
name: "借贷评估",
component: defineAsyncComponent(() => import("@/ui/CDWBG8B4D/components/LoanEvaluationSection.vue")),
@@ -461,10 +466,10 @@ const featureMap = {
name: "关联风险监督",
component: defineAsyncComponent(() => import("@/ui/DWBG6A2C/components/RiskSupervisionSection.vue")),
},
// DWBG6A2C_CourtRiskInfo: {
// name: "法院风险信息",
// component: defineAsyncComponent(() => import("@/ui/DWBG6A2C/components/CourtRiskInfoSection.vue")),
// },
DWBG6A2C_CourtRiskInfo: {
name: "法院风险信息",
component: defineAsyncComponent(() => import("@/ui/DWBG6A2C/components/CourtRiskInfoSection.vue")),
},
// 贷款风险报告
JRZQ5E9F: {
name: "贷款风险评估",
@@ -499,7 +504,12 @@ const featureMap = {
CJRZQ5E9F_RiskAdvice: {
name: "专业建议",
component: defineAsyncComponent(() => import("@/ui/CJRZQ5E9F/components/RiskAdvice.vue")),
}
},
JRZQ8B3C: {
name: "个人消费等级",
component: defineAsyncComponent(() => import("@/ui/JRZQ8B3C/index.vue")),
},
IVYZ6M8P: { name: "职业资格证书查询", component: defineAsyncComponent(() => import("@/ui/CIVYZ6M8P.vue")) },
};
const maskValue = computed(() => {
@@ -586,12 +596,15 @@ const featureRiskLevels = {
'QYGL3F8E': 5, // 人企关系加强版
'QCXG7A2B': 5, // 名下车辆
'JRZQ09J8': 5, // 收入评估
'IVYZ0S0D': 10, // 劳动仲裁信息
'IVYZ6M8P': 5,
// 🔵 低风险类 - 权重 3
'IVYZ5733': 3, // 婚姻状态
'IVYZ9A2B': 3, // 学历信息
'IVYZ3P9M': 3, // 学历信息查询(实时版)
'JRZQ8B3C': 3, // 个人消费等级
// 📊 复合报告类 - 按子模块动态计算
'DWBG8B4D': 0, // 谛听多维报告(由子模块计算)
'DWBG6A2C': 0, // 司南报告(由子模块计算)
@@ -607,6 +620,7 @@ const featureRiskLevels = {
'DWBG8B4D_LeasingRisk': 6,
'DWBG8B4D_RiskSupervision': 8,
'DWBG8B4D_RiskWarningTab': 9,
'DWBG8B4D_CourtInfo': 9,
// 司南报告子模块
'DWBG6A2C_StandLiveInfo': 4,
@@ -621,6 +635,7 @@ const featureRiskLevels = {
'DWBG6A2C_CreditDetail': 5,
'DWBG6A2C_RentalBehavior': 5,
'DWBG6A2C_RiskSupervision': 8,
'DWBG6A2C_CourtRiskInfo': 14,
// 贷款风险评估子模块
'CJRZQ5E9F_RiskOverview': 8,
@@ -833,7 +848,7 @@ watch([reportData, componentRiskScores], () => {
</div>
<div>
<a class="text-blue-500" href="https://beian.miit.gov.cn">
琼ICP备2024048057-2
琼ICP备2024038584-13
</a>
</div>
</div>
@@ -862,6 +877,7 @@ watch([reportData, componentRiskScores], () => {
@apply p-3;
box-shadow: 0px 0px 24px 0px #3F3F3F0F;
}
/* 梯形背景图片样式 */
.trapezoid-bg-image {
background-size: contain;

View File

@@ -1,8 +1,11 @@
<script setup>
import { ref, computed, nextTick } from "vue";
import { showToast } from "vant";
import { useDialogStore } from "@/stores/dialogStore";
import { useAliyunCaptcha } from "@/composables/useAliyunCaptcha";
const emit = defineEmits(['bind-success'])
const { runWithCaptcha } = useAliyunCaptcha();
const router = useRouter();
const dialogStore = useDialogStore();
const agentStore = useAgentStore();
@@ -36,25 +39,26 @@ async function sendVerificationCode() {
showToast({ message: "请输入有效的手机号" });
return;
}
const { data, error } = await useApiFetch("auth/sendSms")
.post({ mobile: phoneNumber.value, actionType: "bindMobile" })
.json();
if (data.value && !error.value) {
if (data.value.code === 200) {
showToast({ message: "获取成功" });
startCountdown();
// 聚焦到验证码输入框
nextTick(() => {
const verificationCodeInput = document.getElementById('verificationCode');
if (verificationCodeInput) {
verificationCodeInput.focus();
}
});
} else {
showToast(data.value.msg);
await runWithCaptcha(
(captchaVerifyParam) =>
useApiFetch("auth/sendSms")
.post({ mobile: phoneNumber.value, actionType: "bindMobile", captchaVerifyParam })
.json(),
(res) => {
if (res && res.code === 200) {
showToast({ message: "获取成功" });
startCountdown();
nextTick(() => {
const verificationCodeInput = document.getElementById('verificationCode');
if (verificationCodeInput) {
verificationCodeInput.focus();
}
});
} else {
showToast(res?.msg || "发送失败");
}
}
}
);
}
function startCountdown() {

View File

@@ -35,7 +35,8 @@
<input v-model="formData.mobile" id="mobile" type="tel" placeholder="请输入手机号"
class="flex-1 border-none outline-none" @click="handleInputClick" />
</div>
<div class="flex items-center py-3 border-b border-gray-100">
<!-- 小微企业(companyinfo)暂不展示验证码 -->
<div v-if="needVerificationCode" class="flex items-center py-3 border-b border-gray-100">
<label for="verificationCode" class="w-20 font-medium text-gray-700">验证码</label>
<input v-model="formData.verificationCode" id="verificationCode" placeholder="请输入验证码"
maxlength="6" class="flex-1 border-none outline-none" @click="handleInputClick" />
@@ -282,6 +283,7 @@ import { useRoute, useRouter } from "vue-router";
import { useUserStore } from "@/stores/userStore";
import { useDialogStore } from "@/stores/dialogStore";
import { useEnv } from "@/composables/useEnv";
import { useAliyunCaptcha } from "@/composables/useAliyunCaptcha";
import { showConfirmDialog } from "vant";
import Payment from "@/components/Payment.vue";
@@ -351,6 +353,7 @@ const router = useRouter();
const dialogStore = useDialogStore();
const userStore = useUserStore();
const { isWeChat } = useEnv();
const { runWithCaptcha } = useAliyunCaptcha();
// 响应式数据
const showPayment = ref(false);
@@ -380,6 +383,9 @@ const isPhoneNumberValid = computed(() => {
const isIdCardValid = computed(() => /^\d{17}[\dX]$/i.test(formData.idCard));
// 小微企业(companyinfo)暂不需要验证码
const needVerificationCode = computed(() => props.feature !== 'companyinfo');
const isLoggedIn = computed(() => userStore.isLoggedIn);
const buttonText = computed(() => {
@@ -566,12 +572,13 @@ function handleSubmit() {
(v) => isIdCardValid.value,
"请输入有效的身份证号码"
) ||
!validateField(
"verificationCode",
formData.verificationCode,
(v) => v,
"请输入验证码"
)
(needVerificationCode.value &&
!validateField(
"verificationCode",
formData.verificationCode,
(v) => v,
"请输入验证码"
))
) {
return;
}
@@ -589,9 +596,11 @@ async function submitRequest() {
const req = {
name: formData.name,
id_card: formData.idCard,
mobile: formData.mobile,
code: formData.verificationCode
mobile: formData.mobile
};
if (needVerificationCode.value) {
req.code = formData.verificationCode;
}
const reqStr = JSON.stringify(req);
const encodeData = aesEncrypt(reqStr, "ff83609b2b24fc73196aac3d3dfb874f");
@@ -630,23 +639,26 @@ async function sendVerificationCode() {
showToast({ message: "请输入有效的手机号" });
return;
}
const { data, error } = await useApiFetch("/auth/sendSms")
.post({ mobile: formData.mobile, actionType: "query" })
.json();
if (!error.value && data.value.code === 200) {
showToast({ message: "验证码发送成功", type: "success" });
startCountdown();
nextTick(() => {
const verificationCodeInput = document.getElementById('verificationCode');
if (verificationCodeInput) {
verificationCodeInput.focus();
await runWithCaptcha(
(captchaVerifyParam) =>
useApiFetch("/auth/sendSms")
.post({ mobile: formData.mobile, actionType: "query", captchaVerifyParam })
.json(),
(res) => {
if (res.code === 200) {
showToast({ message: "验证码发送成功", type: "success" });
startCountdown();
nextTick(() => {
const verificationCodeInput = document.getElementById('verificationCode');
if (verificationCodeInput) {
verificationCodeInput.focus();
}
});
} else {
showToast({ message: res.msg || "验证码发送失败,请重试" });
}
});
} else {
showToast({ message: "验证码发送失败,请重试" });
}
}
);
}
let timer = null;
@@ -776,4 +788,4 @@ button:active {
border-radius: 50%;
margin-right: 8px;
}
</style>
</style>

View File

@@ -5,6 +5,7 @@ import { showToast } from 'vant'
import ClickCaptcha from '@/components/ClickCaptcha.vue'
import { useDialogStore } from '@/stores/dialogStore'
import { useUserStore } from '@/stores/userStore'
import { useAliyunCaptcha } from "@/composables/useAliyunCaptcha";
const emit = defineEmits(['login-success'])
const dialogStore = useDialogStore()
@@ -19,6 +20,8 @@ const isCountingDown = ref(false)
const countdown = ref(60)
let timer = null
const { runWithCaptcha } = useAliyunCaptcha();
// 验证组件状态
const showCaptcha = ref(false)
const captchaVerified = ref(false)
@@ -47,25 +50,26 @@ async function sendVerificationCode() {
showToast({ message: "请输入有效的手机号" });
return
}
const { data, error } = await useApiFetch('auth/sendSms')
.post({ mobile: phoneNumber.value, actionType: 'login' })
.json()
if (data.value && !error.value) {
if (data.value.code === 200) {
showToast({ message: "获取成功" });
startCountdown()
// 聚焦到验证码输入框
nextTick(() => {
const verificationCodeInput = document.getElementById('verificationCode');
if (verificationCodeInput) {
verificationCodeInput.focus();
}
});
} else {
showToast(data.value.msg)
await runWithCaptcha(
(captchaVerifyParam) =>
useApiFetch('auth/sendSms')
.post({ mobile: phoneNumber.value, actionType: 'login', captchaVerifyParam })
.json(),
(res) => {
if (res.code === 200) {
showToast({ message: "获取成功" });
startCountdown();
nextTick(() => {
const verificationCodeInput = document.getElementById('verificationCode');
if (verificationCodeInput) {
verificationCodeInput.focus();
}
});
} else {
showToast({ message: res.msg || "发送失败" });
}
}
}
);
}
function startCountdown() {

View File

@@ -1,11 +1,14 @@
<script setup>
import { ref, computed } from "vue";
import { useDialogStore } from "@/stores/dialogStore";
import { showToast } from "vant";
import { useAliyunCaptcha } from "@/composables/useAliyunCaptcha";
const router = useRouter();
const dialogStore = useDialogStore();
const agentStore = useAgentStore();
const userStore = useUserStore();
import { showToast } from "vant";
const { runWithCaptcha } = useAliyunCaptcha();
// 表单数据
const realName = ref("");
const idCard = ref("");
@@ -47,25 +50,27 @@ const canSubmit = computed(() => {
);
});
// 发送验证码
// 发送验证码(先通过图形验证滑块再请求接口)
async function sendVerificationCode() {
if (isCountingDown.value || !isPhoneNumberValid.value) return;
if (!isPhoneNumberValid.value) {
showToast({ message: "请输入有效的手机号" });
return;
}
const { data, error } = await useApiFetch("auth/sendSms")
.post({ mobile: phoneNumber.value, actionType: "realName" })
.json();
if (data.value && !error.value) {
if (data.value.code === 200) {
showToast({ message: "获取成功" });
startCountdown();
} else {
showToast(data.value.msg);
await runWithCaptcha(
(captchaVerifyParam) =>
useApiFetch("auth/sendSms")
.post({ mobile: phoneNumber.value, actionType: "realName", captchaVerifyParam })
.json(),
(res) => {
if (res && res.code === 200) {
showToast({ message: "获取成功" });
startCountdown();
} else {
showToast(res?.msg || "发送失败");
}
}
}
);
}
function startCountdown() {

View File

@@ -0,0 +1,153 @@
import { showToast, showLoadingToast, closeToast } from "vant";
import useApiFetch from "@/composables/useApiFetch";
const ALIYUN_CAPTCHA_SCENE_ID = "wynt39to";
const ENABLE_ENCRYPTED = false;
let captchaInitialised = false;
let captchaReadyPromise = null;
let captchaReadyResolve = null;
async function ensureCaptchaInit() {
if (captchaInitialised || typeof window === "undefined") return;
if (typeof window.initAliyunCaptcha !== "function") return;
captchaInitialised = true;
window.captcha = null;
window.__lastBizResponse = null;
window.__onCaptchaBizSuccess = null;
captchaReadyPromise = new Promise((resolve) => {
captchaReadyResolve = resolve;
});
if (!ENABLE_ENCRYPTED) {
window.initAliyunCaptcha({
SceneId: ALIYUN_CAPTCHA_SCENE_ID,
mode: "popup",
element: "#captcha-element",
getInstance(instance) {
window.captcha = instance;
if (typeof captchaReadyResolve === "function") {
captchaReadyResolve();
captchaReadyResolve = null;
}
},
captchaVerifyCallback(param) {
return typeof window.__captchaVerifyCallback === "function"
? window.__captchaVerifyCallback(param)
: Promise.resolve({
captchaResult: false,
bizResult: false,
});
},
onBizResultCallback(bizResult) {
if (typeof window.__onBizResultCallback === "function") {
window.__onBizResultCallback(bizResult);
}
window.__lastBizResponse = null;
window.__onCaptchaBizSuccess = null;
},
slideStyle: { width: 360, height: 40 },
language: "cn",
});
return;
}
const { data, error } = await useApiFetch("/captcha/encryptedSceneId").post().json();
const resp = data?.value;
const encryptedSceneId = resp?.data?.encryptedSceneId;
if (error?.value || !encryptedSceneId) {
showToast({ message: "获取验证码参数失败,请稍后重试" });
captchaInitialised = false;
captchaReadyPromise = null;
captchaReadyResolve = null;
return;
}
window.initAliyunCaptcha({
SceneId: ALIYUN_CAPTCHA_SCENE_ID,
EncryptedSceneId: encryptedSceneId,
mode: "popup",
element: "#captcha-element",
getInstance(instance) {
window.captcha = instance;
if (typeof captchaReadyResolve === "function") {
captchaReadyResolve();
captchaReadyResolve = null;
}
},
captchaVerifyCallback(param) {
return typeof window.__captchaVerifyCallback === "function"
? window.__captchaVerifyCallback(param)
: Promise.resolve({ captchaResult: false, bizResult: false });
},
onBizResultCallback(bizResult) {
if (typeof window.__onBizResultCallback === "function") {
window.__onBizResultCallback(bizResult);
}
window.__lastBizResponse = null;
window.__onCaptchaBizSuccess = null;
},
slideStyle: { width: 360, height: 40 },
language: "cn",
});
}
export function useAliyunCaptcha() {
async function runWithCaptcha(bizVerify, onSuccess) {
if (typeof window === "undefined") {
showToast({ message: "验证码仅支持浏览器环境" });
return;
}
const loading = showLoadingToast({
message: "安全验证加载中...",
forbidClick: true,
duration: 0,
loadingType: "spinner",
});
try {
window.__captchaVerifyCallback = async (captchaVerifyParam) => {
window.__lastBizResponse = null;
const { data, error } = await bizVerify(captchaVerifyParam);
const result = data?.value ?? data;
if (error?.value || !result) {
return { captchaResult: false, bizResult: false };
}
window.__lastBizResponse = result;
const captchaOk = result.captchaVerifyResult !== false;
const bizOk = result.code === 200;
return { captchaResult: captchaOk, bizResult: bizOk };
};
window.__onBizResultCallback = (bizResult) => {
if (
bizResult === true &&
window.__lastBizResponse &&
typeof window.__onCaptchaBizSuccess === "function"
) {
window.__onCaptchaBizSuccess(window.__lastBizResponse);
}
};
await ensureCaptchaInit();
if (captchaReadyPromise) {
await captchaReadyPromise;
captchaReadyPromise = null;
}
if (!window.captcha) {
showToast({ message: "验证码未加载,请刷新页面重试" });
return;
}
window.__onCaptchaBizSuccess = onSuccess;
window.captcha.show();
} finally {
closeToast();
}
}
return { runWithCaptcha };
}
export default useAliyunCaptcha;

View File

@@ -6,10 +6,10 @@ export function useSEO() {
// 默认SEO信息
const defaultSEO = {
title: '天远数据|大数据风险报告查询与代理平台,支持个人和企业多场景风控应用',
description: '天远数据,专业大数据风险报告查询与代理平台,支持个人信用查询、小微企业风控、贷前风险背调等多场景报告应用,免费开通代理权限,助力高效识别信用与风险。',
keywords: '大数据风险报告查询、大数据风险评估、大数据分析报告、个人大数据风险查询、小微企业风险、贷前风险背调、代理管理平台、免费开通代理、风险管控平台、信用风险分析、企业风险报告、贷前信用审核、失信人名单查询、被执行人信息、信用黑名单查询',
url: 'https://www.zhinengcha.cn'
title: '天远数据_背调报告代理加盟_个人风控系统搭建_合规数据服务平台',
description: '天远数据提供低成本的风控系统搭建服务。一键开通独立代理后台,支持自定义品牌与报告价格。平台基于公开合法数据,支持一键生成综合素质报告。诚邀行业合作伙伴,共享数字化风控红利,助力流量合规变现。',
keywords: '天远数据,职场背调,风险核验报告,家政背景核验,第三方背调,企业风控服务,数据报告分销',
url: 'https://www.tianyuandb.com'
}
// 页面SEO配置
@@ -131,7 +131,7 @@ export function useSEO() {
"mainEntity": {
"@type": "Organization",
"name": "天远数据",
"url": "https://www.zhinengcha.cn/",
"url": "https://www.tianyuandb.com/",
"description": "专业大数据风险报告查询与代理平台,支持个人和企业多场景风控应用"
}
}
@@ -146,19 +146,61 @@ export function useSEO() {
const updateSEOByRoute = () => {
const routeConfigs = {
'/': {
title: '天远数据|大数据风险报告查询与代理平台,支持个人和企业多场景风控应用',
description: '天远数据,专业大数据风险报告查询与代理平台,支持个人信用查询、小微企业风控、贷前风险背调等多场景报告应用,免费开通代理权限,助力高效识别信用与风险。',
keywords: '大数据风险报告查询、大数据风险评估、大数据分析报告、个人大数据风险查询、小微企业风险、贷前风险背调、代理管理平台、免费开通代理、风险管控平台、信用风险分析、企业风险报告、贷前信用审核、失信人名单查询、被执行人信息、信用黑名单查询'
title: '天远数据_背调报告代理加盟_个人风控系统搭建_合规数据服务平台',
description: '天远数据提供低成本的风控系统搭建服务。一键开通独立代理后台,支持自定义品牌与报告价格。平台基于公开合法数据,支持一键生成综合素质报告。诚邀行业合作伙伴,共享数字化风控红利,助力流量合规变现。',
keywords: '天远数据,职场背调,风险核验报告,家政背景核验,第三方背调,企业风控服务,数据报告分销'
},
'/historyQuery': {
title: '我的报告_历史查询记录_天远数据',
description: '天远数据用户个人中心,查看及下载历史查询报告。',
keywords: '我的报告,历史记录,天远数据'
},
// 个人查询
'/inquire/personalData': {
title: '个人综合风险报告_个人履约评分_多维数据检测_天远数据',
description: '天远数据提供个人全维信用画像扫描。一键检测司法涉诉记录、历史履约情况、号码状态异常检测及个人消费等级。数据同步权威行业系统,采用银行级加密技术,保障信息安全,助您全面了解自身信用状况。',
keywords: '个人风险评估,信用状况评估,综合履约能力,司法风险自查,风险标签检测'
},
// 企业查询
'/inquire/companyinfo': {
title: '企业信用风险评估_工商经营异常与司法诉讼核查_天远数据',
description: '天远数据提供全维度的企业商业画像。基于官方公示数据,核验目标企业的工商变更、经营异常名录、行政处罚、投融资背景及关联风险。深度评估商业履约能力,透视合作方真实状况,规避合同陷阱。',
keywords: '企业信用画像,公司经营风险,工商异常名录,企业履约评估,商业背景核验'
},
// 贷前风险
'/inquire/preloanbackgroundcheck': {
title: '综合履约评分检测_多平台履约记录分析_个人财务履约报告_天远数据',
description: '天远数据提供专业的个人履约健康度体检服务。基于多维大数据分析,检测您的综合评分波动、历史履约记录及潜在的风险标签。本服务旨在帮助用户优化个人数据画像,提升信用管理意识,不提供任何信贷金融服务。',
keywords: '综合评分检测,多重履约压力分析,履约能力评估,综合评分优化,个人数据画像'
},
// 婚恋风险
'/inquire/marriage': {
title: '婚恋对象背景了解_司法诉讼与不良记录筛查_婚前风险评估_天远数据',
description: '天远数据提供专业的婚恋风险评估工具。基于合法的公开司法数据,深度排查法律诉讼记录、失信被执行信息及潜在的履约风险。数据来源合规,仅供个人防范参考,拒绝隐私泄露,为幸福保驾护航。',
keywords: '婚恋背景核验,婚前风险了解,司法记录核验,个人履约风险,背景核实'
},
// 入职背调
'/inquire/backgroundcheck': {
title: '入职背景核验_候选人履历核验_职场信用与竞业排查_天远数据',
description: '天远数据职场风险报告助力企业构建防御体系。基于司法级大数据,一键筛查候选人司法涉诉记录、学历信息、商业利益冲突、历史违约记录及不良社会风险。官方数据,客观预警入职风险,辅助HR高效决策。',
keywords: '入职风险评估,候选人背景核验,简历真伪辨别,竞业限制核验,职场信用报告,员工风险预警'
},
// 家政风险
'/inquire/homeservice': {
title: '家政人员背景核实_保姆月嫂司法风险筛查_用工安全评估_天远数据',
description: '天远数据家政风险报告,为家庭用人安全把关。通过合法大数据,快速筛查家政人员的司法诉讼、失信被执行记录及社会不良风险标签。有效识别潜在隐患,预防雇佣纠纷,让您找保姆、请月嫂更放心。',
keywords: '保姆背景核验,月嫂风险筛查,家政人员核验,育儿嫂背景核实,雇佣风险防范'
},
'/agent': {
title: '天远数据代理 - 免费开通代理权限 | 大数据风险报告代理',
description: '天远数据代理平台,免费开通代理权限,享受大数据风险报告查询服务代理收益。专业的大数据风险报告、婚姻查询、个人信用评估等服务的代理合作。',
keywords: '天远数据代理, 免费代理, 大数据风险报告代理, 代理权限, 代理收益'
},
'/help': {
title: '帮助中心 - 天远数据使用指南 | 常见问题解答',
description: '天远数据帮助中心提供详细的使用指南、常见问题解答、操作教程等,帮助用户更好地使用大数据风险报告查询服务。',
keywords: '天远数据帮助, 使用指南, 常见问题, 操作教程, 客服支持'
title: '天远数据帮助中心_代理操作指南_推广收益计算常见问题',
description: '天远数据帮助中心提供全方位的代理操作指引。包含如何成为代理、推广报告生成教程、收益与成本计算规则及推广效率提升方案。',
keywords: '天远数据教程,代理新手指南,推广收益计算,报告推广'
},
'/help/guide': {
title: '使用指南 - 天远数据操作教程 | 功能说明',
@@ -174,15 +216,25 @@ export function useSEO() {
title: '客服中心 - 天远数据在线客服 | 技术支持',
description: '天远数据客服中心,提供在线客服支持、技术咨询、问题反馈等服务,确保用户获得及时有效的帮助。',
keywords: '客服中心, 在线客服, 技术支持, 问题反馈, 天远数据客服'
}
},
'/agent/promote': {
title: '生成推广码_自定义价格_0成本代理查价系统_天远数据',
description: '天远数据推广中心支持代理自主设置报告价格。在此选择报告类型,自定义客户查询价,0成本生成专属推广链接或二维码。差价即为利润,实现个人风险报告的私域流量变现。',
keywords: '推广码生成,自定义查价系统,代理收益工具,代理推广链接,流量变现平台,天远数据推广'
},
'/agent/invitation': {
title: '邀请合作伙伴_发展代理享收益_推广返利计划_天远数据',
description: '天远数据推出合伙人邀请奖励机制。邀请好友注册成为合作伙伴,每单不仅可获得推广收益,还可叠加合作伙伴活跃奖励及定价差额收益。打造专属推广团队,实现收益持续增长。',
keywords: '渠道合作伙伴,商业收益管理,流量合规变现,业务推广系统,代理后台'
},
}
const currentPath = route?.path || '/'
const config = routeConfigs[currentPath] || defaultSEO
const baseUrl = typeof window !== 'undefined' ? window.location.origin : defaultSEO.url
updateSEO({
...config,
url: `https://www.zhinengcha.cn${currentPath}`
url: `${baseUrl}${currentPath}`
})
}

View File

@@ -142,7 +142,7 @@ export function useWeixinShare() {
}
const defaultConfig = {
title: "天远数据|大数据风险报告查询与代理平台,支持个人和企业多场景风控应用",
title: "天远数据_背调报告代理加盟_个人风控系统搭建_合规数据服务平台",
desc: "提供个人信用评估、人事背调、信贷风控、企业风险监测等服务",
link: window.location.href.split("#")[0], // 获取当前页面URL不包括hash
imgUrl: "https://www.tianyuandb.com/logo.jpg",
@@ -215,7 +215,7 @@ export function useWeixinShare() {
};
} else {
shareConfig = {
title: "天远数据|大数据风险报告查询与代理平台,支持个人和企业多场景风控应用",
title: "天远数据_背调报告代理加盟_个人风控系统搭建_合规数据服务平台",
desc: "提供个人信用评估、人事背调、信贷风控、企业风险监测等服务",
link: window.location.href.split("#")[0],
imgUrl: "https://www.tianyuandb.com/logo.jpg",

View File

@@ -32,7 +32,7 @@
</div>
<div>
<a class="text-blue-500" href="https://beian.miit.gov.cn">
琼ICP备2024048057-2
琼ICP备2024038584-13
</a>
</div>
</div>

View File

@@ -149,12 +149,12 @@ const router = createRouter({
component: () => import('@/views/AgentServiceAgreement.vue'),
meta: { title: '信息技术服务合同' },
},
{
path: '/inquire/marriage',
name: 'inquire-marriage',
component: () => import('@/views/Maintenance.vue'),
meta: { title: '维护通知' },
},
// {
// path: '/inquire/marriage',
// name: 'inquire-marriage',
// component: () => import('@/views/Maintenance.vue'),
// meta: { title: '维护通知' },
// },
{
path: '/inquire/:feature',
name: 'inquire',
@@ -458,7 +458,7 @@ router.afterEach((to) => {
const seoConfig = {
title: `${to.meta.title} - 天远数据`,
description: `天远数据${to.meta.title}页面,提供专业的大数据风险管控服务。`,
url: `https://www.zhinengcha.cn${to.path}`
url: `https://www.tianyuandb.com${to.path}`
}
updateSEO(seoConfig)
}

Binary file not shown.

104
src/ui/CIVYZ6M8P.vue Normal file
View File

@@ -0,0 +1,104 @@
<template>
<div class="card">
<div class="header-box">
<h3 class="header-title">职业资格证书查询</h3>
<p class="header-desc">展示查询到的职业资格考试及等级信息</p>
</div>
<div v-if="hasData" class="result-section">
<div class="info-row">
<span class="info-label">考试名称</span>
<span class="info-value">{{ examName || '-' }}</span>
</div>
<div class="info-row">
<span class="info-label">级别</span>
<span class="info-value">{{ level || '-' }}</span>
</div>
<div class="info-row">
<span class="info-label">专业</span>
<span class="info-value">{{ major || '-' }}</span>
</div>
<div class="info-row">
<span class="info-label">通过日期</span>
<span class="info-value">{{ passDate || '-' }}</span>
</div>
</div>
<div v-if="hasData && !examName && !major && !level && !passDate" class="empty-tip">
已返回结果但格式不在预期范围内请联系技术支持查看原始数据
</div>
<div v-if="!hasData" class="empty-tip">暂无查询结果</div>
</div>
</template>
<script setup>
import { computed } from 'vue';
const props = defineProps({
data: { type: Object, default: () => ({}) },
params: { type: Object, default: () => ({}) },
apiId: { type: String, default: '' },
index: { type: Number, default: 0 },
notifyRiskStatus: { type: Function, default: () => { } },
});
const hasData = computed(() => props.data && Object.keys(props.data).length > 0);
// ED0001: 考试名称, ED0002: 级别, ED0003: 专业, ED0004: 通过年月
const examName = computed(() => props.data?.ED0001 || '');
const level = computed(() => props.data?.ED0002 || '');
const major = computed(() => props.data?.ED0003 || '');
const passDate = computed(() => props.data?.ED0004 || '');
</script>
<style scoped>
.card {
padding: 1rem;
}
.header-box {
margin-bottom: 1rem;
}
.header-title {
font-size: 1.125rem;
font-weight: 600;
}
.header-desc {
font-size: 0.875rem;
color: #6b7280;
margin-top: 0.25rem;
}
.result-section {
background: #f9fafb;
padding: 0.75rem 0.875rem;
border-radius: 0.75rem;
}
.info-row {
display: flex;
justify-content: space-between;
font-size: 0.875rem;
padding: 0.25rem 0;
}
.info-label {
color: #6b7280;
}
.info-value {
color: #111827;
margin-left: 1rem;
text-align: right;
}
.empty-tip {
color: #9ca3af;
font-size: 0.875rem;
padding: 1rem 0;
text-align: center;
}
</style>

524
src/ui/IVYZ0S0D.vue Normal file
View File

@@ -0,0 +1,524 @@
<script setup>
import { computed, ref } from 'vue';
import { useRiskNotifier } from '@/composables/useRiskNotifier';
const props = defineProps({
data: { type: Object, default: () => ({}) },
params: { type: Object, default: () => ({}) },
apiId: { type: String, default: '' },
index: { type: Number, default: 0 },
notifyRiskStatus: { type: Function, default: () => { } },
});
const periodTab = ref('threeYears'); // 近三年 | 近五年
// 支持 data 或 data.result接口返回的 result 对象)
const result = computed(() => props.data?.result ?? props.data ?? {});
const getStatusText = (value) => {
if (value === 1) return '未命中';
if (value === 2) return '命中';
return '—';
};
// 获取通知函期间描述文本(支持数字或字符串如 "2"
const getNoticeLetterPeriodText = (period) => {
const p = Number(period);
const periodMap = { 0: '没有被发送通知函', 1: '近2年内', 2: '2-4年', 3: '5年以上' };
return periodMap[p] ?? '—';
};
// 检查是否至少有一个数据类别有内容
const hasAnyData = computed(() => {
const r = result.value;
return Object.keys(r).length > 0;
});
// 汇总数据 - 按分类分组 { key, title, rows }
const summaryGroups = computed(() => {
const groups = [];
const basic = result.value.basic_info;
if (basic?.risk_flag !== undefined) {
groups.push({ key: 'basic', title: '基础风险', rows: [{ label: '该人员是否有风险', value: basic.risk_flag }] });
}
const dishonesty = result.value.dishonesty?.dishonesty;
const highConsumption = result.value.high_consumption?.high_consumption;
if (dishonesty !== undefined || highConsumption !== undefined) {
const rows = [];
if (dishonesty !== undefined) rows.push({ label: '失信人员风险', value: dishonesty });
if (highConsumption !== undefined) rows.push({ label: '限制高消费人员风险', value: highConsumption });
groups.push({ key: 'credit', title: '失信限高', rows });
}
const labor = result.value.labor_disputes;
if (labor) {
const items = [['劳动争议', labor.labor_disputes], ['劳动合同纠纷', labor.labor_contract], ['劳动关系纠纷', labor.labor_relation], ['追索劳动报酬纠纷', labor.wage_claim], ['经济补偿金纠纷', labor.compensation], ['集体合同纠纷', labor.collective_contract], ['劳务派遣合同纠纷', labor.dispatch_contract], ['非全日制用工纠纷', labor.part_time], ['竞业限制纠纷', labor.non_compete]];
const rows = items.filter((item) => item[1] !== undefined).map((item) => ({ label: item[0], value: item[1] }));
if (rows.length) groups.push({ key: 'labor', title: '劳动争议', rows });
}
const social = result.value.social_insurance;
if (social) {
const items = [['社会保险纠纷', social.social_insurance], ['养老保险待遇纠纷', social.pension], ['工伤保险待遇纠纷', social.injury_insurance], ['医疗保险待遇纠纷', social.medical_insurance], ['生育保险待遇纠纷', social.maternity_insurance], ['商业保险待遇纠纷', social.commercial_insurance]];
const rows = items.filter((item) => item[1] !== undefined).map((item) => ({ label: item[0], value: item[1] }));
if (rows.length) groups.push({ key: 'social', title: '社会保险', rows });
}
if (result.value.welfare_disputes?.welfare !== undefined) {
groups.push({ key: 'welfare', title: '福利待遇', rows: [{ label: '福利待遇纠纷', value: result.value.welfare_disputes.welfare }] });
}
const personnel = result.value.personnel_disputes;
if (personnel) {
const items = [['人事争议类纠纷', personnel.personnel_dispute], ['辞职争议纠纷', personnel.resignation_dispute], ['辞退争议纠纷', personnel.dismissal_dispute], ['聘用合同争议纠纷', personnel.employment_contract]];
const rows = items.filter((item) => item[1] !== undefined).map((item) => ({ label: item[0], value: item[1] }));
if (rows.length) groups.push({ key: 'personnel', title: '人事争议', rows });
}
const arb = result.value.arbitration;
if (arb && (arb.arbitration_confirmation !== undefined || arb.arbitration_revocation !== undefined)) {
const rows = [];
if (arb.arbitration_confirmation !== undefined) rows.push({ label: '申请仲裁确认', value: arb.arbitration_confirmation });
if (arb.arbitration_revocation !== undefined) rows.push({ label: '撤销仲裁裁决', value: arb.arbitration_revocation });
groups.push({ key: 'arbitration', title: '仲裁流程', rows });
}
const notice = result.value.notice_letter;
if (notice?.notice_letter !== undefined) {
const rows = [{ label: '通知函触达', value: notice.notice_letter }];
if (notice.notice_letter_period !== undefined && notice.notice_letter === 2) rows.push({ label: '通知函发送时间', value: null, period: notice.notice_letter_period });
groups.push({ key: 'notice', title: '通知函触达', rows });
}
return groups;
});
const summaryRows = computed(() => summaryGroups.value.flatMap((g) => g.rows));
// 真正的风险项(文档:失信限高、劳动争议、社会保险、福利待遇、人事争议、仲裁流程、通知函触达)
// 排除 basic_info.risk_flag汇总结论和 notice_letter_period非风险项
const riskItemRows = computed(() =>
summaryGroups.value
.filter((g) => g.key !== 'basic')
.flatMap((g) => g.rows)
.filter((r) => r.value === 1 || r.value === 2)
);
// 近三年/近五年 - 按分类分组
const periodGroups = computed(() => {
const suffix = periodTab.value === 'threeYears' ? '_3y' : '_5y';
const groups = [];
const labor = result.value.labor_disputes;
if (labor) {
const keys = ['labor_disputes', 'labor_relation', 'wage_claim', 'compensation', 'collective_contract', 'dispatch_contract', 'part_time', 'non_compete'];
const labels = ['劳动争议', '劳动关系', '追索劳动报酬', '经济补偿金', '集体合同', '劳务派遣', '非全日制用工', '竞业限制'];
const rows = keys.map((k, i) => ({ label: labels[i], value: labor[k + suffix] })).filter((r) => r.value === 2).map((r) => ({ label: r.label, value: 2 }));
if (rows.length) groups.push({ key: 'labor', title: '劳动争议', rows });
}
const social = result.value.social_insurance;
if (social) {
const keys = ['pension', 'injury_insurance', 'medical_insurance', 'maternity_insurance', 'commercial_insurance'];
const labels = ['养老保险', '工伤保险', '医疗保险', '生育保险', '商业保险'];
const rows = keys.map((k, i) => ({ label: labels[i], value: social[k + suffix] })).filter((r) => r.value === 2).map((r) => ({ label: r.label, value: 2 }));
if (rows.length) groups.push({ key: 'social', title: '社会保险', rows });
}
const personnel = result.value.personnel_disputes;
if (personnel) {
const keys = ['resignation_dispute', 'dismissal_dispute', 'employment_contract'];
const labels = ['辞职争议', '辞退争议', '聘用合同'];
const rows = keys.map((k, i) => ({ label: labels[i], value: personnel[k + suffix] })).filter((r) => r.value === 2).map((r) => ({ label: r.label, value: 2 }));
if (rows.length) groups.push({ key: 'personnel', title: '人事争议', rows });
}
const arb = result.value.arbitration;
if (arb) {
const rows = [];
if (arb[`arbitration_confirmation${suffix}`] === 2) rows.push({ label: '申请仲裁确认', value: 2 });
if (arb[`arbitration_revocation${suffix}`] === 2) rows.push({ label: '撤销仲裁裁决', value: 2 });
if (rows.length) groups.push({ key: 'arbitration', title: '仲裁流程', rows });
}
return groups;
});
const periodRows = computed(() => periodGroups.value.flatMap((g) => g.rows));
// 用于 riskScore需要近三年+近五年全部数据
const recentThreeYearsRows = computed(() => {
const r = result.value;
const rows = [];
const labor = r.labor_disputes;
if (labor) {
[['labor_disputes_3y'], ['labor_relation_3y'], ['wage_claim_3y'], ['compensation_3y'], ['collective_contract_3y'], ['dispatch_contract_3y'], ['part_time_3y'], ['non_compete_3y']].forEach(([k]) => { if (labor[k] === 2) rows.push({ value: 2 }); });
}
const social = r.social_insurance;
if (social) {
['pension_3y', 'injury_insurance_3y', 'medical_insurance_3y', 'maternity_insurance_3y', 'commercial_insurance_3y'].forEach((k) => { if (social[k] === 2) rows.push({ value: 2 }); });
}
const personnel = r.personnel_disputes;
if (personnel) {
['resignation_dispute_3y', 'dismissal_dispute_3y', 'employment_contract_3y'].forEach((k) => { if (personnel[k] === 2) rows.push({ value: 2 }); });
}
const arb = r.arbitration;
if (arb) {
if (arb.arbitration_confirmation_3y === 2) rows.push({ value: 2 });
if (arb.arbitration_revocation_3y === 2) rows.push({ value: 2 });
}
return rows;
});
const recentFiveYearsRows = computed(() => {
const r = result.value;
const rows = [];
const labor = r.labor_disputes;
if (labor) {
[['labor_disputes_5y'], ['labor_relation_5y'], ['wage_claim_5y'], ['compensation_5y'], ['collective_contract_5y'], ['dispatch_contract_5y'], ['part_time_5y'], ['non_compete_5y']].forEach(([k]) => { if (labor[k] === 2) rows.push({ value: 2 }); });
}
const social = r.social_insurance;
if (social) {
['pension_5y', 'injury_insurance_5y', 'medical_insurance_5y', 'maternity_insurance_5y', 'commercial_insurance_5y'].forEach((k) => { if (social[k] === 2) rows.push({ value: 2 }); });
}
const personnel = r.personnel_disputes;
if (personnel) {
['resignation_dispute_5y', 'dismissal_dispute_5y', 'employment_contract_5y'].forEach((k) => { if (personnel[k] === 2) rows.push({ value: 2 }); });
}
const arb = r.arbitration;
if (arb) {
if (arb.arbitration_confirmation_5y === 2) rows.push({ value: 2 });
if (arb.arbitration_revocation_5y === 2) rows.push({ value: 2 });
}
return rows;
});
// 头部风险总结:风险类型、建议、命中统计(仅真正的风险项)
const riskSummary = computed(() => {
const basic = result.value.basic_info;
const hasRisk = basic?.risk_flag === 2;
// 真正的风险项:总项数、命中数(文档:失信限高、劳动争议、社会保险、福利待遇、人事争议、仲裁流程、通知函触达)
const totalItems = riskItemRows.value.length;
const hitItems = riskItemRows.value.filter((r) => r.value === 2).length;
// 命中的风险分类(汇总中 value=2 的 group
const riskCategories = summaryGroups.value
.filter((g) => g.key !== 'basic' && g.rows.some((r) => r.value === 2))
.map((g) => g.title);
// 精简建议(取主要类型合并为一句)
const suggestionMap = {
'失信限高': '征信修复与限高事项',
'劳动争议': '劳动纠纷与薪酬离职',
'社会保险': '社保缴纳与补缴',
'福利待遇': '福利待遇合规',
'人事争议': '辞职辞退与聘用合同',
'仲裁流程': '仲裁案件进展',
'通知函触达': '仲裁调解涉诉通知',
};
const suggestionParts = riskCategories.map((c) => suggestionMap[c]).filter(Boolean);
const suggestion = suggestionParts.length ? `建议关注${suggestionParts.slice(0, 3).join('、')}` : '';
return {
hasRisk,
label: hasRisk ? '有风险' : '无风险',
riskCategories,
suggestion,
totalItems,
hitItems,
};
});
// 风险评分 0-100越高越安全供 BaseReport 分析指数)
// 基于真正的风险项riskItemRows与展示逻辑一致通过 useRiskNotifier 递交 BaseReport
const riskScore = computed(() => {
const basic = result.value.basic_info;
if (!basic || basic.risk_flag === 1) return 100;
const hitItems = riskItemRows.value.filter((r) => r.value === 2).length;
const score = 100 - hitItems * 2; // 每命中 1 项扣 2 分
return Math.max(0, Math.min(100, score));
});
useRiskNotifier(props, riskScore);
defineExpose({ riskScore });
// 借鉴司法涉诉概览:风险图标与背景样式
const getRiskIcon = () => {
if (riskSummary.value.hasRisk) return new URL('@/assets/images/report/gfx.png', import.meta.url).href;
return new URL('@/assets/images/report/zq.png', import.meta.url).href;
};
</script>
<template>
<div class="report-wrap">
<!-- 头部风险总结底色固定白色命中项用内嵌 card 展现 -->
<div v-if="hasAnyData" class="risk-summary card">
<div class="flex items-center mb-4">
<div class="w-12 h-12 mr-3 flex-shrink-0">
<img :src="getRiskIcon()" alt="风险" class="w-12 h-12 object-contain" />
</div>
<div class="text-gray-700 text-[15px] leading-relaxed">
<template v-if="riskSummary.hasRisk">
<span v-if="riskSummary.riskCategories.length">涉及{{ riskSummary.riskCategories.join('')
}}</span>
<span v-if="riskSummary.suggestion">{{ riskSummary.suggestion }}</span>
</template>
<template v-else>未检测到相关风险</template>
</div>
</div>
<!-- 命中项仅显示总项数 / 命中数真正的风险项失信限高劳动争议社会保险福利待遇人事争议仲裁流程通知函触达 -->
<div v-if="riskSummary.totalItems > 0" class="inner-card p-4 rounded-xl text-center"
:class="riskSummary.hitItems > 0 ? 'inner-card-risk' : 'inner-card-safe'">
<div class="text-2xl font-bold mb-1"
:class="riskSummary.hitItems > 0 ? 'text-[#EB3C3C]' : 'text-[#10b981]'">
{{ riskSummary.hitItems }}/{{ riskSummary.totalItems }}
</div>
<div class="text-sm font-medium text-gray-800">命中项</div>
</div>
</div>
<!-- Card 1: 汇总 -->
<section class="card">
<header class="card-header">
<span class="card-title">风险概览</span>
<span class="card-subtitle">综合评估结果</span>
</header>
<div v-if="hasAnyData" class="group-list">
<div v-for="(group, gi) in summaryGroups" :key="group.key" class="group-box">
<div class="group-header">
<span class="group-title">{{ group.title }}</span>
</div>
<div class="group-body">
<div v-for="(row, ri) in group.rows" :key="ri" class="data-row">
<span class="data-label">{{ row.label }}</span>
<span v-if="row.period !== undefined" class="data-value data-value-text">{{
getNoticeLetterPeriodText(row.period) }}</span>
<span v-else
:class="['data-value', 'data-badge', row.value === 2 ? 'badge-risk' : 'badge-safe']">
<span class="badge-dot" :class="row.value === 2 ? 'dot-risk' : 'dot-safe'" />
{{ getStatusText(row.value) }}
</span>
</div>
</div>
</div>
</div>
<div v-else class="empty-state">
<span class="empty-icon"></span>
<span class="empty-text">暂无相关风险数据</span>
</div>
</section>
<!-- Card 2: 近三年 / 近五年 -->
<section class="card">
<header class="card-header">
<span class="card-title">时间维度</span>
<span class="card-subtitle">按周期查看命中情况</span>
</header>
<div class="period-tabs">
<button type="button" :class="['period-tab', periodTab === 'threeYears' && 'active']"
@click="periodTab = 'threeYears'">近三年</button>
<button type="button" :class="['period-tab', periodTab === 'fiveYears' && 'active']"
@click="periodTab = 'fiveYears'">近五年</button>
</div>
<div v-if="periodGroups.length" class="group-list">
<div v-for="(group, gi) in periodGroups" :key="group.key" class="group-box">
<div class="group-header">
<span class="group-title">{{ group.title }}</span>
</div>
<div class="group-body">
<div v-for="(row, ri) in group.rows" :key="ri" class="data-row">
<span class="data-label">{{ row.label }}</span>
<span class="data-value data-badge badge-risk">
<span class="badge-dot dot-risk" />
{{ getStatusText(row.value) }}
</span>
</div>
</div>
</div>
</div>
<div v-else class="empty-state">
<span class="empty-icon"></span>
<span class="empty-text">暂无{{ periodTab === 'threeYears' ? '近三年' : '近五年' }}命中数据</span>
</div>
</section>
</div>
</template>
<style lang="scss" scoped>
.report-wrap {
display: flex;
flex-direction: column;
gap: 16px;
}
.card {
background: #fff;
border-radius: 12px;
padding: 16px;
border: 1px solid rgba(0, 0, 0, 0.06);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
}
.inner-card {
border: 1px solid #e2e8f0;
}
.inner-card-risk {
background: rgba(235, 60, 60, 0.1);
border-color: rgba(235, 60, 60, 0.3);
}
.inner-card-safe {
background: rgba(16, 185, 129, 0.1);
border-color: rgba(16, 185, 129, 0.3);
}
.card-header {
display: flex;
flex-direction: column;
gap: 2px;
margin-bottom: 14px;
padding-bottom: 12px;
border-bottom: 1px solid #f1f5f9;
}
.card-title {
font-size: 16px;
font-weight: 600;
color: #1e293b;
letter-spacing: 0.02em;
}
.card-subtitle {
font-size: 13px;
color: #94a3b8;
}
.period-tabs {
display: flex;
gap: 8px;
margin-bottom: 14px;
padding: 4px;
background: #f8fafc;
border-radius: 10px;
}
.period-tab {
flex: 1;
padding: 10px 16px;
font-size: 15px;
color: #64748b;
background: transparent;
border: none;
border-radius: 8px;
cursor: pointer;
}
.period-tab.active {
color: #1e293b;
font-weight: 500;
background: #fff;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
}
.group-list {
display: flex;
flex-direction: column;
gap: 12px;
}
.group-box {
background: #fff;
border: 1px solid #e2e8f0;
border-radius: 10px;
overflow: hidden;
}
.group-header {
padding: 12px 16px;
background: #f8fafc;
border-bottom: 1px solid #e2e8f0;
}
.group-title {
font-size: 16px;
font-weight: 600;
color: #475569;
letter-spacing: 0.03em;
}
.group-body {
display: flex;
flex-direction: column;
padding: 0 16px;
}
.data-row {
display: flex;
justify-content: space-between;
align-items: center;
padding: 10px 0;
font-size: 16px;
}
.data-row:not(:last-child) {
border-bottom: 1px solid #f1f5f9;
}
.data-label {
color: #475569;
flex: 1;
margin-right: 12px;
font-size: 16px;
line-height: 1.5;
}
.data-value {
flex-shrink: 0;
}
.data-value-text {
color: #64748b;
font-size: 15px;
}
.data-badge {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 4px 12px;
border-radius: 12px;
font-size: 14px;
font-weight: 500;
}
.badge-dot {
width: 6px;
height: 6px;
border-radius: 50%;
}
.badge-risk {
background: #fff1f2;
color: #be123c;
}
.dot-risk {
background: #e11d48;
}
.badge-safe {
background: #f0fdf4;
color: #047857;
}
.dot-safe {
background: #10b981;
}
.empty-state {
display: flex;
flex-direction: column;
align-items: center;
gap: 6px;
padding: 28px 16px;
}
.empty-icon {
font-size: 20px;
color: #cbd5e1;
font-weight: 300;
}
.empty-text {
font-size: 15px;
color: #94a3b8;
}
</style>

149
src/ui/JRZQ8B3C/README.md Normal file
View File

@@ -0,0 +1,149 @@
# 个人消费能力等级组件 (JRZQ8B3C)
## 组件概述
基于个人收入指数评分进行消费能力等级评估,为企业提供专业的消费能力分析和风险评估服务。
## 组件结构
```
JRZQ8B3C/
├── index.vue # 主组件
└── README.md # 说明文档
```
## 使用方法
### 基本用法
```vue
<template>
<div>
<JRZQ8B3C :data="consumptionData" />
</div>
</template>
<script setup>
import JRZQ8B3C from '@/ui/JRZQ8B3C/index.vue'
// 个人消费能力等级数据示例
const consumptionData = {
personincome_index_2.0: "200" // 个人收入指数评分(字符串类型)
}
</script>
```
## 数据字段说明
| 字段名 | 类型 | 必填 | 描述 | 示例值 |
|-------|------|------|------|--------|
| personincome_index_2.0 | String | 是 | 个人收入指数评分 | "200" |
## 评分分档说明
| 分值 | 收入区间(元/月) | 消费能力等级 | 风险等级 |
|------|----------------|------------|----------|
| -1 | **未命中** | 无法获取收入信息 | 高风险 |
| 100 | (1000, 2000] | 第1档 | 高风险 |
| 200 | (2000, 4000] | 第2档 | 高风险 |
| 300 | (4000, 6000] | 第3档 | 高风险 |
| 400 | (6000, 8000] | 第4档 | 中等风险 |
| 500 | (8000, 10000] | 第5档 | 中等风险 |
| 600 | (10000, 12000] | 第6档 | 中等风险 |
| 700 | (12000, 15000] | 第7档 | 低风险 |
| 800 | (15000, 20000] | 第8档 | 低风险 |
| 900 | (20000, 25000] | 第9档 | 低风险 |
| 1000 | (25000, +∞) | 第10档 | 低风险 |
## 特殊值说明
- **-1**: 表示未命中(无法获取收入信息)
- **评分范围**: 100-1000分共10个等级
- **等级意义**: 等级越高,对应的消费能力越强
- **区间定义**: 收入区间为左开右闭区间1000 < 收入 2000
## 组件特性
### 1. 专业的视觉展示
- **评分展示**大数字显示个人收入指数评分
- **进度条可视化**直观展示评分在100-1000分范围内的位置
- **颜色编码**根据评分等级使用不同颜色=红色,中=黄色,高=绿色)
- **响应式设计**完美适配各种屏幕尺寸
### 2. 全面的数据分析
- **收入区间显示**清晰展示对应的月收入范围
- **等级描述**显示当前评分对应的消费能力等级
- **市场对比分析**与市场平均水平对比
- **消费能力评估**基于收入指数的消费能力分析
### 3. 智能风险评估
- **动态评分**根据收入指数自动计算风险分数30-100分
- **风险等级标签**直观显示当前风险等级
- **个性化建议**针对不同等级的专业建议
## 视觉设计亮点
### 1. 色彩系统
- **低风险700-1000分**绿色系表示消费能力强
- **中等风险400-600分**黄色系表示消费能力中等
- **高风险100-300分/-1**红色系表示消费能力有限
### 2. 交互体验
- 平滑的动画过渡
- 直观的视觉反馈
- 清晰的信息层次
### 3. 信息架构
- 层次分明的信息展示
- 重点突出的核心数据
- 完整的补充说明
## 数据说明
### 评估依据
- 基于个人收入指数评分
- 使用10档分级评分体系
- 数据准确可靠
### 使用限制
- 收入范围为税前月收入
- 存在地区差异仅供参考
- 建议结合其他收入证明材料
### 评分计算
- 风险评分范围30-100分
- 100分对应30分风险评分
- 1000分对应100分风险评分最安全
- -1未命中对应30分风险评分
## 业务价值
### 1. 风险控制
- 精确的消费能力评估降低信贷风险
- 多维度风险分析提升决策质量
- 智能化评分系统提高效率
### 2. 客户分层
- 基于消费能力的客户分级管理
- 个性化服务策略制定
- 精准的市场定位分析
### 3. 合规要求
- 符合金融监管要求
- 数据来源权威可靠
- 评估过程透明公开
## 注意事项
1. 确保传入正确的 `personincome_index_2.0`
2. 组件会自动处理 -1 特殊值未命中
3. 建议在网络良好的环境下使用
4. 定期更新评估标准以保持准确性
## 更新日志
- v1.0.0 - 初始版本支持基础消费能力等级评估功能
- 专业的视觉展示效果
- 完整的评分分档系统
- 专业的风险分析功能

377
src/ui/JRZQ8B3C/index.vue Normal file
View File

@@ -0,0 +1,377 @@
<template>
<div class="card">
<div class="rounded-lg border border-gray-200 pb-2 mb-4">
<!-- 标题区域 -->
<div class="flex items-center mb-4 p-4">
<div class="w-8 h-8 flex items-center justify-center mr-2">
<img src="@/assets/images/report/srpg.png" alt="个人消费能力等级" class="w-8 h-8 object-contain" />
</div>
<span class="font-bold text-gray-800">个人消费能力等级</span>
</div>
<div class="px-4 pb-4">
<!-- 月消费能力 -->
<div class="mb-6 text-center">
<div class="text-sm text-gray-600 mb-2">月消费能力</div>
<div class="text-3xl font-bold mb-3 text-[#333333]">
<span class="amount-number">{{ getConsumptionAmount(score) }}</span>
<span class="amount-unit">/</span>
</div>
<div class="level-bar" :style="getLevelBarBgStyle(score)">
<div class="level-fill" :style="getLevelBarStyle(score)"></div>
</div>
<div class="text-sm text-gray-600 mt-2">{{ getConsumptionDescription(score) }}</div>
</div>
<!-- 评估结果 -->
<div class="assessment-card">
<div class="flex items-center">
<div class="flex-1">
<div class="flex items-center justify-between mb-2">
<h4 class="font-semibold text-gray-800">评估结果</h4>
</div>
<p class="text-gray-400 text-sm">
{{ getAssessmentDescription(score) }}
</p>
</div>
</div>
</div>
<!-- 市场对比 -->
<div class="assessment-card">
<div class="flex items-center mb-8">
<div class="flex-1">
<div class="flex items-center justify-between mb-2">
<h4 class="font-semibold text-gray-800">市场对比</h4>
</div>
<p class="text-gray-400 text-sm">
{{ getMarketComparison(score) }}
</p>
</div>
</div>
<div class="comparison-indicator mt-4">
<div class="indicator-bar">
<div class="indicator-fill" :style="getIndicatorStyle(score)"></div>
<div class="indicator-marker" :style="getMarkerPosition(score)">
<img src="@/assets/images/report/srbq.png" alt="市场对比" class="marker-image" />
<div class="marker-dot"></div>
</div>
</div>
<div class="indicator-labels">
<span>低消费</span>
<span>高消费</span>
</div>
</div>
</div>
<!-- 消费能力 -->
<div class="assessment-card">
<div class="flex items-center">
<div class="flex-1">
<div class="mb-2">
<h4 class="font-semibold text-gray-800">消费能力</h4>
</div>
<p class="text-gray-400 text-sm">
{{ getConsumptionCapacity(score) }}
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script setup>
import { computed } from 'vue'
import { useRiskNotifier } from '@/composables/useRiskNotifier';
const props = defineProps({
data: {
type: Object,
required: true,
default: () => ({})
},
apiId: {
type: String,
default: '',
},
index: {
type: Number,
default: 0,
},
notifyRiskStatus: {
type: Function,
default: () => { },
},
})
// 确保data是响应式的
const data = computed(() => props.data || {})
// 获取评分值(字符串转数字,处理-1特殊值
const score = computed(() => {
const value = data.value['personincome_index_2.0'];
if (!value || value === '-1') return -1;
const num = parseInt(value, 10);
return isNaN(num) ? -1 : num;
})
// 获取消费金额显示(直接显示金额区间)
const getConsumptionAmount = (score) => {
if (score === -1) return '无法评估'
const amountMap = {
100: '2,000 - 4,000',
200: '2,000 - 4,000',
300: '4,000 - 6,000',
400: '6,000 - 8,000',
500: '8,000 - 10,000',
600: '10,000 - 12,000',
700: '12,000 - 15,000',
800: '15,000 - 20,000',
900: '20,000 - 25,000',
1000: '25,000+'
}
return amountMap[score] || '数据异常'
}
// 消费能力描述
const getConsumptionDescription = (score) => {
if (score === -1) return '暂未发现消费能力信息'
const descriptionMap = {
100: '基础消费能力',
200: '基础消费能力',
300: '中等消费能力',
400: '中等消费能力',
500: '良好消费能力',
600: '良好消费能力',
700: '较强消费能力',
800: '较强消费能力',
900: '很强消费能力',
1000: '很强消费能力'
}
return descriptionMap[score] || '数据异常'
}
// 等级进度条样式
const getLevelBarStyle = (score) => {
if (score === -1) {
return {
width: '0%',
background: '#94a3b8'
}
}
// 计算百分比100分=10%, 200分=20%, ..., 1000分=100%
const percentage = (score / 1000) * 100
// 统一使用蓝色渐变
return {
width: percentage + '%',
background: 'linear-gradient(90deg, #3b82f6 0%, #2563eb 100%)'
}
}
// 进度条背景色样式
const getLevelBarBgStyle = (score) => {
// 统一使用淡蓝色背景
return {
background: '#eff6ff'
}
}
// 评估描述
const getAssessmentDescription = (score) => {
if (score === -1) {
return '根据个人消费能力等级分析,无法获取该用户的消费能力信息,无法进行评估。'
}
const descriptions = {
100: '根据个人消费能力等级分析,该用户月消费能力较低,消费水平有限。',
200: '根据个人消费能力等级分析,该用户月消费能力较低,消费水平有限。',
300: '根据个人消费能力等级分析,该用户月消费能力中等,消费水平良好。',
400: '根据个人消费能力等级分析,该用户月消费能力中等,消费水平良好。',
500: '根据个人消费能力等级分析,该用户月消费能力中等偏上,消费水平较强。',
600: '根据个人消费能力等级分析,该用户月消费能力中等偏上,消费水平较强。',
700: '根据个人消费能力等级分析,该用户月消费能力较高,消费水平很强。',
800: '根据个人消费能力等级分析,该用户月消费能力较高,消费水平很强。',
900: '根据个人消费能力等级分析,该用户月消费能力很高,消费水平顶级。',
1000: '根据个人消费能力等级分析,该用户月消费能力很高,消费水平顶级。'
}
return descriptions[score] || '数据异常,无法进行准确评估。'
}
// 市场对比分析
const getMarketComparison = (score) => {
if (score === -1) {
return '无消费能力信息,无法与市场平均水平进行对比。'
}
const comparisons = {
100: '低于市场平均消费水平,处于消费分布的底部区间。',
200: '低于市场平均消费水平,处于消费分布的中下区间。',
300: '接近市场平均消费水平,处于消费分布的中等区间。',
400: '接近市场平均消费水平,处于消费分布的中等区间。',
500: '高于市场平均消费水平,处于消费分布的中上区间。',
600: '高于市场平均消费水平,处于消费分布的中上区间。',
700: '明显高于市场平均消费水平,处于消费分布的上层区间。',
800: '显著高于市场平均消费水平,处于消费分布的高层区间。',
900: '远高于市场平均消费水平,处于消费分布的顶部区间。',
1000: '超越市场绝大多数消费水平,处于消费分布的顶级区间。'
}
return comparisons[score] || '数据异常,无法进行市场对比。'
}
// 消费能力分析
const getConsumptionCapacity = (score) => {
if (score === -1) {
return '缺乏消费能力信息,月消费能力存在不确定性,需要谨慎评估。'
}
const capacities = {
100: '月消费能力较低,消费水平有限,建议理性消费。',
200: '月消费能力较低,消费水平有限,建议理性消费。',
300: '月消费能力稳定,消费水平良好,具备一定的消费潜力。',
400: '月消费能力稳定,消费水平良好,具备一定的消费潜力。',
500: '月消费能力较高,消费水平较强,可以支持中等消费。',
600: '月消费能力较高,消费水平较强,可以支持中等消费。',
700: '月消费能力很强,消费水平很高,可以支持较高消费。',
800: '月消费能力很强,消费水平很高,可以支持较高消费。',
900: '月消费能力顶级,消费水平极高,可以支持高端消费。',
1000: '月消费能力顶级,消费水平极高,可以支持顶级消费。'
}
return capacities[score] || '数据异常,无法进行消费能力分析。'
}
// 指示器样式
const getIndicatorStyle = (score) => {
if (score === -1) return { width: '0%', background: 'transparent' }
// 100分=0%, 1000分=100%
const percentage = ((score - 100) / 900) * 100
return {
width: percentage + '%',
background: `linear-gradient(90deg, #93c5fd 0%, #3b82f6 50%, #1d4ed8 100%)`
}
}
// 标记位置
const getMarkerPosition = (score) => {
if (score === -1) return { left: '0%' }
// 100分=0%, 1000分=100%
const percentage = ((score - 100) / 900) * 100
return {
left: percentage + '%'
}
}
// 计算风险评分0-100分分数越高越安全
const riskScore = computed(() => {
if (score.value === -1) return 30 // 未命中,风险较高
// 100分对应30分1000分对应100分
return 30 + ((score.value - 100) / 900) * 70
});
// 使用 composable 通知父组件风险评分
useRiskNotifier(props, riskScore);
// 暴露给父组件
defineExpose({
riskScore
});
</script>
<style scoped>
/* 金额数字样式 */
.amount-number {
color: #333333;
font-weight: bold;
}
.amount-unit {
font-size: 0.5em;
color: #999999;
margin-left: 4px;
}
/* 进度条 */
.level-bar {
height: 12px;
border-radius: 8px;
overflow: hidden;
}
.level-fill {
height: 100%;
border-radius: 4px;
transition: all 0.6s ease;
}
/* 评估卡片 */
.assessment-card {
padding: 16px;
border-radius: 8px;
margin-bottom: 16px;
border: 1px solid;
}
/* 评估卡片统一样式 */
.assessment-card {
background: #f8fafc;
border-color: #e2e8f0;
}
/* 对比指示器 */
.comparison-indicator {
margin-top: 12px;
}
.indicator-bar {
position: relative;
height: 6px;
border-radius: 3px;
margin-bottom: 8px;
background: linear-gradient(90deg, #93c5fd 0%, #3b82f6 50%, #1d4ed8 100%);
}
.indicator-fill {
height: 100%;
border-radius: 3px;
transition: all 0.5s ease;
background: transparent;
}
.indicator-marker {
position: absolute;
top: -26px;
transform: translateX(-50%);
display: flex;
flex-direction: column;
align-items: center;
}
.marker-image {
width: 24px;
margin-bottom: 0px;
}
.marker-dot {
width: 8px;
height: 8px;
background: white;
border-radius: 50%;
box-shadow: 0px 4px 4px 0px #00000040;
}
.indicator-labels {
display: flex;
justify-content: space-between;
font-size: 0.7rem;
color: #9ca3af;
}
</style>

View File

@@ -12,6 +12,7 @@ const featureData = ref({});
onMounted(async () => {
isFinishPayment();
await getProduct();
// 检查是否为婚姻查询页面,如果是则显示升级通知
});
function isFinishPayment() {
@@ -22,6 +23,98 @@ function isFinishPayment() {
}
}
// 婚姻查询升级通知弹窗
function showMarriageUpgradeNotice() {
// 创建自定义弹窗
const modal = document.createElement('div');
modal.style.position = 'fixed';
modal.style.top = '0';
modal.style.left = '0';
modal.style.width = '100%';
modal.style.height = '100%';
modal.style.backgroundColor = 'rgba(0, 0, 0, 0.5)';
modal.style.display = 'flex';
modal.style.justifyContent = 'center';
modal.style.alignItems = 'center';
modal.style.zIndex = '9999';
modal.innerHTML = `
<div style="
background: white;
border-radius: 12px;
padding: 24px;
margin: 20px;
max-width: 400px;
width: 90%;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
position: relative;
overflow-y: auto;
max-height: 90vh;
">
<h3 style="
color: #333;
text-align: center;
margin-top: 0;
margin-bottom: 16px;
font-size: 18px;
">亲爱的用户,您好!</h3>
<p style="
color: #666;
line-height: 1.6;
margin: 8px 0;
text-align: center;
font-size: 14px;
">婚恋报告正在优化升级中,需要查询请前往天远查。</p>
<div style="display: flex; gap: 12px; margin-bottom: 16px;">
<button id="jumpNowBtn" style="
flex: 1;
background: linear-gradient(135deg, #ff6b6b, #ee5a24);
color: white;
border: none;
padding: 12px 0;
border-radius: 25px;
cursor: pointer;
font-size: 14px;
font-weight: bold;
">是</button>
<button id="remindLaterBtn" style="
flex: 1;
background: #f8f9fa;
color: #666;
border: 1px solid #ddd;
padding: 12px 0;
border-radius: 25px;
cursor: pointer;
font-size: 14px;
">否</button>
</div>
</div>
`;
document.body.appendChild(modal);
// 绑定按钮事件
const jumpNowBtn = modal.querySelector('#jumpNowBtn');
const remindLaterBtn = modal.querySelector('#remindLaterBtn');
jumpNowBtn.addEventListener('click', () => {
// 跳转到新版首页
window.open('https://www.tianyuancha.cn/', '_blank');
document.body.removeChild(modal);
});
remindLaterBtn.addEventListener('click', () => {
// 跳转到指定网站
window.location.href = 'https://www.tianyuandb.com/';
});
}
async function getProduct() {
const { data, error } = await useApiFetch(`/product/en/${feature.value}`)
.get()

View File

@@ -2,6 +2,7 @@
import { ref, computed, onUnmounted, nextTick } from 'vue'
import { showToast } from 'vant'
import ClickCaptcha from '@/components/ClickCaptcha.vue'
import { useAliyunCaptcha } from "@/composables/useAliyunCaptcha";
const router = useRouter()
const phoneNumber = ref('')
@@ -13,6 +14,8 @@ const isCountingDown = ref(false)
const countdown = ref(60)
let timer = null
const { runWithCaptcha } = useAliyunCaptcha();
// 验证组件状态
const showCaptcha = ref(false)
const captchaVerified = ref(false)
@@ -41,25 +44,26 @@ async function sendVerificationCode() {
showToast({ message: "请输入有效的手机号" });
return
}
const { data, error } = await useApiFetch('auth/sendSms')
.post({ mobile: phoneNumber.value, actionType: 'login' })
.json()
if (data.value && !error.value) {
if (data.value.code === 200) {
showToast({ message: "获取成功" });
startCountdown()
// 聚焦到验证码输入框
nextTick(() => {
const verificationCodeInput = document.getElementById('verificationCode');
if (verificationCodeInput) {
verificationCodeInput.focus();
}
});
} else {
showToast(data.value.msg)
await runWithCaptcha(
(captchaVerifyParam) =>
useApiFetch('auth/sendSms')
.post({ mobile: phoneNumber.value, actionType: 'login', captchaVerifyParam })
.json(),
(res) => {
if (res.code === 200) {
showToast({ message: "获取成功" });
startCountdown();
nextTick(() => {
const verificationCodeInput = document.getElementById('verificationCode');
if (verificationCodeInput) {
verificationCodeInput.focus();
}
});
} else {
showToast({ message: res.msg || "发送失败" });
}
}
}
);
}
function startCountdown() {

View File

@@ -32,7 +32,7 @@ onMounted(() => {
title: '404 - 页面未找到 | 天远数据',
description: '抱歉,您访问的页面不存在。天远数据专业大数据风险管控平台,提供大数据风险报告查询、婚姻状况查询、个人信用评估等服务。',
keywords: '404, 页面未找到, 天远数据, 大数据风险管控',
url: 'https://www.zhinengcha.cn/404'
url: 'https://www.tianyuandb.com/404'
})
})
</script>

View File

@@ -93,8 +93,8 @@ const reportTypes = [
{ text: "个人大数据", value: "personaldata", id: 27 },
{ text: '入职风险', value: 'backgroundcheck', id: 1 },
{ text: '家政风险', value: 'homeservice', id: 3 },
// { text: '婚恋风险', value: 'marriage', id: 4 },
// { text: '租赁风险', value: 'rentalrisk', id: 6 },
{ text: '婚恋风险', value: 'marriage', id: 4 },
{ text: '租赁风险', value: 'rentalrisk', id: 6 },
];
const showTypePicker = ref(false);

View File

@@ -15,8 +15,8 @@ export default defineConfig({
strictPort: true, // 如果端口被占用则抛出错误而不是使用下一个可用端口
proxy: {
"/api/v1": {
// target: "http://127.0.0.1:8888", // 本地接口地址
target: "https://www.tianyuandb.com", // 本地接口地址
target: "http://127.0.0.1:8888", // 本地接口地址
// target: "https://www.tianyuandb.com", // 本地接口地址
changeOrigin: true,
},
},