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