This commit is contained in:
18278715334
2026-01-17 18:38:45 +08:00
parent fd22ad2884
commit 80f072cbcd
8 changed files with 208 additions and 21 deletions

90
pnpm-lock.yaml generated
View File

@@ -11,6 +11,9 @@ importers:
'@vueuse/core':
specifier: ^11.3.0
version: 11.3.0(vue@3.5.13)
'@vueuse/head':
specifier: ^2.0.0
version: 2.0.0(vue@3.5.13)
axios:
specifier: ^1.7.7
version: 1.7.7
@@ -465,55 +468,46 @@ packages:
resolution: {integrity: sha512-h2Ay79YFXyQi+QZKo3ISZDyKaVD7uUvukEHTOft7kh00WF9mxAaxZsNs3o/eukbeKuH35jBvQqrT61fzKfAB/Q==}
cpu: [arm]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-arm-musleabihf@4.27.3':
resolution: {integrity: sha512-Sv2GWmrJfRY57urktVLQ0VKZjNZGogVtASAgosDZ1aUB+ykPxSi3X1nWORL5Jk0sTIIwQiPH7iE3BMi9zGWfkg==}
cpu: [arm]
os: [linux]
libc: [musl]
'@rollup/rollup-linux-arm64-gnu@4.27.3':
resolution: {integrity: sha512-FPoJBLsPW2bDNWjSrwNuTPUt30VnfM8GPGRoLCYKZpPx0xiIEdFip3dH6CqgoT0RnoGXptaNziM0WlKgBc+OWQ==}
cpu: [arm64]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-arm64-musl@4.27.3':
resolution: {integrity: sha512-TKxiOvBorYq4sUpA0JT+Fkh+l+G9DScnG5Dqx7wiiqVMiRSkzTclP35pE6eQQYjP4Gc8yEkJGea6rz4qyWhp3g==}
cpu: [arm64]
os: [linux]
libc: [musl]
'@rollup/rollup-linux-powerpc64le-gnu@4.27.3':
resolution: {integrity: sha512-v2M/mPvVUKVOKITa0oCFksnQQ/TqGrT+yD0184/cWHIu0LoIuYHwox0Pm3ccXEz8cEQDLk6FPKd1CCm+PlsISw==}
cpu: [ppc64]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-riscv64-gnu@4.27.3':
resolution: {integrity: sha512-LdrI4Yocb1a/tFVkzmOE5WyYRgEBOyEhWYJe4gsDWDiwnjYKjNs7PS6SGlTDB7maOHF4kxevsuNBl2iOcj3b4A==}
cpu: [riscv64]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-s390x-gnu@4.27.3':
resolution: {integrity: sha512-d4wVu6SXij/jyiwPvI6C4KxdGzuZOvJ6y9VfrcleHTwo68fl8vZC5ZYHsCVPUi4tndCfMlFniWgwonQ5CUpQcA==}
cpu: [s390x]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-x64-gnu@4.27.3':
resolution: {integrity: sha512-/6bn6pp1fsCGEY5n3yajmzZQAh+mW4QPItbiWxs69zskBzJuheb3tNynEjL+mKOsUSFK11X4LYF2BwwXnzWleA==}
cpu: [x64]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-x64-musl@4.27.3':
resolution: {integrity: sha512-nBXOfJds8OzUT1qUreT/en3eyOXd2EH5b0wr2bVB5999qHdGKkzGzIyKYaKj02lXk6wpN71ltLIaQpu58YFBoQ==}
cpu: [x64]
os: [linux]
libc: [musl]
'@rollup/rollup-win32-arm64-msvc@4.27.3':
resolution: {integrity: sha512-ogfbEVQgIZOz5WPWXF2HVb6En+kWzScuxJo/WdQTqEgeyGkaa2ui5sQav9Zkr7bnNCLK48uxmmK0TySm22eiuw==}
@@ -536,6 +530,23 @@ packages:
'@types/web-bluetooth@0.0.20':
resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==}
'@unhead/dom@1.11.20':
resolution: {integrity: sha512-jgfGYdOH+xHJF/j8gudjsYu3oIjFyXhCWcgKaw3vQnT616gSqyqnGQGOItL+BQtQZACKNISwIfx5PuOtztMKLA==}
'@unhead/schema@1.11.20':
resolution: {integrity: sha512-0zWykKAaJdm+/Y7yi/Yds20PrUK7XabLe9c3IRcjnwYmSWY6z0Cr19VIs3ozCj8P+GhR+/TI2mwtGlueCEYouA==}
'@unhead/shared@1.11.20':
resolution: {integrity: sha512-1MOrBkGgkUXS+sOKz/DBh4U20DNoITlJwpmvSInxEUNhghSNb56S0RnaHRq0iHkhrO/cDgz2zvfdlRpoPLGI3w==}
'@unhead/ssr@1.11.20':
resolution: {integrity: sha512-j6ehzmdWGAvv0TEZyLE3WBnG1ULnsbKQcLqBDh3fvKS6b3xutcVZB7mjvrVE7ckSZt6WwOtG0ED3NJDS7IjzBA==}
'@unhead/vue@1.11.20':
resolution: {integrity: sha512-sqQaLbwqY9TvLEGeq8Fd7+F2TIuV3nZ5ihVISHjWpAM3y7DwNWRU7NmT9+yYT+2/jw1Vjwdkv5/HvDnvCLrgmg==}
peerDependencies:
vue: '>=2.7 || >=3'
'@vant/auto-import-resolver@1.2.1':
resolution: {integrity: sha512-czGWW4UolNITkF3qQSQlpHDHAsI3/GHVKbRMmEEpry7NWdnU4p5a5jBi0VApbaLa5g80Hy10XVs3IB+UozoSUw==}
@@ -623,6 +634,11 @@ packages:
'@vueuse/core@11.3.0':
resolution: {integrity: sha512-7OC4Rl1f9G8IT6rUfi9JrKiXy4bfmHhZ5x2Ceojy0jnd3mHNEvV4JaRygH362ror6/NZ+Nl+n13LPzGiPN8cKA==}
'@vueuse/head@2.0.0':
resolution: {integrity: sha512-ykdOxTGs95xjD4WXE4na/umxZea2Itl0GWBILas+O4oqS7eXIods38INvk3XkJKjqMdWPcpCyLX/DioLQxU1KA==}
peerDependencies:
vue: '>=2.7 || >=3'
'@vueuse/metadata@11.3.0':
resolution: {integrity: sha512-pwDnDspTqtTo2HwfLw4Rp6yywuuBdYnPYDq+mO38ZYKGebCUQC/nVj/PXSiK9HX5otxLz8Fn7ECPbjiRz2CC3g==}
@@ -1132,6 +1148,9 @@ packages:
package-json-from-dist@1.0.1:
resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
packrup@0.1.2:
resolution: {integrity: sha512-ZcKU7zrr5GlonoS9cxxrb5HVswGnyj6jQvwFBa6p5VFw7G71VAHcUKL5wyZSU/ECtPM/9gacWxy2KFQKt1gMNA==}
path-key@3.1.1:
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
engines: {node: '>=8'}
@@ -1518,6 +1537,9 @@ packages:
ufo@1.5.4:
resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==}
unhead@1.11.20:
resolution: {integrity: sha512-3AsNQC0pjwlLqEYHLjtichGWankK8yqmocReITecmpB1H0aOabeESueyy+8X1gyJx4ftZVwo9hqQ4O3fPWffCA==}
unimport@3.13.2:
resolution: {integrity: sha512-VKAepeIb6BWLtBl4tmyHY1/7rJgz3ynmZrWf8cU1a+v5Uv/k1gyyAEeGBnYcrwy8bxG5sflxEx4a9VQUqOVHUA==}
@@ -1697,6 +1719,9 @@ packages:
engines: {node: '>= 14'}
hasBin: true
zhead@2.2.4:
resolution: {integrity: sha512-8F0OI5dpWIA5IGG5NHUg9staDwz/ZPxZtvGVf01j7vHqSyZ0raHY+78atOVxRqb73AotX22uV1pXt3gYSstGag==}
zrender@5.6.0:
resolution: {integrity: sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==}
@@ -2097,6 +2122,34 @@ snapshots:
'@types/web-bluetooth@0.0.20': {}
'@unhead/dom@1.11.20':
dependencies:
'@unhead/schema': 1.11.20
'@unhead/shared': 1.11.20
'@unhead/schema@1.11.20':
dependencies:
hookable: 5.5.3
zhead: 2.2.4
'@unhead/shared@1.11.20':
dependencies:
'@unhead/schema': 1.11.20
packrup: 0.1.2
'@unhead/ssr@1.11.20':
dependencies:
'@unhead/schema': 1.11.20
'@unhead/shared': 1.11.20
'@unhead/vue@1.11.20(vue@3.5.13)':
dependencies:
'@unhead/schema': 1.11.20
'@unhead/shared': 1.11.20
hookable: 5.5.3
unhead: 1.11.20
vue: 3.5.13
'@vant/auto-import-resolver@1.2.1': {}
'@vant/popperjs@1.3.0': {}
@@ -2242,6 +2295,14 @@ snapshots:
- '@vue/composition-api'
- vue
'@vueuse/head@2.0.0(vue@3.5.13)':
dependencies:
'@unhead/dom': 1.11.20
'@unhead/schema': 1.11.20
'@unhead/ssr': 1.11.20
'@unhead/vue': 1.11.20(vue@3.5.13)
vue: 3.5.13
'@vueuse/metadata@11.3.0': {}
'@vueuse/shared@11.3.0(vue@3.5.13)':
@@ -2698,6 +2759,8 @@ snapshots:
package-json-from-dist@1.0.1: {}
packrup@0.1.2: {}
path-key@3.1.1: {}
path-key@4.0.0: {}
@@ -3059,6 +3122,13 @@ snapshots:
ufo@1.5.4: {}
unhead@1.11.20:
dependencies:
'@unhead/dom': 1.11.20
'@unhead/schema': 1.11.20
'@unhead/shared': 1.11.20
hookable: 5.5.3
unimport@3.13.2(rollup@4.27.3):
dependencies:
'@rollup/pluginutils': 5.1.3(rollup@4.27.3)
@@ -3249,6 +3319,8 @@ snapshots:
yaml@2.6.1: {}
zhead@2.2.4: {}
zrender@5.6.0:
dependencies:
tslib: 2.3.0

View File

@@ -286,6 +286,14 @@ const allMenuItems = [
description:
"车辆过户次数查询功能可以帮助用户了解车辆的过户历史,提供车辆的转手记录和所有权变更情况,帮助用户判断车辆的历史背景。",
},
{
title: "车辆过户简版",
icon: carClghIcon,
product: "toc_vehicleTransferDetail",
category: "车辆信息查询",
description:
"车辆过户简版查询功能提供更详细的车辆过户信息,包括过户次数、最近过户时间、是否过户标识等,帮助用户全面了解车辆的历史过户情况。",
},
{
title: "车辆估值",
icon: carClgzIcon,

97
src/ui/QCGX1H7Y.vue Normal file
View File

@@ -0,0 +1,97 @@
<template>
<div class="card">
<div class="flex flex-col gap-y-4">
<!-- 标题部分 -->
<div class="flex items-center justify-between">
<span class="text-lg font-bold text-gray-800">车辆过户信息</span>
<van-tag :type="getStatusType" round>{{ getStatusText }}</van-tag>
</div>
<!-- 过户次数显示 -->
<div class="flex items-center justify-center py-6">
<div class="text-center">
<div class="text-5xl font-bold" :class="getTextColorClass">
{{ data.transferNum }}
</div>
<div class="text-gray-500 mt-2">历史过户次数</div>
</div>
</div>
<!-- 风险提示 -->
<div class="bg-gray-50 p-4 rounded-lg">
<div class="flex items-start gap-2">
<van-icon name="info-o" class="text-blue-500 mt-0.5" />
<div class="flex-1">
<div class="text-sm text-gray-600">风险提示</div>
<div class="text-sm text-gray-500 mt-1">
{{ getRiskTip }}
</div>
<div v-if="data.transferDate && data.transferFlag === '1'" class="text-sm text-gray-500 mt-2">
最近过户时间{{ data.transferDate }}
</div>
</div>
</div>
</div>
<!-- 说明信息 -->
<div class="text-xs text-gray-400 mt-2">
过户次数仅供参考建议您在购车时详细了解车辆历史信息
</div>
</div>
</div>
</template>
<script setup>
import { computed } from 'vue';
import { Icon as VanIcon, Tag as VanTag } from 'vant';
const props = defineProps({
data: {
type: Object,
required: true,
},
params: {
type: Object,
required: true,
},
});
// 根据是否过户标识返回对应的状态类型
const getStatusType = computed(() => {
const transferFlag = props.data.transferFlag;
const transferNum = Number(props.data.transferNum) || 0;
if (transferFlag === '0') return 'success';
if (transferNum <= 2) return 'warning';
return 'danger';
});
// 根据是否过户标识和过户次数返回对应的状态文本
const getStatusText = computed(() => {
const transferFlag = props.data.transferFlag;
const transferNum = Number(props.data.transferNum) || 0;
if (transferFlag === '0') return '无过户记录';
if (transferNum <= 2) return '正常范围';
return '频繁过户';
});
// 根据过户次数返回对应的文字颜色
const getTextColorClass = computed(() => {
const transferNum = Number(props.data.transferNum) || 0;
if (transferNum === 0) return 'text-green-500';
if (transferNum <= 2) return 'text-orange-500';
return 'text-red-500';
});
// 根据过户标识和过户次数返回对应的风险提示
const getRiskTip = computed(() => {
const transferFlag = props.data.transferFlag;
const transferNum = Number(props.data.transferNum) || 0;
if (transferFlag === '0' || transferNum === 0) {
return '该车辆无过户记录,为首任车主,风险较低。';
} else if (transferNum <= 2) {
return '该车辆过户次数在正常范围内,建议核实每次过户原因。';
} else {
return '该车辆过户频繁,请谨慎考虑并详细了解车况。';
}
});
</script>

1
src/ui/Untitled Normal file
View File

@@ -0,0 +1 @@
QCXG1H7Y

View File

@@ -217,6 +217,10 @@ const featureMap = {
component: defineAsyncComponent(() => import("@/ui/IVYZ3P9M.vue")),
remark: '学历信息展示学生姓名、身份证号、学校、专业、入学与毕业时间、学历层次以及学习形式等字段,可结合字典编码了解具体含义。',
},
toc_vehicleTransferDetail: {
name: "车辆过户详版",
component: defineAsyncComponent(() => import("@/ui/QCGX1H7Y.vue")),
},
};
import LEmpty from "@/components/LEmpty.vue";

View File

@@ -509,6 +509,7 @@ const specialProduct = {
toc_vehicleValuation: ["vinCode", "carLicense"], // 车辆估价
toc_chassisNumberCheck: ["vinCode"], // 车辆车架号查车
toc_vehicleTransferCount: ["vinCode"], // 车辆过户次数
toc_vehicleTransferDetail: ["vinCode","carLicense"], // 车辆过户简版/详版
};
const NeedAuthorization = ["toc_Marriage"];
const isHasInput = (input) => {

View File

@@ -218,6 +218,10 @@ const featureMap = {
component: defineAsyncComponent(() => import("@/ui/IVYZ3P9M.vue")),
remark: '学历信息展示学生姓名、身份证号、学校、专业、入学与毕业时间、学历层次以及学习形式等字段,可结合字典编码了解具体含义。',
},
QCGX1H7Y: {
name: "车辆过户详版",
component: defineAsyncComponent(() => import("@/ui/QCGX1H7Y.vue")),
},
};
import LEmpty from "@/components/LEmpty.vue";

View File

@@ -14,21 +14,21 @@ export default defineConfig({
port: 5678, // 自定义端口号,可选
strictPort: true, // 如果端口被占用则抛出错误而不是使用下一个可用端口
proxy: {
"/api/v1": {
target: "https://www.tianyuancha.cn", // 本地接口地址
changeOrigin: true,
},
"/api/v1/chat": {
target: "https://www.tianyuancha.cn", // 本地接口地址
changeOrigin: true,
// rewrite: (path) => path.replace(/^\/api\/v1\/chat/, '/chat')
},
// "/api/v1": {
// target: "http://127.0.0.1:8888", // 本地接口地址
// target: "https://www.tianyuancha.cn", // 本地接口地址
// changeOrigin: true,
// },
// "/api/v1/chat": {
// target: "https://www.tianyuancha.cn", // 本地接口地址
// changeOrigin: true,
// // rewrite: (path) => path.replace(/^\/api\/v1\/chat/, '/chat')
// },
"/api/v1": {
target: "http://127.0.0.1:8888", // 本地接口地址
changeOrigin: true,
},
},
},
build: {