version temp
This commit is contained in:
18
index.html
18
index.html
@@ -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" />
|
||||
@@ -32,16 +32,16 @@
|
||||
<!-- 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: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:title" content="天远数据|大数据风险报告查询与代理平台,支持个人和企业多场景风控应用" />
|
||||
<meta property="twitter:description" content="天远数据,专业大数据风险报告查询与代理平台,支持个人信用查询、小微企业风控、贷前风险背调等多场景报告应用,免费开通代理权限,助力高效识别信用与风险。" />
|
||||
|
||||
<!-- 其他重要meta标签 -->
|
||||
<meta name="theme-color" content="#3498db" />
|
||||
@@ -58,7 +58,7 @@
|
||||
"@type": "WebSite",
|
||||
"name": "天远数据",
|
||||
"url": "https://www.zhinengcha.cn/",
|
||||
"description": "大数据风险报告查询与代理管理平台,提供婚姻状况查询、个人信用评估、人事背调、信贷风控、企业风险监测等服务",
|
||||
"description": "专业大数据风险报告查询与代理平台,支持个人信用查询、小微企业风控、贷前风险背调等多场景报告应用",
|
||||
"potentialAction": {
|
||||
"@type": "SearchAction",
|
||||
"target": "https://www.zhinengcha.cn/search?q={search_term_string}",
|
||||
@@ -73,7 +73,7 @@
|
||||
"@type": "Organization",
|
||||
"name": "天远数据",
|
||||
"url": "https://www.zhinengcha.cn/",
|
||||
"description": "大数据风险报告查询与代理管理平台"
|
||||
"description": "专业大数据风险报告查询与代理平台,支持个人和企业多场景风控应用"
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "天远数据 - 大数据风险报告查询与代理管理平台",
|
||||
"name": "天远数据|大数据风险报告查询与代理平台,支持个人和企业多场景风控应用",
|
||||
"short_name": "天远数据",
|
||||
"description": "大数据风险报告查询与代理管理平台,提供婚姻状况查询、个人信用评估、人事背调、信贷风控、企业风险监测等服务",
|
||||
"description": "专业大数据风险报告查询与代理平台,支持个人信用查询、小微企业风控、贷前风险背调等多场景报告应用",
|
||||
"start_url": "/",
|
||||
"display": "standalone",
|
||||
"background_color": "#ffffff",
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 156 KiB After Width: | Height: | Size: 142 KiB |
BIN
src/assets/images/index_b_banner.png
Normal file
BIN
src/assets/images/index_b_banner.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 133 KiB |
1
src/auto-imports.d.ts
vendored
1
src/auto-imports.d.ts
vendored
@@ -92,6 +92,7 @@ declare global {
|
||||
const shallowReactive: typeof import('vue')['shallowReactive']
|
||||
const shallowReadonly: typeof import('vue')['shallowReadonly']
|
||||
const shallowRef: typeof import('vue')['shallowRef']
|
||||
const showConfirmDialog: typeof import('vant/es')['showConfirmDialog']
|
||||
const showLoadingToast: typeof import('vant/es')['showLoadingToast']
|
||||
const showToast: typeof import('vant/es')['showToast']
|
||||
const syncRef: typeof import('@vueuse/core')['syncRef']
|
||||
|
||||
@@ -81,7 +81,8 @@ const processedReportData = computed(() => {
|
||||
// 拆分CQYGL3F8E数据
|
||||
data = splitCQYGL3F8EForTabs(data);
|
||||
|
||||
return data;
|
||||
// 过滤掉在featureMap中没有对应的项
|
||||
return data.filter(item => featureMap[item.data.apiID]);
|
||||
});
|
||||
|
||||
watch(reportData, () => {
|
||||
@@ -93,6 +94,12 @@ const featureMap = {
|
||||
component: defineAsyncComponent(() => import("@/ui/CIVYZ5733.vue")),
|
||||
remark: '查询结果为"未婚或尚未登记结婚"时,表示婚姻登记处暂无相关的登记记录。婚姻状态信息由婚姻登记处逐级上报,可能存在数据遗漏或更新滞后。当前可查询的婚姻状态包括:未婚或尚未登记结婚、已婚、离异。如您对查询结果有疑问,请联系客服反馈。',
|
||||
},
|
||||
// IVYZ81NC
|
||||
IVYZ81NC: {
|
||||
name: "婚姻状况",
|
||||
component: defineAsyncComponent(() => import("@/ui/CIVYZ81NC.vue")),
|
||||
remark: '查询结果为"未婚或尚未登记结婚"时,表示婚姻登记处暂无相关的登记记录。婚姻状态信息由婚姻登记处逐级上报,可能存在数据遗漏或更新滞后。当前可查询的婚姻状态包括:未婚或尚未登记结婚、已婚、离异。如您对查询结果有疑问,请联系客服反馈。',
|
||||
},
|
||||
JRZQ0A03: {
|
||||
name: "借贷申请记录",
|
||||
component: defineAsyncComponent(() =>
|
||||
@@ -196,13 +203,13 @@ const featureMap = {
|
||||
component: defineAsyncComponent(() => import("@/ui/CDWBG8B4D/components/RiskWarning.vue")),
|
||||
},
|
||||
DWBG8B4D_OverdueRisk: {
|
||||
name: "逾期风险产品",
|
||||
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")),
|
||||
@@ -288,10 +295,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: "贷款风险评估",
|
||||
@@ -780,7 +787,7 @@ const calculateScore = (reportData) => {
|
||||
<span class="text-gray-600">{{
|
||||
reportDateTime ||
|
||||
"2025-01-01 12:00:00"
|
||||
}}</span>
|
||||
}}</span>
|
||||
</div>
|
||||
<div class="flex justify-between border-b pb-2 pl-2" v-if="!isEmpty">
|
||||
<span class="text-gray-700 font-bold">报告项目:</span>
|
||||
@@ -879,22 +886,18 @@ const calculateScore = (reportData) => {
|
||||
<div class="card">
|
||||
<div>
|
||||
<div class="text-bold text-blue-500 mb-2">
|
||||
报告说明
|
||||
免责声明
|
||||
</div>
|
||||
<div>
|
||||
|
||||
本报告的数据由用户本人明确授权后,我们才向相关合法存有用户个人数据的机构调取本报告相关内容,本平台只做大数据的获取与分析,仅向用户个人展示参考。
|
||||
</div>
|
||||
<p>
|
||||
报告有效期<strong class="text-red-500">30天</strong>,过期自动删除。
|
||||
</p>
|
||||
<p>
|
||||
|
||||
若您的数据不全面,可能是数据具有延迟性或者合作信息机构未获取到您的数据。若数据有错误请联系客服
|
||||
1、本份报告是在取得您个人授权后,我们才向合法存有您以上个人信息的机构去调取相关内容,我们不会以任何形式对您的报告进行存储,除您和您授权的人外不会提供给任何人和机构进行查看。
|
||||
</p>
|
||||
<p>
|
||||
|
||||
本产品所有数据均来自第三方。可能部分数据未公开、数据更新延迟或信息受到限制,贵司不对数据的准确性、真实性、完整性做任何承诺。用户需根据实际情况,结合报告内容自行判断与决策。
|
||||
2、本报告自生成之日起,有效期 <strong class="text-red-500">30
|
||||
天</strong>,过期自动删除。如果您对本份报告存有异议,可能是合作机构数据有延迟或未能获取到您的相关数据,出于合作平台数据隐私的保护,本平台将不做任何解释。
|
||||
</p>
|
||||
<p>
|
||||
3、若以上数据有错误,请联系平台客服。
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
<button class="refresh-btn" @click="refreshCaptcha" :disabled="isRefreshing">
|
||||
{{ isRefreshing ? '刷新中...' : '刷新验证' }}
|
||||
</button>
|
||||
<button class="confirm-btn" :disabled="clickedList.length < 3 || !!successMessage" @click="handleConfirm">
|
||||
<button class="confirm-btn" :disabled="clickedList.length < 4 || !!successMessage" @click="handleConfirm">
|
||||
确认
|
||||
</button>
|
||||
</div>
|
||||
@@ -47,8 +47,8 @@ const canvasWidth = 300
|
||||
const canvasHeight = 180
|
||||
const bgImgUrl = '/image/clickCaptcha.jpg' // 可替换为任意背景图
|
||||
|
||||
const allChars = ['大', '数', '据', '司', '法', '风', '险', '报', '告']
|
||||
const targetChars = ref(['大', '数', '据']) // 目标点击顺序固定
|
||||
const allChars = ['大', '数', '据', '天', '远', '风', '险', '报', '告']
|
||||
const targetChars = ref(['天', '远', '数', '据']) // 目标点击顺序固定
|
||||
const charPositions = ref([]) // [{char, x, y, w, h}]
|
||||
const clickedIndex = ref(0)
|
||||
const errorMessage = ref('')
|
||||
@@ -134,7 +134,7 @@ function generateCaptcha() {
|
||||
;[chars[i], chars[j]] = [chars[j], chars[i]]
|
||||
}
|
||||
currentChars = chars
|
||||
targetChars.value = ['大', '数', '据']
|
||||
targetChars.value = ['天', '远', '数', '据']
|
||||
clickedIndex.value = 0
|
||||
errorMessage.value = ''
|
||||
successMessage.value = ''
|
||||
@@ -190,16 +190,16 @@ function handleCanvasClick(e) {
|
||||
}
|
||||
|
||||
function handleConfirm() {
|
||||
if (clickedList.value.length < 3) {
|
||||
errorMessage.value = '请依次点击3个字'
|
||||
if (clickedList.value.length < 4) {
|
||||
errorMessage.value = '请依次点击4个字'
|
||||
setTimeout(() => (errorMessage.value = ''), 1200)
|
||||
return
|
||||
}
|
||||
const userSeq = clickedList.value
|
||||
.slice(0, 3)
|
||||
.slice(0, 4)
|
||||
.map(item => item.char)
|
||||
.join('')
|
||||
if (userSeq === '大数据') {
|
||||
if (userSeq === '天远数据') {
|
||||
successMessage.value = '验证成功!'
|
||||
setTimeout(() => emit('success'), 600)
|
||||
} else {
|
||||
|
||||
@@ -92,12 +92,7 @@ const qrCodePositions = ref({
|
||||
// promote模式的配置 (tg_qrcode)
|
||||
promote: [
|
||||
{ x: 180, y: 1440, size: 300 }, // tg_qrcode_1.png
|
||||
{ x: 525, y: 1955, size: 500 }, // tg_qrcode_2.jpg
|
||||
{ x: 525, y: 1955, size: 500 }, // tg_qrcode_3.jpg
|
||||
{ x: 525, y: 1955, size: 500 }, // tg_qrcode_4.jpg
|
||||
{ x: 525, y: 1955, size: 500 }, // tg_qrcode_5.jpg
|
||||
{ x: 525, y: 1955, size: 500 }, // tg_qrcode_6.jpg
|
||||
{ x: 255, y: 940, size: 250 }, // tg_qrcode_7.jpg
|
||||
{ x: 255, y: 940, size: 250 }, // tg_qrcode_8.jpg
|
||||
],
|
||||
// invitation模式的配置 (yq_qrcode)
|
||||
@@ -119,11 +114,11 @@ const loadPosterImages = async () => {
|
||||
const images = [];
|
||||
const basePrefix = mode.value === "promote" ? "tg_qrcode_" : "yq_qrcode_";
|
||||
|
||||
// 根据模式确定要加载的图片数量
|
||||
const imageCount = mode.value === "promote" ? 8 : 1;
|
||||
// 根据模式确定要加载的图片编号
|
||||
const imageNumbers = mode.value === "promote" ? [1, 4, 8] : [1];
|
||||
|
||||
// 加载图片
|
||||
for (let i = 1; i <= imageCount; i++) {
|
||||
for (const i of imageNumbers) {
|
||||
// 尝试加载 .png 文件
|
||||
try {
|
||||
const module = await import(
|
||||
|
||||
@@ -6,9 +6,9 @@ export function useSEO() {
|
||||
|
||||
// 默认SEO信息
|
||||
const defaultSEO = {
|
||||
title: '天远数据 - 大数据风险报告 | 婚姻状况查询 | 个人信用 | 企业风险 | 免费代理',
|
||||
description: '天远数据,大数据风险报告查询与代理管理平台,提供婚姻状况查询、个人信用评估、人事背调、信贷风控、企业风险监测等服务,支持免费开通代理,助力个人与企业全方位风险管理。',
|
||||
keywords: '大数据风险报告, 婚姻状况查询, 个人信用, 企业风险, 信贷风控, 人事背调, 大数据分析, 免费代理, 风险管控',
|
||||
title: '天远数据|大数据风险报告查询与代理平台,支持个人和企业多场景风控应用',
|
||||
description: '天远数据,专业大数据风险报告查询与代理平台,支持个人信用查询、小微企业风控、贷前风险背调等多场景报告应用,免费开通代理权限,助力高效识别信用与风险。',
|
||||
keywords: '大数据风险报告查询、大数据风险评估、大数据分析报告、个人大数据风险查询、小微企业风险、贷前风险背调、代理管理平台、免费开通代理、风险管控平台、信用风险分析、企业风险报告、贷前信用审核、失信人名单查询、被执行人信息、信用黑名单查询',
|
||||
url: 'https://www.zhinengcha.cn'
|
||||
}
|
||||
|
||||
@@ -132,7 +132,7 @@ export function useSEO() {
|
||||
"@type": "Organization",
|
||||
"name": "天远数据",
|
||||
"url": "https://www.zhinengcha.cn/",
|
||||
"description": "大数据风险报告查询与代理管理平台"
|
||||
"description": "专业大数据风险报告查询与代理平台,支持个人和企业多场景风控应用"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -146,9 +146,9 @@ export function useSEO() {
|
||||
const updateSEOByRoute = () => {
|
||||
const routeConfigs = {
|
||||
'/': {
|
||||
title: '天远数据 - 大数据风险报告 | 婚姻状况查询 | 个人信用 | 企业风险 | 免费代理',
|
||||
description: '天远数据,大数据风险报告查询与代理管理平台,提供婚姻状况查询、个人信用评估、人事背调、信贷风控、企业风险监测等服务,支持免费开通代理,助力个人与企业全方位风险管理。',
|
||||
keywords: '大数据风险报告, 婚姻状况查询, 个人信用, 企业风险, 信贷风控, 人事背调, 大数据分析, 免费代理, 风险管控'
|
||||
title: '天远数据|大数据风险报告查询与代理平台,支持个人和企业多场景风控应用',
|
||||
description: '天远数据,专业大数据风险报告查询与代理平台,支持个人信用查询、小微企业风控、贷前风险背调等多场景报告应用,免费开通代理权限,助力高效识别信用与风险。',
|
||||
keywords: '大数据风险报告查询、大数据风险评估、大数据分析报告、个人大数据风险查询、小微企业风险、贷前风险背调、代理管理平台、免费开通代理、风险管控平台、信用风险分析、企业风险报告、贷前信用审核、失信人名单查询、被执行人信息、信用黑名单查询'
|
||||
},
|
||||
'/agent': {
|
||||
title: '天远数据代理 - 免费开通代理权限 | 大数据风险报告代理',
|
||||
|
||||
@@ -2,11 +2,7 @@
|
||||
<div class="home-layout min-h-screen flex flex-col">
|
||||
<!-- Header -->
|
||||
<div class="header">
|
||||
<img
|
||||
class="logo rounded-full overflow-hidden"
|
||||
src="/logo.jpg"
|
||||
alt="Logo"
|
||||
/>
|
||||
<img class="logo rounded-full overflow-hidden" src="/logo.jpg" alt="Logo" />
|
||||
<div class="title">天远数据</div>
|
||||
</div>
|
||||
|
||||
@@ -18,12 +14,8 @@
|
||||
<!-- Vant Tabbar -->
|
||||
|
||||
<van-tabbar v-model="tabbar" @change="tabChange">
|
||||
<van-tabbar-item
|
||||
v-for="(item, index) in menu"
|
||||
:key="index"
|
||||
:name="item.name"
|
||||
:icon="item.icon"
|
||||
>{{ item.title }}
|
||||
<van-tabbar-item v-for="(item, index) in menu" :key="index" :name="item.name" :icon="item.icon">{{
|
||||
item.title }}
|
||||
</van-tabbar-item>
|
||||
</van-tabbar>
|
||||
|
||||
@@ -35,11 +27,7 @@
|
||||
<div class="disclaimer">
|
||||
<div class="flex flex-col items-center">
|
||||
<div class="flex items-center">
|
||||
<img
|
||||
class="w-4 h-4 mr-2"
|
||||
src="@/assets/images/public_security_record_icon.png"
|
||||
alt="公安备案"
|
||||
/>
|
||||
<img class="w-4 h-4 mr-2" src="@/assets/images/public_security_record_icon.png" alt="公安备案" />
|
||||
<text>琼公网安备46010002000584号</text>
|
||||
</div>
|
||||
<div>
|
||||
@@ -54,7 +42,7 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, reactive, onMounted } from "vue";
|
||||
import { ref, reactive, onMounted, watch } from "vue";
|
||||
import { useRoute, useRouter } from "vue-router"; // 引入 Vue Router
|
||||
|
||||
const router = useRouter();
|
||||
@@ -62,7 +50,7 @@ const route = useRoute();
|
||||
const tabbar = ref("index");
|
||||
const menu = reactive([
|
||||
{ title: "首页", icon: "home-o", name: "index" },
|
||||
{ title: "推广", icon: "fire-o", name: "promote" },
|
||||
{ title: "更多", icon: "more-o", name: "more" },
|
||||
{ title: "资产", icon: "gold-coin-o", name: "agent" },
|
||||
{ title: "我的", icon: "user-o", name: "me" }
|
||||
]);
|
||||
@@ -73,23 +61,44 @@ onMounted(() => {
|
||||
tabbar.value = currentPage;
|
||||
});
|
||||
|
||||
const onClickOverlay = () => {};
|
||||
// 监听路由变化,更新 tabbar
|
||||
watch(() => route.name, (newName) => {
|
||||
if (newName) {
|
||||
tabbar.value = newName;
|
||||
}
|
||||
});
|
||||
|
||||
const onClickOverlay = () => { };
|
||||
// 跳转到相应页面
|
||||
const tabChange = (name) => {
|
||||
const tabChange = (name, a, b, c) => {
|
||||
if (name === "more") {
|
||||
showConfirmDialog({
|
||||
title: '更多报告',
|
||||
message:
|
||||
'是否前往天远查查询更多报告',
|
||||
})
|
||||
.then(() => {
|
||||
window.location.href = "https://www.tianyuancha.cn";
|
||||
})
|
||||
.catch(() => {
|
||||
tabbar.value = route.name;
|
||||
})
|
||||
return;
|
||||
}
|
||||
router.push({ name }); // 使用 Vue Router 进行跳转
|
||||
};
|
||||
|
||||
// 跳转到投诉页面
|
||||
const toComplaint = () => {
|
||||
window.location.href =
|
||||
"https://work.weixin.qq.com/kfid/kfc76b1d0f0d562777a"; // 跳转到客服页面
|
||||
"https://work.weixin.qq.com/kfid/kfc8a32720024833f57"; // 跳转到客服页面
|
||||
// router.push({ name: 'complaint' }); // 使用 Vue Router 进行跳转
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.home-layout {
|
||||
@apply from-orange-100/20 to-white bg-gradient-to-b
|
||||
@apply from-orange-100/20 to-white bg-gradient-to-b
|
||||
}
|
||||
|
||||
.header {
|
||||
|
||||
BIN
src/ui.zip
Normal file
BIN
src/ui.zip
Normal file
Binary file not shown.
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="overdue-risk-section card">
|
||||
<LTitle title="逾期风险产品" class="mb-4" />
|
||||
<LTitle title="逾期风险综述" class="mb-4" />
|
||||
|
||||
<!-- 逾期概览 -->
|
||||
<div class="overdue-overview mb-4">
|
||||
@@ -264,7 +264,7 @@
|
||||
<div class="grid grid-cols-1 md:grid-cols-3 gap-3">
|
||||
<div class="text-center p-3 rounded-lg" :class="getRiskFlagClass(overdueRiskProduct.lyjlhyFlag)">
|
||||
<div class="text-sm font-bold">{{ getRiskFlagText(overdueRiskProduct.lyjlhyFlag) }}</div>
|
||||
<div class="text-xs">逾期风险产品</div>
|
||||
<div class="text-xs">逾期风险</div>
|
||||
</div>
|
||||
<div class="text-center p-3 rounded-lg" :class="getRiskFlagClass(overdueRiskProduct.dkzhktjFlag)">
|
||||
<div class="text-sm font-bold">{{ getRiskFlagText(overdueRiskProduct.dkzhktjFlag) }}</div>
|
||||
@@ -278,9 +278,10 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- 温馨提示 -->
|
||||
<LRemark content="逾期风险产品全面分析申请人的逾期情况和还款行为。包括当前逾期状态、逾期时间分布、还款失败/成功统计等关键指标。逾期机构数和逾期金额是重要的风险评估依据,还款失败次数和金额反映还款能力。建议关注最近一次成功还款时间,连续还款失败可能预示更高风险。数据来源于各金融机构报送,更新频率为T+1。" />
|
||||
<LRemark
|
||||
content="逾期风险全面分析申请人的逾期情况和还款行为。包括当前逾期状态、逾期时间分布、还款失败/成功统计等关键指标。逾期机构数和逾期金额是重要的风险评估依据,还款失败次数和金额反映还款能力。建议关注最近一次成功还款时间,连续还款失败可能预示更高风险。数据来源于各金融机构报送,更新频率为T+1。" />
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
|
||||
@@ -283,7 +283,7 @@
|
||||
</div>
|
||||
|
||||
<!-- 法院曝光台信息 -->
|
||||
<div class="risk-module-card" :class="getModuleCardClass('court')">
|
||||
<!-- <div class="risk-module-card" :class="getModuleCardClass('court')">
|
||||
<div class="module-header">
|
||||
<div class="module-icon bg-purple-500">
|
||||
<svg class="w-5 h-5 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
@@ -328,7 +328,7 @@
|
||||
<div class="text-xs text-gray-500">该模块未检测到风险</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
<!-- 借贷评估 -->
|
||||
<div class="risk-module-card" :class="getModuleCardClass('loan')">
|
||||
@@ -427,9 +427,10 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- 温馨提示 -->
|
||||
<LRemark content="风险总览以标签化形式展示各类风险模块的详细信息。每个模块都有独立的风险检测机制和评估标准。要素核查验证基础信息的一致性,运营商核验关注手机号状态,公安重点人员核验检查前科记录,逾期风险分析还款表现,司法风险关注涉诉情况,借贷评估分析申请行为,租赁风险评估关注租赁申请。建议重点关注高风险模块的具体风险项目。" />
|
||||
<LRemark
|
||||
content="风险总览以标签化形式展示各类风险模块的详细信息。每个模块都有独立的风险检测机制和评估标准。要素核查验证基础信息的一致性,运营商核验关注手机号状态,公安重点人员核验检查前科记录,逾期风险分析还款表现,司法风险关注涉诉情况,借贷评估分析申请行为,租赁风险评估关注租赁申请。建议重点关注高风险模块的具体风险项目。" />
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
|
||||
@@ -1,49 +1,31 @@
|
||||
<template>
|
||||
<div class="card shadow-sm rounded-xl overflow-hidden">
|
||||
<!-- 报告概览 -->
|
||||
<ReportOverview
|
||||
:base-info="data.baseInfo"
|
||||
:check-suggest="data.checkSuggest"
|
||||
:fraud-score="data.fraudScore"
|
||||
:credit-score="data.creditScore"
|
||||
:verify-rule="data.verifyRule"
|
||||
:fraud-rule="data.fraudRule"
|
||||
/>
|
||||
<ReportOverview :base-info="data.baseInfo" :check-suggest="data.checkSuggest" :fraud-score="data.fraudScore"
|
||||
:credit-score="data.creditScore" :verify-rule="data.verifyRule" :fraud-rule="data.fraudRule" />
|
||||
|
||||
<!-- 要素核查详情 -->
|
||||
<ElementVerificationSection
|
||||
:element-verification-detail="data.elementVerificationDetail"
|
||||
/>
|
||||
<ElementVerificationSection :element-verification-detail="data.elementVerificationDetail" />
|
||||
|
||||
<!-- 风险预警 -->
|
||||
<RiskWarningSection
|
||||
:risk-warning="data.riskWarning"
|
||||
/>
|
||||
<RiskWarningSection :risk-warning="data.riskWarning" />
|
||||
|
||||
<!-- 逾期风险产品 -->
|
||||
<OverdueRiskSection
|
||||
:overdue-risk-product="data.overdueRiskProduct"
|
||||
/>
|
||||
<!-- 逾期风险综述 -->
|
||||
<OverdueRiskSection :overdue-risk-product="data.overdueRiskProduct" />
|
||||
|
||||
<!-- 法院曝光台信息 -->
|
||||
<MultCourtInfoSection
|
||||
<!-- 法院曝光台信息 - 暂时隐藏 -->
|
||||
<!-- <MultCourtInfoSection
|
||||
:mult-court-info="data.multCourtInfo"
|
||||
/>
|
||||
/> -->
|
||||
|
||||
<!-- 借贷评估 -->
|
||||
<LoanEvaluationSection
|
||||
:loan-evaluation-verification-detail="data.loanEvaluationVerificationDetail"
|
||||
/>
|
||||
<LoanEvaluationSection :loan-evaluation-verification-detail="data.loanEvaluationVerificationDetail" />
|
||||
|
||||
<!-- 租赁风险评估 -->
|
||||
<LeasingRiskSection
|
||||
:leasing-risk-assessment="data.leasingRiskAssessment"
|
||||
/>
|
||||
<LeasingRiskSection :leasing-risk-assessment="data.leasingRiskAssessment" />
|
||||
|
||||
<!-- 关联风险监督 -->
|
||||
<RiskSupervisionSection
|
||||
:risk-supervision="data.riskSupervision"
|
||||
/>
|
||||
<RiskSupervisionSection :risk-supervision="data.riskSupervision" />
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -86,7 +86,7 @@ function splitDWBG8B4DForTabs(reportData) {
|
||||
}
|
||||
})
|
||||
|
||||
// 逾期风险产品
|
||||
// 逾期风险
|
||||
result.push({
|
||||
data: {
|
||||
apiID: 'DWBG8B4D_OverdueRisk',
|
||||
|
||||
108
src/ui/CIVYZ81NC.vue
Normal file
108
src/ui/CIVYZ81NC.vue
Normal file
@@ -0,0 +1,108 @@
|
||||
<script setup>
|
||||
import LTitle from "@/components/LTitle.vue";
|
||||
|
||||
const props = defineProps({
|
||||
data: {
|
||||
type: Object,
|
||||
required: false,
|
||||
default: () => null,
|
||||
},
|
||||
});
|
||||
console.log("data", props.data);
|
||||
// 获取实际的数据对象
|
||||
const actualData = props.data?.data;
|
||||
|
||||
// 日期格式化函数,将 2009-04-16 转换为 2009年04月16日
|
||||
const formatDate = (dateStr) => {
|
||||
if (!dateStr) return "";
|
||||
const [year, month, day] = dateStr.split("-");
|
||||
return `${year}年${month}月${day}日`;
|
||||
};
|
||||
|
||||
// 状态映射,根据 op_type 判断
|
||||
const statusMap = {
|
||||
IA: {
|
||||
text: "已婚",
|
||||
bgClass: "bg-green-100",
|
||||
textClass: "text-green-700",
|
||||
description: "已登记婚姻,家庭幸福美满",
|
||||
},
|
||||
IB: {
|
||||
text: "离异",
|
||||
bgClass: "bg-red-100",
|
||||
textClass: "text-red-700",
|
||||
description: "离异状态,未来生活可期",
|
||||
},
|
||||
INR: {
|
||||
text: "未登记",
|
||||
bgClass: "bg-yellow-100",
|
||||
textClass: "text-yellow-700",
|
||||
description: "未进行民政登记婚姻",
|
||||
},
|
||||
};
|
||||
|
||||
// 无记录时的状态
|
||||
const noRecordStatus = {
|
||||
text: "无相关记录",
|
||||
bgClass: "bg-gray-200",
|
||||
textClass: "text-gray-500",
|
||||
description: "暂无婚姻相关记录",
|
||||
opDate: null,
|
||||
};
|
||||
|
||||
// 根据 op_type 确定当前状态,默认值为 "无相关记录"
|
||||
const currentStatus = !actualData
|
||||
? noRecordStatus
|
||||
: actualData.op_type
|
||||
? { ...statusMap[actualData.op_type], opDate: formatDate(actualData.op_date) }
|
||||
: noRecordStatus;
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="card">
|
||||
<div class="status-info flex flex-col items-center">
|
||||
<div
|
||||
:class="`status-label rounded-full px-6 py-3 text-center font-bold shadow-md ${currentStatus.bgClass} ${currentStatus.textClass}`">
|
||||
{{ currentStatus.text }}
|
||||
</div>
|
||||
<div v-if="currentStatus.opDate" class="op-date-container mt-4 px-4 py-2 bg-blue-50 rounded-lg border border-blue-200">
|
||||
<p class="op-date text-sm font-medium text-blue-700">
|
||||
登记日期:{{ currentStatus.opDate }}
|
||||
</p>
|
||||
</div>
|
||||
<p v-html="currentStatus.description" class="status-description mt-3 text-sm text-gray-600"></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.status-info {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.status-label {
|
||||
font-size: 1.25rem;
|
||||
padding: 0.75rem 1.5rem;
|
||||
border-radius: 9999px;
|
||||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.status-description {
|
||||
color: #4a5568;
|
||||
margin-top: 0.5rem;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.additional-info p {
|
||||
margin-top: 0.5rem;
|
||||
}
|
||||
|
||||
.op-date-container {
|
||||
box-shadow: 0 2px 4px rgba(59, 130, 246, 0.1);
|
||||
}
|
||||
|
||||
.op-date-container:hover {
|
||||
box-shadow: 0 4px 8px rgba(59, 130, 246, 0.15);
|
||||
}
|
||||
</style>
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="bg-white rounded-xl shadow-sm p-6">
|
||||
<LTitle title="租赁行为" type="purple" />
|
||||
|
||||
|
||||
<div class="mt-4">
|
||||
<!-- 租赁行为概览 -->
|
||||
<div class="bg-gradient-to-r from-purple-50 to-pink-50 rounded-lg p-4 mb-4">
|
||||
@@ -31,14 +31,10 @@
|
||||
<span class="w-2 h-2 bg-blue-500 rounded-full mr-2"></span>
|
||||
租赁申请时间分布
|
||||
</h3>
|
||||
|
||||
|
||||
<!-- 双柱状图:申请次数 vs 申请机构数 -->
|
||||
<div class="mb-4">
|
||||
<v-chart
|
||||
class="chart-container"
|
||||
:option="timeDistributionChartOption"
|
||||
autoresize
|
||||
/>
|
||||
<v-chart class="chart-container" :option="timeDistributionChartOption" autoresize />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -50,7 +46,7 @@
|
||||
<span class="w-2 h-2 bg-red-500 rounded-full mr-2"></span>
|
||||
近期活动(高风险关注期)
|
||||
</h4>
|
||||
|
||||
|
||||
<!-- 近3天 -->
|
||||
<div class="mb-4">
|
||||
<h5 class="font-semibold text-gray-700 mb-2 flex items-center">
|
||||
@@ -66,19 +62,22 @@
|
||||
</div>
|
||||
<div class="flex justify-between items-center">
|
||||
<span class="text-gray-600 text-sm">🏢 申请机构数</span>
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationInstitutionsLast3Days)" class="font-semibold">
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationInstitutionsLast3Days)"
|
||||
class="font-semibold">
|
||||
{{ getInstitutionCount(rentalBehavior?.rentalApplicationInstitutionsLast3Days) }} 家
|
||||
</span>
|
||||
</div>
|
||||
<div class="flex justify-between items-center">
|
||||
<span class="text-gray-600 text-sm">🌙 周末申请次数</span>
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast3DaysWeekend)" class="font-semibold">
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast3DaysWeekend)"
|
||||
class="font-semibold">
|
||||
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast3DaysWeekend) }} 次
|
||||
</span>
|
||||
</div>
|
||||
<div class="flex justify-between items-center">
|
||||
<span class="text-gray-600 text-sm">🌃 夜间申请次数</span>
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast3DaysNight)" class="font-semibold">
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast3DaysNight)"
|
||||
class="font-semibold">
|
||||
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast3DaysNight) }} 次
|
||||
</span>
|
||||
</div>
|
||||
@@ -100,19 +99,22 @@
|
||||
</div>
|
||||
<div class="flex justify-between items-center">
|
||||
<span class="text-gray-600 text-sm">🏢 申请机构数</span>
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationInstitutionsLast7Days)" class="font-semibold">
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationInstitutionsLast7Days)"
|
||||
class="font-semibold">
|
||||
{{ getInstitutionCount(rentalBehavior?.rentalApplicationInstitutionsLast7Days) }} 家
|
||||
</span>
|
||||
</div>
|
||||
<div class="flex justify-between items-center">
|
||||
<span class="text-gray-600 text-sm">🌙 周末申请次数</span>
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast7DaysWeekend)" class="font-semibold">
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast7DaysWeekend)"
|
||||
class="font-semibold">
|
||||
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast7DaysWeekend) }} 次
|
||||
</span>
|
||||
</div>
|
||||
<div class="flex justify-between items-center">
|
||||
<span class="text-gray-600 text-sm">🌃 夜间申请次数</span>
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast7DaysNight)" class="font-semibold">
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast7DaysNight)"
|
||||
class="font-semibold">
|
||||
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast7DaysNight) }} 次
|
||||
</span>
|
||||
</div>
|
||||
@@ -134,19 +136,22 @@
|
||||
</div>
|
||||
<div class="flex justify-between items-center">
|
||||
<span class="text-gray-600 text-sm">🏢 申请机构数</span>
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationInstitutionsLast14Days)" class="font-semibold">
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationInstitutionsLast14Days)"
|
||||
class="font-semibold">
|
||||
{{ getInstitutionCount(rentalBehavior?.rentalApplicationInstitutionsLast14Days) }} 家
|
||||
</span>
|
||||
</div>
|
||||
<div class="flex justify-between items-center">
|
||||
<span class="text-gray-600 text-sm">🌙 周末申请次数</span>
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast14DaysWeekend)" class="font-semibold">
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast14DaysWeekend)"
|
||||
class="font-semibold">
|
||||
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast14DaysWeekend) }} 次
|
||||
</span>
|
||||
</div>
|
||||
<div class="flex justify-between items-center">
|
||||
<span class="text-gray-600 text-sm">🌃 夜间申请次数</span>
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast14DaysNight)" class="font-semibold">
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast14DaysNight)"
|
||||
class="font-semibold">
|
||||
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast14DaysNight) }} 次
|
||||
</span>
|
||||
</div>
|
||||
@@ -168,19 +173,22 @@
|
||||
</div>
|
||||
<div class="flex justify-between items-center">
|
||||
<span class="text-gray-600 text-sm">🏢 申请机构数</span>
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationInstitutionsLast1Month)" class="font-semibold">
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationInstitutionsLast1Month)"
|
||||
class="font-semibold">
|
||||
{{ getInstitutionCount(rentalBehavior?.rentalApplicationInstitutionsLast1Month) }} 家
|
||||
</span>
|
||||
</div>
|
||||
<div class="flex justify-between items-center">
|
||||
<span class="text-gray-600 text-sm">🌙 周末申请次数</span>
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast1MonthWeekend)" class="font-semibold">
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast1MonthWeekend)"
|
||||
class="font-semibold">
|
||||
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast1MonthWeekend) }} 次
|
||||
</span>
|
||||
</div>
|
||||
<div class="flex justify-between items-center">
|
||||
<span class="text-gray-600 text-sm">🌃 夜间申请次数</span>
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast1MonthNight)" class="font-semibold">
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast1MonthNight)"
|
||||
class="font-semibold">
|
||||
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast1MonthNight) }} 次
|
||||
</span>
|
||||
</div>
|
||||
@@ -194,7 +202,7 @@
|
||||
<span class="w-2 h-2 bg-yellow-500 rounded-full mr-2"></span>
|
||||
中期租赁活动
|
||||
</h4>
|
||||
|
||||
|
||||
<!-- 近3个月 -->
|
||||
<div class="mb-4">
|
||||
<h5 class="font-semibold text-gray-700 mb-2 flex items-center">
|
||||
@@ -204,25 +212,29 @@
|
||||
<div class="grid grid-cols-1 gap-2 bg-white rounded-lg p-3 border">
|
||||
<div class="flex justify-between items-center">
|
||||
<span class="text-gray-600 text-sm">📊 申请次数</span>
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast3Months)" class="font-semibold">
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast3Months)"
|
||||
class="font-semibold">
|
||||
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast3Months) }} 次
|
||||
</span>
|
||||
</div>
|
||||
<div class="flex justify-between items-center">
|
||||
<span class="text-gray-600 text-sm">🏢 申请机构数</span>
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationInstitutionsLast3Months)" class="font-semibold">
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationInstitutionsLast3Months)"
|
||||
class="font-semibold">
|
||||
{{ getInstitutionCount(rentalBehavior?.rentalApplicationInstitutionsLast3Months) }} 家
|
||||
</span>
|
||||
</div>
|
||||
<div class="flex justify-between items-center">
|
||||
<span class="text-gray-600 text-sm">🌙 周末申请次数</span>
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast3MonthsWeekend)" class="font-semibold">
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast3MonthsWeekend)"
|
||||
class="font-semibold">
|
||||
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast3MonthsWeekend) }} 次
|
||||
</span>
|
||||
</div>
|
||||
<div class="flex justify-between items-center">
|
||||
<span class="text-gray-600 text-sm">🌃 夜间申请次数</span>
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast3MonthsNight)" class="font-semibold">
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast3MonthsNight)"
|
||||
class="font-semibold">
|
||||
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast3MonthsNight) }} 次
|
||||
</span>
|
||||
</div>
|
||||
@@ -238,25 +250,29 @@
|
||||
<div class="grid grid-cols-1 gap-2 bg-white rounded-lg p-3 border">
|
||||
<div class="flex justify-between items-center">
|
||||
<span class="text-gray-600 text-sm">📊 申请次数</span>
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast6Months)" class="font-semibold">
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast6Months)"
|
||||
class="font-semibold">
|
||||
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast6Months) }} 次
|
||||
</span>
|
||||
</div>
|
||||
<div class="flex justify-between items-center">
|
||||
<span class="text-gray-600 text-sm">🏢 申请机构数</span>
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationInstitutionsLast6Months)" class="font-semibold">
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationInstitutionsLast6Months)"
|
||||
class="font-semibold">
|
||||
{{ getInstitutionCount(rentalBehavior?.rentalApplicationInstitutionsLast6Months) }} 家
|
||||
</span>
|
||||
</div>
|
||||
<div class="flex justify-between items-center">
|
||||
<span class="text-gray-600 text-sm">🌙 周末申请次数</span>
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast6MonthsWeekend)" class="font-semibold">
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast6MonthsWeekend)"
|
||||
class="font-semibold">
|
||||
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast6MonthsWeekend) }} 次
|
||||
</span>
|
||||
</div>
|
||||
<div class="flex justify-between items-center">
|
||||
<span class="text-gray-600 text-sm">🌃 夜间申请次数</span>
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast6MonthsNight)" class="font-semibold">
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast6MonthsNight)"
|
||||
class="font-semibold">
|
||||
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast6MonthsNight) }} 次
|
||||
</span>
|
||||
</div>
|
||||
@@ -270,7 +286,7 @@
|
||||
<span class="w-2 h-2 bg-green-500 rounded-full mr-2"></span>
|
||||
长期租赁活动
|
||||
</h4>
|
||||
|
||||
|
||||
<!-- 近12个月 -->
|
||||
<div>
|
||||
<h5 class="font-semibold text-gray-700 mb-2 flex items-center">
|
||||
@@ -280,25 +296,29 @@
|
||||
<div class="grid grid-cols-1 gap-2 bg-white rounded-lg p-3 border">
|
||||
<div class="flex justify-between items-center">
|
||||
<span class="text-gray-600 text-sm">📊 申请次数</span>
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast12Months)" class="font-semibold">
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast12Months)"
|
||||
class="font-semibold">
|
||||
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast12Months) }} 次
|
||||
</span>
|
||||
</div>
|
||||
<div class="flex justify-between items-center">
|
||||
<span class="text-gray-600 text-sm">🏢 申请机构数</span>
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationInstitutionsLast12Months)" class="font-semibold">
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationInstitutionsLast12Months)"
|
||||
class="font-semibold">
|
||||
{{ getInstitutionCount(rentalBehavior?.rentalApplicationInstitutionsLast12Months) }} 家
|
||||
</span>
|
||||
</div>
|
||||
<div class="flex justify-between items-center">
|
||||
<span class="text-gray-600 text-sm">🌙 周末申请次数</span>
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast12MonthsWeekend)" class="font-semibold">
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast12MonthsWeekend)"
|
||||
class="font-semibold">
|
||||
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast12MonthsWeekend) }} 次
|
||||
</span>
|
||||
</div>
|
||||
<div class="flex justify-between items-center">
|
||||
<span class="text-gray-600 text-sm">🌃 夜间申请次数</span>
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast12MonthsNight)" class="font-semibold">
|
||||
<span :class="getActivityColor(rentalBehavior?.rentalApplicationCountLast12MonthsNight)"
|
||||
class="font-semibold">
|
||||
{{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast12MonthsNight) }} 次
|
||||
</span>
|
||||
</div>
|
||||
@@ -312,16 +332,12 @@
|
||||
<span class="w-2 h-2 bg-amber-500 rounded-full mr-2"></span>
|
||||
特殊时间段活动分析
|
||||
</h4>
|
||||
|
||||
|
||||
<!-- 周末 vs 夜间活动对比图 -->
|
||||
<div class="mb-4">
|
||||
<v-chart
|
||||
class="chart-container"
|
||||
:option="specialTimeChartOption"
|
||||
autoresize
|
||||
/>
|
||||
<v-chart class="chart-container" :option="specialTimeChartOption" autoresize />
|
||||
</div>
|
||||
|
||||
|
||||
<div class="text-xs text-gray-600 bg-white rounded-lg p-3 border">
|
||||
<div class="font-semibold mb-1">风险提示:</div>
|
||||
<div>• 周末申请:可能存在异常行为模式</div>
|
||||
@@ -395,9 +411,10 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- 温馨提示 -->
|
||||
<LRemark content="租赁行为分析展示申请人在租赁领域的行为模式,包括租赁申请频率、租赁金额分布、租赁期限和还款表现等。数据来源于租赁公司和金融租赁机构。租赁行为可以反映申请人的消费习惯、资金管理能力和信用意识。频繁的租赁申请或大额租赁可能暗示资金紧张,而良好的租赁还款记录则可以提升信用评价。建议关注租赁逾期情况和还款稳定性。" />
|
||||
<LRemark
|
||||
content="租赁行为分析展示申请人在租赁领域的行为模式,包括租赁申请频率、租赁金额分布、租赁期限和还款表现等。数据来源于租赁公司和金融租赁机构。租赁行为可以反映申请人的消费习惯、资金管理能力和信用意识。频繁的租赁申请或大额租赁可能暗示资金紧张,而良好的租赁还款记录则可以提升信用评价。建议关注租赁逾期情况和还款稳定性。" />
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
@@ -495,7 +512,7 @@ const hasHighFrequencyRisk = computed(() => {
|
||||
const data3Days = parseApplicationData(rentalBehavior.value?.rentalApplicationCountLast3Days)
|
||||
const data7Days = parseApplicationData(rentalBehavior.value?.rentalApplicationCountLast7Days)
|
||||
const data1Month = parseApplicationData(rentalBehavior.value?.rentalApplicationCountLast1Month)
|
||||
|
||||
|
||||
// 3天内超过2次,7天内超过5次,或1个月内超过10次视为高频
|
||||
return data3Days.count > 2 || data7Days.count > 5 || data1Month.count > 10
|
||||
})
|
||||
@@ -508,22 +525,22 @@ const hasAbnormalTimeActivity = computed(() => {
|
||||
// 近期高活动时段
|
||||
const recentHighActivity = computed(() => {
|
||||
const activities = []
|
||||
|
||||
|
||||
const data3Days = parseApplicationData(rentalBehavior.value?.rentalApplicationCountLast3Days)
|
||||
const data7Days = parseApplicationData(rentalBehavior.value?.rentalApplicationCountLast7Days)
|
||||
const data14Days = parseApplicationData(rentalBehavior.value?.rentalApplicationCountLast14Days)
|
||||
|
||||
|
||||
if (data3Days.count > 2) activities.push('近3天')
|
||||
if (data7Days.count > 5) activities.push('近7天')
|
||||
if (data14Days.count > 8) activities.push('近14天')
|
||||
|
||||
|
||||
return activities
|
||||
})
|
||||
|
||||
// 获取活动颜色
|
||||
const getActivityColor = (dataStr) => {
|
||||
const data = parseApplicationData(dataStr)
|
||||
|
||||
|
||||
if (data.count === 0) return 'text-green-600'
|
||||
if (data.count <= 2) return 'text-blue-600'
|
||||
if (data.count <= 5) return 'text-yellow-600'
|
||||
@@ -534,7 +551,7 @@ const getActivityColor = (dataStr) => {
|
||||
// 时间分布图表配置
|
||||
const timeDistributionChartOption = computed(() => {
|
||||
const periods = ['近3天', '近7天', '近14天', '近1个月', '近3个月', '近6个月', '近12个月']
|
||||
|
||||
|
||||
const countData = [
|
||||
getApplicationCount(rentalBehavior.value?.rentalApplicationCountLast3Days),
|
||||
getApplicationCount(rentalBehavior.value?.rentalApplicationCountLast7Days),
|
||||
@@ -544,7 +561,7 @@ const timeDistributionChartOption = computed(() => {
|
||||
getApplicationCount(rentalBehavior.value?.rentalApplicationCountLast6Months),
|
||||
getApplicationCount(rentalBehavior.value?.rentalApplicationCountLast12Months)
|
||||
]
|
||||
|
||||
|
||||
const institutionData = [
|
||||
getInstitutionCount(rentalBehavior.value?.rentalApplicationInstitutionsLast3Days),
|
||||
getInstitutionCount(rentalBehavior.value?.rentalApplicationInstitutionsLast7Days),
|
||||
@@ -554,14 +571,14 @@ const timeDistributionChartOption = computed(() => {
|
||||
getInstitutionCount(rentalBehavior.value?.rentalApplicationInstitutionsLast6Months),
|
||||
getInstitutionCount(rentalBehavior.value?.rentalApplicationInstitutionsLast12Months)
|
||||
]
|
||||
|
||||
|
||||
return {
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: {
|
||||
type: 'shadow'
|
||||
},
|
||||
formatter: function(params) {
|
||||
formatter: function (params) {
|
||||
let result = params[0].name + '<br/>'
|
||||
params.forEach(item => {
|
||||
result += `${item.seriesName}: ${item.value}<br/>`
|
||||
@@ -655,7 +672,7 @@ const timeDistributionChartOption = computed(() => {
|
||||
// 特殊时间段活动对比图表配置
|
||||
const specialTimeChartOption = computed(() => {
|
||||
const periods = ['近3天', '近7天', '近14天', '近1个月', '近3个月', '近6个月', '近12个月']
|
||||
|
||||
|
||||
const weekendData = [
|
||||
getApplicationCount(rentalBehavior.value?.rentalApplicationCountLast3DaysWeekend),
|
||||
getApplicationCount(rentalBehavior.value?.rentalApplicationCountLast7DaysWeekend),
|
||||
@@ -665,7 +682,7 @@ const specialTimeChartOption = computed(() => {
|
||||
getApplicationCount(rentalBehavior.value?.rentalApplicationCountLast6MonthsWeekend),
|
||||
getApplicationCount(rentalBehavior.value?.rentalApplicationCountLast12MonthsWeekend)
|
||||
]
|
||||
|
||||
|
||||
const nightData = [
|
||||
getApplicationCount(rentalBehavior.value?.rentalApplicationCountLast3DaysNight),
|
||||
getApplicationCount(rentalBehavior.value?.rentalApplicationCountLast7DaysNight),
|
||||
@@ -675,14 +692,14 @@ const specialTimeChartOption = computed(() => {
|
||||
getApplicationCount(rentalBehavior.value?.rentalApplicationCountLast6MonthsNight),
|
||||
getApplicationCount(rentalBehavior.value?.rentalApplicationCountLast12MonthsNight)
|
||||
]
|
||||
|
||||
|
||||
return {
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: {
|
||||
type: 'shadow'
|
||||
},
|
||||
formatter: function(params) {
|
||||
formatter: function (params) {
|
||||
let result = params[0].name + '<br/>'
|
||||
params.forEach(item => {
|
||||
result += `${item.seriesName}: ${item.value} 次<br/>`
|
||||
|
||||
@@ -1,74 +1,48 @@
|
||||
<template>
|
||||
<div class="card shadow-sm rounded-xl overflow-hidden">
|
||||
<!-- 基本信息 -->
|
||||
<BaseInfoSection
|
||||
:data="{ baseInfo: data.baseInfo }"
|
||||
/>
|
||||
<BaseInfoSection :data="{ baseInfo: data.baseInfo }" />
|
||||
|
||||
<!-- 身份信息核验 -->
|
||||
<StandLiveInfoSection
|
||||
:data="{ standLiveInfo: data.standLiveInfo }"
|
||||
/>
|
||||
<StandLiveInfoSection :data="{ standLiveInfo: data.standLiveInfo }" />
|
||||
|
||||
<!-- 命中风险标注 -->
|
||||
<RiskPointSection
|
||||
:data="{ riskPoint: data.riskPoint }"
|
||||
/>
|
||||
<RiskPointSection :data="{ riskPoint: data.riskPoint }" />
|
||||
|
||||
<!-- 公安重点人员核验 -->
|
||||
<SecurityInfoSection
|
||||
:data="{ securityInfo: data.securityInfo }"
|
||||
/>
|
||||
<SecurityInfoSection :data="{ securityInfo: data.securityInfo }" />
|
||||
|
||||
<!-- 涉赌涉诈人员核验 -->
|
||||
<AntiFraudInfoSection
|
||||
:data="{ antiFraudInfo: data.antiFraudInfo }"
|
||||
/>
|
||||
<AntiFraudInfoSection :data="{ antiFraudInfo: data.antiFraudInfo }" />
|
||||
|
||||
<!-- 风险名单 -->
|
||||
<RiskListSection
|
||||
:data="{ riskList: data.riskList }"
|
||||
/>
|
||||
<RiskListSection :data="{ riskList: data.riskList }" />
|
||||
|
||||
<!-- 历史借贷行为 -->
|
||||
<ApplicationStatisticsSection
|
||||
:data="{ applicationStatistics: data.applicationStatistics }"
|
||||
/>
|
||||
<ApplicationStatisticsSection :data="{ applicationStatistics: data.applicationStatistics }" />
|
||||
|
||||
<!-- 近24个月放款情况 -->
|
||||
<LendingStatisticsSection
|
||||
:data="{ lendingStatistics: data.lendingStatistics }"
|
||||
/>
|
||||
<LendingStatisticsSection :data="{ lendingStatistics: data.lendingStatistics }" />
|
||||
|
||||
<!-- 履约情况 -->
|
||||
<PerformanceStatisticsSection
|
||||
:data="{ performanceStatistics: data.performanceStatistics }"
|
||||
/>
|
||||
<PerformanceStatisticsSection :data="{ performanceStatistics: data.performanceStatistics }" />
|
||||
|
||||
<!-- 历史逾期记录 -->
|
||||
<OverdueRecordSection
|
||||
:data="{ overdueRecord: data.overdueRecord }"
|
||||
/>
|
||||
<OverdueRecordSection :data="{ overdueRecord: data.overdueRecord }" />
|
||||
|
||||
<!-- 授信详情 -->
|
||||
<CreditDetailSection
|
||||
:data="{ creditDetail: data.creditDetail }"
|
||||
/>
|
||||
<CreditDetailSection :data="{ creditDetail: data.creditDetail }" />
|
||||
|
||||
<!-- 租赁行为 -->
|
||||
<RentalBehaviorSection
|
||||
:data="{ rentalBehavior: data.rentalBehavior }"
|
||||
/>
|
||||
<RentalBehaviorSection :data="{ rentalBehavior: data.rentalBehavior }" />
|
||||
|
||||
<!-- 关联风险监督 -->
|
||||
<RiskSupervisionSection
|
||||
:data="{ riskSupervision: data.riskSupervision }"
|
||||
/>
|
||||
<RiskSupervisionSection :data="{ riskSupervision: data.riskSupervision }" />
|
||||
|
||||
<!-- 法院风险信息 -->
|
||||
<CourtRiskInfoSection
|
||||
<!-- <CourtRiskInfoSection
|
||||
:data="{ judiciaRiskInfos: data.judiciaRiskInfos }"
|
||||
/>
|
||||
/> -->
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -22,13 +22,14 @@
|
||||
<script setup>
|
||||
// 颜色配置(根据产品名称映射)
|
||||
const typeColors = {
|
||||
'老板企业风险': { bg: 'bg-blue-100', text: 'text-blue-800', dot: 'bg-blue-500' },
|
||||
'小微企业': { bg: 'bg-blue-100', text: 'text-blue-800', dot: 'bg-blue-500' },
|
||||
'入职风险': { bg: 'bg-green-100', text: 'text-green-800', dot: 'bg-green-500' },
|
||||
'家政风险': { bg: 'bg-purple-100', text: 'text-purple-800', dot: 'bg-purple-500' },
|
||||
'婚恋风险': { bg: 'bg-pink-100', text: 'text-pink-800', dot: 'bg-pink-500' },
|
||||
'贷前风险': { bg: 'bg-orange-100', text: 'text-orange-800', dot: 'bg-orange-500' },
|
||||
'租赁风险': { bg: 'bg-indigo-100', text: 'text-indigo-800', dot: 'bg-indigo-500' },
|
||||
'个人风险': { bg: 'bg-red-100', text: 'text-red-800', dot: 'bg-red-500' },
|
||||
'个人大数据': { bg: 'bg-red-100', text: 'text-red-800', dot: 'bg-red-500' },
|
||||
// 默认类型
|
||||
'default': { bg: 'bg-gray-100', text: 'text-gray-800', dot: 'bg-gray-500' }
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ function toVipApply() {
|
||||
function toService() {
|
||||
// window.location.href = '/service' // 跳转到客服页面
|
||||
window.location.href =
|
||||
"https://work.weixin.qq.com/kfid/kfc76b1d0f0d562777a"; // 跳转到客服页面
|
||||
"https://work.weixin.qq.com/kfid/kfc8a32720024833f57"; // 跳转到客服页面
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
@@ -1026,7 +1026,7 @@ async function applyVip() {
|
||||
// 联系客服
|
||||
function contactService() {
|
||||
// 跳转到客服页面
|
||||
window.location.href = 'https://work.weixin.qq.com/kfid/kfc76b1d0f0d562777a'
|
||||
window.location.href = 'https://work.weixin.qq.com/kfid/kfc8a32720024833f57'
|
||||
}
|
||||
|
||||
function formatExpiryTime(expiryTimeStr) {
|
||||
|
||||
@@ -131,7 +131,7 @@
|
||||
</van-field>
|
||||
<div class="text-xs text-gray-400 mt-1">
|
||||
提示:最高金额不能超过上限({{
|
||||
productConfigData?.price_range_max || 0
|
||||
productConfigData?.price_range_max || 0
|
||||
}}元)和大于最低金额({{ priceIncreaseMax }}元)<br />
|
||||
说明:设定的最高金额为定价区间的结束值,若下级设定的报告金额在区间内,则区间内部分将按比例获得收益。
|
||||
</div>
|
||||
@@ -178,13 +178,15 @@ import { settings } from "nprogress";
|
||||
|
||||
// 报告类型选项
|
||||
const reportOptions = [
|
||||
{ text: "入职风险", value: "backgroundcheck", id: 1 },
|
||||
{ text: "老板企业风险", value: "companyinfo", id: 2 },
|
||||
{ text: "家政风险", value: "homeservice", id: 3 },
|
||||
{ text: "婚恋风险", value: "marriage", id: 4 },
|
||||
{ text: "贷前风险", value: "prepreloanbackgroundcheck", id: 5 },
|
||||
{ text: "租赁风险", value: "rentalrisk", id: 6 },
|
||||
{ text: "个人风险", value: "riskassessment", id: 7 },
|
||||
{ text: "小微企业", value: "companyinfo", id: 2 },
|
||||
{ text: "贷前风险", value: "preloanbackgroundcheck", id: 5 },
|
||||
{ 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: "riskassessment", id: 7 },
|
||||
];
|
||||
|
||||
// 状态管理
|
||||
|
||||
@@ -2,12 +2,15 @@
|
||||
import { ref, reactive, computed, onMounted, onUnmounted, nextTick } from "vue";
|
||||
import { aesEncrypt } from "@/utils/crypto";
|
||||
import { useRoute } from "vue-router";
|
||||
import { useUserStore } from "@/stores/userStore";
|
||||
import { showConfirmDialog } from "vant";
|
||||
|
||||
import Payment from "@/components/Payment.vue";
|
||||
import CarNumberInput from "@/components/CarNumberInput.vue";
|
||||
|
||||
const route = useRoute();
|
||||
const router = useRouter();
|
||||
const userStore = useUserStore();
|
||||
const showPayment = ref(false);
|
||||
const queryId = ref(null);
|
||||
const name = ref("");
|
||||
@@ -57,7 +60,35 @@ const isPhoneNumberValid = computed(() => {
|
||||
return /^1[3-9]\d{9}$/.test(mobile.value);
|
||||
});
|
||||
const isIdCardValid = computed(() => /^\d{17}[\dX]$/i.test(idCard.value));
|
||||
|
||||
// 检查登录状态
|
||||
const isLoggedIn = computed(() => userStore.isLoggedIn);
|
||||
|
||||
// 处理输入框点击事件
|
||||
const handleInputClick = async () => {
|
||||
if (!isLoggedIn.value) {
|
||||
try {
|
||||
await showConfirmDialog({
|
||||
title: '提示',
|
||||
message: '您需要登录后才能进行查询,是否前往登录?',
|
||||
confirmButtonText: '前往登录',
|
||||
cancelButtonText: '取消',
|
||||
});
|
||||
// 用户点击确认,跳转到登录页面
|
||||
router.push('/login');
|
||||
} catch {
|
||||
// 用户点击取消,什么都不做
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function handleSubmit() {
|
||||
// 如果未登录,跳转到登录页面
|
||||
if (!isLoggedIn.value) {
|
||||
router.push('/login');
|
||||
return;
|
||||
}
|
||||
|
||||
// 基本协议验证
|
||||
if (!agreeToTerms.value) {
|
||||
showToast({ message: `请阅读并同意用户协议和隐私政策` });
|
||||
@@ -185,7 +216,7 @@ const getFeatureIcon = (apiId) => {
|
||||
FLXG0V4B: "/inquire_icons/sifasheyu.svg", // 司法涉诉
|
||||
JRZQ8203: "/inquire_icons/jiedaixingwei.svg", // 借贷行为记录
|
||||
JRZQ09J8: "/inquire_icons/beijianguanrenyuan.svg", // 收入评估
|
||||
JRZQ4B6C: "/inquire_icons/fengxianxingwei.svg", // 信贷表现
|
||||
JRZQ4B6C: "/inquire_icons/fengxianxingwei.svg", // 探针C风险评估
|
||||
};
|
||||
return iconMap[apiId] || "/inquire_icons/default.svg";
|
||||
};
|
||||
@@ -200,10 +231,10 @@ const handleIconError = (event) => {
|
||||
const getCardClass = (index) => {
|
||||
const colorIndex = index % 4;
|
||||
const colorClasses = [
|
||||
'bg-gradient-to-br from-blue-50 via-blue-25 to-white border-2 border-blue-200',
|
||||
'bg-gradient-to-br from-green-50 via-green-25 to-white border-2 border-green-200',
|
||||
'bg-gradient-to-br from-purple-50 via-purple-25 to-white border-2 border-purple-200',
|
||||
'bg-gradient-to-br from-orange-50 via-orange-25 to-white border-2 border-orange-200'
|
||||
'bg-gradient-to-br from-blue-50 via-blue-25 to-white ',
|
||||
'bg-gradient-to-br from-green-50 via-green-25 to-white ',
|
||||
'bg-gradient-to-br from-purple-50 via-purple-25 to-white ',
|
||||
'bg-gradient-to-br from-orange-50 via-orange-25 to-white '
|
||||
];
|
||||
return colorClasses[colorIndex];
|
||||
};
|
||||
@@ -224,21 +255,24 @@ onUnmounted(() => {
|
||||
<div class="mb-4 text-lg font-semibold" style="color: var(--van-text-color);">基本信息</div>
|
||||
<div class="mb-4">
|
||||
<label for="name" class="form-label block mb-2">姓名</label>
|
||||
<input v-model="name" id="name" type="text" placeholder="请输入姓名" class="form-input" />
|
||||
<input v-model="name" id="name" type="text" placeholder="请输入姓名" class="form-input"
|
||||
@click="handleInputClick" />
|
||||
</div>
|
||||
<div class="mb-4">
|
||||
<label for="idCard" class="form-label block mb-2">身份证号</label>
|
||||
<input v-model="idCard" id="idCard" type="text" placeholder="请输入身份证号" class="form-input" />
|
||||
<input v-model="idCard" id="idCard" type="text" placeholder="请输入身份证号" class="form-input"
|
||||
@click="handleInputClick" />
|
||||
</div>
|
||||
<div class="mb-4">
|
||||
<label for="mobile" class="form-label block mb-2">手机号</label>
|
||||
<input v-model="mobile" id="mobile" type="tel" placeholder="请输入手机号" class="form-input" />
|
||||
<input v-model="mobile" id="mobile" type="tel" placeholder="请输入手机号" class="form-input"
|
||||
@click="handleInputClick" />
|
||||
</div>
|
||||
<div class="mb-4">
|
||||
<label for="verificationCode" class="form-label block mb-2">验证码</label>
|
||||
<div class="flex items-center gap-2">
|
||||
<input v-model="verificationCode" id="verificationCode" placeholder="请输入验证码" maxlength="6"
|
||||
class="form-input flex-1 min-w-0" />
|
||||
class="form-input flex-1 min-w-0" @click="handleInputClick" />
|
||||
<button
|
||||
class="px-4 py-2 text-sm whitespace-nowrap flex-shrink-0 rounded-lg border transition-colors"
|
||||
:class="isCountingDown || !isPhoneNumberValid
|
||||
@@ -278,7 +312,7 @@ onUnmounted(() => {
|
||||
<button
|
||||
class="flex-1 rounded-xl sm:rounded-l-none sm:rounded-r-xl py-3 text-white text-base transition-colors"
|
||||
style="background-color: var(--van-theme-primary);" @click="handleSubmit">
|
||||
立即查询
|
||||
{{ isLoggedIn ? '立即查询' : '前往登录' }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -303,8 +337,7 @@ onUnmounted(() => {
|
||||
{ name: '执行案件', icon: 'zhixinganjian.svg' },
|
||||
{ name: '限高被执行', icon: 'xianzhigaoxiaofei.svg' },
|
||||
]" :key="`${feature.id}-${caseIndex}`"
|
||||
class="aspect-square rounded-xl text-center text-sm text-gray-700 font-medium flex flex-col items-center justify-center p-2 shadow-lg"
|
||||
:class="getCardClass(index + caseIndex)">
|
||||
class="aspect-square text-center text-sm text-gray-700 font-medium flex flex-col items-center justify-center">
|
||||
<div class="mb-1">
|
||||
<img :src="`/inquire_icons/${caseType.icon}`" :alt="caseType.name"
|
||||
class="w-6 h-6 drop-shadow-sm mx-auto" @error="handleIconError" />
|
||||
@@ -322,20 +355,19 @@ onUnmounted(() => {
|
||||
{ name: '要素核查', icon: 'beijianguanrenyuan.svg' },
|
||||
{ name: '运营商核验', icon: 'mingxiacheliang.svg' },
|
||||
{ name: '公安重点人员检验', icon: 'xingshi.svg' },
|
||||
{ name: '逾期风险产品', icon: 'huankuanyali.svg' },
|
||||
{ name: '法院曝光台信息', icon: 'sifasheyu.svg' },
|
||||
{ name: '逾期风险综述', icon: 'huankuanyali.svg' },
|
||||
// { name: '法院曝光台信息', icon: 'sifasheyu.svg' },
|
||||
{ name: '借贷评估', icon: 'jiedaishenqing.svg' },
|
||||
{ name: '租赁风险评估', icon: 'jiedaixingwei.svg' },
|
||||
{ name: '关联风险监督', icon: 'renqiguanxi.svg' },
|
||||
{ name: '规则风险提示', icon: 'fengxianxingwei.svg' },
|
||||
]" :key="`${feature.id}-${moduleIndex}`"
|
||||
class="aspect-square rounded-xl text-center text-sm text-gray-700 font-medium flex flex-col items-center justify-center p-2 shadow-lg"
|
||||
:class="getCardClass(index + moduleIndex)">
|
||||
class="aspect-squaretext-center text-sm text-gray-700 font-medium flex flex-col items-center justify-center">
|
||||
<div class="text-xl mb-1 flex items-center justify-center">
|
||||
<img :src="`/inquire_icons/${module.icon}`" :alt="module.name"
|
||||
class="w-6 h-6 drop-shadow-sm" @error="handleIconError" />
|
||||
</div>
|
||||
<div class="text-xs leading-tight px-1 font-medium"
|
||||
<div class="text-xs leading-tight px-1 font-medium text-center"
|
||||
style="word-break: break-all; line-height: 1.2">
|
||||
{{ module.name }}
|
||||
</div>
|
||||
@@ -352,13 +384,12 @@ onUnmounted(() => {
|
||||
{ name: '风险指标详情', icon: 'fengxianxingwei.svg' },
|
||||
{ name: '专业建议', icon: 'yuepeichang.svg' },
|
||||
]" :key="`${feature.id}-${moduleIndex}`"
|
||||
class="aspect-square rounded-xl text-center text-sm text-gray-700 font-medium flex flex-col items-center justify-center p-2 shadow-lg"
|
||||
:class="getCardClass(index + moduleIndex)">
|
||||
class="aspect-square text-center text-sm text-gray-700 font-medium flex flex-col items-center justify-center">
|
||||
<div class="text-xl mb-1 flex items-center justify-center">
|
||||
<img :src="`/inquire_icons/${module.icon}`" :alt="module.name"
|
||||
class="w-6 h-6 drop-shadow-sm" @error="handleIconError" />
|
||||
</div>
|
||||
<div class="text-xs leading-tight px-1 font-medium"
|
||||
<div class="text-xs leading-tight px-1 font-medium text-center"
|
||||
style="word-break: break-all; line-height: 1.2">
|
||||
{{ module.name }}
|
||||
</div>
|
||||
@@ -376,13 +407,12 @@ onUnmounted(() => {
|
||||
{ name: '行政处罚', icon: 'xingzhengfuwu.svg' },
|
||||
{ name: '经营异常', icon: 'fengxianxingwei.svg' },
|
||||
]" :key="`${feature.id}-${moduleIndex}`"
|
||||
class="aspect-square rounded-xl text-center text-sm text-gray-700 font-medium flex flex-col items-center justify-center p-2 shadow-lg"
|
||||
:class="getCardClass(index + moduleIndex)">
|
||||
class="aspect-square text-center text-sm text-gray-700 font-medium flex flex-col items-center justify-center">
|
||||
<div class="text-xl mb-1 flex items-center justify-center">
|
||||
<img :src="`/inquire_icons/${module.icon}`" :alt="module.name"
|
||||
class="w-6 h-6 drop-shadow-sm" @error="handleIconError" />
|
||||
</div>
|
||||
<div class="text-xs leading-tight px-1 font-medium"
|
||||
<div class="text-xs leading-tight px-1 font-medium text-center"
|
||||
style="word-break: break-all; line-height: 1.2">
|
||||
{{ module.name }}
|
||||
</div>
|
||||
@@ -403,15 +433,14 @@ onUnmounted(() => {
|
||||
{ name: '授信详情', icon: 'huankuanyali.svg' },
|
||||
{ name: '租赁行为', icon: 'mingxiacheliang.svg' },
|
||||
{ name: '关联风险监督', icon: 'renqiguanxi.svg' },
|
||||
{ name: '法院风险信息', icon: 'sifasheyu.svg' },
|
||||
// { name: '法院风险信息', icon: 'sifasheyu.svg' },
|
||||
]" :key="`${feature.id}-${moduleIndex}`"
|
||||
class="aspect-square rounded-xl text-center text-sm text-gray-700 font-medium flex flex-col items-center justify-center p-2 shadow-lg"
|
||||
:class="getCardClass(index + moduleIndex)">
|
||||
class="aspect-square text-center text-sm text-gray-700 font-medium flex flex-col items-center justify-center">
|
||||
<div class="text-xl mb-1 flex items-center justify-center">
|
||||
<img :src="`/inquire_icons/${module.icon}`" :alt="module.name"
|
||||
class="w-6 h-6 drop-shadow-sm" @error="handleIconError" />
|
||||
</div>
|
||||
<div class="text-xs leading-tight px-1 font-medium"
|
||||
<div class="text-xs leading-tight px-1 font-medium text-center"
|
||||
style="word-break: break-all; line-height: 1.2">
|
||||
{{ module.name }}
|
||||
</div>
|
||||
@@ -420,13 +449,12 @@ onUnmounted(() => {
|
||||
|
||||
<!-- 其他功能正常显示 -->
|
||||
<div v-else
|
||||
class="aspect-square rounded-xl text-center text-sm text-gray-700 font-medium flex flex-col items-center justify-between p-2 shadow-lg"
|
||||
:class="getCardClass(index)">
|
||||
class="aspect-square text-center text-sm text-gray-700 font-medium flex flex-col items-center justify-between">
|
||||
<div class="flex items-center justify-center flex-1">
|
||||
<img :src="getFeatureIcon(feature.api_id)" :alt="feature.name"
|
||||
class="w-6 h-6 drop-shadow-sm" @error="handleIconError" />
|
||||
</div>
|
||||
<div class="text-xs leading-tight font-medium h-8 flex items-center justify-center"
|
||||
<div class="text-xs leading-tight font-medium h-8 flex items-center justify-center text-center"
|
||||
style="word-break: break-all; line-height: 1.1">
|
||||
{{ feature.name }}
|
||||
</div>
|
||||
|
||||
@@ -22,19 +22,18 @@
|
||||
<div class="space-y-1">
|
||||
<h2 class="text-2xl font-bold" style="color: var(--van-text-color);">
|
||||
{{
|
||||
!isLoggedIn
|
||||
? "点击登录"
|
||||
: mobile
|
||||
? maskName(mobile)
|
||||
: isWeChat
|
||||
? "微信用户"
|
||||
: "未绑定手机号"
|
||||
}}
|
||||
!isLoggedIn
|
||||
? "点击登录"
|
||||
: mobile
|
||||
? maskName(mobile)
|
||||
: isWeChat
|
||||
? "微信用户"
|
||||
: "未绑定手机号"
|
||||
}}
|
||||
</h2>
|
||||
<!-- 手机号绑定提示 -->
|
||||
<template v-if="isLoggedIn && !mobile">
|
||||
<p @click.stop="showBindPhoneDialog"
|
||||
class="text-sm cursor-pointer hover:underline"
|
||||
<p @click.stop="showBindPhoneDialog" class="text-sm cursor-pointer hover:underline"
|
||||
style="color: var(--van-theme-primary);">
|
||||
点击绑定手机号码
|
||||
</p>
|
||||
@@ -63,6 +62,12 @@
|
||||
<button class="feature-item hover:bg-blue-50" @click="toHistory">
|
||||
📃 我的报告
|
||||
</button>
|
||||
<button class="feature-item hover:bg-blue-50" @click="toApiStore">
|
||||
🏪 API商店
|
||||
</button>
|
||||
<button class="feature-item hover:bg-blue-50" @click="toCooperation">
|
||||
🤝 商务合作
|
||||
</button>
|
||||
<button class="feature-item hover:bg-blue-50" @click="toUserAgreement">
|
||||
📜 用户协议
|
||||
</button>
|
||||
@@ -80,8 +85,7 @@
|
||||
📴 注销账号
|
||||
</button> -->
|
||||
<button v-if="isLoggedIn && !isWeChat" class="feature-item hover:bg-red-50"
|
||||
style="color: var(--van-theme-primary);"
|
||||
@click="handleLogout">
|
||||
style="color: var(--van-theme-primary);" @click="handleLogout">
|
||||
⏏️ 退出登录
|
||||
</button>
|
||||
</div>
|
||||
@@ -151,7 +155,12 @@ const maskName = (name) => {
|
||||
function toHistory() {
|
||||
router.push(`/historyQuery`);
|
||||
}
|
||||
|
||||
function toCooperation() {
|
||||
window.location.href = "https://www.tianyuandata.com";
|
||||
}
|
||||
function toApiStore() {
|
||||
window.location.href = "https://www.tianyuanapi.com/";
|
||||
}
|
||||
function toUserAgreement() {
|
||||
router.push(`/userAgreement`);
|
||||
}
|
||||
@@ -200,7 +209,7 @@ function handleCancelAccount() {
|
||||
|
||||
function toService() {
|
||||
window.location.href =
|
||||
"https://work.weixin.qq.com/kfid/kfc76b1d0f0d562777a"; // 跳转到客服页面
|
||||
"https://work.weixin.qq.com/kfid/kfc8a32720024833f57"; // 跳转到客服页面
|
||||
}
|
||||
|
||||
const toVipConfig = () => {
|
||||
@@ -292,5 +301,4 @@ onBeforeMount(() => {
|
||||
.shadow-glow {
|
||||
filter: drop-shadow(0 0 8px rgba(163, 51, 200, 0.2));
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
@@ -422,7 +422,7 @@ function goHome() {
|
||||
function contactService() {
|
||||
// 可以替换为实际的客服联系逻辑,如打开聊天窗口或跳转到客服页面
|
||||
window.location.href =
|
||||
"https://work.weixin.qq.com/kfid/kfc76b1d0f0d562777a"; // 跳转到客服页面
|
||||
"https://work.weixin.qq.com/kfid/kfc8a32720024833f57"; // 跳转到客服页面
|
||||
}
|
||||
|
||||
// 暴露方法和数据供父组件或路由调用
|
||||
|
||||
@@ -88,13 +88,18 @@
|
||||
import PriceInputPopup from '@/components/PriceInputPopup.vue';
|
||||
import VipBanner from '@/components/VipBanner.vue';
|
||||
const reportTypes = [
|
||||
{ text: '入职风险', value: 'backgroundcheck', id: 1 },
|
||||
{ text: '老板企业风险', value: 'companyinfo', id: 2 },
|
||||
{ text: '家政风险', value: 'homeservice', id: 3 },
|
||||
{ text: '婚恋风险', value: 'marriage', id: 4 },
|
||||
{ text: '贷前风险', value: 'prepreloanbackgroundcheck', id: 5 },
|
||||
{ text: '租赁风险', value: 'rentalrisk', id: 6 },
|
||||
{ text: '个人风险', value: 'riskassessment', id: 7 },
|
||||
{ text: "小微企业", value: "companyinfo", id: 2 },
|
||||
{ text: "贷前风险", value: "preloanbackgroundcheck", id: 5 },
|
||||
{ text: "个人大数据", value: "personaldata", id: 27 },
|
||||
|
||||
// { text: '入职风险', value: 'backgroundcheck', id: 1 },
|
||||
// { text: '小微企业', value: 'companyinfo', id: 2 },
|
||||
// { text: '家政风险', value: 'homeservice', id: 3 },
|
||||
// { text: '婚恋风险', value: 'marriage', id: 4 },
|
||||
// { text: '贷前风险', value: 'preloanbackgroundcheck', id: 5 },
|
||||
// { text: '租赁风险', value: 'rentalrisk', id: 6 },
|
||||
// { text: '个人风险', value: 'riskassessment', id: 7 },
|
||||
// { text: "个人大数据", value: "personaldata", id: 27 },
|
||||
];
|
||||
const showTypePicker = ref(false);
|
||||
const showApplyPopup = ref(false); // 用来控制申请代理弹窗的显示
|
||||
|
||||
@@ -61,16 +61,16 @@ async function getProduct() {
|
||||
feature.value = agentLinkData.value.data.product_en;
|
||||
featureData.value = agentLinkData.value.data;
|
||||
// 确保 FLXG0V4B 排在首位
|
||||
if (
|
||||
featureData.value.features &&
|
||||
featureData.value.features.length > 0
|
||||
) {
|
||||
featureData.value.features.sort((a, b) => {
|
||||
if (a.api_id === "FLXG0V4B") return -1;
|
||||
if (b.api_id === "FLXG0V4B") return 1;
|
||||
return 0;
|
||||
});
|
||||
}
|
||||
if (
|
||||
featureData.value.features &&
|
||||
featureData.value.features.length > 0
|
||||
) {
|
||||
featureData.value.features.sort((a, b) => {
|
||||
if (a.api_id === "FLXG0V4B") return -1;
|
||||
if (b.api_id === "FLXG0V4B") return 1;
|
||||
return 0;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -289,9 +289,9 @@ onUnmounted(() => {
|
||||
: 'background-color: var(--van-theme-primary);'"
|
||||
:disabled="isCountingDown || !isPhoneNumberValid" @click="sendVerificationCode">
|
||||
{{
|
||||
isCountingDown
|
||||
? `${countdown}s重新获取`
|
||||
: "获取验证码"
|
||||
isCountingDown
|
||||
? `${countdown}s重新获取`
|
||||
: "获取验证码"
|
||||
}}
|
||||
</button>
|
||||
</div>
|
||||
@@ -363,13 +363,13 @@ onUnmounted(() => {
|
||||
{ name: '要素核查', icon: 'beijianguanrenyuan.svg' },
|
||||
{ name: '运营商核验', icon: 'mingxiacheliang.svg' },
|
||||
{ name: '公安重点人员检验', icon: 'xingshi.svg' },
|
||||
{ name: '逾期风险产品', icon: 'huankuanyali.svg' },
|
||||
{ name: '法院曝光台信息', icon: 'sifasheyu.svg' },
|
||||
{ name: '借贷评估', icon: 'jiedaishenqing.svg' },
|
||||
{ name: '租赁风险评估', icon: 'jiedaixingwei.svg' },
|
||||
{ name: '关联风险监督', icon: 'renqiguanxi.svg' },
|
||||
{ name: '规则风险提示', icon: 'fengxianxingwei.svg' },
|
||||
]" :key="`${feature.id}-${moduleIndex}`"
|
||||
{ name: '逾期风险综述', icon: 'huankuanyali.svg' },
|
||||
{ name: '法院曝光台信息', icon: 'sifasheyu.svg' },
|
||||
{ name: '借贷评估', icon: 'jiedaishenqing.svg' },
|
||||
{ name: '租赁风险评估', icon: 'jiedaixingwei.svg' },
|
||||
{ name: '关联风险监督', icon: 'renqiguanxi.svg' },
|
||||
{ name: '规则风险提示', icon: 'fengxianxingwei.svg' },
|
||||
]" :key="`${feature.id}-${moduleIndex}`"
|
||||
class="aspect-square rounded-xl text-center text-sm text-gray-700 font-medium flex flex-col items-center justify-center p-2 shadow-lg"
|
||||
:class="getCardClass(index + moduleIndex)">
|
||||
<div class="text-xl mb-1 flex items-center justify-center">
|
||||
@@ -659,4 +659,3 @@ button:active {
|
||||
transform: translateY(0);
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ import { storeToRefs } from "pinia";
|
||||
const agentStore = useAgentStore();
|
||||
const { isAgent } = storeToRefs(agentStore);
|
||||
import personalDataIcon from "@/assets/images/personal_data_bg.png";
|
||||
import companyIcon from "@/assets/images/company_bg.png";
|
||||
import companyIcon from "@/assets/images/index_icon_6.png";
|
||||
import loanCheckIcon from "@/assets/images/loan_check_bg.png";
|
||||
function toInquire(name) {
|
||||
router.push(`/inquire/${name}`);
|
||||
@@ -52,7 +52,7 @@ const services = ref([
|
||||
name: "companyinfo",
|
||||
subtitle: "信用报告",
|
||||
bg: companyIcon,
|
||||
bgColor: "bg-blue-400",
|
||||
bgColor: "bg-purple-400",
|
||||
position:
|
||||
"rounded-tr-[35px] rounded-br-[35px] rounded-tl-lg rounded-bl-lg",
|
||||
},
|
||||
@@ -66,12 +66,17 @@ const services = ref([
|
||||
"rounded-tr-[35px] rounded-br-[35px] rounded-tl-lg rounded-bl-lg",
|
||||
},
|
||||
]);
|
||||
|
||||
function toCooperation() {
|
||||
window.location.href = "https://www.tianyuandata.com";
|
||||
}
|
||||
const noticeText = ref([]);
|
||||
|
||||
function toHistory() {
|
||||
router.push(`/historyQuery`);
|
||||
}
|
||||
const toBigData = () => {
|
||||
window.location.href = "https://www.tybigdata.com/";
|
||||
};
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -154,7 +159,8 @@ function toHistory() {
|
||||
]" :style="`background: url(${service.bg}) no-repeat; background-size: cover; background-position: center;`"
|
||||
@click="toInquire(service.name)">
|
||||
<div class="min-h-18 flex flex-col items-start px-1">
|
||||
<div class="mt-1 max-w-max text-left text-gray-600 font-bold text-md" :class="[service.title === '个人大数据' ? 'text-lg' : '']">
|
||||
<div class="mt-1 max-w-max text-left text-gray-600 font-bold text-md"
|
||||
:class="[service.title === '个人大数据' ? 'text-lg' : '']">
|
||||
{{ service.title }}
|
||||
</div>
|
||||
<div class="max-w-max text-left text-xs text-gray-600">
|
||||
@@ -167,6 +173,16 @@ function toHistory() {
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
<div class="mb-6 mt-6 py-4 flex flex-col items-center justify-center rounded-3xl from-blue-500 to-sky-400 bg-gradient-to-b text-center text-lg text-white line-height-12 shadow-xl"
|
||||
@click="toCooperation">
|
||||
<div class="flex items-center text-xl">
|
||||
天远数据邀您共赢,共享数据新价值!
|
||||
</div>
|
||||
<div class="flex items-center">点击进入商务合作</div>
|
||||
</div>
|
||||
<div class="mt-4 rounded-2xl overflow-hidden" @click="toBigData">
|
||||
<img src="@/assets/images/index_b_banner.png" class="w-full h-full" mode="widthFix" />
|
||||
</div>
|
||||
<div class="mt-4 box-border h-14 w-full flex items-center rounded-xl bg-white px-4 text-gray-700 shadow-xl"
|
||||
@click="toHistory">
|
||||
<img class="mr-4 h-10 w-10" src="@/assets/images/bg_icon.png" mode="widthFix" />
|
||||
|
||||
@@ -15,7 +15,8 @@ export default defineConfig({
|
||||
strictPort: true, // 如果端口被占用则抛出错误而不是使用下一个可用端口
|
||||
proxy: {
|
||||
"/api/v1": {
|
||||
target: "http://127.0.0.1:8888", // 本地接口地址
|
||||
// target: "http://127.0.0.1:8888", // 本地接口地址
|
||||
target: "https://www.tianyuandb.com", // 本地接口地址
|
||||
changeOrigin: true,
|
||||
},
|
||||
},
|
||||
|
||||
101
vite.config.js.timestamp-1759227965356-d89054337d1ff.mjs
Normal file
101
vite.config.js.timestamp-1759227965356-d89054337d1ff.mjs
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user